我正在尝试在 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}