Skip to content

Commit

Permalink
Merge pull request #145 from benjamin-weiss/font-theme
Browse files Browse the repository at this point in the history
Fixes #85 – Font theme overhaul
  • Loading branch information
matze committed Nov 13, 2015
2 parents 331a5f8 + d2e03dc commit 4cd0943
Show file tree
Hide file tree
Showing 6 changed files with 247 additions and 69 deletions.
Binary file modified demo/demo.pdf
Binary file not shown.
16 changes: 16 additions & 0 deletions demo/demo.tex
Original file line number Diff line number Diff line change
Expand Up @@ -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}
Expand Down
124 changes: 106 additions & 18 deletions doc/metropolistheme.dtx
Original file line number Diff line number Diff line change
Expand Up @@ -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}
Expand Down Expand Up @@ -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|

Expand All @@ -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}
Expand Down Expand Up @@ -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}
Expand All @@ -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:
Expand Down Expand Up @@ -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}

Expand Down Expand Up @@ -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}

Expand Down Expand Up @@ -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=[]}{<body>}| command sets a slide in plain dark colors which
The \lstinline|\plain{title=[]}{<body>}| 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}
Expand All @@ -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}
Expand Down
Binary file modified doc/metropolistheme.pdf
Binary file not shown.
160 changes: 124 additions & 36 deletions source/beamerfontthememetropolis.dtx
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
%<driver> \ProvidesFile{beamerfontthememetropolis.dtx}
%<*package>
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{beamerfontthememetropolis}[2015/06/12 Metropolis font theme]
\ProvidesPackage{beamerfontthememetropolis}[2015/10/24 Metropolis font theme]
%</package>
%<driver> \documentclass{ltxdoc}
%<driver> \usepackage{beamerfontthememetropolis}
Expand All @@ -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
%</package>
Expand Down
Loading

0 comments on commit 4cd0943

Please sign in to comment.