
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 \next
será Mod(\x+1,\N)
até TikZ entra no nó.
Essa é a razão pela qual você pode usar \next
na coordenada
\node at (\next,0) {\x};
mas não pode usá-lo em um nó.