diff options
Diffstat (limited to 'macros/latex/contrib/beamer/base/beamerbasemodes.sty')
-rw-r--r-- | macros/latex/contrib/beamer/base/beamerbasemodes.sty | 251 |
1 files changed, 251 insertions, 0 deletions
diff --git a/macros/latex/contrib/beamer/base/beamerbasemodes.sty b/macros/latex/contrib/beamer/base/beamerbasemodes.sty new file mode 100644 index 0000000000..d68e0c0c15 --- /dev/null +++ b/macros/latex/contrib/beamer/base/beamerbasemodes.sty @@ -0,0 +1,251 @@ +% Copyright 2003--2007 by Till Tantau +% Copyright 2010 by Vedran Mileti\'c +% Copyright 2012,2013,2015 by Vedran Mileti\'c, Joseph Wright +% Copyright 2016 +% Copyright 2017,2018 by Louis Stuart, Joseph Wright +% +% This file may be distributed and/or modified +% +% 1. under the LaTeX Project Public License and/or +% 2. under the GNU Public License. +% +% See the file doc/licenses/LICENSE for more details. + +% Force e-TeX and provide \patchcmd +\RequirePackage{etoolbox} + +% Booleans for options available for both beamer and beamerarticle +\newif\ifbeamer@blocks \beamer@blockstrue +\newif\ifbeamer@ams \beamer@amstrue +\newif\ifbeamer@amssymb \beamer@amssymbtrue +\newif\ifbeamer@countsect \beamer@countsectfalse % A no-op but for clarity +\newif\ifbeamer@keywords \beamer@keywordstrue + +% Scratch space +\newbox\beamer@tempbox +\newcount\beamer@tempcount + +% The pauses counter is public and global, and required by both +% beamer and beamerarticle +\newcounter{beamerpauses} + +\RequirePackage{beamerbasedecode} + +% +% Presentation/article stuff +% +% Copyright notice: Part of the following code is taken from the +% package comment.sty by Victor Eijkhout +% + +% +% Comment stuff. This will also be needed, if we switch to another +% class, so define it here already. +% +\newif\ifbeamer@inpresentation +\beamer@inpresentationtrue + +\def\beamer@startcomment{% + \begingroup + \let\do\@makeother\dospecials + \catcode`\^^L=12 % and whatever other special cases + \endlinechar`\^^M % + \catcode`\^^M=12 % + \beamer@processline} + +\begingroup + \catcode`\^^M=12\relax\endlinechar=-1\relax% + \long\gdef\beamer@processline#1^^M{% + \def\beamer@test{#1}% + \ifx\beamer@test\beamer@stopmodestar% + \let\next=\beamer@modeoutsideframe% + \else% + \ifx\beamer@test\beamer@stopmode% + \let\next=\mode% + \else% + \ifx\beamer@test\beamer@stoparticle% + \let\next=\article% + \else% + \ifx\beamer@test\beamer@stoppresentation% + \let\next=\presentation% + \else% + \ifx\beamer@test\beamer@stopcommon% + \let\next=\common% + \else% + \ifx\beamer@test\beamer@stopdocument% + \let\next=\beamer@enddocument% + \else + \ifx\beamer@test\beamer@begindocument% + \let\next=\beamer@startdocument% + \else + \let\next=\beamer@processline% + \fi% + \fi% + \fi% + \fi% + \fi% + \fi% + \fi% + \next} +\endgroup + +\def\beamer@enddocument{\beamer@closer\end{document}} +\def\beamer@startdocument{% + \beamer@closer + \begin{document}% + \gdef\beamer@closer{}% + \mode<all>} +\def\beamer@closer{} +\begingroup + \escapechar=-1\relax + \xdef\beamer@stopmode{\string\\mode} + \xdef\beamer@stopmodestar{\string\\mode*} + \xdef\beamer@stoparticle{\string\\article} + \xdef\beamer@stoppresentation{\string\\presentation} + \xdef\beamer@stopcommon{\string\\common} + \xdef\beamer@stopdocument{\string\\end\string\{document\string\}} + \xdef\beamer@begindocument{\string\\begin\string\{document\string\}} +\endgroup + +\newbox\beamer@commentbox +\def\beamer@startcommentinframe{% + \begingroup + \xdef\beamer@closer{\egroup\beamer@closer}% + \setbox\beamer@commentbox=\vbox\bgroup\leavevmode} + +\def\beamer@outsidemode{\afterassignment\beamer@treat\let\beamer@nexttoken=} + +% Deals with the various tokens that need to be 'active' even when skipping +% material outside frames +\def\beamer@treat{% + \ifx\beamer@nexttoken\frame\let\next=\beamer@stopoutsidemode\fi + \ifx\beamer@nexttoken\lecture\let\next=\beamer@stopoutsidemode\fi + \ifx\beamer@nexttoken\note\let\next=\beamer@stopoutsidemode\fi + \ifx\beamer@nexttoken\appendix\let\next=\beamer@stopoutsidemode\fi + \ifx\beamer@nexttoken\againframe\let\next=\beamer@stopoutsidemode\fi + \ifx\beamer@nexttoken\section\let\next=\beamer@stopoutsidemode\fi + \ifx\beamer@nexttoken\subsection\let\next=\beamer@stopoutsidemode\fi + \ifx\beamer@nexttoken\subsubsection\let\next=\beamer@stopoutsidemode\fi + \ifx\beamer@nexttoken\part\let\next=\beamer@stopoutsidemode\fi + \ifx\beamer@nexttoken\article\let\next=\beamer@stopoutsidemode\fi + \ifx\beamer@nexttoken\mode\let\next=\beamer@stopoutsidemode\fi + \ifx\beamer@nexttoken\common\let\next=\beamer@stopoutsidemode\fi + \ifx\beamer@nexttoken\presentation\let\next=\beamer@stopoutsidemode\fi + \ifx\beamer@nexttoken\begin\let\next=\beamer@checkbeginframe\fi + \ifx\beamer@nexttoken\end\let\next=\beamer@checkenddoc\fi + \next} + +\def\beamer@stopoutsidemode{\beamer@nexttoken} +\def\beamer@checkenddoc#1{% + \def\beamer@temp{#1}% + \ifx\beamer@temp\beamer@enddoc + \let\next=\beamer@enddocument + \else + \let\next=\beamer@outsidemode + \fi + \next} +\def\beamer@enddoc{document} + +\def\beamer@checkbeginframe#1{% + \def\beamer@temp{#1}% + \ifx\beamer@temp\beamer@frametext + \let\next=\beamer@beginframeenv + \else + \let\next=\beamer@outsidemode + \fi + \next} +\def\beamer@beginframeenv{\begin{frame}} + +\def\beamer@modeoutsideframe{% + \beamer@closer + \gdef\beamer@closer{}% + \gdef\beamer@mode{\beamer@modeoutsideframe}% + \ifbeamer@inpresentation + \let\next=\beamer@outsidemode + \else + \let\next=\relax + \fi% + \next} + +% Obsolete, do not use! +\newrobustcmd*\presentation{\mode<presentation>} +\newrobustcmd*\article{\mode<article>} +\newrobustcmd*\common{\mode<all>} + +% +% Mode command +% +\newrobustcmd*\mode{\@ifstar\beamer@modeoutsideframe\beamer@@@mode} +\def\beamer@@@mode<#1>{% + \beamer@closer + \@ifnextchar\bgroup + {\beamer@modeinline<#1>}% + {\beamer@switchmode<#1>}} +\long\def\beamer@modeinline<#1>#2{% + \gdef\beamer@closer{}% + \gdef\beamer@doifnotinframe{\@gobble}% + \def\beamer@doifinframe{\@firstofone}% + \begingroup + \beamer@saveanother + \beamer@slideinframe=1\relax% + \beamer@masterdecode{#1}% + \beamer@restoreanother + \endgroup + \beamer@donow{#2}% + \beamer@mode\par} +\def\beamer@switchmode<#1>{% + \gdef\beamer@mode{\beamer@switchmode<#1>}% + \gdef\beamer@doifnotinframe{% + \let\next=\beamer@startcomment + \gdef\beamer@closer{\endgroup}% + }% + \def\beamer@doifinframe{% + \let\next=\relax + \gdef\beamer@closer{}% + }% + \begingroup + \beamer@saveanother + \beamer@slideinframe=1\relax% + \beamer@masterdecode{#1}% + \beamer@restoreanother + \endgroup + \beamer@donow + \next} + +\def\beamer@saveanother{\let\beamer@savedif=\ifbeamer@anotherslide} +\def\beamer@restoreanother{\global\let\ifbeamer@anotherslide=\beamer@savedif} + +\mode +<all> + +\newcount\beamer@modecount +\def\beamer@pushmode#1{% + \expandafter\gdef\csname beamer@savedmode@\the\beamer@modecount\endcsname{#1}% + \global\advance\beamer@modecount by1\relax} +\def\beamer@popmode{ + \global\advance\beamer@modecount by-1\relax% + \csname beamer@savedmode@\the\beamer@modecount\endcsname} + +\def\beamer@savemode{\expandafter\beamer@pushmode\expandafter{\beamer@mode}} +\def\beamer@resumemode{\beamer@popmode} + +% +% Stuff needed in both article and presentation version +% +\newcommand*\jobnamebeamerversion{} + +\newrobustcmd*\includeslide[2][]{% + \ifx\jobnamebeamerversion\@empty + \ClassError{beamer}{Invoke macro "setjobnamebeamerversion" first}\@ehc + \else + \edef\beamer@args + {[{#1,page=\csname beamer@slide#2\endcsname}]{\jobnamebeamerversion}}% + \expandafter\pgfimage\beamer@args + \fi} + +\newrobustcmd*\setjobnamebeamerversion[1]{% + \gdef\jobnamebeamerversion{#1}% + \begingroup + \makeatletter + \@input{\jobnamebeamerversion.snm}% + \endgroup} |