beamerlines/beamerthemelines.sty

1056 lines
35 KiB
TeX

% Copyright 2021 by Jan Benda
%
% This file may be distributed and/or modified
%
% 1. under the LaTeX Project Public License and/or
% 2. under the GNU Public License.
\ProvidesPackage{beamerthemelines}[2021/02/28 beamer theme with horizontal lines]
\RequirePackage{tikz}
\RequirePackage{pifont}
\newif\if@beamer@footline@author
\newif\if@beamer@footline@institute
\newif\if@beamer@footline@date
\newif\if@beamer@footline@title
\newif\if@beamer@footline@page
\newif\if@beamer@footline@logo
\DeclareOptionBeamer{author}{\@beamer@footline@authortrue}
\DeclareOptionBeamer{hideauthor}{\@beamer@footline@authorfalse}
\DeclareOptionBeamer{institute}{\@beamer@footline@institutetrue}
\DeclareOptionBeamer{hideinstitute}{\@beamer@footline@institutefalse}
\DeclareOptionBeamer{date}{\@beamer@footline@datetrue}
\DeclareOptionBeamer{hidedate}{\@beamer@footline@datefalse}
\DeclareOptionBeamer{title}{\@beamer@footline@titletrue}
\DeclareOptionBeamer{hidetitle}{\@beamer@footline@titlefalse}
\DeclareOptionBeamer{page}{\@beamer@footline@pagetrue}
\DeclareOptionBeamer{hidepage}{\@beamer@footline@pagefalse}
\DeclareOptionBeamer{logo}{\@beamer@footline@logotrue}
\DeclareOptionBeamer{hidelogo}{\@beamer@footline@logofalse}
\ExecuteOptionsBeamer{author}
\ExecuteOptionsBeamer{hideinstitute}
\ExecuteOptionsBeamer{hidedate}
\ExecuteOptionsBeamer{hidetitle}
\ExecuteOptionsBeamer{page}
\ExecuteOptionsBeamer{hidelogo}
\ProcessOptionsBeamer
%%%%% \titlelogo command:
\mode<all>{
\newcommand\titlelogo[1]{\def\inserttitlelogo{#1}}
\titlelogo{}
}
\mode<presentation>
% margins:
\setbeamersize{text margin left=1.5ex,text margin right=1.5ex}
% no navigation symbols:
\defbeamertemplate{navigation symbols}{empty}{}
\setbeamertemplate{navigation symbols}[empty]
% no side bars:
\setbeamertemplate{sidebar left}[default]
\defbeamertemplate{sidebar right}{empty}{}
\setbeamertemplate{sidebar right}[empty]
% no headline:
\setbeamertemplate{headline}[default]
%%%%% horizontal line %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% a horizontal line on top of a box over the whole linewidth
% arguments: name of color theme, width of line
\newcommand{\beamer@horizontal@line@top}[2]{%
\ifbeamercolorempty[fg]{#1}{}{%
\begin{beamercolorbox}[vmode,wd=\linewidth]{#1}
\rule{\linewidth}{#2}
\end{beamercolorbox}%
\par\nointerlineskip}%
}
% a horizontal line below a box over the whole linewidth
% arguments: name of color theme, width of line
\newcommand{\beamer@horizontal@line@bottom}[2]{%
\ifbeamercolorempty[fg]{#1}{}{%
\par\nointerlineskip%
\begin{beamercolorbox}[vmode,wd=\linewidth]{#1}
\rule{\linewidth}{#2}
\end{beamercolorbox}}%
}
%%%%% page numbers %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\defbeamertemplate{page number in head/foot}{frames}{%
{\usebeamerfont{page number in head/foot}%
\makebox[2.5ex][r]{\insertframenumber{}}}}
\defbeamertemplate{page number in head/foot}{framestotal}{%
{\usebeamerfont{page number in head/foot}%
\makebox[6ex][r]{\insertframenumber{} / \inserttotalframenumber{}}}}
\defbeamertemplate{page number in head/foot}{slides}{%
{\usebeamerfont{page number in head/foot}%
\makebox[2.5ex][r]{\insertframenumber{} } %
\newcount{\c@tmp@numslides}%
\c@tmp@numslides=\numexpr\beamer@endpageofframe-\beamer@startpageofframe\relax%
\makebox[2.5ex][r]{\ifnum\c@tmp@numslides>0 -- \insertslidenumber{}\fi}}}
\setbeamertemplate{page number in head/foot}[frames]
%%%%% footline %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%% footline line:
\defbeamertemplate{footline line}{text}[1][1pt]%
{
\ifbeamercolorempty[fg]{footline line}{}{%
\begin{beamercolorbox}[wd=\paperwidth,dp=0pt,ht=#1,sep=0pt,%
leftskip=\beamer@leftmargin,rightskip=\beamer@rightmargin]{footline line}%
\rule{\columnwidth}{#1}%
\end{beamercolorbox}%
\nointerlineskip%
}%
}
\defbeamertemplate{footline line}{page}[1][1pt]%
{
\ifbeamercolorempty[fg]{footline line}{}{%
\begin{beamercolorbox}[wd=\paperwidth,dp=0pt,ht=#1,sep=0pt,%
leftskip=0pt,rightskip=0pt]{footline line}%
\rule{\paperwidth}{#1}%
\end{beamercolorbox}%
\nointerlineskip%
}%
}
\setbeamertemplate{footline line}[text][0.5pt]
%%%%% footline separator:
\defbeamertemplate{footline separator}{text}[1][1pt]{%
{\usebeamercolor[fg]{footline separator}\enspace\rule[-0.55ex]{#1}{2.3ex}\thickspace}}
\defbeamertemplate{footline separator}{full}[1][1pt]{%
{\usebeamercolor[fg]{footline separator}\enspace\rule[-1.2ex]{#1}{4ex}\thickspace}}
\defbeamertemplate{footline separator}{dash}{%
{\usebeamercolor[fg]{footline separator}\thickspace{} ---\thickspace}}
\defbeamertemplate{footline separator}{space}{%
{\usebeamercolor[fg]{footline separator}\enspace\thickspace}}
\setbeamertemplate{footline separator}[text][0.5pt]
\setbeamercolor{footline separator}{parent=footline}
%%%%% footline: linesleft
\defbeamertemplate{footline}{linesleft}{%
\usebeamerfont{footline}%
\usebeamertemplate{footline line}%
\begin{beamercolorbox}[wd=1\paperwidth,dp=1.2ex,ht=2.8ex,%
leftskip=1\beamer@leftmargin,rightskip=1\beamer@rightmargin]{footline}
\hypersetup{linkcolor=}%
\newif\if@tempsep%
\@tempsepfalse%
% author:
\if@beamer@footline@author
{\usebeamerfont{author in head/foot}%
\insertshortauthor}%
\@tempseptrue
\fi
% institute:
\if@beamer@footline@institute
\if@tempsep\usebeamertemplate{footline separator}\hskip0.6ex\fi
{\usebeamerfont{institute in head/foot}%
\insertshortinstitute}%
\@tempseptrue
\fi
% date:
\if@beamer@footline@date
\if@tempsep\usebeamertemplate{footline separator}\hskip0.6ex\fi
{\usebeamerfont{date in head/foot}%
\insertshortdate}%
\@tempseptrue
\fi
% title:
\if@beamer@footline@title
\if@tempsep\usebeamertemplate{footline separator}\hskip0.6ex\fi
{\usebeamerfont{title in head/foot}%
\insertshorttitle}%
\@tempseptrue
\fi
\hfill
% page:
\if@beamer@footline@page
\usebeamertemplate{footline separator}
\usebeamertemplate{page number in head/foot}%
\fi
% logo:
\if@beamer@footline@logo%
\ifx\insertlogo\@empty\else\quad \raisebox{-1ex}{\insertlogo}\fi%
\fi
\end{beamercolorbox}
}
%%%%% footline: linesright
\defbeamertemplate{footline}{linesright}{%
\usebeamerfont{footline}%
\usebeamertemplate{footline line}%
\begin{beamercolorbox}[wd=1\paperwidth,dp=1.2ex,ht=2.8ex,%
leftskip=1\beamer@leftmargin,rightskip=1\beamer@rightmargin]{footline}
\hypersetup{linkcolor=}%
% page:
\if@beamer@footline@page
\usebeamertemplate{page number in head/foot}%
\fi
\hfill
\newif\if@tempsep%
\@tempsepfalse%
% author:
\if@beamer@footline@author
{\usebeamerfont{author in head/foot}%
\insertshortauthor}%
\@tempseptrue
\fi
% institute:
\if@beamer@footline@institute
\if@tempsep\usebeamertemplate{footline separator}\hskip0.6ex\fi
{\usebeamerfont{institute in head/foot}%
\insertshortinstitute}%
\@tempseptrue
\fi
% date:
\if@beamer@footline@date
\if@tempsep\usebeamertemplate{footline separator}\hskip0.6ex\fi
{\usebeamerfont{date in head/foot}%
\insertshortdate}%
\@tempseptrue
\fi
% title:
\if@beamer@footline@title
\if@tempsep\usebeamertemplate{footline separator}\hskip0.6ex\fi
{\usebeamerfont{title in head/foot}%
\insertshorttitle}%
\@tempseptrue
\fi
% logo:
\if@beamer@footline@logo%
\ifx\insertlogo\@empty\else\quad \raisebox{-1ex}{\insertlogo}\fi%
\fi
\end{beamercolorbox}
}
\setbeamertemplate{footline}[linesleft]
\setbeamercolor{footline line}{parent=footline}
%%%%% frametitle %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%% frametitle line:
\defbeamertemplate{frametitle line}{text}[1][1pt]%
{\beamer@horizontal@line@bottom{frametitle line}{#1}}
\defbeamertemplate{frametitle line}{page}[1][1pt]%
{
\ifbeamercolorempty[fg]{frametitle line}{}{%
\nointerlineskip%
\begin{beamercolorbox}[wd=\paperwidth,dp=0pt,ht=#1,sep=0pt,%
leftskip=0pt,rightskip=0pt]{frametitle line}%
\rule{\paperwidth}{#1}%
\end{beamercolorbox}%
}%
}
\setbeamertemplate{frametitle line}[text][0.5pt]
%%%%% frametitle: boxline
\defbeamertemplate{frametitle}{boxline}%
{
\ifbeamercolorempty[bg]{frametitle}{}{\nointerlineskip}%
\usebeamerfont{frametitle}%
\begin{beamercolorbox}[wd=1\paperwidth,dp=1.2ex,ht=3.2ex,sep=0pt,%
leftskip=1\beamer@leftmargin,rightskip=1\beamer@rightmargin]{frametitle}
\insertframetitle\strut
\end{beamercolorbox}%
\usebeamertemplate{frametitle line}%
\ifx\insertframesubtitle\@empty\else%
\vspace{-0.5ex}
\begin{beamercolorbox}[wd=1\paperwidth,sep=0pt,%
leftskip=1\beamer@leftmargin,rightskip=1\beamer@rightmargin]{framesubtitle}
\usebeamerfont{framesubtitle}\insertframesubtitle\strut
\end{beamercolorbox}%
\fi%
\vspace{-1ex}
}
\defbeamertemplate{frametitle}{boxlinelogo}%
{
\ifbeamercolorempty[bg]{frametitle}{}{\nointerlineskip}%
\usebeamerfont{frametitle}%
\begin{beamercolorbox}[wd=1\paperwidth,dp=1.2ex,ht=3.2ex,sep=0pt,%
leftskip=1\beamer@leftmargin,rightskip=1\beamer@rightmargin]{frametitle}
\insertframetitle\strut%
\ifx\insertlogo\@empty%
\else%
\hfill \raisebox{-0.7ex}{\insertlogo}%
\fi%
\end{beamercolorbox}%
\usebeamertemplate{frametitle line}%
\ifx\insertframesubtitle\@empty\else%
\vspace{-0.5ex}
\begin{beamercolorbox}[wd=1\paperwidth,sep=0pt,%
leftskip=1\beamer@leftmargin,rightskip=1\beamer@rightmargin]{framesubtitle}
\usebeamerfont{framesubtitle}\insertframesubtitle\strut
\end{beamercolorbox}%
\fi%
\vspace{-1ex}
}
\setbeamertemplate{frametitle}[boxlinelogo]
%%%%% itemize and enumerate %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%% itemize symbols:
\newcommand{\itemarrow}{\tikz[baseline]{%
\draw[line width=0.2ex] (0ex, 0.2ex) -- (0.45ex,0.7ex) -- (0ex, 1.2ex);}}
\newcommand{\itemfilledarrow}{\tikz[baseline]{%
\filldraw[line width=0.2ex] (0ex, 0.2ex) -- (0.5ex,0.7ex) -- (0ex, 1.2ex) -- cycle;}}
\newcommand{\itemdash}{\tikz[baseline]{%
\draw[line width=0.2ex] (0ex, 0.7ex) -- (0.9ex,0.7ex);}}
\newcommand{\checkit}{{\usebeamercolor[fg]{itemize item check}\ding{51}}} % or \checkmark
\newcommand{\uncheckit}{{\usebeamercolor[fg]{itemize item uncheck}\ding{55}}}
\defbeamertemplate{itemize item}{arrow}{\itemarrow}
\defbeamertemplate{itemize item}{filledarrow}{\itemfilledarrow}
\defbeamertemplate{itemize item}{dash}{\itemdash}
\defbeamertemplate{itemize item}{check}{\checkit}
\defbeamertemplate{itemize item}{uncheck}{\uncheckit}
\defbeamertemplatealias{itemize item}{emph}{filledarrow}
\defbeamertemplatealias{itemize item}{message}{arrow}
\defbeamertemplate{itemize subitem}{arrow}{\itemarrow}
\defbeamertemplate{itemize subitem}{dash}{\itemdash}
\defbeamertemplate{itemize subitem}{check}{\checkmark}
% default, triangle, circle, square, ball, arrow, dash, check, uncheck:
\setbeamertemplate{itemize item}[arrow]
\setbeamertemplate{itemize subitem}[dash]
%%%%% emph item:
\newenvironment{emphenv}{\only{\setbeamertemplate{itemize item}[emph]}}{}
%%%%% check item:
\newenvironment{checkenv}{\only{\setbeamertemplate{itemize item}[check]}}{}
%%%%% uncheck item:
\newenvironment{uncheckenv}{\only{\setbeamertemplate{itemize item}[uncheck]}}{}
%%%%% message like item:
\newenvironment{messageenv}{\only{\setbeamertemplate{itemize item}[message]\setbeamercolor{itemize item}{use={message item symbol},fg=message item symbol.fg}\usebeamerfont{message item}\usebeamercolor[fg]{message item}}}{}
%%%%% enumerate style:
\defbeamertemplate{enumerate item}{alph}{\alph{enumi})}
\defbeamertemplate{enumerate item}{Alph}{\Alph{enumi})}
\defbeamertemplate{enumerate item}{arabic}{\arabic{enumi}.}
\defbeamertemplate{enumerate item}{roman}{\roman{enumi}.}
\defbeamertemplate{enumerate item}{Roman}{\Roman{enumi}.}
\defbeamertemplate{enumerate subitem}{alph}{\alph{enumii})}
\defbeamertemplate{enumerate subitem}{arabic}{\arabic{enumii})}
\defbeamertemplate{enumerate subitem}{roman}{\roman{enumii})}
\setbeamertemplate{enumerate item}[arabic] % default, circle, square, ball, alph, Alph, arabic, roman, Roman
\setbeamertemplate{enumerate subitem}[alph] % default, circle, square, ball, alph, arabic, roman
%%%%% block environments:
\newcommand{\block@lines@begin}[4]{%
\par\vskip\medskipamount%
\usebeamerfont{#1 title#2}%
\setbox0=\hbox{\insertblocktitle\unskip}%
\ifdim\wd0=0pt\else%
\beamer@horizontal@line@top{#1 line#2 top}{#3}
\begin{beamercolorbox}[wd=\linewidth,ht=2.4ex,dp=0.9ex,leftskip=2mm,rightskip=2mm]{#1 title#2}
\strut\insertblocktitle
\end{beamercolorbox}
\fi
\nointerlineskip
\beamer@horizontal@line@top{#1 line#2 middle}{#4}
\usebeamerfont{#1 body#2}%
\begin{beamercolorbox}[wd=\linewidth,sep=2mm]{#1 body#2}
}
\newcommand{\block@lines@end}[3]{%
\vspace{-0.4ex}%
\end{beamercolorbox}%
\beamer@horizontal@line@bottom{#1 line#2 bottom}{#3}
}
%%%%% block environment:
\defbeamertemplate{block begin}{lines}[2]{\block@lines@begin{block}{}{#1}{#2}}
\defbeamertemplate{block end}{lines}[1]{\block@lines@end{block}{}{#1}}
\setbeamertemplate{block begin}[lines]{0.5pt}{0.5pt}
\setbeamertemplate{block end}[lines]{0.5pt}
\setbeamercolor{block line top}{fg=}
\setbeamercolor{block line middle}{fg=}
\setbeamercolor{block line bottom}{fg=}
%%%%% block alerted environment:
\defbeamertemplate{block alerted begin}{lines}[2]{\block@lines@begin{block}{ alerted}{#1}{#2}}
\defbeamertemplate{block alerted end}{lines}[1]{\block@lines@end{block}{ alerted}{#1}}
\setbeamertemplate{block alerted begin}[lines]{0.5pt}{0.5pt}
\setbeamertemplate{block alerted end}[lines]{0.5pt}
\setbeamercolor{block line alerted top}{fg=}
\setbeamercolor{block line alerted middle}{fg=}
\setbeamercolor{block line alerted bottom}{fg=}
%%%%% block example environment:
\defbeamertemplate{block example begin}{lines}[2]{\block@lines@begin{block}{ example}{#1}{#2}}
\defbeamertemplate{block example end}{lines}[1]{\block@lines@end{block}{ example}{#1}}
\setbeamertemplate{block example begin}[lines]{0.5pt}{0.5pt}
\setbeamertemplate{block example end}[lines]{0.5pt}
\setbeamercolor{block line example top}{fg=}
\setbeamercolor{block line example middle}{fg=}
\setbeamercolor{block line example bottom}{fg=}
%%%%% theorem environments (theorem, corollary, fact, lemma, definition, example):
\newenvironment<>{theoremblock}[1]{%
\begin{actionenv}#2%
\def\insertblocktitle{#1}%
\par%
\usebeamertemplate{block theorem begin}}
{\par%
\usebeamertemplate{block theorem end}%
\end{actionenv}}
\renewcommand{\inserttheoremblockenv}{theoremblock}
\renewcommand{\inserttheoremheadfont}{}
\defbeamertemplate{block theorem begin}{lines}[2]{\block@lines@begin{theorem}{}{#1}{#2}}
\defbeamertemplate{block theorem end}{lines}[1]{\block@lines@end{theorem}{}{#1}}
\setbeamertemplate{block theorem begin}[lines]{0.5pt}{0.5pt}
\setbeamertemplate{block theorem end}[lines]{0.5pt}
\setbeamercolor{theorem line top}{fg=}
\setbeamercolor{theorem line middle}{fg=}
\setbeamercolor{theorem line bottom}{fg=}
%%%%% new message box command:
\defbeamertemplate{message symbol}{default}{}
\defbeamertemplate{message symbol}{circle}{\raisebox{0.1ex}{$\bullet$}}
\defbeamertemplate{message symbol}{arrow}{\itemarrow}
\setbeamertemplate{message symbol}[circle]
\newcommand{\message@box@body}{
\begin{beamercolorbox}[vmode,wd=\linewidth,sep=1mm,leftskip=1mm,rightskip=1mm]{message}
\setbox0=\hbox{\usebeamertemplate{message symbol}\unskip}%
\ifdim\wd0=0pt%
\strut\insertmessage
\else
\begin{list}
{\usebeamercolor[fg]{message symbol}
\usebeamertemplate{message symbol}}
{\itemindent 0pt
\labelwidth 1ex
\labelsep 0.6ex
\leftmargin 2.5ex
\rightmargin 1mm}
\item\relax\usebeamercolor[fg]{message}\relax
\insertmessage
\end{list}
\vspace{-0.6ex}
\fi
\end{beamercolorbox}
}
\defbeamertemplate{message}{default}{%
\par\vskip\medskipamount%
\usebeamerfont{message}%
\message@box@body
}
\defbeamertemplate{message}{lines}[2]{%
\par\vskip\medskipamount%
\usebeamerfont{message}%
\beamer@horizontal@line@top{message line top}{#1}
\message@box@body
\beamer@horizontal@line@bottom{message line bottom}{#2}
}
\setbeamertemplate{message}[lines]{1pt}{1pt}
\newcommand<>{\messagebox}[1]{%
\only#2{\def\insertmessage{#1}%
\usebeamertemplate*{message}}
}
\setbeamercolor{message}{parent=block title alerted}
\setbeamercolor{message line top}{fg=}
\setbeamercolor{message line bottom}{fg=}
\setbeamercolor{message symbol}{fg=}
\setbeamercolor{message item}{use=alerted text, fg=alerted text.fg}
\setbeamercolor{message item symbol}{use=alerted text, fg=alerted text.fg}
% verse environment:
\expandafter\let\csname beamer@@tmpop@verse begin@default\endcsname\relax % remove old template
\defbeamertemplate{verse begin}{default}{}
\defbeamertemplate{verse begin}{lines}[1][1pt]{\beamer@horizontal@line@top{verse line top}{#1}\vskip1ex}
\setbeamertemplate{verse begin}[lines][0.5pt] % default, lines
\expandafter\let\csname beamer@@tmpop@verse end@default\endcsname\relax % remove old template
\defbeamertemplate{verse end}{default}{}
\defbeamertemplate{verse end}{lines}[1][1pt]{\beamer@horizontal@line@bottom{verse line bottom}{#1}}
\setbeamertemplate{verse end}[lines][0.5pt] % default, lines
\renewenvironment<>{verse}
{ \actionenv#1%
\setlength{\beamer@quotation@tmp}{\linewidth}
\beamercolorbox[vmode,wd=\linewidth]{verse}
\usebeamertemplate{verse begin}
\usebeamerfont*{verse}%
\list{}{
\leftmargin 2.5em
\rightmargin 2.5em
\parsep 1ex
}%
\item\relax
}
{%
\endlist
\setlength{\linewidth}{\beamer@quotation@tmp}
\usebeamertemplate{verse end}
\endbeamercolorbox
\endactionenv%
}
\setbeamercolor{verse line top}{fg=}
\setbeamercolor{verse line bottom}{fg=}
%%%%% quotation, quote:
% font selection
% https://tex.stackexchange.com/questions/25249/how-do-i-use-a-particular-font-for-a-small-section-of-text-in-my-document
% pbk , phv, pnc, qcs
\newcommand{\openquote}[2]{\tikz[baseline]{%
\useasboundingbox (0, 0) rectangle (1ex, 1.7ex);
\node[scale=#2, xshift=-0.28ex, yshift=-0.75ex] at (current bounding box.north east) {\usebeamerfont*{#1 symbol}\textquoteleft};
}}
\newcommand{\closequote}[2]{\tikz[baseline]{%
\useasboundingbox (0, 0) rectangle (1ex, 1.7ex);
\node[scale=#2, xshift=-0.28ex, yshift=-0.75ex] at (current bounding box.north east) {\usebeamerfont*{#1 symbol}\textquoteright};
}}
\newcommand{\opendblquote}[2]{\tikz[baseline]{%
\useasboundingbox (0, 0) rectangle (1ex, 1.7ex);
\node[scale=#2, xshift=-0.45ex, yshift=-0.75ex] at (current bounding box.north east) {\usebeamerfont*{#1 symbol}\textquotedblleft};
}}
\newcommand{\closedblquote}[2]{\tikz[baseline]{%
\useasboundingbox (0, 0) rectangle (1ex, 1.7ex);
\node[scale=#2, xshift=-0.45ex, yshift=-0.75ex] at (current bounding box.north east) {\usebeamerfont*{#1 symbol}\textquotedblright};
}}
\def\insertquotesource{}
% #1: template base name
% #2: symbol to the left of the source
% #3: symbol to the right of the source
\newcommand{\quote@source@left}[3]{%
\ifx\insertquotesource\@empty\else%
\item[%
\usebeamerfont{#1 source}%
\usebeamercolor{#1 source}%
#2\insertquotesource#3]%
\fi}
\newcommand{\quote@source@right}[3]{%
\ifx\insertquotesource\@empty\else%
\par{}\hfill%
\usebeamerfont{#1 source}%
\usebeamercolor{#1 source}%
#2\insertquotesource#3%
\fi}
% linebreaking from
% https://tex.stackexchange.com/questions/13756/quote-environment-with-reference-at-the-end-right :
\newcommand{\quote@source@rightline}[3]{%
\ifx\insertquotesource\@empty\else%
\leavevmode\unskip\nobreak\hfil\penalty50\hskip2em\hbox{}\nobreak\hfil%
\usebeamerfont{#1 source}%
\usebeamercolor{#1 source}%
\makebox{#2\insertquotesource#3}%
\parfillskip=0pt \finalhyphendemerits=0 \endgraf%
\fi}
% quotation environment
\defbeamertemplate{quotation symbol}{default}{}
\defbeamertemplate{quotation symbol}{openquote}[1][4]{\usebeamercolor[fg]{quotation symbol}\openquote{quotation}{#1}}
\defbeamertemplate{quotation symbol}{closequote}[1][4]{\usebeamercolor[fg]{quotation symbol}\closequote{quotation}{#1}}
\defbeamertemplate{quotation symbol}{opendblquote}[1][4]{\usebeamercolor[fg]{quotation symbol}\opendblquote{quotation}{#1}}
\defbeamertemplate{quotation symbol}{closedblquote}[1][4]{\usebeamercolor[fg]{quotation symbol}\closedblquote{quotation}{#1}}
\setbeamertemplate{quotation symbol}[opendblquote][4] % default, openquote, closequote, opendblquote, closedblquote
\defbeamertemplate{quotation source}{default}{}
\defbeamertemplate{quotation source}{left}{\quote@source@left{quotation}{}{}}
\defbeamertemplate{quotation source}{leftbrackets}{\quote@source@left{quotation}{(}{)}}
\defbeamertemplate{quotation source}{right}{\quote@source@right{quotation}{}{}}
\defbeamertemplate{quotation source}{rightbrackets}{\quote@source@right{quotation}{(}{)}}
\defbeamertemplate{quotation source}{dashright}{\quote@source@right{quotation}{ --- }{}}
\defbeamertemplate{quotation source}{tilderight}{\quote@source@right{quotation}{ $\sim$ }{}}
\defbeamertemplate{quotation source}{rightline}{\quote@source@rightline{quotation}{}{}}
\defbeamertemplate{quotation source}{rightlinebrackets}{\quote@source@rightline{quotation}{(}{)}}
\defbeamertemplate{quotation source}{dashrightline}{\quote@source@rightline{quotation}{ --- }{}}
\defbeamertemplate{quotation source}{tilderightline}{\quote@source@rightline{quotation}{ $\sim$ }{}}
% default, left, leftbrackets, right, rightbrackets, dashright, tilderight,
% rightline, rightlinebrackets, dashrightline, tilderightline:
\setbeamertemplate{quotation source}[dashrightline]
\expandafter\let\csname beamer@@tmpop@quotation begin@default\endcsname\relax % remove old template
\defbeamertemplate{quotation begin}{default}{}
\defbeamertemplate{quotation begin}{lines}[1][1pt]{\beamer@horizontal@line@top{quotation line top}{#1}\vskip1ex}
\setbeamertemplate{quotation begin}[lines][0.5pt] % default, lines
\expandafter\let\csname beamer@@tmpop@quotation end@default\endcsname\relax % remove old template
\defbeamertemplate{quotation end}{default}{}
\defbeamertemplate{quotation end}{lines}[1][1pt]{\beamer@horizontal@line@bottom{quotation line bottom}{#1}}
\setbeamertemplate{quotation end}[lines][0.5pt] % default, lines
\newlength{\beamer@quotation@tmp}
% see definition in /usr/share/texmf/tex/latex/beamer/base/beamerbaselocalstructure.sty
\renewenvironment<>{quotation}[1][]
{ \def\insertquotesource{#1}
\actionenv#2%
\setlength{\beamer@quotation@tmp}{\linewidth}
\beamercolorbox[vmode,wd=\linewidth]{quotation}
\usebeamertemplate{quotation begin}
\usebeamerfont*{quotation}%
\setbox0=\hbox{\usebeamertemplate{quotation symbol}\unskip}%
\ifdim\wd0=0pt
\list{}{
\leftmargin 1em
\rightmargin 1em
\listparindent 1.5em
\itemindent \listparindent
\parsep \z@ \@plus\p@
}%
\item\relax
\else
\list{}{
\leftmargin 2.5em
\rightmargin 2em
\listparindent 1.5em
\itemindent \listparindent
\labelsep \listparindent
\advance\labelsep by 0.5ex\relax
\parsep \z@ \@plus\p@
}%
\item[\usebeamertemplate{quotation symbol}]\relax
\fi
}
{%
\usebeamercolor[fg]{quotation source}\usebeamertemplate{quotation source}
\endlist
\setlength{\linewidth}{\beamer@quotation@tmp}
\usebeamertemplate{quotation end}
\endbeamercolorbox
\endactionenv%
}
\setbeamercolor{quotation symbol}{parent=structure}
\setbeamercolor{quotation source}{}
\setbeamercolor{quotation line top}{fg=}
\setbeamercolor{quotation line bottom}{fg=}
% quote environment:
\defbeamertemplate{quote symbol}{default}{}
\defbeamertemplate{quote symbol}{openquote}[1][4]{{\usebeamercolor[fg]{quote symbol}\openquote{quote}{#1}}}
\defbeamertemplate{quote symbol}{closequote}[1][4]{{\usebeamercolor[fg]{quote symbol}\closequote{quote}{#1}}}
\defbeamertemplate{quote symbol}{opendblquote}[1][4]{{\usebeamercolor[fg]{quote symbol}\opendblquote{quote}{#1}}}
\defbeamertemplate{quote symbol}{closedblquote}[1][4]{{\usebeamercolor[fg]{quote symbol}\closedblquote{quote}{#1}}}
\setbeamertemplate{quote symbol}[opendblquote][4] % default, openquote, closequote, opendblquote, closedblquote
\defbeamertemplate{quote source}{default}{}
\defbeamertemplate{quote source}{left}{\quote@source@left{quote}{}{}}
\defbeamertemplate{quote source}{leftbrackets}{\quote@source@left{quote}{(}{)}}
\defbeamertemplate{quote source}{right}{\quote@source@right{quote}{}{}}
\defbeamertemplate{quote source}{rightbrackets}{\quote@source@right{quote}{(}{)}}
\defbeamertemplate{quote source}{dashright}{\quote@source@right{quote}{ --- }{}}
\defbeamertemplate{quote source}{tilderight}{\quote@source@right{quote}{ $\sim$ }{}}
\defbeamertemplate{quote source}{rightline}{\quote@source@rightline{quote}{}{}}
\defbeamertemplate{quote source}{rightlinebrackets}{\quote@source@rightline{quote}{(}{)}}
\defbeamertemplate{quote source}{dashrightline}{\quote@source@rightline{quote}{ --- }{}}
\defbeamertemplate{quote source}{tilderightline}{\quote@source@rightline{quote}{ $\sim$ }{}}
% default, left, leftbrackets, right, rightbrackets, dashright, tilderight,
% rightline, rightlinebrackets, dashrightline, tilderightline:
\setbeamertemplate{quote source}[dashrightline]
\expandafter\let\csname beamer@@tmpop@quote begin@default\endcsname\relax % remove old template
\defbeamertemplate{quote begin}{default}{}
\defbeamertemplate{quote begin}{lines}[1][1pt]{\beamer@horizontal@line@top{quote line top}{#1}\vskip1ex}
\setbeamertemplate{quote begin}[lines][0.5pt] % default, lines
\expandafter\let\csname beamer@@tmpop@quote end@default\endcsname\relax % remove old template
\defbeamertemplate{quote end}{default}{}
\defbeamertemplate{quote end}{lines}[1][1pt]{\beamer@horizontal@line@bottom{quote line bottom}{#1}}
\setbeamertemplate{quote end}[lines][0.5pt] % default, lines
\renewenvironment<>{quote}[1][]
{ \def\insertquotesource{#1}
\actionenv#2%
\setlength{\beamer@quotation@tmp}{\linewidth}
\beamercolorbox[vmode,wd=\linewidth]{quote}%
\usebeamertemplate{quote begin}%
\usebeamerfont*{quote}%
\setbox0=\hbox{\usebeamertemplate{quote symbol}\unskip}%
\ifdim\wd0=0pt
\list{}{
\leftmargin 2.5em
\rightmargin 2.5em
\parsep 1ex
}%
\item\relax%
\else
\list{}{
\leftmargin 2.5em
\rightmargin 2.5em
\labelsep 0.5ex
\parsep 1ex
}%
\item[\usebeamertemplate{quote symbol}]\relax%
\fi%
}
{%
\usebeamercolor[fg]{quote source}\usebeamertemplate{quote source}
\endlist
\setlength{\linewidth}{\beamer@quotation@tmp}
\usebeamertemplate{quote end}
\endbeamercolorbox%
\endactionenv%
}
\setbeamercolor{quote symbol}{parent=structure}
\setbeamercolor{quote source}{}
\setbeamercolor{quote line top}{fg=}
\setbeamercolor{quote line bottom}{fg=}
%%%%% title page %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%% title page graphic line:
\defbeamertemplate{title page graphic line}{default}[1][1ex]%
{\beamer@horizontal@line@bottom{title page graphic line}{#1}}
\setbeamertemplate{title page graphic line}[default][1.5ex]
%%%%% title page title line:
\defbeamertemplate{title page title line}{default}[1][1ex]%
{\beamer@horizontal@line@bottom{title page title line}{#1}}
\setbeamertemplate{title page title line}[default][0.2ex]
%%%%% title page author \and command:
\defbeamertemplate{title page author and}{space}{\def\beamer@andtitle{\quad}}
\defbeamertemplate{title page author and}{comma}{\def\beamer@andtitle{,\quad}}
\defbeamertemplate{title page author and}{line}{\def\beamer@andtitle{\enspace$\vert$\enspace\thickspace}}
\defbeamertemplate{title page author and}{and}{\def\beamer@andtitle{\thickspace\&\enspace}}
\setbeamertemplate{title page author and}[line]
%%%%% title page institute \and command:
\defbeamertemplate{title page institute and}{default}{}
\defbeamertemplate{title page institute and}{space}{\def\beamer@andinst{\quad}}
\defbeamertemplate{title page institute and}{comma}{\def\beamer@andinst{,\quad}}
\defbeamertemplate{title page institute and}{line}{\def\beamer@andinst{\enspace$\vert$\enspace\thickspace}}
\setbeamertemplate{title page institute and}[line]
%%%%% title page: leftlines
\defbeamertemplate*{title page}{leftlines}
{
\vbox{}
% title logo with line:
\ifx\inserttitlelogo\@empty\else%
\begin{beamercolorbox}[wd=\linewidth]{titlelogo}
\inserttitlelogo%
\end{beamercolorbox}%
\vspace{1.2ex}
\usebeamertemplate{frametitle line}%
\vspace{1ex}
\fi
% title graphic:
\ifx\inserttitlegraphic\@empty\else%
\begin{beamercolorbox}[wd=\linewidth]{titlegraphic}
\inserttitlegraphic%
\end{beamercolorbox}%
\usebeamertemplate{title page graphic line}%
\fi%
\vfill\vfill\vfill
% title:
\begin{beamercolorbox}[wd=\linewidth]{title}
\usebeamerfont{title}\inserttitle\par%
\end{beamercolorbox}%
% subtitle:
\ifx\insertsubtitle\@empty\else%
\vspace{1ex}
\begin{beamercolorbox}[wd=\linewidth]{subtitle}
\usebeamerfont{subtitle}\insertsubtitle\par%
\end{beamercolorbox}%
\fi%
\vfill
\usebeamertemplate{title page title line}%
\vfill
% author:
\begin{beamercolorbox}[wd=\linewidth]{author}
\usebeamertemplate{title page author and}%
\usebeamerfont{author}\insertauthor
\end{beamercolorbox}
\vfill
% institute and date:
\begin{beamercolorbox}[wd=\linewidth]{institute}
\usebeamertemplate{title page institute and}%
\usebeamerfont{institute}\insertinstitute
\hfill
\usebeamerfont{date}\insertdate
\end{beamercolorbox}
}
%%%%% title page: centerlines
\defbeamertemplate*{title page}{centerlines}
{
\vbox{}
% title logo with line:
\ifx\inserttitlelogo\@empty\else%
\begin{beamercolorbox}[wd=\linewidth,center]{titlelogo}
\inserttitlelogo%
\end{beamercolorbox}%
\vspace{1.2ex}
\usebeamertemplate{frametitle line}%
\vspace{1ex}
\fi
% title graphic:
\ifx\inserttitlegraphic\@empty\else%
\begin{beamercolorbox}[wd=\linewidth,center]{titlegraphic}
\inserttitlegraphic%
\end{beamercolorbox}%
\usebeamertemplate{title page graphic line}%
\fi%
\vfill\vfill\vfill
% title:
\begin{beamercolorbox}[wd=\linewidth,center]{title}
\usebeamerfont{title}\inserttitle\par%
\end{beamercolorbox}%
% subtitle:
\ifx\insertsubtitle\@empty\else%
\vspace{1ex}
\begin{beamercolorbox}[wd=\linewidth,center]{subtitle}
\usebeamerfont{subtitle}\insertsubtitle\par%
\end{beamercolorbox}%
\fi%
\vfill
\usebeamertemplate{title page title line}%
\vfill
% author:
\begin{beamercolorbox}[wd=\linewidth,center]{author}
\usebeamertemplate{title page author and}%
\usebeamerfont{author}\insertauthor
\end{beamercolorbox}
\vfill
% institute and date:
\begin{beamercolorbox}[wd=\linewidth,center]{institute}
\usebeamertemplate{title page institute and}%
\usebeamerfont{institute}\insertinstitute
\hfill
\usebeamerfont{date}\insertdate
\end{beamercolorbox}
}
\setbeamertemplate{title page}[leftlines]
%%%%% section page %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% section page separator: space
\defbeamertemplate{section name separator}{space}{}
% section page separator: text
\defbeamertemplate{section name separator}{text}[1][1pt]%
{{\usebeamercolor[fg]{section name separator}\rule[-0.5ex]{#1}{2.4ex}}}
\setbeamertemplate{section name separator}[text][1pt]
%%%%% section page: left
\defbeamertemplate{section page}{left}[1][0.3\textheight]
{
\vspace{#1}%
\begin{columns}[t,onlytextwidth]
\begin{column}{0.1\textwidth}
\usebeamerfont{section name}%
\raggedleft{\usebeamercolor[fg]{section name}%
\makebox[0.5\linewidth][r]{\insertsectionnumber}%
\makebox[0.5\linewidth][c]{\usebeamertemplate{section name separator}}}%
\end{column}
\begin{column}{0.9\textwidth}
\usebeamerfont{section title}%
{\usebeamercolor[fg]{section title}\hypersetup{linkcolor=}\insertsection}%
\end{column}
\end{columns}
}
\setbeamertemplate{section page}[left][0.3\textheight]
%%%%% start each section with a special slide:
\AtBeginSection{
\frame[plain]{\sectionpage}
}
%%%%% subsection page %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% subsection page separator: space
\defbeamertemplate{subsection name separator}{space}{}
% subsection page separator: text
\defbeamertemplate{subsection name separator}{text}[1][1pt]%
{{\usebeamercolor[fg]{subsection name separator}\rule[-0.5ex]{#1}{2.4ex}}}
\setbeamertemplate{subsection name separator}[text][1pt]
%%%%% subsection page: left
\defbeamertemplate{subsection page}{left}[1][0.3\textheight]%
{
\usebeamertemplate{section page}
\vspace{2ex}
\begin{columns}[t,onlytextwidth]
\begin{column}{0.1\textwidth}
\raggedleft%
\usebeamerfont{subsection name}%
{\usebeamercolor[fg]{subsection name}%
\makebox[0.5\linewidth][r]{\insertsubsectionnumber}%
\makebox[0.5\linewidth][c]{\usebeamertemplate{subsection name separator}}}%
\end{column}
\begin{column}{0.9\textwidth}
\usebeamerfont{subsection title}%
{\usebeamercolor[fg]{subsection title}\hypersetup{linkcolor=}\insertsubsection}%
\end{column}
\end{columns}
}
\setbeamertemplate{subsection page}[left][0.3\textheight]
%%%%% fonts %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\renewcommand{\familydefault}{\sfdefault}
\setbeamerfont{normal text}{size=\normalsize}
\setbeamerfont{frametitle}{size=\LARGE}
\setbeamerfont{framesubtitle}{size=\large}
\setbeamerfont{title}{size=\Large, shape=\bfseries}
\setbeamerfont{subtitle}{size=\large, shape=\bfseries}
\setbeamerfont{author}{size=\large}
\setbeamerfont{institute}{size=\normalsize}
\setbeamerfont{date}{size=\tiny}
\setbeamerfont{block title}{parent={normal text}}
\setbeamerfont{block body}{parent={normal text}}
\setbeamerfont{block title alerted}{parent={block title}}
\setbeamerfont{block body alerted}{parent={block body}}
\setbeamerfont{block title example}{parent={block title}}
\setbeamerfont{block body example}{parent={block body}}
\setbeamerfont{theorem title}{parent={block title}}
\setbeamerfont{theorem body}{parent={block body}}
\setbeamerfont{message}{parent={normal text}, size=\large}
\setbeamerfont{message item}{parent={normal text}, size=\large}
\setbeamerfont{quotation}{shape=\slshape}
\setbeamerfont{quotation symbol}{family*=pbk} % pbk , phv, pnc, qcs
\setbeamerfont{quotation source}{parent={normal text}, size=\small, shape=\upshape}
\setbeamerfont{quote}{shape=\slshape}
\setbeamerfont{quote symbol}{family*=pbk} % pbk , phv, pnc, qcs
\setbeamerfont{quote source}{parent={normal text}, size=\small, shape=\upshape}
\setbeamerfont{verse}{shape=\itshape}
\setbeamerfont*{section title}{size=\huge}
\setbeamerfont*{section name}{size=\huge}
\setbeamerfont*{subsection title}{size=\Large}
\setbeamerfont*{subsection name}{size=\Large}
\setbeamerfont{footline}{size=\footnotesize}
\setbeamerfont{author in head/foot}{}
\setbeamerfont{date in head/foot}{}
\setbeamerfont{institute in head/foot}{}
\setbeamerfont{title in head/foot}{}
\setbeamerfont{page number in head/foot}{}
\mode<all>