我有以下代码,但我不明白为什么 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}
使用额外的分组就足够了。