Re: [NTG-context] Getting dimensions in Lua

2021-01-18 Thread Jairo A. del Rio
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.ha...@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
> -
>
___
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
___


Re: [NTG-context] Getting dimensions in Lua

2021-01-18 Thread Jairo A. del Rio
Woah, nice! I was trying to pass some values to MetaPost via Lua (usual
laziness to learn macro languages). Thank you a lot, especially because I
was looking at the wrong functions in the token namespace. I'll upload a
more specific example soon while I polish some code. Very thankful.

Jairo :)

El lun, 18 de ene. de 2021 a la(s) 05:02, Taco Hoekwater (t...@bittext.nl)
escribió:

>
>
> > On 18 Jan 2021, at 10:45, Hans Hagen  wrote:
> >
> > 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 ...
>
> There is also this option:
>
>% function returns scaled points
>\startluacode
>function availablehsize()
>   local l = tex.dimen.hsize - tex.skip.leftskip.width -
> tex.skip.rightskip.width
>   if tex.count.hangafter<0 then
>  local h = tex.dimen.hangindent
>  if h>0 then  l = l - h else l = l + h end
>   end
>   return l
>end
>\stopluacode
>
> But I suspect that there are multiple cases where this does not work
> (like when used in horizontal mode, for example if the par setting changes
> before the \par is seen, or when there is data in the local par node)
>
> Best wishes,
> Taco
>
> —
> Taco Hoekwater  E: t...@bittext.nl
> genderfluid (all pronouns)
>
>
>
>
>
>
>
>
___
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
___


Re: [NTG-context] Getting dimensions in Lua

2021-01-18 Thread Taco Hoekwater


> On 18 Jan 2021, at 10:45, Hans Hagen  wrote:
> 
> 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 ...

There is also this option:

   % function returns scaled points
   \startluacode
   function availablehsize() 
  local l = tex.dimen.hsize - tex.skip.leftskip.width - 
tex.skip.rightskip.width
  if tex.count.hangafter<0 then
 local h = tex.dimen.hangindent
 if h>0 then  l = l - h else l = l + h end
  end
  return l 
   end
   \stopluacode

But I suspect that there are multiple cases where this does not work
(like when used in horizontal mode, for example if the par setting changes 
before the \par is seen, or when there is data in the local par node)

Best wishes,
Taco

— 
Taco Hoekwater  E: t...@bittext.nl
genderfluid (all pronouns)







___
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
___


Re: [NTG-context] Getting dimensions in Lua

2021-01-18 Thread Hans Hagen

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
___


[NTG-context] Getting dimensions in Lua

2021-01-17 Thread Jairo A. del Rio
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.

Best wishes,

Jairo
___
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
___