diff --git a/.gitmodules b/.gitmodules index 765c5ae..8d65c70 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,6 +1,3 @@ -[submodule "libs/awesome-beamer"] - path = libs/awesome-beamer - url = https://github.com/LukasPietzschmann/awesome-beamer.git [submodule "libs/smile"] path = libs/smile url = https://github.com/LukasPietzschmann/smile.git diff --git a/libs/awesome-beamer b/libs/awesome-beamer deleted file mode 160000 index 38d38ca..0000000 --- a/libs/awesome-beamer +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 38d38ca0973d36db72d417a4e7d5c561e7cee78e diff --git a/libs/awesome-beamer/.gitignore b/libs/awesome-beamer/.gitignore new file mode 100644 index 0000000..0db6f95 --- /dev/null +++ b/libs/awesome-beamer/.gitignore @@ -0,0 +1,24 @@ +*.aux +*.lof +*.log +*.lot +*.fls +*.out +*.toc +*.fmt +*.fot +*.cb +*.cb2 +.*.lb +*.snm +*.nav +*.fdb_latexmk + +*.bbl +*.bcf +*.blg +*-blx.aux +*-blx.bib +*.run.xml + +**/aux/ diff --git a/libs/awesome-beamer/LICENSE b/libs/awesome-beamer/LICENSE new file mode 100644 index 0000000..787c9ae --- /dev/null +++ b/libs/awesome-beamer/LICENSE @@ -0,0 +1,28 @@ +BSD 3-Clause License + +Copyright (c) 2022-2024, Lukas Pietzschmann + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/libs/awesome-beamer/README.md b/libs/awesome-beamer/README.md new file mode 100644 index 0000000..31bf256 --- /dev/null +++ b/libs/awesome-beamer/README.md @@ -0,0 +1,28 @@ +# Awesome-Beamer +The kinda awesome beamer theme! + +## Using the theme +First of all you will need the [smile](https://github.com/LukasPietzschmann/smile) package. If that's available, just copy and paste `beamerthemeawesome.sty` into your project, add `\usetheme{awesome}` into your main file and you're good to go :) + +## Options +This theme provides some settings you can tweak: +- Language: Possible values are `english` or `german`. This changes the value passed to babel and csquotes. If none of both is selected, `german` is used. +- Extra slides: For each section and subsection an extra slide containing the title can be inserted. This is controlled by passing `secslide` or/and `subsecslide`. The absence of `secslide` indicates that you don't want an extra slide for every section. Analog for `subsecslide`. +- Automatic toc: A table of contents is automatically inserted with the `\maketitle` command (After the title slide). If you want to disable this behavior, you have to set the `notoc` option. +- Section numbers in frame title: Each frage contains the current section (and subsection) number in its title. To disable this, you have to pass the `nonumbersinframetitle` option. If you disable section numbers in the title, and you use use the `wide` environment inside a frame, it can look weird when the title is shifted to the right, but the content is not. To cope with this, you can pass the `wide` option to the frame. This will also shift the title to the left. +- Others: Every option that is not recognized by awesome-beamer will be passed to [smile](https://github.com/LukasPietzschmann/smile). + +If you wanna set one (or more) of those values, you have to pass it to `\usetheme`. The usage of different options can be seen in the examples below (just click on the 'Repo' link). + +## Compilation +Using this theme requires you to run your compiler multiple times on your main LaTeX file. This is required for those litte dots in the footer to work. +If you're using latexmk you don't have to do this manually as latexmk can figure this stuff out by itself. + + +## Example slides +I already prepared many presentations using this style. Here are some examples: +- [Haskell's lenses](https://raw.githubusercontent.com/LukasPietzschmann/haskell-lenses/build/slides/talk.pdf) ([Repo](https://github.com/LukasPietzschmann/haskell-lenses)) +- [Hydrogen is an energy carrier](https://raw.githubusercontent.com/LukasPietzschmann/hydrogen-energy/build/talk.pdf) ([Repo](https://github.com/LukasPietzschmann/hydrogen-energy)) +- [SIMD intrinsics](https://github.com/LukasPietzschmann/SIMD-Intrinsics/files/12775327/talk.pdf) ([Repo](https://github.com/LukasPietzschmann/SIMD-Intrinsics)) +- [Building a dataflow graph for java](https://github.com/LukasPietzschmann/java-dataflow-graph/files/13249805/main.pdf) ([Repo](https://github.com/LukasPietzschmann/java-dataflow-graph)) +- [Distributed configuration stores](https://github.com/LukasPietzschmann/Configuration-Stores/files/12793983/main.pdf) ([Repo](https://github.com/LukasPietzschmann/Configuration-Stores)) diff --git a/libs/awesome-beamer/beamerthemeawesome.sty b/libs/awesome-beamer/beamerthemeawesome.sty new file mode 100644 index 0000000..2b3aeb2 --- /dev/null +++ b/libs/awesome-beamer/beamerthemeawesome.sty @@ -0,0 +1,564 @@ +\ProvidesPackage{awesome-beamer-theme}[] + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\RequirePackage{kvoptions} +\SetupKeyvalOptions{family=awesome,prefix=awesome@} + +\newif\ifawesome@english@ +\DeclareVoidOption{english}{\awesome@english@true} +\DeclareVoidOption{german}{\awesome@english@false} + +\DeclareBoolOption{notoc} +\DeclareBoolOption{secslide} +\DeclareBoolOption{subsecslide} +\DeclareBoolOption{nonumbersinframetitle} + +\DeclareDefaultOption{\PassOptionsToPackage{\CurrentOption}{smile}} + +\ProcessKeyvalOptions* + +\ifawesome@english@\RequirePackage[french]{babel}\else\RequirePackage[ngerman]{babel}\fi + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\RequirePackage{calc} +\RequirePackage{microtype} +\RequirePackage{etoolbox} +\RequirePackage{tcolorbox} +\tcbuselibrary{skins} +\RequirePackage[ + tikz, + hyperref, + pdftitle={\noexpand\inserttitle}, + pdfauthor={\noexpand\insertauthor}, + pdfsubject={\noexpand\inserttitle} +]{smile} + +\usetikzlibrary{overlay-beamer-styles,decorations.markings} +\tikzset{ + node distance = 5mm, + invisible/.style={opacity=0}, + muted/.style={opacity=0.3}, + visible on/.style={alt={#1{}{invisible}}}, + hidden on/.style={alt={#1{invisible}{}}}, + muted on/.style={alt={#1{muted}{}}}, + unmuted on/.style={alt={#1{}{muted}}}, + alt/.code args={<#1>#2#3}{% + \alt<#1>{\pgfkeysalso{#2}}{\pgfkeysalso{#3}} + }, + modal background/.style={fill=gray,opacity=0.8}, + modal box/.style={draw=black,rnd,fill=white,lw,shadow,inner sep=3mm,text width=0.66\paperwidth}, + modal title/.style={roundednode,fill=black,text=white} +} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\def\maketitle{ + \begin{frame}[noframenumbering,plain] + \titlepage + \end{frame} + \ifawesome@notoc\else + \begin{frame}{Table des matières} + \tableofcontents + \end{frame} + \fi +} + +\let\oldft\frametitle +\renewcommand\frametitle[2][]{% + \ifx\relax#1\relax\oldft{#2}\else% + \ifnum\beamer@autobreakcount>0\oldft[#1]{#2}\else% + \oldft{#2\hfill\normalfont\large\color{darkgray}\raisebox{0.3ex}{#1}}% + \fi% + \fi% +} + +\BeforeBeginEnvironment{tabular}{\def\arraystretch{1.1}} + +\providebool{wideframe} +\define@key{beamerframe}{wide}[true]{ + \booltrue{wideframe} + \begingroup +} + +\apptocmd{\beamer@reseteecodes}{% + \ifbool{wideframe}{% + \endgroup + \boolfalse{wideframe} + }{} +}{}{} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\newcounter{framesinsection} +\newcounter{framesinsubsection} +\counterwithin*{framesinsection}{section} +\counterwithin*{framesinsubsection}{subsection} + +\def\stepframe{% + \ifbeamer@isfragile% + \stepcounter{framesinsection}% + \stepcounter{framesinsubsection}% + \else% + \ifbeamer@noframenumbering\else% + \stepcounter{framesinsection}% + \stepcounter{framesinsubsection}% + \fi% + \fi% + \ifnum\theframesinsection=0\setcounter{framesinsection}{1}\fi% + \ifnum\theframesinsubsection=0\setcounter{framesinsubsection}{1}\fi% +} + +\BeforeBeginEnvironment{frame}{\stepframe} +\pretocmd\againframe{\stepframe}{}{} + +\def\refreshcountsinaux{% + \immediate\write\@auxout{\global\noexpand\@namedef{s@totalsubsectionframes-\arabic{section}-\arabic{subsection}}{\theframesinsubsection}}% + \immediate\write\@auxout{\global\noexpand\@namedef{s@totalsectionframes-\arabic{section}}{\theframesinsection}}% +} + +\newcounter{secinc} +\pretocmd\section{% + % At this point, the section command has not yet incremented the section counter, so we need to do this by ourselves + \setcounter{secinc}{\thesection + 1}% + \refreshcountsinaux% + \immediate\write\@auxout{\global\noexpand\@namedef{s@frameatsecstart-\arabic{secinc}}{\insertframenumber}}% +}{}{} + +\newcounter{subsecinc} +\pretocmd\subsection{% + % At this point, the subsection command has not yet incremented the subsection counter, so we need to do this by ourselves + \setcounter{subsecinc}{\thesubsection + 1}% + \refreshcountsinaux% + \immediate\write\@auxout{\global\noexpand\@namedef{s@frameatsubsecstart-\arabic{section}-\arabic{subsecinc}}{\insertframenumber}}% +}{}{} + +\AtEndDocument{\refreshcountsinaux} + +\def\framespersection{% + \ifcsdef{s@totalsectionframes-\arabic{section}}{% + \csname s@totalsectionframes-\arabic{section}\endcsname% + }{0}% +} + +\def\framespersubsection{% + \ifcsdef{s@totalsubsectionframes-\arabic{section}-\arabic{subsection}}{% + \csname s@totalsubsectionframes-\arabic{section}-\arabic{subsection}\endcsname% + }{0}% +} + +\def\insertsectionstartframe{% + \ifcsdef{s@frameatsecstart-\arabic{section}}{% + \csname s@frameatsecstart-\arabic{section}\endcsname% + }{0}% +} + +\def\insertsubsectionstartframe{% + \ifcsdef{s@frameatsubsecstart-\arabic{section}-\arabic{subsection}}{% + \csname s@frameatsubsecstart-\arabic{section}-\arabic{subsection}\endcsname% + }{0}% +} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\setbeamercolor{alerted text}{fg=accent} + +\setbeamercolor{subtitle}{fg=darkgray} +\setbeamercolor{frametitle}{fg=black} +\setbeamercolor{framesubtitle}{fg=darkgray} + +\setbeamercolor{details}{fg=black} +\setbeamercolor{author}{fg=black} + +\setbeamercolor{section number projected}{bg=black, fg=accent} +\setbeamercolor{subsection number projected}{fg=lightgray, fg=accent} + +\setbeamercolor{structure}{fg=black} +\setbeamercolor{normal text}{fg=black} +\setbeamercolor{separator}{fg=accent, bg=accent} +\setbeamercolor{footline}{bg=lightgray} +\setbeamercolor{footlineright}{fg=white, bg=accent} + +\setbeamercolor{block body}{bg=lightgray} +\setbeamercolor{block title}{bg=black, fg=white} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\setbeamerfont{title}{ + size=\LARGE, + shape=\bfseries\scshape +} + +\setbeamerfont{subtitle}{ + size=\large, + shape=\normalfont +} + +\setbeamerfont{author}{ + size=\normalsize, + shape=\normalfont +} + +\setbeamerfont{details}{ + size=\footnotesize, + shape=\normalfont +} + +\setbeamerfont{footline}{ + size=\tiny, + shape=\normalfont +} + +\setbeamerfont{footnote}{ + size=\tiny, + shape=\normalfont +} + +\setbeamerfont{frametitle}{ + size=\LARGE, + shape=\bfseries\scshape +} + +\setbeamerfont{framesubtitle}{ + size=\normalsize, + shape=\normalfont +} + +\setbeamerfont{block title}{ + size=\normalfont, + shape=\strut +} + +\setbeamerfont{blockdef}{ + size=\large, + shape=\bfseries +} + +\setbeamerfont{description item}{ + shape=\bfseries +} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\newlength\awesome@sidebarwidth\setlength{\awesome@sidebarwidth}{0.15\paperwidth} +\newlength\awesome@textmargin\setlength{\awesome@textmargin}{0.05\paperwidth} +\setbeamersize{description width=0.5cm} +\setbeamersize{sidebar width left=\awesome@sidebarwidth} +\setbeamersize{sidebar width right=\z@} +\setbeamersize{text margin left=\awesome@textmargin} +\setbeamersize{text margin right=\awesome@textmargin} + +\setbeamertemplate{caption}{\insertcaption} +\setbeamertemplate{blocks}[rounded][shadow=false] +\setbeamertemplate{itemize item}[circle] +\setbeamertemplate{itemize subitem}[circle] + +\addtobeamertemplate{frametitle continuation}{\color{gray}(}{)} +\setbeamertemplate{navigation symbols}{} +\setbeamertemplate{headline}{} + +\setbeamertemplate{section in toc}{% + \usebeamercolor[fg]{section number projected}\inserttocsectionnumber.% + \usebeamercolor[fg]{normal text}~\inserttocsection% +} + +\newenvironment{wide}{\begingroup\leavevmode% + \hspace*{-\awesome@sidebarwidth}\fboxsep\z@\minipage{\linewidth+2cm}% +}{\endminipage\endgroup} + +\setbeamertemplate{subsection in toc}{% + \mbox{\hskip2em% + \usebeamercolor[fg]{section number projected}\inserttocsectionnumber.% + \usebeamercolor[fg]{subsection number projected}\textsubscript{\inserttocsubsectionnumber}% + \usebeamercolor[fg]{normal text}~\inserttocsubsection% + }% +} + +\setbeamertemplate{separator}{% + \usebeamercolor{separator}\textcolor{fg}{\rule{.7\textwidth}{\smile@linewidth}}% +} + +\setbeamertemplate{frametitle}{% + \vspace{1em}\ifawesome@nonumbersinframetitle\ifbool{wideframe}{\hspace{-\awesome@sidebarwidth}}{}\else\hspace{-\awesome@sidebarwidth}\begin{beamercolorbox}[wd=\awesome@sidebarwidth]{frametitle}% + \ifx\insertsection\empty\else% + \color{accent}\thesection% + \ifx\insertsubsection\empty% + \ifnum\framespersection>1% + .\color{black!25!white}\scalebox{.7}{\theframesinsection}% + \fi% + \else% + .\thesubsection% + \ifnum\framespersubsection>1% + .\color{black!25!white}\scalebox{.7}{\theframesinsubsection}% + \fi% + \fi% + \fi + \end{beamercolorbox}\fi% + \begin{beamercolorbox}{frametitle}% + \insertframetitle% + \end{beamercolorbox} + \ifx\insertframesubtitle\empty\else% + \begin{beamercolorbox}{framesubtitle}% + \ifawesome@nonumbersinframetitle\ifbool{wideframe}{\hspace{-\awesome@sidebarwidth}}{}\fi\usebeamerfont{subtitle}\insertframesubtitle% + \end{beamercolorbox}\fi% +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\newtcolorbox{beamerbox}[3][]{boxrule=\smile@linewidth, +IfBlankTF={#3}{toprule=2mm}{title=#3},colback=#2!5!white,colframe=#2!75!black,left=0em, +lefttitle=4mm, arc=\smile@rounding, enhanced, segmentation engine=path, +segmentation style={lcr, solid, shorten >=1mm,shorten <=1mm, line width=\smile@linewidth},#1} + +\renewenvironment{definition}[1][\empty]{% + \begin{beamerbox}{gray}{#1}% +}{\end{beamerbox}} + +\renewenvironment{block}[1][]{% + \begin{beamerbox}{accent}{#1}% +}{\end{beamerbox}} + +\renewenvironment{examples}[1][]{% + \begin{beamerbox}{green}{#1}% +}{\end{beamerbox}} + +\renewenvironment{alertblock}[1][]{% + \begin{beamerbox}{red}{#1}% +}{\end{beamerbox}} + +\newenvironment<>{modal}[1][]{% + \def\titlename{#1}% + \visibleenv#2% + \begin{tikzpicture}[o,node distance=0pt]% + \fill[modal background] (current page.south west) rectangle (current page.north east);% + \node[modal box] at (current page) (MODALCONTENT) \bgroup% +}{% + \egroup;% + \if\expandafter\isempty\expandafter{\titlename}\else\node[modal title] at (MODALCONTENT.north) {\titlename};\fi + \end{tikzpicture}% + \endvisibleenv% +} + +\ensureinfocommand{title} +\ensureinfocommand{author} +\ensureinfocommand{background} +\ensureinfocommand{email} +\ensureinfocommand{uni} +\ensureinfocommand{location} +\def\inserttitle{\ifdefined\@title\@title\fi} +\def\insertshorttitle{\ifdefined\@shorttitle\@shorttitle\fi} +\def\insertauthor{\ifdefined\@author\@author\fi} +\def\insertshortauthor{\ifdefined\@shortauthor\@shortauthor\fi} +\def\insertemail{\ifdefined\@email\href{mailto:\@email}{\@email}\fi} +\def\insertuni{\ifdefined\@uni\@uni\fi} +\def\insertlocation{\ifdefined\@location\@location\fi} + +\tikzfading[ + name=title page picture fading, + left color=transparent!0, + right color=transparent!100, +] + +\def\ps@navigation@titlepage{\setbeamertemplate{footline}{}\@nameuse{ps@navigation}} + +\newlength\lhswidth\setlength{\lhswidth}{.55\textwidth} +\newlength\titlewidth +\newlength\subtitlewidth +\newlength\maxwidth +\setbeamertemplate{title page}{\begin{wide} + \def\titlecontent{\usebeamerfont{title}\usebeamercolor[fg]{title}\inserttitle}% + \def\subtitlecontent{\usebeamerfont{subtitle}\usebeamercolor[fg]{subtitle}\insertsubtitle}% + \settowidth\titlewidth\titlecontent% + \settowidth\subtitlewidth\subtitlecontent% + \setlength\maxwidth{\ifdim\titlewidth>\subtitlewidth\titlewidth\else\subtitlewidth\fi}% + \thispagestyle{navigation@titlepage}% + \begin{minipage}{\lhswidth} + \raggedright% + \titlecontent\\ + \vspace{0.25cm} + \subtitlecontent\\ + \vspace*{-0.25cm} + \textcolor{accent}{\rule{\ifdim\maxwidth<\lhswidth\maxwidth\else\lhswidth\fi}{\smile@linewidth}}\\[2em] + \usebeamerfont{author}\usebeamercolor[fg]{author}% + \insertauthor\\ + \usebeamerfont{details}\usebeamercolor[fg]{details}% + \insertemail\\[2em] + \usebeamerfont{details}\usebeamercolor[fg]{details}% + \insertinstitute\\ + \insertuni\\[2em] + \insertdate + \end{minipage} + + \ifdefined\@background + \begin{tikzpicture}[remember picture, overlay] + \clip (current page.south east) + -- (current page.north east) + -- ++(-5.1, 0) + -- ++(-3, -\paperheight) + -- cycle; + + \node[ + anchor=south east, + inner sep=0, + outer sep=0 + ] at (current page.south east) { + \includegraphics[height=\paperheight]{\@background} + }; + + %\fill[ + % black, path fading=title page picture fading, + % fading angle=-15 + %] + %(current page.south east) + %rectangle + %++(-10, \dimexpr\paperheight+1cm); + \end{tikzpicture} + \fi +\end{wide}} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\newlength\maxfooterwd\maxfooterwd=0pt +\def\updatemaxfooterwd#1{\ifdim#1>\maxfooterwd% + \global\maxfooterwd=#1% + \immediate\write\@auxout{\global\maxfooterwd=\the#1}% +\fi} +% Make sure we always put the current max footer width into the aux file +\AtEndDocument{\immediate\write\@auxout{\global\maxfooterwd=\the\maxfooterwd}} +\newsavebox\footerright +\def\setfooter#1#2#3{\savebox\footerright{\color{white}\hspace{0.3cm}#3\hspace{0.3cm}} + \updatemaxfooterwd{\wd\footerright}\leavevmode\hbox{% + \usebeamerfont{footline}% + \begin{beamercolorbox}[wd=\dimexpr\textwidth-\maxfooterwd\relax,ht=2.5ex,dp=1ex]{footline}% + \hspace{0.3cm}#1\hfill#2\hfill\null% + \end{beamercolorbox}% + \begin{beamercolorbox}[wd=\maxfooterwd,ht=2.5ex,dp=1ex]{footlineright}% + \centerline{\usebox\footerright}% + \end{beamercolorbox}% +}} + +\def\awesome@smalldot{\tikz[baseline=-.6ex]\node[circle,inner sep=0.16,draw=.,fill=.]{};} +\def\awesome@fulldot{\tikz[baseline=-.6ex]\node[circle,inner sep=0.32ex,draw=.,fill=.]{};} +\def\awesome@emptydot{\tikz[baseline=-.6ex]\node[circle,inner sep=0.32ex,draw=.,fill=none]{};} + +\newcounter{pagenumbertolinkto} +\setbeamertemplate{footline}{% + \setfooter{\insertshortauthor}{% + \hyperlinkdocumentstart{\insertshorttitle}\hspace{.7em}\awesome@smalldot\hspace{.7em}\insertsection% + \ifx\insertsubsection\empty% + \hspace{.4em}% + \ifnum\framespersection>1% + \foreach \i in {1, ..., \framespersection}{% + \ifnum \i=\theframesinsection% + ~\awesome@fulldot% + \else% + \setcounter{pagenumbertolinkto}{\i + \insertsectionstartframe}% + ~\hyperlink{page:\thepagenumbertolinkto}{\awesome@emptydot}% + \fi% + }% + \fi% + \else% + \hspace{.7em}\awesome@smalldot\hspace{.7em}\insertsubsection% + \hspace{.7em}% + \ifnum\framespersubsection>1% + \foreach \i in {1, ..., \framespersubsection}{% + \ifnum \i=\theframesinsubsection% + ~\awesome@fulldot% + \else% + \setcounter{pagenumbertolinkto}{\i + \insertsubsectionstartframe}% + ~\hyperlink{page:\thepagenumbertolinkto}{\awesome@emptydot}% + \fi% + }% + \fi% + \fi% + }{\ifawesome@english@ Page\else Seite\fi~\insertframenumber~/~\inserttotalframenumber}% +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def\ps@navigation@toc{% + \setbeamertemplate{footline}{\setfooter{\insertshortauthor}{\hyperlinkdocumentstart{\insertshorttitle}}{Table des matières}}% + \@nameuse{ps@navigation}% +} + +\def\ps@navigation@sec{% + \setbeamertemplate{footline}{% + \setfooter{\insertshortauthor}% + {\hyperlinkdocumentstart{\insertshorttitle}}% + {\ifawesome@english@ Section\else Kapitel\fi~\thesection\ifx\insertsubsection\empty\else.\thesubsection\fi}% + }% + \@nameuse{ps@navigation}% +} + +\pretocmd\tableofcontents{\thispagestyle{navigation@toc}}{}{} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +% Kinda hacky, but AtBeginEnvironment does not work with beamer tex.stackexchange.com/a/436338/286979 +\pretocmd\beamer@checkframetitle{% + \transfade[duration=0.1]% + \ifbeamer@isfragile% + \label{page:\insertframenumber}% + \else\ifbeamer@noframenumbering\else\hypertarget{page:\insertframenumber}{}\fi\fi% +} + + +\AtBeginSection[]{\ifawesome@secslide + \begin{frame}[c,noframenumbering]\thispagestyle{navigation@sec}% + \begin{wide}\centering% + \usebeamerfont{title}% + \usebeamercolor[fg]{section number projected}% + \scalebox{1.3}{ \raisebox{-1pt}{\insertsectionnumber}}.~% + \usebeamercolor[fg]{title}% + \insertsectionhead% + \end{wide}% + \end{frame} +\fi} + +\AtBeginSubsection[]{\ifawesome@subsecslide + \begin{frame}[c,noframenumbering]\thispagestyle{navigation@sec}% + \begin{wide}\centering% + \usebeamerfont{title}% + \usebeamercolor[fg]{section number projected}% + \scalebox{1.3}{\raisebox{-1pt}{\insertsectionnumber}}.% + \usebeamercolor[fg]{subsection number projected}% + \textsubscript{\insertsubsectionnumber}~% + \usebeamercolor[fg]{title}% + \insertsubsectionhead% + \end{wide}% + \end{frame} +\fi} + +\AtEndDocument{ + {\setbeamercolor{background canvas}{bg=accent} + \begin{frame}[b,noframenumbering]\thispagestyle{navigation@titlepage}% + \begin{wide}\color{white}% + \Large\textbf{\insertauthor}\vskip0.5em\scriptsize\insertlocation,~\insertdate\hfill\insertemail% + \end{wide}% + \end{frame}} +}