Autor Thema: Textspanner verlängern  (Gelesen 232 mal)

Hilflos-im-Code

  • Full Member
  • ***
  • Beiträge: 178
Textspanner verlängern
« 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.


harm6

  • Hero Member
  • *****
  • Beiträge: 667
Antw:Textspanner verlängern
« Antwort #1 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
« Letzte Änderung: Donnerstag, 5. Dezember 2019, 12:22 von harm6 »

Hilflos-im-Code

  • Full Member
  • ***
  • Beiträge: 178
Antw:Textspanner verlängern
« Antwort #2 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.