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