Next: Block Arrows, Previous: Arrow Attributes, Up: Specifying Arrows [Contents]

#### 9.3.3 Arrow Appearance

There are a number of factors influencing how an arrow appears. In this section we describe the order of precedence among them. See Defining Styles for more information on styles.

1. Attributes specified after the arrow definition always take precedence.
2. If an attribute is not specified after the arrow definition, it takes its value from a refinement style, such as `->` or `=>`. In case of multi-segment arrows, which use multiple types of arrow symbols, such as `a->b=>c` each refinement style is applied in the order the arrow points. Thus in the case of `a->b=>c` any attribute specified in style `=>` takes precedence over the value (if any) specified in `->` for the same attribute. The same order (the order towards the destination end of the arrow) is applied even if the arrow is specified backwards, as `c<=b<-a`. For bidirectional arrows, the order is as written in the input file. Line attributes are special, because they are also recorded and applied to the respective segments. (This is why normally refinement styles only specify line attributes. Specifying the arrowhead could also make sense, but those are not applied to individual segments, but to the whole arrow.)
3. If a line, text or arrowhead attribute is not specified in any of the refinement styles applied it takes its value from the `aline.*`, `atext.*` or `arrow.*` attribute of the source entity, respectively. (For bidirectional arrows, first entity written in the text file.) Since refinement styles usually overwrite the line type, it makes more sense to set e.g., line color in these attributes, if you want to automatically highlight arrows starting from a specific entity.
4. If an attribute is not specified via any of the ways above, it takes its default value from the `arrow` default style. (Chart designs change this to impact all arrows.) This style is guaranteed a value for all attributes, except `text.*`.
5. Finally, unspecified `text.*` attributes take their values from the value set in the `text.*` chart options (used to globally set the font for example) or, if none set, a default font.

Next: Block Arrows, Previous: Arrow Attributes, Up: Specifying Arrows [Contents]