On Wed, Feb 07, 2018 at 06:39:53PM +0100, Bahr Rudolf wrote: > > Hello Contexteers! > > Sometimes the necessity could arise to send data from lua to context > and answers back to lua. I tried this by using "read" and > "immediate\write" commands in context. These commands are described > in chapter 21 and 22 of Donald E. Knuth's "The TeXbook". > > My question is: Do there exist better and more simple solutions? > Here is my WE which is admittedly a little bit ugly, but it works. > Appended the pdf-output: > > ======================================================================== > \starttext > > \startluacode > > tex.print("Here is lua.") > tex.print(" ") > tex.print("I'm sending some picture names to Context in order to get back > their sizes.") > > local imageA = "2007-01-01---Intro.png" > local imageB = "2007-01-01---Neujahrsballade---1.png" > local imageC = "2007-01-01---Neujahrsballade---2.png" > > local f = assert(io.open("contextin.txt", "w")) > f:write(imageA .. "\n" .. imageB .. "\n" .. imageC) > f:close() > > \stopluacode > > % ------------------------------------------------------------- > > \openin15=contextin.txt > > \read15 to \zeileA > \read15 to \zeileB > \read15 to \zeileC > > \closein15 > > \vskip\lineheight > ===================================================== > \vskip\lineheight > Here is \CONTEXT\ and what I got from Lua: > \vskip\lineheight > > \zeileA \\ > \zeileB \\ > \zeileC > > \vskip\lineheight > Now I'm working ... and write my answers to a file for lua: \\ > > \zeileA\ width=3000pt height=2000pt \\ > \zeileB\ width=1200pt height=900pt \\ > \zeileC\ width=1600pt height=1200pt \\ > > \immediate\openout7=contextout.txt > > \immediate\write7{\zeileA\ width=3000pt height=2000pt \\} > \immediate\write7{\zeileB\ width=1200pt height=900pt \\} > \immediate\write7{\zeileC\ width=1600pt height=1200pt \\} > > \immediate\closeout7 > > \vskip\lineheight > ===================================================== > \vskip\lineheight > > % ------------------------------------------------------------- > > \startluacode > > tex.print("Here is lua again and what I got back from Context:") > tex.print(" ") > tex.print(" ") > > local f = assert(io.open("contextout.txt", "r")) > local contexts_answer = f:read("*a") > f:close() > > tex.print(contexts_answer) > > \stopluacode > > > \stoptext > > ======================================================================== > > Best regards, > > Rudolf >
Sorry, Donald E. Knuth's macros aren't in chapters 21 and 22, but in chapters 20 and 21! Rudolf ___________________________________________________________________________________ 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 ___________________________________________________________________________________