[NTG-context] Getting dimensions in Lua

Hans Hagen j.hagen at xs4all.nl
Mon Jan 18 10:45:23 CET 2021


On 1/18/2021 1:58 AM, Jairo A. del Rio wrote:
> Hi, list.
> 
> I want to get some dimensions in Lua. See, for instance
> 
> \starttext
> 
> \the\dimexpr\availablehsize\relax %say, 426pt
> 
> \stoptext
> 
> Is there an equivalent in ConTeXt for Lua, i.e. without passing values 
> from TeX or, at least, using only Lua commands? Thank you in advance.
tex being tex, there is always a way ...

1: \number\dimexpr\availablehsize\relax

2: \startluacode
 
token.set_macro(tex.ctxcatcodes,"temp","\\scratchdimen\\availablehsize")
     token.expand_macro("temp")
     context(tex.getdimen("scratchdimen"))
\stopluacode

3: \startluacode
 
token.set_macro(tex.ctxcatcodes,"temp","\\scratchdimen\\availablehsize")
     tex.runlocal("temp")
     context(tex.getdimen("scratchdimen"))
\stopluacode

4: \startluacode
     tex.print("\\scratchdimen\\availablehsize")
     tex.pushlocal()
     tex.poplocal()
     context(tex.getdimen("scratchdimen"))
\stopluacode

5: \startluacode
     tex.print("\\dimensiondef\\temp\\availablehsize")
     tex.pushlocal()
     tex.poplocal()
     context(tex.getdimensionvalue("temp"))
\stopluacode

\def\calculateavailablehsize{\dimensiondef\temp\availablehsize}

6: \startluacode
     token.expand_macro("calculateavailablehsize")
     context(tex.getdimensionvalue("temp"))
\stopluacode

\newtoks\tcalculateavailablehsize 
\tcalculateavailablehsize{\dimensiondef\temp\availablehsize}

7: \startluacode -- mkiv
     tex.runtoks("tcalculateavailablehsize")
     context(tex.getdimensionvalue("temp"))
\stopluacode

i'm (still) considering a way to flag a macro to be an expression (or 
value) but there are several variants possible but normally it takes a 
while before i decide what makes most sense (as i need to apply it in 
real code to see if it looks nice)

Hans

-----------------------------------------------------------------
                                           Hans Hagen | PRAGMA ADE
               Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
        tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl
-----------------------------------------------------------------


More information about the ntg-context mailing list