To be wikified (by me, obviously). Thank you for such a great number of alternatives.

Jairo :)

El lun, 18 de ene. de 2021 a la(s) 04:45, Hans Hagen (j.hagen@xs4all.nl) escribió:
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
-----------------------------------------------------------------