diff options
author | Karl Berry <karl@freefriends.org> | 2017-08-05 20:55:42 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2017-08-05 20:55:42 +0000 |
commit | 180ddd3112dacd2d1cd160d1ccdd872050f0e635 (patch) | |
tree | 76b2db66582e174af34df0da09e90a455fb602a0 /Master/texmf-dist/tex/latex | |
parent | fba37f2abc84c6491ce81bef9e233dd9bfdabfaa (diff) |
hackthefootline (5aug17)
git-svn-id: svn://tug.org/texlive/trunk@44959 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex')
-rw-r--r-- | Master/texmf-dist/tex/latex/hackthefootline/hackthefootline.sty | 414 |
1 files changed, 414 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/hackthefootline/hackthefootline.sty b/Master/texmf-dist/tex/latex/hackthefootline/hackthefootline.sty new file mode 100644 index 00000000000..3b59d32441a --- /dev/null +++ b/Master/texmf-dist/tex/latex/hackthefootline/hackthefootline.sty @@ -0,0 +1,414 @@ +%% This is file 'hackthefootline.sty', Version 2017-08-04 +%% Copyright 2017 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 and hackthefootline-doc.tex +%% +%% ------------------------------------------------------------------------------------------- +%% +%% The hackthefootline package is a tool providing arbitrary footline selection 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}[2017/08/04 hackthefootline: arbitrary footline selection for LaTeX beamer's standard themes] +\mode<presentation> + + + +\newcommand{\htfprintmessage}{% + \typeout{} + \typeout{========================================} + \typeout{FOOTLINE HACK PERFORMED} + \typeout{} + \typeout{hackthefootline package} + \typeout{Version 2017/08/04} + \typeout{} + \typeout{(c) 2017 Sebastian Friedl} + \typeout{Licensed under LPPL 1.3c or later} + \typeout{========================================} + \typeout{}} + + + +% OPTION AND VARIABLES DECLARATION -------------------------------------------------------------------------------------------------------------- + +\newif\ifbeamer@htfonecolfootline +\beamer@htfonecolfootlinefalse +\DeclareOptionBeamer{onecol}{\beamer@htfonecolfootlinetrue} + +\newif\ifbeamer@htftwocolsfootline +\beamer@htftwocolsfootlinefalse +\DeclareOptionBeamer{twocols}{\beamer@htftwocolsfootlinetrue} + +\newif\ifbeamer@htfthreecolsfootline +\beamer@htfthreecolsfootlinefalse +\DeclareOptionBeamer{threecols}{\beamer@htfthreecolsfootlinetrue} + +\newif\ifbeamer@htfcountappendixframes +\beamer@htfcountappendixframesfalse +\DeclareOptionBeamer{countappendixframes}{\beamer@htfcountappendixframestrue} + +\newif\ifbeamer@htffunnystuff +\beamer@htffunnystufftrue +\DeclareOptionBeamer{nofun}{\beamer@htffunnystufffalse} + + +\ProcessOptionsBeamer + + +% Show frame numbers? +\newif\ifbeamer@htfshowframenrs +\beamer@htfshowframenrstrue + +% 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} + +% Has the navigation bar been removed by the package? +\newif\ifbeamer@navigationremoved +\beamer@navigationremovedfalse + +% Variables +\newif\ifbeamer@htfnotitle \newif\ifbeamer@htfshorttitle \newif\ifbeamer@htflongtitle +\newif\ifbeamer@htfnoauthinst \newif\ifbeamer@htfonlyauthor \newif\ifbeamer@htfonlyinstitute +\newif\ifbeamer@htfinstitutepths \newif\ifbeamer@htfauthorpths \newif\ifbeamer@htfauthinst +\newif\ifbeamer@htfnodate \newif\ifbeamer@htfshortdate \newif\ifbeamer@htflongdate +\newif\ifbeamer@htfnoframenrs \newif\ifbeamer@htfcounterframenrs \newif\ifbeamer@htffractionframenrs +\newif\ifbeamer@htfpercentframenrs +\newif\ifbeamer@htfcolonsep \newif\ifbeamer@htfcommasep \newif\ifbeamer@htfsepspace +\newif\ifbeamer@htfnofootline + + + +% DEFAULT VALUES -------------------------------------------------------------------------------------------------------------------------------- + +\beamer@htfnofootlinefalse +\ifbeamer@htfonecolfootline\else + \ifbeamer@htftwocolsfootline\else + \ifbeamer@htfthreecolsfootline\else + \beamer@htfnofootlinetrue +\fi \fi \fi + +\newcommand{\htfnofootlinedefault}{% + \beamer@htfnoframenrstrue \beamer@htfcounterframenrsfalse \beamer@htffractionframenrsfalse + \beamer@htfpercentframenrsfalse \beamer@htfshowframenrsfalse +} + +\newcommand{\htfonecolfootlinedefault}{% + \beamer@htfnotitlefalse \beamer@htfshorttitletrue \beamer@htflongtitlefalse + \beamer@htfnoauthinstfalse \beamer@htfonlyauthorfalse \beamer@htfonlyinstitutefalse + \beamer@htfinstitutepthsfalse \beamer@htfauthorpthsfalse \beamer@htfauthinsttrue + \beamer@htfnodatetrue \beamer@htfshortdatefalse \beamer@htflongdatefalse + \beamer@htfnoframenrsfalse \beamer@htfcounterframenrsfalse \beamer@htffractionframenrstrue + \beamer@htfpercentframenrsfalse + \beamer@htfcolonseptrue \beamer@htfcommasepfalse \beamer@htfsepspacefalse +} + +\newcommand{\htftwocolsfootlinedefault}{% + \beamer@htfnotitlefalse \beamer@htfshorttitletrue \beamer@htflongtitlefalse + \beamer@htfnoauthinstfalse \beamer@htfonlyauthortrue \beamer@htfonlyinstitutefalse + \beamer@htfinstitutepthsfalse \beamer@htfauthorpthsfalse \beamer@htfauthinstfalse + \beamer@htfnodatetrue \beamer@htfshortdatefalse \beamer@htflongdatefalse + \beamer@htfnoframenrstrue \beamer@htfcounterframenrsfalse \beamer@htffractionframenrsfalse + \beamer@htfpercentframenrsfalse +} + +\newcommand{\htfthreecolsfootlinedefault}{% + \beamer@htfnotitlefalse \beamer@htfshorttitletrue \beamer@htflongtitlefalse + \beamer@htfnoauthinstfalse \beamer@htfonlyauthorfalse \beamer@htfonlyinstitutefalse + \beamer@htfinstitutepthstrue \beamer@htfauthorpthsfalse \beamer@htfauthinstfalse + \beamer@htfnodatefalse \beamer@htfshortdatetrue \beamer@htflongdatefalse + \beamer@htfnoframenrsfalse \beamer@htfcounterframenrsfalse \beamer@htffractionframenrstrue + \beamer@htfpercentframenrsfalse +} + + + +% ACTIONS FOR NOT COUNTING APPENDIX FRAMES ------------------------------------------------------------------------------------------------------ + +\ifbeamer@htfcountappendixframes\else + % Required packages + \RequirePackage{appendixnumberbeamer} + \RequirePackage{etoolbox} + + % Removes frame numbers for appendix slides + \apptocmd{\appendix}{% + \beamer@htfshowframenrsfalse + }{}{} +\fi + + + +% REQUIREMENTS FOR SOME "FUNNY STUFF" ----------------------------------------------------------------------------------------------------------- + +\ifbeamer@htffunnystuff + % Frame numbering in %: requirements, package settings, variables, commands + \RequirePackage{calc} + \RequirePackage[addmissingzero,autolanguage,nosepfour]{numprint} + \npdefunit{percent}{\%}{1} + \newlength{\progress} + \newcommand{\updateprogress}{\setlength{\progress}{100pt*\ratio{\insertframenumber pt}{\inserttotalframenumber pt}}} +\fi + + + +% TEMPLATES: TITLE ------------------------------------------------------------------------------------------------------------------------------ + +\defbeamertemplate*{htf-title}{none}{} +\defbeamertemplate*{htf-title}{short}{\insertshorttitle} +\defbeamertemplate*{htf-title}{long}{\inserttitle} + + + +% TEMPLATES: 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} + + + +% TEMPLATES: DATE ------------------------------------------------------------------------------------------------------------------------------- + +\defbeamertemplate*{htf-date}{none}{} +\defbeamertemplate*{htf-date}{short}{\insertshortdate} +\defbeamertemplate*{htf-date}{long}{\insertdate} + + + +% TEMPLATES: FRAME NUMBERS ---------------------------------------------------------------------------------------------------------------------- + +\defbeamertemplate*{htf-framenrs}{none}{} +\defbeamertemplate*{htf-framenrs}{counter}{\insertframenumber} +\defbeamertemplate*{htf-framenrs}{fraction}{\insertframenumber~/~\inserttotalframenumber} +\ifbeamer@htffunnystuff + \defbeamertemplate*{htf-framenrs}{percent}{\updateprogress\nprounddigits{0}\lenprint[percent]{\progress}} +\fi + + + +% TEMPLATES: AUTHOR-TITLE-SEPERATOR ------------------------------------------------------------------------------------------------------------- + +\defbeamertemplate*{htf-atsep}{colon}{:~~~~} +\defbeamertemplate*{htf-atsep}{comma}{,~} +\defbeamertemplate*{htf-atsep}{space}{~~~~~~~~~~} + + + +% FOOTLINE DEFINITIONS -------------------------------------------------------------------------------------------------------------------------- + +% 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} + % Dummy space for frame numbers + \ifbeamer@htfshowframenrs \hspace{5.75em} \fi + \end{beamercolorbox}% + \ifbeamer@htfshowframenrs + \vspace{-3.25ex} + \hfill% + \begin{beamercolorbox}[wd=6.25em,ht=2.25ex,dp=1ex,right,rightskip=.3cm]{palette primary} + \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}% + % Dummy space for frame numbers + \ifbeamer@htfshowframenrs \hspace{5.75em} \fi + \end{beamercolorbox}% + \ifbeamer@htfshowframenrs% + \hspace{-6.25em}% + \begin{beamercolorbox}[wd=6.25em,ht=2.25ex,dp=1ex,right,rightskip=.3cm]{date in head/foot}% + \usebeamertemplate{htf-framenrs} + \end{beamercolorbox}% + \fi}% + \vskip0pt} + + + +% CONFIGURATION COMMANDS ------------------------------------------------------------------------------------------------------------------------ + +% Internal commands setting all variables of a certain template to "false" +\newcommand{\htfcleartitle}{% + \beamer@htfnotitlefalse \beamer@htfshorttitlefalse \beamer@htflongtitlefalse} +\newcommand{\htfclearauthinst}{% + \beamer@htfnoauthinstfalse \beamer@htfonlyauthorfalse \beamer@htfonlyinstitutefalse + \beamer@htfinstitutepthsfalse \beamer@htfauthorpthsfalse \beamer@htfauthinstfalse} +\newcommand{\htfcleardate}{% + \beamer@htfnodatefalse \beamer@htfshortdatefalse \beamer@htflongdatefalse} +\newcommand{\htfclearframenrs}{% + \beamer@htfnoframenrsfalse \beamer@htfcounterframenrsfalse \beamer@htffractionframenrsfalse + \beamer@htfpercentframenrsfalse \beamer@htfshowframenrsfalse} +\newcommand{\htfclearsep}{% + \beamer@htfcolonsepfalse \beamer@htfcommasepfalse \beamer@htfsepspacefalse} +\newcommand{\htfclearfootline}{% + \beamer@htfonecolfootlinefalse \beamer@htftwocolsfootlinefalse \beamer@htfthreecolsfootlinefalse + \beamer@htfnofootlinefalse} + +% Commands switching the title template +\newcommand{\htfnotitle}{ \htfcleartitle \beamer@htfnotitletrue} +\newcommand{\htfshorttitle}{ \htfcleartitle \beamer@htfshorttitletrue} +\newcommand{\htflongtitle}{ \htfcleartitle \beamer@htflongtitletrue} + +% Commands switching the author/institute template +\newcommand{\htfnoauthinst}{ \htfclearauthinst \beamer@htfnoauthinsttrue} +\newcommand{\htfonlyauthor}{ \htfclearauthinst \beamer@htfonlyauthortrue} +\newcommand{\htfonlyinstitute}{ \htfclearauthinst \beamer@htfonlyinstitutetrue} +\newcommand{\htfinstitutepths}{ \htfclearauthinst \beamer@htfinstitutepthstrue} +\newcommand{\htfauthorpths}{ \htfclearauthinst \beamer@htfauthorpthstrue} +\newcommand{\htfauthinst}{ \htfclearauthinst \beamer@htfauthinsttrue} + +% Commands switching the date template +\newcommand{\htfnodate}{ \htfcleardate \beamer@htfnodatetrue} +\newcommand{\htfshortdate}{ \htfcleardate \beamer@htfshortdatetrue} +\newcommand{\htflongdate}{ \htfcleardate \beamer@htflongdatetrue} + +% Commands switching the frame numbering template +\newcommand{\htfnoframenrs}{ \htfclearframenrs \beamer@htfnoframenrstrue} +\newcommand{\htfcounterframenrs}{ \htfclearframenrs \beamer@htfcounterframenrstrue \beamer@htfshowframenrstrue} +\newcommand{\htffractionframenrs}{ \htfclearframenrs \beamer@htffractionframenrstrue \beamer@htfshowframenrstrue} +\newcommand{\htfpercentframenrs}{ \htfclearframenrs \beamer@htfpercentframenrstrue \beamer@htfshowframenrstrue} + +% Commands switching the author/title separator template +\newcommand{\htfcolonsep}{ \htfclearsep \beamer@htfcolonseptrue} +\newcommand{\htfcommasep}{ \htfclearsep \beamer@htfcommaseptrue} +\newcommand{\htfsepspace}{ \htfclearsep \beamer@htfsepspacetrue} + + + +% HACKING COMMAND ------------------------------------------------------------------------------------------------------------------------------- + +\newcommand{\hackthefootline}{% + \htfprintmessage + + % Selects footline layout + \ifbeamer@htfonecolfootline \setbeamertemplate{footline}[htf-onecol] + \else \ifbeamer@htftwocolsfootline \setbeamertemplate{footline}[htf-twocols] + \else \ifbeamer@htfthreecolsfootline \setbeamertemplate{footline}[htf-threecols] + \else \setbeamertemplate{footline}[htf-none] + \fi \fi \fi + + % Title + \ifbeamer@htfnotitle \setbeamertemplate{htf-title}[none] \fi + \ifbeamer@htfshorttitle \setbeamertemplate{htf-title}[short] \fi + \ifbeamer@htflongtitle \setbeamertemplate{htf-title}[long] \fi + + % Author/Institute + \ifbeamer@htfnoauthinst \setbeamertemplate{htf-authinst}[none] \htfchecknone \fi + \ifbeamer@htfonlyauthor \setbeamertemplate{htf-authinst}[onlyauth] \htfcheckauthor \fi + \ifbeamer@htfonlyinstitute \setbeamertemplate{htf-authinst}[onlyinst] \htfcheckinstit \fi + \ifbeamer@htfinstitutepths \setbeamertemplate{htf-authinst}[instpths] \htfcheckboth \fi + \ifbeamer@htfauthorpths \setbeamertemplate{htf-authinst}[authpths] \htfcheckboth \fi + \ifbeamer@htfauthinst \setbeamertemplate{htf-authinst}[bothcmma] \htfcheckboth \fi + + % Date + \ifbeamer@htfnodate \setbeamertemplate{htf-date}[none] \fi + \ifbeamer@htfshortdate \setbeamertemplate{htf-date}[short] \fi + \ifbeamer@htflongdate \setbeamertemplate{htf-date}[long] \fi + + % Frame numbers + \ifbeamer@htfnoframenrs \setbeamertemplate{htf-framenrs}[none] \fi + \ifbeamer@htfcounterframenrs \setbeamertemplate{htf-framenrs}[counter] \fi + \ifbeamer@htffractionframenrs \setbeamertemplate{htf-framenrs}[fraction] \fi + \ifbeamer@htfpercentframenrs \ifbeamer@htffunnystuff \setbeamertemplate{htf-framenrs}[percent] + \else \PackageError{hackthefootline}{For using percent frame numbers don't pass the nofun option}{} + \fi \fi + + % Author--Title--separators + \ifbeamer@htfcolonsep \setbeamertemplate{htf-atsep}[colon] \fi + \ifbeamer@htfcommasep \setbeamertemplate{htf-atsep}[comma] \fi + \ifbeamer@htfsepspace \setbeamertemplate{htf-atsep}[space] \fi +} + + + +% PERFORMS THE "INITIAL HACK" AT BEGINNING A DOCUMENT ------------------------------------------------------------------------------------------- + +\AtBeginDocument{ + % Load default settings ... + \ifbeamer@htfonecolfootline \htfonecolfootlinedefault + \else \ifbeamer@htftwocolsfootline \htftwocolsfootlinedefault + \else \ifbeamer@htfthreecolsfootline \htfthreecolsfootlinedefault + \else \htfnofootlinedefault + \fi \fi \fi + + % ... and perform the hack + \hackthefootline} + + + +% END OF FILE ----------------------------------------------------------------------------------------------------------------------------------- + +\mode<all> +\endinput |