ループごとに変数を増やす方法

ループごとに変数を増やす方法

数値のリストを唯一のパラメータとして受け取るマクロを作成しています。リストを反復処理するときに、リスト内の項目のインデックスを追跡したいと思います。以下は、私が求めている例です。

% \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}1 行を に置き換えることができることはわかっています\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}

コードの出力

関連情報