Hi, please have a look at the following example: \starttext \def\cmd{% \def\mymacro{Foobar} \newtoks\mytoks \mytoks={mytoks}} \startluacode context.cmd() context.mymacro() -- this fails -- context(tex.toks.mytoks) \stopluacode -- this works \startluacode context(tex.toks.mytoks) \stopluacode \stoptext Why does the first call to tex.toks.mytoks fail? Apparently the luacode environment has to be closed for cmd to be expanded. I guess that the call to mymacro() succeeds is a quirk due to the face that the macro is expanded later, in contrast to tokens, dimens and counters. Is there a command I can use within Lua to expand a macro immediately or to expand the pending macros to be able to access the values like the token register in the example? Another question which is related: Is there a way to access the contents of the macro from within Lua like counters and token registers? \starttext \newtoks\mytoks \mytoks={Foobar} \startluacode local tok = tex.toks.mytoks -- something like this is what I have in mind -- local mac = tex.macros.somemacro \stopluacode \stoptext I am just interested in a text string, not a box with typeset material. I guess that's more difficult, since macros are expanded and not just simply read. Marco