\ProvidesPackage{overlays}[2016/10/02 v2.2 Incremental slides] % Copyright (C) 2016 Andreas Nolda % Author: Andreas Nolda % Version: 2.2 % This work may be distributed and/or modified under the conditions of the LaTeX % Project Public License, either version 1.3 of this license or (at your option) % any later version. The latest version of this license is in % http://www.latex-project.org/lppl.txt and version 1.3 or later is part of all % distributions of LaTeX version 2005/12/01 or later. % The following code is inspired by Matthias Meister's "present" package. It % uses an algorithm by Martin Scharrer for testing numbers in numerical ranges % (http://tex.stackexchange.com/q/19000). The code for saving counters between % overlays as well as for overlays with verbatim content is taken from the % "texpower" package, which in turn is based on Till Tantau's "beamer" package. \RequirePackage{color} \RequirePackage{environ} \RequirePackage{pgffor} \def\s@vedcounters{} \def\s@vecounters% {\begingroup \def\@elt##1{\global\csname c@##1\endcsname\the\csname c@##1\endcsname}% \xdef\restores@vedcounters{\s@vedcounters}% \endgroup} \newcommand{\savebetweenoverlays}[1]% {\expandafter\def \expandafter\s@vedcounters \expandafter{\s@vedcounters\@elt{#1}}} \savebetweenoverlays{page} \savebetweenoverlays{equation} \newcount\curoverl@y \newcount\maxoverl@y \NewEnviron{overlays}[1]% {\s@vecounters \maxoverl@y=#1% \curoverl@y=0% \loop \advance\curoverl@y by 1% \begingroup \BODY \endgroup \ifnum\curoverl@y<\maxoverl@y% \clearpage \restores@vedcounters \repeat} \newwrite\verb@timfileout \def\verb@timreadslide {\begingroup% \let\do\@makeother\dospecials% \count@=127% \@whilenum\count@<255 \do {\advance\count@ by 1% \catcode\count@=11} \@makeother\^^L \endlinechar`\^^M \catcode`\^^M=12 \processslidefirstline} \newenvironment{fragileoverlays}[1] {\maxoverl@y=#1% \def\verb@timfilen@me{\jobname.vrb}% \immediate\openout\verb@timfileout=\verb@timfilen@me% \verb@timreadslide} {\immediate\closeout\verb@timfileout% \begin{overlays}{\maxoverl@y} \def\verbatim@nolig@list{\do\`\do\<\do\>\do\'} % don't make "," and "-" active \input{\verb@timfilen@me}% \end{overlays}} \def\endfr@gileoverl@ys{\endgroup\end{fragileoverlays}} {\catcode`\^^M=12\endlinechar=-1% \long\gdef\processslidefirstline#1^^M% {\def\overl@ystest{#1}% \ifx\overl@ystest\stopslidefirst% \let\next=\endfr@gileoverl@ys% \else \ifx\overl@ystest\@empty% \else% \@temptokena={#1}% \immediate\write\verb@timfileout{\the\@temptokena}% \fi% \let\next=\processslideline% \fi% \next} \long\gdef\processslideline#1^^M% {\def\overl@ystest{#1}% \ifx\overl@ystest\stopslide% \let\next=\endfr@gileoverl@ys% \else \immediate\write\verb@timfileout{#1}% \fi% \next}} {\escapechar=-1\relax% \xdef\stopslide{\string\\end\string\{fragileoverlays\string\}} \xdef\stopslidefirst{\noexpand\end\string\{fragileoverlays\string\}}} \newcount\overl@yspeca \newcount\overl@yspecb \def\@getoverl@yspecb-#1\relax% {\ifx\relax#1\relax \overl@yspecb=\maxoverl@y \else \overl@yspecb=#1\relax \fi} \def\getoverl@yspecb% {\@ifnextchar\relax {\overl@yspecb=\overl@yspeca}% {\@getoverl@yspecb}} \def\ifinoverl@yspec#1#2% {\global\let\inoverl@yspec\@secondoftwo \foreach \i in {#2} {\afterassignment\getoverl@yspecb \overl@yspeca=0\i\relax \pgfmathtruncatemacro\result{(#1>=\overl@yspeca) && (#1<=\overl@yspecb)}% \ifnum\result=1\relax \breakforeach \global\let\inoverl@yspec\@firstoftwo \fi}% \inoverl@yspec} \long\def\overl@y#1#2#3{\ifinoverl@yspec{\curoverl@y}{#1}{#2}{#3}} \newcommand{\only}[2]{\overl@y{#1}{#2}{\relax}} \definecolor{background}{rgb}{1,1,1} \newcommand{\visible}[2]{\overl@y{#1}{#2}{{\color{background}% \let\default@color\current@color #2% \ifvmode \unskip \fi}}} \definecolor{alert}{rgb}{1,0,0} \newcommand{\alert}[2]{\overl@y{#1}{{\color{alert}% #2% \ifvmode \unskip \fi}}{#2}}