mirror of https://github.com/matze/mtheme.git
453 lines
9.7 KiB
TeX
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
|