4.4.1 Vertikale Abstände innerhalb eines Systems

Die Höhe jeder Systemgruppe wird in zwei Schritten bestimmt. Zunächst werden alle Systeme anhand des vorhandenen Platzes aufgeteilt. Dann werden die nicht-Notensysteme (also Akkorde oder Gesangstext) zwischen den Systemen verteilt.


Abstand zwischen Notensystemen

Abstand zwischen Notensystemen wird durch die Eigenschaft staff-staff-spacing des VerticalAxisGroup-Grobs kontrolliert. Diese Eigenschaft ist eine Aliste mit vier Elementen: Abstand, minimum-distance, Verschiebung und Dehnbarkeit:

#(set-global-staff-size 16)
\new StaffGroup <<
  % Since space is small and there is no minimum-distance, the distance
  % between this staff and the next will be determined by padding.
  \new Staff \with {
    \override VerticalAxisGroup #'staff-staff-spacing =
      #'((space . 1) (padding . 1))
  }
  { \clef bass c, }
  % Since space is small and nothing sticks out very far, the distance
  % between this staff and the next will be determined by minimum-distance.
  \new Staff \with {
    \override VerticalAxisGroup #'staff-staff-spacing =
      #'((space . 1) (minimum-distance . 12))
  }
  { \clef bass c, }
  % By setting padding to a negative value, staves can be made to collide.
  \new Staff \with {
    \override VerticalAxisGroup #'staff-staff-spacing =
      #'((space . 4) (padding . -10))
  }
  { \clef bass c, }
  \new Staff { \clef bass c, }
>>

[image of music]

In Orchester- und großen Partituren werden Systeme normalerweise gruppiert. Der Abstand zwischen den Gruppen ist normalerweise größer als der Abstand zwischen Notensystemen der selben Gruppe. Der Abstand kann mit dem StaffGrouper-Grob beeinflusst werden: Der Standardwert von staff-staff-spacing für VerticalAxisGroup ist eine Callback-Funktion, die nach einem StaffGrouper-Grob sucht, der ein Notensystem enthält. Wenn sie einen StaffGrouper-Grob findet und das hierin enthaltene System ist in der Mitte einer Gruppe, wird der Wert von staff-staff-spacing von StaffGrouper ausgelesen und ausgegeben. Wenn das enthaltene Notensystem das letzte einer Gruppe ist, wird die staffgroup-staff-spacing-Eigenschaft von StaffGrouper ausgelesen und ausgegeben. Wenn kein StaffGrouper-Grob gefunden wird, wird default-staff-staff-spacing aus der jeweiligen VerticalAxisGroup ausgelesen und ausgegeben.

#(set-global-staff-size 16)
<<
  \new PianoStaff \with {
    \override StaffGrouper #'staff-staff-spacing #'space = #1
    \override StaffGrouper #'staff-staff-spacing #'padding = #0
    \override StaffGrouper #'staffgroup-staff-spacing #'space = #20
  }
  <<
    \new Staff c'1
    \new Staff c'1
  >>

  \new StaffGroup \with {
    \override StaffGrouper #'staff-staff-spacing #'space = #1
    \override StaffGrouper #'staff-staff-spacing #'padding = #0
  }
  <<
    \new Staff c'1
    \new Staff c'1
  >>
>>

[image of music]


Abstand von Nicht-Notensystem-Zeilen

Nachdem die Position der Notensysteme bestimmt ist, werden die Nicht-Notensystem-Zeilen zwischen den Notensystemen ausgerichtet. Jede dieser Zeile hat eine staff-affinity-Eigenschaft, mit der ihre vertikale Ausrichtung bestimmt wird. Zum Beispiel erstellt

\new Lyrics \with { \override VerticalAxisGroup #'staff-affinity = #DOWN }

einen Gesangstext-Kontext, der sehr nah an dem sich darunter befindlichen System liegt. Wenn staff-affinity auf einen Wert gesetzt wird, der keine Zahl ist (wie etwa #f), wird die Zeile wie ein Notensystem behandelt. Wenn andererseits staff-affinity für ein Notensystem definiert wird, wird es wie ein Nicht-Notensystem behandelt.

Nicht-Notensystem-Zeilen lassen drei Eigenschaften für ihre Abstandseinstellungen zu. Jede dieser Eigenschaften ist eine Aliste des gleichen Formats wie staff-staff-spacing oben.

#(set-global-staff-size 16)
\layout {
  \context {
    \Lyrics
    % By default, Lyrics are placed close together.  Here, we allow them to
    % be stretched more widely.
    \override VerticalAxisGroup
      #'nonstaff-nonstaff-spacing #'stretchability = #1000
  }
}

\new StaffGroup
<<
  \new Staff \with {
    \override VerticalAxisGroup #'staff-staff-spacing = #'((space . 30)) }
    { c'1 }
  \new Lyrics \with {
    \override VerticalAxisGroup #'staff-affinity = #UP }
    \lyricmode { up }
  \new Lyrics \with {
    \override VerticalAxisGroup #'staff-affinity = #CENTER }
    \lyricmode { center }
  \new Lyrics \with {
    \override VerticalAxisGroup #'staff-affinity = #DOWN }
    \lyricmode { down }
  \new Staff
    { c'1 }
>>

[image of music]

Siehe auch

Schnipsel: Spacing.

Referenz der Interna: VerticalAxisGroup, VerticalAlignment, Axis_group_engraver.

Bekannte Probleme und Warnungen

Aufeinanderfolgende Nicht-Notensystem-Zeilen sollten nicht-ansteigende staff-affinity-Werte von oben nach unten. Das Verhalten von beispielsweise

<<
  \new Staff c
  \new Lyrics \with { \override VerticalAxisGroup #'staff-affinity = #DOWN }
  \new Lyrics \with { \override VerticalAxisGroup #'staff-affinity = #UP }
  \new Staff c
>>

ist nicht definiert.

Eine Nicht-Notensystem-Zeile unter einem Notensystem sollte staff-affinity als UP definiert haben. Gleichfalls sollte eine Nicht-Notensystem-Zeile über einem System staff-affinity als DOWN definiert haben.


Andere Sprachen: español.

LilyPond – Notationsreferenz