graphviz/dot 中的记录内边

Edges inside records in graphviz/dot

我想在 graphviz (v 2.38.0) 中通过 运行 在该记录中的两个元素之间设置一条直边来突出显示记录内的关系。但是,dot 会尽其所能 运行 记录节点外的边缘。

下面的例子说明了我的问题。

digraph {
  rankdir = LR;
  splines = line;

  i1; i2; i3;
  mux [shape=record,label="{  {<i1>i1|<i2>i2|<i3>i3} | MUX | <o1>o1}"];
  o;

  i1 -> mux:i1;
  i2 -> mux:i2;
  i3 -> mux:i3;
  mux:o1 -> o;

  mux:i1:e -> mux:o1:w [color=red];

}

我希望红色边缘是记录内部端口之间的直线。我不在乎边缘是否覆盖唱片标签。

有没有办法强制边缘成为忽略障碍物的直线,或者以其他方式指示对象在覆盖时应忽略的点nodes/labels?

这个问题类似于 Graphviz edges between ports belonging to the same record node look bad,没有答案。

尝试:splines = curved;

digraph {
  rankdir = LR;
  splines = curved;

  i1; i2; i3;
  mux [shape=record,label="{  {<i1>i1|<i2>i2|<i3>i3} | MUX | <o1>o1}"];
  o;

  i1 -> mux:i1;
  i2 -> mux:i2;
  i3 -> mux:i3;
  mux:o1 -> o;

  mux:i1:e -> mux:o1:w [color=red];


}