我是 TikZ 的新手,我正在尝试制作一个包含 12 个节点的环形图。
我的以下代码不起作用:
\begin{tikzpicture}
\def \n {12}
\def \radius {3cm}
\def \margin {8} % margin in angles, depends on the radius
\foreach \s in {1,...,\n}
{
\node[draw, circle] (teste[\s]) at ({360/\n * (\s - 1)}:\radius) {};
}
\foreach \s in {1,...,9}
{
\pgfmathparse{\s+1}
\draw (teste[\s]) -- (teste[\pgfmathresult]);
}
\end{tikzpicture}
我这里有一个例子:http://www.texample.net/tikz/examples/cycle/我改变了一些事情。
显示的错误是:
! Package pgf Error: No shape named teste[2 is known.See the pgf package
documentation for explanation.Type H <return> for immediate help.... }
! Package pgf Error: No shape named teste[3 is known.See the pgf package
documentation for explanation.Type H <return> for immediate help.... }
... and so on ...
! Package pgf Error: No shape named teste[10 is known.See the pgf package
documentation for explanation.Type H <return> for immediate help.... }
我的代码有什么问题?如何才能使这个数组像其他编程语言一样工作?
谢谢。
答案1
您不需要将其转换reals
为integers
,而是可以通过选项使用已定义的类似int
值count
。
您还可以使用循环连接remember
选项。
\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}
\def \n {12}
\def \radius {3cm}
\def \margin {8} % margin in angles, depends on the radius
\foreach \s [count=\ns] in {1,...,\n}
\node[draw, circle] (teste-\ns) at ({360/\n * (\s - 1)}:\radius) {};
\foreach \s [remember=\s as \next (initially \n)] in {1,...,12}
\draw (teste-\next) -- (teste-\s);
\end{tikzpicture}
\end{document}