LilyPond Internals Reference: 3.1.103 Slur

### 3.1.103 Slur

Slur objects are created by: Slur_engraver.

Standard settings:

> `avoid-slur` (symbol):

>   `'inside`

>   Method of handling slur collisions. Choices are `inside`, `outside`, `around`, and `ignore`. `inside` adjusts the slur if needed to keep the grob inside the slur. `outside` moves the grob vertically to the outside of the slur. `around` moves the grob vertically to the outside of the slur only if there is a collision. `ignore` does not move either. In grobs whose notational significance depends on vertical position (such as accidentals, clefs, etc.), `outside` and `around` behave like `ignore`.

> `control-points` (list of number pairs):

>   `ly:slur::calc-control-points`

>   List of offsets (number pairs) that form control points for the tie, slur, or bracket shape. For Béziers, this should list the control points of a third-order Bézier curve.

> `details` (list):

>       '((region-size . 4)
>         (head-encompass-penalty . 1000.0)
>         (stem-encompass-penalty . 30.0)
>         (edge-attraction-factor . 4)
>         (same-slope-penalty . 20)
>         (steeper-slope-factor . 50)
>         (non-horizontal-penalty . 15)
>         (max-slope . 1.1)
>         (max-slope-factor . 10)
>         (free-head-distance . 0.3)
>         (free-slur-distance . 0.8)
>         (gap-to-staffline-inside . 0.2)
>         (gap-to-staffline-outside . 0.1)
>         (extra-object-collision-penalty . 50)
>         (accidental-collision . 3)
>         (extra-encompass-free-distance . 0.3)
>         (extra-encompass-collision-distance . 0.8)
>         (head-slur-distance-max-ratio . 3)
>         (head-slur-distance-factor . 10)
>         (absolute-closeness-measure . 0.3)
>         (edge-slope-exponent . 1.7)
>         (close-to-edge-length . 2.5)
>         (encompass-object-range-overshoot . 0.5)
>         (slur-tie-extrema-min-distance . 0.2)
>         (slur-tie-extrema-min-distance-penalty . 2))

>   Alist of parameters for detailed grob behavior. More information on the allowed parameters for a grob can be found by looking at the top of the Internals Reference page for each interface having a `details` property.

> `direction` (direction):

>   `ly:slur::calc-direction`

>   If `side-axis` is `0` (or `X`), then this property determines whether the object is placed `LEFT`, `CENTER` or `RIGHT` with respect to the other object. Otherwise, it determines whether the object is placed `UP`, `CENTER` or `DOWN`. Numerical values may also be used: `UP`=`1`, `DOWN`=`-1`, `LEFT`=`-1`, `RIGHT`=`1`, `CENTER`=`0`.

> `height-limit` (dimension, in staff space):

>   `2.0`

>   Maximum slur height: The longer the slur, the closer it is to this height.

> `line-thickness` (number):

>   `0.8`

>   For slurs and ties, this is the diameter of the virtual “pen” that draws the two arcs of the curve’s outline, which intersect at the endpoints. This property is expressed as a multiple of the current staff-line thickness (i.e. the visual output is influenced by changes to `Staff.StaffSymbol.thickness`).

> `minimum-length` (dimension, in staff space):

>   `1.5`

>   Try to make a spanner at least this long, normally in the horizontal direction. This requires an appropriate callback for the `springs-and-rods` property. If added to a `Tie`, this sets the minimum distance between noteheads.

> `ratio` (number):

>   `0.25`

>   Parameter for slur shape. The higher this number, the quicker the slur attains its `height-limit`.

> `springs-and-rods` (boolean):

>   `ly:spanner::set-spacing-rods`

>   Dummy variable for triggering spacing routines.

> `stencil` (stencil):

>   `ly:slur::print`

>   The symbol to print.

> `thickness` (number):

>   `1.2`

>   For grobs made up of lines, this is the thickness of the line. For slurs and ties, this is the distance between the two arcs of the curve’s outline at its thickest point, not counting the diameter of the virtual “pen” that draws the arcs. This property is expressed as a multiple of the current staff-line thickness (i.e. the visual output is influenced by changes to `Staff.StaffSymbol.thickness`).

> `vertical-skylines` (pair of skylines):

>   `#<unpure-pure-container #<primitive-procedure ly:slur::vertical-skylines> #<primitive-procedure ly:grob::pure-simple-vertical-skylines-from-extents> >`

>   Two skylines, one above and one below this grob.

> `Y-extent` (pair of numbers):

>   `#<unpure-pure-container #<primitive-procedure ly:slur::height> #<primitive-procedure ly:slur::pure-height> >`

>   Extent (size) in the Y direction, measured in staff-space units, relative to object’s reference point.

This object supports the following interface(s): grob-interface, outside-staff-interface, slur-interface and spanner-interface.

#### Internals Reference v2.22.2 (stable-branch).