
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 \next
será Mod(\x+1,\N)
hasta TikZ entra al nodo.
Esa es la razón por la que puedes usar \next
en la coordenada.
\node at (\next,0) {\x};
pero no puede usarlo en un nodo.