[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