diff --git a/doc/metropolistheme.dtx b/doc/metropolistheme.dtx index 70afbad..9a63639 100644 --- a/doc/metropolistheme.dtx +++ b/doc/metropolistheme.dtx @@ -357,10 +357,6 @@ The list of options is structured as shown in the following example. \subsubsection{Inner theme} -\DescribeOption{block}{transparent, fill}{transparent}{ - Optionally adds a light grey background to block environments like |theorem| - and |example|. -} \DescribeOption{sectionpage}{none, simple, progressbar}{progressbar}{ Adds a slide at the start of each section (|simple|) with an optional thin @@ -416,6 +412,7 @@ terms of three beamer colors: \item |alerted text| (colored fg, should be visible against dark or light) \item |example text| (colored fg, should be visible against dark or light) \end{itemize} + An easy way to customize the theme is to redefine these colors using \begin{lstlisting} diff --git a/source/beamercolorthememetropolis.dtx b/source/beamercolorthememetropolis.dtx index 1cfb423..d1f3232 100644 --- a/source/beamercolorthememetropolis.dtx +++ b/source/beamercolorthememetropolis.dtx @@ -41,7 +41,8 @@ % \subsubsection{Options} % % \begin{macro}{block} -% Controls whether block environments are filled or transparent. +% Optionally adds a light grey background to block environments like +% |theorem| and |example|. % \begin{macrocode} \pgfkeys{ /metropolis/color/block/.cd, @@ -176,11 +177,22 @@ } % \end{macrocode} % -% Blocks +% Block environments such as |theorem| and |example| have no background color +% by default. The option |block=fill| sets a background color based on the +% background and foreground of |normal text|. The option |block=transparent| +% reverts the block environments to an empty background, which can be useful +% if changing colors mid-presentation. % % \begin{macrocode} \newcommand{\metropolis@block@transparent}{ - \setbeamercolor{block title}{use=normal text, parent=normal text} + \setbeamercolor{block title}{% + use=normal text, + fg=normal text.fg, + bg= + } + \setbeamercolor{block body}{ + bg= + } } \newcommand{\metropolis@block@fill}{ \setbeamercolor{block title}{% @@ -188,6 +200,10 @@ fg=normal text.fg, bg=normal text.bg!80!fg } + \setbeamercolor{block body}{ + use={block title, normal text}, + bg=block title.bg!50!normal text.bg + } } \setbeamercolor{block title alerted}{% use={block title, alerted text}, @@ -201,10 +217,6 @@ } \setbeamercolor{block body alerted}{use=block body, parent=block body} \setbeamercolor{block body example}{use=block body, parent=block body} -\setbeamercolor{block body}{ - use={block title, normal text}, - bg=block title.bg!50!normal text.bg -} % \end{macrocode} % % Footnotes diff --git a/source/beamerinnerthememetropolis.dtx b/source/beamerinnerthememetropolis.dtx index 91a6a36..4615043 100644 --- a/source/beamerinnerthememetropolis.dtx +++ b/source/beamerinnerthememetropolis.dtx @@ -55,18 +55,6 @@ % % \subsubsection{Options} % -% \begin{macro}{block} -% This option controls the block style. -% \begin{macrocode} -\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}{sectionpage} % The |sectionpage| option defines the behaviour of the sectionpage. % \begin{macrocode} @@ -86,7 +74,6 @@ \newcommand{\metropolis@inner@setdefaults}{ \pgfkeys{/metropolis/inner/.cd, sectionpage=progressbar, - block=transparent, } } % \end{macrocode} @@ -328,87 +315,70 @@ % % \subsubsection{Block environments} % -% Regular block environment +% +% \begin{macro}{block} +% \begin{macro}{block alerted} +% \begin{macro}{block example} +% +% The three different block environments differ only in their colours. +% Rather than repeat the essentially the same template three times, we use +% the auxiliary macro |\metropolis@block| to define all three templates. % % \begin{macrocode} -\newlength{\metropolis@blockskip} -\setbeamertemplate{block begin}{% +\newlength{\metropolis@blocktitleskip} +\newlength{\metropolis@blockbodyskip} +\newcommand{\metropolis@block}[1]{ \setlength{\parskip}{\metropolis@parskip} +% \end{macrocode} +% +% If a background color is defined for the block title or body, a little +% bit of padding is added to the corresponding box. +% +% \begin{macrocode} + \ifbeamercolorempty[bg]{block title} + {\setlength{\metropolis@blocktitleskip}{0ex}} + {\setlength{\metropolis@blocktitleskip}{1ex}} + \ifbeamercolorempty[bg]{block body} + {\setlength{\metropolis@blockbodyskip}{0ex}} + {\setlength{\metropolis@blockbodyskip}{1ex}} \vspace*{1ex} +% \end{macrocode} +% +% Each block environment consists of two (possibly coloured) beamer boxes: +% one for the title and one for the body. +% +% \begin{macrocode} \begin{beamercolorbox}[% ht=2.4ex, dp=1ex, - leftskip=\metropolis@blockskip, - rightskip=\metropolis@blockskip]{block title} - \usebeamerfont*{block title}\insertblocktitle% + leftskip=\metropolis@blocktitleskip, + rightskip=\metropolis@blocktitleskip]{block title#1} + \usebeamerfont*{block title#1}\insertblocktitle% \end{beamercolorbox}% - \vspace*{-1pt} - \usebeamerfont{block body}% + \nointerlineskip% + \usebeamerfont{block body#1}% \begin{beamercolorbox}[% dp=1ex, - leftskip=\metropolis@blockskip, - rightskip=\metropolis@blockskip, - vmode]{block body}% -} -\setbeamertemplate{block end}{% - \end{beamercolorbox} - \vspace*{0.2ex} + leftskip=\metropolis@blockbodyskip, + rightskip=\metropolis@blockbodyskip, + vmode]{block body#1}% } % \end{macrocode} % -% Alerted block environment +% This concludes the auxiliary macro |\metropolis@block|. Next, +% we define the block beamer templates using this macro. % % \begin{macrocode} -\setbeamertemplate{block alerted begin}{% - \setlength{\parskip}{\metropolis@parskip} - \vspace*{1ex} - \begin{beamercolorbox}[% - ht=2.4ex, - dp=1ex, - 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, - vmode]{block body alerted}% -} -\setbeamertemplate{block alerted end}{% - \end{beamercolorbox} - \vspace*{0.2ex} -} -% \end{macrocode} -% -% Example block environment -% -% \begin{macrocode} -\setbeamertemplate{block example begin}{% - \setlength{\parskip}{\metropolis@parskip} - \vspace*{1ex} - \begin{beamercolorbox}[% - ht=2.4ex, - dp=1ex, - 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, - vmode]{block body example}% -} -\setbeamertemplate{block example end}{% - \end{beamercolorbox} - \vspace*{0.2ex} -} +\setbeamertemplate{block begin}{\metropolis@block{}} +\setbeamertemplate{block alerted begin}{\metropolis@block{ alerted}} +\setbeamertemplate{block example begin}{\metropolis@block{ example}} +\setbeamertemplate{block end}{\end{beamercolorbox}\vspace*{0.2ex}} +\setbeamertemplate{block alerted end}{\end{beamercolorbox}\vspace*{0.2ex}} +\setbeamertemplate{block example end}{\end{beamercolorbox}\vspace*{0.2ex}} % \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} % % % diff --git a/source/beamerthememetropolis.dtx b/source/beamerthememetropolis.dtx index 3f2800f..db204cc 100644 --- a/source/beamerthememetropolis.dtx +++ b/source/beamerthememetropolis.dtx @@ -55,17 +55,7 @@ /metropolis/outer, /metropolis/color, /metropolis/font, - }, -% \end{macrocode} -% -% Currently, the |block| option affects two subthemes and has to be handled -% separately. -% -% \begin{macrocode} - block/.code=\pgfkeysalso{ - inner/block=#1, - color/block=#1, - }, + } } % \end{macrocode} %