对于测试,我有一个定义:
\define[9]\DEFINETEST{#1,#2,#3,#4,#5,#6,#7,#8,#9}
context test
可以正常工作,当我将上述内容修改为:
\define[10]\DEFINETEST{#1,#2,#3,#4,#5,#6,#7,#8,#9,#10}
我收到一个错误:
test.tex: ! Illegal parameter number in definition of \DEFINETEST
有什么问题?谢谢!
答案1
使用键值接口。
\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