TikZ 中的 foreach 命令错误?

TikZ 中的 foreach 命令错误?

我想画一个简单的图:许多节点和连接它们的线。

所以我使用foreach命令来-- (P\i)部分重复\draw

\documentclass{article}
\usepackage{tikz}

\begin{document}
\begin{tikzpicture}
\foreach[count=\i] \n in {1,3,2}{
    \node (P\i) at (\i,\n) {P\i};
%   \coordinate (P\i) at (\i,\n);
%   \node at (P\i) {P\i};
}
%\draw (P1) -- (P2) -- (P3);
\draw (P1) foreach \i in {2,3}{ -- (P\i)}; % <--- HERE!
\end{tikzpicture}
\end{document}

在此处输入图片描述

我以为它会拼出(P1) -- (P2) -- (P3),但事实并非如此。该命令的工作方式如下

\draw (P1) -- (P2); \draw (P1) -- (P3);

我想画出连续连接 P1、P2、P3 的线。如果将\node部分更改为\coordinate命令,效果会很好。它的工作原理如下\draw (P1) -- (P2) -- (P3);

\documentclass{article}
\usepackage{tikz}

\begin{document}
\begin{tikzpicture}
\foreach[count=\i] \n in {1,3,2}{
%   \node (P\i) at (\i,\n) {P\i};
    \coordinate (P\i) at (\i,\n);
    \node at (P\i) {\i};
}
%\draw (P1) -- (P2) -- (P3);
\draw (P1) foreach \i in {2,3}{ -- (P\i)}; % <--- HERE!
\end{tikzpicture}
\end{document}

在此处输入图片描述

为什么命令不能foreach很好地发挥作用\node

答案1

可以使用以下remember选项foreach

\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\foreach[count=\i] \n in {1,3,2}{
    \node (P\i) at (\i,\n) {\n};
}

\foreach [remember=\i as \lasti (initially 3)] \i in {1,2,3}{ \draw (P\i)--(P\lasti);};
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容