5.5 Vertikale Abstände

In aller Regel ist die vertikale Platzierung von Objekten durch LilyPond ziemlich gut. Schauen wir uns das an einem einfachen Lied mit zwei Stimmen und Klavierbegleitung etwas näher an:

[image of music]

An der vertikalen Platzierung ist nichts auszusetzen. Nehmen wir aber einmal an, wir arbeiten mit einem Verleger zusammen, der spezielle Wünsche bzgl. des Abstands von Systemen und Text hat: Der Text soll weit weg von allen Noten und die Klavierbegleitung soll weit weg von den Gesangslinien. Schließlich soll das Klaviersystem noch etwas enger zusammen geschoben werden. Fangen wir mit dem Liedtext an.

Gesangstext wird innerhalb eines Systems platziert. Daher finden sich die Befehle zu seiner Platzierung in Flexible vertikale Abstände in Systemgruppen. Dort erfahren wir, das Gesangstext vom Typ non-staff lines ist und wir daher die Eigenschaft nonstaff anpassen müssen. Den Text weiter weg vom darüber liegenden System zu schieben verwendet die relatedstaff-Eigenschaft. Für den Abstand nach unten greifen wir auf die unrelatedstaff-Eigenschaft zurück. Gesangsstimmen gehören zu einer VerticalAxisGroup, also setzen wir deren Eigenschaften. Mal sehen, wie das klappt.

<<
  \new ChoirStaff
  <<
    \new Staff {
      \new Voice = "music" {
        b'2 c' c' c'
      }
    }
    \new Lyrics \with {
      \override VerticalAxisGroup.
        nonstaff-relatedstaff-spacing.padding = #5
      \override VerticalAxisGroup.
        nonstaff-unrelatedstaff-spacing.padding = #5
    }
    \lyricsto "music" {
      Here are some lyrics
    }
    \new Staff {
      \clef bass e'2 f e c
    }
  >>
  \new PianoStaff
  <<
    \new Staff {
      g''2 c'' c'' a''
    }
    \new Staff {
      \clef bass e2 f c e
    }
  >>
>>

[image of music]

Nun ja, es klappt. Aber vielleicht war das doch des Guten zu viel. Wenn wir padding auf 5 setzen, dann fügt LilyPond 5 System Abstände zum Abstand zwischen den Objekten hinzu, was im vorliegenden Fall eindeutig zu viel ist. Wir werden 2 verwenden.

Als nächstes verschieben wir die Klavierbegleitung weiter weg von den Gesangsstimmen. Die Gesangsstimmen sind ein ChoirStaff, also werden wir den Abstand zwischen diesem und dem darunter liegenden Klaviersystem vergrößern. Das geschieht indem wir die basic-distance des StaffGrouper’s staffgroup-staff-spacing anpassen.

<<
  \new ChoirStaff \with {
    \override StaffGrouper.
      staffgroup-staff-spacing.basic-distance = #15
  }
  <<
    \new Staff {
      \new Voice = "music" {
        b'2 c' c' c'
      }
    }
    \new Lyrics \with {
      \override VerticalAxisGroup.
        nonstaff-relatedstaff-spacing.padding = #2
      \override VerticalAxisGroup.
        nonstaff-unrelatedstaff-spacing.padding = #2
    }
    \lyricsto "music" {
      Here are some lyrics
    }
    \new Staff {
      \clef bass e'2 f e c
    }
  >>
  \new PianoStaff
  <<
    \new Staff {
      g''2 c'' c'' a''
    }
    \new Staff {
      \clef bass e2 f c e
    }
  >>
>>

[image of music]

Wunderbar. Jetzt kümmern wir uns noch um die letzte Anforderung, die Klaviersysteme enger zusammen zu schieben. Auch hierfür passen wir wieder die Eigenschaften des StaffGrouper an, aber dieses Mal werden wir sowohl die basic-distance als auch das padding reduzieren. Wie genau sehen Sie unten.

<<
  \new ChoirStaff \with {
    \override StaffGrouper.
      staffgroup-staff-spacing.basic-distance = #15
  }
  <<
    \new Staff {
      \new Voice = "music" {
        b'2 c' c' c'
      }
    }
    \new Lyrics \with {
      \override VerticalAxisGroup.
        nonstaff-relatedstaff-spacing.padding = #2
      \override VerticalAxisGroup.
        nonstaff-unrelatedstaff-spacing.padding = #2
    }
    \lyricsto "music" {
      Here are some lyrics
    }
    \new Staff {
      \clef bass e'2 f e c
    }
  >>
  \new PianoStaff \with {
    \override StaffGrouper.staff-staff-spacing = #'(
                            (basic-distance . 0)
                            (padding . 0))
  }
  <<
    \new Staff {
      g''2 c'' c'' a''
    }
    \new Staff {
      \clef bass e2 f c e
    }
  >>
>>

[image of music]

Damit sind die echt eng beieinander – aber das ist es, was der Verleger wollte. Wir könnten sie bei Bedarf wieder ein wenig auseinander schieben, indem wir padding oder basic-distance ändern.

Es gibt viele Arten die vertikalen Abstände zu verändern. Im Grunde brauchen wir uns lediglich zu merken, dass der Abstand zwischen Objekten in einer StaffGroup (wie GrandStaff oder PianoStaff Gruppen) durch die Platzierungsvariablen des StaffGrouper kontrolliert wird. Wohingegen die Abstände von nicht gruppierten Systemen (wie Lyrics und Staff) von den Variablen der VerticalAxisGroup kontrolliert werden. Siehe Vertikale paper-Variablen mit flexiblen Abständen und Flexible vertikale Abstände in Systemgruppen für weitere Details.


LilyPond Handbuch zum Lernen v2.25.22 (development-branch).