我正在尝试迭代定义一个坐标系TikZ
。本质上,我想使用\foreach
命令复制以下内容:
\begin{tikzpicture}
\coordinate (A1) at (0,0);
\coordinate (A2) at (0,1);
\coordinate (A3) at (0,2);
\coordinate (B1) at (1,0);
\coordinate (B2) at (1,1);
\coordinate (B3) at (1,2);
\end{tikzpicture}
有什么方法可以创建类似以下的内容吗?
\begin{tikzpicture}
\foreach \i in {0,1,2}
{
[define A coordinates];
[define B coordinates];
}
\end{tikzpicture}
答案1
您可以使用(A\i)
\documentclass[]{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\foreach \i in {0,1,2} {
\coordinate(A\i) at (0, \i);
\coordinate(B\i) at (1, \i);
}
\foreach \i in {0,1,2} {
\fill[red] (A\i) circle (0.2);
\fill[blue] (B\i) circle (0.2);
\draw[orange] (A\i) -- (B\i);
}
\end{tikzpicture}
\end{document}
答案2
您可以通过密钥减少一些代码count
,但只有当您有大量代码时才值得这样做。在我看来,您拥有的代码在可读性方面基本上更好。
\begin{tikzpicture}
\foreach\x[count=\xi from 0] in {A,B}{
\foreach\y[count=\yi] in{0,1,2}{
\coordinate (\x\yi) at (\xi,\y);
}
}
\end{tikzpicture}