Hello, In LaTeX (don't remember whether this is generic or specific to one of the packages I used to use), the 'caption' command for floats came along this way: \caption[optional short version]{Caption} If one uses the 'optional short version' bit, the Table of Figures/Tables present the short version rather than the whole caption (which in my case is long paragraphs and makes the TOF/TOT unpractical). I would very much like to have that functionality in context. Thanks for any hints on how to achieve this. Poking around in the source did not lead this newbie to a starting point ... Joh
Johannes Graumann wrote:
Hello,
In LaTeX (don't remember whether this is generic or specific to one of the packages I used to use), the 'caption' command for floats came along this way:
\caption[optional short version]{Caption}
If one uses the 'optional short version' bit, the Table of Figures/Tables present the short version rather than the whole caption (which in my case is long paragraphs and makes the TOF/TOT unpractical). I would very much like to have that functionality in context.
Perhaps \nomarking works in captions as well (have not checked). Cheers, Taco
Johannes Graumann wrote:
Hello,
In LaTeX (don't remember whether this is generic or specific to one of the packages I used to use), the 'caption' command for floats came along this way:
\caption[optional short version]{Caption}
we use [] for references, and once users want one alternative, they may want another one as well, so best cook up a generic mechanism
If one uses the 'optional short version' bit, the Table of Figures/Tables present the short version rather than the whole caption (which in my case is long paragraphs and makes the TOF/TOT unpractical). I would very much like to have that functionality in context.
Thanks for any hints on how to achieve this. Poking around in the source did not lead this newbie to a starting point ...
something \def\MyCaption{\firstoftwoarguments} ...\MyCaption{bla}{more bla} or better, wrapped in a feature: \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 -----------------------------------------------------------------
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 -----------------------------------------------------------------
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 -----------------------------------------------------------------
On 5/5/06, Hans Hagen wrote:
\placefigure {\select{caption}{zapf}{\input zapf \relax}} {}
\stoptext
i'll add selectors to the core
Very nice feature! What about \select[caption]{zapf}{\input zapf \relax} syntax instead? (You're the boss and the designer, but square brackets seem more consistent with other ConTeXt commands; at least to me.) Mojca
Mojca Miklavec wrote:
On 5/5/06, Hans Hagen wrote:
\placefigure {\select{caption}{zapf}{\input zapf \relax}} {}
\stoptext
i'll add selectors to the core
Very nice feature!
What about \select[caption]{zapf}{\input zapf \relax} syntax instead? (You're the boss and the designer, but square brackets seem more consistent with other ConTeXt commands; at least to me.)
this is indeed more natural to context, but i consider \select to be more like the \getvariable mechanism, and when used inside [] it saves outer braces: \setupheadertexts[\select{caption}{zapf}{\input zapf \relax}] 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 -----------------------------------------------------------------
participants (4)
-
Hans Hagen
-
Johannes Graumann
-
Mojca Miklavec
-
Taco Hoekwater