[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Making a \layout definition in Scheme
From: |
David Kastrup |
Subject: |
Re: Making a \layout definition in Scheme |
Date: |
Wed, 04 Apr 2018 19:25:45 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) |
Urs Liska <address@hidden> writes:
> OK, but now I have a follow-up question which is quite similar to my
> other post from today (and I'm afraid the answer is similarly
> embarrassing):
>
> I managed to install an editionID to a specific movement's score with
> this code:
>
> (ly:score-add-output-def! score
> #{
> \layout {
> \context {
> \Score
> #(editionID #f movement-path)
> }
> }
> #})
>
> which actually works when I use that "movement-path" variable to
> address in \editionMod later.
>
> However, I would like to be able to also write this without the
> permanent switches,
Permanent switches? Huh?
> i.e. in pure Scheme syntax.
Why? Seriously.
> But unlike \key I can't simply "call" layout.
>
> My impression (after looking at the Scheme functions reference page
> and a number of source files) is that I could use (ly:make-output-def)
> to create the output definition and then use
> ly:output-def-set-variable! to achieve the goal.
An output definition created from scratch will be neither layout
definition, midi definition, nor paper block. You are better off
copying an existing template. Which is what #{ \layout ... #} does
($defaultlayout or something like that).
> But after trying out a number of things I must admit I don't get to an
> end with it.
>
> So again I have to hope for any hint ...
If you want to replace the parser with your own Scheme code, your best
bet is to look in lily/parser.yy and check what the actual parser code
does. There is no user-level documentation for rewriting any LilyPond
code in Scheme. Because it would be sort-of pointless given the
user-level #{ ... #} construct.
--
David Kastrup