
Я пишу макрос, который принимает список чисел в качестве единственного параметра. Когда я итерирую список, я хотел бы отслеживать индекс элемента в списке. Вот пример того, что я хочу:
% \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}