Daniel@0: Daniel@0: Daniel@0: Daniel@0:
Daniel@0:arrowname | Daniel@0:: | Daniel@0:aname [ aname [ aname [ aname ] ] ] | Daniel@0:
aname | Daniel@0:: | Daniel@0:[ modifiers ] shape | Daniel@0:
modifiers | Daniel@0:: | Daniel@0:[ 'o' ] [ side ] | Daniel@0:
side | Daniel@0:: | Daniel@0:'l' | Daniel@0:
Daniel@0: | | | Daniel@0:'r' | Daniel@0:
shape | Daniel@0:: | Daniel@0:box | Daniel@0:
Daniel@0: | | | Daniel@0:crow | Daniel@0:
Daniel@0: | | | Daniel@0:diamond | Daniel@0:
Daniel@0: | | | Daniel@0:dot | Daniel@0:
Daniel@0: | | | Daniel@0:inv | Daniel@0:
Daniel@0: | | | Daniel@0:none | Daniel@0:
Daniel@0: | | | Daniel@0:normal | Daniel@0:
Daniel@0: | | | Daniel@0:tee | Daniel@0:
Daniel@0: | | | Daniel@0:vee | Daniel@0:
Daniel@0: The primitive shapes are: Daniel@0:
"box" | ![]() | "crow" | ![]() | "diamond" | ![]() |
"dot" | ![]() | "inv" | ![]() | "none" | ![]() |
"normal" | ![]() | "tee" | ![]() | "vee" | ![]() |
Daniel@0: As for the modifiers: Daniel@0:
Daniel@0: As an example, the arrow shape lteeoldiamond is parsed as Daniel@0: 'l' 'tee' 'o' 'l' 'diamond' and corresponds to the shape Daniel@0:
Daniel@0: Not all syntactically legal combinations of modifiers are meaningful Daniel@0: or semantically valid. Daniel@0: For example, none of the modifiers make any sense with none. Daniel@0: The following table indicates which modifiers are allowed with which shapes. Daniel@0:
Daniel@0:
Modifier | Daniel@0:box Daniel@0: | crow Daniel@0: | diamond Daniel@0: | dot Daniel@0: | inv Daniel@0: | none Daniel@0: | normal Daniel@0: | tee Daniel@0: | vee Daniel@0: |
---|---|---|---|---|---|---|---|---|---|
'l'/'r' | X | X | X | X | X | X | X | ||
'o' | X | X | X | X | X |
Daniel@0: This yields 36 different arrow shapes. The optional second, third, fourth shapes Daniel@0: can independently be any of the 36, but since nonenone Daniel@0: is redundant, there are 35**4 + 35**3 + 35**2 + 35 + 1 = 1,544,761 different combinations. Daniel@0:
Daniel@0: The following display contains the 36 combinations possible with a single Daniel@0: arrow shape. The node attached to the arrow is not drawn but would appear Daniel@0: on the right side of the edge. Daniel@0:
Daniel@0:
![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
box Daniel@0: | lbox Daniel@0: | rbox Daniel@0: | obox Daniel@0: | olbox Daniel@0: | orbox Daniel@0: |
![]() | ![]() | ![]() | |||
crow Daniel@0: | lcrow Daniel@0: | rcrow Daniel@0: | |||
![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
diamond Daniel@0: | ldiamond Daniel@0: | rdiamond Daniel@0: | odiamond Daniel@0: | oldiamond Daniel@0: | ordiamond Daniel@0: |
![]() | ![]() | ||||
dot Daniel@0: | odot Daniel@0: | ||||
![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
inv Daniel@0: | linv Daniel@0: | rinv Daniel@0: | oinv Daniel@0: | olinv Daniel@0: | orinv Daniel@0: |
![]() | |||||
none Daniel@0: | |||||
![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
normal Daniel@0: | lnormal Daniel@0: | rnormal Daniel@0: | onormal Daniel@0: | olnormal Daniel@0: | ornormal Daniel@0: |
![]() | ![]() | ![]() | |||
tee Daniel@0: | ltee Daniel@0: | rtee Daniel@0: | |||
![]() | ![]() | ![]() | |||
vee Daniel@0: | lvee Daniel@0: | rvee Daniel@0: |