Меняем все цвета в Лилипонде - PullRequest
6 голосов
/ 20 марта 2011

В Lilypond я могу изменить цвет объекта одного типа с линией как

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

Мне бы хотелось, чтобы все было одного цвета (не по умолчанию), но я не нашел список всех объектов, которые мог бы закрасить, и не нашел команды для изменения всех цветов одновременно. Кто-нибудь может указать мне, пожалуйста?

Ответы [ 2 ]

7 голосов
/ 10 сентября 2012

Хранилище фрагментов 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
2 голосов
/ 08 ноября 2011

Список нужных вам графических объектов находится внизу этой страницы .Поэтому простым, хотя и утомительным подходом было бы перебирать все те объекты, которые вы используете, например,

\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, что может быть проще в зависимости от доступных инструментов.

Я настоятельно рекомендую вамПрочитайте отличную документацию, в частности, как перемещаться по справочнику внутренних органов, как описано в Учебное пособие и Справочник по обозначениям

Также вы можете получить лучший ответ из список рассылки lilypond-пользователя .

...