我有一些边缘,其“顶部”的节点定义为
\path (source) edge node {some text} (target);
但现在它只是打印some text
直接打印在节点顶部,这使得读取起来很困难。
我想要的是白色背景。我知道我可以用
\path (source) edge node [fill=white] {some text} (target);
但我希望这发生在我所有位于边缘的节点上。
其中一种方法是使用
\tikzset{every node/.style={fill=white}}
但随后它将发生在我所有的节点上,而不仅仅是那些位于边缘之上的节点。
另一种方法是使用以下命令在所有节点上手动设置一个类
\tikzset{white bg/.style={fill=white}}
\path (source) edge node [white bg] {some text} (target);
但如果可以自动为所有节点完成此操作会更好。
是否有任何 tikz 键可以执行类似操作
\tikzset{every node on edge/.style={fill=white}}
答案1
有一个every edge
样式,你可以every node
在里面放一个样式定义,所以借用一些代码gernot 的回答:
\documentclass[border=1mm]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[every edge/.append style={every node/.style={fill=blue}}]
\node (source) {S};
\draw (4,0) node (target) {T}; % just to show that this isn't blue either
\path (source) edge node {some text} (target);
\end{tikzpicture}
\end{document}
答案2
我不认为路径上的节点有特定的键,因为据我所知,\node
内部也变成了。但是,您可以在范围内node
收集要影响的节点,并仅为它们定义。下面的示例表明,在范围之后,该选项不再有效。every node
every node
every node
\documentclass[border=1mm]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\node (source) [fill=red] {S};
\node (target) [fill=blue] at (4,0) {T};
\begin{scope}[every node/.style={fill=white}]
\path (source) edge node {some text} (target);
\end{scope}
\path (0,-1) edge node {some text} (4,-1);
\end{tikzpicture}
\end{document}