ntg-context - mailing list for ConTeXt users
 help / color / mirror / Atom feed
From: Johannes Graumann <johannes_graumann@web.de>
Subject: Re: Float caption feature request
Date: Fri, 05 May 2006 08:30:43 -0700	[thread overview]
Message-ID: <e3fr64$l68$1@sea.gmane.org> (raw)
In-Reply-To: <445B483C.8000807@wxs.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
> -----------------------------------------------------------------

  reply	other threads:[~2006-05-05 15:30 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-05-01 17:17 Johannes Graumann
2006-05-05  7:40 ` Taco Hoekwater
2006-05-05 22:35   ` Johannes Graumann
2006-05-05 12:42 ` Hans Hagen
2006-05-05 15:30   ` Johannes Graumann [this message]
2006-05-06  0:11     ` Johannes Graumann
2006-05-06 22:34   ` Mojca Miklavec
2006-05-07 18:15     ` Hans Hagen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='e3fr64$l68$1@sea.gmane.org' \
    --to=johannes_graumann@web.de \
    --cc=ntg-context@ntg.nl \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).