LilyPond Internals Reference: 3.2.8 axis-group-interface

### 3.2.8 `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`).

`nonstaff-nonstaff-spacing` (alist, with symbols as keys)

  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` (alist, with symbols as keys)

  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` (alist, with symbols as keys)

  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` (alist, with symbols as keys)

  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).

#### Internal properties:

`adjacent-pure-heights` (pair)

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

`bound-alignment-interfaces` (list)

  Interfaces to be used for positioning elements that align with a column.

`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`, `CenteredBarNumberLineSpanner`, `DotColumn`, `DynamicLineSpanner`, `NonMusicalPaperColumn`, `NoteCollision`, `NoteColumn`, `PaperColumn`, `SostenutoPedalLineSpanner`, `SustainPedalLineSpanner`, `System`, `TrillPitchGroup`, `UnaCordaPedalLineSpanner`, `VerticalAlignment`, `VerticalAxisGroup` and `VoltaBracketSpanner`.

#### LilyPond – Internals Reference v2.24.4 (stable-branch).