我有一个 graphviz (2.38.0 (20140413.2041)) 图,其中每个节点都包含几行文本,我希望不同的行具有不同的样式。目前我有:
digraph G{
stylesheet = "styles.css";
graph[rankdir=BT];
node[shape=box];
Andrew[label=<
Andrew
<br />Red
<br />34
>];
James[label=<
James
<br />Yellow
<br />26
>];
Andrew -> James;
}
Run Code Online (Sandbox Code Playgroud)
使用样式表:
.name {
font-weight: bold;
}
.age{
color: blue;
}
Run Code Online (Sandbox Code Playgroud)
我希望能够使用以下功能:
Andrew[label=<
<font class="name">Andrew</font>
<br />Red
<br /><font class="age">34</font>
>];
Run Code Online (Sandbox Code Playgroud)
但不幸的是 dot 给了我:
Warning: Illegal attribute class in <FONT> - ignored
Warning: Illegal attribute class in <FONT> - ignored
Run Code Online (Sandbox Code Playgroud)
我进行了搜索但找不到任何东西,所以我不确定是否有首选的方式来完成我想要实现的目标(例如某种生成重复格式的宏),我错过了.
看起来graphviz接受的HTML子集不包含class里面的属性<font>
<!-- Font specification -->
<FONT
COLOR="color"
FACE="fontname"
POINT-SIZE="value"
>
Run Code Online (Sandbox Code Playgroud)
(来自https://www.graphviz.org/doc/info/shapes.html#html)
正如你在评论中指出的那样,
dot 抱怨 div、p 和 span 的未知 HTML 元素
他们谈论它:
注意:这些标签支持的功能和语法以 HTML 为模型。然而,有许多与 Graphviz 标签相关的方面不在 HTML 中,相反,HTML 允许各种在 Graphviz 中毫无意义的构造。我们通常将这些标签称为“HTML 标签”,而不是繁琐的“类似 HTML 的标签”,但警告读者这些并不是真正的 HTML。下面的语法准确描述了 Graphviz 将接受的内容。