为什么 \pgfmathtruncatemacro 不能作为标签?

为什么 \pgfmathtruncatemacro 不能作为标签?

我正在尝试使用 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

当 TiZ 处理你的节点,它使用

\let\next=

{吸收代码中的begin-group 字符

\node at (\next,0) {\next};

因此\next将是Mod(\x+1,\N)TiZ 进入节点。

这就是为什么你可以\next在坐标中使用

\node at (\next,0) {\x};

但不能在节点中使用它。

相关内容