问题

问题

问题

我在 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)。

相关内容