Erro ao tentar calcular o módulo 3 dentro de um loop foreach no TikZ

Erro ao tentar calcular o módulo 3 dentro de um loop foreach no TikZ

Meu objetivo é desenhar uma série de formas da seguinte maneira: quadrado, quadrado, triângulo, quadrado, quadrado, triângulo...

Eu uso um \foreachloop no qual uso aritmética modular para determinar quando desenhar um triângulo. Aqui está meu 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}

Eu recebo os erros:

! Missing number, treated as zero.
! Missing = inserted for \ifnum.

A questão mais relacionada sobre esses erros éessemas considera números decimais, o que não é o meu caso. o que estou perdendo?

Responder1

Se você olhar o arquivo de log, verá o erro inteiro, onde poderá ver as reclamações m, então presumo que mseja o que não é um número. Aqui mestá a mentrada mod.

A questão é que \ifthenelsenão conhece pgfas funções matemáticas e modnão é analisado nesse local. Você pode fazer o cálculo \foreach [evaluate={\j=int(mod(\i,3));}]e fazer a comparação com \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}

informação relacionada