lilypond-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: use variable in \markup \override


From: David Kastrup
Subject: Re: use variable in \markup \override
Date: Wed, 16 Oct 2013 16:03:31 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux)

Mark Knoop <address@hidden> writes:

> Is there any way to use a variable in a \markup \override?

That has nothing to do with LilyPond, but rather with Scheme.

> gap = 5
> bskip = #'(baseline-skip . 5)

' means: don't evaluate the following expression.  When expressions are
evaluated, lists and symbols are converted into function calls and
variable references, respectively.

An override always consists of a symbol and a value.  5 is a
"self-evaluating constant": there is no difference between '5 and 5 at
all.

>
> \markup {
>   \override #bskip                   % <--- this does work
>   %\override #'(baseline-skip . gap) % <--- this does not work

The easiest way is to use a backquoted list here:

\override #`(baseline-skip . ,gap)

When you backquote a list, it is quoted as usual _except_ that any comma
expression inside _does_ get evaluated.  Which in this case means
replacing the _symbol_ gap with the value in the _variable_ named gap.

You can also cobble together your (dotted) list manually:

\override #(cons 'baseline-skip gap)

Note that cons is a function for making a "dotted pair".  We need to
quote the symbol baseline-skip to keep Scheme from trying to look at the
value of a variable called baseline-skip.  We don't quote gap since here
we _do_ want the variable value instead of a symbol gap.

-- 
David Kastrup




reply via email to

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