\markup-Variable und \parenthesize

Begonnen von Hilflos-im-Code, Dienstag, 29. Mai 2018, 10:33

« vorheriges - nächstes »

Hilflos-im-Code

\version "2.19.81"

A = "Hosenmatz"

{  c   \parenthesize ^\"A" }


Gibt es für diesen Fall eine Syntax mit \parenthesize, sodass \parenthesize eine Klammer um "Hosenmatz" schreibt?

harm6

Hallo,

ich bin ein wenig erstaunt, daß diese Frage bislang nicht eine einzige Anwort bekommen hat.

Wie dem auch sei, ich hol mal ein wenig weiter aus.

(1)
Für die Eingabe { c-"Hosenmatz" } wird (unter anderem) ein TextScript-grob erschaffen, das TextScript.text-property bekommt den Wert "Hosenmatz".

(2)
Für die Eingabe \parenthesize gibt es in LilyPond zwei Möglichkeiten.
a)
\parenthesize ist eine Musikfunktion welche das music-property 'parenthesize auf #t setzt. Damit wird die Erschaffung eines ParenthesesItem-grobs angestoßen. Die Eigenschaften dieses ParenthesesItem-grobs leiten sich hauptsächlich aus den eigenen grob-properties ab, nicht aus den Eigenschaften, des objekts welches eingeklammert werden soll !!
b)
\parenthesize ist auch ein markup-command. Dieses klammert sein Argument ein indem es einen neuen stencil erschafft, bestehend aus der linken Klammer, dem einzuklammernden Objekt und der rechten Klammer. Die Eigenschaften der eigentlichen Klammern leiten sich ab aus den properties für das \parenthesize-markup und den Eigenschaften des einzuklammernden Objekts.

Ob die music-function oder das markup-command ausgewählt wird, hängt davon ab in welcher Umgebung es eingegeben ist. Innerhalb von \markup immer das markup-command, innerhalb eines musikalischen Ausdrucks immer die music-function.

Zurück zum anfänglichen Beispiel:

Um das TextScript-grob einzuklammern (welches ein post-event ist), muß \parenthesize in die Liste von post-events eingereiht werden. Es muß also eines der Zeichen _^- vorangestellt werden:
{ c-\parenthesize-"Hosenmatz" }
Man stellt dann fest, daß die Klammern viel zu klein sind. Default-font-size fürs ParenthesesItem ist -6. Man muß es also vergößern, führt zu:
{  c-\tweak ParenthesesItem.font-size #0 -\parenthesize -"Hosenmatz" }
Das Ergebnis ist mit dieser Methode jetzt zwar ansehnlich geworden aber umständlich zu erreichen.

Besser ist es nicht das TextScript-grob selbst einzuklammern, sondern den eigentlichen text dieses grobs. Führt zu:
{ c-\markup \parenthesize "Hosenmatz" }
oder näher am ursprünglichen Beispiel-Code
A = "Hosenmatz"
{ c^\markup \parenthesize \A }


HTH,
  Harm