[NTG-context] Howto use the lua io.read() function only in the first context run?

Hans Hagen pragma at wxs.nl
Thu Mar 17 13:41:00 CET 2016


On 3/16/2016 10:47 PM, Romain Diss wrote:
> Hi,
>
> Le 15/03/2016, Hans Hagen a écrit
>> On 3/15/2016 9:04 PM, Romain Diss wrote:
>>> I want to write a cld document with some data read on the standard
>>> input. I'm using the lua io.read() function but it's launched at every
>>> context passes (depending on the case, it is launched 2 to 3 times).
>>>
>>> -- Minimum not working example
>>> local name = io.read()
>>> context.startdocument()
>>> context("Hello " .. name)
>>> context.stopdocument()
>>
>> you can test for environment.arguments.currentrun being "1"

btw, there's also

    if tex.systemmodes["first"] then

> Thank you Hans... but it doesn't fully work. Now I only enter the input
> once (that's ok) but on the second run, the variable is not defined
> anymore. How can I keep it in the conTeXt memory?
>
> -- Minimum still not working example
> local name
> if environment.arguments.currentrun == "1" then io.read() end
> context.startdocument()
> context("Hello " .. name)
> context.stopdocument()

jobvariables.save("SomeName",value)

jobvariables.restore("SomeName")

beware, this also creates \SomeName

Hans

-----------------------------------------------------------------
                                           Hans Hagen | PRAGMA ADE
               Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
       tel: 038 477 53 69 | www.pragma-ade.com | www.pragma-pod.nl
-----------------------------------------------------------------


More information about the ntg-context mailing list