From b298fb7cdfb8831189c3122707fcd2643d6eb9ab Mon Sep 17 00:00:00 2001 From: Benjamin Weiss Date: Fri, 12 Jun 2015 07:47:38 +0200 Subject: [PATCH 1/9] 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 z9iD*u7=aJwGOZA86d6f}Ghveycux#ZCKlniY^z~2Nvo8RQIUuXEf(u4uqiicuCz2v za_HPpHNKKGP}-02?9&$LenXmQrS`-O_vJ50fe8=NcY0-ec~~dQ^to!2NY{4gq8^Kp6!lzI|8gBf4>`+@% zjjSP+Q1Iz7;Ty>@azC)&KOIn7(HfS!dDkZqH}*}l4pyev5}y7m$Pj7*v7tT)!~0i} z#$E!nluGA^7iAA0q*_M7%lvqv{EBWk-0;4kS%T^TX)(o1<9v~K!n9Jl7My8@sj)@< zf_`7}g=no?VaiyBwcM}1;vf90w6vKyVYO+n^c^bDCX?;+@&Z+TeBr(w3sx}wrD8AP zvJJ%#FMk$+`P?srCZ;2XRy_Q-gHm6>R_98e|6tBPI}B%{XZ{~i)BiVz$tw~BjrQML zy6XUx4x}aPzlY(BOvF!rFPn8OT?4gsyF*ZB(%F{2Hp*oN_?Diqz9(!x*S}mYe7*#o zb%wTGTH7xQZ#z2OXgqedN_u<679?LeUdu1|TKV|3T=|7=)5;K12#QTpHw9kxeJA(-5Je#F}O#dAE#kn{NN zR;zA==js<C+bto765TJsDN5&kR*5T>Vav2W?4{@W#kh!cAo_~ zIXSKTA@$st86< z4dPgHHpVj;`1!0cP}+`_kp%FVClQdj6-%WJ6IOH0MxQ+_`~;-U8IiYgEg;#_Nf5~T z7K%HJ&>&=^iDqtc)*W{}tD_`6RoomGYN+qP}nwr$(CZQHi( z)%!-=hyQe+=s5jWj}YMG<;;+bt`|q1JgTs&$I=NV;COp+408UzSee$ zOc7XSz+RWAn6C4?V?kWme273z>th}I%v}C>bC1;h>hbJDZ4dJvRM|-e$fn=&UvqtG z*)(J8i48|931sORXVRlnIOWIfq!$#IBwO`N3$;wcYUy@d869s0f9i2woP>Y+$+yo? zN|l{x)o+fte@m!hIrnbe;H)sajjFAv@_KD^rnE&zOe|}rv#+eNg-tm38l_vXM3-uy zPx5zvO?6JRzXaO!5?(khbK@JiPt_{-ocD^FyE`v&MJM+>gpEmmwvt^-zw&UjKI>ws zbUyHB+oQT(qce+mt}@kfER9&dQtNLflTvJ+NE>e^$TW&jdHb)60>6^y=#`sh^sZ}x zCIL%RRA{ZT%VWtgVP9)@km5ifQPWc-3n;J|>as~GS|bfFQv@!7(aTqBt9$F~+CA5EnGCF8<`Xs`iiVkohF;JEeGgDVR(0C_9l2WmX%CbZ|j(_Z)P{Qv!|##4-A` z6L2l5DZ3t?R|0NEIOXEP@hqHd}NR{-D~QB=`_vqIJ0I_Q$udy^glby9VN zbsvX-14#P^x7>m5k6}(-?=u*D8EvYjM}83=skdT6?&=K%_A(v;Wj(8ppL^cC1<{~i?3K1pD_%sv;{MDw`Ngd51kPJYNi42O4%2;dknHCZvO*dzQ#EQQ|0g`EObj^2^j> zeQ3jAC}-gd=8{dtA31P4$|w+faUmG{TL-aN%Nx^l$I*xlKAUCy6sd#7Xez+2}xNgQnGQ zvWDl9fFsu~^NNBTt{dHO`(Yee?|4O83+Q(H;QB`ALyk+ z;05RwyRWmBwO`wmBBD+4Gb^sc{%(Jx%mT86(=df+TVqN=-xdhI-x7?U@}D+k-QLZK zReGjn>l%Toz)BjNi@nOtw?hlMwXeXN+s#}e7-db-TlFo0Yk+bj@vxaR@ThRW=6H?F z59)4Qfs0tgW+KL^r^fPP*E!hpPp;aBL+dHkyIY}#})bUIxEyAc8V^pv;hy6zXv$PGY#F)5=nQ+d9ti62qlx4q0a zI5TMo28PAPM(eDO6M^ogh--uDD$2&OQOfSNqMk%Znz_b_1iv+^Hbd%^ z`RhZJcUq5~OoJ6T*QI{=AqQ)`_t-kza5j(4H#o?5*(YPpsjS$cn#qL2*VOm@d@g5L zWAkI}_#bSChEH*RY&)9DGES7d@~9QMux9%Rb)$u<52OSBufI-s>-429&*p#asn#+- zf~0J~z32lI=~97>#Hj3$vm8A5KL!Ltk0*o9A$y76qZx=vdR}z?(pB@I#rH1xRk(%~ z`!F6lj=g=V=ulTq{Y)hw^b6UETXd zm_NhH(ca$AsKff=OkvT8^bv#QN4$)BF+7#zT(xSEsgpr7UPrP5PD5}l$ zvFU@@6Y@KBL~f&fgu679jOKw#QXA;^Z?)mJ*wtp4(H7dRrs6$1+s{jS2Gb=_+HjH#4}a zg;2Rq%rYa)s$qXxdo!0Qm$e?6{&p||6tbR$nvP$Nd(oAurUY50G6_s`AH9ZuAhx1Q zIS1{qaV&UjCv%=-?|oK75Vz&_3hq{f(fnP>OT5v<=z>D07&5FeNDH$ikK8TRVyA0@ zJ%kM%W7K?hOliaEyfId<6koT5PnVQi%vQ?MaaD3Z?q*?7I6o`6lgR@3Bk5GS3bbd5 z`;zoxt$Hed(IW=BSN)={g(l$*rn}XzZ+M@*I zuFY|T`(IEt3f(cj*piobB#{`6GXIdT=VRWrQ%$S?QuY2Pq0dA!6} z3%p^EwD<31|CsxMiM=Q`nSsEoCN{OCnTW%;LqxMu52$lsN}i9))i1A?d4zwX$|xSAnkgTHeESe0jb^bBv1WvOdL$W2*KonE*m(rQrBm>v zft1ye4;wDG#cDHZ2(T|$56j0)AZLYT6V_@Qk%g>A=j!O0P9Qe3+!0YZlk!?7P6f{C zZ5QYZ#X#W+PD zJVJz{nrsd=B5=((8EA~nWA0o!9K_xHNm(`FTK6Yv09vD|wp_&b(pe&{U-v8!9Wvdb zm7vE+Sgx&IbM3@~R!6hh)!&kpmFz1#i3m31j0z*(HcL}#oM(;?@~ANX~rCc=GlT8-g;?s<#s*t z)?)zAN_yR#Vnsb8N1vP9DwKy(pz*|eA#Om^E_y>XcUv^TEq>f+7G^^_1J=)wICs9r zTwZmqOTJttdqm7^1-JK1PF8~udO=EbZ$s7Q73sY!4e~tKWY1VPBOL z|4Swn+yB%rF*E+h*QK4L8Cgk(6ukS5?4AX!p`_?B|hb+N6Xx;93cb!IU2_1u&i! zt!Y!9-CyUj$No_6pV47^Sa`D?w8v1B^VcQ*GQ;*Ue4u5q-KUm|8uig(#;~4{f)7C{ z04Y91}@4BJ>uA&x09HO#jH9NU`vbL%+X8u8+pQ|Cn{e`z!8%GF-Fuyp2Tl)0V%! zNzUfteR*Zv)-eJC>Ur^@UKG$`NrL~onRRL3LY8xRuj<{>Z}8K|*|xELvOFi7>b~6m z;eHnSuIt&+vwSm3hus^h&*tl0PJrF?GIo%0yT#BGDhZ4ap44%X%N%mZXRFsd#5NAY_ z51r&5;aGN;6eI^OZmc=Rmt2Yz%oM~Vv`p?6^VkscwDCK=AN z1YuBD!YYurIf#w$c)LPiX}k(2T|#(>qFmS@%S37!*~5N6x4rB1?Ay6l7BKlOq+F;$ zaGV6k7ahc2OfZ?Zk0_z^f>sz|G8u{&l80oTjt&Vf^^SN&AIzKt?iJG zN9Fz2*WN`D?!Vm3|A|#+WM%(91$ga*&4@rcxc}eH)N;|+E^Mh6fUg22y9#gi_EQpN zof8RvDX{J3NPIB>4*vIRed21;brpx(l#%vo{m~H+-YmfiGV)_$p=WxQyvllv~{dg5IiYi_#N4KCqoYo&KV&x5|yu?HqGIKWQ~E?5YD zK8H+1!?6I%Jdwcq428db8pE72E+`ghF*|_aFfEMXFv~13$tJwa!@^Lrh+7%%h?sDd zfUtqXA!Qu`Si#1bSUv>Fz94~&kK!zrz(HjVjRUfphOBP5CH1GUF;+YXKoe6$iSfyr zWjJ-6it|OQ{=;O7OJ7T9E8BQVV$e}F)JIL}?dLCY(;)YMIlup@4`yWi4~b8ELDMpj z4hi(ml~)*tGwrdVnIde?!+)S7dfmq_4Xd+Hif9D1_nV3INk3qKHZ_r#6y&&_LsDPt zt{B;}KTb!iMqi=PgpZ>Q@?4mHKLDNd(-;uDJFjc*J`jcv;8)uz<6_u0i79axOqy1L z;uk<`YA}-F+Yv3~=Xyg3bRd7Ud({{Sfit(#B^?UNbe%Hc6bHZm)nm!%Nx((4hQn=R zgohcF`Y8L##@JGH!yU_4|Bt!Y8FDZ+s=itYn-rmOUU^qwYAyOez|r&v5{}r9Esun~ z=4vBuMeFgok2X$7XxUnla2XnMp^iNH1+;R(i^?caa^99!goRxCa=A!$m4vHKxPvl9 z5@)SQJ4Li|urk7wy5S6v;|e;2aB{aZrWF(y60x;$Qu_ByC;0!8WzED)_aAOq zWi@a$MAg+Cx+y3DtU3KMX)}=2j>t9?S2)*od3a!CV!TMIfbg*4Hl@vj2lB8mNjqVA zc>aH;@pS+(81 z1!Mr8&ibLQx5=yxva86BECSJZFOgaL)Xsdn?Zk=ifrkhYmFjGa+-Rv#X;DXe zv;#K1!BEp#*;&$=^95LH*jP7rf4QROQsc$>*XeOgJxxQw{_Ju`sS(2i_4D7?i%x2cT(pB>ICbA z=Fw~i?Cs4WcjKq88mkNAXJz-6PwY2k=nl*d%sfmq3@p~pOP&YSnLR`g->t>ovoxD6 z+@z&PfcN$$rq4)Zb8~YRKWR#yYZqhl%E8UozGlfxdd7%gnYD;CxeuO;p5Z z*=7)j+x5q@hO|wFPOc}OY%h;0W!>o`)1E5zOL+n|oNW97(cNKY9IkV)h~;!n5@@sn zuZP046XKh^T~~%^Iul!jH(3kyAlNX-n(-C55n`6L&hkJvYWALN4x;VJ5(X}1pNSi` zgJQluE_Z+I$+k;5iwzRXlf;*P2sFn@|{azJY3$SVoD^ zL;frtz=5u-pZ0ffQ<>yIIzok!{M!7z#EW)_e3xyKI1lfT8M=uq4!a>N=-eD8Ns|CP zQo+2lSrQ#_&}|++OpLr4>Icp`D4}M5v6V7792b_$^WGXTi=Gh;<(YQbQp4Yt1P#3%DI>FoUN6nOvT=(?bI> zW#9UvxMbOTFc z785Aj^a$`Ba`YB8uvvo|U;Cn?9XZon=|2C;r7hq0D+0sL=QM*i^g{2y72Ho5sAZLp>&leR!Y*Vt|NT7lOg-tuu=ZcL$=lY>5= z%Vk?iWxLS_(iYsxN|arfU|SBE#ae~8E%-pUB7RGM5g0lcl0am(0Sqxgq_slu0RhXi zXFIY8zRB%SJm3S7o*=t0w@S(YVp#sn~de;@{*De&4h{Rr1RU#%F#6-NW20$`V0T^#1X`gEY~qj;~crhY)_{5>q1Kb1Xb*EMK7 z*8OqdkFv^CD#F5YkQbWoD7Soucdwy?A(^1!Ih?NUWHXoHbe+okL|Dx>D#T zv$MG6Muqlw$En6}wgkh=ChWbZ494N=eNsTe%DH{~!5~uKY+jI=jp?xhfo)sIwnlw?RLgb(RrO%WMA|VwUNq^37 zCurIu3_r;fw}62rXKTOekVS4(-4cq}%$AE9^P|-oY>mgH;IonAn=b0d-R851WPS#O zX59Zf#Scs75?h1dWK7pCp|T5*9$j<>%)<2*`A)bNbaeu3D+VriOj8WAiq;^R96KZ2 z0f`TYR%G`os8Tb%V{5Z?%8Cr0&QGdHV?EKnMv2dPtyc&@o!vL9rsMGFe}3S(Pktf# zIT|!PrP9F6A($beW$H(~k+_l5%PL?GsS4IQ4B#^|a26-_mxexzL=W5^~W!q&Ur(U2z5oHXa9QuqS63(%rq*vn0Pfgo0&155`$xQP+9NWuI4+s zVFd+&Mo+5njI5DgFdP-VL7DVn_Row$JZY)8|Kc{U4)j?(Zi<$0NT_X-c+ErHve<+=l?@f=YoY zMh`x7zsK>&>>v_z7>`^6gUAWuS8@GNpFp8(0FR7aA_J`ylV%;jqY30DX}jC`-S<~` zPXM)AacgsbA@$ywVxz$Wk`SH zL4(u=rSWaaBjQuARjyDcR?B4#&!j;$_xxR7+8*GwQ&cH}#HN^_i0Lc-0^hrni)M_J z3ZcF%^kb>|Hu&9Xw}cK2e9&fb0V>21D4hqQdGs|>d84Bh3Ow6K)e@C@0UQG2H5|@I43avhIE&df zSU0Fo+4{OjfXbuGG{e%Cx`wQ`po;p-a+M8=`1qH)&e#sFN8uY;e0x{FYZG~d{4eEK z3Z&LB>o2U^t0I~vq-xCjcU*MXHRM8&FggeVDvLsBaeZC`AIJi8BmJU9&N{>Q3SgxJZwn zP4%Iy5~JLTL}Kz%KvvA2updN#mzXhHFRbZ+tP9n2nN$HSJE9zi*NL*;VnWjo;3rfa z=zyb<6v=EcPWFzUoTl!Ij=d9HXwQLTMk#BN0Idf*^l;ew$tFP|$zKpuACb!#fgaG5 z^zZXh`aDfoNrH`;Jogm=vlWP$<=!w%_v6^3Z*j30RM0p%p5{wS-kYCFMUP+8D}hC8 zF(MXMk;@+>$_e-L+y6?euofaDQ0UX&^b_S&))=t#j`HCr4g*yuo3Rr4cOaDO(@*mZ z5S^+aTP2Ta6K0Jt8H6U9J&0<~o3CN$(K8Rwvqi_yQ%Q~37^_Tf2oajMI6xpsFBxGx zH%|$C52?Q~j2RSMoEzG?%??(ja%%8~_NV-z^7AkFogwf1YKXsjOgw`dh8d(&PXhm50eiAk>;W(F$JXuuez!f12}d|Sio+*le;dzij?gY(4KYyzon4+pd!#-R~z1fl|LiN^HH`Af>%SZyaA7!^0k}85rlH3gVB9{~kBq`$=i| znyABX8zIto1zB8Yb_)mpv3EoTLsgYmCO#(BOm>aJN0e{%Lni~ohC>N=kuqTpu33zO z!nEP_(}~zM`3f>a?u3G!UyxYSUPjbmrLn!R*bqmvw%EIf)62(;pkPhHtx(;mhIw?# zMCQ>BD`pKoZ~A z_9b+0wL)!FXyD8ysl%3@?WSbeAITc!w+Cke2~i?P0quYAB<#_&)DWZray(Y~w+oF0 zi*r>S91^-A_fjA7#3yhl)(fS^fAnmIn4|Vg$tAd<+n$~ve#-Zxj$JY)i58VWRRJGl zvBHJe>t&A}2ls2qGYlqDLUuS>YO+q#8N|)dPcI7_G3fv_iNc=a78&h4a&#+6oA(c7 z(Sv}$j3yoyZGKF((kYEn0l!Tdu10LvMLZ)E=w*z|8Lan+E@r@Z667xD7dX@wiB`9q z?oLUUI%b4BBRq$DP#?_fd|Gv-QK@hUQZEytS8%X8P&L#K@ogtH>3UwM6HF)3<3ZL-IOzvMONR7f+$ zinoLl1|yUsZnO@=?EcpvZf0@XHUW@qXz2>&3xy;4AjeL&1D!1&kI=&dB23%HR1aEl zk(+!6%z3)~e}SViKViz1I3fXg>Dzv|)s~rEe^f5~MZ9R=s9=>18zOuby8S9p8#+>t zIO+Xmm&_0nADBpGv1d5#9jtY_^yD=R)fEm%*T)ePpfItQoYbAfK*axz!(MGsRPz2R zk!!=|Dyn~Mhr&=0DJ!G?_?G`5nr7Vun+?F81?tLJ{b@mu-FNz0W0<#1p7qKnN~x$R zW7{a|lFxrZrYp@T7ez$=fp&&^3T)RvD``7*#Ez%9QBM*+LTp0QtR0_SHMFwU3Fx!I zxZ@`W6~ZQ7cV-jPNj0()ONeGF zwJ;9R&G5m`jU0VT41FGTU_G@OL!$8u(BKEf2bD07oI<-Ps65~f+gx=#b#@%dp%{@@7;NcgzS{ReseHAYR z8hydVsCw!c=U1Bel)T*<5vSd-@F+PA`^Z9M*GqQ94;6`LpIZGKKKbUm;qBc88NR+P zX&`1D>ogv_j%tB+5ozz@-_gE0CCl0SMa6_#z56eM&;LX*v;2pI%Go#4uSe(qFIPFx zPXJO75fCxZAJR|~uyDX1MCPwBNT47T3=~up6chjy6cv;n3b5ZdE<$L!=wGuOKtsSk zCB@($|K&ygkIHWOibPYRK;JL;w#*NPr?E!-Hp_70M^N(c}=n?-KtWb>CjU z(sMeV<~YoLXYaDR%G-&EWC`S-U0%}9dtO}SD;6dMbR8TXSf2(7Q$>SIFmyTQt2_lx zmuOTRmsRDhNNlW{MV13RK4DfzIqaOq!?MMEc9V8eFnD&?GGh1Ld~jsIFhCil`HbB| z2-8AdhmK?ZsJ;))z3tJx&egRM%S)!jqS0HlWoKtwDhVwml=%h+YlMPOgEzp0%c|ud zA;Y&1eK^!SkHNbTTCW>F(OtI3>#ykC|3*ZFgE!=0^fJXr$3(<7!bCte=U}2BqTt}7 zA|n`Gb9)`w1(kIC{7L-Qt@G!JLRbCb2_gXPwE+9Hrg^Xs4s` zmpn>f$8OEp?7u!*XtQlE)M9bXnmnDcH`Zcz4XoU=XbasUtO>R}%yF!3gSp{;Ee%kF zJ4QNID$aDsSkPwIKF@zr@*p=QbEQ=L$ND-Q>m2hO`xuuz)G`iFr^qAH6D*EvI0W2I*6z_luneRQKpzSnB97E{v^z=Oq!=zt4{aNDj&I)ZY{NR; zGC9+08)q1PRE3s=>c%GFR9o<07t^Tpp1qsTR^=RTG&+Gp0^q zPo-wsGWybnL|zU_)fcxK-|lytzQo*iH@=daXDN|(_qC$#D+3TbtzSsF~xc+Az@-`$<{qWBSc>{ku2F_h^jG8fiJ_Ib4GBsQxv#m}&~ zUzAb3I~v~Q3*srhtEW<6^0zSGDj1{JUWnarlOa?g8|3S1O_F_O{_SS=4d%2(a_V9A_)k0KoUHP&?{Z=6&b4ho(Y z(@%?|m7qY4$2Az~eTv(vRNl6xxY#*jv|8>#N_ckA5?rRhn|;I5p6+ojCe)wqha)Rq zRBg{e>0{k2+w7e1hZN4hK6|Q2Uy-}2O408f5m`t)RHpN#Duz5#@sLZxvpDY{sYQlz3T$${B(kF z)OKPnN*AoW2B?ZIKo@peoMdLxfHV-G{? z6BDwc(28zH3v!rakb_Y}*@=Nka&2p4|H5xL?e8!Q2y6zhAl=L|8QybvM9uA95k~h4 zbjaoG{$06}X5`>GJ4qo1$x=Xijb10m`3OB)U%u>B)nC zhe=bBY$}13CleMM|8B*qC8QjfVX2vd^q&FA3d{#6p9@2JgbGnZxxBbWSJ+YREDZRn1 z?8T7n74o->Wvheo<+KvNS>*l%yoli)(J33~U`)bkrNFZE5|QmUD^%Srr|Xy=tR@jP zJ-XGW`D@7FEXxk_T2Jgd*w+=`AjwK?;TmK(n}uyW#R;p6_{>n#z*{QP8v@X=R&!;C z!~XT7+4%2iv$5(}@cN>I74w?w&=7x_SHqtw0i!dV_w57ol)~)5Y%CMwRH~(q8Iqk< z4FjL~zB5zmx$Ql&VG-aflR8fue)xf)?P#H1SA?Onc>G5h(0OtUP5fN{Lpm>-c{)$; zBs#sG+U>D-<6d*~q(B}izIJD{C(!n9b~Vf8OkECA*S3qP#xr$#{~9AZcu2dF9_Vf} z%=e&BS~Q#CGX8j)?Z|c&9)g#zSt*>T_fIFv^%>TBR4eEy9n?SlA?cU{g8*HD^&ZIY{-NV?;D~hzT?h33 z7=g4)3Hw|ygWkTA=zg%YRC>LCD9_ax5=3de!g1~rpbqtmeX#ny12~RRgtUM&IfSh_ zt9+^o!uura6yKJ+AwJ(cYTvg6J;x%iXn9*1WgUO5x+1amsP@k08RIY=HV4{`=cIc=RlWw$dV}6EoF$x%7@})He6?$4 zzMLV8cn}}^5@{0h)Zh}cSK?%}3-L~_+oZl8XD%q1^p?Q@qC)5$`TW04XJQ|r6Z@5T z)imJTj-XQBfn9l82c)6U@8^A?v#LMZNyw|SfM&q)gP~{?olHn zj~P|}ZF^h?-DWZ~4c)dUiZO2m>CAKvl}(wzUlo%&D=_ByJv5nS6tjkBuMe|1n-e$4 zQKaZE95@&I6=Y;K+mG5tQ{~(dAU3Pjp6c*YKsj`gCXVI;nKL{0k~ffRp*q=b70~mN z8x?&tKG%%S#tRUbI3ubqRazEZ=9 z6)0sfF>o_hHraQ#K2t`x`CY#V&Zt+U<)4LSP#d%;FScSysAf31)9ZTNIPSy%{K>A+ zz&T8xT4{%dvvbK+5oasf0ma6=JbbNhA)%Y(+3Nqaf9`*^ns(z1ftu~gttD|5NSrs#zlOfNE4;|_y zEw}cw4ZPZOd&fX^1y%WW1R^^6Q0KY9^}5yCeFf1Dr1YdVHVR7e+C96K@WWhO@YLam zi=%MFD{URL^QP+xUgr&3WE&bnL3>!Y!R~l%gVJ0E3873^5iP>2LjD#4Wv4hxG z&Qb{{5}kAya1Z&upR%lALWJgX93X;+{wsQ^7N#l^MNmrUv(N5eXX-|3juo(jSnYRw zKisT%J?bj_vHLcNRRN3~l02g*70G&uzv5Qkt9%J(oLfgQFdts}L)N*t6OldRV=FY> z{0avLtHPFEgfF^R5SmuU7TNCVh)R>28bTi>J1!J7xA;~vl7HU76RxSyVR;Tqs`hCV5|FSXw4+sT)d(E8-= z(u~C3CXsk7&es#gjjc?uihyy6_4m2f=@^HIWyq2%tO(8$(9MWZu@=xj~#+fg|w9gQ;iy}h4d@IT5_)E~Lk9weA7XKMezDTU69 zUa$3e8WKTH#Z!9L5z-{$vkno4V#ajTL`?;7D^vlrPp#!XP-WlxSX@I~OLbOh3-YUj zbieb$FMtLa(yvgzpHU!3H&IAN`=!15;UtG+nJm%_m3VF&SL5L#*DST`X1SEBPhYg{NM67Kn`*Q7NM&QXmDAeIw-K5J* z6u#;&8I%Tr@Sj=w&-MBlxeCc&?)-4n2%&npv7=^m#b>8XF)9k6(Dl~Jk*N*9-2$qG zI@#;J-rokYSdo?4Q)MiNjXAZ&xu=~Bh?RCl)sT2eomxypykw{$m%7`v50II}rTlcM z^k}AyhLe*o@;}_oBv0ezxu)h#8!)^vD>5scBfOgggrlkZf`0v_u_rsv0oA2*_;~SH zzSz2_Znn+n?Dur(@ZsJ(Domc=Ynha_@+p;6seBI950jyA4H(=954pwwP1nXMs50_t zUx0K6C|V(H@ImtWCTRLInfQTwZIk*UarAHY;k?0M3h}EX0!bSar$=MM!TE+8n#{fV zXWCX&?q<@m#mm<6+$4>WzZ-N08o7`Zq1&rT6Zhl%h&`b1jogPJ(7a&0@ybQ)TdUze zn3~Gb^6M3YqZuRGpi)`$#}Ys~Jep z>j|BN++4Ky^<8B6eY|AQBJHF>M>`@3T87V=5nwL%Nbb?XPTm{!j%0;=k+QeVeEavV zlR1E|N2hQNPC`AYU2-XPA@PidfkQ2rq>CZ5CR@)LS zuaH)~7&k_IX0~FxO-)lmCU$;?4i5^0NT8wK-pQSOPaTY}VAQ>~(|jIPB99;GVdX9? zqDNKd?OGaMrztXk4~r|}_c+DXLVJKv8?5seOHK^@ctWO(LM!g4>2&DaTst95=y$H) z{~&BAG1Ul?7c0YahtgKOM=6TBX0I&i#PAVby6+I0__)-OiM>1%KGJSSSkLqQn$Ge; zZh*hW1Bq5?A`l5`t)4J1`&bhK8*lZSZY6O;-o~xvFK9ok|`xCF>!!6u1McpjBY0JlA~~aD*eR{X)B(qR37Unn9R0K$Q6nrLn^Ds>pXmsS0?Y_2<7g7xHRM?94TN~t4=0&w4zOf3iDiwjnW0ImYqi%gYNaO7;c4PzY70I`RtL520*sdwreef7!?fHzf7V3 zLZ<0$=JHwjpDT1x10@v6r81gtNerWKVFm7LZVh8(#V=J8UAp#mW21*x$Kj+XR&;lF z%ie7@IWxO%!+8hdVmud|^6x(y&@af8h)F(;J zOCa+;p4rM&(W3%c%hgj=!AvqJ{!SA>TDV|f1-An&nFGcaMyw-Ta5!8d@4fpmcVVj* z@nY#|Vs|(l1xR+^&2E;$DmgJhEO>%$oj}lJx1TWtcQ^asmiy^Mr4#N~1MNHC>cNF= z^eF_ytl6STv`rzTeg`4ciCV*B;((phw~Xcb5k7r} zI}c1!>95np#c^8zuHWGyT~^U&5xdv`GD6xaUps!~6b`7!_`4a0a zL9HM#b5|&O*{1QwO7yorciU6j!igy?C{zFn{Bf+3G z)PUqsY}mv^8yi-s@MNF8NF$OUik-h;mm6M)J)!O6<#Vocndt6neVi^*>TpQfJ|Yqd zG>WXUg7bM(1eLx<6ppH3 zyuwp}jga-*zxmH{8Vt+V)2-fH_wJyVGRCx2AijC9IhRNYIOXE`zEhp}tSswD+LMh2 z;KW`sY%OT?spTC5(N~BfGRLYi4;u}S=rn5edDWRdG1lCb3;+X~VluPsC^AO4bKZiorQdS8C zH&qAG>o~SkNg?dDlmUj!5y#-<8*Oc7!v{gp9OuT?0W$E_ij)D&_8G8MRPu(aQI!IOhi8<3mUWAp4R*h`4aM@SkB+2VnLgWOxx_90O8J2-8Ba^O9TyITKC| zKdkHVN6O+v1%*>k#YcpL(BEpDGqi$fC${f=+DS zK|lWX#$D;xQ+s9id(pYdgM64-wQ#hmoc(Pbx|%8~$tx=>4#?&P;65Xr3gd%1HM6{? z7h2`QTukjexI@xRT^8E|m4Z?qvM;vdJB_BNHMH|RgX*1*K^0SO&Snkswww<}3a}-< z&UcmH>kkYkEB;*vD5;j=&W^`hVj3Jb$I<2GB7!d^hNBIz$5@inECee~qE$B}mmtP- zw$MlSR##D@`_pX5BM0|%zx&k(kiujGQsVy0z+e!yHer9BWvP3WwYHEv!Id-1C;Ru? z9f4ddWBy)n_AQC?coQKK3Q^{+i$iZlzwrimtgZR8285gFCzNCITnAXQ2$)@__Qypp zV#|)u?ki=%FmQo*>SS^t@GsrA+@S;#DUaRX{rKAZ3e?KcsNXLbEB4@euU=GZV|!xzbgBt;7Yh=?O5)j~*2G-novJwwv1X#TKYSN#cG zUy8CxI?Bm46--8s);y8;vPf&;)0$u%8<-q=@#`5b;PMnOsT{ zFQ?=_w@a{Q>^pUAZR!xZHmAN&TRk1F^*cDjkJ{9>e%{1~&&aas2d7kdo;yzu#l4O9 zc1p<_W9lyRZL)WVtUWT?$kzP+Ft?Kd0w^R7X<2=Hi1>u}`eoK=f0OA;$nSX# zP)wH{IVx9A_BYhuF5Y3So+XGKr)K;60MIqv?SfTni$U5d-<-sW$I3CNL&(ga@y*PT3hO| z>K=+_!z=<|_p}S8fZeBU*2mw+8 zb{w!J8yvWY$QSXc=lFx-m1t1F1tR9$`UL+=5Ld`j<+_stzYrtI z$j-ozhn*k612e^n6(vj~KG@Z;5bqPZH0(bbyzsf$qp#>RHu!x`4PcZ;c{o+peixoU zN^Xa97n&WAVP7Kr{>I{s{Cnd^%!0n7mr9^?nb=Y!S`c{eZfNSXR=@hsRVfdYBOUW< z8N!KqoI?eC`S)2;yvdvw1IRJi_`}hU$cU4gT<1>M(cRqCSls?3pVc=Sz!E}#e7;>! z#nT6rJHAOav)M(OZN!|dLKGNHk$wx{Ea=3EElB9Ii!$XhvghNL!By6hlbUAl`n zlXMO(cDm(>N+wz*TU1aJmUItcDh?v02I+Zic8r!+zFN#Sm=oKDs$A!#kDPB5%e9_T zKfp`QRyJqEeN?(9El;7>0K58HQFJ}+cFUkNNGF{Gg_wo8n~rc|z3vTlw~K#W#^F#X zBi^k@R-i1S?7OoK6$}$Q?#O|0&G(E&f@W&CI64|D)OCnpzG->6ZfG-|QD)-3u3>-O zv?a@4;zTTxai+wE&SLJSs?b7tu&Sz`@dMu`Rnu61tkhCqwEcyQQdPF)-3XTSdN4{( z)4?%6DHU8(BR`6N=#r`fkM{*oz-3TAE1Fe=H2RfY2F8P>zJ=nyM;nPu9izM9j`3%0 zZ|>m?q*-T8c|n_}1m+IHo}L!v@7?uA)i=GTBK`=TyTmyrLSswQ!>leM!_U7E^u1#4 zW_l!!NoWu#iZWJWIJOfIs~LEx3v5#9z1Hm#Rtux|FN*+D$yf&JrYu}A!)h=|>G0d2 zsY^Mbc$H(UcWQ=s1WOV##7K)7&4*VowFyAv!aVdC*~>*83HKwp5|*_;7bxU>5DAJ| zR(!=Et%r|A90VJx*xTbgZE(PmpUiGoCj6xsq_sA3N~L1&z2NHWIp%7)dfv#VFh0Q_ z2UTBrqsxriKQ`2~LKF4uV9=L<~oqhZ;v37DNVvX@XMy zp920H%l!Wr)UomM{$tKTPu)iiLlZm4s7rD-k)0?P(Nq;!<)uRhpc`~SY11jEm1d&7 zb|9rj6DI?g^bhw{ceM!8>81zA)CdsMH1;D^6O&X69VM@BS>@8G)7fwds$Ug&-sKaR z**NDD_|ywz2iL;pPxY$woK?c{mZK-R!*CJ`*hXt#ZUX9lv4;Z_(82r&L(a zZeSIAP$@_f94AR10H#gWr;^Yvm}>29TS9G!%YEP0xZ6umtIMsj%4SoK8bc;}&k#B2 zU|=ggyjuU!?iD@RDBmqw!gEM)y%ZGm4JC`)W>rw4jclt{zvlZX=M#R>VqydHRBU!! zji8e(9x*qQcX^}tWi~srL`@`D6^{wfB5|g;NqS_(ke!}OI*VN~r^vvD9lsI(fF{pL zT!<|xJ9qShlF|pb>}n085wrl{{sZfZC=ldg+^I#v?Yq$%ToS<&c z%HEZ8?@SqINPwl}3{0|*>oQ?JAw}cLsaN^Pm9U_|Kl2~@WHaSHUsd z&8B>_xhnsfVPH~cEalGoXlbSGAn3657bSBNxz*`e zc=^O(K6!(<{vZEkvCHm=2ax+TxL9ZgC?^0NI`sG_C!26Fr=4Ffcf_h&n^j2`34b;Q z6Rs%-EkK8n{O3mZ_7V7zU$m)_fxJ^sS$%Lfbh>NOd?R$;T|_I@N{DA>v|To=B4@PX z#J5R>or8hj81Vi30Y84Fk#u-umqADcGD~YUcYc5Py*&;2s zOZzo3cT@WcVZLFTLX4{Dni$7Tm|;T zMNvddM^dV{+w=vsmG5c~v(gC`*Hxb%}_=`^D&mm|A(mVsu`a40XR; z1|hAx$gC&IgD1@?xjH)|UOFZo_{X+OX!bZ8uV{By&&V38QJ})?d*?3Ksn#jI`j7pr zrDYH%sl&1(`>3Urlw4C~Hi7@6)Nto<7sVlNFU7Eu1@Qf)! zmK0u-j_}U+0%~1D0q&e4VP{<#ixD9E+`M5E;XaC;E&)x8LHoz-w4udgjgcgxDM;WT zROc#uIjXxhyzX2iRAbTxD&DB3oATEEJI*g7CFxXO+qal$DTJu8?^xC^hv4$3a5Hwe z7YW4STYc^jZB*X0oDeFqLHV}bNO`Px$nHIisaSM(mZg{APrtFbu4Vjm?#9zr^~(?- z2|Ia&lKj{}TTVW}`vA_cr9q=#GiyQAV$>7&dR6BwtRRw7I+hBY<#PVZ{N=85t3~z0 zYlIYwUuNjbgYjtaz%r0-c>>RQ&+Vbj>jg-(vScSl{{XP}K%z}mDpJfzQ{(-tM7%HR z493C!p%wbgy?sV)1Ks5JdH1fM(WHfXW{dbrf-!!t$G(V@!}3dtrpO2y7|%lboWJUK zClOV5dO7)|9}t*i#ElNCWR}K?htxtO30}1_zSPQW>df#`0hC~JnC61l$+3B+rn5!n z?r*Ov_*MzK3l(NQ1K#=l-U5XnXT?I)6Vo(0B89=s6zh@37YlfRjMX_iNOc3=Hm3zn|6q#y{6DkF9A*uw$W+!1M6>~`}3et=%!-6D10lUlS zUGlJKYW-1o1(eC&es=30hU@x~>=l7N4tthon^LqYF4opVbEK$itJEm$D_^K$t!VAR zJjRIM06`VsoJm5g@3rNW->&aKA`WLn_B*--~0bGjmZ9wVLvNFQ7A@4 zIHJf*#IMm&h+p9q5fPEVXkZ{o{xiV8Ri6GuXJt_WSbpM27DZAX?oVQ?qmwf!7a!aI zLUCnh=lq9&#<{kY(;7GS+opk^T~aXx`h^Tlg7#3gu3bEJT^4may$CBhg%f=oah&4r z`?C9L?hc*cT;~;Rn{}6gmk{6 zH0N=GNlY^_`C?3j)O^yuDj+?p7%#rPs(o(mUA%=qcRC)pwFO?AI1EUDI&yE^-;XO^ zdm!+8I=H;MZCYQ$P<|>o1c-1yz-e5Lnh#~1zcKwWZ$N@lnxt6~mu55Xq0thLDS8ek!8h(8$MR~aH~;`?_R zAncm^1+$d!JG##8v3zAw9uE{h{xH7h;&duB4U!6Eme|;+V;@LX+ddiUFY2{zKxC{|_ns=O=x?>2>AX`dmh=-K#uVBh3 z3$GJ{IXS{?BGy-l$O+aLYp}iI&_g(n41^Vhim+hCLGcsvOw`}h$2n0^U$F6XxT!8G zF$3P|J{M-kL_Edz?YJis7eLN43i%I9JwLxj{_ND=Y}N#BQj(m?v1MU?)BpC)opx}* ziMP=3zBhE@!Dbo4YKER`-X{fN(5E4!V=dj%Pmm+@^K~MHz14EQ9@%WbPdaFac35GLWbjy!lfHeZw||hTOU4_&7~Y@mxNiJiyM`=YTQ1kc+z13 z6LO@lwi4*uJ)_H#jxSBPEU+=xPaVtzvv@P3FqWj;EwBlsxk=7&ZMh~GSoxaNv*k5q z9daxB8yyjxhAUeU&Wrk34S;|!SqKPOofO=Cl-cOu5;A@C^9}z|3%#a!SY8sdqZ2wn z^BJupXnAhm{}}w~po3Ts^PJVk!!cbSJ7@LQI$0@vui9gl%S?BfVVG)~`Vp`r65cuS zQZuN1e)sY6T(i9N0YAyV|L%nLL7$m(qdkM@)nQlQu5_z%uPk$~lA$bfM-)T!30%j7 z=48|Zk;M?DGLyRAhD02SE53-+FMpBw>B5m^x`p^zA>;u+lF*8J@!DJ5p4N-5I5)C! z_D46~s!gO9J2XJtGAjYft~(OK^U|d^=cTjKvt%m+1(-a|)YphWK)pMhq3M`AU{{G<8P{$n^o5t@XaI(ubt&~H!HtK$#vgWK zH@BU6>P!O(_bw!{$p#GZt&n5fASB*8B)1<*XHSZP4KNqNMGY%=nAhqV7s@S^sdJ8- zjSAFL*QO(sLe+L)BFX~ltw!-szIu?1v@T%b9eiE6C@IUO)iX0IaJwDmrx{PB=Eoet zlEz#&=vR$D);}}k!fqX2xGd=zeRgmcxQ6$lp(-IX^%MJ_zu{+)0}HkeZn-TRs0I_Z z*r#(0b)_A*7JRnB2vE`)Ga-uBqWCZV_vc0}rt%FySvS70Ry6 zWs*zB)eZs{=B**YoeB~W8@q?14xPH|B(z-_9cUq81n-7Kr?lb*!*z9f4Qp}ZU51Xj zoUSkl4ltke%H8DucH6*#darKTAc9&XrnMC|gJ_lFPY1caTiqQ|PB8DKG21x1d^sBp zf-3Og?RCl5gVvSY>5ap#tiSbOW4@ueD|sBTfZEs_hT6XB7+&+-^h!3swp)?$wytNW zWE*nhZJ(6sHYyWN(xycT_qdpQl<*MxDe}_)^IVRZQ?vJN^}>yocUP*@Uv=A?;ukB8v=2**f>#>m%`yg?PqpefEx-fWAYMhcESv|T7rzeNK?90sUkq_V^@s!L7^QqjCq^`pfo72idsU6p1yn{i=S}Hx`08e`jMF*hpTgU6qBxUxVQgS^TSr1sClW1%O%$L; zH4Uy81R&^U)b-$1x2X_F*lWP>EC$aO9?2k&&i=4>eY!nyD|Nn(=&*#I8XZwraAL8| zXim*izc|CaOsKaw`rTRJ@P?fI>Tj#BTzo${2-{WPd2XC`CM7h;yPyvylP8#-vJ{HY zc1{5!;1LjMG{@tN*TQ_1thRJBS717??i)OMzDy!(G>c&W3`K{b@A>v!?8jba0ZIbT z0j?NKm1HRmW-%l$T)CjR9&Ov|!R7WX;-+47boof5VXD9c%`gD;nK8Go*=tUV-TP0J zuH6Xp;L84nIlZ~paln@el^5*HIqJ}2w}n#ZVKX7P4n==NIcy3Gwek93X}arc-hr96 zq#fRf^a$Dli6=iw)jL+Lummfs#CfhDX|cBYoXa|w=xuA%5mCIV>Xpn0T(8{zpkuq@ z!Aqtbu(d)_@=yUZ5V(suI1@V>^Y(#(XYq;Bvoo@UlWuVIkIZ653cb(F(#DSUdXD1Z zk#cmUQmW$9#*EZd@`{Ox{(s}qJ4;MVa7JM3H_5v5Z5NzVqW94g0uE6k9>?|!q76E= z+Rt+i)tsGv(Hx)Hejwxv4|l#7^=n3X-lUaom2@@z+R<8bW_^yyg^_t5nc12$$g1p2 zm5<3-$uXjM!y+evdCbeR>tek`?gGpe0 zkY)Tn-wkGJQ(*a@5Q&ZT-}Z<7H%QV_1)8#`+Sxgi{;Of8$|7fLYDfAn>6TAZQdf`% z$j8nLWa9#|13CCi*||CSj5#Em6t_Rm+kXzcD?@% zgz^4EW`t@+fThm}H~8wowVYqQj31LJym>xvGCcoO87@pV5XBI{7ExpYI5FqKV?l`r5Qxt-NQ7sLkmEc-*+d%8PDH$h6F&Wker>CO8A z`g>~lwaZ}46Ib)B9SBK@`PzIdCcmRFCY`EG2{;LnlQLk;AgywrsmCi$dTg}z!z&s~ zu41hi?*tN Date: Fri, 12 Jun 2015 10:20:35 +0200 Subject: [PATCH 2/9] added more sections --- package/mtheme.dtx | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/package/mtheme.dtx b/package/mtheme.dtx index cc0efeb..282672b 100644 --- a/package/mtheme.dtx +++ b/package/mtheme.dtx @@ -66,6 +66,7 @@ morekeywords={usetheme,institute,maketitle,mthemetitleformat,plain,setbeamercolor}, } \lstMakeShortInline| + \usepackage[colorlinks=true, linkcolor=mLightBrown, menucolor=mLightBrown, @@ -109,6 +110,14 @@ To get started with the theme is very simple. The following code shows a minimal \end{document} \end{lstlisting} +\section{Known Issues} + +\section{Changelog} + +\section{License} + +The theme itself is licensed under a \href{http://creativecommons.org/licenses/by-sa/4.0/}{Creative Commons Attribution-ShareAlike 4.0 International License}. This means that if you change the theme and re-distribute it, you must retain the copyright notice header and license it under the same CC-BY-SA license. This does not affect the presentation that you create with the theme. + \section{Implementation} \DocInput{beamerthemem.dtx} \DocInput{beamerfontthememetropolis.dtx} From 38592e254b569e04cf42408b733d7de96fb768c9 Mon Sep 17 00:00:00 2001 From: Benjamin Weiss Date: Fri, 12 Jun 2015 10:24:24 +0200 Subject: [PATCH 3/9] added contributors section As I was not able to get pythontex running with latexmk, I wrote a simple build script. It uses a hidden folder for the intermediate files. The folder is added to .gitignore --- .gitignore | 2 ++ package/build.sh | 7 +++++++ package/mtheme.dtx | 32 ++++++++++++++++++++++++++++++++ 3 files changed, 41 insertions(+) create mode 100755 package/build.sh diff --git a/.gitignore b/.gitignore index 2d7b963..5739e3c 100644 --- a/.gitignore +++ b/.gitignore @@ -33,3 +33,5 @@ demo.pdf *.vrb *.xdy *.tdo + +package/.temptex diff --git a/package/build.sh b/package/build.sh new file mode 100755 index 0000000..fcc0f43 --- /dev/null +++ b/package/build.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +mkdir -p .temptex +xelatex -shell-escape -output-directory .temptex mtheme.dtx +pythontex .temptex/mtheme.dtx +xelatex -shell-escape -output-directory .temptex mtheme.dtx +cp .temptex/mtheme.pdf ./mtheme.pdf diff --git a/package/mtheme.dtx b/package/mtheme.dtx index 282672b..d1d65e3 100644 --- a/package/mtheme.dtx +++ b/package/mtheme.dtx @@ -24,6 +24,9 @@ ItalicFont={Fira Sans Light Italic},% BoldFont={Fira Sans}]{Fira Sans Light} \setmonofont{Fira Mono} +\defaultfontfeatures{Ligatures=TeX} + +\usepackage{pythontex} \usepackage{enumitem} \setlist[itemize]{noitemsep} @@ -118,6 +121,35 @@ To get started with the theme is very simple. The following code shows a minimal The theme itself is licensed under a \href{http://creativecommons.org/licenses/by-sa/4.0/}{Creative Commons Attribution-ShareAlike 4.0 International License}. This means that if you change the theme and re-distribute it, you must retain the copyright notice header and license it under the same CC-BY-SA license. This does not affect the presentation that you create with the theme. +\section{Contributors} +\begin{pycode} +import httplib +import json + +URL = 'api.github.com' +REQ = '/repos/matze/mtheme/contributors' +USER_AGENT = ("curl/7.13.2 " + + "(i386-pc-linux-gnu) " + + "libcurl/7.13.2 " + + "OpenSSL/0.9.7e" + + "zlib/1.2.2" + + "libidn/0.5.13") +HEADERS = {"User-Agent": USER_AGENT} + +conn = httplib.HTTPSConnection(URL) +conn.request('GET', REQ, None, HEADERS) +resp = conn.getresponse() + +print('\\begin{itemize}') +if resp.status == 200: + data = json.loads(resp.read()) + for name, url in ((c['login'], c['html_url']) for c in data): + print(" \\item \\href{%s}{%s}" % (url, name)) +else: + print(" \\item Couldn't get contributors") +print('\\end{itemize}') +\end{pycode} + \section{Implementation} \DocInput{beamerthemem.dtx} \DocInput{beamerfontthememetropolis.dtx} From 14590d2eee000c66b0cf58ef60ef2f6fcd0dd149 Mon Sep 17 00:00:00 2001 From: Benjamin Weiss Date: Sun, 14 Jun 2015 20:10:26 +0200 Subject: [PATCH 4/9] files moved and renamed --- ...olis.sty => beamercolorthememetropolis.dtx | 0 ...polis.sty => beamerfontthememetropolis.dtx | 0 beamerthemem.sty => beamerthemem.dtx | 0 package/mtheme.dtx => mtheme.dtx | 69 +++++++++++++----- package/mtheme.ins => mtheme.ins | 0 mtheme.pdf | Bin 0 -> 44625 bytes package/mtheme.pdf | Bin 41143 -> 0 bytes 7 files changed, 49 insertions(+), 20 deletions(-) rename beamercolorthememetropolis.sty => beamercolorthememetropolis.dtx (100%) rename beamerfontthememetropolis.sty => beamerfontthememetropolis.dtx (100%) rename beamerthemem.sty => beamerthemem.dtx (100%) rename package/mtheme.dtx => mtheme.dtx (75%) rename package/mtheme.ins => mtheme.ins (100%) create mode 100644 mtheme.pdf delete mode 100644 package/mtheme.pdf diff --git a/beamercolorthememetropolis.sty b/beamercolorthememetropolis.dtx similarity index 100% rename from beamercolorthememetropolis.sty rename to beamercolorthememetropolis.dtx diff --git a/beamerfontthememetropolis.sty b/beamerfontthememetropolis.dtx similarity index 100% rename from beamerfontthememetropolis.sty rename to beamerfontthememetropolis.dtx diff --git a/beamerthemem.sty b/beamerthemem.dtx similarity index 100% rename from beamerthemem.sty rename to beamerthemem.dtx diff --git a/package/mtheme.dtx b/mtheme.dtx similarity index 75% rename from package/mtheme.dtx rename to mtheme.dtx index d1d65e3..2695d39 100644 --- a/package/mtheme.dtx +++ b/mtheme.dtx @@ -123,31 +123,60 @@ The theme itself is licensed under a \href{http://creativecommons.org/licenses/b \section{Contributors} \begin{pycode} -import httplib +import sys +import requests import json -URL = 'api.github.com' -REQ = '/repos/matze/mtheme/contributors' -USER_AGENT = ("curl/7.13.2 " + - "(i386-pc-linux-gnu) " + - "libcurl/7.13.2 " + - "OpenSSL/0.9.7e" + - "zlib/1.2.2" + - "libidn/0.5.13") -HEADERS = {"User-Agent": USER_AGENT} +LOGIN = None +try: + with open('../login.json', 'r') as f: + login_data = json.load(f) + if (login_data['user'] and login_data['password']): + LOGIN = (login_data['user'], + login_data['password']) +except: + print("Couldn't load login data.") + sys.exit() -conn = httplib.HTTPSConnection(URL) -conn.request('GET', REQ, None, HEADERS) -resp = conn.getresponse() -print('\\begin{itemize}') -if resp.status == 200: - data = json.loads(resp.read()) - for name, url in ((c['login'], c['html_url']) for c in data): - print(" \\item \\href{%s}{%s}" % (url, name)) +def apiRequestLeft(): + resp = requests.get('https://api.github.com/rate_limit', + auth=LOGIN) + if(resp.ok): + data = json.loads(resp.content) + return data['rate']['remaining'] + else: + return 0 + +if not (apiRequestLeft): + print("No API requests left to load contributors list. Do you have " + + "saved your login information in 'login.json'?") + sys.exit() + +resp = requests.get('https://api.github.com/repos/matze/mtheme/contributors', + auth=LOGIN) + +print("\\begin{itemize}") +if(resp.ok): + data = json.loads(resp.content) + extracted_data = ((c['login'], c['html_url'], c['url']) for c in data) + for user_name, html_url, url in extracted_data: + resp = requests.get(url, auth=LOGIN) + if(resp.ok): + user_data = json.loads(resp.content) + try: + name = user_data['name'] + except: + name = "" + else: + if not (apiRequestLeft): + name = "Couldn't load name. API request limit exceeded." + else: + "Couldn't load name." + print(" \\item \\href{%s}{%s} %s" % (html_url, user_name, name)) else: - print(" \\item Couldn't get contributors") -print('\\end{itemize}') + print(" \\item Couldn't load contributors.") +print("\\end{itemize}") \end{pycode} \section{Implementation} diff --git a/package/mtheme.ins b/mtheme.ins similarity index 100% rename from package/mtheme.ins rename to mtheme.ins diff --git a/mtheme.pdf b/mtheme.pdf new file mode 100644 index 0000000000000000000000000000000000000000..75871268779f324bc86dd1c9a479bc19b59a1de7 GIT binary patch literal 44625 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 K2v}Fe-SW}bBDhIxMsj@2_GI;1X-q?O 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 Date: Sun, 14 Jun 2015 20:11:54 +0200 Subject: [PATCH 5/9] dtx-ifycation --- beamercolorthememetropolis.dtx | 187 +++++++++++------ beamerfontthememetropolis.dtx | 116 +++++++++-- beamerthemem.dtx | 360 ++++++++++++++++++++++++--------- 3 files changed, 488 insertions(+), 175 deletions(-) diff --git a/beamercolorthememetropolis.dtx b/beamercolorthememetropolis.dtx index 31d3df8..9d1fb52 100644 --- a/beamercolorthememetropolis.dtx +++ b/beamercolorthememetropolis.dtx @@ -1,112 +1,158 @@ -% Beamer mtheme +% \iffalse meta-comment % -% Copyright 2014 Matthias Vogelgesang +% 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} +% -\ProvidesPackage{beamercolorthememetropolis} - - +% +% \StopEventually{} +% +% \subsection{Color Theme} +% +% \iffalse +%<*package> +% \fi +% % Options -% ======= - -% Option: blockbg -% applies a gray background to blocks +% +% \begin{macrocode} \newif\if@beamer@metropolis@blockbg \@beamer@metropolis@blockbgfalse \DeclareOptionBeamer{blockbg}{ \@beamer@metropolis@blockbgtrue } - -% Option: ... +% \end{macrocode} +% +% Unknown option error handling +% +% \begin{macrocode} \DeclareOptionBeamer*{% \PackageWarning{beamercolorthememetropolis}{Unknown option `\CurrentOption'}% } - \ProcessOptionsBeamer - - - -% Color definitions -% ================= +% \end{macrocode} % -% See http://paletton.com/#uid=7050t0kkJkJsntwoyp6gYgoddc4 +% Colors % +% \begin{macrocode} \definecolor{mDarkBrown}{HTML}{604c38} \definecolor{mDarkTeal}{HTML}{23373b} \definecolor{mLightBrown}{HTML}{EB811B} \definecolor{mLightGreen}{HTML}{14B03D} - - -% Base colors -% =========== +% \end{macrocode} % -% The metropolis color theme is defined in terms of three fundamental styles: -% -% - normal text (dark fg, light bg) -% - alerted text (colored fg, should be visible against dark or light) -% - example text (colored fg, should be visible against dark or light) -% -% An easy way to customize the theme is to redefine these colors using -% -% \setbeamercolor{ ... }{ fg= ... , bg= ... } -% -% in your preamble. +% Base Colors % +% \begin{macrocode} \setbeamercolor{normal text}{% fg=mDarkTeal, bg=black!2 } - \setbeamercolor{alerted text}{% fg=mLightBrown } - \setbeamercolor{example text}{% fg=mLightGreen } - - - -% Derived colors -% ============== +% \end{macrocode} % -% These colors are all defined in terms of the above and will update their -% appearance if `normal text`, `alerted text`, or `example text` is customized. +% Derived Colors % -% You may also redefine these in your preamble for greater control over the -% customization. Beamer colors not defined here are inherited from -% `beamercolorthemedefault.sty` -% - -% Reset titles and structure to normal text +% \begin{macrocode} \setbeamercolor{titlelike}{use=normal text, parent=normal text} \setbeamercolor{structure}{% - % This would be parent=normal text, but the inheritance is overriden by the - % explicity color definition for structure in `beamercolorthemedefault.sty` fg=normal text.fg } - - -% Frame titles and `\plain` slides +% \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}{% - % 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 `\plain` slides. 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}{% @@ -114,9 +160,11 @@ fg=alerted text.fg, bg=normal text.bg!50!fg } - - +% \end{macrocode} +% % Blocks +% +% \begin{macrocode} \if@beamer@metropolis@blockbg \setbeamercolor{block title}{% @@ -127,7 +175,6 @@ \else \setbeamercolor{block title}{use=normal text, parent=normal text} \fi - \setbeamercolor{block title alerted}{% use={block title, alerted text}, bg=block title.bg, @@ -138,19 +185,27 @@ 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/beamerfontthememetropolis.dtx b/beamerfontthememetropolis.dtx index 60fa649..8d6fac4 100644 --- a/beamerfontthememetropolis.dtx +++ b/beamerfontthememetropolis.dtx @@ -1,49 +1,131 @@ -% Beamer mtheme +% \iffalse meta-comment % -% Copyright 2014 Matthias Vogelgesang +% 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/hsrmbeamertheme/hsrmbeamertheme. +% 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} % -\ProvidesPackage{beamerfontthememetropolis} +% +% \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} +\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}} +\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/beamerthemem.dtx b/beamerthemem.dtx index e857ea1..84faecc 100644 --- a/beamerthemem.dtx +++ b/beamerthemem.dtx @@ -1,102 +1,180 @@ -% Beamer mtheme +% \iffalse meta-comment % -% Copyright 2014 Matthias Vogelgesang +% 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/hsrmbeamertheme/hsrmbeamertheme. +% 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} % -\ProvidesPackage{beamerthemem} - - - -% Options & customization -% ======================= % -% To use any of options below, call them when invoking `mtheme` in the -% preamble of your slides: +% \StopEventually{} % -% \usetheme[]{m} +% \subsection{Main Theme} % - -% Option: usetitleprogressbar -% adds a thin progress bar underneath each frame title +% \iffalse +%<*package> +% \fi +% +% +% Options +% +% \begin{macrocode} \newif\if@useTitleProgressBar \@useTitleProgressBarfalse \DeclareOptionBeamer{usetitleprogressbar}{ \@useTitleProgressBartrue } - -% Option: usetotalslideindicator -% formats slide numbering as #current/#total +% \end{macrocode} +% +% usetotalslideindicator +% +% \begin{macrocode} \newif\if@useTotalSlideIndicator \@useTotalSlideIndicatorfalse \DeclareOptionBeamer{usetotalslideindicator}{ \@useTotalSlideIndicatortrue } - -% Option: noslidenumbers -% omits slide numbering entirely +% \end{macrocode} +% +% noslidenumbers +% +% \begin{macrocode} \newif\if@noSlideNumbers \@noSlideNumbersfalse \DeclareOptionBeamer{noslidenumbers}{ \@noSlideNumberstrue } - -% Option: nosectionslide -% omits the dedicated slide at the start of each new section +% \end{macrocode} +% +% nosectionslide +% +% \begin{macrocode} \newif\if@noSectionSlide \@noSectionSlidefalse \DeclareOptionBeamer{nosectionslide}{ \@noSectionSlidetrue } - -% Option: protectframetitle -% applies \protect to \insertframetitle to allow \cite, \ref, etc. +% \end{macrocode} +% +% protectframetitle +% +% \begin{macrocode} \newif\if@protectFrameTitle \@protectFrameTitlefalse \DeclareOptionBeamer{protectframetitle}{ \@protectFrameTitletrue } - -% Option: nooffset -% turns off extra space used to vertically center content on frames +% \end{macrocode} +% +% nooffset +% +% \begin{macrocode} \newlength{\@mtheme@voffset} \setlength{\@mtheme@voffset}{2em} \DeclareOptionBeamer{nooffset}{ \setlength{\@mtheme@voffset}{0em} } - -% Option: blockbg -% applies a gray background to blocks (via color theme `metropolis`) +% \end{macrocode} +% +% blockbg +% +% \begin{macrocode} \DeclareOptionBeamer{blockbg}{ \PassOptionsToPackage{blockbg}{beamercolorthememetropolis}% } - -% Option: ... +% \end{macrocode} +% +% Unknown option error handling +% +% \begin{macrocode} \DeclareOptionBeamer*{ \PackageWarning{beamerthemem}{Unknown option `\CurrentOption'}% } - \ProcessOptionsBeamer - -% Customize: \mthemetitleformat -% formats the main title, section titles, and frame titles +% \end{macrocode} +% +% mthemetitleformat +% +% \begin{macro}{\mthemetitleformat} +% \begin{macrocode} \def\mthemetitleformat#1{\scshape #1} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} \mode - -%{{{ --- Packages --------------------- +% \end{macrocode} +% +% Packages +% +% \begin{macrocode} \RequirePackage{etoolbox} \RequirePackage{tikz} @@ -112,23 +190,37 @@ \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 - -%}}} -%{{{ --- Titlepage -------------------- +% \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} { @@ -210,13 +302,30 @@ \vspace*{\@mtheme@voffset} \end{minipage} } - -%}}} -%{{{ --- Progressbar ------------------ +% \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}% @@ -227,15 +336,30 @@ \draw[fg, fill=fg] (0,0) rectangle (\progressbar@percent, 0.4pt); \end{tikzpicture}% } - - -%}}} -%{{{ --- Commands --------------------- +% \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 @@ -251,25 +375,36 @@ \end{frame} \endgroup } - -%}}} -%{{{ --- Itemize ---------------------- +% \end{macrocode} +% \end{macro} +% +% Itemize tweaks +% +% \begin{macrocode} \setlength{\leftmargini}{1em} - -% Actually one level should be enough but ... \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} - -%}}} -%{{{ --- Sections --------------------- +% \end{macrocode} +% +% Sections +% +% \begin{macrocode} \setbeamertemplate{section page} { @@ -283,9 +418,12 @@ \end{minipage} \par } - - +% \end{macrocode} +% % Insert frame with section title at every section start +% +% \begin{macrocode} + \if@noSectionSlide\else% \AtBeginSection[] { @@ -296,15 +434,19 @@ \fi } \fi - -%}}} -%{{{ --- Captions --------------------- +% \end{macrocode} +% +% Captions +% +% \begin{macrocode} \setbeamertemplate{caption label separator}{: } \setbeamertemplate{caption}[numbered] - -%}}} -%{{{ --- Footline/footnote ------------ +% \end{macrocode} +% +% Footline/footnote +% +% \begin{macrocode} \usenavigationsymbolstemplate{} \setbeamertemplate{footline} @@ -322,16 +464,17 @@ \fi% \end{beamercolorbox}% } - \setbeamertemplate{footnote} {% \parindent 0em\noindent% \raggedright \usebeamercolor{footnote}\hbox to 0.8em{\hfil\insertfootnotemark}\insertfootnotetext\par% } - -%}}} -%{{{ --- Frametitle ------------------- +% \end{macrocode} +% +% Frametitle +% +% \begin{macrocode} \setbeamertemplate{frametitle}{% \nointerlineskip @@ -351,13 +494,15 @@ \fi \vspace{\@mtheme@voffset} } - -%}}} -%{{{ --- pgfplots --------------------- - -%{{{ Colors - +% \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 @@ -370,9 +515,11 @@ \definecolor{TolColor10}{HTML}{AA4466} % light pink \definecolor{TolColor11}{HTML}{882255} % dark pink \definecolor{TolColor12}{HTML}{AA4499} % light purple - -%}}} -%{{{ Color cycles +% \end{macrocode} +% +% Color cycles +% +% \begin{macrocode} \pgfplotscreateplotcyclelist{mbarplot cycle}{% {draw=TolColor2, fill=TolColor2!70}, @@ -388,16 +535,17 @@ {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}, } - -%}}} -%{{{ Styles +% \end{macrocode} +% +% Styles +% +% \begin{macrocode} \pgfplotsset{ compat=1.9, @@ -466,16 +614,44 @@ 1000 sep={} }, } - -%}}} +% \end{macrocode} +% +% +% \begin{macrocode} \mode +% \end{macrocode} +% +% misc +% +% \begin{macrocode} -%{{{ misc \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 From c1639f98646a55cec143d0eb3e57f2301a838670 Mon Sep 17 00:00:00 2001 From: Benjamin Weiss Date: Sun, 14 Jun 2015 20:17:33 +0200 Subject: [PATCH 6/9] deleted package folder --- package/build.sh => build_dtx.sh | 0 package/beamercolorthememetropolis.dtx | 211 -------- package/beamerfontthememetropolis.dtx | 131 ----- package/beamerthemem.dtx | 657 ------------------------- 4 files changed, 999 deletions(-) rename package/build.sh => build_dtx.sh (100%) delete mode 100644 package/beamercolorthememetropolis.dtx delete mode 100644 package/beamerfontthememetropolis.dtx delete mode 100644 package/beamerthemem.dtx diff --git a/package/build.sh b/build_dtx.sh similarity index 100% rename from package/build.sh rename to build_dtx.sh diff --git a/package/beamercolorthememetropolis.dtx b/package/beamercolorthememetropolis.dtx deleted file mode 100644 index 9d1fb52..0000000 --- a/package/beamercolorthememetropolis.dtx +++ /dev/null @@ -1,211 +0,0 @@ -% \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 deleted file mode 100644 index 8d6fac4..0000000 --- a/package/beamerfontthememetropolis.dtx +++ /dev/null @@ -1,131 +0,0 @@ -% \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 deleted file mode 100644 index 84faecc..0000000 --- a/package/beamerthemem.dtx +++ /dev/null @@ -1,657 +0,0 @@ -% \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 From c49c5a1ec1fdae04441bc0e56db13a12e862a1f2 Mon Sep 17 00:00:00 2001 From: Benjamin Weiss Date: Sun, 14 Jun 2015 20:25:14 +0200 Subject: [PATCH 7/9] updated .gitignore to reflect the folder structure and filename changes --- .gitignore | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 5739e3c..f2afe1f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ demo.pdf +mtheme.pdf *.fls *.acn @@ -33,5 +34,6 @@ demo.pdf *.vrb *.xdy *.tdo +*.sty -package/.temptex +.temptex From 4afcf8632c27c325774d7c0beccd95635d79c6c2 Mon Sep 17 00:00:00 2001 From: Benjamin Weiss Date: Sun, 14 Jun 2015 22:33:07 +0200 Subject: [PATCH 8/9] gives @matze his name back --- beamercolorthememetropolis.dtx | 2 +- beamerfontthememetropolis.dtx | 2 +- beamerthemem.dtx | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/beamercolorthememetropolis.dtx b/beamercolorthememetropolis.dtx index 9d1fb52..a3c55c6 100644 --- a/beamercolorthememetropolis.dtx +++ b/beamercolorthememetropolis.dtx @@ -8,7 +8,7 @@ % which you can find at https://github.com/benjamin-weiss/hsrmbeamertheme. % --------------------------------------------------------------------------- % -% The Current Maintainer of this work is Michael Vogelgesang. +% The Current Maintainer of this work is Matthias Vogelgesang. % % This work consists of the files beamercolorthememetropolis.dtx and % beamercolorthememetropolis.ins and the derived filebase diff --git a/beamerfontthememetropolis.dtx b/beamerfontthememetropolis.dtx index 8d6fac4..10a1d5e 100644 --- a/beamerfontthememetropolis.dtx +++ b/beamerfontthememetropolis.dtx @@ -8,7 +8,7 @@ % which you can find at https://github.com/benjamin-weiss/hsrmbeamertheme. % --------------------------------------------------------------------------- % -% The Current Maintainer of this work is Michael Vogelgesang. +% The Current Maintainer of this work is Matthias Vogelgesang. % % This work consists of the files beamerfontthememetropolis.dtx and % beamerfontthememetropolis.ins and the derived filebase diff --git a/beamerthemem.dtx b/beamerthemem.dtx index 84faecc..4a60cf6 100644 --- a/beamerthemem.dtx +++ b/beamerthemem.dtx @@ -8,7 +8,7 @@ % which you can find at https://github.com/benjamin-weiss/hsrmbeamertheme. % --------------------------------------------------------------------------- % -% The Current Maintainer of this work is Michael Vogelgesang. +% 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. From 3be98be3c3536f35a52fd8a6d68951385666894b Mon Sep 17 00:00:00 2001 From: Benjamin Weiss Date: Sun, 14 Jun 2015 23:06:45 +0200 Subject: [PATCH 9/9] removed unnecessary empty lines after \begin{macrocode} --- beamercolorthememetropolis.dtx | 10 --------- beamerfontthememetropolis.dtx | 3 --- beamerthemem.dtx | 37 ---------------------------------- 3 files changed, 50 deletions(-) diff --git a/beamercolorthememetropolis.dtx b/beamercolorthememetropolis.dtx index a3c55c6..7e3f8e5 100644 --- a/beamercolorthememetropolis.dtx +++ b/beamercolorthememetropolis.dtx @@ -76,7 +76,6 @@ % Options % % \begin{macrocode} - \newif\if@beamer@metropolis@blockbg \@beamer@metropolis@blockbgfalse \DeclareOptionBeamer{blockbg}{ @@ -87,7 +86,6 @@ % Unknown option error handling % % \begin{macrocode} - \DeclareOptionBeamer*{% \PackageWarning{beamercolorthememetropolis}{Unknown option `\CurrentOption'}% } @@ -97,7 +95,6 @@ % Colors % % \begin{macrocode} - \definecolor{mDarkBrown}{HTML}{604c38} \definecolor{mDarkTeal}{HTML}{23373b} \definecolor{mLightBrown}{HTML}{EB811B} @@ -107,7 +104,6 @@ % Base Colors % % \begin{macrocode} - \setbeamercolor{normal text}{% fg=mDarkTeal, bg=black!2 @@ -123,7 +119,6 @@ % Derived Colors % % \begin{macrocode} - \setbeamercolor{titlelike}{use=normal text, parent=normal text} \setbeamercolor{structure}{% fg=normal text.fg @@ -133,7 +128,6 @@ % Frame titles and plain slides % % \begin{macrocode} - \setbeamercolor{frametitle}{use=palette primary, parent=palette primary} % \end{macrocode} % @@ -142,7 +136,6 @@ % The metropolis color theme uses it for frame titles and slides. % % \begin{macrocode} - \setbeamercolor{palette primary}{% use=normal text, fg=normal text.bg, @@ -153,7 +146,6 @@ % Progress bar and title separator % % \begin{macrocode} - \setbeamercolor{title separator}{use=progress bar, parent=progress bar} \setbeamercolor{progress bar}{% use=alerted text, @@ -165,7 +157,6 @@ % Blocks % % \begin{macrocode} - \if@beamer@metropolis@blockbg \setbeamercolor{block title}{% use=normal text, @@ -196,7 +187,6 @@ % Footnotes % % \begin{macrocode} - \setbeamercolor{footnote}{fg=normal text.fg!90} \setbeamercolor{footnote mark}{fg=.} \mode diff --git a/beamerfontthememetropolis.dtx b/beamerfontthememetropolis.dtx index 10a1d5e..11a3007 100644 --- a/beamerfontthememetropolis.dtx +++ b/beamerfontthememetropolis.dtx @@ -76,7 +76,6 @@ % Font Definitions % % \begin{macrocode} - \RequirePackage[no-math]{fontspec} \defaultfontfeatures{Mapping=tex-text} \setsansfont[BoldItalicFont={Fira Sans Italic},% @@ -96,7 +95,6 @@ % Font Assignment % % \begin{macrocode} - \setbeamerfont{title}{family=\Book, size=\Large} \setbeamerfont{author}{family=\ExtraLight, size=\small} \setbeamerfont{date}{family=\ExtraLight, size=\small} @@ -114,7 +112,6 @@ % 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} diff --git a/beamerthemem.dtx b/beamerthemem.dtx index 4a60cf6..cb616ed 100644 --- a/beamerthemem.dtx +++ b/beamerthemem.dtx @@ -76,7 +76,6 @@ % Options % % \begin{macrocode} - \newif\if@useTitleProgressBar \@useTitleProgressBarfalse \DeclareOptionBeamer{usetitleprogressbar}{ @@ -87,7 +86,6 @@ % usetotalslideindicator % % \begin{macrocode} - \newif\if@useTotalSlideIndicator \@useTotalSlideIndicatorfalse \DeclareOptionBeamer{usetotalslideindicator}{ @@ -98,7 +96,6 @@ % noslidenumbers % % \begin{macrocode} - \newif\if@noSlideNumbers \@noSlideNumbersfalse \DeclareOptionBeamer{noslidenumbers}{ @@ -109,7 +106,6 @@ % nosectionslide % % \begin{macrocode} - \newif\if@noSectionSlide \@noSectionSlidefalse \DeclareOptionBeamer{nosectionslide}{ @@ -120,7 +116,6 @@ % protectframetitle % % \begin{macrocode} - \newif\if@protectFrameTitle \@protectFrameTitlefalse \DeclareOptionBeamer{protectframetitle}{ @@ -131,7 +126,6 @@ % nooffset % % \begin{macrocode} - \newlength{\@mtheme@voffset} \setlength{\@mtheme@voffset}{2em} \DeclareOptionBeamer{nooffset}{ @@ -142,7 +136,6 @@ % blockbg % % \begin{macrocode} - \DeclareOptionBeamer{blockbg}{ \PassOptionsToPackage{blockbg}{beamercolorthememetropolis}% } @@ -151,7 +144,6 @@ % Unknown option error handling % % \begin{macrocode} - \DeclareOptionBeamer*{ \PackageWarning{beamerthemem}{Unknown option `\CurrentOption'}% } @@ -162,20 +154,17 @@ % % \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} @@ -204,7 +193,6 @@ % % \begin{macro}{\maketitle} % \begin{macrocode} - \def\maketitle{\ifbeamer@inframe\titlepage\else\frame[plain]{\titlepage}\fi} % \end{macrocode} % \end{macro} @@ -213,7 +201,6 @@ % % \begin{macro}{\titlepage} % \begin{macrocode} - \def\titlepage{\usebeamertemplate{title page}} % \end{macrocode} % \end{macro} @@ -221,7 +208,6 @@ % Set beamer title page template % % \begin{macrocode} - \setbeamertemplate{title page} { \begin{minipage}[b][\paperheight]{\textwidth} @@ -307,25 +293,21 @@ % 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}% @@ -343,7 +325,6 @@ % % \begin{macro}{\insertsectionHEAD} % \begin{macrocode} - \newcommand{\insertsectionHEAD}{% \expandafter\insertsectionHEADaux\insertsectionhead} % \end{macrocode} @@ -351,7 +332,6 @@ % % \begin{macro}{\insertsectionHEADaux} % \begin{macrocode} - \newcommand{\insertsectionHEADaux}[3]{\mthemetitleformat{#3}}% % \end{macrocode} % \end{macro} @@ -360,7 +340,6 @@ % % \begin{macro}{\plain} % \begin{macrocode} - \newcommand{\plain}[2][]{% \begingroup \setbeamercolor{background canvas}{use=palette primary,parent=palette primary} @@ -381,7 +360,6 @@ % Itemize tweaks % % \begin{macrocode} - \setlength{\leftmargini}{1em} \setlength{\leftmarginii}{1em} \setlength{\leftmarginiii}{1em} @@ -389,13 +367,11 @@ % % \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} @@ -405,7 +381,6 @@ % Sections % % \begin{macrocode} - \setbeamertemplate{section page} { \vspace{2em} @@ -423,7 +398,6 @@ % Insert frame with section title at every section start % % \begin{macrocode} - \if@noSectionSlide\else% \AtBeginSection[] { @@ -439,7 +413,6 @@ % Captions % % \begin{macrocode} - \setbeamertemplate{caption label separator}{: } \setbeamertemplate{caption}[numbered] % \end{macrocode} @@ -447,7 +420,6 @@ % Footline/footnote % % \begin{macrocode} - \usenavigationsymbolstemplate{} \setbeamertemplate{footline} {% @@ -475,7 +447,6 @@ % Frametitle % % \begin{macrocode} - \setbeamertemplate{frametitle}{% \nointerlineskip \begin{beamercolorbox}[wd=\paperwidth,leftskip=0.3cm,rightskip=0.3cm,ht=2.5ex,dp=1.5ex]{frametitle} @@ -502,7 +473,6 @@ % % 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 @@ -520,7 +490,6 @@ % Color cycles % % \begin{macrocode} - \pgfplotscreateplotcyclelist{mbarplot cycle}{% {draw=TolColor2, fill=TolColor2!70}, {draw=TolColor7, fill=TolColor7!70}, @@ -546,7 +515,6 @@ % Styles % % \begin{macrocode} - \pgfplotsset{ compat=1.9, mbaseplot/.style={ @@ -618,33 +586,28 @@ % % % \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}