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