看看这个例子:
\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}