如何调整graphviz中包含粗体文本的表节点的大小?

时间:2019-05-29 16:10:34

标签: graphviz

我正在用graphviz渲染管道图。每个节点都是管道中的一个步骤,并使用表格进行布局。第一行以粗体显示该步骤的名称。其他行显示该步骤的输出。步骤之间的箭头显示依赖性。

digraph {
  node[shape=plaintext]

  A [
    label=<
      <table border="1" cellborder="0" cellspacing="1" >
      <tr><td align="left"><b>FirstVeryLongVeryBoldStepName</b></td></tr>
      <tr><td align="left">→ out.txt</td></tr>
      </table>
    >];

  B [
    label=<
      <table border="1" cellborder="0" cellspacing="1" >
      <tr><td align="left"><b>SecondVeryLongVeryBoldStepName</b></td></tr>
      <tr><td align="left">→ out2.txt</td></tr>
      <tr><td align="left">→ out3.json</td></tr>
      </table>
    >];

  A -> B
}

这是它的渲染方式:

pipeline

每个框的宽度似乎是根据文本的非粗体宽度设置的。如果删除<b>标签,则布局看起来正好:

pipeline with tight layout

如何使用粗体显示紧凑的布局?如果有帮助,请访问link to the example in Graphviz Online

1 个答案:

答案 0 :(得分:1)

有趣的是,在我的计算机上,您的代码可以正常显示(在Mac上带有graphviz 2.41的Ubundtu和在graphviz 2.40上的Ubundtu:rendered.png)。也许这取决于graphviz构建期间使用的字体引擎。

根据您的情况,您可以在每个粗体文本节点的末尾添加三个空格:link to fixed example

如果HTML解析器占用了空格(尤其是在渲染svg时可能会发生),则可以用&nbsp;符号(不易碎的空格)替换它们。