%% pause.sty 18 Jun 2002 %%----------------------------------------------------------- %% History: %% The initial version was created 11 Jun 1999 %% Updated to allow options 10 Mar 2000 %% Restructured after tests 03 Apr 2000 %% Added procesing for random builds 07 May 2000 %% Supply test for new enough pdftex 09 May 2000 %% No need for pdftex 14 any more 31 May 2000 %% Added commands for highligthing etc. 12 Jun 2000 %% Added options ignore, nomarkers and dvipdfm %% runs with vlatex and dvipdfm 10 Nov 2001 %% Update comment section 13 Jun 2002 %% Make catcodes safe for pdfliteral 18 Jun 2002 %% %% Because we need a color definition this can be used %% primarily with LaTeX. Thus we can also rely on \@ifnextchar %% and LaTeX option processing. %% %% insert small colored chunks to mark spots in the pdf file, %% where a break should be made during display. %% This method needs postprocessing by another program. %% But one can preview the formatted text, where stops are indicated %% as small colored chunks. These will vanish during postprocessing. %% %% Take care: because we have to insert pdf comments starting with %% the letter '%' the catcode of '%' will be changed temporarily. %% must define all optional variants to support creating a file %% without pdf elements %% Options \newif\ifpause@ignore \pause@ignorefalse \newif\ifpause@nomarkers \pause@nomarkersfalse \newif\ifpause@dvipdfm \pause@dvipdfmfalse \DeclareOption{ignore}{\pause@ignoretrue} \DeclareOption{nomarkers}{\pause@nomarkerstrue} \DeclareOption{dvipdfm}{\pause@dvipdfmtrue} \ProcessOptions %% warning if ignore and nomarkers \ifpause@ignore \ifpause@nomarkers \message{Warning, options ignore and nomarkers used together} \fi \fi %% We need to make sure that , and : are not active characters while %% we read these macro definitions. %% Save their current catcode settings now and restore them at the end \def\pppp@x#1{\catcode`\noexpand#1=\the\catcode`#1\relax}% \xdef\pppp@restoreCatcodes{\relax \pppp@x\:\relax \pppp@x\,\relax } \catcode`\,=12\relax \catcode`\:=12\relax \def\pauseDissolve{\pause[trans='Dissolve']} \def\pauseReplace{\pause[trans='Replace']} \def\pauseHBlinds{\pause[trans='Blinds,H']} \def\pauseVBlinds{\pause[trans='Blinds,V']} \def\pauseHOSplit{\pause[trans='Split,H,O']} \def\pauseHISplit{\pause[trans='Split,H,I']} \def\pauseVOSplit{\pause[trans='Split,V,O']} \def\pauseVISplit{\pause[trans='Split,V,I']} \def\pauseOBox{\pause[trans='Box,O']} \def\pauseIBox{\pause[trans='Box,I']} \def\pauseWipe#1{\pause[trans='Wipe,#1']} \def\pauseGlitter#1{\pause[trans='Glitter,#1']} \def\pause{\@ifnextchar [{\pppp@pause}{\pppp@pause[]}} %% dvipdfm support \ifpause@dvipdfm {\catcode`\^^M=12 \gdef\pdfliteral#1{\special{pdf: content #1 }}} \message{Using color settings for dvipdfm} \RequirePackage[dvipdfm]{color} %% This is for the support of the dvipdfm color philosophy \def\pppp@gettail #1 #2:{#2} \def\pppp@gethead #1 #2:{#1} \def\pppp@tail #1{\expandafter\pppp@gettail #1:} \def\pppp@tailtail #1{\expandafter\pppp@gettail\pppp@gettail #1::} \def\pppp@head #1{\expandafter\pppp@gethead #1:} \def\pppp@removebrackets[#1]{#1} % maps dvipdfm color arguments to pdf color commands \def\pppp@dvipdfmmap #1{\expandafter\pppp@grayorother#1:} \def\pppp@dvipdfmmapper#1{\csname dvipdfmmapel@#1\endcsname} \def\pppp@dvipdfmmapvalue#1{\expandafter\def\csname dvipdfmmapel@#1\endcsname} \def\pppp@grayorother#1#2:{\pppp@dvipdfmmapper{#1}[#1#2]} \def\pppp@rgborcmyk #1 #2 #3 #4 #5 #6:{\pppp@dvipdfmmapper{#6}[#2 #3 #4 #5]} % for the latest dvipdfm.def-File \pppp@dvipdfmmapvalue{c}[#1]{\pppp@tail{#1} k \pppp@tail{#1} K} \pppp@dvipdfmmapvalue{r}[#1]{\pppp@tail{#1} rg \pppp@tail{#1} RG} \pppp@dvipdfmmapvalue{g}[#1]{\pppp@tail{#1} g \pppp@tail{#1} G} % for dvipdfm.def with bg-error \pppp@dvipdfmmapvalue{b}[#1]{\pppp@tail{#1} g \pppp@tail{#1} G} % support of the older format ([...],...) \pppp@dvipdfmmapvalue{0}[#1]{#1 g #1 G} \pppp@dvipdfmmapvalue{1}[#1]{#1 g #1 G} \pppp@dvipdfmmapvalue{[}[#1]{\expandafter\pppp@removebrackets[\expandafter\pppp@rgborcmyk #1 :} \pppp@dvipdfmmapvalue{}[#1]{#1rg #1RG} \pppp@dvipdfmmapvalue{ }[#1]{#1 k #1 K} \def\pppp@colortostring #1{\expandafter\pppp@dvipdfmmap\csname\string\color@#1\endcsname} \else \RequirePackage{color} \def\pppp@colortostring #1{\csname\string\color@#1\endcsname} \fi \definecolor{pp4red}{rgb}{0.9,0.5,0} %% We need to make sure that our argument parameters do not contain %% active characters when we are called. This means we better set the %% catcodes for some common delimiters in our arguments. Let's hope %% that nobody is going to change the letters and digits, too. \gdef\pppp@catcodes{% \catcode`\+12\relax \catcode`\-12\relax \catcode`\:12\relax \catcode`\=12\relax } %% now we need a section where % can be written to pdf files. %% thus make ! a comment character {\catcode`\%=11\catcode`\!=14 \gdef\pppp@marker#1{! \ifpause@ignore \relax \else \pdfliteral{%pause}! \ifpause@nomarkers \relax \else \color{pp4red}\vrule width 2truemm height 5truemm\hss ! the marker \fi \pdfliteral{%esuap #1}! \fi} \gdef\pppp@pause[#1]{! \ifvmode \vbox to 0pt{\vss\hsize0pt\noindent\hbox to 0pt{\pppp@marker{#1}}}\else!hmode or mmode \null\hbox to 0pt{\pppp@marker{#1}}\null! !\null\hbox to 0pt{\pppp@marker{#1}}\null \fi} \ifpause@ignore !! define dummies, if \pause should be ignored \gdef\pauselevel#1{\relax}! \gdef\pausecolors#1#2#3{}! \gdef\pausecolorreset{\relax} \gdef\pausebuild{\relax} \gdef\pausehighlight{\relax} \else \gdef\pauselevel{\bgroup\pppp@catcodes\pppp@pauselevel}! \gdef\pppp@pauselevel#1{\pdfliteral{%pauselevel #1}\egroup}! \gdef\pausecolors#1#2#3{! \pdfliteral{%pausecolor \pppp@colortostring{#1}\space \pppp@colortostring{#2}\space \pppp@colortostring{#3}}}! \gdef\pausecolorreset{! \pdfliteral{%pausecolor reset}}! \gdef\pausebuild{! \pdfliteral{%pausecolor appear}}! \gdef\pausehighlight{! \pdfliteral{%pausecolor highlight}}! \fi } \pppp@restoreCatcodes