foreach 카운터 값에 따라 Tikz 스타일 변경

foreach 카운터 값에 따라 Tikz 스타일 변경

루프 내의 카운터에 의존하는 재귀 매크로가 있습니다 tikz \foreach. 내가 달성하지 못한 것은 카운터 값에 종속되도록(즉, \n이 홀수인지 짝수인지에 따라) tikz 스타일(fillMod라고 부르는 것)을 얻는 방법입니다. 다음은 내가 지금까지 가지고 있는 것의 MWE입니다.

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning}

\begin{document}


\newcommand{\pic}[1]{%
\begin{tikzpicture}[scale=3,
    fillEven/.style={fill=red},
    fillOdd/.style= {fill=blue},
    fillMod/.style= {}]

\coordinate (A0) at (0,0);

\foreach \n in {1,2,...,#1}
{
\draw[fillMod,scale={pow(0.8,\n)}] (A0)--++(1,0)node(D0){}--++(0,-1)--++(-1,0)--++(0,1);

\coordinate (A0) at (D0);   
\coordinate[below=30mm of A0]   (D0);
}
\end{tikzpicture}
}

\pic{2}

\pic{3}

\pic{4}

\pic{5}

\end{document}

나는 루프 내에서 두 개의 \draw경로(빨간색과 파란색에 대한 경로)를 정의할 수 있다는 것을 알고 있지만 이는 짝수 개의 사각형으로만 그림을 생성할 수 있음을 의미합니다. 이를 수행할 수 있는 방법이 있습니까?

답변1

아마도 이와 같은 것입니다.

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning}
\newcommand{\pic}[1]{%
\begin{tikzpicture}[scale=3]

\coordinate (A0) at (0,0);

\foreach \n in {1,2,...,#1}
{
\ifodd\n
\tikzset{fillMod/.style={fill=blue}}
\else
\tikzset{fillMod/.style={fill=red}}
\fi
\draw[fillMod,scale={pow(0.8,\n)}] (A0)--++(1,0)node(D0){}--++(0,-1)--++(-1,0)--++(0,1);

\coordinate (A0) at (D0);   
\coordinate[below=30mm of A0]   (D0);
}
\end{tikzpicture}
}

\begin{document}    
\pic{2}

\pic{3}

\pic{4}

\pic{5}

\end{document}

여기에 이미지 설명을 입력하세요

답변2

명시적인 테스트가 없는 솔루션은 다음과 같습니다. 두 번째 예에서는 네 가지 스타일이 포함된 예를 보여줍니다.

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning}

\begin{document}

\newcommand{\pic}[1]{%
  \begin{tikzpicture}[scale=3]
    \tikzset{
      fill 0/.style={fill=red},
      fill 1/.style= {fill=blue},
    }

    \coordinate (A0) at (0,0);

    \foreach \n [evaluate=\n as \snum using {int(mod(\n,2))}] in {1,2,...,#1} {
      \draw[fill \snum,scale={pow(0.8,\n)}]
      (A0)--++(1,0)node(D0){}--++(0,-1)--++(-1,0)--++(0,1);
      \coordinate (A0) at (D0);   
      \coordinate[below=30mm of A0]   (D0);
    }
  \end{tikzpicture}
}

\pic{2}

\pic{3}

\pic{4}

\pic{5}

\end{document}

네 가지 스타일의 예:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning}

\newcommand{\pic}[1]{%
  \begin{tikzpicture}[scale=3]
    \tikzset{
      fill 0/.style={fill=red},
      fill 1/.style= {fill=blue},
      fill 2/.style= {fill=green},
      fill 3/.style= {fill=orange},
    }
    \coordinate (A0) at (0,0);
    \foreach \n [evaluate=\n as \snum using {int(mod(\n,4))}] in {1,2,...,#1} {
      \draw[fill \snum,scale={pow(0.8,\n)}]
      (A0)--++(1,0)node(D0){}--++(0,-1)--++(-1,0)--++(0,1);
      \coordinate (A0) at (D0);   
      \coordinate[below=30mm of A0]   (D0);
    }
  \end{tikzpicture}
}

\begin{document}
\pic{2}\par
\pic{3}\par
\pic{4}\par
\pic{5}\par
\end{document}

여기에 이미지 설명을 입력하세요

관련 정보