为什么这个 TikZ 计算需要括号?

为什么这个 TikZ 计算需要括号?

我正在使用 TikZ 创建多页 PDF,用于制作动画。执行此操作时,出现此错误:

! Missing number, treated as zero.
<to be read again> 

这是一个显示该问题的最小工作示例(MWE):

\documentclass[tikz]{standalone}

\begin{document}

\def\timesteps{10}                                                                                                                        
\foreach \timestep in {0,1,...,\timesteps} {
  \begin{tikzpicture}

    \path[draw] (0, 0) circle (1);

    \def\initialx{-1};
    \def\initialy{0};
    \def\finalx{0.9};
    \def\finaly{0};
    \def\length{0.1};

    \def\xi{{\initialx+(\finalx-\initialx)*(\timestep/\timesteps)}};
    \def\yi{{\initialy+(\finaly-\initialy)*(\timestep/\timesteps)}};

    \def\xf{{\initialx+(\finalx-\initialx)*(\timestep/\timesteps)+\length}}; % This line works ...                                        
    %\def\xf{{\xi+\length}}; % ... but this line does not ...                                                                             
    %\def\xf{{(\xi)+\length}}; % ... unless there are parentheses                                                                         
    \def\yf{{\yi}};

    \path[draw, ->] (\xi, \yi) -- (\xf, \yf);

  \end{tikzpicture}
}

\end{document}

运行 MWE 会产生所需的输出:一个简单的 11 页 PDF,其中有一个箭头在屏幕上移动。现在,我注释掉以下行

\def\xf{{\initialx+(\finalx-\initialx)*(\timestep/\timesteps)+\length}};

并取消注释该行

\def\xf{{\xi+\length}};

因为它们在数学上是等价的。我得到了前面提到的错误:

! Missing number, treated as zero.
<to be read again> 

我谷歌了一下与 TikZ 相关的内容,所有的答案都说计算需要用花括号括起来。但是,上面那行有花括号,所以我认为这不是问题所在。尝试了不同的方法后,我注意到括号\xi解决了这个问题:

\def\xf{{(\xi)+\length}};

因此,我的问题是为什么这里需要括号?正如我之前提到的,我认为如果计算在花括号内,则不需要其他特殊操作。有没有讨论这个问题的“官方”文档?最后,我是 TikZ 的新手,所以请随意改进我的代码。

相关内容