diff --git a/doc/metropolistheme.dtx b/doc/metropolistheme.dtx index 08b6f17..70afbad 100644 --- a/doc/metropolistheme.dtx +++ b/doc/metropolistheme.dtx @@ -37,7 +37,7 @@ \suppressfontnotfounderror=0% } - \newcommand{\iffontsexist}[3]{% + \newcommand{\iffontsavailable}[3]{% \setcounter{fontsnotfound}{0}% \expandafter\forcsvlist\expandafter% \checkfont\expandafter{#1}% @@ -47,13 +47,13 @@ #3% \fi% } - \iffontsexist{Fira Sans Light,% + \iffontsavailable{Fira Sans Light,% Fira Sans Light Italic,% Fira Sans,% Fira Sans Italic}{% \setmainfont[BoldFont={Fira Sans}]{Fira Sans Light}% }{% - \iffontsexist{Fira Sans Light OT,% + \iffontsavailable{Fira Sans Light OT,% Fira Sans Light Italic OT,% Fira Sans OT,% Fira Sans Italic OT}{% @@ -65,10 +65,10 @@ } } } - \iffontsexist{Fira Mono, Fira Mono Bold}{% + \iffontsavailable{Fira Mono, Fira Mono Bold}{% \setmonofont{Fira Mono}% }{% - \iffontsexist{Fira Mono OT, Fira Mono Bold OT}{% + \iffontsavailable{Fira Mono OT, Fira Mono Bold OT}{% \setmonofont{Fira Mono OT}% }{% \typeout{% @@ -147,20 +147,22 @@ \GetFileInfo{beamerthememetropolis.dtx} \title{Modern Beamer Presentations with the \themename package} \author{Matthias Vogelgesang \\ \url{matthias.vogelgesang@gmail.com}} -\date{v1.0 -- 2015/12/04} +\date{v1.1 --- 2016/02/06} \begin{document} \maketitle \tableofcontents + + + \section{Introduction} Beamer is an awesome way to make presentations with LaTeX, but its theme selection is surprisingly sparse. The stock themes share an aesthetic that is -now overused and can be a little cluttered, and the few distinctive custom -themes available are often specialized for a particular corporate or -institutional brand. +can be a little cluttered, and the few distinctive custom themes available are +often specialized for a particular corporate or institutional brand. The goal of \themename is to provide a simple, modern Beamer theme suitable for anyone to use. It tries to minimize noise and maximize space for content; @@ -182,24 +184,29 @@ the theme even better, please get in touch there. The {full list of contributors} already contains over a dozen names! + + \section{Getting Started} \subsection{Installing from CTAN} + For the regular user it is recommended to install \themename from \href{https://www.ctan.org}{CTAN}. In case you keep your \TeX\ distribution -up-to-date, chances are good that \themename is already installed. If it is not, -you need to update your packages. For \TeX\ Live (or Mac\TeX\ on OS X) the -following command updates all packages. +up-to-date, chances are good that \themename is already installed. If it is +not, you need to update your packages. For \TeX\ Live (or Mac\TeX\ on OS X) +the following command updates all packages. \begin{lstlisting} sudo tlmgr update --all \end{lstlisting} -For any other distribution please refer to its documentation on how to update your -packages. +For any other distribution please refer to its documentation on how to update +your packages. + +To get the most out of the theme you should also install the |Fira| fonts. +Yet this is not mandatory. \themename also works with the standard fonts. + -To get the most out of the theme you should also install the |Fira| fonts. Yet this -is not mandatory. \themename also works with the standard fonts. \subsection{Installing from GitHub} @@ -237,11 +244,15 @@ options for advanced users: \item[|make ctan|] creates a package for CTAN distribution. \end{description} + + \subsection{Installing the Debian Package} As an alternative users of Debian or Ubuntu can also install this \href{https://launchpad.net/\%7Eedd/+archive/ubuntu/misc/+files/latex-mtheme_0.1.0vidid1_all.deb}{.deb package} containing the theme files as well as the Fira Sans font files. + + \subsection{A Minimal Example} The following code shows a minimal example of a Beamer presentation using @@ -264,19 +275,32 @@ The following code shows a minimal example of a Beamer presentation using \end{lstlisting} + \subsection{Dependencies} -\begin{itemize} - \item TikZ - \item XeLaTeX or LuaTeX - \item \href{https://github.com/mozilla/Fira}{Fira Sans} and Mono font -\end{itemize} +\themename depends on the |beamer| class and the following standard packages: +\begin{multicols}{3} + \begin{itemize} + \item |tikz| + \item |pgfopts| + \item |etoolbox| + \item |calc| + \item |ifxetex| + \item |ifluatex| + \end{itemize} +\end{multicols} + +For best results, we recommend installing the fonts +\href{https://github.com/mozilla/Fira}{|Fira Sans|} and |Fira Mono| +and compiling with \themename using Xe\LaTeX{} or Lua\TeX{}. +These are optional dependencies; \themename is compatible with (e.g.) +pdf\LaTeX{} and will fall back to standard fonts if |Fira Sans| or |Fira Mono| +is not installed. + +The packaged name of |Fira Sans| is |Fira Sans OT| in some Linux +distributions; this case is automatically handled by \themename. + -The |Fira Sans| font is not a hard dependency. \themename will try to load the -font and use it if it is installed, but if not it will just use the standard -font. Depending on the Linux distribution, the packaged name of |Fira Sans| -might be |Fira Sans OT| instead of |Fira Sans|. \themename will check for this -name too. \subsection{Pandoc} @@ -291,111 +315,97 @@ $ pandoc -t beamer --latex-engine=xelatex -V theme:metropolis -o output.pdf inpu \section{Customization} + \subsection{Package options} -The theme provides a number of options. The options use a key=value interface. -So every option is controlled by a key its value. To use an option you can -either provide a comma separated list of options when invoking -\textsc{metropolis} in the preamble of the presentation. + +The theme provides a number of options, which can be set using a key=value +interface. The primary way to set options is to provide a comma-separated list +of option-value pairs when loading \themename in the preamble: \begin{lstlisting} -\usetheme[]{metropolis} +\usetheme[option1=value1, option2=value2, ...]{metropolis} \end{lstlisting} -Or you can set them at any time with the |\metroset| macro. + +Options can be changed at any time --- even mid-presentation! --- with the +|\metroset| macro. \begin{lstlisting} -\metroset{} -\end{lstlisting} -To set an option on a specific sub-package only you have to add the -corresponding prefix (inner, outer, color), e.g. -\begin{lstlisting} -\metroset{inner/block=fill} +\metroset{option1=newvalue1, option2=newvalue2, ...} \end{lstlisting} + The list of options is structured as shown in the following example. -\DescribeOption{key}{list of possible values}{default value}{ +\DescribeOption{option key}{list of possible values}{default}{ A short description of the option. } -Although the options are grouped into the corresponding packages every option -can and in most cases should be set on the main theme directly. If an option -is listed in multiple sub-packages, setting it on the main theme will set the -option on every sub-package accordingly. \subsubsection{Main theme} \DescribeOption{titleformat}% {regular, smallcaps, allsmallcaps, allcaps} {regular}{ - Shortcut option to change the titleformat of all titles together. Please - refer to section \ref{sec:titleformats} for known issues. + Changes the format of titles, subtitles, section titles, frame titles, and + the text on standout ``plain'' frames. The available options produce + Regular, \textsc{SmallCaps}, \textsc{\MakeLowercase{AllSmallCaps}}, or + \MakeUppercase{AllCaps} titles. Please refer to + Section~\ref{sec:titleformats} for known issues with these options. } -\DescribeOption{titleformat plain}% +\DescribeOption{titleformat-plain}% {regular, smallcaps, allsmallcaps, allcaps}% {regular}{ - Control the titleformat of the plain title. Please refer to section - \ref{sec:titleformats} for known issues. + Changes the format of standout ``plain'' frames (see |titleformat|, above). } + \subsubsection{Inner theme} \DescribeOption{block}{transparent, fill}{transparent}{ - This option controls the block background. It can either be filled with a - light grey or be transparent. + Optionally adds a light grey background to block environments like |theorem| + and |example|. } \DescribeOption{sectionpage}{none, simple, progressbar}{progressbar}{ - Disable section pages at all, typeset centered section title or add a thin - progress bar below the centered section title. -} - -\DescribeOption{titleformat title}% - {regular, smallcaps, allsmallcaps, allcaps}% - {regular}{ - Control the titleformat of the title. Please refer to section - \ref{sec:titleformats} for known issues. -} - -\DescribeOption{titleformat subtitle}% - {regular, smallcaps, allsmallcaps, allcaps}% - {regular}{ - Control the titleformat of the subtitle. Please refer to section - \ref{sec:titleformats} for known issues. -} - -\DescribeOption{titleformat section}% - {regular, smallcaps, allsmallcaps, allcaps}% - {regular}{ - Control the titleformat of the section title. Please refer to section - \ref{sec:titleformats} for known issues. + Adds a slide at the start of each section (|simple|) with an optional thin + progress bar below the section title (|progressbar|). The |none| option + disables the section page. } \subsubsection{Outer theme} \DescribeOption{numbering}{none, counter, fraction}{counter}{ - In the bottom right corner of each frame the current frame number is - displayed. This can be disabled or the total framenumber can be added - additionally. + Controls whether the frame number at the bottom right of each slide is + omitted (|none|), shown (|counter|) or displayed as a fraction of the total + number of frames (|fraction|). } \DescribeOption{progressbar}{none, head, frametitle, foot}{none}{ - Adds a progress bar to the top of each frame (|head|), the bottom of each - frame (|foot|), or directly below each frame title (|frametitle|). -} - -\DescribeOption{titleformat frame}% - {regular, smallcaps, allsmallcaps, allcaps}% - {regular}{ - Control the titleformat of the frame title. Please refer to section - \ref{sec:titleformats} for known issues. + Optionally adds a progress bar to the top of each frame (|head|), + the bottom of each frame (|foot|), or directly below each frame title + (|frametitle|). } \subsubsection{Color theme} \DescribeOption{block}{transparent, fill}{transparent}{ - This option controls the block background. It can either be filled with a - light grey or be transparent. + Optionally adds a light grey background to block environments like |theorem| + and |example|. } \DescribeOption{background}{dark, light}{light}{ - This option defines whether the background shall be dark and the foreground - be light or vice versa. + Provides the option to have a dark background and light foreground instead + of the reverse. } +\subsubsection{Font theme} + +\DescribeMacro{titleformat-title} +\DescribeMacro{titleformat-subtitle} +\DescribeMacro{titeformat-section} +\DescribeOption{titleformat-frame}% + {regular, smallcaps, allsmallcaps, allcaps}% + {regular}{ + Individually controls the format of titles, subtitles, section titles, and + frame titles (see |titleformat|, above). +} + + + \subsection{Color Customization} The included \themename color theme is used by default, but its colors can be @@ -422,12 +432,13 @@ of \themename specific colors, which can also be redefined to your liking. \setbeamercolor{progress bar in section page}{ ... } \end{lstlisting} + + \subsection{Font Customization} -The default font for \themename is |Fira|. Yet this can be easily changed using +The default font for \themename is |Fira|. This can be easily changed using the standard font selection commands of the \textsf{fontspec} package. So if -you for example prefer the \href{http://font.ubuntu.com}{|Ubuntu|} font family -just add the following two commands after loading the \themename theme. +you prefer, for example, the \href{http://font.ubuntu.com}{|Ubuntu|} font family, just add the following two commands after loading the \themename theme. \begin{lstlisting} \setsansfont{Ubuntu} @@ -438,8 +449,8 @@ just add the following two commands after loading the \themename theme. \subsubsection{Old style figures} The regular \textsf{fontspec} mechanism for changing glyph appearance applies -also to this theme. In case you want to have old style figures in the text but -regular lined figures for math, you have to add the following to your preamble: +also to this theme. If you want to have old style figures in the text but +regular lined figures for math, you could add the following to your preamble: \begin{lstlisting} \usefonttheme{professionalfonts} % required for mathspec @@ -477,16 +488,21 @@ based on Tol's work. Use the |mlineplot| key to plot line data and |mbarplot| or horizontal |mbarplot| to plot bar charts. + + \section{Known Issues} -\subsection{Titleformats} +\subsection{Title formats} \label{sec:titleformats} -If you want to use either |smallcaps| or |allsmallcaps| be aware that not -every font supports small caps. So make sure the font you are using does. -|allsmallcaps| and |allcaps| are quite nice from an aesthetic point of view, -but they introduce some issues by using |\MakeLowercase| and |\MakeUppercase|, -respectively. +Be aware that not every font supports small caps, so the |smallcaps| or +|allsmallcaps| options may not work if you use a font other than |Fira Sans|. +In particular, the Computer Modern sans-serif typeface, which is used when +\themename is compiled with pdf\LaTeX, does not have a small-caps variant. + +The title format options |allsmallcaps| and |allcaps| are quite nice from an +aesthetic point of view, but their use of |\MakeLowercase| and +|\MakeUppercase| can cause unexpected problems. For example: \begin{itemize} \item Some commands, like |\\|, do not work inside |\MakeLowercase| and @@ -505,18 +521,26 @@ respectively. \href{https://github.com/matze/mtheme/issues/153}{\#153}) \end{itemize} +The |allsmallcaps| and |allcaps| options are safe to use if your titles contain +only alphabetic characters and do not require the expansion of any macros. + + + \subsection{Plain Frame} The |\plain| command does not work if you override the \themename color theme with the default beamer color theme |fly|. + + + \section{License} -The theme itself is licensed under a +\themename 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. +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 any presentations that you create with the theme. diff --git a/source/beamercolorthememetropolis.dtx b/source/beamercolorthememetropolis.dtx index 1d5f50e..1cfb423 100644 --- a/source/beamercolorthememetropolis.dtx +++ b/source/beamercolorthememetropolis.dtx @@ -13,7 +13,7 @@ % \ProvidesFile{beamercolorthememetropolis.dtx} %<*package> \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{beamercolorthememetropolis}[2015/12/04 Metropolis color theme] +\ProvidesPackage{beamercolorthememetropolis}[2016/02/06 Metropolis color theme] % % \documentclass{ltxdoc} % \usepackage{beamercolorthememetropolis} @@ -27,9 +27,11 @@ %<*package> % ------------------------------------------------------------------------- \fi % -% \subsection{\textsc{metropolis} color theme} +% \subsection{\themename color theme} % -% Load required packages. +% +% +% \subsubsection{Package dependencies} % \begin{macrocode} \RequirePackage{pgfopts} % \end{macrocode} @@ -39,34 +41,34 @@ % \subsubsection{Options} % % \begin{macro}{block} -% This option controls whether the blocks are filled or transparent. +% Controls whether block environments are filled or transparent. % \begin{macrocode} \pgfkeys{ /metropolis/color/block/.cd, .is choice, - transparent/.code=\@metropolis@block@transparent, - fill/.code=\@metropolis@block@fill, + transparent/.code=\metropolis@block@transparent, + fill/.code=\metropolis@block@fill, } % \end{macrocode} % \end{macro} % % \begin{macro}{colors} -% Defines whether the background shall be dark and the foreground be light or -% vice versa +% Provides the option to have a dark background and light foreground instead +% of the reverse. % \begin{macrocode} \pgfkeys{ /metropolis/color/background/.cd, .is choice, - dark/.code=\@metropolis@colors@dark, - light/.code=\@metropolis@colors@light, + dark/.code=\metropolis@colors@dark, + light/.code=\metropolis@colors@light, } % \end{macrocode} % \end{macro} % -% \begin{macro}{\@metropolis@color@setdefaults} -% Set default values for color theme options. +% \begin{macro}{\metropolis@color@setdefaults} +% Sets default values for color theme options. % \begin{macrocode} -\newcommand{\@metropolis@color@setdefaults}{ +\newcommand{\metropolis@color@setdefaults}{ \pgfkeys{/metropolis/color/.cd, background=light, block=transparent, @@ -90,17 +92,17 @@ % % \subsubsection{Base styles} % -% All colors in the \textsc{metropolis} theme are derived from the definitions -% of |normal text|, |alerted text|, and |example text|. +% All colors in \themename are derived from the definitions of |normal text|, +% |alerted text|, and |example text|. % % \begin{macrocode} -\newcommand{\@metropolis@colors@dark}{ +\newcommand{\metropolis@colors@dark}{ \setbeamercolor{normal text}{% fg=black!2, bg=mDarkTeal } } -\newcommand{\@metropolis@colors@light}{ +\newcommand{\metropolis@colors@light}{ \setbeamercolor{normal text}{% fg=mDarkTeal, bg=black!2 @@ -133,8 +135,8 @@ % \end{macrocode} % % The “primary” palette should be used for the most important navigational -% elements, and possibly of other elements. The \textsc{metropolis} theme uses -% it for frame titles and slides. +% elements, and possibly of other elements. \themename uses it for frame +% titles and slides. % % \begin{macrocode} \setbeamercolor{palette primary}{% @@ -148,7 +150,7 @@ } % \end{macrocode} % -% The \textsc{metropolis} inner or outer themes optionally display progress +% The \themename 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 @@ -177,10 +179,10 @@ % Blocks % % \begin{macrocode} -\newcommand{\@metropolis@block@transparent}{ +\newcommand{\metropolis@block@transparent}{ \setbeamercolor{block title}{use=normal text, parent=normal text} } -\newcommand{\@metropolis@block@fill}{ +\newcommand{\metropolis@block@fill}{ \setbeamercolor{block title}{% use=normal text, fg=normal text.fg, @@ -215,7 +217,7 @@ % Process package options % % \begin{macrocode} -\@metropolis@color@setdefaults +\metropolis@color@setdefaults \ProcessPgfPackageOptions{/metropolis/color} % \end{macrocode} % diff --git a/source/beamerfontthememetropolis.dtx b/source/beamerfontthememetropolis.dtx index 4c9b451..4a3a5ad 100644 --- a/source/beamerfontthememetropolis.dtx +++ b/source/beamerfontthememetropolis.dtx @@ -13,7 +13,7 @@ % \ProvidesFile{beamerfontthememetropolis.dtx} %<*package> \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{beamerfontthememetropolis}[2015/12/04 Metropolis font theme] +\ProvidesPackage{beamerfontthememetropolis}[2016/02/06 Metropolis font theme] % % \documentclass{ltxdoc} % \usepackage{beamerfontthememetropolis} @@ -26,29 +26,36 @@ % \iffalse %<*package> % ------------------------------------------------------------------------- \fi -% \subsection{\textsc{metropolis} font theme} +% +% \subsection{\themename font theme} +% +% A |beamer| font theme sets the style of the font used in the document. % % -% Load required packages. +% +% \subsubsection{Package dependencies} +% % \begin{macrocode} \RequirePackage{etoolbox} \RequirePackage{ifxetex} \RequirePackage{ifluatex} +\RequirePackage{pgfopts} % \end{macrocode} % -% \subsubsection{Load Fira font} -% If the presentation is compiled with XeLaTeX or LuaLaTeX the fontspec package -% will be loaded. +% +% +% \subsubsection{Load Fira fonts} +% +% If the presentation is compiled with Xe\LaTeX{} or Lua\LaTeX{}, the fontspec +% package is loaded and we search for the |Fira| fonts. +% % \begin{macrocode} \ifboolexpr{bool {xetex} or bool {luatex}}{ \RequirePackage[no-math]{fontspec} % \end{macrocode} % -% To simplify the check whether the |Fira| fonts are installed, a set macros is -% defined. -% % \begin{macro}{\checkfont} -% Checks if a font is installed and increases |fontsnotfound| counter if not. +% Checks if a font is installed; if not, |fontsnotfound| is increased. % \begin{macrocode} \newcounter{fontsnotfound} \newcommand{\checkfont}[1]{% @@ -64,11 +71,11 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}{\iffontexists} -% Resets the |fontsnotfound| counter and calls |\checkfont| for each font in -% the comma separated list in the first argument. +% \begin{macro}{\iffontsavailable} +% Resets the |fontsnotfound| counter and calls |\checkfont| for each font in +% the comma separated list in the first argument. % \begin{macrocode} - \newcommand{\iffontsexist}[3]{% + \newcommand{\iffontsavailable}[3]{% \setcounter{fontsnotfound}{0}% \expandafter\forcsvlist\expandafter% \checkfont\expandafter{#1}% @@ -81,19 +88,19 @@ % \end{macrocode} % \end{macro} % -% Using the previously defined macros it is tried to load the |Fira| fonts. -% First the default |Fira| name will be tried. Second the |Fira| fonts with -% the suffix OT -- used by some Linux distributions -- will be tried. If this -% also fails a warning will be displayed and the standard fonts will be used. +% We search for regular, italic, light, light italic, mono, and mono bold +% fonts under the default |Fira Sans| and |Fira Mono| names. If this fails, +% the suffix OT --- used by some Linux distributions --- will be tried. If this +% also fails, a warning will be displayed and the standard fonts will be used. % % \begin{macrocode} - \iffontsexist{Fira Sans Light,% + \iffontsavailable{Fira Sans Light,% Fira Sans Light Italic,% Fira Sans,% Fira Sans Italic}{% \setsansfont[BoldFont={Fira Sans}]{Fira Sans Light}% }{% - \iffontsexist{Fira Sans Light OT,% + \iffontsavailable{Fira Sans Light OT,% Fira Sans Light Italic OT,% Fira Sans OT,% Fira Sans Italic OT}{% @@ -104,10 +111,10 @@ } } } - \iffontsexist{Fira Mono, Fira Mono Bold}{% + \iffontsavailable{Fira Mono, Fira Mono Bold}{% \setmonofont{Fira Mono}% }{% - \iffontsexist{Fira Mono OT, Fira Mono Bold OT}{% + \iffontsavailable{Fira Mono OT, Fira Mono Bold OT}{% \setmonofont{Fira Mono OT}% }{% \PackageWarning{beamerthememetropolis}{% @@ -125,6 +132,10 @@ } % \end{macrocode} % +% This concludes the portion of the code which is only run when compiled with +% Xe\LaTeX{} or Lua\LaTeX{}. The remainder of this package applies regardless +% of the compiling engine. +% % % % \subsubsection{General font definitions} @@ -159,6 +170,235 @@ series=\normalfont} % \end{macrocode} % +% +% +% \subsubsection{Title format options} +% +% \begin{macro}{titleformat title} +% Controls the format of the title. +% \begin{macrocode} +\pgfkeys{ + /metropolis/font/titleformat title/.cd, + .is choice, + regular/.code={% + \let\metropolis@titleformat\@empty% + \setbeamerfont{title}{shape=\normalfont}% + }, + smallcaps/.code={% + \let\metropolis@titleformat\@empty% + \setbeamerfont{title}{shape=\scshape}% + }, + allsmallcaps/.code={% + \let\metropolis@titleformat\lowercase% + \setbeamerfont{title}{shape=\scshape}% + \PackageWarning{beamerthememetropolis}{% + Be aware that titleformat title=allsmallcaps can lead to problems% + } + }, + allcaps/.code={% + \let\metropolis@titleformat\uppercase% + \setbeamerfont{title}{shape=\normalfont} + \PackageWarning{beamerthememetropolis}{% + Be aware that titleformat title=allcaps can lead to problems% + } + }, +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{titleformat subtitle} +% Control the format of the subtitle. +% \begin{macrocode} +\pgfkeys{ + /metropolis/font/titleformat subtitle/.cd, + .is choice, + regular/.code={% + \let\metropolis@subtitleformat\@empty% + \setbeamerfont{subtitle}{shape=\normalfont}% + }, + smallcaps/.code={% + \let\metropolis@subtitleformat\@empty% + \setbeamerfont{subtitle}{shape=\scshape}% + }, + allsmallcaps/.code={% + \let\metropolis@subtitleformat\lowercase% + \setbeamerfont{subtitle}{shape=\scshape}% + \PackageWarning{beamerthememetropolis}{% + Be aware that titleformat subtitle=allsmallcaps can lead to problems% + } + }, + allcaps/.code={% + \let\metropolis@subtitleformat\uppercase% + \setbeamerfont{subtitle}{shape=\normalfont}% + \PackageWarning{beamerthememetropolis}{% + Be aware that titleformat subtitle=allcaps can lead to problems% + } + }, +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{titleformat section} +% Controls the format of the section title. +% \begin{macrocode} +\pgfkeys{ + /metropolis/font/titleformat section/.cd, + .is choice, + regular/.code={% + \let\metropolis@sectiontitleformat\@empty% + \setbeamerfont{section title}{shape=\normalfont}% + }, + smallcaps/.code={% + \let\metropolis@sectiontitleformat\@empty% + \setbeamerfont{section title}{shape=\scshape}% + }, + allsmallcaps/.code={% + \let\metropolis@sectiontitleformat\MakeLowercase% + \setbeamerfont{section title}{shape=\scshape}% + \PackageWarning{beamerthememetropolis}{% + Be aware that titleformat section=allsmallcaps can lead to problems% + } + }, + allcaps/.code={% + \let\metropolis@sectiontitleformat\MakeUppercase% + \setbeamerfont{section title}{shape=\normalfont}% + \PackageWarning{beamerthememetropolis}{% + Be aware that titleformat section=allcaps can lead to problems% + } + }, +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{frametitleformat} +% Control the format of the frame title. +% \begin{macrocode} +\pgfkeys{ + /metropolis/font/titleformat frame/.cd, + .is choice, + regular/.code={% + \let\metropolis@frametitleformat\@empty% + \setbeamerfont{frametitle}{shape=\normalfont}% + }, + smallcaps/.code={% + \let\metropolis@frametitleformat\@empty% + \setbeamerfont{frametitle}{shape=\scshape}% + }, + allsmallcaps/.code={% + \let\metropolis@frametitleformat\MakeLowercase% + \setbeamerfont{frametitle}{shape=\scshape}% + \PackageWarning{beamerthememetropolis}{% + Be aware that titleformat frame=allsmallcaps can lead to problems% + } + }, + allcaps/.code={% + \let\metropolis@frametitleformat\MakeUppercase% + \setbeamerfont{frametitle}{shape=\normalfont} + \PackageWarning{beamerthememetropolis}{% + Be aware that titleformat frame=allcaps can lead to problems% + } + }, +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{titleformat aliases} +% Allows |titleformat title| et al. to be used in the |\usetheme| +% declaration, where \LaTeX{} automatically removes all spaces. +% \begin{macrocode} +\pgfkeys{ + /metropolis/font/.cd, + titleformattitle/.code=\pgfkeysalso{titleformat title=#1}, + titleformatsubtitle/.code=\pgfkeysalso{titleformat subtitle=#1}, + titleformatsection/.code=\pgfkeysalso{titleformat section=#1}, + titleformatframe/.code=\pgfkeysalso{titleformat frame=#1}, +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\metropolis@font@setdefaults} +% Sets default values for font theme options. +% \begin{macrocode} +\newcommand{\metropolis@font@setdefaults}{ + \pgfkeys{/metropolis/font/.cd, + titleformat title=regular, + titleformat subtitle=regular, + titleformat section=regular, + titleformat frame=regular, + } +} +% \end{macrocode} +% \end{macro} +% +% We first define hooks to change the case format of the titles. +% +% \begin{macrocode} +\def\metropolis@titleformat#1{#1} +\def\metropolis@subtitleformat#1{#1} +\def\metropolis@sectiontitleformat#1{#1} +\def\metropolis@frametitleformat#1{#1} +% \end{macrocode} +% +% To make the uppercase and lowercase macros work in the title, subtitle, etc., +% we have to patch the appropriate |beamer| commands that set their values. +% This solution was suggested by Enrico Gregorio in an answer to +% \href{http://tex.stackexchange.com/questions/112526/}{this StackExchange +% question}. +% +% \begin{macrocode} +\patchcmd{\beamer@title}% + {\def\inserttitle{#2}}% + {\def\inserttitle{\metropolis@titleformat{#2}}}% + {}% + {\PackageError{beamerfontthememetropolis}{Patching title failed}} +\patchcmd{\beamer@subtitle}% + {\def\insertsubtitle{#2}}% + {\def\insertsubtitle{\metropolis@subtitleformat{#2}}}% + {}% + {\PackageError{beamerfontthememetropolis}{Patching subtitle failed}} +\patchcmd{\sectionentry} + {\def\insertsectionhead{#2}} + {\def\insertsectionhead{\metropolis@sectiontitleformat{#2}}} + {} + {\PackageError{beamerfontthememetropolis}{Patching section title failed}} +\patchcmd{\beamer@section} + {\def\insertsectionhead{\hyperlink{Navigation\the\c@page}{#1}}} + {\def\insertsectionhead{\hyperlink{Navigation\the\c@page}{% + \metropolis@sectiontitleformat{#1}}}} + {} + {\PackageError{beamerfontthememetropolis}{Patching section title failed}} +% \end{macrocode} +% +% Similarly, to make the |\MakeLowercase| and |\MakeUppercase| macros work in +% the frame title we have to patch |\beamer@@frametitle|. +% +% \begin{macrocode} +\patchcmd{\beamer@@frametitle} + {\beamer@ifempty{#2}{}{% + \gdef\insertframetitle{{#2\ifnum\beamer@autobreakcount>0\relax{}\space% + \usebeamertemplate*{frametitle continuation}\fi}}% + \gdef\beamer@frametitle{#2}% + \gdef\beamer@shortframetitle{#1}% + }} + {\beamer@ifempty{#2}{}{% + \gdef\insertframetitle{{\metropolis@frametitleformat{#2}\ifnum% + \beamer@autobreakcount>0\relax{}\space% + \usebeamertemplate*{frametitle continuation}\fi}}% + \gdef\beamer@frametitle{#2}% + \gdef\beamer@shortframetitle{#1}% + }} + {} + {\PackageError{beamerfontthememetropolis}{Patching frame title failed}} +% \end{macrocode} +% +% +% +% \subsubsection{Process package options} +% +% \begin{macrocode} +\metropolis@font@setdefaults +\ProcessPgfPackageOptions{/metropolis/font} +% \end{macrocode} % \iffalse % % \fi diff --git a/source/beamerinnerthememetropolis.dtx b/source/beamerinnerthememetropolis.dtx index 21446c3..91a6a36 100644 --- a/source/beamerinnerthememetropolis.dtx +++ b/source/beamerinnerthememetropolis.dtx @@ -13,7 +13,7 @@ % \ProvidesFile{beamerinnerthememetropolis.dtx} %<*package> \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{beamerinnerthememetropolis}[2015/12/04 Metropolis inner theme] +\ProvidesPackage{beamerinnerthememetropolis}[2016/02/06 Metropolis inner theme] % % \documentclass{ltxdoc} % \usepackage{beamerinnerthememetropolis} @@ -27,7 +27,7 @@ %<*package> % ------------------------------------------------------------------------- \fi % -% \subsection{\textsc{metropolis} inner theme} +% \subsection{\themename inner theme} % % A |beamer| inner theme dictates the style of the frame elements traditionally % set in the ``body'' of each slide. These include: @@ -40,7 +40,10 @@ % \item footnotes and plain text. % \end{itemize} % -% Load required packages. +% +% +% \subsubsection{Package dependencies} +% % \begin{macrocode} \RequirePackage{etoolbox} \RequirePackage{calc} @@ -58,104 +61,8 @@ \pgfkeys{ /metropolis/inner/block/.cd, .is choice, - transparent/.code=\setlength{\@metropolis@blockskip}{0ex}, - fill/.code=\setlength{\@metropolis@blockskip}{1ex}, -} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{titleformat title} -% Control the titleformat of the title -% \begin{macrocode} -\pgfkeys{ - /metropolis/inner/titleformat title/.cd, - .is choice, - regular/.code={% - \let\@metropolis@titleformat\@empty% - \setbeamerfont{title}{shape=\normalfont}% - }, - smallcaps/.code={% - \let\@metropolis@titleformat\@empty% - \setbeamerfont{title}{shape=\scshape}% - }, - allsmallcaps/.code={% - \let\@metropolis@titleformat\MakeLowercase% - \setbeamerfont{title}{shape=\scshape}% - \PackageWarning{beamerthememetropolis}{% - Be aware that titleformat title=allsmallcaps can lead to problems% - } - }, - allcaps/.code={% - \let\@metropolis@titleformat\MakeUppercase% - \setbeamerfont{title}{shape=\normalfont} - \PackageWarning{beamerthememetropolis}{% - Be aware that titleformat title=allcaps can lead to problems% - } - }, -} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{titleformat subtitle} -% Control the titleformat of the subtitle -% \begin{macrocode} -\pgfkeys{ - /metropolis/inner/titleformat subtitle/.cd, - .is choice, - regular/.code={% - \let\@metropolis@subtitleformat\@empty% - \setbeamerfont{subtitle}{shape=\normalfont}% - }, - smallcaps/.code={% - \let\@metropolis@subtitleformat\@empty% - \setbeamerfont{subtitle}{shape=\scshape}% - }, - allsmallcaps/.code={% - \let\@metropolis@subtitleformat\MakeLowercase% - \setbeamerfont{subtitle}{shape=\scshape}% - \PackageWarning{beamerthememetropolis}{% - Be aware that titleformat subtitle=allsmallcaps can lead to problems% - } - }, - allcaps/.code={% - \let\@metropolis@subtitleformat\MakeUppercase% - \setbeamerfont{subtitle}{shape=\normalfont}% - \PackageWarning{beamerthememetropolis}{% - Be aware that titleformat subtitle=allcaps can lead to problems% - } - }, -} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{titleformat section} -% Control the titleformat of the section title -% \begin{macrocode} -\pgfkeys{ - /metropolis/inner/titleformat section/.cd, - .is choice, - regular/.code={% - \let\@metropolis@sectiontitleformat\@empty% - \setbeamerfont{section title}{shape=\normalfont}% - }, - smallcaps/.code={% - \let\@metropolis@sectiontitleformat\@empty% - \setbeamerfont{section title}{shape=\scshape}% - }, - allsmallcaps/.code={% - \let\@metropolis@sectiontitleformat\MakeLowercase% - \setbeamerfont{section title}{shape=\scshape}% - \PackageWarning{beamerthememetropolis}{% - Be aware that titleformat section=allsmallcaps can lead to problems% - } - }, - allcaps/.code={% - \let\@metropolis@sectiontitleformat\MakeUppercase% - \setbeamerfont{section title}{shape=\normalfont}% - \PackageWarning{beamerthememetropolis}{% - Be aware that titleformat section=allcaps can lead to problems% - } - }, + transparent/.code=\setlength{\metropolis@blockskip}{0ex}, + fill/.code=\setlength{\metropolis@blockskip}{1ex}, } % \end{macrocode} % \end{macro} @@ -166,23 +73,20 @@ \pgfkeys{ /metropolis/inner/sectionpage/.cd, .is choice, - none/.code=\@metropolis@sectionpage@none, - simple/.code=\@metropolis@sectionpage@simple, - progressbar/.code=\@metropolis@sectionpage@progressbar, + none/.code=\metropolis@sectionpage@none, + simple/.code=\metropolis@sectionpage@simple, + progressbar/.code=\metropolis@sectionpage@progressbar, } % \end{macrocode} % \end{macro} % -% \begin{macro}{\@metropolis@inner@setdefaults} +% \begin{macro}{\metropolis@inner@setdefaults} % Set default values for inner theme options. % \begin{macrocode} -\newcommand{\@metropolis@inner@setdefaults}{ +\newcommand{\metropolis@inner@setdefaults}{ \pgfkeys{/metropolis/inner/.cd, sectionpage=progressbar, block=transparent, - titleformat title=regular, - titleformat subtitle=regular, - titleformat section=regular, } } % \end{macrocode} @@ -192,35 +96,6 @@ % % \subsubsection{Title page} % -% \begin{macro}{\@metropolis@titleformat} -% Define hooks to change the case format of the titles. -% \begin{macrocode} -\def\@metropolis@titleformat#1{#1} -\def\@metropolis@subtitleformat#1{#1} -\def\@metropolis@sectiontitleformat#1{#1} -% \end{macrocode} -% \end{macro} -% -% To make the |\MakeLowercase| and |\MakeUppercase| macros work in the -% sectiontitle we have to patch |\sectionentry| and |\beamer@section|. This -% solution was suggested by Enrico Gregorio in an answer to -% \href{http://tex.stackexchange.com/questions/112526/}{this StackExchange -% question}. -% -% \begin{macrocode} -\patchcmd{\sectionentry} - {\def\insertsectionhead{#2}} - {\def\insertsectionhead{\@metropolis@sectiontitleformat{#2}}} - {} - {\PackageError{beamerinnerthememetropolis}{Patching section title failed}} -\patchcmd{\beamer@section} - {\def\insertsectionhead{\hyperlink{Navigation\the\c@page}{#1}}} - {\def\insertsectionhead{\hyperlink{Navigation\the\c@page}{% - \@metropolis@sectiontitleformat{#1}}}} - {} - {\PackageError{beamerinnerthememetropolis}{Patching section title failed}} -% \end{macrocode} -% % \begin{macro}{title page} % Template for the title page. Each element is only typset if it is defined % by the user. If |\subtitle| is empty, for example, it won't leave a blank @@ -298,7 +173,7 @@ \setbeamertemplate{title}{ \raggedright% \linespread{1.0}% - \@metropolis@titleformat{\inserttitle}% + \inserttitle% \par% \vspace*{0.5em} } @@ -309,7 +184,7 @@ % Set the subtitle on the title page. % \begin{macrocode} \setbeamertemplate{subtitle}{ - \@metropolis@subtitleformat{\insertsubtitle}% + \insertsubtitle% \par% \vspace*{0.5em} } @@ -371,7 +246,7 @@ % Template for the section title slide at the beginning of each section. % % \begin{macrocode} -\newcommand{\@metropolis@sectionpage@none}{ +\newcommand{\metropolis@sectionpage@none}{ \AtBeginSection{ % intenionally empty } @@ -382,7 +257,7 @@ \usebeamerfont{section title} \insertsectionhead\\ } -\newcommand{\@metropolis@sectionpage@simple}{ +\newcommand{\metropolis@sectionpage@simple}{ \setbeamertemplate{section page}[simple] \AtBeginSection{ \ifbeamer@inframe @@ -402,7 +277,7 @@ \end{minipage} \par } -\newcommand{\@metropolis@sectionpage@progressbar}{ +\newcommand{\metropolis@sectionpage@progressbar}{ \setbeamertemplate{section page}[progressbar] \AtBeginSection{ \ifbeamer@inframe @@ -456,23 +331,23 @@ % Regular block environment % % \begin{macrocode} -\newlength{\@metropolis@blockskip} +\newlength{\metropolis@blockskip} \setbeamertemplate{block begin}{% - \setlength{\parskip}{\@metropolis@parskip} + \setlength{\parskip}{\metropolis@parskip} \vspace*{1ex} \begin{beamercolorbox}[% ht=2.4ex, dp=1ex, - leftskip=\@metropolis@blockskip, - rightskip=\@metropolis@blockskip]{block title} + leftskip=\metropolis@blockskip, + rightskip=\metropolis@blockskip]{block title} \usebeamerfont*{block title}\insertblocktitle% \end{beamercolorbox}% \vspace*{-1pt} \usebeamerfont{block body}% \begin{beamercolorbox}[% dp=1ex, - leftskip=\@metropolis@blockskip, - rightskip=\@metropolis@blockskip, + leftskip=\metropolis@blockskip, + rightskip=\metropolis@blockskip, vmode]{block body}% } \setbeamertemplate{block end}{% @@ -485,21 +360,21 @@ % % \begin{macrocode} \setbeamertemplate{block alerted begin}{% - \setlength{\parskip}{\@metropolis@parskip} + \setlength{\parskip}{\metropolis@parskip} \vspace*{1ex} \begin{beamercolorbox}[% ht=2.4ex, dp=1ex, - leftskip=\@metropolis@blockskip, - rightskip=\@metropolis@blockskip]{block title alerted} + leftskip=\metropolis@blockskip, + rightskip=\metropolis@blockskip]{block title alerted} \usebeamerfont*{block title alerted}\insertblocktitle% \end{beamercolorbox}% \vspace*{-1pt} \usebeamerfont{block body alerted}% \begin{beamercolorbox}[% dp=1ex, - leftskip=\@metropolis@blockskip, - rightskip=\@metropolis@blockskip, + leftskip=\metropolis@blockskip, + rightskip=\metropolis@blockskip, vmode]{block body alerted}% } \setbeamertemplate{block alerted end}{% @@ -512,21 +387,21 @@ % % \begin{macrocode} \setbeamertemplate{block example begin}{% - \setlength{\parskip}{\@metropolis@parskip} + \setlength{\parskip}{\metropolis@parskip} \vspace*{1ex} \begin{beamercolorbox}[% ht=2.4ex, dp=1ex, - leftskip=\@metropolis@blockskip, - rightskip=\@metropolis@blockskip]{block title example} + leftskip=\metropolis@blockskip, + rightskip=\metropolis@blockskip]{block title example} \usebeamerfont*{block title example}\insertblocktitle% \end{beamercolorbox}% \vspace*{-1pt} \usebeamerfont{block body example}% \begin{beamercolorbox}[% dp=1ex, - leftskip=\@metropolis@blockskip, - rightskip=\@metropolis@blockskip, + leftskip=\metropolis@blockskip, + rightskip=\metropolis@blockskip, vmode]{block body example}% } \setbeamertemplate{block example end}{% @@ -561,9 +436,9 @@ % \subsubsection{Text and spacing settings} % % \begin{macrocode} -\newlength{\@metropolis@parskip} -\setlength{\@metropolis@parskip}{0.5em} -\setlength{\parskip}{\@metropolis@parskip} +\newlength{\metropolis@parskip} +\setlength{\metropolis@parskip}{0.5em} +\setlength{\parskip}{\metropolis@parskip} \linespread{1.15} % \end{macrocode} % @@ -587,7 +462,7 @@ % Process package options % % \begin{macrocode} -\@metropolis@inner@setdefaults +\metropolis@inner@setdefaults \ProcessPgfPackageOptions{/metropolis/inner} % \end{macrocode} % diff --git a/source/beamerouterthememetropolis.dtx b/source/beamerouterthememetropolis.dtx index 2b3df9d..8bdf4db 100644 --- a/source/beamerouterthememetropolis.dtx +++ b/source/beamerouterthememetropolis.dtx @@ -13,7 +13,7 @@ % \ProvidesFile{beamerouterthememetropolis.dtx} %<*package> \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{beamerouterthememetropolis}[2015/12/04 Metropolis outer theme] +\ProvidesPackage{beamerouterthememetropolis}[2016/02/06 Metropolis outer theme] % % \documentclass{ltxdoc} % \usepackage{beamerouterthememetropolis} @@ -27,12 +27,15 @@ %<*package> % ------------------------------------------------------------------------- \fi % -% \subsection{\textsc{metropolis} outer theme} +% \subsection{\themename 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. % -% Load required packages. +% +% +% \subsubsection{Package dependencies} +% % \begin{macrocode} \RequirePackage{etoolbox} \RequirePackage{calc} @@ -44,7 +47,7 @@ % \subsubsection{Options} % % \begin{macro}{numbering} -% This option controls the page numbering. +% Adds slide numbers to the bottom right of each slide. % \begin{macrocode} \pgfkeys{ /metropolis/outer/numbering/.cd, @@ -57,7 +60,7 @@ % \end{macro} % % \begin{macro}{progressbar} -% This option controls the progressbar. +% Adds a progress bar to the top, bottom, or frametitle of each slide. % \begin{macrocode} \pgfkeys{ /metropolis/outer/progressbar/.cd, @@ -86,58 +89,13 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}{frametitleformat} -% Control the titleformat of the frame title +% \begin{macro}{\metropolis@outer@setdefaults} +% Sets default values for outer theme options. % \begin{macrocode} -\pgfkeys{ - /metropolis/outer/titleformat frame/.cd, - .is choice, - regular/.code={% - \let\@metropolis@frametitleformat\@empty% - \setbeamerfont{frametitle}{shape=\normalfont}% - \renewcommand{\@metropolis@frametitlestrut}{% - \vphantom{ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz}% - } - }, - smallcaps/.code={% - \let\@metropolis@frametitleformat\@empty% - \setbeamerfont{frametitle}{shape=\scshape}% - \renewcommand{\@metropolis@frametitlestrut}{% - \vphantom{ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz}% - } - }, - allsmallcaps/.code={% - \let\@metropolis@frametitleformat\MakeLowercase% - \setbeamerfont{frametitle}{shape=\scshape}% - \renewcommand{\@metropolis@frametitlestrut}{% - \vphantom{abcdefghijklmnopqrstuvwxyz}% - } - \PackageWarning{beamerthememetropolis}{% - Be aware that titleformat frame=allsmallcaps can lead to problems% - } - }, - allcaps/.code={% - \let\@metropolis@frametitleformat\MakeUppercase% - \setbeamerfont{frametitle}{shape=\normalfont} - \renewcommand{\@metropolis@frametitlestrut}{% - \vphantom{ABCDEFGHIJKLMNOPQRSTUVWXYZ}% - } - \PackageWarning{beamerthememetropolis}{% - Be aware that titleformat frame=allcaps can lead to problems% - } - }, -} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\@metropolis@outer@setdefaults} -% Set default values for outer theme options. -% \begin{macrocode} -\newcommand{\@metropolis@outer@setdefaults}{ +\newcommand{\metropolis@outer@setdefaults}{ \pgfkeys{/metropolis/outer/.cd, numbering=counter, progressbar=none, - titleformat frame=regular, } } % \end{macrocode}% @@ -148,15 +106,15 @@ % \subsubsection{Head and footline} % % All good |beamer| presentations should already remove the navigation symbols, -% but \textsc{metropolis} removes them automatically (just in case). +% but \themename removes them automatically (just in case). % % \begin{macrocode} \setbeamertemplate{navigation symbols}{} % \end{macrocode} % -% Templates for the frame number. Can be omitted, shown or displayed as a -% fraction of the total frames. -% +% \begin{macro}{frame numbering} +% Templates for the frame number. Can be omitted, shown or displayed as a +% fraction of the total frames. % \begin{macrocode} \defbeamertemplate{frame numbering}{none}{} \defbeamertemplate{frame numbering}{counter}{\insertframenumber} @@ -164,7 +122,11 @@ \insertframenumber/\inserttotalframenumber } % \end{macrocode} +% \end{macro} % +% \begin{macro}{headline} +% \begin{macro}{footline} +% Templates for the head- and footline at the top and bottom of each frame. % \begin{macrocode} \defbeamertemplate{headline}{plain}{} \defbeamertemplate{footline}{plain}{% @@ -175,68 +137,36 @@ \end{beamercolorbox}% } % \end{macrocode} +% \end{macro} +% \end{macro} % % % % \subsubsection{Frametitle} % -% \begin{macro}{\@metropolis@frametitleformat} -% Define a hook to change the case format of the frame title. -% \begin{macrocode} -\def\@metropolis@frametitleformat#1{#1} -% \end{macrocode} -% \end{macro} -% -% To make the |\MakeLowercase| and |\MakeUppercase| macros work in the -% frame title we have to patch |\beamer@@frametitle|. This solution was -% suggested by Enrico Gregorio in an answer to -% \href{http://tex.stackexchange.com/questions/112526/}{this StackExchange -% question}. -% -% \begin{macrocode} -\patchcmd{\beamer@@frametitle} - {\beamer@ifempty{#2}{}{% - \gdef\insertframetitle{{#2\ifnum\beamer@autobreakcount>0\relax{}\space% - \usebeamertemplate*{frametitle continuation}\fi}}% - \gdef\beamer@frametitle{#2}% - \gdef\beamer@shortframetitle{#1}% - }} - {\beamer@ifempty{#2}{}{% - \gdef\insertframetitle{{\@metropolis@frametitleformat{#2}\ifnum% - \beamer@autobreakcount>0\relax{}\space% - \usebeamertemplate*{frametitle continuation}\fi}}% - \gdef\beamer@frametitle{#2}% - \gdef\beamer@shortframetitle{#1}% - }} - {} - {\PackageError{beamerouterthememetropolis}{Patching frame title failed}} -% \end{macrocode} -% % \begin{macro}{frametitle} -% -% Templates for the frame title, which is optionally underlined with a -% progress bar. -% +% Templates for the frame title, which is optionally underlined with a +% progress bar. % \begin{macrocode} -\newlength{\@metropolis@frametitlestrut} +\newcommand{\metropolis@frametitlestrut}{ + \vphantom{ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz()}% +} \defbeamertemplate{frametitle}{plain}{% \nointerlineskip% \begin{beamercolorbox}[% wd=\paperwidth,% sep=1.5ex,% ]{frametitle}% - \@metropolis@frametitlestrut\insertframetitle\@metropolis@frametitlestrut% + \metropolis@frametitlestrut\insertframetitle\metropolis@frametitlestrut% \end{beamercolorbox}% } % \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|. -% +% 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} \newlength{\metropolis@progressinheadfoot} \setbeamertemplate{progress bar in head/foot}{ @@ -254,10 +184,12 @@ % \end{macrocode} % \end{macro} % -% Process package options +% +% +% \subsubsection{Process package options} % % \begin{macrocode} -\@metropolis@outer@setdefaults +\metropolis@outer@setdefaults \ProcessPgfPackageOptions{/metropolis/outer} % \end{macrocode} % diff --git a/source/beamerthememetropolis.dtx b/source/beamerthememetropolis.dtx index 0cec598..3f2800f 100644 --- a/source/beamerthememetropolis.dtx +++ b/source/beamerthememetropolis.dtx @@ -13,7 +13,7 @@ % \ProvidesFile{beamerthememetropolis.dtx} %<*package> \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{beamerthememetropolis}[2015/12/04 Metropolis Beamer theme] +\ProvidesPackage{beamerthememetropolis}[2016/02/06 Metropolis Beamer theme] % % \documentclass{ltxdoc} % \usepackage{beamerthememetropolis} @@ -27,28 +27,26 @@ %<*package> % ------------------------------------------------------------------------- \fi % -% \subsection{\textsc{metropolis} main theme} +% \subsection{\themename parent 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 +% \themename theme and route the theme options accordingly. It also % provides some custom commands and environments for the user. % -% Load the required packages. +% +% +% \subsubsection{Package dependencies} +% % \begin{macrocode} \RequirePackage{etoolbox} \RequirePackage{pgfopts} % \end{macrocode} % +% +% % \subsubsection{Options} % -% \begin{macro}{\metroset} -% First of all we define a macro for the user to set options. -% \begin{macrocode} -\newcommand{\metroset}[1]{\pgfkeys{/metropolis/.cd,#1}} -% \end{macrocode} -% \end{macro} -% -% Then we need to pass the unknown options to the sub-packages. +% Most options are passed off to the component sub-packages. % % \begin{macrocode} \pgfkeys{/metropolis/.cd, @@ -56,10 +54,12 @@ /metropolis/inner, /metropolis/outer, /metropolis/color, + /metropolis/font, }, % \end{macrocode} % -% We have to forwarded keys that affect multiple sub-packages manually. +% Currently, the |block| option affects two subthemes and has to be handled +% separately. % % \begin{macrocode} block/.code=\pgfkeysalso{ @@ -70,28 +70,28 @@ % \end{macrocode} % % \begin{macro}{titleformat plain} -% Control the titleformat of the plain title +% Controls the formatting of the text on standout ``plain'' frames. % \begin{macrocode} \pgfkeys{ /metropolis/titleformat plain/.cd, .is choice, regular/.code={% - \let\@metropolis@plaintitleformat\@empty% + \let\metropolis@plaintitleformat\@empty% \setbeamerfont{plain title}{shape=\normalfont}% }, smallcaps/.code={% - \let\@metropolis@plaintitleformat\@empty% + \let\metropolis@plaintitleformat\@empty% \setbeamerfont{plain title}{shape=\scshape}% }, allsmallcaps/.code={% - \let\@metropolis@plaintitleformat\MakeLowercase% + \let\metropolis@plaintitleformat\MakeLowercase% \setbeamerfont{plain title}{shape=\scshape}% \PackageWarning{beamerthememetropolis}{% Be aware that titleformat plain=allsmallcaps can lead to problems% } }, allcaps/.code={% - \let\@metropolis@plaintitleformat\MakeUppercase% + \let\metropolis@plaintitleformat\MakeUppercase% \setbeamerfont{plain title}{shape=\normalfont}% \PackageWarning{beamerthememetropolis}{% Be aware that titleformat plain=allcaps can lead to problems% @@ -102,14 +102,15 @@ % \end{macro} % % \begin{macro}{titleformat} -% Control the titleformat of every title type together +% Sets a standard format for titles, subtitles, section titles, frame +% titles, and the text on standout ``plain'' frames. % \begin{macrocode} \pgfkeys{ /metropolis/titleformat/.code=\pgfkeysalso{ - inner/titleformat title=#1, - inner/titleformat subtitle=#1, - inner/titleformat section=#1, - outer/titleformat frame=#1, + font/titleformat title=#1, + font/titleformat subtitle=#1, + font/titleformat section=#1, + font/titleformat frame=#1, titleformat plain=#1, } } @@ -133,7 +134,7 @@ % Set default values for options. % % \begin{macrocode} -\newcommand{\@metropolis@setdefaults}{ +\newcommand{\metropolis@setdefaults}{ \pgfkeys{/metropolis/.cd, titleformat plain=regular, } @@ -146,6 +147,7 @@ % % Having processed the options, we can now load the component sub-packages of % the theme. +% % \begin{macrocode} \useinnertheme{metropolis} \useoutertheme{metropolis} @@ -167,20 +169,22 @@ % % \subsubsection{Custom commands} % -% We define custom commands in this package as their proper usage may depend +% The parent theme defines custom commands as their proper usage may depend % on multiple sub-packages. % -% \begin{macro}{\@metropolis@plaintitleformat} -% Define a hook to change the case format of the plain title. +% \begin{macro}{\metroset} +% Allows the user to change options midway through a presentation. % \begin{macrocode} -\def\@metropolis@plaintitleformat#1{#1} +\newcommand{\metroset}[1]{\pgfkeys{/metropolis/.cd,#1}} % \end{macrocode} % \end{macro} % % \begin{macro}{\plain} % Creates a plain frame with dark background, suitable for displaying images -% or a few words. +% or a few words. The format of the text can be set with the +% |titleformat plain| option. % \begin{macrocode} +\def\metropolis@plaintitleformat#1{#1} \newcommand{\plain}[2][]{% \begingroup \setbeamercolor{background canvas}{ @@ -191,7 +195,7 @@ \begin{center} \usebeamercolor[fg]{palette primary} \usebeamerfont{plain title} - \@metropolis@plaintitleformat{#2} + \metropolis@plaintitleformat{#2} \end{center} \end{frame} \endgroup @@ -205,10 +209,12 @@ % \end{macrocode} % \end{macro} % -% Process package options +% +% +% \subsubsection{Process package options} % % \begin{macrocode} -\@metropolis@setdefaults +\metropolis@setdefaults \ProcessPgfOptions{/metropolis} % \end{macrocode} %