Как увеличивать переменную каждый раз в цикле

Как увеличивать переменную каждый раз в цикле

Я пишу макрос, который принимает список чисел в качестве единственного параметра. Когда я итерирую список, я хотел бы отслеживать индекс элемента в списке. Вот пример того, что я хочу:

% \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}, я мог бы заменить одну строку на \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}

вывод кода

Связанный контент