Deutschsprachiges LilyPond-Forum

Allgemeine Fragen und Probleme => Fragen und Probleme aller Art => Thema gestartet von: Manuela am Sonntag, 28. Oktober 2018, 19:28

Titel: Einem Grob die gleiche Eigenschaft eines anderen Grobs zuweisen - wie?
Beitrag von: Manuela am Sonntag, 28. Oktober 2018, 19:28
Wenn ich z.B. Text gleich einfärben will wie die Noten, geht das durch Direktzuweisung?

\override TextScript.color = #'NoteHead.color

funktioniert nicht, ich habe verschiedene Varianten mit und ohne Klammern, Hochkomma etc. probiert.
Titel: Antw:Einem Grob die gleiche Eigenschaft eines anderen Grobs zuweisen - wie?
Beitrag von: harm6 am Sonntag, 28. Oktober 2018, 20:16
So direkt wie Du es Dir vorstellst geht es nicht, aber Du kannst folgendes tun:


#(define get-text-script-color-from-note-head
  (lambda (grob)
    (let* ((nc (ly:grob-parent grob X))
           (nhs-array (ly:grob-object nc 'note-heads))
           (nh-ls
             (if (ly:grob-array? nhs-array)
                 (ly:grob-array->list nhs-array)
                 '()))
           ;; what to do with different colors in a chord?
           (nh-props
             (ly:grob-basic-properties (car nh-ls))))
    (assoc-get 'color nh-props))))

{
  \override TextScript.color = #get-text-script-color-from-note-head
  b-"xy"
  \override NoteHead.color = #red
  c'1-"foo"
  \override NoteHead.color = #green
  d'-"bar"
  \override NoteHead.color = #blue
  e'-"buzz"
}


Allerdings wäre das Verfahren für andere grobs als TextScript möglicherweise wieder anders.


Gruß,
  Harm
Titel: Antw:Einem Grob die gleiche Eigenschaft eines anderen Grobs zuweisen - wie?
Beitrag von: Manuela am Sonntag, 28. Oktober 2018, 21:17
Danke Harm.