6

Lilypond では、1 つのタイプのオブジェクトの色を次のような線で変更できます

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

すべてを同じ (デフォルト以外の) 色にしたいのですが、色付けできるすべてのオブジェクトのリストも、すべての色を一度に変更するコマンドも見つかりませんでした。誰か私にどちらかを教えてもらえますか?

4

2 に答える 2

8

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
于 2012-09-10T17:28:32.287 に答える
2

必要なグラフィカル オブジェクトのリストは、このページの下部にあります。したがって、退屈ではありますが単純なアプローチは、使用するすべてのオブジェクトを反復処理することです。

\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 ManualNotation Referenceでカバーされている Internals Reference のナビゲート方法を読むことを強くお勧めします

また、 lilypond-user メーリング リストからより良い回答を得ることができます。

于 2011-11-08T12:07:06.587 に答える