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}至少对前两个数字执行代码,例如为什么 \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}

在此处输入图片描述

相关内容