[NTG-context] How to define a command...

Otared Kavian otared at gmail.com
Thu Jan 5 22:36:56 CET 2012


Sorry for the noise…
I found the answer to my last question in module-01.pdf, pages 92 and 93: the right definition is
	\define[3]\RandomCoeff{%
	\setevalue{Coeff#1}{\ctxlua{tex.print(math.random(#2,#3))}}
	}
that is one has to use \setevalue instead of \setvalue (that is \edef instead of \def).

Best regards:  OK

On 5 janv. 2012, at 22:24, Otared Kavian wrote:

> Hi again Wolfgang and Peter,
> 
> The solution you provided to my problem is great but has a small issue…
> Considering the definition
> 
> \define[3]\RandomCoeff{%
> 	\setvalue{Coeff#1}{\ctxlua{tex.print(math.random(#2,#3))}}
> 	}
> 
> after saying 
> 	\RandomCoeff{Alpha}{1}{10}
> one gets \CoeffAlpha, but if I use several times \CoeffAlpha, it takes a new value each time, an effect which is undesirable in what I am willing to do.
> Is there a way to somehow « freeze » the value of \CoeffAlpha once it is defined?
> 
> Best regards: OK
> PS: here is the complete example:
> 
> \define[3]\RandomCoeff{%
> 	\setvalue{Coeff#1}{\ctxlua{tex.print(math.random(#2,#3))}}
> 	}
> 
> \starttext
> \RandomCoeff{Alpha}{1}{10}
> \RandomCoeff{Beta}{10}{100}
> 
> \CoeffAlpha
> 
> \CoeffBeta
> 
> \CoeffAlpha
> 
> \CoeffBeta
> 
> \stoptext
> 
> On 5 janv. 2012, at 21:18, Wolfgang Schuster wrote:
> 
>> 
>> Am 05.01.2012 um 21:17 schrieb Peter Münster:
>> 
>>> On Thu, Jan 05 2012, Otared Kavian wrote:
>>> 
>>>> \define[3]\RandomCoeff{%
>>>> 	\ctxlua{a = math.random(#2,#3)}
>>>> %	\csname{Coeff#1}\endcsname{\ctxlua{tex.print(a)}} %% this line does not work as expected...
>>> 
>>> \setuprandomize[2012]
>>> \define[3]\RandomCoeff{%
>>> \expandafter\def\csname Coeff#1\endcsname{\ctxlua{tex.print(math.random(#2,#3))}}}
>> 
>> \setvalue{Coeff#1}{…}
>> 
>> Wolfgang
> 
> 



More information about the ntg-context mailing list