tikz: faz o contador apenas aumentar

tikz: faz o contador apenas aumentar

Na maioria das linguagens de programação que conheço, os contadores aumentam, a menos que seja solicitado o contrário. Por exemplo a declaração

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

não faria nada.

Mas no tikz, este não é o caso. Considere o seguinte:

\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}

Quero que isso imprima os números naturais menores que \i para cada \i, mas imprime

insira a descrição da imagem aqui

adicionando 0 e -1 supérfluos.

Eu sei que posso consertar isso com um \ifthenelse, mas esperava evitar isso. Eu gostaria de uma macro ou uma maneira fácil de ter o paradigma de programação usual de contadores que aumentam (a menos que seja solicitado o contrário).

Obrigado!

Responder1

{0,...,-4}conta regressivamente, então passa por 0, -1, -2, -3, -4. {0,1,...,n}executa o código pelo menos para os dois primeiros números, veja, por exemploPor que \foreach \x em {0,1,...,0}{} executa duas iterações (em vez de uma)?

Você poderia usar uma função 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}

insira a descrição da imagem aqui

informação relacionada