Am 29.12.2008 um 14:28 schrieb Wolfgang Schuster:
When I changed '\starttabulate' to '\starttabulate[|l|p|]' in your solution above, it broke.
Try to escape the |, it's a active character in ConTeXt but this could work (untested):
\def\testmacro {\bgroup \catcode`\\=12 \catcode`\|=12 \dotestmacro}
And now with a catcode table. % redefined version of \startcatcodetable \long\def\startcatcodetable#1#2\stopcatcodetable {\bgroup %\catcodetable\scratchcatcodetable \the\setdefaultcatcodes #2% \savecatcodetable#1\relax \egroup} % the new catcode table \newcatcodetable \testcatcodes \startcatcodetable \testcatcodes \catcode`\\ = 12 \catcode`\| = 12 \stopcatcodetable \def\testmacro {\bgroup \setcatcodetable\testcatcodes \dotestmacro} \def\dotestmacro#1% {\ctxlua{d='\luaescapestring{#1}'} \egroup} \starttext \testmacro{\starttabulate[|l|p|] \NC knuth \NC \input knuth \NC\NR \stoptabulate} \ctxlua{tex.sprint(d)} \stoptext Wolfgang