[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



More information about the ntg-context mailing list