![](https://secure.gravatar.com/avatar/cde1dc8e3c1a66e7c6342a763d371696.jpg?s=120&d=mm&r=g)
Just disregard this post and have mercy on the deadline panicked ... Joh Johannes Graumann wrote:
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 {\@EA\@EAEAEA\csname % we use the fact that an \@EA\ifx\csname#1\endcsname\relax % 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 -----------------------------------------------------------------