问题
我在 Tikz 中绘制流程图,它们基本上包括一个标题,后面是箭头下方的流程组件列表。我之前在 Tikz 中编写过接受参数的函数,但我想知道是否有任何方法可以接受参数“列表”,并使用某种 for 循环来循环这些参数。
我曾尝试在谷歌上搜索类似的物品,但没有找到太多结果,因为我不太确定如何表达我在寻找的东西。
伪代码
\newcommand{\FlowPipe}[3][FlowPipe]{ %first argument is x co-ord, second is array of text
\newcounter{i}
\setcounter{i}{0}
\draw[->] (#1,0) -- (#1+3,0);
\foreach\argtext in {#2}{
\node (#1,i) {\argtext};
\stepcounter{i}
}
}
基本上,对于数组中的每个项目,它应该在下面某个指定距离处添加一个节点,并将该项目的文本放在那里。
答案1
TikZ\foreach
宏对于如下情况非常有用:
\documentclass{article}
\usepackage{tikz}
\newcommand\FlowPipe[2]{ %first argument is x co-ord, second is array of text
\draw[->] (#1,0) -- ({#1+3},0);
\foreach[count=\i] \argtext in {#2} {
\node[anchor=south west] at (#1,{\i-0.9}) {\argtext};
}
}
\begin{document}
\begin{tikzpicture}
\FlowPipe{1}{{first text},{second text},{with, comma}}
\end{tikzpicture}
\end{document}
请参阅 TikZ/PGF v2.10 手册中的第 56 节(“重复事物:Foreach 语句”)。该count
选项是在 TikZ v2.10 中引入的,因此您可能需要更新 TikZ/PGF。使用count
计数器而不是 LaTeX 计数器的原因在于计数器是全局定义的,而我不知道如何轻松获取本地计数器(否则第二次调用宏将产生错误already defined
)。