使用数组中的 for 循环设置 tikz 标签

使用数组中的 for 循环设置 tikz 标签

我想在 tikz 中绘制一堆节点,其中第 i 个节点应该用数组中的第 i 个字符串(数学或文本)标记。

例如,如果我有数组

\def\array{{$X$, $Y$, $e^{x+z}$, $p$, $t$, $q$}}

我想生成

\node[label={$X$}] (0) at (0, 0) {};
\node[label={$Y$}] (1) at (3, 0) {};
\node[label={$e^{x+z}$}] (2) at (6, 0) {};
\node[label={$p$}] (3) at (9, 0) {};
\node[label={$t$}] (4) at (12, 0) {};
\node[label={$q$}] (5) at (15, 0) {};

但使用 for 循环,因为在我的实际用例中数组要大得多。我很想做类似的事情:

\foreach \i in {0, ..., 5} {
    \node[label={\array[\i]}] (\i) at (3\i, 0) {};

但这不起作用。正确的方法是什么?

我可以在其他问题中看到,evaluate当标签需要作为算术进行评估时,该函数会很有用,但这不是我的情况。

更一般地,上下文可能如下所示:

\documentclass[article]
\usepackage{tikz}
\begin{document}
\begin{picture}
    \begin{tikzpicture}
        \def\array{{$X$, $Y$, $e^{x+z}$, $p$, $t$, $q$}}
            \foreach \i in {0, ..., 5} {
                \node[label={\array[\i]}] (\i) at (3\i, 0) {};
            }
    \end{tikzpicture}
\end{picture}
\end{document}

答案1

您可以遍历数组并使用计数器来计算位置:

在此处输入图片描述

代码:

\documentclass{article}
\usepackage{tikz}

\begin{document}
  \begin{tikzpicture}
     \def\array{$X$, $Y$, $e^{x+z}$, $p$, $t$, $q$}
     \foreach [count=\i] \x in \array {
            \node[label={\x}] (\i) at (3\i, 0) {};
     }
  \end{tikzpicture}
\end{document}

相关内容