Füllinien (LyricExtender) in mehreren Strophen gleich ausrichten

Begonnen von MiBi, Freitag, 4. Dezember 2020, 10:15

« vorheriges - nächstes »

MiBi

Ich nutze LilyPond vor allem für Liedzettel für einstimmigen Gesang mit mehreren Strophen. Ein Schönheitsproblem, das mir dabei immer wieder ins Auge fällt, zeigt folgendes Beispiel:

\new Voice \relative {
  c'4 d e f g a b c~ c1 \bar "|."
} \addlyrics {
  do re mi fa so la ti do __
} \addlyrics {
  Dies ist ein Mi -- ni -- mal -- bei -- spiel. __
}


Es entsteht dieses Bild:



In Notensatzprogrammen werden aber üblicherweise die Füllinien rechts auf gleicher Höhe abgeschnitten:



Gibt es eine Möglichkeit, LilyPond diese Ausrichtung beizubringen? Ich habe schon herausgefunden, dass die Linien intern wohl "LyricExtender" heißen und es einen extra "Extender_engraver" gibt, der sich darum kümmert. Leider bin ich aber nicht so tief drin in LilyPond, um die Ausrichtung über mehrere Textzeilen hinweg anpassen zu können.

Vielen Dank im Voraus für jede Hilfe!

harm6

Hallo MiBi,

willkommen im Forum.

Ganz generell beendet LilyPond die LyricExtender sehr wohl an derselben Stelle, von Ausnahmen abgesehen.

Hier ist es so, daß die Silbe "spiel." der Schriftgröße wegen bereits in den Einzugsbereich der angebundenen Ganzen gerät.
LyricExtender hat aber ein gesetztes minimum-length-property und da rechts von "spiel." nichts ist was die volle Anwendung der minimum-length verhindert wird das so auch gemacht.
In der ersten Textzeile mit "do" ist die minimum-length aber sowieso bereits erfüllt, sodaß dort nicht noch darüberhinaus verlängert wird. Mit dem Ergebnis, daß beide LyricExtender unterschiedlich enden.

Soweit die Analyse.
Es gibt zwei Möglichkeiten hier ein konsistentes Ergebnis zu bekommen.
(1) Setz die Schriftgröße herunter, das ist ja auch bei Deinem zweiten Bild so.
(2) Verringere die minimum-length


\layout {
  %\override Lyrics.LyricText.font-size = #-2
  \override Lyrics.LyricExtender.minimum-length = 0.5
}
\new Voice \relative {
  c'4 d e f g a b c~ c1 \bar "|."
} \addlyrics {
  do re mi fa so la ti do __
} \addlyrics {
  Dies ist ein Mi -- ni -- mal -- bei -- spiel. __
}


Eventuell könnte man eine Funktion, wahrscheinlch aber eher einen engraver schreiben, der die LyricExtender sammelt und die jeweils zu kurzen verlängert.
Ich glaube aber, daß Schriftgröße/minimum-length der bessere Ansatz ist, auch habe ich keine Zeit einen solchen engraver zu schreiben...

HTH,
  Harm