我将从一个简单的、最小的非工作示例开始:
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\foreach \x/\y in {1/20,2/18,...,10/2}
\node at (\x,0) {\y};
\end{tikzicture}
\end{document}
您可能从示例中了解到,重点是同时迭代两个变量,每次运行时这些变量的变化量相同,而不必明确写出所有x/y
对。如果这样做有效,预期输出将是
但编译因Illegal unit of measure ...
错误而停止。我知道手册没有提到这一点,所以我有点期待答案只是“不,不可能”。我是否忽略了一些显而易见的东西,或者这是 TikZ 无法做到的事情?
(顺便说一句,我还没有遇到过需要这种情况的情况,这只是我突然想到的。我可以用其他东西来做循环,例如,无论如何,Lua。)
答案1
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\foreach[count=\i] \txt in {20,18,...,2}
\node at (\i,0) {\txt};
\end{tikzpicture}
\end{document}
笔记:总是可以使用另一个变量来计算一个变量。或者你不能使用...
。pgffor
所以你也可以使用:
\begin{tikzpicture}
\foreach[evaluate=\y using int(22-2*\x)] \x in {1,...,10}
\node at (\x,0) {\y};
\end{tikzpicture}