diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/beamer-contrib/hackthefootline |
Initial commit
Diffstat (limited to 'macros/latex/contrib/beamer-contrib/hackthefootline')
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 Binary files differnew file mode 100644 index 0000000000..3c4fd7485e --- /dev/null +++ b/macros/latex/contrib/beamer-contrib/hackthefootline/doc/hackthefootline-doc.pdf 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 Binary files differnew file mode 100644 index 0000000000..c81238f80f --- /dev/null +++ b/macros/latex/contrib/beamer-contrib/hackthefootline/doc/hackthefootline-examples.pdf 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 |