
Mi objetivo es dibujar una serie de formas de la siguiente manera: cuadrado, cuadrado, triángulo, cuadrado, cuadrado, triángulo...
Utilizo un \foreach
bucle en el que utilizo aritmética modular para determinar cuándo dibujar un triángulo. Aquí está mi MWE:
\documentclass{article}
\usepackage{pgfplots,tikz,tikz-3dplot}
\usetikzlibrary{shapes.geometric}
\begin{document}
\begin{figure}
\centering
\begin{tikzpicture} [scale=0.35,
triangle/.style = {regular polygon, regular polygon sides=3, scale=2.5},
square/.style = {regular polygon, regular polygon sides=4, scale=2}]
\foreach \i in {1,...,9}
{
\ifthenelse{mod(\i,3) = 0}
{
\node[triangle] (\i) at (\i,0) {};
}
{
\node[square] (\i) at (\i,0) {};
}
}
\end{tikzpicture}
\end{figure}
\end{document}
Recibo los errores:
! Missing number, treated as zero.
! Missing = inserted for \ifnum.
La pregunta más relacionada con estos errores esestepero considera números decimales, que no es mi caso. ¿Qué me estoy perdiendo?
Respuesta1
Si observa el archivo de registro, verá el error completo, donde podrá ver la queja m
, así que supongo m
que no es un número. Aquí m
está el m
en mod
.
El punto es que \ifthenelse
no conoce pgf
las funciones matemáticas y mod
no se analiza en esa ubicación. Puedes hacer el cálculo con \foreach [evaluate={\j=int(mod(\i,3));}]
y hacer la comparación con \j
.
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{shapes.geometric}
\begin{document}
\begin{figure}
\centering
\begin{tikzpicture} [scale=0.35,
triangle/.style = {draw, regular polygon, regular polygon sides=3, scale=2.5},
square/.style = {draw, regular polygon, regular polygon sides=4, scale=2}]
\foreach [evaluate={\j=int(mod(\i,3));}] \i in {1,...,9}
{
\ifthenelse{\j = 0}
{
\node[triangle] (\i) at (\i,0) {};
}
{
\node[square] (\i) at (\i,0) {};
}
}
\end{tikzpicture}
\end{figure}
\end{document}