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