【问题标题】:Using CSS classes in HTML labels on Graphviz在 Graphviz 上的 HTML 标签中使用 CSS 类
【发布时间】:2015-08-04 11:10:31
【问题描述】:

我有一个 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;
}

带有样式表:

.name {
    font-weight: bold;
}

.age{
    color: blue;
}

我希望能够使用以下功能:

   Andrew[label=<
        <font class="name">Andrew</font>
        <br />Red
        <br /><font class="age">34</font>
        >];

但不幸的是 dot 给了我:

Warning: Illegal attribute class in <FONT> - ignored
Warning: Illegal attribute class in <FONT> - ignored

我进行了搜索,但找不到任何东西,所以我不确定是否有首选的方法来完成我想要实现的目标(例如某种宏来生成重复格式)错过了。

【问题讨论】:

  • 你为什么用font class而不是div class
  • dot 针对divpspan 抱怨Unknown HTML element

标签: css graphviz


【解决方案1】:

graphviz 接受的 HTML 子集似乎在 &lt;font&gt; 中不包含 class 属性

 <!-- Font specification -->

<FONT
  COLOR="color"
  FACE="fontname"
  POINT-SIZE="value"
>

(来自https://www.graphviz.org/doc/info/shapes.html#html

正如你在评论中指出的那样,

dot 抱怨 div、p 和 span 的未知 HTML 元素

他们谈论它:

注意:这些标签支持的特性和语法是基于 HTML 建模的。但是,有许多与 Graphviz 标签相关的方面不在 HTML 中,相反,HTML 允许在 Graphviz 中无意义的各种构造。我们通常将这些标签称为“HTML 标签”,而不是繁琐的“类 HTML 标签”,但请读者注意,这些标签并不是真正的 HTML。下面的语法准确地描述了 Graphviz 将接受的内容。

【讨论】:

  • 没错,DOT 不支持完整的 HTML 标准,这就是为什么它被正式称为“类似 HTML 的标签”(尽管我希望它们支持更多标签 :D)。在我看来,这应该是公认的答案。
猜你喜欢
  • 1970-01-01
  • 2015-09-21
  • 2020-02-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-08
  • 2012-09-15
  • 2012-11-28
相关资源
最近更新 更多