Graphviz——样条曲线=";“弯曲的”;不';行不通

Graphviz——样条曲线=";“弯曲的”;不';行不通,graphviz,dot,Graphviz,Dot,我试图使用.dot源文件在.pdf中编译有限状态机(FSM)可视化表示: // Use directional graph "digraph" opossed to "graph" digraph { rankdir = TB; nodesep = 0.5; ranksep = 0.25; //splines = "curved"; //splines = "ortho";

我试图使用
.dot
源文件在
.pdf
中编译有限状态机(FSM)可视化表示:

// Use directional graph "digraph" opossed to "graph"
digraph {

    rankdir = TB;
    nodesep = 0.5;
    ranksep = 0.25;
    //splines = "curved";
    //splines = "ortho";
    
    // A:
    node[
        fontname = "IBM Plex Mono Text Italic",
        fontsize = 8,
        shape = circle,
        style = "filled",
        fillcolor = "#DDDDDD",
        fontcolor = "#333333",
        color = "#AAAAAA",
        penwidth = 0.1;
    ]

    // B:
    edge[
        fontname = "IBM Plex Mono Bold",
        //style = "dotted",
        fontsize = 8,
        arrowhead = normal,
        arrowsize = 0.4,
        penwidth = 0.1;
        fontcolor = "#444444",
        color = "#777777",
    ]

    // C:
    graph[
        fontname = "IBM Plex Mono Bold",
        fontsize=8,
        rank = TB,
        style = "filled",
        fontcolor = "#444444",
        color = "#EEEEEE",
    ]
    
    // C:
    000[label = "start", shape = "plain", fillcolor = "none"];
    001[label = "q1", shape = "doublecircle"];
    002[label = "q2"];
    003[label = "q3"];

    // D:
    000->001;
    001->001[label="2"];
    001->002[label="1"];
    002->001[label="0"];
    002->002[label="2"];
    002->003[label="1"];
    003->002[label="0"];
    003->003[label="2"];
    001->003[label="1"];
    003->001[label="0"];

}
这几乎可以完美地编译(除了笔直的内部转换):

如果我取消注释行
spline=“ortho”在顶部,它是这样编译的(虽然很难看,但我想证明它是有效的):

但是当我取消注释行
spline=“curve”(这是我需要的)在顶部,灾难发生了:


为什么会发生这种情况?

您使用的是什么版本的graphviz?从命令行运行,my dot.exe是最新的2.47.1版本,当我取消注释行
spline=“curve”时,它会显示“警告:带样条曲线的边标签在dot中不受支持-使用xlabels”然后生成一些不适当的东西-但是消息说明了这一点。我在Debian系统上,我的graphviz是
2.40.1
。你是对的。使用
dot-Tpdf main.dot>main.pdf编译会产生以下警告:
警告:点中不支持带样条曲线的边标签-使用xlabels
。你可能知道如何使用
xlabels
?不知道。我相信它允许您手动放置标签。FWIW我会使用默认输出-如果您迫切需要弯曲直线,请在边缘添加一些不可见的节点,使其弯曲。我将等待具有graphviz版本2.42.2的Debian 11,并希望曲线样条线在那里得到支持。我希望我知道如何验证这一点。我尝试在graphviz的官方GitLab上搜索提交,但我只能在6年前找到关于曲线样条线的补丁:2.47.1也有同样的信息,您非常乐观。