Hi, I'm adding back the list in CC. Please always keep it so that everyone can participate.
Le dimanche 07 mai 2023 à 10:45 -0400, dfro a écrit :
>
> Jean,
>
> Thank you, for the fast reply and the clear explanation! Perhaps, this
> insight could be put in the Learning Manual, 2.4.1 Organizing pieces with
> variables; or, somewhere else on using Scheme in
> Lilypond.
>
> If I may also ask about the last example in that section of the manual:
>
>
>
> <code start>
>
> \version "2.24.1"
>
> myWidth = 60 % a number to pass to a \paper variable
> % (the unit is millimeter)
> myName = "Wendy" % a string to pass to a markup
> aFivePaper = \paper { #(set-paper-size "a5") }
>
> \paper {
> \aFivePaper
> line-width = \myWidth
> }
>
> {
> c4^\myName
> }
>
> <code end>
>
>
>
> Why can the # symbol be left off of the myWidth variable and other \paper
> block variables,
Only \markup mode is special. In normal mode, a number is interpreted as a
number. In markup mode, a number is not interpreted specially so that \markup {
42 is the answer } works.
> and why must the aFivePaper variable be enclosed within '\paper { ... }'?
Unlike TeX macros if you are used to that, LilyPond variables don't just
"insert something in the input" at the point they are used. A variable is
variable in the true programming sense. It is
associated with a value (which has a type). In this case, it does not work to do
aFivePaper = #(set-paper-size "a5")
because that calls set-paper-size immediately, not at the point where the
variable is used, but at the point it is defined. This does nothing since
set-paper-size doesn't have an effect outside of a
\paper block. And since set-paper-size doesn't return a meaningful value, which
in Guile means that it returns a dummy value called “*unspecified*”, your
variable aFivePaper just ends up containing
this dummy value.
With \paper, the variable contains a paper block, and LilyPond will merge it
with the outer paper block if you reference the variable inside such a block.
Best,
Jean
signature.asc
Description: This is a digitally signed message part
