我正在使用 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 的新手,所以请随意改进我的代码。