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