我正在使用graphs
TikZ 库绘制有向无环图。当我将特定样式应用于给定节点时,我希望该样式被相关节点的所有后代继承。
为了解决这个问题,假设我定义了一个名为的节点样式,该样式alert
会修改默认节点样式。当我将该alert
样式本地应用于节点时,我希望该节点的所有后代都能继承相关样式,而不必手动将该样式应用于其所有后代。
以下是一个示例:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{graphs}
\tikzset{
every node/.style={draw=black},
alert/.style={draw=red},
}
\begin{document}
\begin{tikzpicture}
\graph{
A -> {
B,
C[alert] -> D -> { E, F},
},
};
\end{tikzpicture}
\end{document}
目前,alert
仅适用于节点C
。但是,通过将alert
样式应用于节点C
,我希望所有后代C
(即节点D
、E
和F
)继承该样式,而无需键入
\graph{
A -> {
B,
C[alert] -> D[alert] -> { E[alert], F[alert]},
},
};
有办法吗?
编辑:Harish Kumar 的方法可以让我的生活更轻松,但这并不是我想要的。下面是一个更复杂的例子,说明了缺少什么:
\graph{
A -> { B, C[alert] } -> D -> { E -> F, G -> H }
};
在这里,我希望节点D
继承应用于其祖先节点的样式H
。我可以按照 Harish 的建议编写alert
C
\graph{
A -> { B, C[alert] } -> {[nodes=alert] D -> { E -> F, G -> H }}
};
但这仍然会迫使我申请alert
两次在图表中。我希望应用于一个节点的特定样式能够被链下的所有节点继承
- 无需在其他地方使用这种风格,
- 无论图表如何指定。
那可能吗?
答案1
您可以使用
{[nodes=alert]C -> D -> { E, F},
}
代码:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{graphs}
\tikzset{
every node/.style={draw=black},
alert/.style={draw=red},
}
\begin{document}
\begin{tikzpicture}
\graph{
A -> {
B,
{[nodes=alert]C -> D -> { E, F},
}},
};
\end{tikzpicture}
\end{document}