[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