metropolis_theme/beamerthemem.dtx

453 lines
9.7 KiB
TeX

% \iffalse meta-comment -------------------------------------------------------
% Copyright 2015 Matthias Vogelgesang and the LaTeX community. A full list of
% contributors can be found at
%
% https://github.com/matze/mtheme/graphs/contributors
%
% and the original template was based on the HSRM theme by Benjamin Weiss.
%
% This work is licensed under a Creative Commons Attribution-ShareAlike 4.0
% International License (https://creativecommons.org/licenses/by-sa/4.0/).
% ------------------------------------------------------------------------- \fi
% \iffalse
%<driver> \ProvidesFile{beamerthemem.dtx}
%<*package>
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{beamerthemem}
[2015/06/12 A Modern Beamer Theme]
%</package>
%<driver> \documentclass{ltxdoc}
%<driver> \usepackage{beamerthemem}
%<driver> \begin{document}
%<driver> \DocInput{beamerthemem.dtx}
%<driver> \end{document}
% \fi
% \CheckSum{0}
% \StopEventually{}
% \iffalse
%<*package>
% ------------------------------------------------------------------------- \fi
%
%
%
% Options
%
% \begin{macrocode}
\newif\if@useTitleProgressBar
\@useTitleProgressBarfalse
\DeclareOptionBeamer{usetitleprogressbar}{
\@useTitleProgressBartrue
}
% \end{macrocode}
%
% usetotalslideindicator
%
% \begin{macrocode}
\newif\if@useTotalSlideIndicator
\@useTotalSlideIndicatorfalse
\DeclareOptionBeamer{usetotalslideindicator}{
\@useTotalSlideIndicatortrue
}
% \end{macrocode}
%
% noslidenumbers
%
% \begin{macrocode}
\newif\if@noSlideNumbers
\@noSlideNumbersfalse
\DeclareOptionBeamer{noslidenumbers}{
\@noSlideNumberstrue
}
% \end{macrocode}
%
% nosectionslide
%
% \begin{macrocode}
\newif\if@noSectionSlide
\@noSectionSlidefalse
\DeclareOptionBeamer{nosectionslide}{
\@noSectionSlidetrue
}
% \end{macrocode}
%
% protectframetitle
%
% \begin{macrocode}
\newif\if@protectFrameTitle
\@protectFrameTitlefalse
\DeclareOptionBeamer{protectframetitle}{
\@protectFrameTitletrue
}
% \end{macrocode}
%
% nooffset
%
% \begin{macrocode}
\newlength{\@mtheme@voffset}
\setlength{\@mtheme@voffset}{2em}
\DeclareOptionBeamer{nooffset}{
\setlength{\@mtheme@voffset}{0em}
}
% \end{macrocode}
%
% blockbg
%
% \begin{macrocode}
\DeclareOptionBeamer{blockbg}{
\PassOptionsToPackage{blockbg}{beamercolorthememetropolis}%
}
% \end{macrocode}
%
% darkcolors
%
% \begin{macrocode}
\DeclareOptionBeamer{darkcolors}{
\PassOptionsToPackage{darkcolors}{beamercolorthememetropolis}%
}
% \end{macrocode}
%
% Unknown option error handling
%
% \begin{macrocode}
\DeclareOptionBeamer*{
\PackageWarning{beamerthemem}{Unknown option `\CurrentOption'}%
}
\ProcessOptionsBeamer
% \end{macrocode}
%
% mthemetitleformat
%
% \begin{macro}{\mthemetitleformat}
% \begin{macrocode}
\def\mthemetitleformat#1{\scshape #1}
% \end{macrocode}
% \end{macro}
%
% \begin{macrocode}
\mode<presentation>
% \end{macrocode}
%
% Packages
%
% \begin{macrocode}
\RequirePackage{etoolbox}
\RequirePackage{tikz}
\RequirePackage{pgfplots}
\RequirePackage{ifxetex,ifluatex}
\newif\ifxetexorluatex
\ifxetex
\xetexorluatextrue
\else
\ifluatex
\xetexorluatextrue
\else
\xetexorluatexfalse
\fi
\fi
\usetikzlibrary{backgrounds}
\usetikzlibrary{calc}
\usecolortheme{metropolis}
\ifxetexorluatex
\usefonttheme{metropolis}
\else
\PackageWarning{beamerthemem}{You need to compile with XeLaTeX or LuaLaTeX for the Fira fonts.}
\fi
\useinnertheme{metropolis}%
\AtEndPreamble{%
\@ifpackageloaded{pgfplots}{%
\RequirePackage{pgfplotsthemetol}
}{}
}
% \end{macrocode}
% \end{macrocode}
%
% Progressbar
%
% \begin{macrocode}
\RequirePackage{calc}
% \end{macrocode}
%
% \begin{macro}{\inserttotalframenumber}
% \begin{macrocode}
\def\inserttotalframenumber{100} % prevent \progressbar@percent from getting too big on first compile
% \end{macrocode}
% \end{macro}
%
% \begin{macrocode}
\newlength{\progressbar@percent}
% \end{macrocode}
%
% \begin{macro}{\progressbar}
% \begin{macrocode}
\newcommand{\progressbar}[1]{%
\setlength{\progressbar@percent}{%
#1 * \ratio{\insertframenumber pt}{\inserttotalframenumber pt}%
}%
\begin{tikzpicture}[tight background]
\usebeamercolor{progress bar}
\draw[bg, fill=bg] (0,0) rectangle (#1, 0.4pt);
\draw[fg, fill=fg] (0,0) rectangle (\progressbar@percent, 0.4pt);
\end{tikzpicture}%
}
% \end{macrocode}
% \end{macro}
%
% Commands
%
% \begin{macro}{\insertsectionHEAD}
% \begin{macrocode}
\newcommand{\insertsectionHEAD}{%
\expandafter\insertsectionHEADaux\insertsectionhead}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\insertsectionHEADaux}
% \begin{macrocode}
\newcommand{\insertsectionHEADaux}[3]{\mthemetitleformat{#3}}%
% \end{macrocode}
% \end{macro}
%
% Create a plain frame with dark background
%
% \begin{macro}{\plain}
% \begin{macrocode}
\newcommand{\plain}[2][]{%
\begingroup
\setbeamercolor{background canvas}{use=palette primary,parent=palette primary}
\begin{frame}{#1}
\centering
\vfill
\vspace{1em}
\usebeamercolor[fg]{palette primary}
\usebeamerfont{section title}
\mthemetitleformat{#2}
\vfill
\end{frame}
\endgroup
}
% \end{macrocode}
% \end{macro}
%
% Itemize tweaks
%
% \begin{macrocode}
\setlength{\leftmargini}{1em}
\setlength{\leftmarginii}{1em}
\setlength{\leftmarginiii}{1em}
% \end{macrocode}
%
% \begin{macro}{\itemBullet}
% \begin{macrocode}
\newcommand{\itemBullet}{}
% \end{macrocode}
% \end{macro}
%
% \begin{macrocode}
\setbeamertemplate{itemize item}{\itemBullet}
\setbeamertemplate{itemize subitem}{\itemBullet}
\setbeamertemplate{itemize subsubitem}{\itemBullet}
\setlength{\parskip}{0.5em}
% \end{macrocode}
%
% Block environment
%
% \begin{macrocode}
\newlength{\leftrightskip}
\if@beamer@metropolis@blockbg
\setlength{\leftrightskip}{1ex}
\else
\setlength{\leftrightskip}{0ex}
\fi
\setbeamertemplate{block begin}{%
\vspace*{1ex}
\begin{beamercolorbox}[%
ht=2.4ex,
dp=1ex,
leftskip=\leftrightskip,
rightskip=\leftrightskip]{block title}
\usebeamerfont*{block title}\insertblocktitle%
\end{beamercolorbox}%
\vspace*{-1pt}
\usebeamerfont{block body}%
\begin{beamercolorbox}[%
dp=1ex,
leftskip=\leftrightskip,
rightskip=\leftrightskip,
vmode]{block body}%
}
\setbeamertemplate{block end}{%
\end{beamercolorbox}
\vspace*{0.2ex}
}
% \end{macrocode}
%
% Alerted block environment
%
% \begin{macrocode}
\setbeamertemplate{block alerted begin}{%
\vspace*{1ex}
\begin{beamercolorbox}[%
ht=2.4ex,
dp=1ex,
leftskip=\leftrightskip,
rightskip=\leftrightskip]{block title alerted}
\usebeamerfont*{block title alerted}\insertblocktitle%
\end{beamercolorbox}%
\vspace*{-1pt}
\usebeamerfont{block body alerted}%
\begin{beamercolorbox}[%
dp=1ex,
leftskip=\leftrightskip,
rightskip=\leftrightskip,
vmode]{block body}%
}
\setbeamertemplate{block alerted end}{%
\end{beamercolorbox}
\vspace*{0.2ex}
}
% \end{macrocode}
%
% Example block environment
%
% \begin{macrocode}
\setbeamertemplate{block example begin}{%
\vspace*{1ex}
\begin{beamercolorbox}[%
ht=2.4ex,
dp=1ex,
leftskip=\leftrightskip,
rightskip=\leftrightskip]{block title example}
\usebeamerfont*{block title example}\insertblocktitle%
\end{beamercolorbox}%
\vspace*{-1pt}
\usebeamerfont{block body example}%
\begin{beamercolorbox}[%
dp=1ex,
leftskip=\leftrightskip,
rightskip=\leftrightskip,
vmode]{block body}%
}
\setbeamertemplate{block example end}{%
\end{beamercolorbox}
\vspace*{0.2ex}
}
% \end{macrocode}
%
% Sections
%
% \begin{macrocode}
\setbeamertemplate{section page}
{
\vspace{2em}
\centering
\begin{minipage}{22em}
\usebeamercolor[fg]{section title}
\usebeamerfont{section title}
\insertsectionHEAD\\[-1ex]
\progressbar{\textwidth}
\end{minipage}
\par
}
% \end{macrocode}
%
% Insert frame with section title at every section start
%
% \begin{macrocode}
\if@noSectionSlide\else%
\AtBeginSection[]
{
\ifbeamer@inframe
\sectionpage
\else
\frame[plain,c]{\sectionpage}
\fi
}
\fi
% \end{macrocode}
%
% Captions
%
% \begin{macrocode}
\setbeamertemplate{caption label separator}{: }
\setbeamertemplate{caption}[numbered]
% \end{macrocode}
%
% Footline/footnote
%
% \begin{macrocode}
\usenavigationsymbolstemplate{}
\setbeamertemplate{footline}
{%
\begin{beamercolorbox}[wd=\textwidth,ht=3ex,dp=3ex,leftskip=0.3cm,rightskip=0.3cm]{footline}%
\hfill\usebeamerfont{page number in head/foot}%
\if@noSlideNumbers%
%Purposefully left blank to display no slide number.%
\else%
\if@useTotalSlideIndicator%
\insertframenumber/\inserttotalframenumber%
\else%
\insertframenumber%
\fi%
\fi%
\end{beamercolorbox}%
}
\setbeamertemplate{footnote}
{%
\parindent 0em\noindent%
\raggedright
\usebeamercolor{footnote}\hbox to 0.8em{\hfil\insertfootnotemark}\insertfootnotetext\par%
}
% \end{macrocode}
%
% Frametitle
%
% \begin{macrocode}
\setbeamertemplate{frametitle}{%
\nointerlineskip
\begin{beamercolorbox}[wd=\paperwidth,leftskip=0.3cm,rightskip=0.3cm,ht=2.5ex,dp=1.5ex]{frametitle}
\usebeamerfont{frametitle}%
\if@protectFrameTitle%
\mthemetitleformat{\protect\insertframetitle}%
\else%
\mthemetitleformat{\insertframetitle}%
\fi%
\end{beamercolorbox}%
\if@useTitleProgressBar
\nointerlineskip
\begin{beamercolorbox}[wd=\paperwidth,ht=0.4pt,dp=0pt]{frametitle}
\progressbar{\paperwidth}
\end{beamercolorbox}
\fi
\vspace{\@mtheme@voffset}
}
% \end{macrocode}
%
%
% \begin{macrocode}
\mode<all>
% \end{macrocode}
%
% misc
%
%
% \begin{macro}{\mreducelistspacing}
% \begin{macrocode}
\newcommand{\mreducelistspacing}{\vspace{-\topsep}}
% \end{macrocode}
% \end{macro}
%
% \begin{macrocode}
\linespread{1.15}
% \end{macrocode}
%
% \iffalse
%</package>
% \fi
% \Finale
\endinput