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여기 에 가 m있습니다 .mmod

요점은 수학 함수 \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}

관련 정보