TikZ 范围选项不起作用

TikZ 范围选项不起作用

考虑以下代码:

\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仅有的附加到paths。这意味着您的代码相当于:

\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}

那么得到的图片就是

在此处输入图片描述

相关内容