嘗試在 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,所以我認為它m不是數字。這mmmod.

重點是,\ifthenelse不知道pgf數學函數,並且mod不在該位置進行解析。您可以使用 進行計算\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}

相關內容