B.7 Scheme-Code anstelle von weak verwenden

Der hauptsächliche Nachteil von \tweak ist seine syntaktische Inflexibilität. Folgender Code beispielsweise ergibt einen Syntaxfehler:

F = \tweak #'font-size #-3 -\flageolet

\relative c'' {
  c4^\F c4_\F
}

Anders gesagt verhält sich \tweak nicht wie eine Artikulation und kann auch nicht deren Syntax verwenden: man kann es nicht mit ^ oder _ anfügen.

Durch die Verwendung von Scheme kann dieses Problem umgangen werden. Der Weg zum Resultat wird gezeigt in Artikulationszeichen zu Noten hinzufügen (Beispiel), insbesondere wie \displayMusic benutzt wird, hilft hier weiter.

F = #(let ((m (make-music 'ArticulationEvent
                          'articulation-type "flageolet")))
       (set! (ly:music-property m 'tweaks)
             (acons 'font-size -3
                    (ly:music-property m 'tweaks)))
       m)

\relative c'' {
  c4^\F c4_\F
}

In diesem Beispiel werden die tweaks-Eigenschaften des Flageolet-Objekts m (mit make-music erstellt) werden mit ly:music-property ausgelesen, ein neues Schlüssel-Wert-Paar, um die Schriftgröße zu ändern, wird der Eigenschaftenliste mithilfe der acons-Schemefunktion vorangestellt, und das Resultat wird schließlich mit set! zurückgeschrieben. Das letzte Element des let-Blocks ist der Wiedergabewert, m.


LilyPond – Extending