
Estou escrevendo uma macro que usa uma lista de números como único parâmetro. Quando eu percorrer a lista, gostaria de acompanhar o índice do item na lista. Aqui está um exemplo do que eu quero:
% \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}
Fingindo que essa \index
é a maneira de conseguir o que quero, escreveria esta macro como:
\newcommand{\mymacro}[1]%
{\begin{tikzpicture}
\foreach \height in #1 {
\draw (\index,0) -- +(0,\height);
}
\end{tikzpicture}}
Existe uma maneira de fazer isso? Eu sei que, se eu quisesse chamá-lo como \myMacro{2/1,1/2,3/3}
, poderia substituir uma linha por \foreach \height/\index in #1 {
, mas preferiria não precisar passar os índices no parâmetro.
Responder1
O pgffor
pacote (parte de tikz
) fornece uma count
chave para isso que você pode atribuir a uma macro. Observe que você precisa { }
de #1
em sua definição de macro.
\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}