
내가 아는 대부분의 프로그래밍 언어에서는 달리 지시하지 않는 한 카운터가 증가합니다. 예를 들어 다음 진술은
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}