我正在尝试使用 pgfmath 计算模值。但是,当我尝试将此值作为标签赋予节点时,它无法编译。
以下代码失败:
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\pgfmathsetmacro{\N}{5}
\foreach \x in {0,...,\N}
{
\pgfmathtruncatemacro{\next}{Mod(\x+1,\N)}
\node at (\next,0) {\next};
% \node at (\next,0) {\x};
}
\end{tikzpicture}
\end{document}
它给出错误:“缺少 } 插入。} l.16 }”。第 16 行是带有“}”的行。
我用注释掉的行替换了带有“\node”的行的代码,它确实可以编译(作为示例)。有人能解释一下出了什么问题,以及我该如何修复它吗?
我尝试做这个答案,但数学模式似乎对我没有帮助。
谢谢!
答案1
不要使用\next
,因为它很特殊。它在整个内核中使用,并且可能会被重新定义,从而导致您遇到的问题。相反,请使用更具描述性的名称,例如\nextnode
。
答案2
当 Ti钾Z 处理你的节点,它使用
\let\next=
{
吸收代码中的begin-group 字符
\node at (\next,0) {\next};
因此\next
将是Mod(\x+1,\N)
Ti钾Z 进入节点。
这就是为什么你可以\next
在坐标中使用
\node at (\next,0) {\x};
但不能在节点中使用它。