PGF 的 \foreach 无法在 [start chain=\here] 中替换?

PGF 的 \foreach 无法在 [start chain=\here] 中替换?

在 TikZ/PGF 中,我需要两行点,以便稍后将它们连接起来。– 我用链式结构将这些点制成一个\foreach循环。但我无法让命名在循环中发挥作用。

下面的代码可以工作,但NAMEHERE应该是\chainName。如果我\chainName在那里插入,我会得到致命错误Argument of \tikz@lib@chain@strip has an extra }.

\begin{tikzpicture}[
    every node/.style={draw, fill, circle, inner sep=.5}
]
\node (start-mybase) at (0,0) {};
\node (end-mybase) at (3,0) {};
\foreach \chainName in {start, end} {
    \begin{scope}[start chain=NAMEHERE going above]
        \chainin (\chainName-mybase);
        \foreach \x in {2,...,5} {
            \node [on chain] {};
        }
    \end{scope}
}
% \draw (start-1) -- (end-3);
\end{tikzpicture}

我如何命名 for-each 循环中的链?

答案1

您需要将宏名称括在花括号中:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{chains}

\begin{document}
\begin{tikzpicture}[
    every node/.style={draw, fill, circle, inner sep=.5}
]
\node (start-mybase) at (0,0) {};
\node (end-mybase) at (3,0) {};
\foreach \chainName in {start, end} {
    \begin{scope}[start chain={\chainName} going above]
        \chainin (\chainName-mybase);
        \foreach \x in {2,...,5} {
            \node [on chain] {};
        }
   \end{scope}
}
\draw (start-1) -- (end-3);
\end{tikzpicture}
\end{document}

相关内容