在我知道的大多数编程语言中,除非另有指示,否则计数器都会增加。例如语句
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}
至少对前两个数字执行代码,例如为什么 \foreach \x in {0,1,...,0}{} 执行两次迭代(而不是一次)?
您可以改用 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}