为什么我不能用由多个变量的循环生成的 tikz 节点进行绘图?

为什么我不能用由多个变量的循环生成的 tikz 节点进行绘图?

为什么我无法在由具有多个变量的循环生成的 tikz 节点之间画线?

我有一堆节点,其中一些节点我想用箭头序列连接起来。注释已编号,我还尝试存储更多数据;在下面的最小示例中,我存储了坐标。

我找到了一种创建笔记的方法。我的问题是我似乎无法使用它们来绘图。以下示例编译:

\begin{tikzpicture}
\foreach \k in {0,1,2} 
\node (\k) at (\k,\k*\k-2*\k) {\k};
\def\Data{
  3 / 2  / 1,
  4 / 1  / 2,
  5 / 2  / 3}
\foreach \a / \x / \y in \Data 
\node (\a) at (\x,\y) {\a};

\draw (0) -- (2);
%\draw (3) -- (4);
\foreach \note  [remember=\note as \lastnote (initially {(0)})] in {(1),(2)} \draw[->] \lastnote -- \note;
% \foreach \note  [remember=\note as \lastnote (initially {(3)})] in {(4),(5)} \draw[->] \lastnote -- \note;
\end{tikzpicture}

如果我取消注释任何两行注释,我就会收到一条错误消息“包 pgf 错误:没有已知的名为 3 的形状。”

节点 0、1、2 与节点 3、4、5 有何不同?为什么我不能用后者绘图?

答案1

当您使用例如 来创建列表时3 / 2 / 1,空格实际上已包含在内,并且它也包含在节点名称中。因此,如果您要执行\draw (3 ) -- (4 );,请注意(X<space>),它会起作用。可能最好首先定义不带空格的列表,即3/2/1

\documentclass[border=5mm]{standalone}
\usepackage{tikz}
\begin{document}

\begin{tikzpicture}
\foreach \k in {0,1,2} 
\node (\k) at (\k,\k*\k-2*\k) {\k};
\def\Data{
  3/2/1,
  4/1/2,
  5/2/3}
\foreach \a/\x/\y in \Data 
\node (\a) at (\x,\y) {\a};

\draw (0) -- (2);
\draw (3) -- (4);
\foreach \note  [remember=\note as \lastnote (initially {(0)})] in {(1),(2)} \draw[->] \lastnote -- \note;
\foreach \note  [remember=\note as \lastnote (initially {(3)})] in {(4),(5)} \draw[->] \lastnote -- \note;
\end{tikzpicture}

\end{document}

相关内容