与 pgfdeclarelayer 的链冲突

与 pgfdeclarelayer 的链冲突

看看这个例子:

\documentclass[tikz]{standalone}
\usetikzlibrary{chains,scopes}
\begin{document}
\begin{tikzpicture}[node distance=0 and 0]
\pgfdeclarelayer{background} % comment this line works
{[start chain=C1]
    \foreach \i in {a,b,c,d,e,f}
    \node[draw,minimum size=1.5em,outer sep=0,on chain=C1] (N\i) {\i};
}
\end{tikzpicture}
\end{document}

错误信息:

! Package tikz Error: Unknown chain ``C1''.

代码无法通过编译,但如果我注释掉 pgfdeclarelayer 行,它就可以正常工作。

这是否意味着 pgfdeclarelayer 与 chain 包冲突?如何修复?

答案1

它与 \pgfdeclarelayer 并不冲突——由于语法错误,您会在此处遇到许多其他命令的类似错误。

问题是,作用域库只允许你在非常特定的地方使用括号作为作用域的简写 —— 而在命令之后并不是这样的地方。(如果你添加 \path 命令,它就会起作用)。

您应该使用[启动链 C1]作为范围的选项:

\documentclass[tikz]{standalone}
\usetikzlibrary{chains,scopes}
\begin{document}
\begin{tikzpicture}[node distance=0 and 0]
\pgfdeclarelayer{background} % comment this line works
\begin{scope}[start chain=C1]
    \foreach \i in {a,b,c,d,e,f}
    \node[draw,minimum size=1.5em,outer sep=0,on chain=C1] (N\i) {\i};
\end{scope}
\end{tikzpicture}
\end{document}

相关内容