summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/beamer-contrib/themes/beamertheme-focus/beamerouterthemefocus.sty
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/beamer-contrib/themes/beamertheme-focus/beamerouterthemefocus.sty')
-rw-r--r--macros/latex/contrib/beamer-contrib/themes/beamertheme-focus/beamerouterthemefocus.sty270
1 files changed, 270 insertions, 0 deletions
diff --git a/macros/latex/contrib/beamer-contrib/themes/beamertheme-focus/beamerouterthemefocus.sty b/macros/latex/contrib/beamer-contrib/themes/beamertheme-focus/beamerouterthemefocus.sty
new file mode 100644
index 0000000000..c8fb6d55bc
--- /dev/null
+++ b/macros/latex/contrib/beamer-contrib/themes/beamertheme-focus/beamerouterthemefocus.sty
@@ -0,0 +1,270 @@
+% Copyright (C) 2018-2019 Pasquale Claudio Africa and the LaTeX community.
+% A full list of contributors can be found at
+%
+% https://github.com/elauksap/focus-beamertheme
+%
+% This file is part of beamerthemefocus.
+%
+% beamerthemefocus is free software: you can redistribute it and/or modify
+% it under the terms of the GNU General Public License as published by
+% the Free Software Foundation, either version 3 of the License, or
+% (at your option) any later version.
+%
+% beamerthemefocus is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with beamerthemefocus. If not, see <http://www.gnu.org/licenses/>.
+
+\mode<presentation>
+
+\RequirePackage{appendixnumberbeamer} % Don't number appendix frames.
+% Fix hyperref warning caused by \appendix
+% (https://tex.stackexchange.com/questions/192686/hyperref-warning-caused-by-beamer-appendix).
+\newcommand*{\bkmtranslateto}{\languagename}
+\newcommand*{\bkmtranslate}[1]{%
+ \ifcsname tr@@@\bkmtranslateto @#1\endcsname
+ \csname tr@@@\bkmtranslateto @#1\endcsname
+ \else
+ #1%
+ \fi
+}
+\pdfstringdefDisableCommands{\let\translate\bkmtranslate}
+\RequirePackage{bookmark}
+
+\RequirePackage{etoolbox} % \BeforeBeginEnvironment.
+\RequirePackage{tikz}
+
+
+% FRAMETITLE TEMPLATES. --------------------------------------------------------
+\defbeamertemplate*{frametitle}{focus}{%
+ % If not title page.
+ \ifnum\value{framenumber}>0%
+ \vspace{-1pt}%
+ \begin{beamercolorbox}[wd=\paperwidth,leftskip=0.55cm,rightskip=0.55cm,sep=0.2cm]{frametitle}%
+ \strut\insertframetitle\strut%
+ \end{beamercolorbox}%
+ \fi%
+}
+
+% Plain header.
+\defbeamertemplate{frametitle}{plain}{%
+ % If not title page.
+ \ifnum\value{framenumber}>0%
+ \vspace{-1pt}%
+ \begin{beamercolorbox}[wd=\paperwidth,leftskip=0.55cm,rightskip=0.55cm,sep=0.2cm,ignorebg]{frametitle}%
+ \strut%
+ \end{beamercolorbox}%
+ \fi%
+}
+
+
+% FOOTLINE TEMPLATES. ----------------------------------------------------------
+% Lenghts for the progress bar footline.
+\newlength{\focus@pbar@height}% Progress bar height.
+\newlength{\focus@pbar@leftoffset}
+\newlength{\focus@pbar@rightoffset}
+
+\defbeamertemplate*{footline}{progressbar}{%
+ % If not appendix.
+ \ifnum\mainend<0% From package appendixnumberbeamer.
+ %
+ \settowidth{\focus@pbar@leftoffset}{1}%
+ \addtolength{\focus@pbar@leftoffset}{1.5em}%
+ %
+ \settowidth{\focus@pbar@rightoffset}{\inserttotalframenumber}%
+ \addtolength{\focus@pbar@rightoffset}{1.5em}%
+ %
+ % If not title page.
+ \ifnum\c@framenumber>0%
+ \ifnum\c@framenumber<\inserttotalframenumber%
+ \begin{tikzpicture}[inner xsep=0.5em, inner ysep=0.5ex]\usebeamerfont{footline}
+ \pgfmathsetmacro{\focus@pbar@progress}%
+ {(\paperwidth-\focus@pbar@leftoffset-\focus@pbar@rightoffset)*(\insertframenumber/\inserttotalframenumber)}
+
+ \clip (0,0) rectangle ++(\paperwidth,\the\focus@pbar@height);
+ \fill[footline.bg] (0,0) rectangle ++(\the\focus@pbar@leftoffset,\the\focus@pbar@height);
+
+ \fill[footline.bg] (\the\focus@pbar@leftoffset,0) rectangle ++(\focus@pbar@progress pt,\the\focus@pbar@height)
+ ++(0,{-0.5*\the\focus@pbar@height}) node[anchor=east, text=footline.fg] {\strut\insertframenumber};
+
+ \fill[footline.bg] (\paperwidth,0) rectangle ++(-\the\focus@pbar@rightoffset,\the\focus@pbar@height)
+ ++(0,{-0.5*\the\focus@pbar@height}) node[anchor=west, text=footline.fg] {\strut\inserttotalframenumber};
+ \end{tikzpicture}%
+ \else%
+ \begin{tikzpicture}[inner xsep=0.5em, inner ysep=0.5ex]
+ \clip (0,0) rectangle ++(\paperwidth,\the\focus@pbar@height);
+ \fill[footline.bg] (0,0) rectangle ++(\paperwidth,\the\focus@pbar@height);
+
+ \node[anchor=east, footline.fg] at ({\paperwidth-\the\focus@pbar@rightoffset},{0.5*\focus@pbar@height}) {\strut\insertframenumber};
+ \node[footline.fg] at ({\paperwidth-\the\focus@pbar@rightoffset},{0.5*\focus@pbar@height}) {\strut/};
+ \node[anchor=west, footline.fg] at ({\paperwidth-\the\focus@pbar@rightoffset},{0.5*\focus@pbar@height}) {\strut\inserttotalframenumber};
+ \end{tikzpicture}%
+ \fi%
+ \fi%
+ \fi%
+}
+
+% Full bar footline.
+\defbeamertemplate{footline}{fullbar}{%
+ % If not appendix.
+ \ifnum\mainend<0% From package appendixnumberbeamer.
+ %
+ \settowidth{\focus@pbar@leftoffset}{1}%
+ \addtolength{\focus@pbar@leftoffset}{1.5em}%
+ %
+ \settowidth{\focus@pbar@rightoffset}{\inserttotalframenumber}%
+ \addtolength{\focus@pbar@rightoffset}{1.5em}%
+ %
+ % If not title page.
+ \ifnum\c@framenumber>0%
+ \begin{tikzpicture}[inner xsep=0.5em, inner ysep=0.5ex]
+ \clip (0,0) rectangle ++(\paperwidth,\the\focus@pbar@height);
+ \fill[footline.bg] (0,0) rectangle ++(\paperwidth,\the\focus@pbar@height);
+
+ \node[anchor=east, footline.fg] at ({\paperwidth-\the\focus@pbar@rightoffset},{0.5*\focus@pbar@height}) {\strut\insertframenumber};
+ \node[footline.fg] at ({\paperwidth-\the\focus@pbar@rightoffset},{0.5*\focus@pbar@height}) {\strut/};
+ \node[anchor=west, footline.fg] at ({\paperwidth-\the\focus@pbar@rightoffset},{0.5*\focus@pbar@height}) {\strut\inserttotalframenumber};
+ \end{tikzpicture}%
+ \fi%
+ \fi%
+}
+
+% Empty footline.
+\defbeamertemplate{footline}{none}{}
+
+\DeclareOptionBeamer{numbering}{\def\beamer@focus@numbering{#1}}
+\ExecuteOptionsBeamer{numbering=progressbar}
+\ProcessOptionsBeamer
+
+\def\beamer@focus@numberingprogressbar{progressbar}
+\def\beamer@focus@numberingfullbar{fullbar}
+\def\beamer@focus@numberingnone{none}
+
+
+% BACKGROUND CANVAS TEMPLATES. -------------------------------------------------
+\defbeamertemplate*{background canvas}{focus}{%
+ \begin{tikzpicture}
+ \clip (0,0) rectangle ++(\paperwidth,\paperheight);
+ \fill[normal text.bg] (0,0) rectangle ++(\paperwidth,\paperheight);
+ \end{tikzpicture}%
+}
+
+\defbeamertemplate{background canvas}{focusplain}{%
+ \begin{tikzpicture}
+ \clip (0,0) rectangle ++(\paperwidth,\paperheight);
+ \fill[normal text.bg] (0,0) rectangle ++(\paperwidth,\paperheight);
+ \end{tikzpicture}%
+}
+
+\defbeamertemplate{background canvas}{focusframe}{%
+ \begin{tikzpicture}
+ \clip (0,0) rectangle ++(\paperwidth,\paperheight);
+ \fill[frametitle.bg] (0,0) rectangle ++(\paperwidth,\paperheight);
+ \end{tikzpicture}%
+}
+
+
+% HOOKS FOR CREATING FRAMES. ---------------------------------------------------
+\BeforeBeginEnvironment{frame}{%
+ \setbeamertemplate{background canvas}[focus]%
+ \setbeamertemplate{frametitle}[focus]%
+ %
+ % Reset footline height and determine it for the current slide.
+ \setlength{\focus@pbar@height}{0cm}%
+ \focus@calculatefootheight%
+ %
+ % If not appendix.
+ \ifnum\mainend<0 % From package appendixnumberbeamer.
+ \settoheight{\focus@pbar@height}{\usebeamerfont{footline}1234567890/}%
+ \addtolength{\focus@pbar@height}{6pt}%
+ %
+ \ifx\beamer@focus@numbering\beamer@focus@numberingprogressbar%
+ \setbeamertemplate{footline}[progressbar]%
+ \else%
+ \ifx\beamer@focus@numbering\beamer@focus@numberingfullbar%
+ \setbeamertemplate{footline}[fullbar]%
+ \fi%
+ \fi%
+ %
+ \focus@calculatefootheight%
+ \fi%
+}
+
+% Enable noframenumbering option.
+\define@key{beamerframe}{noframenumbering}[true]{%
+ \setbeamertemplate{footline}[none]%
+ \setlength{\focus@pbar@height}{0cm}%
+ \focus@calculatefootheight%
+ %
+ \addtocounter{framenumber}{-1}%
+}
+
+
+% Enable plain option.
+\define@key{beamerframe}{plain}[true]{%
+ \setbeamertemplate{background canvas}[focusplain]%
+ \setbeamertemplate{frametitle}[plain]%
+ %
+ \setbeamertemplate{footline}[none]%
+}
+
+
+% Full vertical centering
+% (from https://tex.stackexchange.com/questions/247826/beamer-full-vertical-centering).
+\define@key{beamerframe}{c}[true]{%
+ \beamer@frametopskip=0pt plus 1fill\relax%
+ \beamer@framebottomskip=0pt plus 1fill\relax%
+ \beamer@frametopskipautobreak=0pt plus 0.4\paperheight\relax%
+ \beamer@framebottomskipautobreak=0pt plus 0.6\paperheight\relax%
+ \def\beamer@initfirstlineunskip{}%
+}
+
+
+% Enable focus option.
+\providebool{focus@standout}
+\define@key{beamerframe}{focus}[true]{%
+ \booltrue{focus@standout}%
+ \begingroup%
+ \setkeys{beamerframe}{noframenumbering}%
+ \setbeamertemplate{background canvas}[focusframe]%
+ \setbeamertemplate{frametitle}[plain]%
+ %
+ \setkeys{beamerframe}{c}%
+ \centering%
+ \usebeamerfont{focusframe}%
+ \usebeamercolor[fg]{frametitle}%
+}
+
+\apptocmd{\beamer@reseteecodes}
+{%
+ \ifbool{focus@standout}%
+ {%
+ \endgroup%
+ \boolfalse{focus@standout}%
+ }{}%
+}{}{}
+
+
+% Recalculate the footline's size and refresh other parameters.
+% Partially copied from the definition of \beamer@calculateheadfoot.
+\def\focus@calculatefootheight{%
+ \footheight=\focus@pbar@height%
+ \advance\footheight by 4pt%
+ \sidebarheight=\paperheight%
+ \advance\sidebarheight by-\headheight%
+ \advance\sidebarheight by\headdp%
+ \advance\sidebarheight by-\footheight%
+ \advance\sidebarheight by 4pt%
+ \footskip=\footheight%
+ \textheight=\paperheight%
+ \advance\textheight by-\footheight%
+ \advance\textheight by-\headheight%
+ \@colht\textheight%
+ \@colroom\textheight%
+ \vsize\textheight%
+}
+
+\mode<all>