On 12 Apr 2008 at 9:39, ntg-context-request@ntg.nl wrote:
\startlua mp = mplib.new ( { hash_size = 100000, main_memory = 2000000, param_size = 100000, } )
if mp then res = mp:execute( "beginfig(1) draw (0,0) .. (1,1) .. (2,1); endfig; bye;" ) tex.print("[" .. tostring(res.status) .. "]") mp:finish() end \stoplua
no format, so beginfig, draw etc are unknown
I thought 'plain.mem' is the default. But I see, there exists only 'metafun.mem'. So I wrote: ------------------------------------------------------ mp = mplib.new ( { hash_size = 100000, main_memory = 2000000, param_size = 100000, mem_name = "metafun.mem" } ) ------------------------------------------------------ and it get the same result
metapost.process("metafun","some commands")
may work better
\startlua mp = mplib.new ( { hash_size = 100000, main_memory = 2000000, param_size = 100000 } ) if mp then res = metapost.process("metafun","beginfig(1) draw (0,0) .. (1,1) .. (2,1); endfig; bye;") tex.print("[" .. tostring(res.status) .. "]") mp:finish() end \stoplua ------------------------------------------------------ results in : ------------------------------------------------------ mplib : loading format: metafun.mp, name: d:/context/tex/texmf-cache/luatex- cache/context/c80dc1fd5292ec817c6e82c295beaf1e/formats/cont-en- metafun.mem ! Emergency stop. \@@expanded ..... "]") -- mp:finish() -- end } l.54 \stoplua ! ==> Fatal error occurred, no output PDF file produced! ------------------------------------------------------ why does it load 'metafun.mp'? after that I tried ------------------------------------------------------ \startlua mp = mplib.new ( { hash_size = 100000, main_memory = 2000000, param_size = 100000, mem_name = "metafun.mem" } ) if mp then res = metapost.process(mp, "beginfig(1) draw (0,0) .. (1,1) .. (2,1); endfig; bye;") tex.print("[" .. tostring(res.status) .. "]") mp:finish() end \stoplua ------------------------------------------------------ which gives the following error: ------------------------------------------------------ report >> error: This is MetaPost, Version 1.003 (Cweb version 0.40) I can't find the PLAIN mem file! ------------------------------------------------------ What else should I check to find the error? Wolfgang
Wolfgang Werners-Lucchini wrote:
On 12 Apr 2008 at 9:39, ntg-context-request@ntg.nl wrote:
\startlua mp = mplib.new ( { hash_size = 100000, main_memory = 2000000, param_size = 100000, } )
if mp then res = mp:execute( "beginfig(1) draw (0,0) .. (1,1) .. (2,1); endfig; bye;" ) tex.print("[" .. tostring(res.status) .. "]") mp:finish() end \stoplua no format, so beginfig, draw etc are unknown
I thought 'plain.mem' is the default. But I see, there exists only 'metafun.mem'.
If you want to "do the low-level thing", you have to read the luatex manual carefully. MPlib is just like standalone metapost in that it wants to load a mem file in non-ini mode, and that file has to be generated before being used. Here is what you wanted to do, using just the library core (I did cheat just a little bit though, I added "dump;" at the end of my plain.mp): % start low-level \startlua local function finder(name, mode, ftype) if mode=="w" then return name else return kpse.find_file(name,ftype) end end mp = mplib.new ( { hash_size = 100000, main_memory = 2000000, param_size = 100000, find_file = finder, ini_version = true } ) if mp then res = mp:execute('plain') mp:finish() end mp = mplib.new ( { hash_size = 100000, main_memory = 2000000, param_size = 100000, find_file = finder, } ) if mp then res = mp:execute("\\beginfig(1) draw (0,0) .. (1,1) .. (2,1); endfig; bye;" ) tex.print("[" .. tostring(res.status) .. "]") mp:finish() end \stoplua % stop low-level If you just want to run plain metapost images inside of a context document (instead of metafun), it is much easier to use Hans' high-level API (once again, you need "dump;" at the end of plain.mp): \startlua metapost.process( metapost.format("plain"), "beginfig(0); draw (0,0) .. (1,1) .. (2,1); endfig;") \stoplua This makes sure that all memory values are the same, that the mem file is cached inbetween runs, removes the need for "\\" and "bye;" etc. Best wishes, Taco
participants (2)
-
Taco Hoekwater
-
Wolfgang Werners-Lucchini