为什么我的计算节点引用表现不同?

为什么我的计算节点引用表现不同?

下面是一个 MWE,用来解释我的意思:

\documentclass{minimal}
\usepackage{tikz}
\begin{document}
  \begin{tikzpicture}
    \foreach \x in {0, ..., 4}
    \node[circle,draw] (n\x) at ({2*\x}, 0) {\x};
    \foreach \x in {0, ..., 3} {
      \pgfmathsetmacro{\y}{\x+1}
      \draw[red] (n\x) to[bend left] (n\y);
      \draw[blue] (n\x) circle (.2);
      \draw[gray,fill] (n\y) circle (.05);
    }
  \end{tikzpicture}
\end{document}

我期望这会创建几个圆形节点,n0通过命名n4,并通过从边到边的线连接后续对。但是,虽然引用(n\x)正确地引用了 处的节点\x,但(n\y)在所有情况下都以某种方式折叠为单个点,该点甚至不在中心:

为什么\y行为会有所不同\x

我知道如何使其工作,例如使用/pgf/foreach/remember,但我很好奇。

答案1

当 时x = 0\pgfmathsetmacro{\y}{\x+1}定义\y1.0。则节点n1.0表示位于节点边界n1且与角度 成一定角度的点0

\y定义1,您可以在此处使用以下方法之一(最后两个都是@Alenanno 建议的此评论),

  • pgfmath功能int\pgfmathsetmacro{\y}{int(\x+1)}
  • pgfmath\pgfmathtruncatemacro\pgfmathtruncatemacro{\y}{\x+1},和
  • pgfforevaluate附带功能的选项int\foreach \x [evaluate=\x as \y using int(\x+1)] in {0, ..., 3} {...}
\documentclass{minimal}
\usepackage{tikz}
\begin{document}
  \begin{tikzpicture}
    \foreach \x in {0, ..., 4}
      \node[circle,draw] (n\x) at ({2*\x}, 0) {\x};
    \foreach \x in {0, ..., 3} {
      \pgfmathsetmacro{\y}{int(\x+1)}
      \draw[red] (n\x) to[bend left] (n\y);
      \draw[blue] (n\x) circle (.2);
      \draw[gray,fill] (n\y) circle (.05);
    }
  \end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容