Hello, I created a testing file which tests existence and type of (tex|context|document).(modes|arguments|variables) by Lua - see the attachments. It seems that: - Modes are accessible by tex.modes[]. - - tex.modes are 'false' by default. I.e. they are not 'nil' but 'false', even if not specified on the command line. (tex.mode.__newindex predefined to this purpose?) - There is no table of arguments or variables being passed by --arguments="ARG=arg" or by --variable="VAR=var" from the command line. - All arguments passed to the command line are accessible by document.arguments. Unfortunately, when repeating an arg, only the last is accessible, e.g. context.exe t.mkiv --arguments="ARG1=arg1" --arguments="ARG2=arg2" will cause that only (string) "ARG2=arg2" will be in document.arguments.arguments. - - That means also that not splitting to key-value pair is not performed by default (document.arguments.arguments is still "ARG2=arg2", no splitting to document.arguments.arguments.ARG2 to be "arg2" is not done). - Not only predefined options/switches, but all args passed by command line are accessible by document.arguments. I.e. it's possible to call context.exe t.mkiv --myvar=MYVAR and later it's possible to get "MYVAR" from document.arguments.myvar. Let's check the call: context.exe t.mkiv --arguments=AAA=aaa --mode=MMM --arguments=BBB=bbb --myvar=MYVAR Best regards, Lukas On Wed, 05 Jan 2011 21:11:51 +0100, Peter Münster wrote: > Procházka Lukáš writes: > >> I'd need to pass a variable to Ctx and to retrieve it inside a >> compiled document - via Ctx itself and also by Lua. > > Hello, > > % cmd-line: context --arguments=testvar=my-value test > \starttext > value of testvar: \env{testvar} > > with lua: \ctxlua{tex.print(document.arguments.arguments)} > \stoptext > > There is perhaps a nicer solution in lua. > > Peter > -- Ing. Lukáš Procházka [mailto:LPr@pontex.cz] Pontex s. r. o. [mailto:pontex@pontex.cz] [http://www.pontex.cz] Bezová 1658 147 14 Praha 4 Tel: +420 244 062 238 Fax: +420 244 461 038