LilyPond Internals Reference: 3.2.7 axis-group-interface

### 3.2.7 axis-group-interface

An object that groups other layout objects.

#### User settable properties:

> `axes` (list)

>   List of axis numbers. In the case of alignment grobs, this should contain only one number.

> `default-staff-staff-spacing` (list)

>   The settings to use for `staff-staff-spacing` when it is unset, for ungrouped staves and for grouped staves that do not have the relevant `StaffGrouper` property set (`staff-staff-spacing` or `staffgroup-staff-spacing`).

> `max-stretch` (number)

>   The maximum amount that this `VerticalAxisGroup` can be vertically stretched (for example, in order to better fill a page).

> `no-alignment` (boolean)

>   If set, don’t place this grob in a `VerticalAlignment`; rather, place it using its own `Y-offset` callback.

> `nonstaff-nonstaff-spacing` (list)

>   The spacing alist controlling the distance between the current non-staff line and the next non-staff line in the direction of `staff-affinity`, if both are on the same side of the related staff, and `staff-affinity` is either `UP` or `DOWN`. See `staff-staff-spacing` for a description of the alist structure.

> `nonstaff-relatedstaff-spacing` (list)

>   The spacing alist controlling the distance between the current non-staff line and the nearest staff in the direction of `staff-affinity`, if there are no non-staff lines between the two, and `staff-affinity` is either `UP` or `DOWN`. If `staff-affinity` is `CENTER`, then `nonstaff-relatedstaff-spacing` is used for the nearest staves on both sides, even if other non-staff lines appear between the current one and either of the staves. See `staff-staff-spacing` for a description of the alist structure.

> `nonstaff-unrelatedstaff-spacing` (list)

>   The spacing alist controlling the distance between the current non-staff line and the nearest staff in the opposite direction from `staff-affinity`, if there are no other non-staff lines between the two, and `staff-affinity` is either `UP` or `DOWN`. See `staff-staff-spacing` for a description of the alist structure.

> `staff-affinity` (direction)

>   The direction of the staff to use for spacing the current non-staff line. Choices are `UP`, `DOWN`, and `CENTER`. If `CENTER`, the non-staff line will be placed equidistant between the two nearest staves on either side, unless collisions or other spacing constraints prevent this. Setting `staff-affinity` for a staff causes it to be treated as a non-staff line. Setting `staff-affinity` to `#f` causes a non-staff line to be treated as a staff.

> `staff-staff-spacing` (list)

>   When applied to a staff-group’s `StaffGrouper` grob, this spacing alist controls the distance between consecutive staves within the staff-group. When applied to a staff’s `VerticalAxisGroup` grob, it controls the distance between the staff and the nearest staff below it in the same system, replacing any settings inherited from the `StaffGrouper` grob of the containing staff-group, if there is one. This property remains in effect even when non-staff lines appear between staves. The alist can contain the following keys:

>   - `basic-distance` – the vertical distance, measured in staff-spaces, between the reference points of the two items when no collisions would result, and no stretching or compressing is in effect.
>   - `minimum-distance` – the smallest allowable vertical distance, measured in staff-spaces, between the reference points of the two items, when compressing is in effect.
>   - `padding` – the minimum required amount of unobstructed vertical whitespace between the bounding boxes (or skylines) of the two items, measured in staff-spaces.
>   - `stretchability` – a unitless measure of the dimension’s relative propensity to stretch. If zero, the distance will not stretch (unless collisions would result).
> `vertical-skylines` (pair of skylines)

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

#### Internal properties:

> `adjacent-pure-heights` (pair)

>   A pair of vectors. Used by a `VerticalAxisGroup` to cache the `Y-extent`s of different column ranges.

> `elements` (array of grobs)

>   An array of grobs; the type is depending on the grob where this is set in.

> `pure-relevant-grobs` (array of grobs)

>   All the grobs (items and spanners) that are relevant for finding the `pure-Y-extent`

> `pure-relevant-items` (array of grobs)

>   A subset of elements that are relevant for finding the `pure-Y-extent`.

> `pure-relevant-spanners` (array of grobs)

>   A subset of elements that are relevant for finding the `pure-Y-extent`.

> `pure-Y-common` (graphical (layout) object)

>   A cache of the `common_refpoint_of_array` of the `elements` grob set.

> `staff-grouper` (graphical (layout) object)

>   The staff grouper we belong to.

> `system-Y-offset` (number)

>   The Y-offset (relative to the bottom of the top-margin of the page) of the system to which this staff belongs.

> `X-common` (graphical (layout) object)

>   Common reference point for axis group.

> `Y-common` (graphical (layout) object)

>   See `X-common`.

This grob interface is used in the following graphical object(s): Ambitus, BassFigureAlignment, BassFigureAlignmentPositioning, BassFigureLine, BreakAlignGroup, BreakAlignment, DotColumn, DynamicLineSpanner, NonMusicalPaperColumn, NoteCollision, NoteColumn, PaperColumn, SostenutoPedalLineSpanner, SustainPedalLineSpanner, System, TrillPitchGroup, UnaCordaPedalLineSpanner, VerticalAlignment, VerticalAxisGroup and VoltaBracketSpanner.

#### Internals Reference