Cómo incrementar una variable cada vez a través de un bucle

Cómo incrementar una variable cada vez a través de un bucle

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 \indexes 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 countclave para esto que puede asignar a una macro. Tenga en cuenta que necesita { }alrededor de #1en 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}

salida de código

información relacionada