Deutschsprachiges LilyPond-Forum

Allgemeine Fragen und Probleme => Fragen und Probleme aller Art => Thema gestartet von: Hilflos-im-Code am Donnerstag, 5. Dezember 2019, 10:44

Titel: Textspanner verlängern
Beitrag von: Hilflos-im-Code am Donnerstag, 5. Dezember 2019, 10:44
Ich würde gerne exakt das rechte Ende eines Textspanners bestimmen. Finde aber nicht die Option nach:  \override TextSpanner.

Titel: Antw:Textspanner verlängern
Beitrag von: harm6 am Donnerstag, 5. Dezember 2019, 12:17
Hallo,

ich verstehe die Frage nicht so ganz.

Jeder spanner, also auch der TextSpanner, ist "gespannt" zwischen dem linken und dem rechten "bound", line-breaks mal außer Acht lassend, sind das beim TextSpanner für gewöhnlich zwei NoteColumns.
Das rechte Ende des TextSpanners wird also durch die relevante NoteColumn bestimmt.

Irgendwie bezweifle ich, daß Deine Frage damit schon beantwortet ist, wahrscheinlich interessieren Dich mehr die Details am TextSpanner-Ende.
Hier kommen sub-properties von bound-details.right ins Spiel:
- attach-dir bestimmt, ob der TextSpanner (im folgenden TS) am linken Rand, in der Mitte oder am rechten Rand der NoteColumn endet.
  Je nachdem, ob -1, 0 oder 1 gesetzt ist. Per default ist es nicht gesetzt, entspricht dann 0, also NoteColumn-Mitte.
- padding bestimmt (ausgehend von der Position, die durch attach-dir festgelegt wurde) den gewünschten Abstand dazu. Default ist 0.25
Ansonsten kann man die Gesamtlänge des TS noch durch geeignete Setzungen für minimum-length beeinflussen. Um das zu ermöglichen muß man spring-and-rods allerdings auf ly:spanner::set-spacing-rods setzen, sonst hat minimum-length keine Wirkung.

Beispiel:

{
\override TextSpanner.bound-details.left.padding = 0
\override TextSpanner.bound-details.left.attach-dir = 0
\override TextSpanner.bound-details.right.padding = 0
\override TextSpanner.bound-details.right.attach-dir = 0
%\override TextSpanner.springs-and-rods = #ly:spanner::set-spacing-rods
%\override TextSpanner.minimum-length = 40

b4\startTextSpan
4 4 4 4 4
2\stopTextSpan
}


Im Beispiel ist alles genullt. Das bequemste ist jetzt bei
\override TextSpanner.bound-details.right.padding = 0
die Null durch eher zusagende Werte zu ersetzen.
Man kann zwar auch attach-dir auf andere Werte setzen, da rate ich aber von ab.


Möglicherweise interessiert Dich aber ja stattdessen der absolute numerische Wert für das rechte Ende eines TS:

{
\override TextSpanner.after-line-breaking =
#(lambda (grob)
  (pretty-print
    (assoc-get 'X (ly:grob-property grob 'right-bound-info))))

b4\startTextSpan
4 4 4 4 4
2\stopTextSpan
}

Im terminal siehst Du dann: 37.1708929093184


HTH,
  Harm
Titel: Antw:Textspanner verlängern
Beitrag von: Hilflos-im-Code am Montag, 9. Dezember 2019, 11:18
\override TextSpanner.bound-details.right.attach-dir

war es gewesen.

Es ging eigentlich darum, dass in der Vorlage der Textspanner eher bis zum Taktstrich als bis zur letzten Note im Takt ging.