Dear list, I have noticed a somewhat strange difference between protected macros and protected luacalls, namely that the latter cannot be expanded by \the. In the example below I define a Lua function that prints \numexpr 17\relax to the token stream and I call it once from a protected TeX macro wrapping \directlua and once from a protected luacall registered with token.set_lua. \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 \bye However, the second \the\test fails with the following error: ! You can't use `luacall 0' after \the. l.21 \the\test Is this asymmetry between luacalls and regular macros intended? Is there a workaround where I can have a luacall that doesn't expand inside of \edef but still expands after \the? Cheers, Henri