The 'selector' feature sounds truly wonderfull! The code below doesn't compile yet for me though ... 1) '\protect' needs to be called after '{\executeifdefined{\??sx#1\c!n 1}}', no? 2) Even after changing that I run into the following error when compiling the example below:
! Missing { inserted. <to be read again> l.94 {\select{caption}{zapf}{\input zapf \relax}} Thank you for your help! Joh Hans Hagen wrote: > \unprotect > > % let's reuse this one in selectors (from syst-ext) > > \def\dofilterfromstr#1#2% max n > {\ifcase#1\or > \ifcase#2\or > \strippedcsname\firstofoneargument > \else > \strippedcsname\gobbleoneargument > \fi > \or > \ifcase#2\or > \strippedcsname\firstoftwoarguments > \or > \strippedcsname\secondoftwoarguments > \else > \strippedcsname\gobbletwoarguments > \fi > \or > \ifcase#2\or > \strippedcsname\firstofthreearguments > \or > \strippedcsname\secondofthreearguments > \or > \strippedcsname\thirdofthreearguments > \else > \strippedcsname\gobblethreearguments > \fi > \or > \ifcase#2\or > \strippedcsname\firstoffourarguments > \or > \strippedcsname\secondoffourarguments > \or > \strippedcsname\thirdoffourarguments > \or > \strippedcsname\fourthoffourarguments > \else > \strippedcsname\gobblefourarguments > \fi > \or > \ifcase#2\or > \strippedcsname\firstoffivearguments > \or > \strippedcsname\secondoffivearguments > \or > \strippedcsname\thirdoffivearguments > \or > \strippedcsname\fourthoffivearguments > \or > \strippedcsname\fifthoffivearguments > \else > \strippedcsname\gobblefivearguments > \fi > \fi} > > \def\filterfromvalue#1#2#3% value max n > [EMAIL PROTECTED]@EAEAEA\csname % we use the fact that an > [EMAIL PROTECTED] % undefined cs has become \relax > \strippedcsname\gobbleoneargument % which we then gobble here > \else > \dofilterfromstr{#2}{#3}% > \fi > \endcsname\csname#1\endcsname} > > \def\filterfromnext#1#2% max n {..}{..}{..}{..} > {\csname\dofilterfromstr{#1}{#2}\endcsname} > > % new, selectors > > \definesystemvariable{sx} > > \def\defineselector{\dodoubleargument\dodefineselector} > \def\setupselector {\dodoubleargument\dosetupselector} > > \def\dodefineselector[#1][#2]{\getparameters[\??sx#1][\c!max=2,\c!n=1,#2]} > \def\dosetupselector [#1][#2]{\getparameters[\??sx#1][#2]} > > \unexpanded\def\select#1% > {\filterfromnext > {\executeifdefined{\??sx#1\c!max}1} > {\executeifdefined{\??sx#1\c!n }1}} > > \defineselector[caption][max=2,n=1] > > \start > \setupselector[caption][n=1] > \placelist[figure][criterium=all] > \stop > > \starttext > > \placefigure > {\select{caption}{zapf}{\input zapf \relax}} > {} > > \stoptext > > i'll add selectors to the core > > Hans > > ----------------------------------------------------------------- > 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