# [NTG-context] [doifinset] how it works ?

Wolfgang Schuster schuster.wolfgang at gmail.com
Fri Aug 22 06:47:57 CEST 2014

Am 21.08.2014 um 21:58 schrieb Pierre-François Bonnefoi <bonnefoi at unilim.fr>:

> Hello,
>
> I'm currently prepping my teaching material for my back-to-university.
>
> I want to design some conditional slides based presentation where I can select the slides that I want to show in my final presentation.
>
> My current attempt is to use :
> 1 - MKIV as I use currently only MKII;
> 2 - a counter is defined, that it is incremented at each slide definition;
> 3 - a commalist to indicate the slides that I want. The number affected to each slide is made according to its definition in the file and not the slide number displayed;
> 4 - a block is added to enclosed each slide in order to allow or not it to be shown in the final presentation.
>
> \definenumber[slide][way=bytext,prefix=no]
> % firstly I generate a full commalist
> \def\slidelist{}
> \dorecurse{8}{
> 	\doglobal\appendtocommalist{#1}\slidelist
> }
>
> % then I define my slide where I increment the counter
> \def\startSlide{\setupbackgrounds[page][background={fond,Auteur,backgraphics,foreground,foregraphics}]
> \directsetup{slide:start}}
> \def\stopSlide{\directsetup{slide:stop}}
> \startsetups slide:start
> \page
> \incrementnumber[slide]
> \switchtobodyfont[14pt]
> \setupinteractionbar[state=start]
> \startnarrower[left]
> \stopsetups
>
> \startsetups slide:stop
> \stopnarrower
> \page
> \stopsetups
>
> \starttext
>
> \doifinset{\getnumber[slide]}{\slidelist}
> {
> \startSlide
> \SlideTitleSub{Hello there}
>
> What is my number ? \getnumber[slide] !
>
> \stopSlide
> }
> \stoptext
>
>
> This doesn't work. the "doifinset" doesn't work. I've tried to put some \expanded in order to expand the arguments with no success.
>
> The only way is to use direct argument as :
> \doifinset{1}{1,2,3,4,5}
>
> Let me know it it is possible.

You have to access the counter with \rawcountervalue[<countername>] but in your case you can use a different counter mechanism.

\setvariables[slide][list={1,2,3,6,7,8}]

% \setupbackgrounds[page][background={fond,Auteur,backgraphics,foreground,foregraphics}]

\def\startSlide
{\increment\SlideCounter
\doifinsetelse\SlideCounter{\getvariable{slide}{list}}
{\directsetup{slide:start}}
{\gobbleuntil\stopSlide}}

\def\stopSlide
{\directsetup{slide:stop}}

\startsetups slide:start
\page
\stopsetups

\startsetups slide:stop
\page
\stopsetups

\starttext

\dorecurse{10}
{\startSlide
{\tfd\recurselevel}
\stopSlide}

\stoptext

Wolfgang