[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