2011-03-20 20 views
5

的顏色在LilyPond的我可以改變一種類型的對象的顏色與線條像更改所有LilyPond的

\override Staff.Clef #'color = #(rgb-color 0.4 0.5 0.6)

我想在同一個(非默認)色一切,但我既沒有找到所有可以着色的對象的列表,也沒有找到一個命令來一次更改所有顏色。有誰可以請我指點嗎?

回答

1

您需要的圖形對象列表位於this page的底部。所以,一個簡單而乏味的方法就是遍歷所有你使用的對象,例如

\override Staff.Clef  #'color = #(rgb-color 0.4 0.5 0.6) 
\override Staff.NoteHead #'color = #(rgb-color 0.4 0.5 0.6) 
\override Staff.Beam  #'color = #(rgb-color 0.4 0.5 0.6) 
\override Staff.Slur  #'color = #(rgb-color 0.4 0.5 0.6) 

有可能是一個更好的方式,但我無法弄清楚。或者,as has been suggested before您可以考慮對Lilypond的輸出進行一些後期處理,根據您可用的工具,這可能會更簡單。

我強烈建議你閱讀了出色的文件,特別是如何瀏覽塔內參考作爲覆蓋的Learning ManualNotation Reference

你也可以從該lilypond-user mailing list更好的答案。

5

LilyPond Snippet Repositorysolution that iterates through the list of objects contained in all-grob-descriptions

#(define (override-color-for-all-grobs color) 
    (lambda (context) 
    (let loop ((x all-grob-descriptions)) 
    (if (not (null? x)) 
    (let ((grob-name (caar x))) 
     (ly:context-pushpop-property context grob-name 'color color) 
     (loop (cdr x))))))) 

% Example of usage: 
\relative c' { 
    \applyContext #(override-color-for-all-grobs (x11-color 'blue)) 
    c4\pp\< d e f 
    \grace { g16[(a g fis]) } g1\ff\! 
} 

注意,這將改變只有當你在適當的上下文中運行它的每一個圖形對象的顏色(Score,我認爲,一般足夠了),所以你如果您處於Voice環境的中間,則可能需要執行以下操作:

\stopStaff 
\context Score 
\applyContext #(override-color-for-all-grobs (x11-color 'blue)) 
\startStaff