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}至少針對前兩個數字執行程式碼,請參見例如為什麼 {0,1,...,0}{} 中的 \foreach \x 執行兩次迭代(而不是一次)?

您可以使用 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}

在此輸入影像描述

相關內容