Siska Ádám <sa...@sadam.hu> writes: > On 2012.04.03., at 15:46, Thomas Morley wrote: > >> Am 3. April 2012 15:17 schrieb Siska Ádám <sa...@sadam.hu>: >>> Dear List, >>> >>> >>> is there a way to put the layout block for a score in a variable that lives >>> in a separate file? Unfortunately the following won't compile: >>> >>> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% >>> >>> myMusic = \relative d' { >>> d4 d d d >>> } >>> >>> myLayout = \layout { >>> \context { >>> \Staff >>> \remove "Clef_engraver" >>> } >>> } >>> >>> \score { >>> \myMusic >>> \myLayout >>> } >>> >> >> try: >> >> \layout { \myLayout } > > thanks a lot, this works! Out of curiosity, could you or somebody on > the list explain to me why this works?
The LilyPond grammar in the appendices of the NR will show what to use here. > It is a bit weird to me, as I also tried to have the variable without > the \layout in it (so that it was myLayout = \context { etc. } and > then I used \layout { \myLayout } ), but that didn't work either. I'm > just surprised that this solution (which reads at the end \layout { > \layout { etc. } } ) will compile... Variables in LilyPond are not textual entities but Scheme expressions. Some keywords like \layout throw LilyPond into a mode, like one suitable for creating output definitions, or drum parts or whatever. And to interpret such a variable, you sometimes need to be in the right mode already (because the information _what_ kind of output definition is in the variable created by \layout is not there). Basically, when putting stuff into a variable and reusing the result, you are safer off if you consult the grammar when things go wrong. -- David Kastrup _______________________________________________ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user