为什么我无法在由具有多个变量的循环生成的 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}