[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Score layout in a separate file
From: |
David Kastrup |
Subject: |
Re: Score layout in a separate file |
Date: |
Tue, 03 Apr 2012 16:33:32 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.0.94 (gnu/linux) |
Siska Ádám <address@hidden> writes:
> On 2012.04.03., at 15:46, Thomas Morley wrote:
>
>> Am 3. April 2012 15:17 schrieb Siska Ádám <address@hidden>:
>>> 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