tikz: 카운터만 증가시키세요

tikz: 카운터만 증가시키세요

내가 아는 대부분의 프로그래밍 언어에서는 달리 지시하지 않는 한 카운터가 증가합니다. 예를 들어 다음 진술은

for i = 1 to 0 do { print "hi" }

아무것도하지 않을 것입니다.

하지만 tikz에서는 그렇지 않습니다. 다음을 고려하세요:

\documentclass{article}

\usepackage{tikz}
\begin{document}

\[
\begin{tikzpicture}
  \foreach \i in {-1,...,3}
  {
    \node at (\i,-2) {$\leq$ \i};
    \foreach \j in {0,...,\i} {\node at (\i,\j) {\j};};
  }
\end{tikzpicture}
\]

\end{document}

각 \i에 대해 \i보다 작은 자연수를 인쇄하고 싶지만 인쇄됩니다.

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

불필요한 0과 -1을 추가합니다.

\ifthenelse를 사용하여 이 문제를 해결할 수 있다는 것을 알고 있지만 이를 방지하고 싶었습니다. 나는 매크로나 증가하는 카운터의 일반적인 프로그래밍 패러다임을 갖는 쉬운 방법을 원합니다(별도의 지시가 없는 한).

감사해요!

답변1

{0,...,-4}거꾸로 계산되므로 0, -1, -2, -3, -4를 거쳐 실행됩니다. {0,1,...,n}최소한 처음 두 숫자에 대해 코드를 실행합니다. 예를 참조하십시오.{0,1,...,0}{}의 \foreach \x가 (한 번이 아닌) 두 번의 반복을 수행하는 이유는 무엇입니까?

대신 expl3-step 함수를 사용할 수 있습니다.

\documentclass{article}

\usepackage{tikz,expl3}
\begin{document}

\ExplSyntaxOn
\let\intstepvariable\int_step_variable:nnnNn
\ExplSyntaxOff

\begin{tikzpicture}
  \intstepvariable {-1}{1}{3}\i
  {
    \node at (\i,-2) {$\leq$ \i};
    \intstepvariable {0}{1}{\i}\j
     {
      \node at (\i,\j) {\j};
     }
  }
\end{tikzpicture}

\end{document}

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

관련 정보