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

如何在包含粗体文本的graphviz中调整表节点的大小?,graphviz,Graphviz,我正在用graphviz绘制一个管道图。每个节点都是管道中的一个步骤,并使用一个表进行布局。顶行以粗体显示,并显示步骤的名称。其他行显示步骤的输出。步骤之间的箭头显示依赖关系 digraph { node[shape=plaintext] A [ label=< <table border="1" cellborder="0" cellspacing="1" > <tr><td align="left"><

我正在用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
}
有向图{
节点[形状=纯文本]
A[
标签=<
FirstVeryLongVeryBoldStepName
→ 顺序文件
>];
B[
标签=<
SecondVeryLongVeryBoldStepName
→ out2.txt
→ out3.json
>];
A->B
}
下面是它的渲染方式:

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


我怎样才能得到粗体文本的紧凑布局?如果有帮助的话,这里有一个有趣的问题,在我的机器上,你的代码可以很好地呈现出来(在Mac和Ubundtu上都是graphviz 2.41:)。可能这取决于graphviz构建过程中使用的字体引擎

在您的情况下,您可以在每个粗体文本节点的末尾添加三个空格:


如果HTML解析器占用了空格(尤其是在呈现svg时,可能会出现这种情况),可以将其替换为
符号(不可拆分空格)。

大概空格的数量取决于文本的长度?@danvk right,但根据经验,我认为对于短字符串和大部分长字符串,三个空格应该是合适的。在很长一段时间内,它们是不够的,当然,太多的空格会导致右边出现短标签的空白。看起来正确的空格数大约是
len(label)/10