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