
在我所知道的大多數程式語言中,計數器都會增加,除非另有指示。例如聲明
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}