diff --git a/demo/demo.pdf b/demo/demo.pdf index 4a05887a..079597aa 100644 Binary files a/demo/demo.pdf and b/demo/demo.pdf differ diff --git a/demo/demo.tex b/demo/demo.tex index ac5e8e49..e716e0dd 100644 --- a/demo/demo.tex +++ b/demo/demo.tex @@ -64,6 +64,22 @@ \section{Elements} The theme provides sensible defaults to \emph{emphasize} text, \alert{accent} parts or show \textbf{bold} results. \end{frame} + +\begin{frame}{Font feature test} + \begin{itemize} + \item Regular + \item \textit{Italic} + \item \textsc{SmallCaps} + \item \textbf{Bold} + \item \textbf{\textit{Bold Italic}} + \item \textbf{\textsc{Bold SmallCaps}} + \item \texttt{Monospace} + \item \texttt{\textit{Monospace Italic}} + \item \texttt{\textbf{Monospace Bold}} + \item \texttt{\textbf{\textit{Monospace Bold Italic}}} + \end{itemize} +\end{frame} + \begin{frame}{Lists} \begin{columns}[T,onlytextwidth] \column{0.33\textwidth} diff --git a/doc/metropolistheme.dtx b/doc/metropolistheme.dtx index eea0073a..041392bf 100644 --- a/doc/metropolistheme.dtx +++ b/doc/metropolistheme.dtx @@ -18,12 +18,69 @@ \usepackage{xspace} \onehalfspacing -\usepackage{fontspec} -\setmainfont[BoldItalicFont={Fira Sans Italic},% - ItalicFont={Fira Sans Light Italic},% - BoldFont={Fira Sans}]{Fira Sans Light} -\setmonofont{Fira Mono} -\defaultfontfeatures{Ligatures=TeX} +\usepackage{etoolbox} +\usepackage{ifxetex} +\usepackage{ifluatex} + +\ifboolexpr{bool {xetex} or bool {luatex}}{ + \usepackage{fontspec} + \defaultfontfeatures{Ligatures=TeX} + + \newcounter{fontsnotfound} + \newcommand{\checkfont}[1]{% + \suppressfontnotfounderror=1% + \font\x = "#1" at 10pt + \ifx\x\nullfont% + \stepcounter{fontsnotfound}% + \fi% + \suppressfontnotfounderror=0% + } + + \newcommand{\iffontsexist}[3]{% + \setcounter{fontsnotfound}{0}% + \expandafter\forcsvlist\expandafter% + \checkfont\expandafter{#1}% + \ifnum\value{fontsnotfound}=0% + #2% + \else% + #3% + \fi% + } + \iffontsexist{Fira Sans Light,% + Fira Sans Light Italic,% + Fira Sans,% + Fira Sans Italic}{% + \setmainfont[BoldFont={Fira Sans}]{Fira Sans Light}% + }{% + \iffontsexist{Fira Sans Light OT,% + Fira Sans Light Italic OT,% + Fira Sans OT,% + Fira Sans Italic OT}{% + \setmainfont[BoldFont={Fira Sans OT}]{Fira Sans Light OT}% + }{% + \typeout{% + Could not find Fira Sans fonts. Creating documentation% + with standard fonts.% + } + } + } + \iffontsexist{Fira Mono, Fira Mono Bold}{% + \setmonofont{Fira Mono}% + }{% + \iffontsexist{Fira Mono OT, Fira Mono Bold OT}{% + \setmonofont{Fira Mono OT}% + }{% + \typeout{% + Could not find Fira Sans fonts. Creating documentation% + with standard monospaced fonts.% + } + } + } +}{ + \typeout{% + You need to compile with XeLaTeX or LuaLaTeX to use the Fira fonts.% + } +} \usepackage{enumitem} \setlist[itemize]{noitemsep} @@ -63,7 +120,8 @@ xrightmargin=0em, aboveskip=1em, belowskip=1em, - morekeywords={usetheme,institute,maketitle,@metropolis@titleformat,plain,setbeamercolor,metroset}, + morekeywords={usetheme,institute,maketitle,@metropolis@titleformat,% + plain,setbeamercolor,metroset,setsansfont,setmonofont}, } \lstMakeShortInline| @@ -83,7 +141,7 @@ \end{minipage} } -\newcommand{\themename}{\textsc{metropolis}\xspace} +\newcommand{\themename}{\textbf{\textsc{metropolis}}\xspace} \GetFileInfo{beamerthemem.dtx} \title{Modern Beamer Presentations with the \themename{} package} @@ -113,7 +171,7 @@ By default, \themename{} uses {Fira Sans}, a gorgeous typeface commissioned by Mozilla and designed by \href{http://www.carrois.com/fira-3-1/}{Carrois}. For best results, you will need the Fira typeface installed and use Xe\LaTeX{} to typeset your slides. -However, \themename{} can also be used other typefaces and \LaTeX{} build +However, \themename{} can also be used with other typefaces and \LaTeX{} build systems. \themename's codebase is maintained on \href{https://github.com/matze/mtheme} @@ -125,6 +183,23 @@ the theme even better, please get in touch there. The \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. + +% \begin{lstlisting} +% sudo tlmgr update --all +% \end{lstlisting} + +% 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. + \subsection{Installing from GitHub} Installing \themename{}, like any Beamer theme, involves four easy steps: @@ -161,6 +236,10 @@ 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} @@ -191,13 +270,10 @@ The following code shows a minimal example of a Beamer presentation using \theme \item TikZ \end{itemize} -Depending on the Linux distribution, the packaged name of |Fira Sans| might be -|Fira Sans OT| instead of |Fira Sans|. In that case, you may have to edit -|beamerfontthememetropolis.dtx|. You may also need to install Fira Sans; see -the |contrib/| directory for more. 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. - +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} @@ -321,9 +397,21 @@ 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 standard font selection commands of the |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. + +\begin{lstlisting} +\setsansfont{Ubuntu} +\setmonofont{Ubuntu Mono} +\end{lstlisting} + \subsection{Commands} -The |\plain{title=[]}{}| command sets a slide in plain dark colors which +The \lstinline|\plain{title=[]}{}| command sets a slide in plain dark colors which can be useful to focus attention on a single sentence or image. \subsection{Paul Tol's colors: a \texttt{pgfplots} theme} @@ -347,7 +435,7 @@ or horizontal |mbarplot| to plot bar charts. \section{Known Issues} -The |\plain| command does not work if you override the \textsc{metropolis} +The \lstinline|\plain| command does not work if you override the \textsc{metropolis} color theme with the default beamer color theme |fly|. \section{License} diff --git a/doc/metropolistheme.pdf b/doc/metropolistheme.pdf index 5228145e..25162c80 100644 Binary files a/doc/metropolistheme.pdf and b/doc/metropolistheme.pdf differ diff --git a/source/beamerfontthememetropolis.dtx b/source/beamerfontthememetropolis.dtx index 432f955d..0f648417 100644 --- a/source/beamerfontthememetropolis.dtx +++ b/source/beamerfontthememetropolis.dtx @@ -13,7 +13,7 @@ % \ProvidesFile{beamerfontthememetropolis.dtx} %<*package> \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{beamerfontthememetropolis}[2015/06/12 Metropolis font theme] +\ProvidesPackage{beamerfontthememetropolis}[2015/10/24 Metropolis font theme] % % \documentclass{ltxdoc} % \usepackage{beamerfontthememetropolis} @@ -26,53 +26,141 @@ % \iffalse %<*package> % ------------------------------------------------------------------------- \fi -% \subsection{Fira font theme} -% Font Definitions +% \subsection{\textsc{metropolis} font theme} % +% +% Load required packages. % \begin{macrocode} -\RequirePackage[no-math]{fontspec} -\defaultfontfeatures{Mapping=tex-text} -\setsansfont[BoldItalicFont={Fira Sans Italic},% - ItalicFont={Fira Sans Light Italic},% - BoldFont={Fira Sans}]{Fira Sans Light} -\setmonofont{Fira Mono} -\newfontfamily\ExtraLight{Fira Sans ExtraLight} -\newfontfamily\Light{Fira Sans Light} -\newfontfamily\Book{Fira Sans} -\newfontfamily\Medium{Fira Sans Medium} -\AtBeginEnvironment{tabular}{% - \setsansfont[BoldFont={Fira Sans},% - Numbers={Monospaced}]{Fira Sans Light}% - } +\RequirePackage{etoolbox} +\RequirePackage{ifxetex} +\RequirePackage{ifluatex} +% \end{macrocode} +% +% \subsubsection{Load Fira font} +% If the presentation is compiled with XeLaTeX or LuaLaTeX the fontspec package +% will be loaded. +% \begin{macrocode} +\ifboolexpr{bool {xetex} or bool {luatex}}{ + \RequirePackage[no-math]{fontspec} + \defaultfontfeatures{Mapping=tex-text} % \end{macrocode} % -% Font Assignment +% 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. % \begin{macrocode} -\setbeamerfont{title}{family=\Book, size=\Large, shape=\scshape} -\setbeamerfont{author}{family=\ExtraLight, size=\small} -\setbeamerfont{date}{family=\ExtraLight, size=\small} -\setbeamerfont{section title}{family=\Book, size=\Large, shape=\scshape} -\setbeamerfont{block title}{family=\Book, size=\normalsize} -\setbeamerfont{block title alerted}{family=\Book,size=\normalsize} -\setbeamerfont{subtitle}{family=\Light, size=\fontsize{12}{14}} -\setbeamerfont{frametitle}{family=\Book, size=\large, shape=\scshape} -\setbeamerfont{caption}{size=\small} -\setbeamerfont{caption name}{family=\Book} -\setbeamerfont{description item}{family=\Book} -\setbeamerfont{page number in head/foot}{size=\scriptsize} + \newcounter{fontsnotfound} + \newcommand{\checkfont}[1]{% + \suppressfontnotfounderror=1% + \font\x = "#1" at 10pt + \ifx\x\nullfont% + \stepcounter{fontsnotfound}% + \fi% + \suppressfontnotfounderror=0% + } + +% \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{macrocode} + \newcommand{\iffontsexist}[3]{% + \setcounter{fontsnotfound}{0}% + \expandafter\forcsvlist\expandafter% + \checkfont\expandafter{#1}% + \ifnum\value{fontsnotfound}=0% + #2% + \else% + #3% + \fi% + } % \end{macrocode} +% \end{macro} % -% Bibliograpy +% 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. % % \begin{macrocode} -\setbeamerfont{bibliography entry author}{family=\Light, size=\normalsize} -\setbeamerfont{bibliography entry title}{family=\Book, size=\normalsize} -\setbeamerfont{bibliography entry location}{family=\Light, size=\normalsize} -\setbeamerfont{bibliography entry note}{family=\Light, size=\small} + \iffontsexist{Fira Sans Light,% + Fira Sans Light Italic,% + Fira Sans,% + Fira Sans Italic}{% + \setsansfont[BoldFont={Fira Sans}]{Fira Sans Light}% + }{% + \iffontsexist{Fira Sans Light OT,% + Fira Sans Light Italic OT,% + Fira Sans OT,% + Fira Sans Italic OT}{% + \setsansfont[BoldFont={Fira Sans OT}]{Fira Sans Light OT}% + }{% + \PackageWarning{beamerthemem}{% + Could not find Fira Sans fonts.% + } + } + } + \iffontsexist{Fira Mono, Fira Mono Bold}{% + \setmonofont{Fira Mono}% + }{% + \iffontsexist{Fira Mono OT, Fira Mono Bold OT}{% + \setmonofont{Fira Mono OT}% + }{% + \PackageWarning{beamerthemem}{% + Could not find Fira Mono fonts.% + } + } + } + \AtBeginEnvironment{tabular}{% + \addfontfeature{Numbers={Monospaced}}% + } +}{% + \PackageWarning{beamerthemem}{% + You need to compile with XeLaTeX or LuaLaTeX to use the Fira fonts.% + } +} +% \end{macrocode} +% +% +% +% \subsubsection{General font definitions} +% +% \begin{macrocode} +\setbeamerfont{title}{size=\Large,% + series=\bfseries,% + shape=\scshape} +\setbeamerfont{author}{size=\small} +\setbeamerfont{date}{size=\small} +\setbeamerfont{section title}{size=\Large,% + series=\bfseries,% + shape=\scshape} +\setbeamerfont{block title}{size=\normalsize,% + series=\bfseries} +\setbeamerfont{block title alerted}{size=\normalsize,% + series=\bfseries} +\setbeamerfont*{subtitle}{size=\large,% + shape=\scshape} +\setbeamerfont{frametitle}{size=\large,% + series=\bfseries,% + shape=\scshape} +\setbeamerfont{caption}{size=\small} +\setbeamerfont{caption name}{series=\bfseries} +\setbeamerfont{description item}{series=\bfseries} +\setbeamerfont{page number in head/foot}{size=\scriptsize} +\setbeamerfont{bibliography entry author}{size=\normalsize,% + series=\normalfont} +\setbeamerfont{bibliography entry title}{size=\normalsize,% + series=\bfseries} +\setbeamerfont{bibliography entry location}{size=\normalsize,% + series=\normalfont} +\setbeamerfont{bibliography entry note}{size=\small,% + series=\normalfont} \linespread{1.15} % \end{macrocode} - % % \iffalse % diff --git a/source/beamerthemem.dtx b/source/beamerthemem.dtx index 84e5d0f7..1a75b542 100644 --- a/source/beamerthemem.dtx +++ b/source/beamerthemem.dtx @@ -37,8 +37,6 @@ % \begin{macrocode} \RequirePackage{etoolbox} \RequirePackage{pgfopts} -\RequirePackage{ifxetex} -\RequirePackage{ifluatex} % \end{macrocode} % % \subsubsection{Options} @@ -136,19 +134,7 @@ \useinnertheme{metropolis} \useoutertheme{metropolis} \usecolortheme{metropolis} -% \end{macrocode} -% -% 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} -\ifboolexpr{bool {xetex} or bool {luatex}}{ - \usefonttheme{metropolis} -}{ - \PackageWarning{beamerthemem}{% - You need to compile with XeLaTeX or LuaLaTeX to use the Fira fonts. - } -} +\usefonttheme{metropolis} % \end{macrocode} % % The |tol| theme for |pgfplots| is only loaded if |pgfplots| is used.