请考虑以下简单示例:
\documentclass[tikz, border=3mm, preview]{standalone}
\begin{document}
\begin{tikzpicture}[
every node/.append style = {text=blue}
]
\node {root}
child {node {left}}
child {node {right}
child {node {\textcolor{red}{L} child}}
child {node {R child}}
};
\end{tikzpicture}
\end{document}
这使:
为什么节点中的文本L child
没有红色L
和蓝色child
?有趣的是,如果我更改颜色顺序:
child {node {L \textcolor{red}{child}}
那么结果正如预期:蓝色L
和red
孩子:
答案1
在这个问题被投票关闭之前,我还有一些话要说:
PGF/Ti 中的颜色设置钾Z 以自己的方式完成。例如,node[red]{foo}
颜色node[text=red]{foo}
最终由 [1] 设置\pgfsetcolor{red}
。此注释记录如下
\pgfsetcolor{⟨color⟩}
设置描边和填充颜色。与普通\color
命令不同的是,效果持续到当前结束{pgfscope}
,而不仅仅是到当前 TEX 组结束。
在我看来,这句话的意思是 PGF\pgfsetcolor
和常规的\color
是不兼容的。对于你的情况,你应该要么坚持\color
按设置node[font=\color{blue}]
,要么坚持\pgfsetcolor
按说法node[text=blue]{\pgfsetcolor{red}L \pgfsetcolor{.}root}
。
[1] 准确地说,是\tikzoption{text}{\def\tikz@textcolor{#1}}
然后\pgfutil@colorlet{.}{\tikz@textcolor}
然后\pgfsetcolor{.}
。