Arrows (and lines) can be defined between any two blocks using arrow symbols. When you specify a block as start or end of an arrow, its center is targeted. Alternatively, you can specify port for the block (if some other place than its center is needed) or a coordinate instead of a block as start and/or endpoint.
If the arrow (or line) starts (or ends) at a block (or at a coordinate having the
same, single block in the specification of both X and Y coordinates) and the
arrow starts from the inside of the block, it is clipped to go only to the perimiter
of the block. This can be turned off by setting the routing.clip_block
attribute
to no
.
Currently the
usual four arrow symbols are supported: ->
for solid line, >
for dotted
line, >>
for dashed line and =>
for double line. They can point backwards
so A->B;
is equivalent to B<-A;
. Bidirectional arrows (<->
, <>
,
<<>>
or <=>
) or simple lines (--
, ..
, ++
or
==
) are also valid.
You can specify multiple blocks and coordinates on both sides of the arrow symbol separated by commas. In this case an arrow is added from each block on the left side to each block on the right side (using the same arrow symbol). This is an easy way to quickly add a lot of arrows.
You can chain arrow definitions, so A->B->C;
is equivalent to A->B; B->C;
.
You can use different arrowheads in a chain and can have more than one block, so
A->B,C<=D;
is equivalent to A->B; A->C; B<=D; C<=D;
.
You can specify attributes for arrows in square brackets after the arrow specification.
Attributes apply to all arrows if you have several blocks, but only for the latest
arrow symbol in a chain. For example, A->B,C [attr1] <=D [attr2];
makes
the first set of attributes to apply to the first two arrows (staring from A
)
and the second set of attributes to the second two arrows (starting from D
).
![]() | ![]() |
Note that if the pedantic
chart option is set to no
(the default) then
any block used to define an arrow will automatically get created if it has not
been defined before.