我知道我能做到:
\draw (5,0) node[above=3pt,fill=white,inner sep=0pt] {$5$}
但我想知道是否可以为文档中的每个节点全局设置3pt
、fill=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
因为 和 是键shape
,draw
彼此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
。