Hello ConTeXist. How best (optimally) in Lua code in ConTeXt define own ConTeXt macros? I was used recently LuaTeX syntax (for example) : tex.sprint(tex.ctxcatcodes,'\\def\\mymacro\{arg of mymacro\}') But someone advised me that I use the better syntax: context('\\def\\Mymacro\{arg of mymacro\}') or context("\\def\\test#1{#1}") etc... Exist other (best or most optimal) way to do? for example something like: context.def.mymacro("first arg", "sec arg:") (which of course does not work ...) Thanx Jaroslav My example: \startluacode function ar2rom(arnum) -- Convert Arabic numbers to Roman. Used for "numbering" column in the TeX macros local romans = {{1000, "M"}, {900, "CM"}, {500, "D"}, {400, "CD"}, {100, "C"}, {90, "XC"}, {50, "L"}, {40, "XL"}, {10, "X"}, {9, "IX"}, {5, "V"}, {4, "IV"}, {1, "I"} } local romnum='' for _, v in ipairs(romans) do -- create of the Roman numbers val, let = unpack(v) while arnum >= val do arnum = arnum - val romnum=romnum..let end end return romnum end for i = 1, 10 do tex.sprint(tex.ctxcatcodes,'\\def\\macro'..ar2rom(i)..'\{macro '..i..'\}') context('\\def\\Macro'..ar2rom(i)..'\{Macro '..i..'\}') end tex.sprint(tex.ctxcatcodes,'\\def\\mymacro\{arg of mymacro\}') context('\\def\\Mymacro\{arg of Mymacro\}') \stopluacode \starttext \macroI, \MacroI \macroII, \MacroII etc ... \macroIX, \MacroIX \macroX, \MacroX \Mymacro, \mymacro \stoptext