You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
251 lines
7.3 KiB
251 lines
7.3 KiB
% 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}
|
|
|