如何在每次循环中增加变量

如何在每次循环中增加变量

我正在编写一个宏,它以数字列表作为其唯一参数。当我遍历列表时,我想跟踪列表中项目的索引。以下是我想要的示例:

% \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 ( 的一部分tikzcount为此提供了一个键,您可以将其分配给宏。请注意,您需要在宏定义中{ }围绕。#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}

代码输出

相关内容