[Top][All Lists]

[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

reply via email to

[Prev in Thread] Current Thread [Next in Thread]