% Copyright 2003--2007 by Till Tantau % Copyright 2010 by Vedran Mileti\'c % Copyright 2012,2013,2015 by Vedran Mileti\'c, Joseph Wright % Copyright 2017,2018 by Louis Stuart, Joseph Wright % Copyright 2021-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 { \def\beamer@secgobble{\beamer@savemode\@ifnextchar*{\beamer@secstargobble}{\beamer@sec@gobbleoptional}} \def\beamer@secstargobble*{\beamer@sec@gobbleoptional} \newcommand\beamer@sec@gobbleoptional[2][]{\beamer@resumemode} \def\secname{} \def\subsecname{} \def\subsubsecname{} } \mode % % Lecture Definitions % \newif\ifbeamer@inlecture \beamer@inlecturetrue \newcommand{\beamer@if@in@clist@TF}[2]{% \def\beamer@if@in@clist@aux##1,#2,{}% \expandafter\expandafter\expandafter\ifx \expandafter\expandafter\expandafter\@nil \expandafter\beamer@if@in@clist@aux\expandafter,#1,{}{},#2,\@nil \expandafter\@secondoftwo \else \expandafter\@firstoftwo \fi } \newcounter{lecture} \renewcommand\thelecture{\@arabic\c@lecture} \let\insertlecturenumber=\thelecture \newrobustcmd*\lecture{\@dblarg\beamer@lecture} \long\def\beamer@lecture[#1]#2#3{% \beamer@savemode \mode% \refstepcounter{lecture}% \def\beamer@currentlecturelabel{#3}% \@onelevel@sanitize\beamer@currentlecturelabel \def\beamer@lecturename{#2}% \def\beamer@shortlecturename{#1}% \ifx\beamer@onlylecture\@empty \else \expandafter\beamer@if@in@clist@TF\expandafter\beamer@onlylecture \expandafter{\beamer@currentlecturelabel}% {\beamer@inlecturetrue}% {\beamer@inlecturefalse}% \fi \beamer@atbeginlecture \beamer@resumemode } \mode { \newrobustcmd\AtBeginLecture[1]{% \def\beamer@atbeginlecture{#1}} \AtBeginLecture{} \newrobustcmd*\includeonlylecture[1]{% \def\beamer@onlylecture{#1}% \@onelevel@sanitize\beamer@onlylecture } \includeonlylecture{} } \newrobustcmd*\insertlecture{\beamer@lecturename} \newrobustcmd*\insertshortlecture[1][]{% \begingroup \beamer@setupshort{#1}% \beamer@insertshort{\beamer@shortlecturename}% \endgroup} \mode
{ \newrobustcmd*\lecture[3][]{\def\insertlecture{#2}\def\insertshortlecture{#1}} } % % Part Definitions % \newcounter{part} \renewcommand\thepart{\@arabic\c@part} \beamer@partstartpage=1 \newcommand<>{\part}{\alt#1{\@dblarg\beamer@part}{\beamer@gobbleoptional}} \long\def\beamer@part[#1]#2{% \GetTitleString{#1}% \let\@currentlabelname\GetTitleStringResult \beamer@savemode \mode% \ifbeamer@inlecture \refstepcounter{part}% \def\beamer@partname{#2}% \def\beamer@partnameshort{#1}% \addtocontents{nav}{\protect\headcommand{\protect\partentry{#2}{\the\c@part}}}% \xdef\partlink{{Navigation\the\c@page}{\noexpand\beamer@partname}}% \xdef\partlinkshort{{Navigation\the\c@page}{\noexpand\beamer@partnameshort}}% \beamer@tempcount=\c@page\advance\beamer@tempcount by -1% \addtocontents{nav}{\protect\headcommand{% \protect\beamer@partpages{\the\beamer@partstartpage}{\the\beamer@tempcount}}}% \addtocontents{nav}{\protect\headcommand{% \protect\beamer@sectionpages{\the\beamer@sectionstartpage}{\the\beamer@tempcount}}}% \addtocontents{nav}{\protect\headcommand{% \protect\beamer@subsectionpages{\the\beamer@subsectionstartpage}{\the\beamer@tempcount}}}% \beamer@partstartpage=\c@page \beamer@sectionstartpage=\c@page \beamer@subsectionstartpage=\c@page \setcounter{subsection}{0}% \protected\def\insertsection{}% \protected\def\insertsubsection{}% \protected\def\insertsubsubsection{}% \protected\def\insertsectionhead{}% \protected\def\insertsubsectionhead{}% \protected\def\insertsubsubsectionhead{}% \def\lastsubsection{}% \protected\def\insertpart{\expandafter\hyperlink\partlink}% \Hy@writebookmark{\the\c@part}{#1}{Outline\the\c@part}{1}{toc}% \hyper@anchorstart{Outline\the\c@part}\hyper@anchorend \beamer@atbeginpart \fi% \beamer@resumemode}% \def\insertpart{} \def\partlinkshort{{Navigation1}{}} \newrobustcmd*\insertromanpartnumber{\@Roman\c@part} \newrobustcmd*\insertpartnumber{\@arabic\c@part} \newrobustcmd*\insertshortpart[1][]{% \begingroup \beamer@setupshort{#1}% \beamer@insertshort{\expandafter\hyperlink\partlinkshort}% \endgroup} \mode { \newrobustcmd\AtBeginPart[1]{% \def\beamer@atbeginpart{#1}} \AtBeginPart{} } \mode
{ \ifx\part\@undefined% \else \renewcommand<>{\part}{\alt#1{\beameroriginal\part}{\beamer@gobbleoptional}} \fi } % % Section Definitions % \def\sectionname{\translate{Section}} \newcounter{section} \renewcommand\thesection{\@arabic\c@section} \beamer@sectionstartpage=1\relax \beamer@tocsectionnumber=0\relax \newcommand<>{\section}{\alt#1{\@ifnextchar[\beamer@section\beamer@@section}{\beamer@secgobble}} \def\beamer@@section{\@ifnextchar*\beamer@@ssection\beamer@@@section} \long\def\beamer@@ssection*#1{\beamer@section[{#1}]{}} \long\def\beamer@@@section#1{\beamer@section[{#1}]{#1}} \long\def\beamer@section[#1]#2{% \GetTitleString{#1}% \let\@currentlabelname\GetTitleStringResult \beamer@savemode% \mode% \ifbeamer@inlecture \refstepcounter{section}% \ifblank{#2}% {\long\def\secname{#1}\long\def\lastsection{#1}}% {\global\advance\beamer@tocsectionnumber by 1\relax% \long\def\secname{#2}% \long\def\lastsection{#1}% \addtocontents{toc}{\protect\beamer@sectionintoc{\the\c@section}{#2}{\the\c@page}{\the\c@part}% {\the\beamer@tocsectionnumber}}}% {\let\\=\relax\xdef\sectionlink{{Navigation\the\c@page}{\noexpand\secname}}}% \beamer@tempcount=\c@page\advance\beamer@tempcount by -1% \addtocontents{nav}{\protect\headcommand{\protect\beamer@sectionpages{\the\beamer@sectionstartpage}{\the\beamer@tempcount}}}% \addtocontents{nav}{\protect\headcommand{\protect\beamer@subsectionpages{\the\beamer@subsectionstartpage}{\the\beamer@tempcount}}}% \ifblank{#1}{}{% \addtocontents{nav}{\protect\headcommand{\protect\sectionentry{\the\c@section}{#1}{\the\c@page}{\secname}{\the\c@part}}}% }% \beamer@sectionstartpage=\c@page% \beamer@subsectionstartpage=\c@page% \def\insertsection{\expandafter\hyperlink\sectionlink}% \def\insertsubsection{}% \def\insertsubsubsection{}% % Deal with a defective patch in metropolis theme \def\insertsectionhead{\hyperlink{Navigation\the\c@page}{#1}}% \edef\insertsectionhead{\noexpand\hyperlink{Navigation\the\c@page}{\unexpanded{#1}}}% \def\insertsubsectionhead{}% \def\insertsubsubsectionhead{}% \def\lastsubsection{}% \Hy@writebookmark{\the\c@section}{\secname}{Outline\the\c@part.\the\c@section}{2}{toc}% \hyper@anchorstart{Outline\the\c@part.\the\c@section}\hyper@anchorend% \ifblank{#2}{\beamer@atbeginsections}{\beamer@atbeginsection}% \fi% \beamer@resumemode}% \def\insertsection{} \def\insertsectionhead{} \def\insertsectionnumber{\@arabic\c@section} \def\breakhere{\protect\beamer@breakhere} \def\beamer@breakhere{} \mode { \newrobustcmd*\AtBeginSection{\@ifnextchar[{\beamer@AtBeginSection}{\beamer@@AtBeginSection}} \long\def\beamer@@AtBeginSection#1{\beamer@AtBeginSection[{#1}]{#1}} \long\def\beamer@AtBeginSection[#1]#2{% \def\beamer@atbeginsection{#2}% \def\beamer@atbeginsections{#1}% } \AtBeginSection{} } \mode
{ \renewcommand<>{\section}{\alt#1{\beameroriginal\section}{\beamer@secgobble}} } % % Subsection Definitions % \def\subsectionname{\translate{Subsection}} \newcounter{subsection}[section] \renewcommand\thesubsection{\@arabic\c@subsection} \beamer@subsectionstartpage=1 \newcommand<>{\subsection}{\alt#1{\@ifnextchar[\beamer@subsection\beamer@@subsection}{\beamer@secgobble}} \def\beamer@@subsection{\@ifnextchar*\beamer@@ssubsection\beamer@@@subsection} \long\def\beamer@@ssubsection*#1{\beamer@subsection[{#1}]{}} \def\beamer@@@subsection#1{\beamer@subsection[{#1}]{#1}} \def\beamer@subsection[#1]#2{% \GetTitleString{#1}% \let\@currentlabelname\GetTitleStringResult \beamer@savemode% \mode% \ifbeamer@inlecture% \refstepcounter{subsection}% \ifblank{#2}{\long\def\subsecname{#1}\long\def\lastsubsection{#1}} {% \long\def\subsecname{#2}% \long\def\lastsubsection{#1}% \addtocontents{toc}{\protect\beamer@subsectionintoc{\the\c@section}{\the\c@subsection}{#2}{\the\c@page}{\the\c@part}{\the\beamer@tocsectionnumber}}% }% \beamer@tempcount=\c@page\advance\beamer@tempcount by -1% \addtocontents{nav}{\protect\headcommand{\protect\beamer@subsectionpages{\the\beamer@subsectionstartpage}{\the\beamer@tempcount}}} \ifblank{#1}{}{% \addtocontents{nav}{\protect\headcommand{\protect\beamer@subsectionentry{\the\c@part}{\the\c@section}{\the\c@subsection}{\the\c@page}{\lastsubsection}}} }% \beamer@subsectionstartpage=\c@page% \edef\subsectionlink{{Navigation\the\c@page}{\noexpand\subsecname}}% \def\insertsubsection{\expandafter\hyperlink\subsectionlink}% \def\insertsubsubsection{}% % Deal with a faulty patch in metropolis theme \def\insertsubsectionhead{\hyperlink{Navigation\the\c@page}{#1}}% \edef\insertsubsectionhead{\noexpand\hyperlink{Navigation\the\c@page}{\unexpanded{#1}}}% \def\insertsubsubsectionhead{}% \Hy@writebookmark{\the\c@subsection}{\subsecname}{Outline\the\c@part.\the\c@section.\the\c@subsection.\the\c@page}{3}{toc}% \hyper@anchorstart{Outline\the\c@part.\the\c@section.\the\c@subsection.\the\c@page}\hyper@anchorend% \ifblank{#2}{\beamer@atbeginsubsections}{\beamer@atbeginsubsection}% \fi% \beamer@resumemode} \def\insertsubsection{} \def\insertsubsectionnumber{\@arabic\c@subsection} \def\insertsubsectionhead{} \def\lastsubsection{} \mode { \newrobustcmd*\AtBeginSubsection{\@ifnextchar[{\beamer@AtBeginSubsection}{\beamer@@AtBeginSubsection}} \long\def\beamer@@AtBeginSubsection#1{\beamer@AtBeginSubsection[{#1}]{#1}} \long\def\beamer@AtBeginSubsection[#1]#2{% \def\beamer@atbeginsubsection{#2}% \def\beamer@atbeginsubsections{#1}} \AtBeginSubsection{} } \mode
{ \renewcommand<>{\subsection}{\alt#1{\beameroriginal\subsection}{\beamer@secgobble}} } % % Subsubsection Definitions % \newcounter{subsubsection}[subsection] \renewcommand\thesubsubsection{\@arabic\c@subsubsection} \beamer@subsectionstartpage=1 \newcommand<>{\subsubsection}{\alt#1{\@ifnextchar[\beamer@subsubsection\beamer@@subsubsection}{\beamer@secgobble}} \def\beamer@@subsubsection{\@ifnextchar*\beamer@@ssubsubsection\beamer@@@subsubsection} \long\def\beamer@@ssubsubsection*#1{\beamer@subsubsection[{#1}]{}} \def\beamer@@@subsubsection#1{\beamer@subsubsection[{#1}]{#1}} \def\beamer@subsubsection[#1]#2{% \GetTitleString{#1}% \let\@currentlabelname\GetTitleStringResult \beamer@savemode% \mode% \ifbeamer@inlecture% \refstepcounter{subsubsection}% \ifblank{#2}{\long\def\subsubsecname{#1}\long\def\lastsubsubsection{#1}} {% \long\def\subsubsecname{#2}% \long\def\lastsubsubsection{#1}% \addtocontents{toc}{\protect\beamer@subsubsectionintoc% {\the\c@section}{\the\c@subsection}{\the\c@subsubsection}{#2}{\the\c@page}{\the\c@part}{\the\beamer@tocsectionnumber}}% }% \ifblank{#1}{}{% \addtocontents{nav}{\protect\headcommand{\protect\beamer@subsubsectionentry% {\the\c@part}{\the\c@section}{\the\c@subsection}{\the\c@subsubsection}{\the\c@page}{\lastsubsubsection}}}% } \edef\subsubsectionlink{{Navigation\the\c@page}{\noexpand\subsubsecname}}% \def\insertsubsubsection{\expandafter\hyperlink\subsubsectionlink}% \edef\insertsubsubsectionhead{\noexpand\hyperlink{Navigation\the\c@page}{\unexpanded{#1}}} \Hy@writebookmark{\the\c@subsubsection}{\subsubsecname}{Outline\the\c@part.\the\c@section.\the\c@subsection.\the\c@subsubsection.\the\c@page}{4}{toc}% \hyper@anchorstart{Outline\the\c@part.\the\c@section.\the\c@subsection.\the\c@subsubsection.\the\c@page}\hyper@anchorend% \ifblank{#2}{\beamer@atbeginsubsubsections}{\beamer@atbeginsubsubsection}% \fi% \beamer@resumemode} \def\insertsubsubsection{} \def\insertsubsubsectionnumber{\@arabic\c@subsubsection} \def\insertsubsubsectionhead{} \mode { \newrobustcmd*\AtBeginSubsubsection{\@ifnextchar[{\beamer@AtBeginSubsubsection}{\beamer@@AtBeginSubsubsection}} \long\def\beamer@@AtBeginSubsubsection#1{\beamer@AtBeginSubsubsection[{#1}]{#1}} \long\def\beamer@AtBeginSubsubsection[#1]#2{% \def\beamer@atbeginsubsubsection{#2}% \def\beamer@atbeginsubsubsections{#1}} \AtBeginSubsubsection{} } \mode
{ \renewcommand<>{\subsubsection}{\alt#1{\beameroriginal\subsubsection}{\beamer@secgobble}} } % % Appendix stuff % \newif\ifbeamer@inappendix \newcommand<>\beamer@appendix{} \def\beamer@resetappendix{\global\let\appendix\beamer@appendix} \def\beamer@appendixwrite{% \immediate\write\@auxout{\string\@writefile{nav}% {\noexpand\headcommand{\noexpand\gdef\noexpand\insertmainframenumber{\the\c@framenumber}}}}% \addtocontents{nav}{\protect\headcommand{\protect\beamer@appendixpages{\the\c@page}}}% } \newcommand<>\appendix{% \beamer@inappendixtrue% \only#1{% \part{\appendixname}% \beamer@appendixwrite% \beamer@resetappendix% }% } \def\insertappendixframenumber{\the\numexpr\inserttotalframenumber-\insertmainframenumber\relax} \def\insertframenumberinappendix{\ifbeamer@inappendix\the\numexpr\insertframenumber-\insertmainframenumber\relax\else0\fi} \mode
{ \ifx\appendix\@undefined \else \renewcommand<>{\appendix}{\only#1{\beameroriginal\appendix}} \fi } \mode