箭头形状
箭头形状可以使用以下简单语法指定和命名。终结符以粗体显示,非终结符以斜体显示。文字字符用单引号括起来。方括号 [
和 ]
括起可选项目。竖线 |
分隔备选方案。
语法
arrowname | : | aname [ aname [ aname [ aname ] ] ] |
aname | : | [ modifiers ] shape |
modifiers | : | [ 'o' ] [ side ] |
side | : | 'l' |
| | 'r' | |
shape | : | box |
| | crow | |
| | curve | |
| | icurve | |
| | diamond | |
| | dot | |
| | inv | |
| | none | |
| | normal | |
| | tee | |
| | vee |
基本形状
形状 | 图像 |
---|---|
box |
|
crow |
|
curve |
|
diamond |
|
dot |
|
icurve |
|
inv |
|
none |
|
normal |
|
tee |
|
vee |
形状修饰符
对于修饰符
'l'
- 剪切形状,只保留边缘左侧的部分。
'r'
- 剪切形状,只保留边缘右侧的部分。
'o'
- 使用形状的开放(非填充)版本。
左右定义为从边缘看朝向箭头“接触”节点的点所确定的方向。
例如,箭头形状 lteeoldiamond
解析为 'l' 'tee' 'o' 'l' 'diamond'
并且对应于形状
请注意,指定的第一个箭头形状最靠近节点。如果指定了后续箭头形状,它们将离节点更远。此外,形状 none
会使用空间,因此,例如,箭头 nonenormal
与 normal
不同。
并非所有语法上合法的修饰符组合都有意义或语义上有效。例如,none
中的任何修饰符都没有意义。下表显示哪些修饰符允许与哪些形状一起使用。
修饰符 | 'l'/'r' |
o |
---|---|---|
box |
✅ | ✅ |
crow |
✅ | |
curve |
✅ | |
diamond |
✅ | ✅ |
dot |
✅ | |
icurve |
✅ | |
inv |
✅ | ✅ |
none |
||
normal |
✅ | ✅ |
tee |
✅ | |
vee |
✅ |
这将产生 42 种不同的箭头形状。可选的第二、第三、第四个形状可以独立地是 42 个中的任何一个,但最后一个不能是 none
,因为这会创建一个冗余的形状。因此,共有 41 × 42³ + 41 × 42² + 41 × 42 + 42 = 3,111,696 种不同的组合。
以下显示包含 42 种使用单个箭头形状的可能组合。连接到箭头的节点没有绘制,但应该出现在边的右侧。
box | lbox | rbox | obox | olbox | orbox |
crow | lcrow | rcrow | |||
diamond | ldiamond | rdiamond | odiamond | oldiamond | ordiamond |
dot | odot | ||||
inv | linv | rinv | oinv | olinv | orinv |
none | |||||
normal | lnormal | rnormal | onormal | olnormal | ornormal |
tee | ltee | rtee | |||
vee | lvee | rvee | |||
curve | lcurve | rcurve | icurve | licurve | ricurve |