TikZ 是否有类似于for
c 语言中的循环和逻辑比较的计数器?例如,
\foreach \x in {0mm,11.200000mm,...,33.600000mm}
{
counter++; <== is this possible in tikz
if(counter == 0) <== is this possible in tikz
output something
}
答案1
pgf 2.1(或 pgffor 的最新版本)中有一个新的可能性,也许对您来说很有趣,您可以使用一个新选项count
。我创建了两个计数器 \xi 和 \yi,每次循环都会自动获得 \xi=\xi+1 等。
\documentclass{scrartcl}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[x=0.75cm,y=0.75cm]
\foreach \x [count=\xi] in {0,...,6}
{\foreach \y [count=\yi] in {0,...,6}
{\ifnum\xi=\yi
\node [draw, minimum size=0.666cm] at (\xi,-\yi) {$\infty$};
\else
\node [draw, minimum size=0.666cm] at (\xi,-\yi) {$\x\y$};
\fi }}
\end{tikzpicture}
\end{document}
答案2
您可以使用常规 LaTeX 计数器。您可以使用 定义自己的计数器\newcounter{name}
,使用 设置它\setcounter{name}{value}
或使用 添加它\addtocounter{name}{value}
。
您可以使用\ifnum 0=\value{name} <true> \else <false> \fi
或借助ifthen
包来测试计数器值。
请注意,for 的内容\foreach
是在组内执行的,并且应保留到下一次迭代或循环结束后的赋值必须是全局的。幸运的是,上面的 set 和 add 宏无论如何都是全局赋值。