From b298fb7cdfb8831189c3122707fcd2643d6eb9ab Mon Sep 17 00:00:00 2001 From: Benjamin Weiss Date: Fri, 12 Jun 2015 07:47:38 +0200 Subject: [PATCH] initial commit of the theme in Documented LaTeX format --- package/beamercolorthememetropolis.dtx | 211 ++++++++ package/beamerfontthememetropolis.dtx | 131 +++++ package/beamerthemem.dtx | 657 +++++++++++++++++++++++++ package/mtheme.dtx | 117 +++++ package/mtheme.ins | 56 +++ package/mtheme.pdf | Bin 0 -> 41143 bytes 6 files changed, 1172 insertions(+) create mode 100644 package/beamercolorthememetropolis.dtx create mode 100644 package/beamerfontthememetropolis.dtx create mode 100644 package/beamerthemem.dtx create mode 100644 package/mtheme.dtx create mode 100644 package/mtheme.ins create mode 100644 package/mtheme.pdf diff --git a/package/beamercolorthememetropolis.dtx b/package/beamercolorthememetropolis.dtx new file mode 100644 index 0000000..9d1fb52 --- /dev/null +++ b/package/beamercolorthememetropolis.dtx @@ -0,0 +1,211 @@ +% \iffalse meta-comment +% +% Copyright (C) 2015 by 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/benjamin-weiss/hsrmbeamertheme. +% --------------------------------------------------------------------------- +% +% The Current Maintainer of this work is Michael Vogelgesang. +% +% This work consists of the files beamercolorthememetropolis.dtx and +% beamercolorthememetropolis.ins and the derived filebase +% beamercolorthememetropolis.sty. +% +% \fi +% +% \iffalse +%<*driver> +\ProvidesFile{beamercolorthememetropolis.dtx} +% +%\NeedsTeXFormat{LaTeX2e} +%\ProvidesPackage{beamercolorthememetropolis} +%<*package> + [2015/06/12 1.0.0 A Modern Beamer Color Theme] +% +% +%<*driver> +\documentclass{ltxdoc} +\usepackage{beamercolorthememetropolis} +\EnableCrossrefs +\CodelineIndex +\RecordChanges +\begin{document} + \DocInput{beamercolorthememetropolis.dtx} + \PrintChanges + \PrintIndex +\end{document} +% +% \fi +% +% \CheckSum{0} +% +% \CharacterTable +% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +% Digits \0\1\2\3\4\5\6\7\8\9 +% Exclamation \! Double quote \" Hash (number) \# +% Dollar \$ Percent \% Ampersand \& +% Acute accent \' Left paren \( Right paren \) +% Asterisk \* Plus \+ Comma \, +% Minus \- Point \. Solidus \/ +% Colon \: Semicolon \; Less than \< +% Equals \= Greater than \> Question mark \? +% Commercial at \@ Left bracket \[ Backslash \\ +% Right bracket \] Circumflex \^ Underscore \_ +% Grave accent \` Left brace \{ Vertical bar \| +% Right brace \} Tilde \~} +% +% +% \changes{1.0.0}{2015/06/12}{Initial Stable Release.} +% +% \DoNotIndex{\newcommand,\newenvironment} +% + +% +% \StopEventually{} +% +% \subsection{Color Theme} +% +% \iffalse +%<*package> +% \fi +% +% Options +% +% \begin{macrocode} + +\newif\if@beamer@metropolis@blockbg +\@beamer@metropolis@blockbgfalse +\DeclareOptionBeamer{blockbg}{ + \@beamer@metropolis@blockbgtrue +} +% \end{macrocode} +% +% Unknown option error handling +% +% \begin{macrocode} + +\DeclareOptionBeamer*{% + \PackageWarning{beamercolorthememetropolis}{Unknown option `\CurrentOption'}% +} +\ProcessOptionsBeamer +% \end{macrocode} +% +% Colors +% +% \begin{macrocode} + +\definecolor{mDarkBrown}{HTML}{604c38} +\definecolor{mDarkTeal}{HTML}{23373b} +\definecolor{mLightBrown}{HTML}{EB811B} +\definecolor{mLightGreen}{HTML}{14B03D} +% \end{macrocode} +% +% Base Colors +% +% \begin{macrocode} + +\setbeamercolor{normal text}{% + fg=mDarkTeal, + bg=black!2 +} +\setbeamercolor{alerted text}{% + fg=mLightBrown +} +\setbeamercolor{example text}{% + fg=mLightGreen +} +% \end{macrocode} +% +% Derived Colors +% +% \begin{macrocode} + +\setbeamercolor{titlelike}{use=normal text, parent=normal text} +\setbeamercolor{structure}{% + fg=normal text.fg +} +% \end{macrocode} +% +% Frame titles and plain slides +% +% \begin{macrocode} + +\setbeamercolor{frametitle}{use=palette primary, parent=palette primary} +% \end{macrocode} +% +% The “primary” palette should be used for the most important navigational +% elements, and possibly of other elements. +% The metropolis color theme uses it for frame titles and slides. +% +% \begin{macrocode} + +\setbeamercolor{palette primary}{% + use=normal text, + fg=normal text.bg, + bg=normal text.fg +} +% \end{macrocode} +% +% Progress bar and title separator +% +% \begin{macrocode} + +\setbeamercolor{title separator}{use=progress bar, parent=progress bar} +\setbeamercolor{progress bar}{% + use=alerted text, + fg=alerted text.fg, + bg=normal text.bg!50!fg +} +% \end{macrocode} +% +% Blocks +% +% \begin{macrocode} + +\if@beamer@metropolis@blockbg + \setbeamercolor{block title}{% + use=normal text, + fg=normal text.fg, + bg=normal text.bg!80!fg + } +\else + \setbeamercolor{block title}{use=normal text, parent=normal text} +\fi +\setbeamercolor{block title alerted}{% + use={block title, alerted text}, + bg=block title.bg, + fg=alerted text.fg +} +\setbeamercolor{block title example}{% + use={block title, example text}, + bg=block title.bg, + fg=example text.fg +} +\setbeamercolor{block body alerted}{use=block body, parent=block body} +\setbeamercolor{block body example}{use=block body, parent=block body} +\setbeamercolor{block body}{ + use={block title, normal text}, + bg=block title.bg!50!normal text.bg +} +% \end{macrocode} +% +% Footnotes +% +% \begin{macrocode} + +\setbeamercolor{footnote}{fg=normal text.fg!90} +\setbeamercolor{footnote mark}{fg=.} +\mode +% \end{macrocode} + +% +% \iffalse +% +% \fi +% +% \Finale +\endinput diff --git a/package/beamerfontthememetropolis.dtx b/package/beamerfontthememetropolis.dtx new file mode 100644 index 0000000..8d6fac4 --- /dev/null +++ b/package/beamerfontthememetropolis.dtx @@ -0,0 +1,131 @@ +% \iffalse meta-comment +% +% Copyright (C) 2015 by 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/benjamin-weiss/hsrmbeamertheme. +% --------------------------------------------------------------------------- +% +% The Current Maintainer of this work is Michael Vogelgesang. +% +% This work consists of the files beamerfontthememetropolis.dtx and +% beamerfontthememetropolis.ins and the derived filebase +% beamerfontthememetropolis.sty. +% +% \fi +% +% \iffalse +%<*driver> +\ProvidesFile{beamerfontthememetropolis.dtx} +% +%\NeedsTeXFormat{LaTeX2e} +%\ProvidesPackage{beamerfontthememetropolis} +%<*package> + [2015/06/12 1.0.0 A Modern Beamer Font Theme] +% +% +%<*driver> +\documentclass{ltxdoc} +\usepackage{beamerfontthememetropolis} +\EnableCrossrefs +\CodelineIndex +\RecordChanges +\begin{document} + \DocInput{beamerfontthememetropolis.dtx} + \PrintChanges + \PrintIndex +\end{document} +% +% \fi +% +% \CheckSum{0} +% +% \CharacterTable +% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +% Digits \0\1\2\3\4\5\6\7\8\9 +% Exclamation \! Double quote \" Hash (number) \# +% Dollar \$ Percent \% Ampersand \& +% Acute accent \' Left paren \( Right paren \) +% Asterisk \* Plus \+ Comma \, +% Minus \- Point \. Solidus \/ +% Colon \: Semicolon \; Less than \< +% Equals \= Greater than \> Question mark \? +% Commercial at \@ Left bracket \[ Backslash \\ +% Right bracket \] Circumflex \^ Underscore \_ +% Grave accent \` Left brace \{ Vertical bar \| +% Right brace \} Tilde \~} +% +% +% \changes{1.0.0}{2015/06/12}{Initial Stable Release.} +% +% \DoNotIndex{\newcommand,\newenvironment} +% + +% +% \StopEventually{} +% +% \subsection{Font Theme} +% +% \iffalse +%<*package> +% \fi +% +% Font Definitions +% +% \begin{macrocode} + +\RequirePackage[no-math]{fontspec} +\defaultfontfeatures{Mapping=tex-text} +\setsansfont[BoldItalicFont={Fira Sans Italic},% + ItalicFont={Fira Sans Light Italic},% + BoldFont={Fira Sans}]{Fira Sans Light} +\setmonofont{Fira Mono} +\newfontfamily\ExtraLight{Fira Sans ExtraLight} +\newfontfamily\Light{Fira Sans Light} +\newfontfamily\Book{Fira Sans} +\newfontfamily\Medium{Fira Sans Medium} +\AtBeginEnvironment{tabular}{% + \setsansfont[BoldFont={Fira Sans},% + Numbers={Monospaced}]{Fira Sans Light}% + } +% \end{macrocode} +% +% Font Assignment +% +% \begin{macrocode} + +\setbeamerfont{title}{family=\Book, size=\Large} +\setbeamerfont{author}{family=\ExtraLight, size=\small} +\setbeamerfont{date}{family=\ExtraLight, size=\small} +\setbeamerfont{section title}{family=\Book, size=\Large} +\setbeamerfont{block title}{family=\Book, size=\normalsize} +\setbeamerfont{block title alerted}{family=\Book,size=\normalsize} +\setbeamerfont{subtitle}{family=\Light, size=\fontsize{12}{14}} +\setbeamerfont{frametitle}{family=\Book, size=\large} +\setbeamerfont{caption}{size=\small} +\setbeamerfont{caption name}{family=\Book} +\setbeamerfont{description item}{family=\Book} +\setbeamerfont{page number in head/foot}{size=\scriptsize} +% \end{macrocode} +% +% Bibliograpy +% +% \begin{macrocode} + +\setbeamerfont{bibliography entry author}{family=\Light, size=\normalsize} +\setbeamerfont{bibliography entry title}{family=\Book, size=\normalsize} +\setbeamerfont{bibliography entry location}{family=\Light, size=\normalsize} +\setbeamerfont{bibliography entry note}{family=\Light, size=\small} +\linespread{1.15} +% \end{macrocode} + +% +% \iffalse +% +% \fi +% +% \Finale +\endinput diff --git a/package/beamerthemem.dtx b/package/beamerthemem.dtx new file mode 100644 index 0000000..84faecc --- /dev/null +++ b/package/beamerthemem.dtx @@ -0,0 +1,657 @@ +% \iffalse meta-comment +% +% Copyright (C) 2015 by 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/benjamin-weiss/hsrmbeamertheme. +% --------------------------------------------------------------------------- +% +% The Current Maintainer of this work is Michael Vogelgesang. +% +% This work consists of the files beamerthemem.dtx and beamerthemem.ins +% and the derived filebase beamerthemem.sty. +% +% \fi +% +% \iffalse +%<*driver> +\ProvidesFile{beamerthemem.dtx} +% +%\NeedsTeXFormat{LaTeX2e}[1999/12/01] +%\ProvidesPackage{beamerthemem} +%<*package> + [2015/06/12 1.0.0 A Modern Beamer Theme] +% +% +%<*driver> +\documentclass{ltxdoc} +\usepackage{beamerthemem} +\EnableCrossrefs +\CodelineIndex +\RecordChanges +\begin{document} + \DocInput{beamerthemem.dtx} + \PrintChanges + \PrintIndex +\end{document} +% +% \fi +% +% \CheckSum{0} +% +% \CharacterTable +% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +% Digits \0\1\2\3\4\5\6\7\8\9 +% Exclamation \! Double quote \" Hash (number) \# +% Dollar \$ Percent \% Ampersand \& +% Acute accent \' Left paren \( Right paren \) +% Asterisk \* Plus \+ Comma \, +% Minus \- Point \. Solidus \/ +% Colon \: Semicolon \; Less than \< +% Equals \= Greater than \> Question mark \? +% Commercial at \@ Left bracket \[ Backslash \\ +% Right bracket \] Circumflex \^ Underscore \_ +% Grave accent \` Left brace \{ Vertical bar \| +% Right brace \} Tilde \~} +% +% +% \changes{1.0.0}{2015/06/12}{Initial Stable Release.} +% +% \DoNotIndex{\newcommand,\newenvironment} +% + +% +% \StopEventually{} +% +% \subsection{Main Theme} +% +% \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} +% +% 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 +% \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 +% \end{macrocode} +% +% Make Titlepage +% +% \begin{macro}{\maketitle} +% \begin{macrocode} + +\def\maketitle{\ifbeamer@inframe\titlepage\else\frame[plain]{\titlepage}\fi} +% \end{macrocode} +% \end{macro} +% +% Define Titlepage +% +% \begin{macro}{\titlepage} +% \begin{macrocode} + +\def\titlepage{\usebeamertemplate{title page}} +% \end{macrocode} +% \end{macro} +% +% Set beamer title page template +% +% \begin{macrocode} + +\setbeamertemplate{title page} +{ + \begin{minipage}[b][\paperheight]{\textwidth} + \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}% + \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} + \usebeamercolor{title separator} + \draw[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 + + \vfill + \vspace*{\@mtheme@voffset} + \end{minipage} +} +% \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} +% +% 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]{\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} +% +% pgfplots +% +% Colors +% +% TolColors from http://www.r-bloggers.com/the-paul-tol-21-color-salute/ +% \begin{macrocode} + +\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 +% \end{macrocode} +% +% Color cycles +% +% \begin{macrocode} + +\pgfplotscreateplotcyclelist{mbarplot cycle}{% + {draw=TolColor2, fill=TolColor2!70}, + {draw=TolColor7, fill=TolColor7!70}, + {draw=TolColor4, fill=TolColor4!70}, + {draw=TolColor11, fill=TolColor11!70}, + {draw=TolColor1, fill=TolColor1!70}, + {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}, + {TolColor6, mark=diamond*, mark size=1.5pt}, +} +% \end{macrocode} +% +% Styles +% +% \begin{macrocode} + +\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={} + }, +} +% \end{macrocode} +% +% +% \begin{macrocode} + +\mode +% \end{macrocode} +% +% misc +% +% \begin{macrocode} + +\let\otp\titlepage +% \end{macrocode} +% +% \begin{macro}{\titlepage} +% \begin{macrocode} + +\renewcommand{\titlepage}{\otp\addtocounter{framenumber}{-1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\mreducelistspacing} +% \begin{macrocode} + +\newcommand{\mreducelistspacing}{\vspace{-\topsep}} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} + +\linespread{1.15} +% \end{macrocode} + +% +% \iffalse +% +% \fi +% +% \Finale +\endinput diff --git a/package/mtheme.dtx b/package/mtheme.dtx new file mode 100644 index 0000000..cc0efeb --- /dev/null +++ b/package/mtheme.dtx @@ -0,0 +1,117 @@ +%% +%% This is file `mtheme.sty', +%% +%% Copyright (C) 2015 by 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/benjamin-weiss/hsrmbeamertheme. +%% --------------------------------------------------------------------------- +%% + +\documentclass{ltxdoc} +\EnableCrossrefs +\CodelineIndex +\RecordChanges +%\OnlyDescription + +\usepackage{setspace} +\onehalfspacing + +\usepackage{fontspec} +\setmainfont[BoldItalicFont={Fira Sans Italic},% + ItalicFont={Fira Sans Light Italic},% + BoldFont={Fira Sans}]{Fira Sans Light} +\setmonofont{Fira Mono} + +\usepackage{enumitem} +\setlist[itemize]{noitemsep} +\setlist[enumerate]{noitemsep} + +\usepackage{xcolor} +\definecolor{mDarkBrown}{HTML}{604c38} +\definecolor{mDarkTeal}{HTML}{23373b} +\definecolor{mLightBrown}{HTML}{EB811B} +\definecolor{mLightGreen}{HTML}{14B03D} +\definecolor{mBackground}{HTML}{FFFFFF} + +\usepackage{listings} +\lstset{% + language=[LaTeX]{TeX}, + basicstyle=\ttfamily, + keywordstyle=\color{mLightBrown}\bfseries, + commentstyle=\color{mLightGreen}, + stringstyle=\color{mLightGreen}, + backgroundcolor=\color{mBackground}, + numbers=none, + numberstyle=\tiny\ttfamily, + stepnumber=2, + showspaces=false, + showstringspaces=false, + showtabs=false, + frame=none, + framerule=1pt, + tabsize=2, + rulesep=5em, + captionpos=b, + breaklines=true, + breakatwhitespace=false, + framexleftmargin=0em, + framexrightmargin=0em, + xleftmargin=0em, + xrightmargin=0em, + aboveskip=1em, + belowskip=1em, + morekeywords={usetheme,institute,maketitle,mthemetitleformat,plain,setbeamercolor}, +} +\lstMakeShortInline| +\usepackage[colorlinks=true, + linkcolor=mLightBrown, + menucolor=mLightBrown, + pagecolor=mLightBrown, + urlcolor=mLightBrown]{hyperref} + +\GetFileInfo{beamerthemem.dtx} +\title{Modern Beamer Presentations\\with the\\\textsc{mtheme} package} +\author{Matthias Vogelgesang \\ \url{matthias.vogelgesang@gmail.com}} +\date{\fileversion~from \filedate} + +\begin{document} + +\maketitle + +\section{Introduction} +Beamer is an awesome way to make presentations with LaTeX. But the stock themes do not necessarily look particularly nice and the custom themes often scream “Beamer” at first sight. The goal of \textsc{mtheme} is to provide a modern Beamer theme with minimal visual noise. It provides section slides with a neat progress bar and +It is intended to be used with \href{https://www.mozilla.org/en-US/styleguide/products/firefox-os/typeface/}{Fira Sans}, a gorgeous typeface commissioned by Mozilla and designed by \href{http://www.carrois.com/fira-3-1/}{Carrois}. Hence to get the best results you should have installed the Fira typeface and use XeTeX to typeset your slides. Nevertheless this is no hard dependency. The theme also works fine with pdfTeX and the Computer Modern typeface. + +The codebase is maintained on \href{https://github.com/matze/mtheme}{GitHub}. So if you have issues, find mistakes in the manual or want to contribute – to make the theme even better – get in contact there. + +\section{Getting Started} +To get started with the theme is very simple. The following code shows a minimal example of a Beamer presentation using the \textsc{mtheme}. + +\begin{lstlisting} +\documentclass[10pt]{beamer} +\usetheme{m} % load mtheme +\title{A modern beamer theme} % define title +\date{\today} % define date +\author{Matthias Vogelgesang} % define author +\institute{Institute} % define institute +\begin{document} +\maketitle % create titlepage +\section{First Section} % create section +\begin{frame}{First Frame} % first frame + Lorem ipsum dolor sit amet, ... +\end{frame} +\begin{frame}{Second Frame} % second frame + Lorem ipsum dolor sit amet, ... +\end{frame} +\end{document} +\end{lstlisting} + +\section{Implementation} +\DocInput{beamerthemem.dtx} +\DocInput{beamerfontthememetropolis.dtx} +\DocInput{beamercolorthememetropolis.dtx} + +\end{document} diff --git a/package/mtheme.ins b/package/mtheme.ins new file mode 100644 index 0000000..8371110 --- /dev/null +++ b/package/mtheme.ins @@ -0,0 +1,56 @@ +%% Copyright (C) 2015 by Matthias Vogelgesang +%% --------------------------------------------------------------------------- +%% Licensed under CC-BY-SA 4.0 International. +%% +%% The Current Maintainer of this work is Matthias Vogelgesang. +%% +%% This work consists of the files beamerthemem.dtx and beamerthemem.ins +%% and the derived filebase beamerthemem.sty. +%% + +\input docstrip.tex +\keepsilent + +\usedir{tex/latex/mtheme} + +\preamble + +This is a generated file +--------------------------------------------------------------------------- +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/benjamin-weiss/hsrmbeamertheme. +--------------------------------------------------------------------------- + +\endpreamble + +\generate{\file{beamerthemem.sty}{% + \from{beamerthemem.dtx}{package}} + } +\generate{\file{beamerfontthememetropolis.sty}{% + \from{beamerfontthememetropolis.dtx}{package}} + } +\generate{\file{beamercolorthememetropolis.sty}{% + \from{beamercolorthememetropolis.dtx}{package}} + } + +\obeyspaces +\Msg{**************************************************************} +\Msg{* *} +\Msg{* To finish the installation you have to move the following *} +\Msg{* files into a directory searched by TeX: *} +\Msg{* *} +\Msg{* beamerthemem.sty *} +\Msg{* beamerfontthememetropolis.sty *} +\Msg{* beamercolorthememetropolis.sty *} +\Msg{* *} +\Msg{* To produce the documentation run the file mtheme.dtx *} +\Msg{* through LaTeX. *} +\Msg{* *} +\Msg{* Happy TeXing! *} +\Msg{* *} +\Msg{**************************************************************} + +\endbatchfile diff --git a/package/mtheme.pdf b/package/mtheme.pdf new file mode 100644 index 0000000000000000000000000000000000000000..cbb3e646b8f38efc3a7fed58b87593656d5e805a GIT binary patch literal 41143 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 K2v}Fe-SW}bBDhIxMsj@2_GI;1X-q?O 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