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



___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the 
Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://tex.aanhet.net
archive  : http://foundry.supelec.fr/projects/contextrev/
wiki     : http://contextgarden.net
___________________________________________________________________________________

Reply via email to