Lilypond では、1 つのタイプのオブジェクトの色を次のような線で変更できます
\override Staff.Clef #'color = #(rgb-color 0.4 0.5 0.6)
すべてを同じ (デフォルト以外の) 色にしたいのですが、色付けできるすべてのオブジェクトのリストも、すべての色を一度に変更するコマンドも見つかりませんでした。誰か私にどちらかを教えてもらえますか?
Lilypond では、1 つのタイプのオブジェクトの色を次のような線で変更できます
\override Staff.Clef #'color = #(rgb-color 0.4 0.5 0.6)
すべてを同じ (デフォルト以外の) 色にしたいのですが、色付けできるすべてのオブジェクトのリストも、すべての色を一度に変更するコマンドも見つかりませんでした。誰か私にどちらかを教えてもらえますか?
LilyPond スニペット リポジトリには、に含まれるオブジェクトのリストを反復処理するソリューションがあり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
必要なグラフィカル オブジェクトのリストは、このページの下部にあります。したがって、退屈ではありますが単純なアプローチは、使用するすべてのオブジェクトを反復処理することです。
\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)
等
もっと良い方法があるかもしれませんが、私はそれを理解できません。または、前に提案したように、Lilypond からの出力に対して何らかの後処理を行うことを検討できます。これは、使用可能なツールによってはより簡単になる場合があります。
優れたドキュメント、特にLearning ManualとNotation Referenceでカバーされている Internals Reference のナビゲート方法を読むことを強くお勧めします
また、 lilypond-user メーリング リストからより良い回答を得ることができます。