Hi again,
I have the problem that I (seem to) have to "merge" an unknown number of
\layout {} blocks.
I create several such block independently in different included files
(e.g. one for part generation and one global for the edition project as
a whole). And as everthing is working within one Scheme function and the
actual engraving is done with ly:book-process I can't write the \layout
blocks as top-level expressions.
I thought I'm clever and use the #@ construct to output them as a list
but (of course) this results in *two* layout blocks being present in the
\score block - and consequently the score being printed twice.
I think the attached example is a correct reduction of my actual set-up
to a MWE.
AFAICS I need one out of two solutions:
* "merging" several \layout {} blocks so there is only one left in the
\score block
* somehow apply \layout blocks independently as top-level expressions,
but from within a Scheme function.
Any ideas?
Best
Urs
\version "2.19.47"
engrave =
#(define-void-function ()()
(let*
; Create two layout definitions, independently from each other
((layoutOne
#{
\layout {
\context {
\Staff {
\override TimeSignature.color = #blue
}
}
}
#})
(layoutTwo
#{
\layout {
\context {
\Voice {
\override NoteHead.color = #red
}
}
}
#})
(layouts (list layoutOne layoutTwo)))
(ly:book-process
#{
\book {
\score {
\new Staff { c' }
% \layout {}
#@layouts
}
}
#}
#{ \paper {} #} ; non-functional, placeholder
#{ \layout {} #} ; non-functional, placeholder
(ly:parser-output-name))))
\engrave
_______________________________________________
lilypond-user mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/lilypond-user