├── .gitignore ├── LICENSE ├── README.md └── beamerthemeawesome.sty /.gitignore: -------------------------------------------------------------------------------- 1 | *.aux 2 | *.lof 3 | *.log 4 | *.lot 5 | *.fls 6 | *.out 7 | *.toc 8 | *.fmt 9 | *.fot 10 | *.cb 11 | *.cb2 12 | .*.lb 13 | *.snm 14 | *.nav 15 | *.fdb_latexmk 16 | 17 | *.bbl 18 | *.bcf 19 | *.blg 20 | *-blx.aux 21 | *-blx.bib 22 | *.run.xml 23 | 24 | **/aux/ 25 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | BSD 3-Clause License 2 | 3 | Copyright (c) 2022-2024, Lukas Pietzschmann 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions are met: 7 | 8 | 1. Redistributions of source code must retain the above copyright notice, this 9 | list of conditions and the following disclaimer. 10 | 11 | 2. Redistributions in binary form must reproduce the above copyright notice, 12 | this list of conditions and the following disclaimer in the documentation 13 | and/or other materials provided with the distribution. 14 | 15 | 3. Neither the name of the copyright holder nor the names of its 16 | contributors may be used to endorse or promote products derived from 17 | this software without specific prior written permission. 18 | 19 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 20 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 21 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 22 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 23 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 24 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 25 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 26 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 27 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Awesome-Beamer 2 | The kinda awesome beamer theme! 3 | 4 | ## Using the theme 5 | 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 :) 6 | 7 | ## Options 8 | This theme provides some settings you can tweak: 9 | - 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. 10 | - 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`. 11 | - 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. 12 | - 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. 13 | - Others: Every option that is not recognized by awesome-beamer will be passed to [smile](https://github.com/LukasPietzschmann/smile). 14 | 15 | 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). 16 | 17 | ## Compilation 18 | 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. 19 | If you're using latexmk you don't have to do this manually as latexmk can figure this stuff out by itself. 20 | 21 | 22 | ## Example slides 23 | I already prepared many presentations using this style. Here are some examples: 24 | - [Zigtoberfest Talk](https://raw.githubusercontent.com/LukasPietzschmann/zigtoberfest-talk/build/talk.pdf) ([Repo](https://github.com/LukasPietzschmann/zigtoberfest-talk)) 25 | - [Haskell's lenses](https://raw.githubusercontent.com/LukasPietzschmann/haskell-lenses/build/slides/talk.pdf) ([Repo](https://github.com/LukasPietzschmann/haskell-lenses)) 26 | - [Hydrogen is an energy carrier](https://raw.githubusercontent.com/LukasPietzschmann/hydrogen-energy/build/talk.pdf) ([Repo](https://github.com/LukasPietzschmann/hydrogen-energy)) 27 | - [SIMD intrinsics](https://github.com/LukasPietzschmann/SIMD-Intrinsics/files/12775327/talk.pdf) ([Repo](https://github.com/LukasPietzschmann/SIMD-Intrinsics)) 28 | - [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)) 29 | - [Distributed configuration stores](https://github.com/LukasPietzschmann/Configuration-Stores/files/12793983/main.pdf) ([Repo](https://github.com/LukasPietzschmann/Configuration-Stores)) 30 | -------------------------------------------------------------------------------- /beamerthemeawesome.sty: -------------------------------------------------------------------------------- 1 | \ProvidesPackage{awesome-beamer-theme}[] 2 | 3 | 4 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 5 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 6 | 7 | 8 | \RequirePackage{kvoptions} 9 | \SetupKeyvalOptions{family=awesome,prefix=awesome@} 10 | 11 | \newif\ifawesome@english@ 12 | \DeclareVoidOption{english}{\awesome@english@true} 13 | \DeclareVoidOption{german}{\awesome@english@false} 14 | 15 | \DeclareBoolOption{notoc} 16 | \DeclareBoolOption{secslide} 17 | \DeclareBoolOption{subsecslide} 18 | \DeclareBoolOption{nonumbersinframetitle} 19 | 20 | \DeclareDefaultOption{\PassOptionsToPackage{\CurrentOption}{smile}} 21 | 22 | \ProcessKeyvalOptions* 23 | 24 | \ifawesome@english@\RequirePackage[english]{babel}\else\RequirePackage[ngerman]{babel}\fi 25 | 26 | 27 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 28 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 29 | 30 | 31 | \RequirePackage{calc} 32 | \RequirePackage{microtype} 33 | \RequirePackage{etoolbox} 34 | \RequirePackage{tcolorbox} 35 | \tcbuselibrary{skins} 36 | \RequirePackage[ 37 | tikz, 38 | hyperref, 39 | pdftitle={\noexpand\inserttitle}, 40 | pdfauthor={\noexpand\insertauthor}, 41 | pdfsubject={\noexpand\inserttitle} 42 | ]{smile} 43 | 44 | \usetikzlibrary{overlay-beamer-styles,decorations.markings} 45 | \tikzset{ 46 | node distance = 5mm, 47 | invisible/.style={opacity=0}, 48 | muted/.style={opacity=0.3}, 49 | visible on/.style={alt={#1{}{invisible}}}, 50 | hidden on/.style={alt={#1{invisible}{}}}, 51 | muted on/.style={alt={#1{muted}{}}}, 52 | unmuted on/.style={alt={#1{}{muted}}}, 53 | alt/.code args={<#1>#2#3}{% 54 | \alt<#1>{\pgfkeysalso{#2}}{\pgfkeysalso{#3}} 55 | }, 56 | modal background/.style={fill=gray,opacity=0.8}, 57 | modal box/.style={draw=black,rnd,fill=white,lw,shadow,inner sep=3mm,text width=0.66\paperwidth}, 58 | modal title/.style={roundednode,fill=black,text=white} 59 | } 60 | 61 | 62 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 63 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 64 | 65 | 66 | \def\maketitle{ 67 | \begin{frame}[noframenumbering,plain] 68 | \titlepage 69 | \end{frame} 70 | \ifawesome@notoc\else 71 | \begin{frame}{Agenda} 72 | \tableofcontents 73 | \end{frame} 74 | \fi 75 | } 76 | 77 | \let\oldft\frametitle 78 | \renewcommand\frametitle[2][]{% 79 | \ifx\relax#1\relax\oldft{#2}\else% 80 | \ifnum\beamer@autobreakcount>0\oldft[#1]{#2}\else% 81 | \oldft{#2\hfill\normalfont\large\color{darkgray}\raisebox{0.3ex}{#1}}% 82 | \fi% 83 | \fi% 84 | } 85 | 86 | \BeforeBeginEnvironment{tabular}{\def\arraystretch{1.1}} 87 | 88 | \providebool{wideframe} 89 | \define@key{beamerframe}{wide}[true]{ 90 | \booltrue{wideframe} 91 | \begingroup 92 | } 93 | 94 | \apptocmd{\beamer@reseteecodes}{% 95 | \ifbool{wideframe}{% 96 | \endgroup 97 | \boolfalse{wideframe} 98 | }{} 99 | }{}{} 100 | 101 | 102 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 103 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 104 | 105 | 106 | \newcounter{framesinsection} 107 | \newcounter{framesinsubsection} 108 | \counterwithin*{framesinsection}{section} 109 | \counterwithin*{framesinsubsection}{subsection} 110 | 111 | \def\stepframe{% 112 | \ifbeamer@isfragile% 113 | \stepcounter{framesinsection}% 114 | \stepcounter{framesinsubsection}% 115 | \else% 116 | \ifbeamer@noframenumbering\else% 117 | \stepcounter{framesinsection}% 118 | \stepcounter{framesinsubsection}% 119 | \fi% 120 | \fi% 121 | \ifnum\theframesinsection=0\setcounter{framesinsection}{1}\fi% 122 | \ifnum\theframesinsubsection=0\setcounter{framesinsubsection}{1}\fi% 123 | } 124 | 125 | \BeforeBeginEnvironment{frame}{\stepframe} 126 | \pretocmd\againframe{\stepframe}{}{} 127 | 128 | \def\refreshcountsinaux{% 129 | \immediate\write\@auxout{\global\noexpand\@namedef{s@totalsubsectionframes-\arabic{section}-\arabic{subsection}}{\theframesinsubsection}}% 130 | \immediate\write\@auxout{\global\noexpand\@namedef{s@totalsectionframes-\arabic{section}}{\theframesinsection}}% 131 | } 132 | 133 | \newcounter{secinc} 134 | \pretocmd\section{% 135 | % At this point, the section command has not yet incremented the section counter, so we need to do this by ourselves 136 | \setcounter{secinc}{\thesection + 1}% 137 | \refreshcountsinaux% 138 | \immediate\write\@auxout{\global\noexpand\@namedef{s@frameatsecstart-\arabic{secinc}}{\insertframenumber}}% 139 | }{}{} 140 | 141 | \newcounter{subsecinc} 142 | \pretocmd\subsection{% 143 | % At this point, the subsection command has not yet incremented the subsection counter, so we need to do this by ourselves 144 | \setcounter{subsecinc}{\thesubsection + 1}% 145 | \refreshcountsinaux% 146 | \immediate\write\@auxout{\global\noexpand\@namedef{s@frameatsubsecstart-\arabic{section}-\arabic{subsecinc}}{\insertframenumber}}% 147 | }{}{} 148 | 149 | \AtEndDocument{\refreshcountsinaux} 150 | 151 | \def\framespersection{% 152 | \ifcsdef{s@totalsectionframes-\arabic{section}}{% 153 | \csname s@totalsectionframes-\arabic{section}\endcsname% 154 | }{0}% 155 | } 156 | 157 | \def\framespersubsection{% 158 | \ifcsdef{s@totalsubsectionframes-\arabic{section}-\arabic{subsection}}{% 159 | \csname s@totalsubsectionframes-\arabic{section}-\arabic{subsection}\endcsname% 160 | }{0}% 161 | } 162 | 163 | \def\insertsectionstartframe{% 164 | \ifcsdef{s@frameatsecstart-\arabic{section}}{% 165 | \csname s@frameatsecstart-\arabic{section}\endcsname% 166 | }{0}% 167 | } 168 | 169 | \def\insertsubsectionstartframe{% 170 | \ifcsdef{s@frameatsubsecstart-\arabic{section}-\arabic{subsection}}{% 171 | \csname s@frameatsubsecstart-\arabic{section}-\arabic{subsection}\endcsname% 172 | }{0}% 173 | } 174 | 175 | 176 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 177 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 178 | 179 | 180 | \setbeamercolor{alerted text}{fg=accent} 181 | 182 | \setbeamercolor{subtitle}{fg=darkgray} 183 | \setbeamercolor{frametitle}{fg=black} 184 | \setbeamercolor{framesubtitle}{fg=darkgray} 185 | 186 | \setbeamercolor{details}{fg=black} 187 | \setbeamercolor{author}{fg=black} 188 | 189 | \setbeamercolor{section number projected}{bg=black, fg=accent} 190 | \setbeamercolor{subsection number projected}{fg=lightgray, fg=accent} 191 | 192 | \setbeamercolor{structure}{fg=black} 193 | \setbeamercolor{normal text}{fg=black} 194 | \setbeamercolor{separator}{fg=accent, bg=accent} 195 | \setbeamercolor{footline}{bg=lightgray} 196 | \setbeamercolor{footlineright}{fg=white, bg=accent} 197 | 198 | \setbeamercolor{block body}{bg=lightgray} 199 | \setbeamercolor{block title}{bg=black, fg=white} 200 | 201 | 202 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 203 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 204 | 205 | 206 | \setbeamerfont{title}{ 207 | size=\LARGE, 208 | shape=\bfseries\scshape 209 | } 210 | 211 | \setbeamerfont{subtitle}{ 212 | size=\large, 213 | shape=\normalfont 214 | } 215 | 216 | \setbeamerfont{author}{ 217 | size=\normalsize, 218 | shape=\normalfont 219 | } 220 | 221 | \setbeamerfont{details}{ 222 | size=\footnotesize, 223 | shape=\normalfont 224 | } 225 | 226 | \setbeamerfont{footline}{ 227 | size=\tiny, 228 | shape=\normalfont 229 | } 230 | 231 | \setbeamerfont{footnote}{ 232 | size=\tiny, 233 | shape=\normalfont 234 | } 235 | 236 | \setbeamerfont{frametitle}{ 237 | size=\LARGE, 238 | shape=\bfseries\scshape 239 | } 240 | 241 | \setbeamerfont{framesubtitle}{ 242 | size=\normalsize, 243 | shape=\normalfont 244 | } 245 | 246 | \setbeamerfont{block title}{ 247 | size=\normalfont, 248 | shape=\strut 249 | } 250 | 251 | \setbeamerfont{blockdef}{ 252 | size=\large, 253 | shape=\bfseries 254 | } 255 | 256 | \setbeamerfont{description item}{ 257 | shape=\bfseries 258 | } 259 | 260 | 261 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 262 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 263 | 264 | 265 | \newlength\awesome@sidebarwidth\setlength{\awesome@sidebarwidth}{0.15\paperwidth} 266 | \newlength\awesome@textmargin\setlength{\awesome@textmargin}{0.05\paperwidth} 267 | \setbeamersize{description width=0.5cm} 268 | \setbeamersize{sidebar width left=\awesome@sidebarwidth} 269 | \setbeamersize{sidebar width right=\z@} 270 | \setbeamersize{text margin left=\awesome@textmargin} 271 | \setbeamersize{text margin right=\awesome@textmargin} 272 | 273 | \setbeamertemplate{caption}{\insertcaption} 274 | \setbeamertemplate{blocks}[rounded][shadow=false] 275 | \setbeamertemplate{itemize item}[circle] 276 | \setbeamertemplate{itemize subitem}[circle] 277 | 278 | \addtobeamertemplate{frametitle continuation}{\color{gray}(}{)} 279 | \setbeamertemplate{navigation symbols}{} 280 | \setbeamertemplate{headline}{} 281 | 282 | \setbeamertemplate{section in toc}{% 283 | \usebeamercolor[fg]{section number projected}\inserttocsectionnumber.% 284 | \usebeamercolor[fg]{normal text}~\inserttocsection% 285 | } 286 | 287 | \newenvironment{wide}{\begingroup\leavevmode% 288 | \hspace*{-\awesome@sidebarwidth}\fboxsep\z@\minipage{\linewidth+2cm}% 289 | }{\endminipage\endgroup} 290 | 291 | \setbeamertemplate{subsection in toc}{% 292 | \mbox{\hskip2em% 293 | \usebeamercolor[fg]{section number projected}\inserttocsectionnumber.% 294 | \usebeamercolor[fg]{subsection number projected}\textsubscript{\inserttocsubsectionnumber}% 295 | \usebeamercolor[fg]{normal text}~\inserttocsubsection% 296 | }% 297 | } 298 | 299 | \setbeamertemplate{separator}{% 300 | \usebeamercolor{separator}\textcolor{fg}{\rule{.7\textwidth}{\smile@linewidth}}% 301 | } 302 | 303 | \setbeamertemplate{frametitle}{% 304 | \vspace{1em}\ifawesome@nonumbersinframetitle\ifbool{wideframe}{\hspace{-\awesome@sidebarwidth}}{}\else\hspace{-\awesome@sidebarwidth}\begin{beamercolorbox}[wd=\awesome@sidebarwidth]{frametitle}% 305 | \ifx\insertsection\empty\else% 306 | \color{accent}\thesection% 307 | \ifx\insertsubsection\empty% 308 | \ifnum\framespersection>1% 309 | .\color{black!25!white}\scalebox{.7}{\theframesinsection}% 310 | \fi% 311 | \else% 312 | .\thesubsection% 313 | \ifnum\framespersubsection>1% 314 | .\color{black!25!white}\scalebox{.7}{\theframesinsubsection}% 315 | \fi% 316 | \fi% 317 | \fi 318 | \end{beamercolorbox}\fi% 319 | \begin{beamercolorbox}{frametitle}% 320 | \insertframetitle% 321 | \end{beamercolorbox} 322 | \ifx\insertframesubtitle\empty\else% 323 | \begin{beamercolorbox}{framesubtitle}% 324 | \ifawesome@nonumbersinframetitle\ifbool{wideframe}{\hspace{-\awesome@sidebarwidth}}{}\fi\usebeamerfont{subtitle}\insertframesubtitle% 325 | \end{beamercolorbox}\fi% 326 | } 327 | 328 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 329 | 330 | \newtcolorbox{beamerbox}[3][]{boxrule=\smile@linewidth, 331 | IfBlankTF={#3}{toprule=2mm}{title=#3},colback=#2!5!white,colframe=#2!75!black,left=0em, 332 | lefttitle=4mm, arc=\smile@rounding, enhanced, segmentation engine=path, 333 | segmentation style={lcr, solid, shorten >=1mm,shorten <=1mm, line width=\smile@linewidth},#1} 334 | 335 | \renewenvironment{definition}[1][\empty]{% 336 | \begin{beamerbox}{gray}{#1}% 337 | }{\end{beamerbox}} 338 | 339 | \renewenvironment{block}[1][]{% 340 | \begin{beamerbox}{accent}{#1}% 341 | }{\end{beamerbox}} 342 | 343 | \renewenvironment{examples}[1][]{% 344 | \begin{beamerbox}{green}{#1}% 345 | }{\end{beamerbox}} 346 | 347 | \renewenvironment{alertblock}[1][]{% 348 | \begin{beamerbox}{red}{#1}% 349 | }{\end{beamerbox}} 350 | 351 | \newenvironment<>{modal}[1][]{% 352 | \def\titlename{#1}% 353 | \visibleenv#2% 354 | \begin{tikzpicture}[o,node distance=0pt]% 355 | \fill[modal background] (current page.south west) rectangle (current page.north east);% 356 | \node[modal box] at (current page) (MODALCONTENT) \bgroup% 357 | }{% 358 | \egroup;% 359 | \if\expandafter\isempty\expandafter{\titlename}\else\node[modal title] at (MODALCONTENT.north) {\titlename};\fi 360 | \end{tikzpicture}% 361 | \endvisibleenv% 362 | } 363 | 364 | \ensureinfocommand{title} 365 | \ensureinfocommand{author} 366 | \ensureinfocommand{background} 367 | \ensureinfocommand{email} 368 | \ensureinfocommand{uni} 369 | \ensureinfocommand{location} 370 | \def\inserttitle{\ifdefined\@title\@title\fi} 371 | \def\insertshorttitle{\ifdefined\@shorttitle\@shorttitle\fi} 372 | \def\insertauthor{\ifdefined\@author\@author\fi} 373 | \def\insertshortauthor{\ifdefined\@shortauthor\@shortauthor\fi} 374 | \def\insertemail{\ifdefined\@email\href{mailto:\@email}{\@email}\fi} 375 | \def\insertuni{\ifdefined\@uni\@uni\fi} 376 | \def\insertlocation{\ifdefined\@location\@location\fi} 377 | 378 | \tikzfading[ 379 | name=title page picture fading, 380 | left color=transparent!0, 381 | right color=transparent!100, 382 | ] 383 | 384 | \def\ps@navigation@titlepage{\setbeamertemplate{footline}{}\@nameuse{ps@navigation}} 385 | 386 | \newlength\lhswidth\setlength{\lhswidth}{.55\textwidth} 387 | \newlength\titlewidth 388 | \newlength\subtitlewidth 389 | \newlength\maxwidth 390 | \setbeamertemplate{title page}{\begin{wide} 391 | \def\titlecontent{\usebeamerfont{title}\usebeamercolor[fg]{title}\inserttitle}% 392 | \def\subtitlecontent{\usebeamerfont{subtitle}\usebeamercolor[fg]{subtitle}\insertsubtitle}% 393 | \settowidth\titlewidth\titlecontent% 394 | \settowidth\subtitlewidth\subtitlecontent% 395 | \setlength\maxwidth{\ifdim\titlewidth>\subtitlewidth\titlewidth\else\subtitlewidth\fi}% 396 | \thispagestyle{navigation@titlepage}% 397 | \begin{minipage}{\lhswidth} 398 | \raggedright% 399 | \titlecontent\\ 400 | \subtitlecontent\\ 401 | \textcolor{accent}{\rule{\ifdim\maxwidth<\lhswidth\maxwidth\else\lhswidth\fi}{\smile@linewidth}}\\[2em] 402 | \usebeamerfont{author}\usebeamercolor[fg]{author}% 403 | \insertauthor\\ 404 | \usebeamerfont{details}\usebeamercolor[fg]{details}% 405 | \insertemail\\[2em] 406 | \usebeamerfont{details}\usebeamercolor[fg]{details}% 407 | \insertinstitute\\ 408 | \insertuni\\[2em] 409 | \insertdate 410 | \end{minipage} 411 | 412 | \ifdefined\@background 413 | \begin{tikzpicture}[o] 414 | \clip (current page.south east) 415 | -- (current page.north east) 416 | -- ++(-5.1, 0) 417 | -- ++(-3, -\paperheight) 418 | -- cycle; 419 | 420 | \node[anchor=south east,inner sep=0,outer sep=0] at (current page.south east) { 421 | \includegraphics[height=\paperheight]{\@background} 422 | }; 423 | 424 | \fill[black,path fading=title page picture fading,fading angle=-15] 425 | (current page.south east) rectangle ++(-10, \dimexpr\paperheight+1cm); 426 | \end{tikzpicture} 427 | \tikz[o]\draw[black,lcr,line width=2*\smile@linewidth] 428 | ([shift={(-5.1,0)}]current page.north east) 429 | -- ++(-3,-\paperheight); 430 | \fi 431 | \end{wide}} 432 | 433 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 434 | 435 | \newlength\maxfooterwd\maxfooterwd=0pt 436 | \def\updatemaxfooterwd#1{\ifdim#1>\maxfooterwd% 437 | \global\maxfooterwd=#1% 438 | \immediate\write\@auxout{\global\maxfooterwd=\the#1}% 439 | \fi} 440 | % Make sure we always put the current max footer width into the aux file 441 | \AtEndDocument{\immediate\write\@auxout{\global\maxfooterwd=\the\maxfooterwd}} 442 | \newsavebox\footerright 443 | \def\setfooter#1#2#3{\savebox\footerright{\color{white}\hspace{0.3cm}#3\hspace{0.3cm}} 444 | \updatemaxfooterwd{\wd\footerright}\leavevmode\hbox{% 445 | \usebeamerfont{footline}% 446 | \begin{beamercolorbox}[wd=\dimexpr\textwidth-\maxfooterwd\relax,ht=2.5ex,dp=1ex]{footline}% 447 | \hspace{0.3cm}#1\hfill#2\hfill\null% 448 | \end{beamercolorbox}% 449 | \begin{beamercolorbox}[wd=\maxfooterwd,ht=2.5ex,dp=1ex]{footlineright}% 450 | \centerline{\usebox\footerright}% 451 | \end{beamercolorbox}% 452 | }} 453 | 454 | \def\awesome@smalldot{\tikz[baseline=-.6ex]\node[circle,inner sep=0.16,draw=.,fill=.]{};} 455 | \def\awesome@fulldot{\tikz[baseline=-.6ex]\node[circle,inner sep=0.32ex,draw=.,fill=.]{};} 456 | \def\awesome@emptydot{\tikz[baseline=-.6ex]\node[circle,inner sep=0.32ex,draw=.,fill=none]{};} 457 | 458 | \newcounter{pagenumbertolinkto} 459 | \setbeamertemplate{footline}{% 460 | \setfooter{\insertshortauthor}{% 461 | \hyperlinkdocumentstart{\insertshorttitle}\hspace{.7em}\awesome@smalldot\hspace{.7em}\insertsection% 462 | \ifx\insertsubsection\empty% 463 | \hspace{.4em}% 464 | \ifnum\framespersection>1% 465 | \foreach \i in {1, ..., \framespersection}{% 466 | \ifnum \i=\theframesinsection% 467 | ~\awesome@fulldot% 468 | \else% 469 | \setcounter{pagenumbertolinkto}{\i + \insertsectionstartframe}% 470 | ~\hyperlink{page:\thepagenumbertolinkto}{\awesome@emptydot}% 471 | \fi% 472 | }% 473 | \fi% 474 | \else% 475 | \hspace{.7em}\awesome@smalldot\hspace{.7em}\insertsubsection% 476 | \hspace{.7em}% 477 | \ifnum\framespersubsection>1% 478 | \foreach \i in {1, ..., \framespersubsection}{% 479 | \ifnum \i=\theframesinsubsection% 480 | ~\awesome@fulldot% 481 | \else% 482 | \setcounter{pagenumbertolinkto}{\i + \insertsubsectionstartframe}% 483 | ~\hyperlink{page:\thepagenumbertolinkto}{\awesome@emptydot}% 484 | \fi% 485 | }% 486 | \fi% 487 | \fi% 488 | }{\ifawesome@english@ Page\else Seite\fi~\insertframenumber~/~\inserttotalframenumber}% 489 | } 490 | 491 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 492 | 493 | \def\ps@navigation@toc{% 494 | \setbeamertemplate{footline}{\setfooter{\insertshortauthor}{\hyperlinkdocumentstart{\insertshorttitle}}{Agenda}}% 495 | \@nameuse{ps@navigation}% 496 | } 497 | 498 | \def\ps@navigation@sec{% 499 | \setbeamertemplate{footline}{% 500 | \setfooter{\insertshortauthor}% 501 | {\hyperlinkdocumentstart{\insertshorttitle}}% 502 | {\ifawesome@english@ Section\else Kapitel\fi~\thesection\ifx\insertsubsection\empty\else.\thesubsection\fi}% 503 | }% 504 | \@nameuse{ps@navigation}% 505 | } 506 | 507 | \pretocmd\tableofcontents{\thispagestyle{navigation@toc}}{}{} 508 | 509 | 510 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 511 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 512 | 513 | 514 | % Kinda hacky, but AtBeginEnvironment does not work with beamer tex.stackexchange.com/a/436338/286979 515 | \pretocmd\beamer@checkframetitle{% 516 | \transfade[duration=0.1]% 517 | \ifbeamer@isfragile% 518 | \label{page:\insertframenumber}% 519 | \else\ifbeamer@noframenumbering\else\hypertarget{page:\insertframenumber}{}\fi\fi% 520 | } 521 | 522 | 523 | \AtBeginSection[]{\ifawesome@secslide 524 | \begin{frame}[c,noframenumbering]\thispagestyle{navigation@sec}% 525 | \begin{wide}\centering% 526 | \usebeamerfont{title}% 527 | \usebeamercolor[fg]{section number projected}% 528 | \scalebox{1.3}{ \raisebox{-1pt}{\insertsectionnumber}}.~% 529 | \usebeamercolor[fg]{title}% 530 | \insertsectionhead% 531 | \end{wide}% 532 | \end{frame} 533 | \fi} 534 | 535 | \AtBeginSubsection[]{\ifawesome@subsecslide 536 | \begin{frame}[c,noframenumbering]\thispagestyle{navigation@sec}% 537 | \begin{wide}\centering% 538 | \usebeamerfont{title}% 539 | \usebeamercolor[fg]{section number projected}% 540 | \scalebox{1.3}{\raisebox{-1pt}{\insertsectionnumber}}.% 541 | \usebeamercolor[fg]{subsection number projected}% 542 | \textsubscript{\insertsubsectionnumber}~% 543 | \usebeamercolor[fg]{title}% 544 | \insertsubsectionhead% 545 | \end{wide}% 546 | \end{frame} 547 | \fi} 548 | 549 | \AtEndDocument{ 550 | {\setbeamercolor{background canvas}{bg=accent} 551 | \begin{frame}[b,noframenumbering]\thispagestyle{navigation@titlepage}% 552 | \begin{wide}\color{white}% 553 | \Large\textbf{\insertauthor}\vskip0.5em\scriptsize\insertlocation,~\insertdate\hfill\insertemail% 554 | \end{wide}% 555 | \end{frame}} 556 | } 557 | --------------------------------------------------------------------------------