全局设置节点背景

全局设置节点背景

我知道我能做到:

\draw (5,0) node[above=3pt,fill=white,inner sep=0pt] {$5$}

但我想知道是否可以为文档中的每个节点全局设置3ptfill=white和?inner sep=0pt

谢谢。

答案1

您可以\tikzset在序言中使用全局选项。每个节点使用的样式称为every node。您需要使用以下处理程序之一来更改/添加样式的键:

  • .style:覆盖当前样式的定义;
  • .append style:将一组键附加到当前定义;
  • .prefix style:将一组键添加到当前定义的前缀。

默认情况下,every node加载 TikZ 时样式为空/未定义,因此您实际上可以使用所有这些键而没有任何区别。


但仅供以后参考(您也可以在 TikZ 图片、环境或在的every node开头改变样式,让我们举一个例子。scope\path

让我们假设every node样式定义类似于

\tikzset{every node/.style={draw=green, fill=blue}}

现在每个节点的路径将以绿色绘制并以蓝色填充。以以下内容开头的 TikZ 图片

\begin{tikzpicture}[every node/.style={shape=circle}]

将具有该形状circle,但既不绘制也不填充,因为先前的样式已被.style处理程序覆盖。

声明

\begin{tikzpicture}[every node/.append style={shape=circle}]

\begin{tikzpicture}[every node/.prefix style={shape=circle}]

.append都将生成一个圆形节点,分别用绿色和蓝色绘制和填充。和之间(结果)没有区别,.prefix因为 和 是键shapedraw彼此fill独立。

类似这样的声明

\begin{tikzpicture}[every node/.append style={draw=red}]

every node将改变的定义

draw=green, fill=blue, draw=red

第一个draw键本身不会被覆盖,因为它在创建节点时仍会执行,但第二个draw键会覆盖前一次发生的更改/设置。(在这种情况下,当 TikZ 完成路径时,命令\tikz@mode@drawtrue被添加两次\tikz@mode,因此执行两次,但这不会影响任何东西。)

宣言

\begin{tikzpicture}[every node/.prefix style={fill=red}]

不会导致节点填充红色,因为 的定义every node已更改为

fill=red, draw=green, fill=blue

后者fill=blue会覆盖 的更改/设置fill=red

在样式中多次使用键通常不会产生任何副作用,因为它们只是设置某些设置,但它们的效果可以累积。例如,使用xshift=1cm, xshift=2cm将导致 的完全转换3cm

相关内容