
In den meisten mir bekannten Programmiersprachen werden Zähler hochgezählt, sofern ihnen nichts anderes gesagt wird. Zum Beispiel die Anweisung
for i = 1 to 0 do { print "hi" }
würde nichts tun.
Bei Tikz ist das jedoch nicht der Fall. Beachten Sie Folgendes:
\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}
Ich möchte, dass dies die natürlichen Zahlen kleiner als \i für jedes \i ausgibt, aber es druckt
Hinzufügen einer überflüssigen 0 und -1.
Ich weiß, dass ich das mit einem \ifthenelse beheben kann, aber ich wollte das vermeiden. Ich hätte gerne ein Makro oder eine einfache Möglichkeit, das übliche Programmierparadigma von Zählern zu erhalten, die ansteigen (sofern ich nicht anders angewiesen werde).
Danke!
Antwort1
{0,...,-4}
zählt rückwärts, durchläuft also 0, -1, -2, -3, -4.
{0,1,...,n}
führt den Code zumindest für die ersten beiden Zahlen aus, siehe zBWarum führt \foreach \x in {0,1,...,0}{} zwei Iterationen durch (statt einer)?
Sie könnten stattdessen eine expl3-step-Funktion verwenden:
\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}