考虑以下代码:
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\begin{scope}[fill=red, draw=green,text=blue]
\node[fill=red, draw=green] at (0,0) {A};
\node[text=black] at (2,0) {B};
\end{scope}
\end{tikzpicture}
\end{document}
我的问题是:为什么只有环境text
选项\scope
有效?(也就是说:我希望 B 节点具有红色背景和绿色边框,但从所含图像中可以看出,什么都没有发生)
答案1
这是对 a 实际行为方式的常见误解node
。根据定义,节点\path
本身并不是 a。
Anode
就适用于它的特殊键而言具有自己的名称空间。
原因是\node
扩展到环境\path node
中的任何东西scope
仅有的附加到path
s。这意味着您的代码相当于:
\begin{tikzpicture}
\begin{scope}[fill=red, draw=green,text=blue]
\node[fill=red, draw=green] at (0,0) {A};
\path (2,0) node[text=black] {B};
\end{scope}
\end{tikzpicture}
这更清楚发生了什么。因此,你可以这样做:
\begin{scope}[all/.style={fill=red, draw=green,text=blue},all,
every node/.append style={all}]
来实现你想要的,all
然后在任何地方使用,甚至在节点上。
答案2
节点不会继承路径选项。要使其工作,您可以使用
\begin{tikzpicture}
\begin{scope}[every node/.style={fill=red, draw=green,text=blue}]
\node at (0,0) {A};
\node[text=black] at (2,0) {B};
\end{scope}
\end{tikzpicture}
那么得到的图片就是