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
-----------------------------------------------------------------
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the 
Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki     : http://contextgarden.net
___________________________________________________________________________________

Reply via email to