summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/beamer-contrib/hackthefootline
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/beamer-contrib/hackthefootline
Initial commit
Diffstat (limited to 'macros/latex/contrib/beamer-contrib/hackthefootline')
-rw-r--r--macros/latex/contrib/beamer-contrib/hackthefootline/README.md17
-rw-r--r--macros/latex/contrib/beamer-contrib/hackthefootline/doc/hackthefootline-doc.pdfbin0 -> 179011 bytes
-rw-r--r--macros/latex/contrib/beamer-contrib/hackthefootline/doc/hackthefootline-doc.tex439
-rw-r--r--macros/latex/contrib/beamer-contrib/hackthefootline/doc/hackthefootline-examples.pdfbin0 -> 86495 bytes
-rw-r--r--macros/latex/contrib/beamer-contrib/hackthefootline/doc/hackthefootline-examples.tex101
-rw-r--r--macros/latex/contrib/beamer-contrib/hackthefootline/hackthefootline.sty397
6 files changed, 954 insertions, 0 deletions
diff --git a/macros/latex/contrib/beamer-contrib/hackthefootline/README.md b/macros/latex/contrib/beamer-contrib/hackthefootline/README.md
new file mode 100644
index 0000000000..f8de445941
--- /dev/null
+++ b/macros/latex/contrib/beamer-contrib/hackthefootline/README.md
@@ -0,0 +1,17 @@
+# hackthefootline
+## Arbitrary footline selection and configuration for LaTeX beamer's standard themes.
+
+Some `beamer` themes provide footlines -- and some do not.
+Now, if one wants to have a footline, he is restricted to the (outer) themes providing them or loads multiple themes. On top of that, these provided footlines are only configurable by redefining them as a whole, which is quite uncomfortable and yields many lines of additional code.
+
+`hackthefootline` is a package taking over, defining and redefining different footlines, so they can be configured using key-value syntax. Also, it is possible (but *not* recommended as it might distract your audience) to switch between different footline types during a presentation.
+
+
+
+### Dependencies
+`hackthefootline` depends on the packages `ifthen` and `pgfkeys` and -- obviously -- on the `beamer` class.
+
+Additional sophisticated features included also require `appendixnumberbeamer` (only when using beamer v3.48 and older), `etoolbox`, `calc` and `numprint`, but these four dependencies can be resolved by passing some options to the `hackthefootline` package.
+
+### License
+This work is licensed under the LPPL 1.3c or any later version.
diff --git a/macros/latex/contrib/beamer-contrib/hackthefootline/doc/hackthefootline-doc.pdf b/macros/latex/contrib/beamer-contrib/hackthefootline/doc/hackthefootline-doc.pdf
new file mode 100644
index 0000000000..3c4fd7485e
--- /dev/null
+++ b/macros/latex/contrib/beamer-contrib/hackthefootline/doc/hackthefootline-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/beamer-contrib/hackthefootline/doc/hackthefootline-doc.tex b/macros/latex/contrib/beamer-contrib/hackthefootline/doc/hackthefootline-doc.tex
new file mode 100644
index 0000000000..437d5308f1
--- /dev/null
+++ b/macros/latex/contrib/beamer-contrib/hackthefootline/doc/hackthefootline-doc.tex
@@ -0,0 +1,439 @@
+%% This is file 'hackthefootline-doc.tex', Version 2018-01-29
+%% Copyright 2017-18 Sebastian Friedl <sfr682k@t-online.de>
+%%
+%% This work may be distributed and/or modified under the conditions of the LaTeX Project
+%% Public License, either version 1.3c of this license or (at your option) any later version.
+%% The latest version of this license is available at
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX version 2008-05-04 or later
+%%
+%% This work has the LPPL maintenace status 'maintained'.
+%% The current maintainer of this work is Sebastian Friedl.
+%%
+%% This work consists of the files hackthefootline.sty, hackthefootline-examples.tex and
+%% hackthefootline-doc.tex
+%%
+%% -------------------------------------------------------------------------------------------
+%%
+%% The hackthefootline package is a tool providing arbitrary footline selection and
+%% configuration for LaTeX beamer's standard themes (it may work with other themes as well)
+%%
+%% -------------------------------------------------------------------------------------------
+%%
+%% Please report bugs and other problems as well as suggestions for improvements
+%% to my email address (sfr682k@t-online.de).
+%%
+%% -------------------------------------------------------------------------------------------
+%%
+%% Acknowledgement:
+%% The basic layout of the two- and three-column footline is based on the original LaTeX
+%% beamer split and infolines outer themes written by Till Tantau.
+%%
+%% -------------------------------------------------------------------------------------------
+
+% !TeX spellcheck = en_GB
+
+% !TeX document-id = {681db40e-7a84-4428-b4f4-84e230e3ba79}
+% !TeX program=lualatex
+% !TeX TXS-program:compile=txs:///lualatex/[--shell-escape]
+
+
+\documentclass[11pt]{ltxdoc}
+
+\usepackage[erewhon]{newtxmath}
+\usepackage[no-math]{fontspec}
+\usepackage{polyglossia}
+\setdefaultlanguage{english}
+
+\usepackage{csquotes}
+\usepackage{hologo}
+\usepackage[pdfborder={0 0 0}, unicode]{hyperref}
+\usepackage[english]{selnolig}
+\usepackage{tikz}
+
+\newcommand{\DescribeOption}[3]{
+ \DescribeMacro{#1}
+ \begin{minipage}[t]{\textwidth}
+ \textit{\textbf{#2}}\dotfill~\par
+ \begingroup
+ \vspace{0.5em}#3\par
+ \endgroup
+ \end{minipage}%
+ \bigskip\medskip%
+}
+
+
+\parindent 0pt
+
+\setmainfont{erewhon}
+\setsansfont[Scale=MatchLowercase]{Source Sans Pro}
+\setmonofont[Scale=MatchLowercase]{Hack}
+
+\usepackage[left=4.50cm,right=2.75cm,top=3.25cm,bottom=2.75cm,nohead]{geometry}
+
+\hyphenation{coun-ted}
+\MakeShortVerb{"}
+
+
+\title{The \texttt{\bfseries hackthefootline} package \\ {\large\url{https://github.com/SFr682k/hackthefootline}}}
+\author{Sebastian Friedl \\ \href{mailto:sfr682k@t-online.de}{\ttfamily sfr682k@t-online.de}}
+\date{2018/01/29}
+
+\hypersetup{pdftitle={The hackthefootline package},pdfauthor={Sebastian Friedl}}
+
+\begin{document}
+ \maketitle
+ \thispagestyle{empty}
+
+ \begin{center} \itshape
+ Dedicated to all the \LaTeX\ beamer users \dots
+
+ \medskip
+ \dots who load two different themes in the same presentation \\ or redefine commands to obtain the desired footline \dots
+
+ \medskip
+ \dots and the other guys just using "\setbeamertemplate"
+ \end{center}
+
+ \medskip
+ \begin{abstract}
+ \parindent0pt\noindent%
+ \textbf{Arbitrary footline selection and configuration for \LaTeX\ \texttt{beamer}'s standard themes.} \\
+ "hackthefootline" is a package taking over, defining and redefining different footlines, so they can be configured using key-value syntax.
+
+ \medskip
+ The basic layout of the two- and three-column footline is based on the original \LaTeX\ beamer split and infolines outer themes written by Till Tantau.
+ \end{abstract}
+
+
+ \tableofcontents
+
+ \clearpage
+
+
+
+ \subsection*{Dependencies and other requirements}
+ \addcontentsline{toc}{subsection}{Dependencies and other requirements}
+ %
+ \DescribeMacro{beamer}
+ Since "hackthefootline" is designed to modify "beamer"'s footlines, it is incompatible to any other document class. Therefore, load this package only in "beamer" documents!
+
+ \medskip
+ \DescribeMacro{ifthen}
+ This package is required to compare the length of some boxes.
+
+ \medskip
+ \DescribeMacro{pgfkeys}
+ "hackthefootline" heavily depends on the "pgfkeys" package for handling the whole key-value stuff.
+
+ \bigskip
+ Also, additional sophisticated features require the following packages:
+
+ \medskip
+ \DescribeMacro{appendixnumber-}\DescribeMacro{beamer}
+ \textit{\bfseries Only required when using \texttt{beamer} version 3.48 and older.}
+ This package is only required when using "beamer" version 3.48 or older. If you are using "beamer" version 3.49 or later\footnote{i. e. \TeX{}Live 2018 and later}, "hackthefootline" will rely on "beamer"'s internal appendix frame numbering mechanisms.
+
+ \medskip
+ \DescribeMacro{etoolbox}
+ Provides access on \hologo{eTeX} primitives
+
+ \medskip
+ \DescribeMacro{calc}
+ Required for basic calculations
+
+ \medskip
+ \DescribeMacro{numprint}
+ Prints out numbers, counters and lengths
+
+ \bigskip
+ However, the four latter dependencies can be removed by using some package options. See section \ref{behavioropts} for further details.
+
+
+ \subsection*{Notice: Behavior inside the presentation's appendix}
+ \addcontentsline{toc}{subsection}{Notice: Behavior inside the presentation's appendix}
+ By default, appendix frames are \emph{not} counted into the total number of frames when using "hackthefootline". Appendix frame numbers will be counted from 1 when using fraction frame numbers. \\
+ Also, frame numbers won't be displayed on footlines inside the appendix until this is changed using the means of the "\htfconfig" command.
+
+ \medskip
+ This behavior can be suppressed by passing the "countappendixframes" option.
+
+
+ \subsection*{License}
+ \addcontentsline{toc}{subsection}{License}
+ \textcopyright\ 2017-18 Sebastian Friedl
+
+ \smallskip
+ This work may be distributed and/or modified under the conditions of the \LaTeX\ Project Public License, either version 1.3c of this license or (at your option) any later version.
+
+ \smallskip
+ The latest version of this license is available at \url{http://www.latex-project.org/lppl.txt} and version 1.3c or later is part of all distributions of \LaTeX\ version 2008-05-04 or later.
+
+ \smallskip
+ This work has the LPPL maintenace status \enquote*{maintained}. The current maintainer of this work is Sebastian Friedl. \\
+ This work consists of the following files:
+ \begin{itemize} \itemsep 0pt
+ \item "hackthefootline.sty"
+ \item "hackthefootline-examples.tex" and
+ \item "hackthefootline-doc.tex"
+ \end{itemize}
+
+
+
+ \clearpage
+
+
+
+ % DOCUMENTATION PART ------------------------------------------------------------------------------------------------------------------------
+
+ \section{Using the package}
+ The "\usepackage[<Options>]{hackthefootline}" command loads the package\footnote{To do so, the package has to be installed in a location where \LaTeX\ is able to find it}. A list of all available options can be found in section \ref{packageoptions}.
+
+ \medskip
+ \textbf{Important note:} You \emph{have} to pass the \emph{footline's number of columns} as an option to the package (available: "onecol", "twocols" or "threecols"). If you don't do so, the footline gets removed completely. \\
+ See section \ref{examples-setup} for some examples.
+
+
+
+ \section{Package options} \label{packageoptions}
+ \subsection{Options influencing the footline's configuration}
+ These options determine the number of columns being used for the footline. \\
+ You \emph{have} to pass one of these options when loading "hackthefootline"; otherwise the footline will be removed completely.
+
+ \medskip
+ \DescribeMacro{onecol}
+ The \enquote{initial footline hack} produces a one--column footline
+
+ \medskip
+ \DescribeMacro{twocols}
+ The \enquote{initial footline hack} produces a two--column footline
+
+ \medskip
+ \DescribeMacro{threecols}
+ The \enquote{initial footline hack} produces a three--column footline
+
+ \subsection{Options influencing the package's behavior} \label{behavioropts}
+ These options can be passed to disable additional features and remove dependencies on other packages.
+
+ \medskip
+ \DescribeMacro{countappendix-}\DescribeMacro{frames}
+ If the "countappendixframes" option is passed to the package, appendix frames are counted into the total number of frames. \\
+ \textit{Removes the following dependencies:} "appendixnumberbeamer", "etoolbox"
+
+ \medskip
+ \DescribeMacro{nofun}
+ Doesn't support frame numbers being shown as \enquote{percent of presentation} \\
+ \textit{Removes the following dependencies:} "calc", "numprint"
+
+
+
+ \section{Configuring the footline}
+ The internal mechanisms of "hackthefootline" are using templates for displaying the provided information.
+ Each template is available in different styles, which can be switched using the provided key value syntax:
+
+ \medskip
+ \DescribeMacro{\htfconfig}
+ Use "\htfconfig{key1=value1, key2=value2, …}" to modify the current configuration of the footline. Changes apply instantly. \\
+ See section \ref{examples-switchtemplates} for examples.
+
+ \bigskip
+ All available keys and values are listed below being depicted as follows:
+
+ \medskip
+ \DescribeOption{key}{possible values}{Description of the values' effects}
+
+ \medskip
+ \textbf{Annotations:}
+ \begin{itemize}
+ \item
+ The default values of the keys depend on the number of columns chosen when loading the package. See section \ref{defaultconfig} for further details.
+ \item
+ \textit{Templates not visible} in the default configuration have been hidden by setting the value of the according key to "none". Apply another value to this key and the template will show up. \\
+ \textit{Templates visible} in the default configuration can be hidden by setting the value of the according key to "none" (there's only one exception: "atsep"). \\
+ See section \ref{examples-switchtemplates} for examples.
+ \end{itemize}
+
+ \bigskip
+ \DescribeOption{cols}{one, two, three, none}{%
+ The number of colums used for the footline:
+ \begin{description}\itemsep0pt
+ \item[one]
+ Use a footline consisting of a single column
+ \item[two]
+ Use a footline consisting of two columns
+ \item[three]
+ Use a footline consisting of three columns
+ \item[none]
+ Remove the footline completely
+ \end{description}
+
+ Although the "cols" key's value changes, the other keys' values stay the same. \textbf{If you change the number of columns of a footline, the other keys should be adjusted as well.}
+
+ \medskip
+ \emph{Warning:} Changing this key's value too often might distract your audience.
+ }
+
+ \DescribeOption{title}{short, long, none}{%
+ Sets the title type displayed in the footline:
+ \begin{description}\itemsep0pt
+ \item[short]
+ Show the short title given in the square braces of the \texttt{\textbackslash title} command. \\
+ When no short title is given, the long title will be used.
+ \item[long]
+ Show the long title given in the curly braces of the \texttt{\textbackslash title} command.
+ \item[none]
+ Don't show any title inside the footline
+ \end{description}}
+
+ \DescribeOption{authinst}{onlyauthor, onlyinst, instpths, authpths, both, none}{%
+ Influences the way author and institute are displayed:
+ \begin{description}\itemsep0pt
+ \item[onlyauthor]
+ Show only the author's name
+ \item[onlyinst]
+ Show only the institute's name
+ \item[instpths]
+ Show both, author and institute, but put the institute into parentheses
+ \item[authpths]
+ Show both, author and institute, but put the author into parentheses
+ \item[both]
+ Show both and separate them using a comma
+ \item[none]
+ Show neither author, nor institute
+ \end{description}
+ All templates use the values specified for short author / short institute.
+ }
+
+ \DescribeOption{date}{short, long, none}{%
+ The date displayed in the footline:
+ \begin{description}\itemsep0pt
+ \item[short]
+ Show the short date
+ \item[long]
+ Show the long date
+ \item[none]
+ Do not show any date
+ \end{description}}
+
+ \DescribeOption{framenrs}{counter, fraction, percent, none}{%
+ Controls the type of frame number shown in the footline:
+ \begin{description}\itemsep0pt
+ \item[counter]
+ Only show the number of the current frame
+ \item[fraction]
+ Show the number of the current frame as well as the total number of frames
+ \item[percent]
+ Display the current progress of the presentation displayed as a percent value \\
+ When setting this value, make sure that you didn't pass the "nofun" option when loading the package, otherwise an error message will be thrown.
+ \item[none]
+ Do not show frame numbers
+ \end{description}}
+
+ \DescribeOption{atsep}{colon, comma, space}{%
+ Sets the character used to separate author and title when using the "onecol" footline:
+ \begin{description}\itemsep0pt
+ \item[colon]
+ Use a colon as separator
+ \item[comma]
+ Use a comma as separator
+ \item[space]
+ Use a space as separator
+ \end{description}}
+
+
+
+ \section{Default configurations} \label{defaultconfig}
+ Depending on the selected number of columns, the default configuration of the footlines is as follows:
+
+ \subsection*{One--column footline}
+ "\htfconfig{%" \\
+ " title=short, authinst=both," \\
+ " date=none, framenrs=fraction, atsep=colon}" \\[\smallskipamount]
+ \includegraphics[page=1,width=\textwidth, trim=0 0 0 15, clip]{hackthefootline-examples}
+
+ \subsection*{Two--column footline}
+ "\htfconfig{%" \\
+ " title=short, authinst=onlyauthor," \\
+ " date=none, framenrs=none}" \\[\smallskipamount]
+ \includegraphics[page=2,width=\textwidth, trim=0 0 0 15, clip]{hackthefootline-examples}
+
+ \subsection*{Three-column footline}
+ "\htfconfig{%" \\
+ " title=short, authinst=instpths," \\
+ " date=short, framenrs=fraction}" \\[\smallskipamount]
+ \includegraphics[page=3,width=\textwidth, trim=0 0 0 15, clip]{hackthefootline-examples}
+
+
+
+ \section{Examples}
+ \subsection{Setting up \texttt{hackthefootline}}\label{examples-setup}
+ \paragraph{Example 1:}
+ "\usepackage[onecol]{hackthefootline}" \\
+ \textit{Effect:} A one-column footline \\
+ \includegraphics[page=1, width=\textwidth, trim=0 0 0 15, clip]{hackthefootline-examples}
+
+
+ \paragraph{Example 2:}
+ "\usepackage[twocols]{hackthefootline}" \\
+ \textit{Effect:} A two-column footline \\
+ \includegraphics[page=2, width=\textwidth, trim=0 0 0 15, clip]{hackthefootline-examples}
+
+ \paragraph{Example 3:}
+ "\usepackage[threecols]{hackthefootline}" \\
+ \textit{Effect:} A three-column footline \\
+ \includegraphics[page=3, width=\textwidth, trim=0 0 0 15, clip]{hackthefootline-examples}
+
+ \paragraph{Example 4:}
+ "\usepackage{hackthefootline}" \\
+ \textit{Effect:} The footline gets removed
+
+
+ \subsection{Switching templates}\label{examples-switchtemplates}
+ This section assumes, that the "\usepackage[twocols]{hackthefootline}" command was used to load the "hackthefootline" package. \\[\medskipamount]
+ The preamble contains the following commands for setting the information about title, author, institute and date: \\[\smallskipamount]
+ "\title[Short Introduction]{%" \\
+ " A short introduction on \texttt{hackthefootline}'s facilities}" \\
+ "\author[S. Friedl]{Sebastian Friedl}" \\
+ "\institute[Some Institute]{Some Institute far, far away}" \\
+ "\date[2018/01/15]{January 15, 2018}"
+
+ \medskip
+ We will start with step 1 and continue further on, each step is changing the result of the last one.
+
+ \paragraph{Initial style:}~ \\
+ \includegraphics[page=4, width=\textwidth, trim=0 0 0 15, clip]{hackthefootline-examples}
+
+ \paragraph{Step 1:} Show fraction frame numbers \\
+ \textit{Command:} "\htfconfig{framenrs=fraction}" \\
+ \textit{Effect:} \\
+ \includegraphics[page=5, width=\textwidth, trim=0 0 0 15, clip]{hackthefootline-examples}
+
+ \paragraph{Step 2:} Show the short version of the date \\
+ \textit{Command:} "\htfconfig{date=short}" \\
+ \textit{Effect:} \\
+ \includegraphics[page=6, width=\textwidth, trim=0 0 0 15, clip]{hackthefootline-examples}
+
+ \paragraph{Step 3:} In addition to the author, show the insitute in parentheses \\
+ \textit{Command:} "\htfconfig{authinst=instpths}" \\
+ \textit{Effect:} \\
+ \includegraphics[page=7, width=\textwidth, trim=0 0 0 15, clip]{hackthefootline-examples}
+
+ \paragraph{Step 4:} Show the long, full title \\
+ \textit{Command:} "\htfconfig{title=long}" \\
+ \textit{Effect:} \\
+ \includegraphics[page=8, width=\textwidth, trim=0 0 0 15, clip]{hackthefootline-examples}
+
+ \paragraph{Step 5:} The right column is too full now. Remove the frame numbers \\
+ \textit{Command:} "\htfconfig{framenrs=none}" \\
+ \textit{Effect:} \\
+ \includegraphics[page=9, width=\textwidth, trim=0 0 0 15, clip]{hackthefootline-examples}
+
+ \paragraph{Step 6:} Switch to a one-column footline and remove the date \\
+ \textit{Command:} "\htfconfig{cols=one, date=none}" \\
+ \textit{Effect:} \\
+ \includegraphics[page=10, width=\textwidth, trim=0 0 0 15, clip]{hackthefootline-examples}
+
+ \paragraph{Step 7:} Remove the footline \\
+ \textit{Command:} "\htfconfig{cols=none}" \\
+ \textit{Effect:} No footline will be shown (but a space above the frame's bottom …)
+\end{document} \ No newline at end of file
diff --git a/macros/latex/contrib/beamer-contrib/hackthefootline/doc/hackthefootline-examples.pdf b/macros/latex/contrib/beamer-contrib/hackthefootline/doc/hackthefootline-examples.pdf
new file mode 100644
index 0000000000..c81238f80f
--- /dev/null
+++ b/macros/latex/contrib/beamer-contrib/hackthefootline/doc/hackthefootline-examples.pdf
Binary files differ
diff --git a/macros/latex/contrib/beamer-contrib/hackthefootline/doc/hackthefootline-examples.tex b/macros/latex/contrib/beamer-contrib/hackthefootline/doc/hackthefootline-examples.tex
new file mode 100644
index 0000000000..1c42246ad4
--- /dev/null
+++ b/macros/latex/contrib/beamer-contrib/hackthefootline/doc/hackthefootline-examples.tex
@@ -0,0 +1,101 @@
+%% This is file 'hackthefootline-examples.tex', Version 2018-01-29
+%% Copyright 2017-18 Sebastian Friedl <sfr682k@t-online.de>
+%%
+%% This work may be distributed and/or modified under the conditions of the LaTeX Project
+%% Public License, either version 1.3c of this license or (at your option) any later version.
+%% The latest version of this license is available at
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX version 2008-05-04 or later
+%%
+%% This work has the LPPL maintenace status 'maintained'.
+%% The current maintainer of this work is Sebastian Friedl.
+%%
+%% This work consists of the files hackthefootline.sty, hackthefootline-examples.tex and
+%% hackthefootline-doc.tex
+%%
+%% -------------------------------------------------------------------------------------------
+%%
+%% The hackthefootline package is a tool providing arbitrary footline selection and
+%% configuration for LaTeX beamer's standard themes (it may work with other themes as well)
+%%
+%% -------------------------------------------------------------------------------------------
+%%
+%% Please report bugs and other problems as well as suggestions for improvements
+%% to my email address (sfr682k@t-online.de).
+%%
+%% -------------------------------------------------------------------------------------------
+%%
+%% Acknowledgement:
+%% The basic layout of the two- and three-column footline is based on the original LaTeX
+%% beamer split and infolines outer themes written by Till Tantau.
+%%
+%% -------------------------------------------------------------------------------------------
+
+
+\documentclass[12pt]{beamer}
+
+\usepackage[utf8]{inputenc}
+\usepackage[tabular]{sourcesanspro}
+\usepackage{sourcecodepro}
+
+\usepackage[twocols]{hackthefootline}
+\geometry{paperheight=1cm}
+
+\usecolortheme{whale}
+\usefonttheme[onlysmall]{structurebold}
+\setbeamertemplate{headline}{}
+\setbeamertemplate{navigation symbols}{}
+
+\title{Examples for using the hackthefootline package}
+\author{Sebastian Friedl <sfr682k@t-online.de>}
+
+\begin{document}
+ \title[Short title]{Title}
+ \author[Short author]{Author}
+ \institute[Short institute]{Institute}
+ \date[Short date]{Date}
+
+ \htfconfig{cols=one, title=short, authinst=both, date=none, framenrs=fraction, atsep=colon}
+ \frame{}
+ \addtocounter{framenumber}{-1}
+
+ \htfconfig{cols=two, title=short, authinst=onlyauthor, date=none, framenrs=none}
+ \frame{}
+ \addtocounter{framenumber}{-1}
+
+ \htfconfig{cols=three, title=short, authinst=instpths, date=short, framenrs=fraction}
+ \frame{}
+ \addtocounter{framenumber}{-1}
+
+
+ \title[Short Introduction]{A short introduction on \texttt{hackthefootline}'s facilities}
+ \author[S. Friedl]{Sebastian Friedl}
+ \institute[Some Institute]{Some Institute far, far away}
+ \date[2018/01/15]{January 15, 2018}
+ \htfconfig{cols=two, title=short, authinst=onlyauthor, date=none, framenrs=none}
+ \frame{}
+ \addtocounter{framenumber}{-1}
+
+ \htfconfig{framenrs=fraction}
+ \frame{}
+ \addtocounter{framenumber}{-1}
+
+ \htfconfig{date=short}
+ \frame{}
+ \addtocounter{framenumber}{-1}
+
+ \htfconfig{authinst=instpths}
+ \frame{}
+ \addtocounter{framenumber}{-1}
+
+ \htfconfig{title=long}
+ \frame{}
+ \addtocounter{framenumber}{-1}
+
+ \htfconfig{framenrs=none}
+ \frame{}
+ \addtocounter{framenumber}{-1}
+
+ \htfconfig{cols=one, date=none}
+ \frame{}
+\end{document}
diff --git a/macros/latex/contrib/beamer-contrib/hackthefootline/hackthefootline.sty b/macros/latex/contrib/beamer-contrib/hackthefootline/hackthefootline.sty
new file mode 100644
index 0000000000..14d83c2814
--- /dev/null
+++ b/macros/latex/contrib/beamer-contrib/hackthefootline/hackthefootline.sty
@@ -0,0 +1,397 @@
+%% This is file 'hackthefootline.sty', Version 2018-01-29
+%% Copyright 2017-18 Sebastian Friedl <sfr682k@t-online.de>
+%%
+%% This work may be distributed and/or modified under the conditions of the LaTeX Project
+%% Public License, either version 1.3c of this license or (at your option) any later version.
+%% The latest version of this license is available at
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX version 2008-05-04 or later
+%%
+%% This work has the LPPL maintenace status 'maintained'.
+%% The current maintainer of this work is Sebastian Friedl.
+%%
+%% This work consists of the files hackthefootline.sty, hackthefootline-examples.tex and
+%% hackthefootline-doc.tex
+%%
+%% -------------------------------------------------------------------------------------------
+%%
+%% The hackthefootline package is a tool providing arbitrary footline selection and
+%% configuration for LaTeX beamer's standard themes (it may work with other themes as well)
+%%
+%% -------------------------------------------------------------------------------------------
+%%
+%% Please report bugs and other problems as well as suggestions for improvements
+%% to my email address (sfr682k@t-online.de).
+%%
+%% -------------------------------------------------------------------------------------------
+%%
+%% Acknowledgement:
+%% The basic layout of the two- and three-column footline is based on the original LaTeX
+%% beamer split and infolines outer themes written by Till Tantau.
+%%
+%% -------------------------------------------------------------------------------------------
+
+
+\ProvidesPackage{hackthefootline}[2018/01/29 hackthefootline: Arbitrary footline selection and configuration for LaTeX beamer's standard themes]
+\mode<presentation>
+
+\RequirePackage{ifthen}
+\RequirePackage{pgfkeys}
+
+\newcommand{\htfprintmessage}{%
+ \typeout{}
+ \typeout{========================================}
+ \typeout{THE FOOTLINE HAS BEEN TAKEN OVER}
+ \typeout{by the hackthefootline package}
+ \typeout{Version 2018/01/29}
+ \typeout{}
+ \typeout{(c) 2017-18 Sebastian Friedl}
+ \typeout{Licensed under LPPL 1.3c or later}
+ \typeout{========================================}
+ \typeout{}}
+
+
+
+% PACKAGE OPTIONS AND VARIABLES -- INCLUDES AUXILIARY STUFF -------------------------------------------------------------------------------------
+
+\DeclareOptionBeamer{onecol}{%
+ \htfconfig{title=short, authinst=both, date=none, framenrs=fraction, atsep=colon}%
+ \AtBeginDocument{\htfconfig{cols=one}}\htfprintmessage}
+\DeclareOptionBeamer{twocols}{%
+ \htfconfig{title=short, authinst=onlyauthor, date=none, framenrs=none, atsep=colon}%
+ \AtBeginDocument{\htfconfig{cols=two}}\htfprintmessage}
+\DeclareOptionBeamer{threecols}{%
+ \htfconfig{title=short, authinst=instpths, date=short, framenrs=fraction, atsep=colon}%
+ \AtBeginDocument{\htfconfig{cols=three}}\htfprintmessage}
+
+\newif\ifbeamer@htfcountappendixframes
+\beamer@htfcountappendixframesfalse
+\DeclareOptionBeamer{countappendixframes}{\beamer@htfcountappendixframestrue}
+
+\newif\ifbeamer@htffunnystuff
+\beamer@htffunnystufftrue
+\DeclareOptionBeamer{nofun}{\beamer@htffunnystufffalse}
+
+
+
+% Check for author and/or institute when inserting the separation symbol?
+\newif\ifbeamer@htfcheckauth
+\newif\ifbeamer@htfcheckinst
+\newif\ifbeamer@htfinsertsep
+\newcommand{\htfcheckauthor}{\beamer@htfcheckauthtrue\beamer@htfcheckinstfalse}
+\newcommand{\htfcheckinstit}{\beamer@htfcheckauthfalse\beamer@htfcheckinsttrue}
+\newcommand{\htfcheckboth}{\beamer@htfcheckauthtrue\beamer@htfcheckinsttrue}
+\newcommand{\htfchecknone}{\beamer@htfcheckauthfalse\beamer@htfcheckinstfalse}
+
+% Variables
+\newif\ifbeamer@htfnotitle
+\newif\ifbeamer@htfshowframenrs
+
+% Own replacement for \beamer@inappendix; required for compatibility reasons
+\newif\ifbeamer@htfinsideappendix
+\beamer@htfinsideappendixfalse
+
+
+
+% TEMPLATES -------------------------------------------------------------------------------------------------------------------------------------
+% Please **always** use \defbeamertemplate **without asterisk**!!
+
+% Title
+\defbeamertemplate{htf-title}{none}{}
+\defbeamertemplate{htf-title}{short}{\insertshorttitle}
+\defbeamertemplate{htf-title}{long}{\inserttitle}
+
+% Author/Institute
+\defbeamertemplate{htf-authinst}{none}{}
+\defbeamertemplate{htf-authinst}{onlyauth}{\insertshortauthor}
+\defbeamertemplate{htf-authinst}{onlyinst}{\insertshortinstitute}
+\defbeamertemplate{htf-authinst}{instpths}{\insertshortauthor\ifx\beamer@shortinstitute\@empty\else~~(\insertshortinstitute)\fi}
+\defbeamertemplate{htf-authinst}{authpths}{\insertshortinstitute\ifx\beamer@shortauthor\@empty\else~~(\insertshortauthor)\fi}
+\defbeamertemplate{htf-authinst}{bothcmma}{\insertshortauthor\ifx\beamer@shortinstitute\@empty\else,~\insertshortinstitute\fi}
+
+% Date
+\defbeamertemplate{htf-date}{none}{}
+\defbeamertemplate{htf-date}{short}{\insertshortdate}
+\defbeamertemplate{htf-date}{long}{\insertdate}
+
+% Frame Numbers
+\defbeamertemplate{htf-framenrs}{none}{}
+\defbeamertemplate{htf-framenrs}{counter}{\insertframenumber}
+\defbeamertemplate{htf-framenrs}{fraction}{%
+ \ifbeamer@htfcountappendixframes{\insertframenumber~/~\inserttotalframenumber}%
+ \else%
+ \ifx\insertmainframenumber\@undefined{\insertframenumber~/~\inserttotalframenumber}%
+ \else%
+ % beamer v3.49 and later: detect whether appendix has been entered and use the required templates and use internal cmds
+ \ifbeamer@htfinsideappendix{\insertframenumberinappendix~/~\insertappendixframenumber}%
+ \else{\insertframenumber~/~\insertmainframenumber}%
+ \fi%
+ \fi%
+ \fi}
+\ifbeamer@htffunnystuff
+ \defbeamertemplate{htf-framenrs}{percent}{\htfupdateprogress\nprounddigits{0}\lenprint[htfpercent]{\htfprogress}}
+\fi
+
+
+% Author-Title-Seperator
+\defbeamertemplate{htf-atsep}{colon}{:~~~~}
+\defbeamertemplate{htf-atsep}{comma}{,~}
+\defbeamertemplate{htf-atsep}{space}{~~~~~~~~~~}
+
+
+
+% FOOTLINE DEFINITIONS --------------------------------------------------------------------------------------------------------------------------
+
+% Auxiliary length
+\newlength{\htfframenrboxwidth}%
+
+% No footline
+\defbeamertemplate*{footline}{htf-none}{}
+
+% One column
+\defbeamertemplate{footline}{htf-onecol}{%
+ \begin{beamercolorbox}[wd=\paperwidth,ht=2.25ex,dp=1ex,leftskip=.3cm,rightskip=.3cm]{palette primary}%
+ \usebeamerfont{author in head/foot}%
+ \usebeamertemplate{htf-authinst}%
+ %
+ \beamer@htfinsertsepfalse
+ \ifbeamer@htfcheckauth\ifx\beamer@shortauthor\@empty\else\beamer@htfinsertseptrue\fi\fi
+ \ifbeamer@htfcheckinst\ifx\beamer@shortinstitute\@empty\else\beamer@htfinsertseptrue\fi\fi
+ %
+ \ifx\beamer@shorttitle\@empty\beamer@htfinsertsepfalse\fi
+ \ifbeamer@htfnotitle\beamer@htfinsertsepfalse\fi
+ %
+ \ifbeamer@htfinsertsep\usebeamertemplate{htf-atsep}\fi
+ %
+ \usebeamerfont{title in head/foot}
+ \usebeamertemplate{htf-title}
+ \hfill
+ \usebeamercolor{date in head/foot}
+ \usebeamertemplate{htf-date}
+ %
+ % Measure the largest required space when printing frame numbers
+ \newbox\htfpagenumbox%
+ \newbox\htfpercframenumbox%
+ \setbox\htfpagenumbox=\hbox{0\inserttotalframenumber~/~0\inserttotalframenumber}%
+ \setbox\htfpercframenumbox=\hbox{100\,\%}%
+ \ifthenelse{\lengthtest{\wd\htfpagenumbox > \wd\htfpercframenumbox}}%
+ {\setlength{\htfframenrboxwidth}{\wd\htfpagenumbox}}%
+ {\setlength{\htfframenrboxwidth}{\wd\htfpercframenumbox}}%
+ %
+ \ifbeamer@htfshowframenrs \hspace{\htfframenrboxwidth}\hspace{.2\htfframenrboxwidth}~\fi%
+ \end{beamercolorbox}%
+ \ifbeamer@htfshowframenrs
+ \vspace{-3.25ex}
+ \hfill%
+ \addtolength{\htfframenrboxwidth}{.3cm}%
+ \addtolength{\htfframenrboxwidth}{2em}%
+ \addtolength{\htfframenrboxwidth}{.5\htfframenrboxwidth}%
+ \hspace{-1.3\htfframenrboxwidth}%
+ \begin{beamercolorbox}[wd=1.3\htfframenrboxwidth,ht=2.25ex,dp=1ex,right,rightskip=.3cm]{bg}%
+ % The color *has* to be set here; otherwise, the page number box will cover parts of the date
+ \usebeamercolor[fg]{date in head/foot}\usebeamertemplate{htf-framenrs}
+ \end{beamercolorbox}%
+ \fi}
+
+% Two columns
+\defbeamertemplate{footline}{htf-twocols}{%
+ \leavevmode%
+ \hbox{\begin{beamercolorbox}[wd=.5\paperwidth,ht=2.5ex,dp=1.125ex,leftskip=.3cm,rightskip=.3cm]{author in head/foot}%
+ \usebeamerfont{author in head/foot}\usebeamertemplate{htf-date}\hfill\usebeamertemplate{htf-authinst}
+ \end{beamercolorbox}%
+ \begin{beamercolorbox}[wd=.5\paperwidth,ht=2.5ex,dp=1.125ex,leftskip=.3cm,rightskip=.3cm]{title in head/foot}%
+ \usebeamerfont{title in head/foot}\usebeamertemplate{htf-title}\hfill
+ \ifbeamer@htfshowframenrs \usebeamertemplate{htf-framenrs} \fi
+ \end{beamercolorbox}}%
+ \vskip0pt}
+
+% Three columns
+\defbeamertemplate{footline}{htf-threecols}{
+ \leavevmode%
+ \hbox{%
+ \begin{beamercolorbox}[wd=.333333\paperwidth,ht=2.25ex,dp=1ex,left,leftskip=.3cm]{author in head/foot}%
+ \usebeamerfont{author in head/foot}\usebeamertemplate{htf-authinst}
+ \end{beamercolorbox}%
+ \begin{beamercolorbox}[wd=.333333\paperwidth,ht=2.25ex,dp=1ex,center]{title in head/foot}%
+ \usebeamerfont{title in head/foot}\usebeamertemplate{htf-title}
+ \end{beamercolorbox}%
+ \begin{beamercolorbox}[wd=.333333\paperwidth,ht=2.25ex,dp=1ex,right,rightskip=.3cm]{date in head/foot}%
+ \usebeamerfont{date in head/foot}\usebeamertemplate{htf-date}%
+ %
+ % Measure the largest required space when printing frame numbers
+ \newbox\htfpagenumbox%
+ \newbox\htfpercframenumbox%
+ \setbox\htfpagenumbox=\hbox{0\inserttotalframenumber~/~0\inserttotalframenumber}%
+ \setbox\htfpercframenumbox=\hbox{100\,\%}%
+ \ifthenelse{\lengthtest{\wd\htfpagenumbox > \wd\htfpercframenumbox}}%
+ {\setlength{\htfframenrboxwidth}{\wd\htfpagenumbox}}%
+ {\setlength{\htfframenrboxwidth}{\wd\htfpercframenumbox}}%
+ %
+ \ifbeamer@htfshowframenrs \hspace{\htfframenrboxwidth}\hspace{.2\htfframenrboxwidth}~\fi%
+ \end{beamercolorbox}%
+ \ifbeamer@htfshowframenrs%
+ \addtolength{\htfframenrboxwidth}{.3cm}%
+ \addtolength{\htfframenrboxwidth}{2em}%
+ \addtolength{\htfframenrboxwidth}{.5\htfframenrboxwidth}%
+ \hspace{-1.3\htfframenrboxwidth}%
+ \begin{beamercolorbox}[wd=1.3\htfframenrboxwidth,ht=2.25ex,dp=1ex,right,rightskip=.3cm]{bg}%
+ % The color *has* to be set here; otherwise, the page number box will cover parts of the date
+ \usebeamercolor[fg]{date in head/foot}\usebeamertemplate{htf-framenrs}
+ \end{beamercolorbox}%
+ \fi}%
+ \vskip0pt}
+
+
+
+% PGF KEYS STORING THE CURRENT FOOTLINE CONFIGURATION -------------------------------------------------------------------------------------------
+
+\pgfkeys{/hackthefootline/cols/.cd,
+ .is choice, .default=none,
+ one/.code={\setbeamertemplate{footline}[htf-onecol]\beamer@calculateheadfoot},
+ two/.code={\setbeamertemplate{footline}[htf-twocols]\beamer@calculateheadfoot},
+ three/.code={\setbeamertemplate{footline}[htf-threecols]\beamer@calculateheadfoot},
+ none/.code={%
+ \htfconfig{framenrs=none}%
+ \setbeamertemplate{footline}[htf-none]%
+ \beamer@calculateheadfoot},
+}
+
+\pgfkeys{/hackthefootline/title/.cd,
+ .is choice, .default=none,
+ short/.code={\setbeamertemplate{htf-title}[short]\beamer@htfnotitlefalse},
+ long/.code={\setbeamertemplate{htf-title}[long]\beamer@htfnotitlefalse},
+ none/.code={\setbeamertemplate{htf-title}[none]\beamer@htfnotitletrue},
+}
+
+\pgfkeys{/hackthefootline/authinst/.cd,
+ .is choice, .default=none,
+ onlyauthor/.code={\setbeamertemplate{htf-authinst}[onlyauth]\htfcheckauthor},
+ onlyinst/.code={\setbeamertemplate{htf-authinst}[onlyinst]\htfcheckinstit},
+ instpths/.code={\setbeamertemplate{htf-authinst}[instpths]\htfcheckboth},
+ authpths/.code={\setbeamertemplate{htf-authinst}[authpths]\htfcheckboth},
+ both/.code={\setbeamertemplate{htf-authinst}[bothcmma]\htfcheckboth},
+ none/.code={\setbeamertemplate{htf-authinst}[none]\htfchecknone},
+}
+
+\pgfkeys{/hackthefootline/date/.cd,
+ .is choice, .default=none,
+ short/.code={\setbeamertemplate{htf-date}[short]},
+ long/.code={\setbeamertemplate{htf-date}[long]},
+ none/.code={\setbeamertemplate{htf-date}[none]}
+}
+
+\pgfkeys{/hackthefootline/framenrs/.cd,
+ .is choice, .default=none,
+ counter/.code={\setbeamertemplate{htf-framenrs}[counter]\beamer@htfshowframenrstrue},
+ fraction/.code={\setbeamertemplate{htf-framenrs}[fraction]\beamer@htfshowframenrstrue},
+ percent/.code={%
+ \ifbeamer@htffunnystuff \setbeamertemplate{htf-framenrs}[percent]%
+ \else \PackageError{hackthefootline}{Do not pass the nofun option when using percent frame numbers!}{}%
+ \fi
+ \beamer@htfshowframenrstrue%
+ },
+ none/.code={\setbeamertemplate{htf-framenrs}[none]\beamer@htfshowframenrsfalse},
+}
+
+\pgfkeys{/hackthefootline/atsep/.cd,
+ .is choice, .default=colon,
+ colon/.code={\setbeamertemplate{htf-atsep}[colon]},
+ comma/.code={\setbeamertemplate{htf-atsep}[comma]},
+ space/.code={\setbeamertemplate{htf-atsep}[space]},
+}
+
+% Configruation Command
+\newcommand{\htfconfig}[1]{\pgfkeys{/hackthefootline/.cd,#1}}
+
+
+
+% FORMER CONFIGURATION COMMANDS (OBSOLETE!!) ----------------------------------------------------------------------------------------------------
+
+% These configuration commands have been introduced in the initial release of this package and were implemented very ineffective.
+% Since using pgfkeys for switching the templates, the \htfconfig command has been introduced for easier footline configuration.
+% All commands defined in this section obsolete now and should be replaced by \htfconfig, since they may be removed soon.
+
+% Obsolete commands for switching templates
+\newcommand{\htfnotitle}{\htfObsoleteCMD\htfconfig{title=none}}
+\newcommand{\htfshorttitle}{\htfObsoleteCMD\htfconfig{title=short}}
+\newcommand{\htflongtitle}{\htfObsoleteCMD\htfconfig{title=none}}
+\newcommand{\htfnoauthinst}{\htfObsoleteCMD\htfconfig{authinst=none}}
+\newcommand{\htfonlyauthor}{\htfObsoleteCMD\htfconfig{authinst=onlyauthor}}
+\newcommand{\htfonlyinstitute}{\htfObsoleteCMD\htfconfig{authinst=onlyinst}}
+\newcommand{\htfinstitutepths}{\htfObsoleteCMD\htfconfig{authinst=instpths}}
+\newcommand{\htfauthorpths}{\htfObsoleteCMD\htfconfig{authinst=authpths}}
+\newcommand{\htfauthinst}{\htfObsoleteCMD\htfconfig{authinst=both}}
+\newcommand{\htfnodate}{\htfObsoleteCMD\htfconfig{date=none}}
+\newcommand{\htfshortdate}{\htfObsoleteCMD\htfconfig{date=short}}
+\newcommand{\htflongdate}{\htfObsoleteCMD\htfconfig{date=long}}
+\newcommand{\htfnoframenrs}{\htfObsoleteCMD\htfconfig{framenrs=none}}
+\newcommand{\htfcounterframenrs}{\htfObsoleteCMD\htfconfig{framenrs=counter}}
+\newcommand{\htffractionframenrs}{\htfObsoleteCMD\htfconfig{framenrs=fraction}}
+\newcommand{\htfpercentframenrs}{\htfObsoleteCMD\htfconfig{framenrs=percent}}
+\newcommand{\htfcolonsep}{\htfObsoleteCMD\htfconfig{atsep=colon}}
+\newcommand{\htfcommasep}{\htfObsoleteCMD\htfconfig{atsep=comma}}
+\newcommand{\htfsepspace}{\htfObsoleteCMD\htfconfig{atsep=space}}
+
+% This command was used to apply changes, but is useless now.
+\newcommand{\hackthefootline}{%
+ \PackageWarning{hackthefootline}{%
+ The \protect\hackthefootline command is obsolete and may be removed soon. Consider using \noexpand\htfconfig instead}}
+
+% A shorthand for printing an "this command is obsolete" warning
+\newcommand{\htfObsoleteCMD}{%
+ \PackageWarning{hackthefootline}{%
+ The old \noexpand\htf... commands are obsolete and may be removed soon. Consider using \noexpand\htfconfig instead}
+}
+
+
+
+% PROCESS OPTIONS -------------------------------------------------------------------------------------------------------------------------------
+% This *has* to be done here, otherwise mysterious things will happen ...
+% and too many packages will be required ...
+
+\ProcessOptionsBeamer
+
+
+
+% ACTIONS FOR NOT COUNTING APPENDIX FRAMES ------------------------------------------------------------------------------------------------------
+
+\ifbeamer@htfcountappendixframes\else
+ % Required packages
+ \ifx\insertmainframenumber\@undefined\RequirePackage{appendixnumberbeamer}\fi % only beamer v3.48 and earlier
+ \RequirePackage{etoolbox}
+
+ % Removes frame numbers for appendix slides
+ \apptocmd{\appendix}{%
+ \htfconfig{framenrs=none}
+ \beamer@htfinsideappendixtrue
+ }{}{}
+\fi
+
+
+
+% REQUIREMENTS FOR SOME "FUNNY STUFF" -----------------------------------------------------------------------------------------------------------
+
+\ifbeamer@htffunnystuff
+ % Frame numbering in %: requirements, package settings, variables, commands
+ \RequirePackage{calc}
+ \RequirePackage[addmissingzero,autolanguage,nosepfour]{numprint}
+ \npdefunit{htfpercent}{\%}{1}
+ \newlength{\htfprogress}
+ \def\htfupdateprogress{%
+ \ifbeamer@htfcountappendixframes\setlength{\htfprogress}{100pt*\ratio{\insertframenumber pt}{\inserttotalframenumber pt}}%
+ \else%
+ \ifx\insertmainframenumber\@undefined\setlength{\htfprogress}{100pt*\ratio{\insertframenumber pt}{\inserttotalframenumber pt}}%
+ \else%
+ \ifbeamer@htfinsideappendix\setlength{\htfprogress}{100pt*\ratio{\insertframenumberinappendix pt}{\insertappendixframenumber pt}}%
+ \else\setlength{\htfprogress}{100pt*\ratio{\insertframenumber pt}{\insertmainframenumber pt}}%
+ \fi%
+ \fi%
+ \fi}
+\fi
+
+
+
+% END OF FILE -----------------------------------------------------------------------------------------------------------------------------------
+
+\mode<all>
+\endinput \ No newline at end of file