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}

在此处输入图片描述

相关内容