루프를 통해 매번 변수를 증가시키는 방법

루프를 통해 매번 변수를 증가시키는 방법

저는 숫자 목록을 유일한 매개변수로 사용하는 매크로를 작성하고 있습니다. 목록을 반복할 때 목록에 있는 항목의 인덱스를 추적하고 싶습니다. 내가 원하는 것의 예는 다음과 같습니다.

% \myMacro{2,1,3} \\ % this is the same as what follows

\begin{tikzpicture}
  \draw (1,0) -- +(0,2);
  \draw (2,0) -- +(0,1);
  \draw (3,0) -- +(0,3);
\end{tikzpicture}

이것이 \index내가 원하는 것을 얻는 방법인 척하면서 이 매크로를 다음과 같이 작성하겠습니다.

\newcommand{\mymacro}[1]%
  {\begin{tikzpicture}
    \foreach \height in #1 {
      \draw (\index,0) -- +(0,\height);
    }
  \end{tikzpicture}}

이를 수행할 수 있는 방법이 있습니까? 나는 그것을 로 부르고 싶다면 \myMacro{2/1,1/2,3/3}한 줄을 로 바꿀 수 있다는 것을 알고 있지만 \foreach \height/\index in #1 {매개변수에 인덱스를 전달할 필요가 없는 것이 훨씬 더 좋습니다.

답변1

패키지 pgffor ( 의 일부 tikz)는 count매크로에 할당할 수 있는 키를 제공합니다. 매크로 정의에 { }주변이 필요하다는 점에 유의하세요 .#1

\documentclass{article}
\usepackage{tikz}
\newcommand{\mymacro}[1]%
  {\begin{tikzpicture}
    \foreach \height [count=\myindex] in {#1} {
      \draw (\myindex,0) -- +(0,\height);
    }
  \end{tikzpicture}}
\begin{document}  
\mymacro{2,1,3}
\end{document}

코드 출력

관련 정보