ntg-context - mailing list for ConTeXt users
 help / color / mirror / Atom feed
From: Jaroslav Hajtmar <hajtmar@gyza.cz>
To: mailing list for ConTeXt users <ntg-context@ntg.nl>
Subject: Optimal way to defining of macros in Luacode in ConTeXt
Date: Tue, 12 Jul 2011 17:30:11 +0200	[thread overview]
Message-ID: <4E1C6883.30300@gyza.cz> (raw)

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	other threads:[~2011-07-12 15:30 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-07-12 15:30 Jaroslav Hajtmar [this message]
2011-07-12 15:43 ` Hans Hagen
2011-07-13  8:05   ` Jaroslav Hajtmar
2011-07-13  9:55     ` Hans Hagen
2011-07-13 10:05       ` Jaroslav Hajtmar
2011-07-13 12:56         ` Wolfgang Schuster
2011-07-13 14:09           ` Jaroslav Hajtmar
2011-07-13 14:33             ` Wolfgang Schuster
2011-07-14 15:12               ` Jaroslav Hajtmar
2011-07-14 15:28                 ` Hans Hagen
2011-07-13 18:05             ` Hans Hagen
2011-07-12 15:50 ` Wolfgang Schuster

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4E1C6883.30300@gyza.cz \
    --to=hajtmar@gyza.cz \
    --cc=ntg-context@ntg.nl \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).