
Я создаю многостраничный PDF с TikZ, который будет использоваться для анимации. При этом я получаю эту ошибку:
! 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, так что не стесняйтесь улучшать свой код.