updated gitignore to ignore xdv
[beamer-mako] / template / beamerfontthememetropolis.sty
1 %%
2 %% This is file `beamerfontthememetropolis.sty',
3 %% generated with the docstrip utility.
4 %%
5 %% The original source files were:
6 %%
7 %% beamerfontthememetropolis.dtx  (with options: `package')
8 %% ---------------------------------------------------------------------------
9 %% Copyright 2015 Matthias Vogelgesang and the LaTeX community. A full list of
10 %% contributors can be found at
11 %% 
12 %%     https://github.com/matze/mtheme/graphs/contributors
13 %% 
14 %% and the original template was based on the HSRM theme by Benjamin Weiss.
15 %% 
16 %% This work is licensed under a Creative Commons Attribution-ShareAlike 4.0
17 %% International License (https://creativecommons.org/licenses/by-sa/4.0/).
18 %% ---------------------------------------------------------------------------
19 \NeedsTeXFormat{LaTeX2e}
20 \ProvidesPackage{beamerfontthememetropolis}[2017/01/23 Metropolis font theme]
21 \RequirePackage{etoolbox}
22 \RequirePackage{ifxetex}
23 \RequirePackage{ifluatex}
24 \RequirePackage{pgfopts}
25 \ifboolexpr{bool {xetex} or bool {luatex}}{
26   \@ifpackageloaded{fontspec}{
27     \PassOptionsToPackage{no-math}{fontspec}
28   }{
29     \RequirePackage[no-math]{fontspec}
30   }
31   \newcounter{fontsnotfound}
32   \newcommand{\checkfont}[1]{%
33     \suppressfontnotfounderror=1%
34     \font\x = "#1" at 10pt
35     \selectfont
36     \ifx\x\nullfont%
37       \stepcounter{fontsnotfound}%
38     \fi%
39     \suppressfontnotfounderror=0%
40   }
41
42   \newcommand{\iffontsavailable}[3]{%
43     \setcounter{fontsnotfound}{0}%
44     \expandafter\forcsvlist\expandafter%
45     \checkfont\expandafter{#1}%
46     \ifnum\value{fontsnotfound}=0%
47       #2%
48     \else%
49       #3%
50     \fi%
51   }
52   \iffontsavailable{Fira Sans Light,%
53                     Fira Sans Light Italic,%
54                     Fira Sans,%
55                     Fira Sans Italic}%
56   {%
57     \setsansfont[ItalicFont={Fira Sans Light Italic},%
58                  BoldFont={Fira Sans},%
59                  BoldItalicFont={Fira Sans Italic}]%
60                 {Fira Sans Light}%
61   }{%
62     \iffontsavailable{Fira Sans Light OT,%
63                       Fira Sans Light Italic OT,%
64                       Fira Sans OT,%
65                       Fira Sans Italic OT}%
66     {%
67       \setsansfont[ItalicFont={Fira Sans Light Italic OT},%
68                    BoldFont={Fira Sans OT},%
69                    BoldItalicFont={Fira Sans Italic OT}]%
70                   {Fira Sans Light OT}%
71     }{%
72       \PackageWarning{beamerthememetropolis}{%
73         Could not find Fira Sans fonts%
74       }
75     }
76   }
77   \iffontsavailable{Fira Mono, Fira Mono Bold}{%
78     \setmonofont[BoldFont={Fira Mono Medium}]{Fira Mono}%
79   }{%
80     \iffontsavailable{Fira Mono OT, Fira Mono Bold OT}{%
81       \setmonofont[BoldFont={Fira Mono Medium OT}]{Fira Mono OT}%
82     }{%
83       \PackageWarning{beamerthememetropolis}{%
84         Could not find Fira Mono fonts%
85       }
86     }
87   }
88   \AtBeginEnvironment{tabular}{%
89     \addfontfeature{Numbers={Monospaced}}%
90   }
91 }{%
92   \PackageWarning{beamerthememetropolis}{%
93     You need to compile with XeLaTeX or LuaLaTeX to use the Fira fonts%
94   }
95 }
96 \setbeamerfont{title}{size=\Large,%
97                       series=\bfseries}
98 \setbeamerfont{author}{size=\small}
99 \setbeamerfont{date}{size=\small}
100 \setbeamerfont{section title}{size=\Large,%
101                               series=\bfseries}
102 \setbeamerfont{block title}{size=\normalsize,%
103                             series=\bfseries}
104 \setbeamerfont{block title alerted}{size=\normalsize,%
105                                     series=\bfseries}
106 \setbeamerfont*{subtitle}{size=\large}
107 \setbeamerfont{frametitle}{size=\large,%
108                            series=\bfseries}
109 \setbeamerfont{caption}{size=\small}
110 \setbeamerfont{caption name}{series=\bfseries}
111 \setbeamerfont{description item}{series=\bfseries}
112 \setbeamerfont{page number in head/foot}{size=\scriptsize}
113 \setbeamerfont{bibliography entry author}{size=\normalsize,%
114                                           series=\normalfont}
115 \setbeamerfont{bibliography entry title}{size=\normalsize,%
116                                          series=\bfseries}
117 \setbeamerfont{bibliography entry location}{size=\normalsize,%
118                                             series=\normalfont}
119 \setbeamerfont{bibliography entry note}{size=\small,%
120                                         series=\normalfont}
121 \setbeamerfont{standout}{size=\Large,%
122                          series=\bfseries}
123 \pgfkeys{
124   /metropolis/font/titleformat title/.cd,
125     .is choice,
126     regular/.code={%
127       \let\metropolis@titleformat\@empty%
128       \setbeamerfont{title}{shape=\normalfont}%
129     },
130     smallcaps/.code={%
131       \let\metropolis@titleformat\@empty%
132       \setbeamerfont{title}{shape=\scshape}%
133     },
134     allsmallcaps/.code={%
135       \let\metropolis@titleformat\lowercase%
136       \setbeamerfont{title}{shape=\scshape}%
137       \PackageWarning{beamerthememetropolis}{%
138         Be aware that titleformat title=allsmallcaps can lead to problems%
139       }
140     },
141     allcaps/.code={%
142       \let\metropolis@titleformat\uppercase%
143       \setbeamerfont{title}{shape=\normalfont}
144       \PackageWarning{beamerthememetropolis}{%
145         Be aware that titleformat title=allcaps can lead to problems%
146       }
147     },
148 }
149 \pgfkeys{
150   /metropolis/font/titleformat subtitle/.cd,
151     .is choice,
152     regular/.code={%
153       \let\metropolis@subtitleformat\@empty%
154       \setbeamerfont{subtitle}{shape=\normalfont}%
155     },
156     smallcaps/.code={%
157       \let\metropolis@subtitleformat\@empty%
158       \setbeamerfont{subtitle}{shape=\scshape}%
159     },
160     allsmallcaps/.code={%
161       \let\metropolis@subtitleformat\lowercase%
162       \setbeamerfont{subtitle}{shape=\scshape}%
163       \PackageWarning{beamerthememetropolis}{%
164         Be aware that titleformat subtitle=allsmallcaps can lead to problems%
165       }
166     },
167     allcaps/.code={%
168       \let\metropolis@subtitleformat\uppercase%
169       \setbeamerfont{subtitle}{shape=\normalfont}%
170       \PackageWarning{beamerthememetropolis}{%
171         Be aware that titleformat subtitle=allcaps can lead to problems%
172       }
173     },
174 }
175 \pgfkeys{
176   /metropolis/font/titleformat section/.cd,
177     .is choice,
178     regular/.code={%
179       \let\metropolis@sectiontitleformat\@empty%
180       \setbeamerfont{section title}{shape=\normalfont}%
181     },
182     smallcaps/.code={%
183       \let\metropolis@sectiontitleformat\@empty%
184       \setbeamerfont{section title}{shape=\scshape}%
185     },
186     allsmallcaps/.code={%
187       \let\metropolis@sectiontitleformat\MakeLowercase%
188       \setbeamerfont{section title}{shape=\scshape}%
189       \PackageWarning{beamerthememetropolis}{%
190         Be aware that titleformat section=allsmallcaps can lead to problems%
191       }
192     },
193     allcaps/.code={%
194       \let\metropolis@sectiontitleformat\MakeUppercase%
195       \setbeamerfont{section title}{shape=\normalfont}%
196       \PackageWarning{beamerthememetropolis}{%
197         Be aware that titleformat section=allcaps can lead to problems%
198       }
199     },
200 }
201 \pgfkeys{
202   /metropolis/font/titleformat frame/.cd,
203     .is choice,
204     regular/.code={%
205       \let\metropolis@frametitleformat\@empty%
206       \setbeamerfont{frametitle}{shape=\normalfont}%
207     },
208     smallcaps/.code={%
209       \let\metropolis@frametitleformat\@empty%
210       \setbeamerfont{frametitle}{shape=\scshape}%
211     },
212     allsmallcaps/.code={%
213       \let\metropolis@frametitleformat\MakeLowercase%
214       \setbeamerfont{frametitle}{shape=\scshape}%
215       \PackageWarning{beamerthememetropolis}{%
216         Be aware that titleformat frame=allsmallcaps can lead to problems%
217       }
218     },
219     allcaps/.code={%
220       \let\metropolis@frametitleformat\MakeUppercase%
221       \setbeamerfont{frametitle}{shape=\normalfont}
222       \PackageWarning{beamerthememetropolis}{%
223         Be aware that titleformat frame=allcaps can lead to problems%
224       }
225     },
226 }
227 \pgfkeys{
228   /metropolis/font/.cd,
229   titleformattitle/.code=\pgfkeysalso{titleformat title=#1},
230   titleformatsubtitle/.code=\pgfkeysalso{titleformat subtitle=#1},
231   titleformatsection/.code=\pgfkeysalso{titleformat section=#1},
232   titleformatframe/.code=\pgfkeysalso{titleformat frame=#1},
233 }
234 \newcommand{\metropolis@font@setdefaults}{
235   \pgfkeys{/metropolis/font/.cd,
236     titleformat title=regular,
237     titleformat subtitle=regular,
238     titleformat section=regular,
239     titleformat frame=regular,
240   }
241 }
242 \def\metropolis@titleformat#1{#1}
243 \def\metropolis@subtitleformat#1{#1}
244 \def\metropolis@sectiontitleformat#1{#1}
245 \def\metropolis@frametitleformat#1{#1}
246 \patchcmd{\beamer@title}%
247   {\def\inserttitle{#2}}%
248   {\def\inserttitle{\metropolis@titleformat{#2}}}%
249   {}%
250   {\PackageError{beamerfontthememetropolis}{Patching title failed}\@ehc}
251 \patchcmd{\beamer@subtitle}%
252   {\def\insertsubtitle{#2}}%
253   {\def\insertsubtitle{\metropolis@subtitleformat{#2}}}%
254   {}%
255   {\PackageError{beamerfontthememetropolis}{Patching subtitle failed}\@ehc}
256 \patchcmd{\sectionentry}
257   {\def\insertsectionhead{#2}}
258   {\def\insertsectionhead{\metropolis@sectiontitleformat{#2}}}
259   {}
260   {\PackageError{beamerfontthememetropolis}{Patching section title failed}\@ehc}
261 \@tempswafalse
262 \patchcmd{\beamer@section}
263   {\edef\insertsectionhead{\noexpand\hyperlink{Navigation\the\c@page}{\unexpanded{#1}}}}
264   {\edef\insertsectionhead{\noexpand\hyperlink{Navigation\the\c@page}{%
265     \noexpand\metropolis@sectiontitleformat{\unexpanded{#1}}}}}
266   {\@tempswatrue}
267   {}
268 \patchcmd{\beamer@section}
269   {\def\insertsectionhead{\hyperlink{Navigation\the\c@page}{#1}}}
270   {\def\insertsectionhead{\hyperlink{Navigation\the\c@page}{%
271     \metropolis@sectiontitleformat{#1}}}}
272   {\@tempswatrue}
273   {}
274 \patchcmd{\beamer@section}
275   {\protected@edef\insertsectionhead{\noexpand\hyperlink{Navigation\the\c@page}{#1}}}
276   {\protected@edef\insertsectionhead{\noexpand\hyperlink{Navigation\the\c@page}{%
277     \noexpand\metropolis@sectiontitleformat{#1}}}}
278   {\@tempswatrue}
279   {}
280 \if@tempswa\else
281   \PackageError{beamerfontthememetropolis}{Patching section title failed}\@ehc
282 \fi
283 \@tempswafalse
284 \patchcmd{\beamer@subsection}
285   {\edef\insertsubsectionhead{\noexpand\hyperlink{Navigation\the\c@page}{\unexpanded{#1}}}}
286   {\edef\insertsubsectionhead{\noexpand\hyperlink{Navigation\the\c@page}{%
287     \noexpand\metropolis@sectiontitleformat{\unexpanded{#1}}}}}
288   {\@tempswatrue}
289   {}
290 \patchcmd{\beamer@subsection}
291   {\def\insertsubsectionhead{\hyperlink{Navigation\the\c@page}{#1}}}
292   {\def\insertsubsectionhead{\hyperlink{Navigation\the\c@page}{%
293     \metropolis@sectiontitleformat{#1}}}}
294   {\@tempswatrue}
295   {}
296 \patchcmd{\beamer@subsection}
297   {\protected@edef\insertsubsectionhead{\noexpand\hyperlink{Navigation\the\c@page}{#1}}}
298   {\protected@edef\insertsubsectionhead{\noexpand\hyperlink{Navigation\the\c@page}{%
299     \noexpand\metropolis@sectiontitleformat{#1}}}}
300   {\@tempswatrue}
301   {}
302 \if@tempswa\else
303   \PackageError{beamerfontthememetropolis}{Patching section title failed}\@ehc
304 \fi
305 \patchcmd{\beamer@@frametitle}
306   {{%
307       \gdef\insertframetitle{{#2\ifnum\beamer@autobreakcount>0\relax{}\space%
308       \usebeamertemplate*{frametitle continuation}\fi}}%
309     \gdef\beamer@frametitle{#2}%
310     \gdef\beamer@shortframetitle{#1}%
311     }}
312   {{%
313       \gdef\insertframetitle{{\metropolis@frametitleformat{#2}\ifnum%
314       \beamer@autobreakcount>0\relax{}\space%
315       \usebeamertemplate*{frametitle continuation}\fi}}%
316     \gdef\beamer@frametitle{#2}%
317     \gdef\beamer@shortframetitle{#1}%
318     }}
319   {}
320   {\PackageError{beamerfontthememetropolis}{Patching frame title failed}\@ehc}
321 \metropolis@font@setdefaults
322 \ProcessPgfPackageOptions{/metropolis/font}
323 \endinput
324 %%
325 %% End of file `beamerfontthememetropolis.sty'.

Benjamin Mako Hill || Want to submit a patch?