% Copyright 2003--2007 by Till Tantau % Copyright 2010 by Vedran Mileti\'c % Copyright 2011,2015 by Vedran Mileti\'c, Joseph Wright % Copyright 2022-2024 by Joseph Wright, samcarter % % 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 LICENSE.md for more details. \mode \define@key{beamerframe}{allowdisplaybreaks}[4]{% \def\beamer@displaybreak{\allowdisplaybreaks[{#1}]}} \define@key{beamerframe}{allowframebreaks}[0.95]{% \def\beamer@autobreakfactor{#1}\beamer@autobreaktrue} \define@key{beamerframe}{squeeze}[]{% \def\beamer@cramped{\itemsep0pt\topsep0.5pt\relax}} \define@key{beamerframe}{shrink}[0]{% \def\beamer@shrinkpercentage{#1}% \@tempdima=-#1pt% \@tempdima=0.01\@tempdima% \advance\@tempdima by1pt% \edef\beamer@shrinkfactor{\strip@pt\@tempdima}% \@tempcnta=\@tempdima% \divide\@tempcnta by256\relax% \@tempdima=256pt% \divide\@tempdima by\@tempcnta% \edef\beamer@shrinkfactorinv{\strip@pt\@tempdima}% \beamer@shrinktrue% \def\beamer@cramped{\itemsep0pt\topsep0.5pt\relax}} % % Zoom stuff % \define@key{beamerzoom}{border}[1]{\def\beamer@zoomborderwidth{#1}} \def\framezoom<#1><#2>{\@ifnextchar[{\beamer@framezoom<#1><#2>}{\beamer@framezoom<#1><#2>[]}} \def\beamer@framezoom<#1><#2>[#3](#4,#5)(#6,#7){% \par\nointerlineskip% \global\beamer@slidehaszoomtrue% \advance\beamer@zoomcount by1\relax% \def\beamer@zoomborderwidth{0}% \edef\beamer@labelzoomed{beamer@labelzoomed@\the\beamer@zoomframecount @\the\beamer@zoomcount}% \setkeys{beamerzoom}{#3}% \only<#1>{% {\hypersetup{pdfhighlight={/P},pdfborder={0 0 \beamer@zoomborderwidth}}% \global\setbox\@tempboxa=\vbox{\hyperlink{\beamer@labelzoomed}{% \expandafter\ifx\csname XeTeXrevision\endcsname\relax% \else% \special{pdf:xann width #6 height #7 depth 0pt}% \fi% \vbox to #7{% \hbox to#6{\hfil}% \vfil% }% }}}% \ht\@tempboxa=0pt% \wd\@tempboxa=0pt% \dp\@tempboxa=0pt% \setbox\@tempboxa=\vbox{\moveright#4\hbox{\lower#5\vbox{\box\@tempboxa}}}% \ht\@tempboxa=0pt% \wd\@tempboxa=0pt% \dp\@tempboxa=0pt% \global\setbox\beamer@zoombox=\vbox to0pt{\unvbox\beamer@zoombox\box\@tempboxa}% }% \only<#2>{% \@ifundefined{\beamer@labelzoomed}% {% \hypertarget{\beamer@labelzoomed}{}% \expandafter\gdef\csname\beamer@labelzoomed\endcsname{}% }{}% \gdef\beamer@zoomer{% % compute zoom factor \@tempdima=\beamer@frametextheight% \@tempdimb=#7\relax% \@tempcnta=\@tempdimb% \divide\@tempcnta by4096\relax% \multiply\@tempdima by16\relax% \divide\@tempdima by\@tempcnta% \@tempdimb=\paperwidth% \ifbeamer@plainframe% \else% \advance\@tempdimb by-\beamer@leftsidebar% \advance\@tempdimb by-\beamer@rightsidebar\relax% \fi% \@tempdimc=#6\relax% \@tempcntb=\@tempdimc% \divide\@tempcntb by4096\relax% \multiply\@tempdimb by16\relax% \divide\@tempdimb by\@tempcntb% \ifdim\@tempdimb<\@tempdima% \@tempdima=\@tempdimb% \fi% \edef\beamer@temp{\strip@pt\@tempdima}% \@tempdimc=\beamer@frametextheight% \advance\@tempdimc by4pt% \@tempdimb=\paperwidth% \ifbeamer@plainframe% \else% \advance\@tempdimb by-\beamer@leftsidebar% \advance\@tempdimb by-\beamer@rightsidebar\relax% \fi% \setbox\@tempboxa=\vbox{\hsize=\@tempdimb\Acrobatmenu{GoBack}{\vbox to \beamer@frametextheight{\hbox to\@tempdimb{\hfil}\vfil}}}% \ht\@tempboxa=0pt% \wd\@tempboxa=0pt% \dp\@tempboxa=0pt% \setbox\beamer@framebox=\vbox to\beamer@frametextheight{{% \ifbeamer@plainframe\beamer@leftmargin=\Gm@lmargin\fi% \begin{pgfpicture}{\beamer@leftmargin}{-\beamer@frametextheight}{\beamer@leftmargin}{0pt} \pgftext[left,top]{\box\@tempboxa} \pgfpathrectangle{\pgfpoint{0pt}{-\@tempdimc}}{\pgfpoint{\@tempdimb}{\@tempdimc}}% \pgfusepath{clip} \begingroup \pgftransformscale{\beamer@temp} \@tempdima=#4\relax% \@tempdimb=#5\relax% {\pgftransformshift{\pgfpoint{-\@tempdima}{\@tempdimb}}% \pgftext[left,top]{\vbox{\vbox{}\nointerlineskip\unvbox\beamer@framebox}}} \endgroup \end{pgfpicture}% }}% \setbox\beamer@framebox=\vbox{% \nobreak\vbox{}\nobreak\par\nobreak\beamer@entrycode\nobreak% \nointerlineskip\unvbox\beamer@frametitlebox% \nobreak% \box\beamer@framebox% \nobreak% \vss% \beamer@exitcode% }% \global\setbox\beamer@footins=\box\voidb@x% no footnotes in zoomed slides }% }% } \mode
{ \def\framezoom<#1><#2>{\@ifnextchar[{\beamer@framezoom<#1><#2>}{\beamer@framezoom<#1><#2>[]}} \def\beamer@framezoom<#1><#2>[#3](#4,#5)(#6,#7){} } % % Shrink stuff % \def\beamer@shrinkframebox{% \@tempdima=\ht\beamer@framebox% % \ifdim\@tempdima>\beamer@frametextheight% \@tempcnta=\@tempdima% \divide\@tempcnta by 65536\relax% \@tempdimc=\beamer@frametextheight% \divide\@tempdimc by\@tempcnta\relax% \ifdim\@tempdimc>\beamer@shrinkfactor pt% \@tempdimc=\beamer@shrinkfactor pt% \else% \@tempdima=-100\@tempdimc% \advance\@tempdima by100pt% \ClassWarning{beamer}{Frame text is shrunk by a factor of % \strip@pt\@tempdima\space percent instead of \beamer@shrinkpercentage\space percent}% \fi% \edef\beamer@factortemp{\strip@pt\@tempdimc}% \setbox\beamer@framebox=\vbox to\beamer@frametextheight{% \begin{pgfpicture}{0pt}{-\beamer@frametextheight}{0pt}{0pt} {\pgftransformscale{\beamer@factortemp}% \pgftext[left,top]{\box\beamer@framebox}}% \end{pgfpicture}% }% % \fi% } % % Auto break stuff % \splittopskip=10pt \newbox\beamer@splitbox \newcount\beamer@autobreakcount \newdimen\beamer@autobreaklastheight \def\beamer@autobreakframe{% \beamer@slideinframe=1\relax% \advance\beamer@autobreakcount by1\relax% \begin{beamer@frameslide}\relax% \bgroup% \aftergroup\beamer@endautobreak% \afterassignment\beamer@checkframetitle% \let\beamer@next% gobble opening brace } \def\beamer@endautobreak{\end{beamer@frameslide}% \beamer@writeslidentry% \ifvoid\beamer@splitbox% \let\beamer@next=\beamer@reseteecodes% \else% \let\beamer@next=\beamer@continueautobreak% \fi% \beamer@next% } \def\beamer@autobreakframebox{% \global\setbox\beamer@splitbox=\box\voidb@x% \ifbeamer@autobreak% % Ok, frame was overful -> split it! \splittopskip\baselineskip% \setbox\@tempboxa=\vsplit\beamer@framebox to\beamer@autobreakfactor\textheight% \global\setbox\beamer@splitbox=\box\beamer@framebox% \@tempdima=\ht\beamer@splitbox% \ifdim\@tempdima<\beamer@autobreaklastheight% \global\beamer@autobreaklastheight=\@tempdima\relax% \else% \setbox\@tempboxa=\vbox{\unvbox\@tempboxa\unvbox\beamer@splitbox}% \global\setbox\beamer@splitbox=\box\voidb@x% \fi% \setbox\beamer@framebox=\vbox to\textheight{\unvbox\@tempboxa% \vskip\beamer@framebottomskipautobreak% \ifvoid\beamer@splitbox% \ifvoid\beamer@footins% \else% \begingroup \usebeamercolor*[fg]{footnote}% \footnoterule% \unvbox \beamer@footins% \global\setbox\beamer@footins=\box\voidb@x% \endgroup \fi% \fi% \beamer@exitcode% }% \else% \setbox\beamer@framebox=\vbox to\textheight{\unvbox\beamer@framebox% \vskip\beamer@framebottomskip% \ifvoid\beamer@footins% \else% \begingroup \usebeamercolor*[fg]{footnote}% \footnoterule% \unvbox \beamer@footins% \global\setbox\beamer@footins=\box\voidb@x% \endgroup \fi% \beamer@exitcode}% \global\setbox\beamer@footins=\box\voidb@x% \fi% } \newtoks\beamer@frametitletoks \newtoks\beamer@framesubtitletoks \def\beamer@continueautobreak{% \ifbeamer@noframenumbering\else% \refstepcounter{framenumber}% \fi% \expandafter\beamer@frametitletoks\expandafter{\beamer@frametitle}% \expandafter\beamer@framesubtitletoks\expandafter{\beamer@shortframetitle}% \edef\beamer@callframetitle{\noexpand\frametitle[\the\beamer@framesubtitletoks]{\the\beamer@frametitletoks}}% \expandafter\expandafter\expandafter\beamer@autobreakframe \expandafter\expandafter\expandafter{% \expandafter\beamer@callframetitle% \expandafter\framesubtitle\expandafter{\insertframesubtitle}% \unvbox\beamer@splitbox}% } \newcommand\insertcontinuationcount{\the\beamer@autobreakcount} \newcommand\insertcontinuationcountroman{\@Roman\beamer@autobreakcount} \newcommand\insertcontinuationtext{(\translate{cont}.)} \mode