Weird error when using \startformula inside lua
I sometimes define lua functions for showing out worked out calculations. The following minimal example shows that context([[\startformula ... \stopformula]]) fails in LMTX with an error message: tex error > tex error on line 3 in file ./test.tex: Undefined control sequence \undefined MWE: \startluacode thirddata = thirddata or {} local comment = [[ This is a famous formula \startformula a^2 + b^2 = c^2 \stopformula ]] function thirddata.explanation() context(comment) end \stopluacode \starttext \ctxlua{thirddata.explanation()} \stoptext The actual use case is more complicated (where I use templates, so I don't want to convert everything to context.startformula() etc.). The example compiles with MkIV but not LMTX. Any idea what is going on? Thanks, Aditya
On 9/11/2021 5:11 AM, Aditya Mahajan via ntg-context wrote:
I sometimes define lua functions for showing out worked out calculations. The following minimal example shows that
context([[\startformula ... \stopformula]])
fails in LMTX with an error message:
tex error > tex error on line 3 in file ./test.tex: Undefined control sequence \undefined
MWE:
\startluacode thirddata = thirddata or {}
local comment = [[ This is a famous formula \startformula a^2 + b^2 = c^2 \stopformula ]]
function thirddata.explanation() context(comment) end
\stopluacode
\starttext \ctxlua{thirddata.explanation()} \stoptext
The actual use case is more complicated (where I use templates, so I don't want to convert everything to context.startformula() etc.). The example compiles with MkIV but not LMTX.
Any idea what is going on? \enabletrackers[context*]
shows that we have an unprotected \startformula so we need this in strc-mat.mkxl: \permanent\protected\defcsname\e!start\v!formula\endcsname{\strc_formulas_start_formula{}} \permanent\protected\defcsname\e!stop \v!formula\endcsname{\strc_formulas_stop_formula} \permanent\tolerant\protected\def\defineformulaalternative[#1]#*[#2]#*[#3]% {\frozen\instance\protected\defcsname\e!start#1\v!formula\endcsname{#2}% \frozen\instance\protected\defcsname\e!stop #1\v!formula\endcsname{#3}} (the \protected probably got lost when i added overload protection etc) 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 -----------------------------------------------------------------
On Sat, 11 Sep 2021, Hans Hagen wrote:
On 9/11/2021 5:11 AM, Aditya Mahajan via ntg-context wrote:
I sometimes define lua functions for showing out worked out calculations. The following minimal example shows that
context([[\startformula ... \stopformula]])
fails in LMTX with an error message:
tex error > tex error on line 3 in file ./test.tex: Undefined control sequence \undefined
MWE:
\startluacode thirddata = thirddata or {}
local comment = [[ This is a famous formula \startformula a^2 + b^2 = c^2 \stopformula ]]
function thirddata.explanation() context(comment) end
\stopluacode
\starttext \ctxlua{thirddata.explanation()} \stoptext
The actual use case is more complicated (where I use templates, so I don't want to convert everything to context.startformula() etc.). The example compiles with MkIV but not LMTX.
Any idea what is going on? \enabletrackers[context*]
shows that we have an unprotected \startformula so we need this in strc-mat.mkxl:
\permanent\protected\defcsname\e!start\v!formula\endcsname{\strc_formulas_start_formula{}} \permanent\protected\defcsname\e!stop \v!formula\endcsname{\strc_formulas_stop_formula}
\permanent\tolerant\protected\def\defineformulaalternative[#1]#*[#2]#*[#3]% {\frozen\instance\protected\defcsname\e!start#1\v!formula\endcsname{#2}% \frozen\instance\protected\defcsname\e!stop #1\v!formula\endcsname{#3}}
(the \protected probably got lost when i added overload protection etc)
Thanks! This fixes the error in my main document as well. Aditya
The problem also concerns \starttyping: \starttext . \startluacode context([[ \starttyping \stoptyping ]]) \stopluacode \stoptext tex error > runaway error: end of file encountered mtx-context | fatal error: return code: 256 %%%%%%%%% \starttext . \startluacode context([[ \starttyping foobar \stoptyping ]]) \stopluacode \stoptext tex error > tex error on line 5 in file ./test.tex: lua error: registered function call [1041]: ...mtx/tex/texmf-context/tex/context/base/mkxl/buff-ini.lmt:534: invalid value (nil) at index 3 in table for ' concat' stack traceback: [C]: in function 'table.concat' ...mtx/tex/texmf-context/tex/context/base/mkxl/buff-ini.lmt:534: in upvalue 'pickup' ...mtx/tex/texmf-context/tex/context/base/mkxl/buff-ini.lmt:677: in function <...mtx/tex/texmf-context/tex/context/base/mkxl/buff-ini.lmt:668> (...tail calls...) Sylvain On Sat, 11 Sept 2021 at 05:12, Aditya Mahajan via ntg-context < ntg-context@ntg.nl> wrote:
I sometimes define lua functions for showing out worked out calculations. The following minimal example shows that
context([[\startformula ... \stopformula]])
fails in LMTX with an error message:
tex error > tex error on line 3 in file ./test.tex: Undefined control sequence \undefined
MWE:
\startluacode thirddata = thirddata or {}
local comment = [[ This is a famous formula \startformula a^2 + b^2 = c^2 \stopformula ]]
function thirddata.explanation() context(comment) end
\stopluacode
\starttext \ctxlua{thirddata.explanation()} \stoptext
The actual use case is more complicated (where I use templates, so I don't want to convert everything to context.startformula() etc.). The example compiles with MkIV but not LMTX.
Any idea what is going on?
Thanks, Aditya
___________________________________________________________________________________ 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
___________________________________________________________________________________
participants (3)
-
Aditya Mahajan
-
Hans Hagen
-
Sylvain Hubert