![PGF 的 \foreach 无法在 [start chain=\here] 中替换?](https://linux22.com/image/282227/PGF%20%E7%9A%84%20%5Cforeach%20%E6%97%A0%E6%B3%95%E5%9C%A8%20%5Bstart%20chain%3D%5Chere%5D%20%E4%B8%AD%E6%9B%BF%E6%8D%A2%EF%BC%9F.png)
在 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}