Ошибка при попытке вычисления по модулю 3 внутри цикла foreach в TikZ

Ошибка при попытке вычисления по модулю 3 внутри цикла foreach в TikZ

Моя цель — нарисовать массив фигур в следующем стиле: квадрат, квадрат, треугольник, квадрат, квадрат, треугольник...

Я использую \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то, что не является числом. Вот mв .mmod

Суть в том, \ifthenelseчто не знает о pgfматематических функциях s и 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}

Связанный контент