diff --git a/beamercolorthememetropolis.dtx b/beamercolorthememetropolis.dtx index 3caaced..98d6bbf 100644 --- a/beamercolorthememetropolis.dtx +++ b/beamercolorthememetropolis.dtx @@ -27,16 +27,9 @@ % \iffalse %<*package> % ------------------------------------------------------------------------- \fi -% +% \section{Implementation: \textsc{metropolis} color theme} % Options % -% \begin{macrocode} -\newif\if@beamer@metropolis@blockbg -\@beamer@metropolis@blockbgfalse -\DeclareOptionBeamer{blockbg}{ - \@beamer@metropolis@blockbgtrue -} -% \end{macrocode} % % darkcolors % @@ -57,7 +50,9 @@ \ProcessOptionsBeamer % \end{macrocode} % -% Colors +% +% +% \subsection{Base colors} % % \begin{macrocode} \definecolor{mDarkBrown}{HTML}{604c38} @@ -66,7 +61,12 @@ \definecolor{mLightGreen}{HTML}{14B03D} % \end{macrocode} % -% Base Colors +% +% +% \subsection{Base styles} +% +% All colors in the \textsc{metropolis} theme are derived from the definitions +% of |normal text|, |alerted text|, and |example text|. % % \begin{macrocode} \if@beamer@metropolis@darkcolors @@ -88,24 +88,33 @@ } % \end{macrocode} % -% Derived Colors % % \begin{macrocode} -\setbeamercolor{titlelike}{use=normal text, parent=normal text} +% \end{macrocode} +% +% +% +% \subsection{Derived colors} +% +% The titles and structural elements (e.g. |itemize| bullets) are set in the +% same color as |normal text|. This would ideally done by setting |normal text| +% as a parent style, which we do to set |titlelike|, but this doesn't work for +% |structure| as its foreground is set explicitly in +% |beamercolorthemedefault.sty|. +% +% \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. +% elements, and possibly of other elements. The \textsc{metropolis} theme uses +% it for frame titles and slides. % % \begin{macrocode} \setbeamercolor{palette primary}{% @@ -113,16 +122,35 @@ fg=normal text.bg, bg=normal text.fg } +\setbeamercolor{frametitle}{% + use=palette primary, + parent=palette primary +} % \end{macrocode} % -% Progress bar and title separator +% The \textsc{metropolis} inner or outer themes optionally display progress +% bars in various locations. Their color is set by |progress bar| but the two +% different kinds can be customized separately. The horizontal rule on the title +% page is also set based on the progress bar color and can be customized with +% |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 + bg=normal text.bg!50!normal text.fg +} +\setbeamercolor{title separator}{ + use=progress bar, + parent=progress bar +} +\setbeamercolor{progress bar in head/foot}{% + use=progress bar, + parent=progress bar +} +\setbeamercolor{progress bar in section page}{ + use=progress bar, + parent=progress bar } % \end{macrocode} % @@ -163,7 +191,8 @@ \setbeamercolor{footnote mark}{fg=.} \mode % \end{macrocode} - +% +% % % \iffalse % diff --git a/beamerfontthememetropolis.dtx b/beamerfontthememetropolis.dtx index 7a1decf..d29e557 100644 --- a/beamerfontthememetropolis.dtx +++ b/beamerfontthememetropolis.dtx @@ -27,7 +27,7 @@ % \iffalse %<*package> % ------------------------------------------------------------------------- \fi -% +% \section{Implementation: Fira font theme} % Font Definitions % % \begin{macrocode} diff --git a/beamerinnerthememetropolis.dtx b/beamerinnerthememetropolis.dtx new file mode 100644 index 0000000..ed2d3dc --- /dev/null +++ b/beamerinnerthememetropolis.dtx @@ -0,0 +1,392 @@ +% \iffalse meta-comment ------------------------------------------------------- +% Copyright 2015 Matthias Vogelgesang and the LaTeX community. A full list of +% contributors can be found at +% +% https://github.com/matze/mtheme/graphs/contributors +% +% and the original template was based on the HSRM theme by Benjamin Weiss. +% +% This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 +% International License (https://creativecommons.org/licenses/by-sa/4.0/). +% ------------------------------------------------------------------------- \fi +% \iffalse +% \ProvidesFile{beamerinnerthememetropolis.dtx} +%<*package> +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{beamerinnerthememetropolis} + [2015/06/12 A Modern Beamer Theme] +% +% \documentclass{ltxdoc} +% \usepackage{beamerinnerthememetropolis} +% \begin{document} +% \DocInput{beamerinnerthememetropolis.dtx} +% \end{document} +% \fi +% \CheckSum{0} +% \StopEventually{} +% \iffalse +%<*package> +% ------------------------------------------------------------------------- \fi +% \section{Implementation: \textsc{metropolis} inner theme} +% +% A |beamer| inner theme dictates the style of the frame elements traditionally +% set in the ``body'' of each slide. These include: +% +% \begin{itemize} +% \item title, part, and section pages; +% \item itemize, enumerate, and description environments; +% \item block environments including theorems and proofs; +% \item figures and tables; and +% \item footnotes and plain text. +% \end{itemize} +% +% +% +% This customization will be changed in a future update. +% +% \begin{macrocode} +\def\mthemetitleformat{\scshape\MakeLowercase} +% \end{macrocode} +% +% +% +% \subsection{Title page} +% +% \begin{macro}{title page} +% +% Template for the title page. +% +% \begin{macrocode} +\RequirePackage{tikz} +\setbeamertemplate{title page}{ + \begin{minipage}[b][\paperheight]{\textwidth} +% \end{macrocode} +% +% If the user has set a |titlegraphic|, we set it in a zero-height box so +% it doesn't change the position of other elements. +% +% \begin{macrocode} + \ifx\inserttitlegraphic\@empty\else{% + \vbox to 0pt { + \vspace*{2em} + \usebeamercolor[fg]{titlegraphic}% + \inserttitlegraphic% + }% + \nointerlineskip% + } + \fi + \vfill% +% \end{macrocode} +% +% We set the title and subtitle, but only if they are defined by the user. +% If |\subtitle| is empty, for example, it won't leave a blank space on the +% title slide. +% +% \begin{macrocode} + \ifx\inserttitle\@empty\else{{% + \raggedright% + \linespread{1.0}% + \usebeamerfont{title}% + \usebeamercolor[fg]{title}% + \mthemetitleformat{\inserttitle}% + \par% + \vspace*{0.5em} + }} + \fi + \ifx\insertsubtitle\@empty\else{{% + \usebeamerfont{subtitle}% + \usebeamercolor[fg]{subtitle}% + \insertsubtitle% + \par% + \vspace*{0.5em} + }} + \fi +% \end{macrocode} +% +% A horizontal rule (drawn in TikZ) separates the title and subtitle from +% the author, date, and institution. +% +% \begin{macrocode} + \begin{tikzpicture} + \usebeamercolor{title separator} + \draw[fg] (0, 0) -- (\textwidth, 0); + \end{tikzpicture}% + \par% + \vspace*{1em}% +% \end{macrocode} +% +% Like the title and subtitle, we display the author only when it is defined. +% But beamer's definition of |\insertauthor| is always nonempty, so we have +% to test another macro initialized by |\author{...}| to see if the user has +% defined an author. This solution was suggested by Enrico Gregorio in an +% answer to \href{https://tex.stackexchange.com/questions/241306/}{this +% Stack Exchange question}. +% +% \begin{macrocode} + \ifx\beamer@shortauthor\@empty\else{{% + \usebeamerfont{author}% + \usebeamercolor[fg]{author}% + \insertauthor% + \par% + \vspace*{0.25em} + }} + \fi +% \end{macrocode} +% +% The date and institute are set after the author, again provided they are +% nonempty. Note that the default date in \LaTeX{} is |\today|, not |\empty|. +% +% \begin{macrocode} + \ifx\insertdate\@empty\else{{% + \usebeamerfont{date}% + \usebeamercolor[fg]{date}% + \insertdate% + \par% + }} + \fi + \ifx\insertinstitute\@empty\else{{% + \vspace*{3mm} + \usebeamerfont{institute}% + \usebeamercolor[fg]{institute}% + \insertinstitute% + \par% + }} + \fi + \vfill + \vspace*{1mm} + \end{minipage} +} +% \end{macrocode} +% \end{macro}% +% +% Normal people should use |\maketitle| or |\titlepage| instead of using the +% |title page| beamer template directly. Beamer already defines these macros, +% but we patch them here to make the title page |[plain]| by default, remove +% |\@thanks|, and ensure the title frame number doesn't count. +% +% \begin{macro}{\maketitle} +% \begin{macro}{\titlepage} +% +% Inserts the title frame, or causes the current frame to use the +% |title page| template. +% +% \begin{macrocode} +\def\maketitle{% + \ifbeamer@inframe + \titlepage + \else + \frame[plain]{\titlepage} + \fi +} +\def\titlepage{% + \usebeamertemplate{title page} +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% +% +% \subsection{Section page} +% +% \begin{macro}{section page} +% +% Template for the section title slide at the beginning of each section. +% +% \begin{macrocode} +\setbeamertemplate{section page}{ + \vspace{2em} + \centering + \begin{minipage}{22em} + \usebeamercolor[fg]{section title} + \usebeamerfont{section title} + \insertsectionHEAD\\[-1ex] + \usebeamertemplate*{progress bar in section page} + \end{minipage} + \par +} +\if@noSectionSlide\else% + \AtBeginSection{ + \ifbeamer@inframe + \sectionpage + \else + \frame[plain,c]{\sectionpage} + \fi + } +\fi +% \end{macrocode} +% +% To give users the option to \MakeUppercase or \MakeLowercase the section +% title, we need to expand |\insertsectionhead| before applying the relevant +% formatting command. This solution was suggested by Enrico Gregorio in an +% answer to \href{http://tex.stackexchange.com/questions/112526/}{this +% StackExchange question}. +% +% \begin{macrocode} +\providecommand{\insertsectionHEAD}{\expandafter\formatsectionhead\insertsectionhead} +\providecommand{\formatsectionhead}[3]{#1{#2}{\mthemetitleformat{#3}}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{progress bar in section page} +% +% Template for the progress bar displayed by default on the section page. +% This code is duplicated in large part in the outer theme's template +% |progress bar in head/foot|. +% +% \begin{macrocode} +\RequirePackage{calc} +\newlength{\metropolis@progressonsectionpage} +\setbeamertemplate{progress bar in section page}{ + \setlength{\metropolis@progressonsectionpage}{% + \textwidth * \ratio{\insertframenumber pt}{\inserttotalframenumber pt}% + }% + \begin{tikzpicture} + \draw[bg, fill=bg] (0,0) rectangle (\textwidth, 0.4pt); + \draw[fg, fill=fg] (0,0) rectangle (\metropolis@progressonsectionpage, 0.4pt); + \end{tikzpicture}% +} +% \end{macrocode} +% +% The above code assumes that |\insertframenumber| is less than or equal to +% |\inserttotalframenumber|. However, this is not true on the first compile; +% in the absence of an |.aux| file, |\inserttotalframenumber| defaults to 1. +% This behaviour could cause fatal errors for long presentations, as +% |\metropolis@progressonsectionpage| would exceed \TeX's maximum length +% (16383.99999pt, roughly 5.75 metres or 18.9 feet). +% To avoid this, we increase the default value for |\inserttotalframenumber|; +% presentations with over 4000 slides will still break on first compile, but +% users in that situation likely have deeper problems to solve. +% +% \begin{macrocode} +\def\inserttotalframenumber{100} +% \end{macrocode} +% \end{macro} +% +% +% +% \subsection{Block environments} +% +% \begin{macrocode} +\newlength{\leftrightskip} +\if@beamer@metropolis@blockbg + \setlength{\leftrightskip}{1ex} +\else + \setlength{\leftrightskip}{0ex} +\fi +\setbeamertemplate{block begin}{% + \vspace*{1ex} + \begin{beamercolorbox}[% + ht=2.4ex, + dp=1ex, + leftskip=\leftrightskip, + rightskip=\leftrightskip]{block title} + \usebeamerfont*{block title}\insertblocktitle% + \end{beamercolorbox}% + \vspace*{-1pt} + \usebeamerfont{block body}% + \begin{beamercolorbox}[% + dp=1ex, + leftskip=\leftrightskip, + rightskip=\leftrightskip, + vmode]{block body}% +} +\setbeamertemplate{block end}{% + \end{beamercolorbox} + \vspace*{0.2ex} +} +% \end{macrocode} +% +% Alerted block environment +% +% \begin{macrocode} +\setbeamertemplate{block alerted begin}{% + \vspace*{1ex} + \begin{beamercolorbox}[% + ht=2.4ex, + dp=1ex, + leftskip=\leftrightskip, + rightskip=\leftrightskip]{block title alerted} + \usebeamerfont*{block title alerted}\insertblocktitle% + \end{beamercolorbox}% + \vspace*{-1pt} + \usebeamerfont{block body alerted}% + \begin{beamercolorbox}[% + dp=1ex, + leftskip=\leftrightskip, + rightskip=\leftrightskip, + vmode]{block body}% +} +\setbeamertemplate{block alerted end}{% + \end{beamercolorbox} + \vspace*{0.2ex} +} +% \end{macrocode} +% +% Example block environment +% +% \begin{macrocode} +\setbeamertemplate{block example begin}{% + \vspace*{1ex} + \begin{beamercolorbox}[% + ht=2.4ex, + dp=1ex, + leftskip=\leftrightskip, + rightskip=\leftrightskip]{block title example} + \usebeamerfont*{block title example}\insertblocktitle% + \end{beamercolorbox}% + \vspace*{-1pt} + \usebeamerfont{block body example}% + \begin{beamercolorbox}[% + dp=1ex, + leftskip=\leftrightskip, + rightskip=\leftrightskip, + vmode]{block body}% +} +\setbeamertemplate{block example end}{% + \end{beamercolorbox} + \vspace*{0.2ex} +} +% \end{macrocode} +% +% +% +% \subsection{Itemize/enumerate environments} +% \begin{macrocode} +\setlength{\leftmargini}{1em} +\setlength{\leftmarginii}{1em} +\setlength{\leftmarginiii}{1em} +\setbeamertemplate{itemize item}{\textbullet} +\setbeamertemplate{itemize subitem}{\textbullet} +\setbeamertemplate{itemize subsubitem}{\textbullet} +% \end{macrocode} +% +% \subsection{Figures and tables} +% \begin{macrocode} +\setbeamertemplate{caption label separator}{: } +\setbeamertemplate{caption}[numbered] +% \end{macrocode} +% +% \subsection{Footnotes} +% \begin{macrocode} +\setbeamertemplate{footnote}{% + \parindent 0em\noindent% + \raggedright + \usebeamercolor{footnote}\hbox to 0.8em{\hfil\insertfootnotemark}\insertfootnotetext\par% +} +% \end{macrocode} +% +% \subsection{General text} +% \begin{macrocode} +\mode +\setlength{\parskip}{0.5em} +\linespread{1.15} +% \end{macrocode} +% +% +% +% \iffalse +% +% \fi +% \Finale +\endinput diff --git a/beamerouterthememetropolis.dtx b/beamerouterthememetropolis.dtx new file mode 100644 index 0000000..452764d --- /dev/null +++ b/beamerouterthememetropolis.dtx @@ -0,0 +1,142 @@ +% \iffalse meta-comment ------------------------------------------------------- +% Copyright 2015 Matthias Vogelgesang and the LaTeX community. A full list of +% contributors can be found at +% +% https://github.com/matze/mtheme/graphs/contributors +% +% and the original template was based on the HSRM theme by Benjamin Weiss. +% +% This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 +% International License (https://creativecommons.org/licenses/by-sa/4.0/). +% ------------------------------------------------------------------------- \fi +% \iffalse +% \ProvidesFile{beamerouterthememetropolis.dtx} +%<*package> +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{beamerouterthememetropolis} + [2015/06/12 A Modern Beamer Theme] +% +% \documentclass{ltxdoc} +% \usepackage{beamerouterthememetropolis} +% \begin{document} +% \DocInput{beamerouterthememetropolis.dtx} +% \end{document} +% \fi +% \CheckSum{0} +% \StopEventually{} +% \iffalse +%<*package> +% ------------------------------------------------------------------------- \fi +% \section{Implementation: \textsc{metropolis} outer theme} +% +% A |beamer| outer theme dictates the style of the frame elements traditionally +% set outside the body of each slide: the head, footline, and frame title. +% +% +% +% This customization will be removed in a future version. +% +% \begin{macrocode} +\def\mthemetitleformat{\scshape\MakeLowercase} +% \end{macrocode} +% +% +% \subsection{Head and footline} +% +% All good |beamer| presentations should already remove the navigation symbols, +% but \textsc{metropolis} removes them automatically (just in case). +% +% \begin{macrocode} +\setbeamertemplate{navigation symbols}{} +% \end{macrocode} +% +% The only element in the footline by default is the frame number. It can +% optionally be omitted or displayed as a fraction of the total frames. +% +% \begin{macrocode} +\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}% +} +% \end{macrocode} +% +% +% +% \subsection{Frametitle} +% +% \begin{macro}{frametitle} +% +% Template for the frame title, which is optionally underlined with a +% progress bar. +% +% \begin{macrocode} +\setbeamertemplate{frametitle}{% + \nointerlineskip + \begin{beamercolorbox}[% + wd=\paperwidth, + leftskip=0.3cm, + rightskip=0.3cm, + ht=2.5ex, + dp=1.5ex + ]{frametitle} + \if@protectFrameTitle% + \mthemetitleformat{\protect\insertframetitle}% + \else% + \mthemetitleformat{\insertframetitle}% + \fi% + \end{beamercolorbox}% + \if@useTitleProgressBar + \nointerlineskip + \usebeamertemplate*{progress bar in head/foot} + \fi + \vspace{\@mtheme@voffset} +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{progress bar in head/foot} +% +% Template for the progress bar optionally displayed below the frame title +% on each page. Much of this code is duplicated in the inner theme's template +% |progress bar in section page|. +% +% \begin{macrocode} +\RequirePackage{calc} +\newlength{\metropolis@progressinheadfoot} +\setbeamertemplate{progress bar in head/foot}{ + \setlength{\metropolis@progressinheadfoot}{% + \paperwidth * \ratio{\insertframenumber pt}{\inserttotalframenumber pt}% + }% + \begin{beamercolorbox}[wd=\paperwidth,ht=0.4pt,dp=0pt]{progress bar in head/foot} + \begin{tikzpicture} + \draw[bg, fill=bg] (0,0) rectangle (\paperwidth, 0.4pt); + \draw[fg, fill=fg] (0,0) rectangle (\metropolis@progressinheadfoot, 0.4pt); + \end{tikzpicture}% + \end{beamercolorbox} +} +% \end{macrocode} +% \end{macro} +% +% +% +% \iffalse +% +% \fi +% \Finale +\endinput diff --git a/beamerthemem.dtx b/beamerthemem.dtx index 05e4e24..8713094 100644 --- a/beamerthemem.dtx +++ b/beamerthemem.dtx @@ -27,7 +27,11 @@ % \iffalse %<*package> % ------------------------------------------------------------------------- \fi +% \section{Implementation: \textsc{metropolis} main theme} % +% The primary job of this package is to load the component sub-packages of the +% \textsc{metropolis} theme and route the theme options accordingly. It also +% provides some custom commands and environments for the user. % % % Options @@ -93,8 +97,10 @@ % blockbg % % \begin{macrocode} +\newif\if@beamer@metropolis@blockbg +\@beamer@metropolis@blockbgfalse \DeclareOptionBeamer{blockbg}{ - \PassOptionsToPackage{blockbg}{beamercolorthememetropolis}% + \@beamer@metropolis@blockbgtrue } % \end{macrocode} % @@ -122,195 +128,51 @@ \def\mthemetitleformat#1{\scshape #1} % \end{macrocode} % \end{macro} +% \subsection{Component sub-packages} % +% Having processed the options, we can now load the component sub-packages of +% the theme. % \begin{macrocode} -\mode +\useinnertheme{metropolis} +\useoutertheme{metropolis} +\usecolortheme{metropolis} % \end{macrocode} % -% Packages +% The |fira| font theme, which depends on |fontspec|, is only loaded if the +% document is being processed by Xe\LaTeX{} or Lua\LaTeX{}. % % \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 +\ifboolexpr{bool {xetex} or bool {luatex}}{ \usefonttheme{metropolis} -\else - \PackageWarning{beamerthemem}{You need to compile with XeLaTeX or LuaLaTeX for the Fira fonts.} -\fi - +}{ + \PackageWarning{beamerthemem}{% + You need to compile with XeLaTeX or LuaLaTeX to use the Fira fonts. + } +} +% \end{macrocode} +% +% The |tol| theme for |pgfplots| is only loaded if |pgfplots| is used. +% +% \begin{macrocode} \AtEndPreamble{% \@ifpackageloaded{pgfplots}{% \RequirePackage{pgfplotsthemetol} }{} } - % \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 +% \subsection{Custom commands} % -% \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 +% We define custom commands in this package as their proper usage may depend +% depend on multiple sub-packages. % % \begin{macro}{\plain} +% Creates a plain frame with dark background, suitable for displaying images +% or a few words. % \begin{macrocode} \newcommand{\plain}[2][]{% \begingroup @@ -329,228 +191,12 @@ % \end{macrocode} % \end{macro} % -% Itemize tweaks -% -% \begin{macrocode} -\setlength{\leftmargini}{1em} -\setlength{\leftmarginii}{1em} -\setlength{\leftmarginiii}{1em} -% \end{macrocode} -% -% \begin{macro}{\itemBullet} -% \begin{macrocode} -\newcommand{\itemBullet}{∙} -% \end{macrocode} -% \end{macro} -% -% \begin{macrocode} -\setbeamertemplate{itemize item}{\itemBullet} -\setbeamertemplate{itemize subitem}{\itemBullet} -\setbeamertemplate{itemize subsubitem}{\itemBullet} -\setlength{\parskip}{0.5em} -% \end{macrocode} -% -% Block environment -% -% \begin{macrocode} - -\newlength{\leftrightskip} -\if@beamer@metropolis@blockbg - \setlength{\leftrightskip}{1ex} -\else - \setlength{\leftrightskip}{0ex} -\fi -\setbeamertemplate{block begin}{% - \vspace*{1ex} - \begin{beamercolorbox}[% - ht=2.4ex, - dp=1ex, - leftskip=\leftrightskip, - rightskip=\leftrightskip]{block title} - \usebeamerfont*{block title}\insertblocktitle% - \end{beamercolorbox}% - \vspace*{-1pt} - \usebeamerfont{block body}% - \begin{beamercolorbox}[% - dp=1ex, - leftskip=\leftrightskip, - rightskip=\leftrightskip, - vmode]{block body}% -} -\setbeamertemplate{block end}{% - \end{beamercolorbox} - \vspace*{0.2ex} -} -% \end{macrocode} -% -% Alerted block environment -% -% \begin{macrocode} -\setbeamertemplate{block alerted begin}{% - \vspace*{1ex} - \begin{beamercolorbox}[% - ht=2.4ex, - dp=1ex, - leftskip=\leftrightskip, - rightskip=\leftrightskip]{block title alerted} - \usebeamerfont*{block title alerted}\insertblocktitle% - \end{beamercolorbox}% - \vspace*{-1pt} - \usebeamerfont{block body alerted}% - \begin{beamercolorbox}[% - dp=1ex, - leftskip=\leftrightskip, - rightskip=\leftrightskip, - vmode]{block body}% -} -\setbeamertemplate{block alerted end}{% - \end{beamercolorbox} - \vspace*{0.2ex} -} -% \end{macrocode} -% -% Example block environment -% -% \begin{macrocode} -\setbeamertemplate{block example begin}{% - \vspace*{1ex} - \begin{beamercolorbox}[% - ht=2.4ex, - dp=1ex, - leftskip=\leftrightskip, - rightskip=\leftrightskip]{block title example} - \usebeamerfont*{block title example}\insertblocktitle% - \end{beamercolorbox}% - \vspace*{-1pt} - \usebeamerfont{block body example}% - \begin{beamercolorbox}[% - dp=1ex, - leftskip=\leftrightskip, - rightskip=\leftrightskip, - vmode]{block body}% -} -\setbeamertemplate{block example end}{% - \end{beamercolorbox} - \vspace*{0.2ex} -} -% \end{macrocode} -% -% Sections -% -% \begin{macrocode} -\setbeamertemplate{section page} -{ - \vspace{2em} - \centering - \begin{minipage}{22em} - \usebeamercolor[fg]{section title} - \usebeamerfont{section title} - \insertsectionHEAD\\[-1ex] - \progressbar{\textwidth} - \end{minipage} - \par -} -% \end{macrocode} -% -% Insert frame with section title at every section start -% -% \begin{macrocode} -\if@noSectionSlide\else% - \AtBeginSection[] - { - \ifbeamer@inframe - \sectionpage - \else - \frame[plain,c]{\sectionpage} - \fi - } -\fi -% \end{macrocode} -% -% Captions -% -% \begin{macrocode} -\setbeamertemplate{caption label separator}{: } -\setbeamertemplate{caption}[numbered] -% \end{macrocode} -% -% Footline/footnote -% -% \begin{macrocode} -\usenavigationsymbolstemplate{} -\setbeamertemplate{footline} -{% -\begin{beamercolorbox}[wd=\textwidth,ht=3ex,dp=3ex,leftskip=0.3cm,rightskip=0.3cm]{footline}% - \hfill\usebeamerfont{page number in head/foot}% -\if@noSlideNumbers% - %Purposefully left blank to display no slide number.% - \else% - \if@useTotalSlideIndicator% - \insertframenumber/\inserttotalframenumber% - \else% - \insertframenumber% - \fi% - \fi% -\end{beamercolorbox}% -} -\setbeamertemplate{footnote} -{% - \parindent 0em\noindent% - \raggedright - \usebeamercolor{footnote}\hbox to 0.8em{\hfil\insertfootnotemark}\insertfootnotetext\par% -} -% \end{macrocode} -% -% Frametitle -% -% \begin{macrocode} -\setbeamertemplate{frametitle}{% -\nointerlineskip -\begin{beamercolorbox}[wd=\paperwidth,leftskip=0.3cm,rightskip=0.3cm,ht=2.5ex,dp=1.5ex]{frametitle} -\usebeamerfont{frametitle}% -\if@protectFrameTitle% - \mthemetitleformat{\protect\insertframetitle}% -\else% - \mthemetitleformat{\insertframetitle}% -\fi% -\end{beamercolorbox}% -\if@useTitleProgressBar - \nointerlineskip - \begin{beamercolorbox}[wd=\paperwidth,ht=0.4pt,dp=0pt]{frametitle} - \progressbar{\paperwidth} - \end{beamercolorbox} -\fi -\vspace{\@mtheme@voffset} -} -% \end{macrocode} -% -% -% \begin{macrocode} -\mode -% \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 diff --git a/demo.pdf b/demo.pdf index 5fa3491..897f77a 100644 Binary files a/demo.pdf and b/demo.pdf differ diff --git a/demo.tex b/demo.tex index c63f311..79e7b41 100644 --- a/demo.tex +++ b/demo.tex @@ -1,11 +1,12 @@ \documentclass[10pt]{beamer} -\usetheme{m} +\usetheme[usetitleprogressbar]{m} \renewcommand{\mthemetitleformat}{\scshape\MakeLowercase} \usepackage{booktabs} \usepackage[scale=2]{ccicons} +\usepackage{pgfplots} \usepgfplotslibrary{dateplot} diff --git a/mtheme.dtx b/mtheme.dtx index ff6c345..71a721a 100644 --- a/mtheme.dtx +++ b/mtheme.dtx @@ -13,6 +13,7 @@ \documentclass{ltxdoc} %\OnlyDescription +\usepackage[parfill]{parskip} \usepackage{setspace} \onehalfspacing @@ -306,6 +307,8 @@ For a full list of contributors please visit the \section{Implementation} \DocInput{beamerthemem.dtx} +\DocInput{beamerinnerthememetropolis.dtx} +\DocInput{beamerouterthememetropolis.dtx} \DocInput{beamerfontthememetropolis.dtx} \DocInput{beamercolorthememetropolis.dtx} \DocInput{pgfplotsthemetol.dtx} diff --git a/mtheme.ins b/mtheme.ins index 04c6d03..09490ec 100644 --- a/mtheme.ins +++ b/mtheme.ins @@ -32,6 +32,12 @@ International License (https://creativecommons.org/licenses/by-sa/4.0/). \generate{\file{beamerthemem.sty}{% \from{beamerthemem.dtx}{package}} } +\generate{\file{beamerinnerthememetropolis.sty}{% + \from{beamerinnerthememetropolis.dtx}{package}} + } +\generate{\file{beamerouterthememetropolis.sty}{% + \from{beamerouterthememetropolis.dtx}{package}} + } \generate{\file{beamerfontthememetropolis.sty}{% \from{beamerfontthememetropolis.dtx}{package}} } @@ -49,6 +55,8 @@ International License (https://creativecommons.org/licenses/by-sa/4.0/). \Msg{* files into a directory searched by TeX: *} \Msg{* *} \Msg{* beamerthemem.sty *} +\Msg{* beamerinnerthememetropolis.sty *} +\Msg{* beamerouterthememetropolis.sty *} \Msg{* beamerfontthememetropolis.sty *} \Msg{* beamercolorthememetropolis.sty *} \Msg{* pgfplotsthemetol.sty *} diff --git a/mtheme.pdf b/mtheme.pdf index 90be96d..768dfb6 100644 Binary files a/mtheme.pdf and b/mtheme.pdf differ diff --git a/pgfplotsthemetol.dtx b/pgfplotsthemetol.dtx index 1f83732..d543a82 100644 --- a/pgfplotsthemetol.dtx +++ b/pgfplotsthemetol.dtx @@ -30,7 +30,7 @@ %<*package> % ------------------------------------------------------------------------- \fi % -% \subsection{\texttt{pgfplotsthemetol}} +% \section{Implementation: Tol \texttt{pgfplots} theme} % % Paul Tol's 12-color palette\footnote{Tol actually describes several % palettes; these colours are taken from the bottom row of Figure 3 in his