Por que \pgfmathtruncatemacro não pode ser um rótulo?

Por que \pgfmathtruncatemacro não pode ser um rótulo?

Estou tentando usar o pgfmath para calcular um valor modular. Porém, quando tento atribuir esse valor como rótulo a um nó, ele não compila.

O código a seguir falha:

\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}

Dá o erro: "Falta } inserido. } l.16 }". A linha 16 é a linha com o "}".

O código onde substituo a linha por "\node" pela linha que foi comentada, ele compila (por exemplo). Alguém poderia explicar o que está errado e como posso consertar?

Eu tentei fazer o que é feito emesta resposta, mas o modo matemático não parece me ajudar.

Obrigado!

Responder1

Não use \next, pois é especial. Ele é usado em todo o kernel e pode ser redefinido, levando ao problema que você está enfrentando. Em vez disso, use algo mais descritivo como \nextnode.

Responder2

Quando TikZ processa seu nó, ele usa

\let\next=

para absorver o caractere do grupo inicial {em seu código

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

Portanto \nextserá Mod(\x+1,\N)até TikZ entra no nó.

Essa é a razão pela qual você pode usar \nextna coordenada

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

mas não pode usá-lo em um nó.

informação relacionada