![为什么 tikz foreach 在访问节点时表现得很奇怪](https://linux22.com/image/422960/%E4%B8%BA%E4%BB%80%E4%B9%88%20tikz%20foreach%20%E5%9C%A8%E8%AE%BF%E9%97%AE%E8%8A%82%E7%82%B9%E6%97%B6%E8%A1%A8%E7%8E%B0%E5%BE%97%E5%BE%88%E5%A5%87%E6%80%AA.png)
我想使用 foreach 绘制节点序列之间的连接。但是,出于某种原因,foreach 忘记了最后一个节点的位置。
下面是一个 MWE,它说明了我的问题:为什么两个 tikz 图形不同?据我所知,第二个图中使用的 foreach 应该产生与第一个图完全相同的代码,其中节点被明确命名。但它似乎忘记更新最后绘制的节点的位置。为什么?
有没有办法使用 foreach 产生所需的输出(如第一张图所示)?我不想使用坐标,因为我希望线路在节点处断开。
\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\node (n1) at (0,0) {1};
\node (n2) at (0,1) {2};
\node (n3) at (1,1) {3};
\node (n4) at (1,0) {4};
\draw (n1) -- (n2) -- (n3) -- (n4);
\end{tikzpicture}
\begin{tikzpicture}
\node (n1) at (0,0) {1};
\node (n2) at (0,1) {2};
\node (n3) at (1,1) {3};
\node (n4) at (1,0) {4};
\draw (n1) \foreach \i in {2,...,4} { -- (n\i)};
\end{tikzpicture}
\end{document}
答案1
答案2
令人反感的台词是
\draw (n1) \foreach \i in {2,...,4} { -- (n\i)};
一旦展开,就会得到结果
n1---n2 first iteration
n1---n3 second iteration
n1---n4 third iteration
而需要的是
n1---n2 first iteration
n2---n3 second iteration
n3---n4 third iteration
n1
因此计数器也需要增加