├── .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 | \DeclareBoolOption{english} 12 | \DeclareComplementaryOption{german}{english} 13 | 14 | \DeclareBoolOption{notoc} 15 | \DeclareBoolOption{secslide} 16 | \DeclareBoolOption{subsecslide} 17 | \DeclareBoolOption{nonumbersinframetitle} 18 | 19 | \DeclareDefaultOption{\PassOptionsToPackage{\CurrentOption}{smile}} 20 | 21 | \ProcessKeyvalOptions* 22 | 23 | \ifawesome@english\RequirePackage[english]{babel}\else\RequirePackage[ngerman]{babel}\fi 24 | 25 | 26 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 27 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 28 | 29 | 30 | \RequirePackage{calc} 31 | \RequirePackage{microtype} 32 | \RequirePackage{etoolbox} 33 | \RequirePackage{tcolorbox} 34 | \tcbuselibrary{skins} 35 | \RequirePackage[ 36 | tikz, 37 | hyperref, 38 | pdftitle={\noexpand\inserttitle}, 39 | pdfauthor={\noexpand\insertauthor}, 40 | pdfsubject={\noexpand\inserttitle} 41 | ]{smile} 42 | 43 | \usetikzlibrary{overlay-beamer-styles,decorations.markings} 44 | \tikzset{ 45 | node distance=5mm, 46 | invisible/.style={opacity=0}, 47 | muted/.style={opacity=0.3}, 48 | visible on/.style={alt={#1{}{invisible}}}, 49 | hidden on/.style={alt={#1{invisible}{}}}, 50 | muted on/.style={alt={#1{muted}{}}}, 51 | unmuted on/.style={alt={#1{}{muted}}}, 52 | alt/.code args={<#1>#2#3}{% 53 | \alt<#1>{\pgfkeysalso{#2}}{\pgfkeysalso{#3}} 54 | }, 55 | modal background/.style={fill=gray,opacity=0.8}, 56 | modal box/.style={draw=black,rnd,fill=white,lw,shadow,inner sep=3mm,text width=0.66\paperwidth}, 57 | modal title/.style={roundednode,fill=black,text=white} 58 | } 59 | 60 | 61 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 62 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 63 | 64 | 65 | \def\maketitle{ 66 | \begin{frame}[noframenumbering,plain] 67 | \titlepage 68 | \end{frame} 69 | \ifawesome@notoc\else 70 | \begin{frame}{Agenda} 71 | \tableofcontents 72 | \end{frame} 73 | \fi 74 | } 75 | 76 | \let\oldft\frametitle 77 | \renewcommand\frametitle[2][]{% 78 | \ifx\relax#1\relax\oldft{#2}\else% 79 | \ifnum\beamer@autobreakcount>0\oldft[#1]{#2}\else% 80 | \oldft{#2\hfill\normalfont\large\color{darkgray}\raisebox{0.3ex}{#1}}% 81 | \fi% 82 | \fi% 83 | } 84 | 85 | \providebool{wideframe} 86 | \define@key{beamerframe}{wide}[true]{ 87 | \booltrue{wideframe} 88 | \begingroup 89 | } 90 | 91 | \apptocmd{\beamer@reseteecodes}{% 92 | \ifbool{wideframe}{% 93 | \endgroup 94 | \boolfalse{wideframe} 95 | }{} 96 | }{}{} 97 | 98 | 99 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 100 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 101 | 102 | 103 | \newcounter{framesinsection} 104 | \newcounter{framesinsubsection} 105 | \counterwithin*{framesinsection}{section} 106 | \counterwithin*{framesinsubsection}{subsection} 107 | 108 | \def\stepframe{% 109 | \ifbeamer@isfragile% 110 | \stepcounter{framesinsection}% 111 | \stepcounter{framesinsubsection}% 112 | \else% 113 | \ifbeamer@noframenumbering\else% 114 | \stepcounter{framesinsection}% 115 | \stepcounter{framesinsubsection}% 116 | \fi% 117 | \fi% 118 | \ifnum\theframesinsection=0\setcounter{framesinsection}{1}\fi% 119 | \ifnum\theframesinsubsection=0\setcounter{framesinsubsection}{1}\fi% 120 | } 121 | 122 | \BeforeBeginEnvironment{frame}{\stepframe} 123 | \pretocmd\againframe{\stepframe}{}{} 124 | 125 | \def\refreshcountsinaux{% 126 | \immediate\write\@auxout{\global\noexpand\@namedef{s@totalsubsectionframes-\arabic{section}-\arabic{subsection}}{\theframesinsubsection}}% 127 | \immediate\write\@auxout{\global\noexpand\@namedef{s@totalsectionframes-\arabic{section}}{\theframesinsection}}% 128 | } 129 | 130 | \newcounter{secinc} 131 | \pretocmd\section{% 132 | % At this point, the section command has not yet incremented the section counter, so we need to do this by ourselves 133 | \setcounter{secinc}{\thesection + 1}% 134 | \refreshcountsinaux% 135 | \immediate\write\@auxout{\global\noexpand\@namedef{s@frameatsecstart-\arabic{secinc}}{\insertframenumber}}% 136 | }{}{} 137 | 138 | \newcounter{subsecinc} 139 | \pretocmd\subsection{% 140 | % At this point, the subsection command has not yet incremented the subsection counter, so we need to do this by ourselves 141 | \setcounter{subsecinc}{\thesubsection + 1}% 142 | \refreshcountsinaux% 143 | \immediate\write\@auxout{\global\noexpand\@namedef{s@frameatsubsecstart-\arabic{section}-\arabic{subsecinc}}{\insertframenumber}}% 144 | }{}{} 145 | 146 | \AtEndDocument{\refreshcountsinaux} 147 | 148 | \def\framespersection{% 149 | \ifcsdef{s@totalsectionframes-\arabic{section}}{% 150 | \csname s@totalsectionframes-\arabic{section}\endcsname% 151 | }{0}% 152 | } 153 | 154 | \def\framespersubsection{% 155 | \ifcsdef{s@totalsubsectionframes-\arabic{section}-\arabic{subsection}}{% 156 | \csname s@totalsubsectionframes-\arabic{section}-\arabic{subsection}\endcsname% 157 | }{0}% 158 | } 159 | 160 | \def\insertsectionstartframe{% 161 | \ifcsdef{s@frameatsecstart-\arabic{section}}{% 162 | \csname s@frameatsecstart-\arabic{section}\endcsname% 163 | }{0}% 164 | } 165 | 166 | \def\insertsubsectionstartframe{% 167 | \ifcsdef{s@frameatsubsecstart-\arabic{section}-\arabic{subsection}}{% 168 | \csname s@frameatsubsecstart-\arabic{section}-\arabic{subsection}\endcsname% 169 | }{0}% 170 | } 171 | 172 | 173 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 174 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 175 | 176 | 177 | \setbeamercolor{alerted text}{fg=accent} 178 | 179 | \setbeamercolor{title}{fg=black} 180 | \setbeamercolor{subtitle}{fg=darkgray} 181 | 182 | \setbeamercolor{frametitle}{fg=black} 183 | \setbeamercolor{framesubtitle}{fg=darkgray} 184 | 185 | \setbeamercolor{details}{fg=black} 186 | \setbeamercolor{author}{fg=black} 187 | 188 | \setbeamercolor{section number projected}{bg=black, fg=accent} 189 | \setbeamercolor{subsection number projected}{fg=lightgray, fg=accent} 190 | 191 | \setbeamercolor{structure}{fg=black} 192 | \setbeamercolor{normal text}{fg=black} 193 | \setbeamercolor{separator}{fg=accent, bg=accent} 194 | \setbeamercolor{footline}{bg=lightgray} 195 | \setbeamercolor{footlineright}{fg=white, bg=accent} 196 | 197 | \setbeamercolor{block body}{bg=lightgray} 198 | \setbeamercolor{block title}{bg=black, fg=white} 199 | 200 | 201 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 202 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 203 | 204 | 205 | \setbeamerfont{title}{size=\LARGE,shape=\bfseries\scshape} 206 | \setbeamerfont{subtitle}{size=\large,shape=\normalfont} 207 | 208 | \setbeamerfont{author}{size=\normalsize,shape=\normalfont} 209 | \setbeamerfont{details}{size=\footnotesize,shape=\normalfont} 210 | 211 | \setbeamerfont{footline}{size=\tiny,shape=\normalfont} 212 | 213 | \setbeamerfont{footnote}{size=\tiny,shape=\normalfont} 214 | 215 | \setbeamerfont{frametitle}{size=\LARGE,shape=\bfseries\scshape} 216 | 217 | \setbeamerfont{framesubtitle}{size=\normalsize,shape=\normalfont} 218 | 219 | \setbeamerfont{block title}{size=\normalfont,shape=\strut} 220 | \setbeamerfont{blockdef}{size=\large,shape=\bfseries} 221 | 222 | \setbeamerfont{description item}{shape=\bfseries} 223 | 224 | 225 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 226 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 227 | 228 | 229 | \newlength\awesome@sidebarwidth\setlength{\awesome@sidebarwidth}{0.15\paperwidth} 230 | \newlength\awesome@textmargin\setlength{\awesome@textmargin}{0.05\paperwidth} 231 | \setbeamersize{description width=0.5cm} 232 | \setbeamersize{sidebar width left=\awesome@sidebarwidth} 233 | \setbeamersize{sidebar width right=\z@} 234 | \setbeamersize{text margin left=\awesome@textmargin} 235 | \setbeamersize{text margin right=\awesome@textmargin} 236 | 237 | \setbeamertemplate{caption}{\insertcaption} 238 | \setbeamertemplate{blocks}[rounded][shadow=false] 239 | \setbeamertemplate{itemize item}[circle] 240 | \setbeamertemplate{itemize subitem}[circle] 241 | 242 | \addtobeamertemplate{frametitle continuation}{\color{gray}(}{)} 243 | \setbeamertemplate{navigation symbols}{} 244 | \setbeamertemplate{headline}{} 245 | 246 | \setbeamertemplate{section in toc}{% 247 | \usebeamercolor[fg]{section number projected}\inserttocsectionnumber.% 248 | \usebeamercolor[fg]{normal text}~\inserttocsection% 249 | } 250 | 251 | \newenvironment{wide}{\begingroup\leavevmode% 252 | \hspace*{-\awesome@sidebarwidth}\fboxsep\z@\minipage{\linewidth+2cm}% 253 | }{\endminipage\endgroup} 254 | 255 | \setbeamertemplate{subsection in toc}{% 256 | \mbox{\hskip2em% 257 | \usebeamercolor[fg]{section number projected}\inserttocsectionnumber.% 258 | \usebeamercolor[fg]{subsection number projected}\textsubscript{\inserttocsubsectionnumber}% 259 | \usebeamercolor[fg]{normal text}~\inserttocsubsection% 260 | }% 261 | } 262 | 263 | \setbeamertemplate{separator}{% 264 | \usebeamercolor{separator}\textcolor{fg}{\rule{.7\textwidth}{\smile@linewidth}}% 265 | } 266 | 267 | \setbeamertemplate{frametitle}{% 268 | \vspace{1em}\ifawesome@nonumbersinframetitle\ifbool{wideframe}{\hspace{-\awesome@sidebarwidth}}{}\else\hspace{-\awesome@sidebarwidth}\begin{beamercolorbox}[wd=\awesome@sidebarwidth]{frametitle}% 269 | \ifx\insertsection\empty\else% 270 | \color{accent}\thesection% 271 | \ifx\insertsubsection\empty% 272 | \ifnum\framespersection>1% 273 | .\color{black!25!white}\scalebox{.7}{\theframesinsection}% 274 | \fi% 275 | \else% 276 | .\thesubsection% 277 | \ifnum\framespersubsection>1% 278 | .\color{black!25!white}\scalebox{.7}{\theframesinsubsection}% 279 | \fi% 280 | \fi% 281 | \fi 282 | \end{beamercolorbox}\fi% 283 | \begin{beamercolorbox}{frametitle}% 284 | \insertframetitle% 285 | \end{beamercolorbox} 286 | \ifx\usebeamercolor{subtitle}\insertframesubtitle\empty\else% 287 | \begin{beamercolorbox}{framesubtitle}% 288 | \ifawesome@nonumbersinframetitle\ifbool{wideframe}{\hspace{-\awesome@sidebarwidth}}{}\fi\usebeamerfont{subtitle}\insertframesubtitle% 289 | \end{beamercolorbox}\fi% 290 | } 291 | 292 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 293 | 294 | \newtcolorbox{beamerbox}[3][]{boxrule=\smile@linewidth, 295 | IfBlankTF={#3}{toprule=2mm}{title=#3},colback=#2!5!white,colframe=#2!75!black,left=0em, 296 | lefttitle=4mm, arc=\smile@rounding, enhanced, segmentation engine=path, 297 | segmentation style={lcr, solid, shorten >=1mm,shorten <=1mm, line width=\smile@linewidth},#1} 298 | 299 | \renewenvironment{definition}[1][\empty]{% 300 | \begin{beamerbox}{gray}{#1}% 301 | }{\end{beamerbox}} 302 | 303 | \renewenvironment{block}[1][]{% 304 | \begin{beamerbox}{accent}{#1}% 305 | }{\end{beamerbox}} 306 | 307 | \renewenvironment{examples}[1][]{% 308 | \begin{beamerbox}{green}{#1}% 309 | }{\end{beamerbox}} 310 | 311 | \renewenvironment{alertblock}[1][]{% 312 | \begin{beamerbox}{red}{#1}% 313 | }{\end{beamerbox}} 314 | 315 | \newenvironment<>{modal}[1][]{% 316 | \def\titlename{#1}% 317 | \visibleenv#2% 318 | \begin{tikzpicture}[o,node distance=0pt]% 319 | \fill[modal background] (current page.south west) rectangle (current page.north east);% 320 | \node[modal box] at (current page) (MODALCONTENT) \bgroup% 321 | }{% 322 | \egroup;% 323 | \if\expandafter\isempty\expandafter{\titlename}\else\node[modal title] at (MODALCONTENT.north) {\titlename};\fi 324 | \end{tikzpicture}% 325 | \endvisibleenv% 326 | } 327 | 328 | \ensureinfocommand{title} 329 | \ensureinfocommand{author} 330 | \ensureinfocommand{background} 331 | \ensureinfocommand{email} 332 | \ensureinfocommand{uni} 333 | \ensureinfocommand{location} 334 | \def\inserttitle{\ifdefined\@title\@title\fi} 335 | \def\insertshorttitle{\ifdefined\@shorttitle\@shorttitle\fi} 336 | \def\insertauthor{\ifdefined\@author\@author\fi} 337 | \def\insertshortauthor{\ifdefined\@shortauthor\@shortauthor\fi} 338 | \def\insertemail{\ifdefined\@email\href{mailto:\@email}{\@email}\fi} 339 | \def\insertuni{\ifdefined\@uni\@uni\fi} 340 | \def\insertlocation{\ifdefined\@location\@location\fi} 341 | 342 | \tikzfading[ 343 | name=title page picture fading, 344 | left color=transparent!0, 345 | right color=transparent!100, 346 | ] 347 | 348 | \def\ps@navigation@titlepage{\setbeamertemplate{footline}{}\@nameuse{ps@navigation}} 349 | 350 | \newlength\lhswidth\setlength{\lhswidth}{.55\textwidth} 351 | \newlength\titlewidth 352 | \newlength\subtitlewidth 353 | \newlength\maxwidth 354 | \setbeamertemplate{title page}{\begin{wide} 355 | \def\titlecontent{\usebeamerfont{title}\usebeamercolor[fg]{title}\inserttitle}% 356 | \def\subtitlecontent{\usebeamerfont{subtitle}\usebeamercolor[fg]{subtitle}\insertsubtitle}% 357 | \settowidth\titlewidth\titlecontent% 358 | \settowidth\subtitlewidth\subtitlecontent% 359 | \setlength\maxwidth{\ifdim\titlewidth>\subtitlewidth\titlewidth\else\subtitlewidth\fi}% 360 | \thispagestyle{navigation@titlepage}% 361 | \begin{minipage}{\lhswidth} 362 | \raggedright% 363 | \titlecontent\\ 364 | \subtitlecontent\\ 365 | \textcolor{accent}{\rule{\ifdim\maxwidth<\lhswidth\maxwidth\else\lhswidth\fi}{\smile@linewidth}}\\[2em] 366 | \usebeamerfont{author}\usebeamercolor[fg]{author}% 367 | \insertauthor\\ 368 | \usebeamerfont{details}\usebeamercolor[fg]{details}% 369 | \insertemail\\[2em] 370 | \usebeamerfont{details}\usebeamercolor[fg]{details}% 371 | \insertinstitute\\ 372 | \insertuni\\[2em] 373 | \insertdate 374 | \end{minipage} 375 | 376 | \ifdefined\@background 377 | \begin{tikzpicture}[o] 378 | \clip (current page.south east) 379 | -- (current page.north east) 380 | -- ++(-5.1, 0) 381 | -- ++(-3, -\paperheight) 382 | -- cycle; 383 | 384 | \node[anchor=south east,inner sep=0,outer sep=0] at (current page.south east) { 385 | \includegraphics[height=\paperheight]{\@background} 386 | }; 387 | 388 | \fill[black,path fading=title page picture fading,fading angle=-15] 389 | (current page.south east) rectangle ++(-10, \dimexpr\paperheight+1cm); 390 | \end{tikzpicture} 391 | \tikz[o]\draw[black,lcr,line width=2*\smile@linewidth] 392 | ([shift={(-5.1,0)}]current page.north east) 393 | -- ++(-3,-\paperheight); 394 | \fi 395 | \end{wide}} 396 | 397 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 398 | 399 | \newlength\maxfooterwd\maxfooterwd=0pt 400 | \def\updatemaxfooterwd#1{\ifdim#1>\maxfooterwd% 401 | \global\maxfooterwd=#1% 402 | \immediate\write\@auxout{\global\maxfooterwd=\the#1}% 403 | \fi} 404 | % Make sure we always put the current max footer width into the aux file 405 | \AtEndDocument{\immediate\write\@auxout{\global\maxfooterwd=\the\maxfooterwd}} 406 | \newsavebox\footerright 407 | \def\setfooter#1#2#3{\savebox\footerright{\color{white}\hspace{0.3cm}#3\hspace{0.3cm}} 408 | \updatemaxfooterwd{\wd\footerright}\leavevmode\hbox{% 409 | \usebeamerfont{footline}% 410 | \begin{beamercolorbox}[wd=\dimexpr\textwidth-\maxfooterwd\relax,ht=2.5ex,dp=1ex]{footline}% 411 | \hspace{0.3cm}#1\hfill#2\hfill\null% 412 | \end{beamercolorbox}% 413 | \begin{beamercolorbox}[wd=\maxfooterwd,ht=2.5ex,dp=1ex]{footlineright}% 414 | \centerline{\usebox\footerright}% 415 | \end{beamercolorbox}% 416 | }} 417 | 418 | \def\awesome@smalldot{\tikz[baseline=-.6ex]\node[circle,inner sep=0.16,draw=.,fill=.]{};} 419 | \def\awesome@fulldot{\tikz[baseline=-.6ex]\node[circle,inner sep=0.32ex,draw=.,fill=.]{};} 420 | \def\awesome@emptydot{\tikz[baseline=-.6ex]\node[circle,inner sep=0.32ex,draw=.,fill=none]{};} 421 | 422 | \newcounter{pagenumbertolinkto} 423 | \setbeamertemplate{footline}{% 424 | \setfooter{\insertshortauthor}{% 425 | \hyperlinkdocumentstart{\insertshorttitle}\hspace{.7em}\awesome@smalldot\hspace{.7em}\insertsection% 426 | \ifx\insertsubsection\empty% 427 | \hspace{.4em}% 428 | \ifnum\framespersection>1% 429 | \foreach \i in {1, ..., \framespersection}{% 430 | \ifnum \i=\theframesinsection% 431 | ~\awesome@fulldot% 432 | \else% 433 | \setcounter{pagenumbertolinkto}{\i + \insertsectionstartframe}% 434 | ~\hyperlink{page:\thepagenumbertolinkto}{\awesome@emptydot}% 435 | \fi% 436 | }% 437 | \fi% 438 | \else% 439 | \hspace{.7em}\awesome@smalldot\hspace{.7em}\insertsubsection% 440 | \hspace{.7em}% 441 | \ifnum\framespersubsection>1% 442 | \foreach \i in {1, ..., \framespersubsection}{% 443 | \ifnum \i=\theframesinsubsection% 444 | ~\awesome@fulldot% 445 | \else% 446 | \setcounter{pagenumbertolinkto}{\i + \insertsubsectionstartframe}% 447 | ~\hyperlink{page:\thepagenumbertolinkto}{\awesome@emptydot}% 448 | \fi% 449 | }% 450 | \fi% 451 | \fi% 452 | }{\ifawesome@english Page\else Seite\fi~\insertframenumber~/~\inserttotalframenumber}% 453 | } 454 | 455 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 456 | 457 | \def\ps@navigation@toc{% 458 | \setbeamertemplate{footline}{\setfooter{\insertshortauthor}{\hyperlinkdocumentstart{\insertshorttitle}}{Agenda}}% 459 | \@nameuse{ps@navigation}% 460 | } 461 | 462 | \def\ps@navigation@sec{% 463 | \setbeamertemplate{footline}{% 464 | \setfooter{\insertshortauthor}% 465 | {\hyperlinkdocumentstart{\insertshorttitle}}% 466 | {\ifawesome@english Section\else Kapitel\fi~\thesection\ifx\insertsubsection\empty\else.\thesubsection\fi}% 467 | }% 468 | \@nameuse{ps@navigation}% 469 | } 470 | 471 | \pretocmd\tableofcontents{\thispagestyle{navigation@toc}}{}{} 472 | 473 | 474 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 475 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 476 | 477 | 478 | % Kinda hacky, but AtBeginEnvironment does not work with beamer tex.stackexchange.com/a/436338/286979 479 | \pretocmd\beamer@checkframetitle{% 480 | \transfade[duration=0.1]% 481 | \ifbeamer@isfragile% 482 | \label{page:\insertframenumber}% 483 | \else\ifbeamer@noframenumbering\else\hypertarget{page:\insertframenumber}{}\fi\fi% 484 | } 485 | 486 | 487 | \AtBeginSection[]{\ifawesome@secslide 488 | \begin{frame}[c,noframenumbering]\thispagestyle{navigation@sec}% 489 | \begin{wide}\centering% 490 | \usebeamerfont{title}% 491 | \usebeamercolor[fg]{section number projected}% 492 | \scalebox{1.3}{ \raisebox{-1pt}{\insertsectionnumber}}.~% 493 | \usebeamercolor[fg]{title}% 494 | \insertsectionhead% 495 | \end{wide}% 496 | \end{frame} 497 | \fi} 498 | 499 | \AtBeginSubsection[]{\ifawesome@subsecslide 500 | \begin{frame}[c,noframenumbering]\thispagestyle{navigation@sec}% 501 | \begin{wide}\centering% 502 | \usebeamerfont{title}% 503 | \usebeamercolor[fg]{section number projected}% 504 | \scalebox{1.3}{\raisebox{-1pt}{\insertsectionnumber}}.% 505 | \usebeamercolor[fg]{subsection number projected}% 506 | \textsubscript{\insertsubsectionnumber}~% 507 | \usebeamercolor[fg]{title}% 508 | \insertsubsectionhead% 509 | \end{wide}% 510 | \end{frame} 511 | \fi} 512 | 513 | \AtEndDocument{ 514 | {\setbeamercolor{background canvas}{bg=accent} 515 | \begin{frame}[b,noframenumbering]\thispagestyle{navigation@titlepage}% 516 | \begin{wide}\color{white}% 517 | \Large\textbf{\insertauthor}\vskip0.5em\scriptsize\insertlocation,~\insertdate\hfill\insertemail% 518 | \end{wide}% 519 | \end{frame}} 520 | } 521 | --------------------------------------------------------------------------------