TikZ の foreach ループ内で 3 を法として計算しようとしたときにエラーが発生しました

TikZ の foreach ループ内で 3 を法として計算しようとしたときにエラーが発生しました

私の目標は、正方形、正方形、三角形、正方形、正方形、三角形...という形式で図形の配列を描くことです。

\foreach私はモジュラー演算を使用して三角形を描画するタイミングを決定するループを使用します。これが私の 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}

次のエラーが発生します:

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

これらのエラーに関する最も関連のある質問はこれしかし、それは小数を考慮しますが、私の場合はそうではありません。何が足りないのでしょうか?

答え1

ログ ファイルを見ると、エラー全体が表示され、 についてエラーが発生していることがわかります。つまり、は数値ではないものであるとm考えられます。 の は次のとおりです。mmmmod

つまり、は の数学関数\ifthenelseを認識しておらずpgfmodその場所では解析されません。 を使用して計算を実行し\foreach [evaluate={\j=int(mod(\i,3));}]、 と比較することができます\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}

関連情報