[NTG-context] how to figure out the number of elements inside \defineconversion?
Hello, I would like to \defineconversion and the use that set of symbols inside a metapost graphic. But I need to know the number of symbols, so that I can define enough "metapost images with symbols" in advance. I realise that there might be a problem since conversion can sometimes take an arbitrary number (using a command defined elsewhere), but if I could have a reasonable guess for conversions defined explicitely, that would already help a lot. (As a workaround and/or if there is no easy method to figure that out I can still hardcode "25" and wait until someone complains that that is not enough to satisfy his/her needs.) Thanks a lot, Mojca \startMPextensions numeric variant; variant = 1; vardef gp_the_symbol(expr n) = picture pict; % using metapost if variant=1: pict := image( fill fullcircle scaled 4pt; ); % TODO % using TeX, variant = 2 else: % TODO: limit the number first pict := sometxt(n); fi; pict shifted -center pict enddef ; def gp_point(expr x, y, n) = draw (gp_the_symbol(n) scaled 1 shifted (x,y)); enddef ; \stopMPextensions \starttext \defineconversion[abc][$\star$,$\bullet$,$\ast$] \startTeXtexts % TODO: 6 is only a guess: I need a better guess (3 in this case) \dostepwiserecurse{1}{6}{1}{\TeXtext{\recurselevel}{{\convertnumber{abc}{\recurselevel \stopTeXtexts \startMPcode variant := 1; gp_point(1cm,0cm,1); gp_point(2cm,0cm,2); variant := 2; gp_point(1cm,1cm,1); gp_point(2cm,1cm,2); gp_point(3cm,1cm,3); gp_point(4cm,1cm,4); gp_point(5cm,1cm,8); \stopMPcode \stoptext ___ ntg-context mailing list ntg-context@ntg.nl http://www.ntg.nl/mailman/listinfo/ntg-context
Re: [NTG-context] how to figure out the number of elements inside \defineconversion?
Mojca Miklavec wrote: > Hello, > > I would like to \defineconversion and the use that set of symbols > inside a metapost graphic. But I need to know the number of symbols, > so that I can define enough "metapost images with symbols" in advance. > I realise that there might be a problem since conversion can sometimes > take an arbitrary number (using a command defined elsewhere), but if I > could have a reasonable guess for conversions defined explicitely, > that would already help a lot. (As a workaround and/or if there is no > easy method to figure that out I can still hardcode "25" and wait > until someone complains that that is not enough to satisfy his/her > needs.) > > Thanks a lot, > Mojca > > > \startMPextensions > numeric variant; variant = 1; > vardef gp_the_symbol(expr n) = > picture pict; > % using metapost > if variant=1: > pict := image( fill fullcircle scaled 4pt; ); % TODO > % using TeX, variant = 2 > else: % TODO: limit the number first > pict := sometxt(n); > fi; > pict shifted -center pict > enddef ; > > def gp_point(expr x, y, n) = > draw (gp_the_symbol(n) scaled 1 shifted (x,y)); > enddef ; > \stopMPextensions > > \starttext > > \defineconversion[abc][$\star$,$\bullet$,$\ast$] > > \startTeXtexts > % TODO: 6 is only a guess: I need a better guess (3 in this case) > \dostepwiserecurse{1}{6}{1}{\TeXtext{\recurselevel}{{\convertnumber{abc}{\recurselevel > \stopTeXtexts > > \startMPcode > variant := 1; > gp_point(1cm,0cm,1); > gp_point(2cm,0cm,2); > variant := 2; > gp_point(1cm,1cm,1); > gp_point(2cm,1cm,2); > gp_point(3cm,1cm,3); > gp_point(4cm,1cm,4); > gp_point(5cm,1cm,8); > \stopMPcode > > \stoptext > \unprotect \def\doifelseconversionnumber#1#2% {\doifdefinedelse{\??cv#1#2}} \protect \defineconversion[abc][$\star$,$\bullet$,$\ast$] \defineconversion[def][m,o,j,c,a] \doloop {\doifelseconversionnumber{abc}{\recurselevel} {[abc \recurselevel\space defined]} {\exitloop}} \doloop {\doifelseconversionnumber{def}{\recurselevel} {[def \recurselevel\space defined]} {\exitloop}} - Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | fax: 038 477 53 74 | www.pragma-ade.com | www.pragma-pod.nl - ___ ntg-context mailing list ntg-context@ntg.nl http://www.ntg.nl/mailman/listinfo/ntg-context
Re: [NTG-context] how to figure out the number of elements inside \defineconversion?
On 8/10/06, Hans Hagen wrote: > Mojca Miklavec wrote: > > Hello, > > > > I would like to \defineconversion and the use that set of symbols > > inside a metapost graphic. But I need to know the number of symbols, > > so that I can define enough "metapost images with symbols" in advance. > > I realise that there might be a problem since conversion can sometimes > > take an arbitrary number (using a command defined elsewhere), but if I > > could have a reasonable guess for conversions defined explicitely, > > that would already help a lot. (As a workaround and/or if there is no > > easy method to figure that out I can still hardcode "25" and wait > > until someone complains that that is not enough to satisfy his/her > > needs.) > \unprotect > > \def\doifelseconversionnumber#1#2% > {\doifdefinedelse{\??cv#1#2}} > > \protect > > \defineconversion[abc][$\star$,$\bullet$,$\ast$] > \defineconversion[def][m,o,j,c,a] > > \doloop > {\doifelseconversionnumber{abc}{\recurselevel} > {[abc \recurselevel\space defined]} > {\exitloop}} > > \doloop > {\doifelseconversionnumber{def}{\recurselevel} > {[def \recurselevel\space defined]} > {\exitloop}} Perfect. That's exactly what I needed. I only have to keep my fingers crossed now (I haven't tested the executable for a while) ... Mojca ___ ntg-context mailing list ntg-context@ntg.nl http://www.ntg.nl/mailman/listinfo/ntg-context