metropolis_theme/beamerthemem.sty

421 lines
9.9 KiB
Plaintext
Raw Normal View History

2014-09-19 22:52:31 +02:00
% Beamer mtheme
%
% Copyright 2014 Matthias Vogelgesang
% Licensed under CC-BY-SA 4.0 International.
%
% The initial template comes from the HSRM beamer theme by Benjamin Weiss, which
% you can find at https://github.com/hsrmbeamertheme/hsrmbeamertheme.
%
2014-08-28 10:57:04 +02:00
\ProvidesPackage{beamerthemem}
%{{{ --- Options ----------------------
\newif\if@useTitleProgressBar
\newif\if@protectFrameTitle
\newif\if@noSectionSlide
\newif\if@useTotalSlideIndicator
\newif\if@noSlideNumbers
\@useTitleProgressBarfalse
\@protectFrameTitlefalse
\@noSectionSlidefalse
\@useTotalSlideIndicatorfalse
\@noSlideNumbersfalse
\newlength{\@mtheme@voffset}
\setlength{\@mtheme@voffset}{2em}
\DeclareOptionBeamer{usetitleprogressbar}{\@useTitleProgressBartrue}
\DeclareOptionBeamer{protectframetitle}{\@protectFrameTitletrue}
\DeclareOptionBeamer{blockbg}{%
\PassOptionsToPackage{blockbg}{beamercolorthememetropolis}%
}
\DeclareOptionBeamer{nooffset}{\setlength{\@mtheme@voffset}{0em}}
\DeclareOptionBeamer*{%
\PackageWarning{beamerthemem}{Unknown option `\CurrentOption'}%
}
\DeclareOptionBeamer{nosectionslide}{\@noSectionSlidetrue}
\DeclareOptionBeamer{usetotalslideindicator}{\@useTotalSlideIndicatortrue}
\DeclareOptionBeamer{noslidenumbers}{\@noSlideNumberstrue}
\ProcessOptionsBeamer
%}}}
\mode<presentation>
2014-08-28 10:57:04 +02:00
%{{{ --- Packages ---------------------
\RequirePackage{etoolbox}
\RequirePackage{tikz}
\RequirePackage{pgfplots}
\RequirePackage{ifxetex}
2014-08-28 10:57:04 +02:00
\usetikzlibrary{backgrounds}
\usetikzlibrary{calc}
2014-08-28 10:57:04 +02:00
\usecolortheme{metropolis}
\ifxetex
\usefonttheme{metropolis}
\else
\PackageWarning{beamerthemem}{You need to compile with XeLaTeX for the Fira fonts.}
\fi
2014-08-28 11:28:31 +02:00
%}}}
%{{{ --- Titlepage --------------------
\def\maketitle{\ifbeamer@inframe\titlepage\else\frame[plain]{\titlepage}\fi}
2014-08-28 17:53:56 +02:00
\def\titlepage{\usebeamertemplate{title page}}
2014-08-28 17:53:56 +02:00
\setbeamertemplate{title page}
{
\begin{minipage}[b][\paperheight]{\textwidth}
2015-02-20 23:12:23 +01:00
\vspace*{\@mtheme@voffset}
\ifx\inserttitlegraphic\@empty\else
{% \inserttitlegraphic is nonempty
\vbox to 0pt
{% display title graphic without changing the position of other elements
\vspace*{2em}
\usebeamercolor[fg]{titlegraphic}%
\inserttitlegraphic%
}%
\nointerlineskip%
}
\fi
\vfill%
\ifx\inserttitle\@empty\else
{{% \inserttitle is nonempty
\raggedright%
\linespread{1.0}%
\usebeamerfont{title}%
\usebeamercolor[fg]{title}%
2015-05-29 09:00:46 +02:00
\mthemetitleformat{\inserttitle}%
\vspace*{0.5em}
}}
\fi
\ifx\insertsubtitle\@empty\else
{{% \insertsubtitle is nonempty
\usebeamerfont{subtitle}%
\usebeamercolor[fg]{subtitle}%
\insertsubtitle%
\vspace*{0.5em}%
}}
\fi
\begin{tikzpicture}
\draw[alerted text.fg] (0, 0) -- (\textwidth, 0);
\end{tikzpicture}%
\vspace*{1em}%
\ifx\beamer@shortauthor\@empty\else
{{% \insertauthor is always nonempty by beamer's definition, so we must
% test another macro which is initialized by \author{...}
% For details, see http://tex.stackexchange.com/questions/241306/
\usebeamerfont{author}%
\usebeamercolor[fg]{author}%
\insertauthor%
\par%
\vspace*{0.25em}
}}
\fi
\ifx\insertdate\@empty\else
{{% \insertdate is nonempty
\usebeamerfont{date}%
\usebeamercolor[fg]{date}%
\insertdate%
\par%
}}
\fi
\ifx\insertinstitute\@empty\else
{{% \insertinstitute is nonempty
\vspace*{3mm}
\usebeamerfont{institute}%
\usebeamercolor[fg]{institute}%
\insertinstitute%
\par%
}}
\fi
2014-08-28 17:53:56 +02:00
\vfill
2015-02-20 23:12:23 +01:00
\vspace*{\@mtheme@voffset}
2014-08-28 17:53:56 +02:00
\end{minipage}
}
2014-08-28 10:57:04 +02:00
%}}}
%{{{ --- Progressbar ------------------
\RequirePackage{calc}
\newlength{\progressbar@percent}
\newcommand{\progressbar}[1]{%
\setlength{\progressbar@percent}{%
#1 * \ratio{\insertframenumber pt}{\inserttotalframenumber pt}%
}%
\usebeamercolor{palette primary}
\begin{tikzpicture}[tight background]
\draw[fg!50, fill=fg!50] (0,0) rectangle (#1, 0.4pt);
\draw[alerted text.fg, fill=alerted text.fg] (0,0) rectangle (\progressbar@percent, 0.4pt);
\end{tikzpicture}%
}
%}}}
2014-08-28 10:57:04 +02:00
%{{{ --- Commands ---------------------
\newcommand{\insertsectionHEAD}{%
\expandafter\insertsectionHEADaux\insertsectionhead}
2015-05-29 09:00:46 +02:00
\newcommand{\insertsectionHEADaux}[3]{\mthemetitleformat{#3}}%
2015-05-29 09:00:46 +02:00
\def\mthemetitleformat#1{\scshape #1}
2014-10-09 15:10:47 +02:00
\newcommand{\plain}[2][]{%
\begingroup
\setbeamercolor{background canvas}{use=palette primary,bg=palette primary.fg}
\begin{frame}{#1}
\centering
2015-05-29 09:00:46 +02:00
\vfill\vspace{1em}\usebeamerfont{section title}\textcolor{white}{\mthemetitleformat{#2}}\vfill
\end{frame}
\endgroup
}
2014-08-28 10:57:04 +02:00
%}}}
%{{{ --- Itemize ----------------------
2014-10-09 16:50:42 +02:00
\setlength{\leftmargini}{1em}
% Actually one level should be enough but ...
\setlength{\leftmarginii}{1em}
\setlength{\leftmarginiii}{1em}
2014-09-21 09:03:05 +02:00
\newcommand{\itemBullet}{∙}
2014-08-28 10:57:04 +02:00
2014-09-21 09:03:05 +02:00
\setbeamertemplate{itemize item}{\itemBullet}
\setbeamertemplate{itemize subitem}{\itemBullet}
\setbeamertemplate{itemize subsubitem}{\itemBullet}
2014-08-28 10:57:04 +02:00
\setlength{\parskip}{0.5em}
%}}}
%{{{ --- Sections ---------------------
\setbeamertemplate{section page}
2014-08-28 10:57:04 +02:00
{
\vspace{2em}
\centering
\begin{minipage}{22em}
\usebeamercolor[fg]{section title}
\usebeamerfont{section title}
\insertsectionHEAD\\[-1ex]
\progressbar{\textwidth}
\end{minipage}
\par
2014-08-28 10:57:04 +02:00
}
% Insert frame with section title at every section start
\if@noSectionSlide\else%
\AtBeginSection[]
{
\ifbeamer@inframe
\sectionpage
\else
\begingroup
\setbeamercolor{background canvas}{parent=palette primary}
\frame[plain]{\sectionpage}
\endgroup
\fi
}
\fi
2014-08-28 10:57:04 +02:00
%}}}
%{{{ --- Captions ---------------------
\setbeamertemplate{caption label separator}{: }
2015-02-09 09:53:11 +01:00
\setbeamertemplate{caption}[numbered]
2014-08-28 10:57:04 +02:00
%}}}
%{{{ --- Footline/footnote ------------
2014-08-28 10:57:04 +02:00
\usenavigationsymbolstemplate{}
\setbeamertemplate{footline}
{%
2014-10-27 08:27:12 +01:00
\begin{beamercolorbox}[wd=\textwidth,ht=3ex,dp=3ex,leftskip=0.3cm,rightskip=0.3cm]{structure}%
\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%
2014-08-28 10:57:04 +02:00
\end{beamercolorbox}%
}
\setbeamertemplate{footnote}
{%
\parindent 0em\noindent%
\raggedright
\usebeamercolor{footnote}\hbox to 0.8em{\hfil\insertfootnotemark}\insertfootnotetext\par%
}
2014-08-28 10:57:04 +02:00
%}}}
%{{{ --- Frametitle -------------------
2014-08-28 11:13:46 +02:00
\setbeamertemplate{frametitle}{%
\nointerlineskip
2014-08-28 11:13:46 +02:00
\begin{beamercolorbox}[wd=\paperwidth,leftskip=0.3cm,rightskip=0.3cm,ht=2.5ex,dp=1.5ex]{frametitle}
\usebeamerfont{frametitle}%
\if@protectFrameTitle%
2015-05-29 09:00:46 +02:00
\mthemetitleformat{\protect\insertframetitle}%
\else%
2015-05-29 09:00:46 +02:00
\mthemetitleformat{\insertframetitle}%
\fi%
\end{beamercolorbox}%
2014-10-04 02:54:38 +02:00
\if@useTitleProgressBar
\nointerlineskip
\begin{beamercolorbox}[wd=\paperwidth,ht=0.4pt,dp=0pt]{frametitle}
\progressbar{\paperwidth}
2014-10-04 02:54:38 +02:00
\end{beamercolorbox}
\fi
\vspace{\@mtheme@voffset}
2014-08-28 10:57:04 +02:00
}
2014-10-17 08:40:25 +02:00
%}}}
%{{{ --- pgfplots ---------------------
%{{{ Colors
% TolColors from http://www.r-bloggers.com/the-paul-tol-21-color-salute/
\definecolor{TolColor1}{HTML}{332288} % dark purple
\definecolor{TolColor2}{HTML}{6699CC} % dark blue
\definecolor{TolColor3}{HTML}{88CCEE} % light blue
\definecolor{TolColor4}{HTML}{44AA99} % light green
\definecolor{TolColor5}{HTML}{117733} % dark green
\definecolor{TolColor6}{HTML}{999933} % dark brown
\definecolor{TolColor7}{HTML}{DDCC77} % light brown
\definecolor{TolColor8}{HTML}{661100} % dark red
\definecolor{TolColor9}{HTML}{CC6677} % light red
\definecolor{TolColor10}{HTML}{AA4466} % light pink
\definecolor{TolColor11}{HTML}{882255} % dark pink
\definecolor{TolColor12}{HTML}{AA4499} % light purple
%}}}
%{{{ Color cycles
\pgfplotscreateplotcyclelist{mbarplot cycle}{%
{draw=TolColor2, fill=TolColor2!70},
{draw=TolColor7, fill=TolColor7!70},
{draw=TolColor4, fill=TolColor4!70},
{draw=TolColor11, fill=TolColor11!70},
2014-10-31 10:31:13 +01:00
{draw=TolColor1, fill=TolColor1!70},
2014-10-17 08:40:25 +02:00
{draw=TolColor8, fill=TolColor8!70},
{draw=TolColor6, fill=TolColor6!70},
{draw=TolColor9, fill=TolColor9!70},
{draw=TolColor10, fill=TolColor10!70},
{draw=TolColor12, fill=TolColor12!70},
{draw=TolColor3, fill=TolColor3!70},
{draw=TolColor5, fill=TolColor5!70},
}
\pgfplotscreateplotcyclelist{mlineplot cycle}{%
{TolColor2, mark=*, mark size=1.5pt},
{TolColor7, mark=square*, mark size=1.3pt},
{TolColor4, mark=triangle*, mark size=1.5pt},
2014-11-17 16:27:27 +01:00
{TolColor6, mark=diamond*, mark size=1.5pt},
2014-10-17 08:40:25 +02:00
}
%}}}
%{{{ Styles
\pgfplotsset{
compat=1.9,
mbaseplot/.style={
legend style={
draw=none,
fill=none,
cells={anchor=west},
},
x tick label style={
font=\footnotesize
},
y tick label style={
font=\footnotesize
},
legend style={
font=\footnotesize
},
major grid style={
dotted,
},
axis x line*=bottom,
},
mlineplot/.style={
mbaseplot,
xmajorgrids=true,
ymajorgrids=true,
major grid style={dotted},
axis x line=bottom,
axis y line=left,
legend style={
cells={anchor=west},
draw=none
},
cycle list name=mlineplot cycle,
},
mbarplot base/.style={
mbaseplot,
bar width=6pt,
axis y line*=none,
},
mbarplot/.style={
mbarplot base,
ybar,
xmajorgrids=false,
ymajorgrids=true,
area legend,
legend image code/.code={%
\draw[#1] (0cm,-0.1cm) rectangle (0.15cm,0.1cm);
},
cycle list name=mbarplot cycle,
},
horizontal mbarplot/.style={
mbarplot base,
xmajorgrids=true,
ymajorgrids=false,
xbar stacked,
area legend,
legend image code/.code={%
\draw[#1] (0cm,-0.1cm) rectangle (0.15cm,0.1cm);
},
cycle list name=mbarplot cycle,
},
disable thousands separator/.style={
/pgf/number format/.cd,
1000 sep={}
},
2014-10-17 08:40:25 +02:00
}
%}}}
\mode<all>
2014-08-28 11:28:31 +02:00
%{{{ misc
2014-08-28 11:28:31 +02:00
\let\otp\titlepage
\renewcommand{\titlepage}{\otp\addtocounter{framenumber}{-1}}
2014-10-27 14:40:44 +01:00
\newcommand{\mreducelistspacing}{\vspace{-\topsep}}
2014-09-05 10:53:01 +02:00
\linespread{1.15}
2014-09-05 10:53:01 +02:00
%}}}