### 3.1.56 KeyCancellation

KeyCancellation objects are created by: Key_engraver.

Standard settings:

> `break-align-symbol` (symbol):

>   `'key-cancellation`

>   This key is used for aligning and spacing breakable items.

> `break-visibility` (vector):

>   `#(#t #t #f)`

>   A vector of 3 booleans, `#(end-of-line unbroken begin-of-line)`. `#t` means visible, `#f` means killed.

> `extra-spacing-height` (pair of numbers):

>   `pure-from-neighbor-interface::extra-spacing-height-including-staff`

>   In the horizontal spacing problem, we increase the height of each item by this amount (by adding the ‘car’ to the bottom of the item and adding the ‘cdr’ to the top of the item). In order to make a grob infinitely high (to prevent the horizontal spacing problem from placing any other grobs above or below this grob), set this to `(-inf.0 . +inf.0)`.

> `extra-spacing-width` (pair of numbers):

>   `'(0.0 . 1.0)`

>   In the horizontal spacing problem, we pad each item by this amount (by adding the ‘car’ on the left side of the item and adding the ‘cdr’ on the right side of the item). In order to make a grob take up no horizontal space at all, set this to `(+inf.0 . -inf.0)`.

> `flat-positions` (list):

>   `'(2 3 4 2 1 2 1)`

>   Flats in key signatures are placed within the specified ranges of staff-positions. The general form is a list of pairs, with one pair for each type of clef, in order of the staff-position at which each clef places C: `(alto treble tenor soprano baritone mezzosoprano bass)`. If the list contains a single element it applies for all clefs. A single number in place of a pair sets accidentals within the octave ending at that staff-position.

> `glyph-name-alist` (list):

>   `'((0 . accidentals.natural))`

>   An alist of key-string pairs.

> `non-musical` (boolean):

>   `#t`

>   True if the grob belongs to a `NonMusicalPaperColumn`.

> `sharp-positions` (list):

>   `'(4 5 4 2 3 2 3)`

>   Sharps in key signatures are placed within the specified ranges of staff-positions. The general form is a list of pairs, with one pair for each type of clef, in order of the staff-position at which each clef places C: `(alto treble tenor soprano baritone mezzosoprano bass)`. If the list contains a single element it applies for all clefs. A single number in place of a pair sets accidentals within the octave ending at that staff-position.

> `space-alist` (list):

>   `'((time-signature extra-space . 1.25) (staff-bar extra-space . 0.6) (key-signature extra-space . 0.5) (cue-clef extra-space . 0.5) (right-edge extra-space . 0.5) (first-note fixed-space . 2.5))`

>   A table that specifies distances between prefatory items, like clef and time-signature. The format is an alist of spacing tuples: `(break-align-symbol type . distance)`, where type can be the symbols `minimum-space` or `extra-space`.

> `stencil` (stencil):

>   `ly:key-signature-interface::print`

>   The symbol to print.

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

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

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

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

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

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

> `Y-offset` (number):

>   `#<unpure-pure-container #<primitive-procedure ly:staff-symbol-referencer::callback> >`

>   The vertical amount that this object is moved relative to its Y-parent.

This object supports the following interface(s): break-aligned-interface, font-interface, grob-interface, item-interface, key-cancellation-interface, key-signature-interface, pure-from-neighbor-interface and staff-symbol-referencer-interface.

#### Internals Reference v2.18.2 (稳定分支).