Warum kann \pgfmathtruncatemacro kein Label sein?

Warum kann \pgfmathtruncatemacro kein Label sein?

Ich versuche, mit pgfmath einen modularen Wert zu berechnen. Wenn ich jedoch versuche, diesen Wert einem Knoten als Bezeichnung zuzuweisen, wird er nicht kompiliert.

Der folgende Code schlägt fehl:

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

Es kommt zu dem Fehler: „Fehlende } eingefügt. } l.16 }“. Zeile 16 ist die Zeile mit dem „}“.

Der Code, in dem ich die Zeile mit „\node“ durch die auskommentierte Zeile ersetze, wird (als Beispiel) kompiliert. Kann mir bitte jemand erklären, was schief läuft und wie ich es beheben kann?

Ich habe versucht, das zu tun, was getan wird indiese Antwort, aber der Mathematikmodus scheint mir nicht zu helfen.

Danke!

Antwort1

Verwenden Sie nicht \next, da es etwas Besonderes ist. Es wird im gesamten Kernel verwendet und könnte neu definiert werden, was zu dem Problem führen würde, das Sie haben. Verwenden Sie stattdessen etwas Aussagekräftigeres wie \nextnode.

Antwort2

Wenn TikZ verarbeitet Ihren Knoten, es verwendet

\let\next=

{um das Begin-Group-Zeichen in Ihren Code aufzunehmen

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

Daher \nextwird Mod(\x+1,\N)bis TikZ betritt den Knoten.

Aus diesem Grund können Sie \nextin der Koordinateneinheit

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

aber Sie können es nicht in einem Knoten verwenden.

verwandte Informationen