Vector Attributes
-----------------

Several modifiers may be appended to the vector-producing options to
specify the placement of vector heads, their shapes, and the
justification of the vector. Below, left and right refers to the
side of the vector line when viewed from the start point to the
end point of the segment:

    **+a**\ *angle* sets the angle of the vector head apex [30].

    **+b** places a vector head at the beginning of the vector path [none].
    Optionally, append **t** for a terminal line, **c** for a circle,
    **a** for arrow [Default], **i** for tail, **A** for plain arrow,
    and **I** for plain tail.
    Further append **l**\ \|\ **r** to only draw the left or right
    side of this head [both sides].

    **+e** places a vector head at the end of the vector path [none].
    Optionally, append **t** for a terminal line, **c** for a circle,
    **a** for arrow [Default], **i** for tail, **A** for plain arrow,
    and **I** for plain tail.
    Further append **l**\ \|\ **r** to only draw the left or right
    side of this head [both sides].

    **+g**-\ \|\ *fill* turns off vector head fill (if -) or sets the vector
    head fill [Default fill is used, which may be no fill].

    **+h**\ *shape* sets the shape of the vector head (range -2/2). Default
    is controlled by :ref:`MAP_VECTOR_SHAPE <MAP_VECTOR_SHAPE>` [0].
 
    **+l** draws half-arrows, using only the left side of specified heads [both sides].

    **+m** places a vector head at the mid-point the vector path [none].
    Append **f** or **r** for forward or reverse direction of the vector [forward].
    Optionally, append **t** for a terminal line, **c** for a circle, or
    **a** for arrow head [Default].
    Further append **l**\|\ **r** to only draw the left or right
    side of this head [both sides].  Cannot be combined with **+b** or **+e**.

    **+n**\ *norm* scales down vector attributes (pen thickness, head size)
    with decreasing length, where vectors shorter than *norm* will have
    their attributes scaled by length/\ *norm* [arrow attributes remains
    invariant to length].

    **+o**\ *plon*\ /\ *plat* specifies the oblique pole for the great or
    small circles.  Only needed for great circles if **+q** is given.

    **+p**\ [-][*pen*] sets the vector pen attributes. If *pen* has a
    leading - then the head outline is not drawn. [Default pen is used, and
    head outline is drawn]

    **+q** means the input *angle*, *length* data instead represent the *start* and *stop*
    opening angles of the arc segment relative to the given point.

    **+r** draws half-arrows, using only the right side of specified heads [both sides].

    **+t**\ [**b**\ \|\ **e**]\ *trim* will shift the beginning or end point (or both)
    along the vector segment by the given *trim*; append suitable unit. If the modifiers
    **b**\ \|\ **e** are not used then *trim* may be two values separated by a slash,
    which is used to specify different trims for the two ends.  Positive trims
    will shorted the vector while negative trims will lengthen it [no trim].

In addition, all but circular vectors may take these modifiers:

    **+j**\ *just* determines how the input *x*,\ *y* point relates to the
    vector. Choose from **b**\ eginning [default], **e**\ nd, or **c**\ enter.

    **+s** means the input *angle*, *length* are instead the *x*, *y*
    coordinates of the vector end point.

Finally, Cartesian vectors may take these modifiers:

    **+z**\ *scale*\ [*unit*] expects input *dx*,\ *dy* vector components and
    uses the *scale* to convert to polar coordinates with length in given unit.
