On Thu, 16 Apr 2026, Jim via ntg-context wrote:
> > Just do everything in lua:
>
> > \starttext
>
> > \startluacode
> > local preamble = [[
> > \definepapersize[ShowAndTypeset]
> > [width=%width%, height=%height%];
> > \setuppapersize[ShowAndTypeSet]
> > ]]
>
> > local options={width="5cm", height="10cm"}
> > local parsed = utilities.templates.replace(preamble, options)
>
> > context.tobuffer("MyPreamble", parsed)
> > \stopluacode
>
> > \typebuffer[MyPreamble]
>
> > \stoptext
>
> Aditya,
>
> too easy! Thanks.
>
> (Is the ';' after "%height%]" really desired here, or did you pull yourself
> away from a Algol/C/C++/Java program to answer this?)
Finger memory :-)
> Aditya presciently anticipated (is that redundant?) Question 3 of
> International Buffer Day, which was going to be
>
> Q3: How to create a buffer from inside a macro?
>
> Given Aditya's answer to Q2, the solution is pretty simple:
>
> \def\makeMyPreamble #1
> {
> \startluacode
> local preamble3 = [[
> \definepapersize[ShowAndTypeset]
> [width=100mm, height=#1]
> \setuppapersize[ShowAndTypeset]
> ]]
> context.tobuffer("MyPreamble", preamble3)
> \stopluacode
> }
This is a bit risky with catcodes. (Quiz: is % inside \startluacode a tex
comment or not?) Better to define a function, say
thirddata.definepreamble(width,height) at lua end and then call
\define[1]\makePreamble{\ctxlua(thirddata.definepreamble("#1","100cm")}
Aditya
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the
Wiki!
maillist : [email protected] /
https://mailman.ntg.nl/mailman3/lists/ntg-context.ntg.nl
webpage : https://www.pragma-ade.nl / https://context.aanhet.net (mirror)
archive : https://github.com/contextgarden/context
wiki : https://wiki.contextgarden.net
___________________________________________________________________________________