
私が知っているほとんどのプログラミング言語では、特に指示がない限りカウンタは増加します。例えば、
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}