我正在编写一个宏,它以数字列表作为其唯一参数。当我遍历列表时,我想跟踪列表中项目的索引。以下是我想要的示例:
% \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}