Merge pull request #93 from rchurchley/splitthemes

Split off and document inner and outer themes
This commit is contained in:
Matthias Vogelgesang 2015-06-22 14:59:40 +02:00
commit 977ce7cd1b
11 changed files with 633 additions and 412 deletions

View File

@ -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<all>
% \end{macrocode}
%
%
%
% \iffalse
%</package>

View File

@ -27,7 +27,7 @@
% \iffalse
%<*package>
% ------------------------------------------------------------------------- \fi
%
% \section{Implementation: Fira font theme}
% Font Definitions
%
% \begin{macrocode}

View File

@ -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
%<driver> \ProvidesFile{beamerinnerthememetropolis.dtx}
%<*package>
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{beamerinnerthememetropolis}
[2015/06/12 A Modern Beamer Theme]
%</package>
%<driver> \documentclass{ltxdoc}
%<driver> \usepackage{beamerinnerthememetropolis}
%<driver> \begin{document}
%<driver> \DocInput{beamerinnerthememetropolis.dtx}
%<driver> \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<all>
\setlength{\parskip}{0.5em}
\linespread{1.15}
% \end{macrocode}
%
%
%
% \iffalse
%</package>
% \fi
% \Finale
\endinput

View File

@ -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
%<driver> \ProvidesFile{beamerouterthememetropolis.dtx}
%<*package>
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{beamerouterthememetropolis}
[2015/06/12 A Modern Beamer Theme]
%</package>
%<driver> \documentclass{ltxdoc}
%<driver> \usepackage{beamerouterthememetropolis}
%<driver> \begin{document}
%<driver> \DocInput{beamerouterthememetropolis.dtx}
%<driver> \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
%</package>
% \fi
% \Finale
\endinput

View File

@ -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<presentation>
\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<all>
% \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
%</package>
% \fi

BIN
demo.pdf

Binary file not shown.

View File

@ -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}

View File

@ -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}

View File

@ -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 *}

Binary file not shown.

View File

@ -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