
Estoy escribiendo una macro que toma una lista de números como único parámetro. Cuando repito la lista, me gustaría realizar un seguimiento del índice del elemento en la lista. Aquí hay un ejemplo de lo que quiero:
% \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}
Pretendiendo que esa \index
es la manera de conseguir lo que quiero, escribiría esta macro como:
\newcommand{\mymacro}[1]%
{\begin{tikzpicture}
\foreach \height in #1 {
\draw (\index,0) -- +(0,\height);
}
\end{tikzpicture}}
¿Hay alguna forma de hacer esto? Sé que, si quisiera llamarlo como \myMacro{2/1,1/2,3/3}
, podría reemplazar una línea con \foreach \height/\index in #1 {
, pero preferiría no tener que pasar los índices en el parámetro.
Respuesta1
El pgffor
paquete (parte de tikz
) proporciona una count
clave para esto que puede asignar a una macro. Tenga en cuenta que necesita { }
alrededor de #1
en su definición 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}