我有 3 个数字的列表,我想在我的文档中多次迭代它们,并且能够在需要时一劳永逸地更改它们。
这是一个丑陋的例子,重现了我现在正在做的事情:
\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}
\foreach \i/\x/\y in {{1/0/0},{2/5/0},{5/0/-3.7},{7/5/-3.7}}{
\node at (\x,\y) {\i};
}
\end{tikzpicture}
\begin{tikzpicture}
\foreach \i/\x/\y in {{1/0/0},{2/5/0},{5/0/-3.7},{7/5/-3.7}}{
\node at (\x,\y) {Again\i};
}
\end{tikzpicture}
\end{document}
我想使用:
\newcommand{\myseq}{{1/0/0},{2/5/0},{5/0/-3.7},{7/5/-3.7}}
来实现这一点,但显然 tikz 随后尝试计算,1/0
因为编译返回:
Package PGF Math Error: You've asked me to divide `1' by `0', but I cannot divide any number by `0' (in '1/0/0').
做我想做的事情的正确方法是什么?
答案1
我没有收到任何错误:
\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}
\foreach \i/\x/\y in {1/0/0,2/5/0,5/0/-3.7,7/5/-3.7}{
\node at (\x,\y) {\i};
}
\end{tikzpicture}
\newcommand\myseq{1/0/0,2/5/0,5/0/-3.7,7/5/-3.7}
\begin{tikzpicture}
\foreach \i/\x/\y in \myseq {
\node at (\x,\y) {Again\i};
}
\end{tikzpicture}
\end{document}
(我删除了数据中不必要的括号,但它们并没有造成任何损害)。
你可能已经
\foreach \i/\x/\y in {\myseq} {
这是错误的。