On 1/26/2023 9:33 PM, Henri Menke via ntg-context wrote:
\directlua{ userdata = userdata or {} function userdata.test() tex.print("\string\\numexpr 17\string\\relax") end }
\tt \protected\def\test{\directlua{userdata.test()}} \meaning\test\par \edef\x{\test}\meaning\x\par \the\test
\directlua{ local t = lua.get_functions_table() t[\string#t + 1] = userdata.test token.set_lua("test", userdata.test, \string#t, "protected") } \meaning\test\par \edef\x{\test}\meaning\x\par \the\test from the code it looks like we're talking plain luatex ...
\the is very selective and doesn't work for all primitives or macros compare it to \number which accepts any number representation following it while \the doesn't work ok 123 that said, your set_lua is wrong and passes a function as well as an index \directlua{ lua.get_functions_table()[999] = function() tex.print("\string\\numexpr 17\string\\relax") end token.set_lua("test", 999) } \the \test % needs the \numexpr \number \test % doesn't \count0 \test % needs the \numexpr \count0=\test % doesn't 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 -----------------------------------------------------------------