tikz: hacer que el contador solo aumente

tikz: hacer que el contador solo aumente

En la mayoría de los lenguajes de programación que conozco, los contadores aumentan a menos que se les indique lo contrario. Por ejemplo la declaración

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

no haría nada.

Pero en tikz, este no es el caso. Considera lo siguiente:

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

Quiero que esto imprima los números naturales menores que \i para cada \i, pero imprime

ingrese la descripción de la imagen aquí

agregando un 0 y -1 superfluo.

Sé que puedo solucionar este problema con \ifthenelse, pero esperaba evitarlo. Me gustaría una macro o una manera fácil de tener el paradigma de programación habitual de contadores que aumentan (a menos que se me indique lo contrario).

¡Gracias!

Respuesta1

{0,...,-4}cuenta hacia atrás, por lo que pasa por 0, -1, -2, -3, -4. {0,1,...,n}ejecuta el código al menos para los dos primeros números, ver por ejemplo¿Por qué \foreach \x en {0,1,...,0}{} realiza dos iteraciones (en lugar de una)?

Podrías usar una función expl3-step en su lugar:

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

ingrese la descripción de la imagen aquí

información relacionada