[NTG-context] Typing within doifmode leads to error

Hans Hagen j.hagen at xs4all.nl
Sun Mar 21 02:43:42 CET 2021


On 3/20/2021 10:03 PM, Aditya Mahajan wrote:
> On Sat, 20 Mar 2021, Hans Hagen wrote:
> 
>>>
>>> I wonder if we could have an environment, say \startluatemplate ...
>>> \stopluatemplate, which is evaluated on the fly rather than when loading a
>>> file.
>>
>> define 'evaluated on the fly'
> 
> Consider the following example:
> 
> \enablemode[A]
> \starttext
> \startluatemplate
>    <?lua if tex.modes["A"] and not tex.modes["B"] then ?>
>    \starttyping
>    A and not B
>    \stoptyping
>    <?lua else ?>
>    \starttyping
>    not (A and not B)
>    \stoptyping
>    <?lua end ?>
> \stopluatemplate
> \stoptext
> 
> What I am thinking is that \startluatemplate ... \stopluatemplate grabs the content (like a buffer) and then processes it using the mkix conversion mechanism. Thus, in terms of output, it should be equivalent to:
> 
> \enablemode[A]
> \starttext
> \startbuffer[luatemplate]
>    <?lua if tex.modes["A"] and not tex.modes["B"] then ?>
>    \starttyping
>    A and not B
>    \stoptyping
>    <?lua else ?>
>    \starttyping
>    not (A and not B)
>    \stoptyping
>    <?lua end ?>
> \stopbuffer
> \savebuffer[file={\jobname-luatemplate.mkix}, list={luatemplate}]
> \input \jobname-luatemplate.mkix
> \stoptext
> 
> but without the need to save to an external file.
this is just for the mode right? in that case we can also can provide

<?lua tex.enablemode("A") ?>

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


More information about the ntg-context mailing list