[NTG-context] How to properly pass TeX/Lua data to MetaPost/MetaFun?

Jairo A. del Rio jairoadelrio6 at gmail.com
Sun Aug 9 20:03:00 CEST 2020


Oh, thank you a lot, Hans, that's a really cleaner way than mine. One more
question, is there something similar to EmWidth for \textwidth or
\linewidth? Better, a better way to access TeX dimensions? Thank you again.

Jairo :)

El dom., 9 de ago. de 2020 a la(s) 12:46, Hans Hagen (j.hagen at xs4all.nl)
escribió:

> On 8/9/2020 5:39 PM, Jairo A. del Rio wrote:
> > Hi, list! I'm doing the following to scale squares and other stuff in
> > MetaPost/MetaFun. Although the following kinda works (maybe I'm just
> > lucky with this), I want to know how to do a better piece from it. I'm
> > concerned with passing data from Lua and TeX to Metapost and better ways
> > to do it in ConTeXt. Thank you in advance.
> >
> > \starttext
> > My text
> >
> > \startMPinitializations
> > numeric myunit;
> > myunit := \the\dimexpr1em\relax;
> > \stopMPinitializations
> > \startluacode
> >
> > userdata = userdata or {}
> > userdata.dummydata = { {1, 2}, {3, 4} }
> >
> > context.startMPcode()
> >
> > for j=1,#userdata.dummydata do
> > for i=1,#userdata.dummydata[1] do
> > context("draw unitsquare scaled myunit shifted ((%d,%d)*myunit);",
> > userdata.dummydata[i][j], userdata.dummydata[i][j])
> > end
> > end
> >
> > context.stopMPcode()
> >
> > \stopluacode
> > \stoptext
> Something:
>
> \starttext
>
> \startluacode
>
>      userdata = userdata or {}
>      userdata.dummydata = { {1, 2}, {3, 4} }
>
>      function MP.GetI()
>          mp.print(#userdata.dummydata)
>      end
>      function MP.GetJ(i)
>          mp.print(#userdata.dummydata[i])
>      end
>      function MP.GetIJ(i,j)
>          mp.pair(userdata.dummydata[i][j],userdata.dummydata[i][j])
>      end
>
> \stopluacode
>
> \startMPcode
>      numeric myunit ; myunit := EmWidth;
>      for i = 1 upto lua.MP.GetI() :
>          for j = 1 upto lua.MP.GetJ(i) :
>              draw unitsquare scaled myunit shifted (myunit *
> (lua.MP.GetIJ(i,j)));
>          endfor ;
>      endfor ;
> \stopMPcode
>
> \stoptext
>
> There are of course also other ways but this is more educational as start.
>
> 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
> -----------------------------------------------------------------
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.ntg.nl/pipermail/ntg-context/attachments/20200809/9738fd41/attachment.htm>


More information about the ntg-context mailing list