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}少なくとも最初の2つの数字に対してコードを実行します。例を参照してください。\foreach \x in {0,1,...,0}{} が 1 回ではなく 2 回の反復を実行するのはなぜですか?

代わりに 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}

ここに画像の説明を入力してください

関連情報