为什么这个带有“评估”的循环不起作用?

为什么这个带有“评估”的循环不起作用?
\documentclass[margin=5pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{shapes,calc}
\begin{document}
\begin{tikzpicture}

\foreach \x [evaluate=\x as \name using \x*20] in{0,0.05,0.1,0.15,...,5} 
  \node(\name)[regular polygon, regular polygon sides=12,inner sep=0pt,minimum size=\x cm]{};

\node at(1){test};
\end{tikzpicture}
\end{document}

我收到一条错误消息,提示没有名为“1”的形状。除了评估部分,循环运行正常(如果您添加“绘制”选项,则会出现 12 个多边形)。

编辑:我刚刚发现 0.05*20 得出的结果不是 1,而是 1,00006,因此无法找到名为 1 的节点。这是为什么?如何从 0,05*20 得出 1?

答案1

在您的示例中,变量是浮点表达式\name的结果。因此,您得到,,... ,。因此,您的多边形节点名为,,... ,。\x*200.01.00006100.00.01.00006100.0

您不能.在节点名称中使用:锚点上与节点中心成(a.10)一定角度的点。10a

您可以使用int(\x*20)来对浮点表达式进行舍入:

\documentclass[margin=5pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{shapes,calc}
\begin{document}
\begin{tikzpicture}

\foreach \x [evaluate=\x as \name using int(\x*20)] in{0,0.05,0.1,0.15,...,5} 
  \node(\name)[regular polygon, regular polygon sides=12,inner sep=0pt,minimum size=\x cm]{};

\node at(1){test};
\end{tikzpicture}
\end{document}

相关内容