Tikz 连接节点与绘制问题

Tikz 连接节点与绘制问题

我正在尝试在 tikz 中创建一系列相互连接的节点。这是一个 MWE:

\documentclass{standalone}
\usepackage{tikz, pgfplots}

\begin{document}
\begin{tikzpicture}
    \foreach \ip in {0, ..., 3} {
        \node[draw, circle] (a\ip) at (2*\ip, 0) {};
    }

\foreach \ip in {0, ..., 2} {
    \pgfmathsetmacro{\minp}{\ip+1}
    \foreach \jp in {\minp, ..., 3} {
        \pgfmathsetmacro{\ango}{10*\jp - 10*\ip}
        \pgfmathsetmacro{\angi}{180 - 10*\jp + 10*\ip}
        \draw (a\ip) to[out=\ango, in=\angi] (a\jp);
    }
}

\end{tikzpicture}
\end{document}

结果是:

在此处输入图片描述

预期的行为是,没有任何线会与节点的圆相交,即,连接相邻节点的线不应该与圆相交,就像现在的情况一样。

答案1

您应该指定\pgfmathsetmacro{\minp}{int(\ip+1)}该值int以获得整数\ip+1结果。另一个选项是使用\pgfmathtruncatemacro{\minp}{\ip+1}@percusse 在评论中指出的方法。或者,只需[count=\minp from 1]为您的循环设置一个计数器并使用它。

\documentclass{standalone}
\usepackage{tikz}

\begin{document}
\begin{tikzpicture}
    \foreach \ip in {0, ..., 3} {
        \node[draw, circle] (a\ip) at (2*\ip, 0) {};
    }

\foreach \ip [count=\minp from 1]in {0, ..., 2} {
    %\pgfmathsetmacro{\minp}{\ip+1}
    \foreach \jp in {\minp, ..., 3} {
        \pgfmathsetmacro{\ango}{10*\jp - 10*\ip}
        \pgfmathsetmacro{\angi}{180 - 10*\jp + 10*\ip}
        \draw (a\ip) to[out=\ango, in=\angi] (a\jp);
    }
}

\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容