summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/beamer/base/beamerbasesection.sty
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/beamer/base/beamerbasesection.sty')
-rw-r--r--macros/latex/contrib/beamer/base/beamerbasesection.sty398
1 files changed, 398 insertions, 0 deletions
diff --git a/macros/latex/contrib/beamer/base/beamerbasesection.sty b/macros/latex/contrib/beamer/base/beamerbasesection.sty
new file mode 100644
index 0000000000..9193f5ca45
--- /dev/null
+++ b/macros/latex/contrib/beamer/base/beamerbasesection.sty
@@ -0,0 +1,398 @@
+% 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
+%
+% 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.
+
+\mode
+<all>
+{
+ \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
+<presentation>
+
+%
+% 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<all>%
+ \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
+<all>
+{
+ \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
+<article>
+{
+ \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{%
+ \beamer@savemode
+ \mode<all>%
+ \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
+<all>
+{
+ \newrobustcmd\AtBeginPart[1]{%
+ \def\beamer@atbeginpart{#1}}
+ \AtBeginPart{}
+}
+
+\mode
+<article>
+{
+ \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{%
+ \beamer@savemode%
+ \mode<all>%
+ \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
+<all>
+{
+ \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
+<article>
+{
+ \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{%
+ \beamer@savemode%
+ \mode<all>%
+ \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
+<all>
+{
+ \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
+<article>
+{
+ \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{%
+ \beamer@savemode%
+ \mode<all>%
+ \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
+<all>
+{
+ \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
+<article>
+{
+ \renewcommand<>{\subsubsection}{\alt#1{\beameroriginal\subsubsection}{\beamer@secgobble}}
+}
+
+
+%
+% Appendix stuff
+%
+
+\newif\ifbeamer@inappendix
+
+\newcommand<>\beamer@appendix{}
+\def\beamer@resetappendix{\global\let\appendix\beamer@appendix}
+\newcommand<>\appendix{%
+ \beamer@inappendixtrue%
+ \only#1{\part{\appendixname}%
+ \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}}}%
+ \beamer@resetappendix}%
+}
+
+\def\insertappendixframenumber{\the\numexpr\inserttotalframenumber-\insertmainframenumber\relax}
+\def\insertframenumberinappendix{\ifbeamer@inappendix\the\numexpr\insertframenumber-\insertmainframenumber\relax\else0\fi}
+
+\mode
+<article>
+{
+ \ifx\appendix\@undefined
+ \else
+ \renewcommand<>{\appendix}{\only#1{\beameroriginal\appendix}}
+ \fi
+}
+
+
+\mode
+<all>