2010/5/13 Vianney le Clément
On Thu, May 13, 2010 at 09:30, Taco Hoekwater
wrote: Like many of the more complex commands, \processaction does not expand totally. If you are using mkiv, you could define \Shape like this:
\def\Shape#1% {\directlua{ local known = {square = 'unitsquare', circle = 'unitcircle' } tex.sprint(known[#1] or 'unitsquare')}}
Thanks Taco. That does the trick provided you enclose #1 with quotes:
\def\Shape#1% {\directlua{ local known = {square = 'unitsquare', circle = 'unitcircle' } tex.sprint(known['#1'] or 'unitsquare')}}
Another, maybe uglier but plain TeX, solution I've come up with is defining auxiliary macros:
\def\ShapeSSSsquare{unitsquare} \def\ShapeSSScircle{unitcircle} \def\Shape#1{\csname ShapeSSS#1\endcsname}
But of course, this does not handle unknown options (though that could be added).
I'll add this to the wiki.
Vianney ___________________________________________________________________________________ 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 ___________________________________________________________________________________
Also \getparameters[Shape][square={unitsquare }, circle={unitcircle }] \starttext \startuseMPgraphic{test} fill \Shapesquare scaled 1cm; \stopuseMPgraphic \useMPgraphic{test} \stoptext %%%%%%%%%%%%%% \setevalue{square}{unitsquare} \setevalue{circle}{unitcircle} \starttext \startuseMPgraphic{test} fill \getvalue{square} scaled 1cm; \stopuseMPgraphic \useMPgraphic{test} \stoptext -- luigi