为什么TikZ代码不接受加减运算但是接受乘除运算?

为什么TikZ代码不接受加减运算但是接受乘除运算?

我有以下代码,但我不明白为什么 TikZ 代码不接受加法和减法运算但接受乘法和除法运算。

\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\foreach \i in {1,2,3,4,5} {
 \node[draw,circle,minimum size=0.2cm,fill=blue!20] () at ({\the\numexpr 
    72*(\i-1) \relax}:2cm) {\i};
  \node[draw,circle,minimum size=1cm,fill=red!20] () at (
   \i*360/5:1cm ) {\i};
 }
\end{tikzpicture}
\end{document}

还要经过下面的处理{\the\numexpr 72*(\i-1) \relax},不过\i*360/5没问题。至少加减是比乘除更基本的运算,为什么会有这么不一致的设计?

编辑:非常感谢 Cabohah 纠正了我的错误想法。但是我还有另一个例子,为什么第二段代码会显示错误。

\documentclass{article}
\usepackage{tikz}

\begin{document}
\begin{tikzpicture}
\foreach \i in {1,2,3,4,5} {
  \node[draw,circle] (\i) at (72*\i-36:1cm) {$\i$};
}
\foreach \i in {1,2,3,4} {
  \draw (\i) -- ({\i+1});
}
\end{tikzpicture}
\end{document}

包 pgf 错误:没有已知的名为“1+1”的形状。}...

看来 TikZ 此时不接受任何操作。

答案1

问题不在于减法,而在于(…),因为这是形状语法。因此使用(\i)*360/5也是错误的。但你不需要\numexpr

\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\foreach \i in {1,2,3,4,5} {
  \node[draw,circle,minimum size=0.2cm,fill=blue!20] () at (
  {72*(\i-1)}:2cm) {\i};
  \node[draw,circle,minimum size=1cm,fill=red!20] () at (
   \i*360/5:1cm ) {\i};
 }
\end{tikzpicture}
\end{document}

使用额外的分组就足够了。

在此处输入图片描述

相关内容