1

For testing, I have a definition:

\define[9]\DEFINETEST{#1,#2,#3,#4,#5,#6,#7,#8,#9}

context test can work fine, when I modify the above into:

\define[10]\DEFINETEST{#1,#2,#3,#4,#5,#6,#7,#8,#9,#10}

I got a error:

test.tex: ! Illegal parameter number in definition of \DEFINETEST

What's wrong with that? Thanks!

1 Answers1

3

Use a key-value interface.

\startluacode
userdata = userdata or { }

function userdata.define_test(args, idx) 
    args = utilities.parsers.settings_to_array(args)
    context(args[idx])
end
\stopluacode

\unprotect
\define\definetest{\dosingleempty\do_define_test}

\def\do_define_test[#1]{%
  \iffirstargument
    \def\getarg##1{\ctxlua{userdata.define_test([==[#1]==],##1)}}%
    \getarg{1}
    \getarg{5}
    \getarg{11}
  \fi
}
\protect

\starttext
\definetest[one,two,three,four,five,six,seven,eight,nine,ten,eleven,twelve]
\stoptext

enter image description here

Henri Menke
  • 109,596