¿Por qué \pgfmathtruncatemacro no puede ser una etiqueta?

¿Por qué \pgfmathtruncatemacro no puede ser una etiqueta?

Estoy intentando usar pgfmath para calcular un valor modular. Sin embargo, cuando intento dar este valor como etiqueta a un nodo, no se compila.

El siguiente código falla:

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

Da el error: "Falta } insertado. } l.16 }". La línea 16 es la línea con "}".

El código donde reemplazo la línea con "\node" con la línea comentada, se compila (como ejemplo). ¿Podría alguien explicar qué está mal y cómo puedo solucionarlo?

Intenté hacer lo que se hace enesta respuesta, pero el modo matemático no parece ayudarme.

¡Gracias!

Respuesta1

No lo uses \next, ya que es especial. Se utiliza en todo el kernel y podría redefinirse, lo que provocaría el problema que está experimentando. En su lugar, utilice algo más descriptivo como \nextnode.

Respuesta2

cuando tikZ procesa tu nodo, utiliza

\let\next=

para absorber el carácter de grupo inicial {en su código

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

Por lo tanto \nextserá Mod(\x+1,\N)hasta TikZ entra al nodo.

Esa es la razón por la que puedes usar \nexten la coordenada.

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

pero no puede usarlo en un nodo.

información relacionada