Thanx very much Hans and Wolfgang too, I converted ALL my ConTeXt definitions (macros) with fixed numbers of parameters by using yours method - ie: interfaces.definecommand { name = "....", macro = ....., arguments = { { "content", "string" }, { "content", "string" }, }, } It is great and very easy - thanx. Now I want convert rest of definitions (macros) - they have varied numbers of parameters. Is there any similar way to do it? Suffice it to indicate how. Thanx Jaroslav To show what macros I want to convert, I mention these examples: \def\opencsvfile{% \dosingleempty\doopencsvfile% } \def\doopencsvfile[#1]{% \dosinglegroupempty\dodoopencsvfile } \def\dodoopencsvfile#1{% \iffirstargument \ctxlua{thirddata.scancsv.opencsvfile("#1")} \else \ctxlua{thirddata.scancsv.opencsvfile()} \fi } or other macro etc: % \doloopaction % implicit use \lineaction macro % \doloopaction{\action} % use \action macro for all lines % \doloopaction{\action}{4} % use \action macro for first 4 lines % \doloopaction{\action}{2}{5} % use \action macro for lines from 2 to 5 \def\doloopaction{\dotriplegroupempty\doloopAction} \def\doloopAction#1#2#3{% \opencsvfile% \doifsomethingelse{#3}{%3 args. \doloopfromto{#2}{#3}{#1}% if 3 arguments then do #1 macro from #2 line to #3 line }{% \doifsomethingelse{#2}{%2 args. \doloopfromto{1}{#2}{#1}% if 2 arguments then do #1 macro for first #2 lines }% {\doifsomethingelse{#1}{% 1 arg. \doloopfromto{-1}{-1}{#1}% }{% if without arguments then do \lineaction macro for all lines \doloopfromto{-1}{-1}{\lineaction}% }% }% }% }% Dne 13.7.2011 16:33, Wolfgang Schuster napsal(a):
Am 13.07.2011 um 16:09 schrieb Jaroslav Hajtmar:
Thanx Wolfgang,
It looks very interesting... It can be used this method for example for macro definitions?
It depends what you want to achieve, while you try to create many commands in the form \MacroXXX where each command contains some content i define only one command which takes the content only when requested.
When I will return to the subject of this mail: Can also be used for the council said Hans macros with multiple parameters?
For example macros without parameter is no problem: context.setvalue('printline',calling.luafunction(),tex.par) I assume that for a more parameters cannot be used context.setvalue (...) ..
But how to use multiple parameters when defining the macro as follows: context([[\\def\\paramcontrol#1#2{%s}]],thirddata.scancsv.paramcontrol('#1', '#2'))
Look into cldf-int.lua where you can see a method to create TeX commands without optional arguments from Lua.
Wolfgang