用法
$ dot -Tplain input.dot
$ dot -Tplain-ext input.dot

纯文本

简单,基于行的语言

plain 和 plain-ext 格式使用简单的基于行的语言生成输出。后者与前者不同的是,在边上,它在适当情况下提供了头部和尾部节点上的端口名称。

一个简单的包含两个节点和一个边的图形的示例输出

-Tplain

$ echo 'digraph { a->b }' | dot -Tplain
graph 1 0.75 1.5
node a 0.375 1.25 0.75 0.5 a solid ellipse black lightgrey
node b 0.375 0.25 0.75 0.5 b solid ellipse black lightgrey
edge a b 4 0.375 0.99579 0.375 0.88865 0.375 0.7599 0.375 0.64045 solid black
stop
-Tplain-ext

$ echo 'digraph { a->b }' | dot -Tplain-ext
graph 1 0.75 1.5
node a 0.375 1.25 0.75 0.5 a solid ellipse black lightgrey
node b 0.375 0.25 0.75 0.5 b solid ellipse black lightgrey
edge a b 4 0.375 0.99579 0.375 0.88865 0.375 0.7599 0.375 0.64045 solid black
stop

有四种类型的语句。

 graph scale width height
 node name x y width height label style shape color fillcolor
 edge tail head n x₁ y₁ .. xₙ yₙ [label xl yl] style color
 stop
graph
widthheight 值分别给出图形的宽度和高度。图形的左下角位于原点。scale 值指示如果给出了 size 属性并且需要缩放图形以符合该大小,图形应该如何缩放。如果不需要缩放,它将被设置为 1.0。请注意,所有图形、节点和边的坐标和长度都是未缩放的。
node
name 值是节点的名称,xy 给出节点的位置。widthheight 是节点的宽度和高度。labelstyleshapecolorfillcolor 分别给出节点的 labelstyleshapecolorfillcolor,必要时使用属性默认值。如果节点没有 style 属性,则使用 "solid"。
edge
tailhead 值给出头部和尾部节点的名称。在 plain-ext 格式中,如果边连接到节点的端口,则头部或尾部名称将附加一个冒号和端口名称。n 是定义形成边的 B 样条的控制点的数量。接下来是 2*n 个数字,按从尾部到头部顺序给出控制点的 x 和 y 坐标。如果边有 label,则它会紧随其后,后面是标签位置的 x 和 y 坐标。边的描述由边的 stylecolor 完成。与节点一样,如果未定义 style,则使用 "solid"。

注意:边语句中给出的控制点定义了边的主体。特别是,如果边在头部或尾部节点上有箭头,则在最后一个或第一个控制点与相关节点的边界之间会有一个间隙。有至少 3 种处理此间隙的可能方法

  • 安排输入图对所有边使用 dir=nonearrowhead=nonearrowtail=none。在这种情况下,终止控制点将始终接触节点。
  • 考虑连接控制点和节点中心的线段,并确定线段与节点边界的交点。然后使用控制点和交点作为箭头的主要轴。这种方法的问题是,如果边有端口,则边将不会指向节点的中心。在这种情况下,与其使用控制点和中心点,不如使用控制点及其切线。
  • 安排输入图使用 headclip=falsetailclip=false。在这种情况下,边将在节点的中心而不是其边界处终止。如果使用箭头,仍然会有一个间隙,但这通常会发生在节点内。应用程序仍然需要将样条剪裁到节点边界。此外,与上一项一样,如果边指向节点端口,则此技术将失败。

输出包括一条 graph 行,一条 node 行序列(每个节点一条),一条 edge 行序列(每条边一条)以及最后一条 stop 行。所有单位都以英寸为单位,以浮点数表示。

请注意,plain 格式提供了最少的信息,实际上只提供了节点位置和大小以及边样条控制点。这些格式通常最适合那些只需要这种几何信息的应用程序,并且愿意填写所有图形细节。这些格式的唯一真正优势是它们的简洁性和易解析性。通常,dotxdot 在提供的信息量方面更可取。

上次修改时间 2024 年 7 月 28 日:将所有 Hugo 'ref' 替换为 'relref' (bbef86a)