pgfmath 的問題

pgfmath 的問題

我畫了一個拋物線圖形y = 0.5 - a x^2,它在「根」點與 x 軸相交0.75,並且-0.75在座標 處有一個彎曲(0, 0.5)。我想在拋物線上標記一個點,該點0.33 * \rootPosition在 x 軸上有一個座標。 (這裡\rootPosition有一個數字0.75)。我寫了下面的程式碼

\documentclass[tikz]{standalone}
\usepackage{tikz, pgfmath} 

\begin{document}
\begin{tikzpicture} [scale=3, >=stealth]

\def\bendPosition{0.5};
\def\rootPosition{0.75};
\def\coeffA{\pgfmathdivide{\bendPosition}{\pgfmathpow{\rootPosition}{2}}};

\draw[thick] (-\rootPosition,0) parabola bend (0, \bendPosition) (\rootPosition, 0);

\def\arbitraryPosition{0.33 * \rootPosition};

\coordinate (arbitrary_point) at (\arbitraryPosition, \bendPosition - \coeffA* \pgfmathpow{\arbitraryPosition}{2}));

\filldraw[black] (arbitrary_point) circle(0.4pt);       
\end{tikzpicture}
\end{document}

但是當我編譯這段程式碼時,我收到錯誤 ! Incomplete \iffalse; all the text ignored after line 14,其中 14 行以\coordinate (arbitrary_point)..

怎麼了?

答案1

儘管 TikZ 在大多數情況下可以很好地處理它,但您不應在巨集名稱中使用下劃線字元。下劃線字元是數學模式下標命令,您可以安全地避免使用其他類型。

主要問題是在路徑上找到數學運算時不會擴展為結果。他們將結果保存在一個名為 的巨集中\pgfmathresult,解析器必須看到該巨集而不是數學運算符。

\begin{tikzpicture} [scale=3, >=stealth]
\def\bendPosition{0.5};
\def\rootPosition{0.75};
\pgfmathsetmacro\coeffA{\bendPosition/(\rootPosition)^2}
\draw[thick] (-\rootPosition,0) parabola bend (0, \bendPosition) (\rootPosition, 0);
\pgfmathsetmacro\arbitraryPosition{0.33 * \rootPosition}
\coordinate (arbitrary_point) at (\arbitraryPosition, {\bendPosition - \coeffA* (\arbitraryPosition)^2});
\filldraw[black] (arbitrary_point) circle(0.4pt);       
\end{tikzpicture}

在此輸入影像描述

相關內容