lilypond-user
[Top][All Lists]
Advanced

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

Re: Paper variables in scheme function


From: David Kastrup
Subject: Re: Paper variables in scheme function
Date: Fri, 28 Mar 2014 20:44:38 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.4.50 (gnu/linux)

Simon Albrecht <address@hidden> writes:

> Hello,
>
> I'm just creating a style sheet and want to create a scheme function
> which sets the paper margins. However it seems the paper variables
> aren't bound and I don't know why. A simple example would be:
>
> \version "2.19.3"
>
>
> test =
>
> #(define-scheme-function (parser location num) (number?)
>
> #{ \paper {
>
> top-margin = #(* num paper-height)
>
> }
>
> #}
>
> )
>
>
> \test 0.1
>
>
> { c'1 }
>
>
>
> Help is very much appreciated :-)

It is a scoping problem: the scope of # inside of #{ ... #} is that of
the embedding.  Try something like

test =
#(define-scheme-function (parser location num) (number?)
  #{ \paper { top-margin
                 $(* num (module-ref (current-module) 'paper-height)) } #})

\paper { \test 0.9 }


{ c'1 }


I am somewhat irritated that a plain

\test 0.9

does not work just as well.  I thought I had done something to make that
work at one point of time, but apparently not so.

-- 
David Kastrup



reply via email to

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