我畫了一個拋物線圖形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}