beamerThemeKenotom_old/beamerThemeKenotom.sty
Christos Choutouridis 121112fd08 Better fancy support
- fancy and nonavigation are now simple options instead of key-value
pair
 - Section frame are based on tikz now
 - Some dark theme color rework
2023-03-19 17:54:23 +02:00

580 lines
17 KiB
TeX

%
% beamerthemeKenotom.sty
%
% A beamer style file to use in a kenotom presentation
%
% author: Christos Choutouridis <c.choutouridis@kenotom.com>
%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{beamerthemeKenotom}[2023/05/12 Kenotom beamer theme]
% Requirements
% =====================================================
\RequirePackage{xcolor}
\RequirePackage{fontspec}
\RequirePackage{tikz}
\RequirePackage{graphicx}
\RequirePackage{ifthen}
\RequirePackage[absolute,overlay]{textpos}
% Options
% =====================================================
% key-value: theme: {classic(default), light, dark}
\DeclareOptionBeamer{theme}{\def\beamer@kenotom@theme{#1}}
% key-value: background: {none(default), ribon}
\DeclareOptionBeamer{background}{\def\beamer@kenotom@background{#1}}
% key-value: title: {normal(default), small, large}
\DeclareOptionBeamer{title}{\def\beamer@kenotom@title{#1}}
% Option: navigation
\DeclareOptionBeamer{nonavigation}{\def\beamer@kenotom@nonavigation{}}
% Option: fancy
\DeclareOptionBeamer{fancy}{\def\beamer@kenotom@fancy{}}
% Set default options
\ExecuteOptionsBeamer{theme=classic}
\ExecuteOptionsBeamer{background=none}
\ExecuteOptionsBeamer{title=normal}
\ProcessOptionsBeamer
%\ProcessOptions\relax
% Colors
% =====================================================
% Define some colors
\definecolor{KenotomGreenLight}{RGB}{127,213,201}
\definecolor{KenotomGreen}{RGB}{57,174,157}
\definecolor{KenotomGreenDark}{RGB}{39,103,96}
\definecolor{KenotomGreenGreyLight}{RGB}{203,217,217}
\definecolor{KenotomGreenGrey}{RGB}{67,91,92}
\definecolor{KenotomGreenGreyDark}{RGB}{13,34,39}
\definecolor{KenotomGreyLight}{RGB}{215,216,216}
\definecolor{KenotomGrey}{RGB}{154,155,157}
\definecolor{KenotomGreyDark1}{RGB}{108,108,108}
\definecolor{KenotomGreyDark2}{RGB}{92,96,98}
\definecolor{KenotomLightBlue1}{RGB}{207,226,234}
\definecolor{KenotomLightBlue2}{RGB}{232,241,245}
\definecolor{KenotomBlack}{RGB}{0,0,0}
\definecolor{KenotomWhite}{RGB}{255,255,255}
% Local commands
% =====================================================
\newcommand{\Vfill}{\vskip0pt plus 1filll}
% Define a string equality test
\newcommand{\isequal}[2]{ \pdf@strcmp{#1}{#2} }
\newcommand{\SetItemize}[1]{%
\setbeamertemplate{itemize item}{\small{#1}}
\setbeamertemplate{itemize subitem}{\scriptsize{#1}}
\setbeamertemplate{itemize subsubitem}{\tiny{#1}}
}
\newcommand{\SetGraphItemize}[2]{
\setbeamertemplate{itemize item}{\small\includegraphics[height=#1]{#2}}
\setbeamertemplate{itemize subitem}{\scriptsize\includegraphics[height=#1]{#2}}
\setbeamertemplate{itemize subsubitem}{\tiny\includegraphics[height=#1]{#2}}
}
% [1]: Banner image
\newcommand{\SetBackgroundPlain}[1]{%
\setbeamertemplate{background}{%
\begin{tikzpicture}[overlay,remember picture]
% Banner
\node[anchor=east, inner sep=0pt, yshift=-0.06\paperheight] at (current page.north east) {%
\includegraphics[width=0.2\paperwidth]{#1}
};%
\end{tikzpicture}%
}
}
% [1]: [social]:
% {2}: Banner image
% {3}: background image
% {4}: y-offset
% {5}: Opacity
\newcommand{\SetBackgroundImage}[5][noSocial]{%
\setbeamertemplate{background}{%
\begin{tikzpicture}[overlay,remember picture]
% Banner
\node[anchor=east, inner sep=0pt, yshift=-0.06\paperheight] at (current page.north east) {%
\includegraphics[width=0.2\paperwidth]{#2}
};%
% Image
\node[anchor=center, inner sep=0pt, yshift=#4\paperheight, opacity=#5] at (current page.center) {%
\includegraphics[width=\paperwidth]{#3}
};%
% Social links
\ifnum \isequal{#1}{social}=0
\node[anchor=west, inner sep=0pt, xshift=0.05\paperwidth, yshift=-0.06\paperheight] at (current page.north west) {%
\includegraphics[width=0.03\paperwidth]{media/Social.png}
};%
\fi
\end{tikzpicture}%
}
}
\newcommand{\BeginCountingFrames}{%
\addtobeamertemplate{navigation symbols}{}{%
\hspace{2em} \usebeamerfont{footline} \texttt{ \scriptsize{\insertframenumber/\inserttotalframenumber}}
}
\setcounter{framenumber}{0}
}
%
% [1]: Color
% [2]: Text
%\newcommand{\InsertBackgroundToText}[2]{%
%% \colorbox{#1}{%
%% \parbox{\dimexpr\textwidth-2\fboxsep\relax}{#2}
% \colorbox{#1}{#2}
%
% }
%}
%
% Theme
% =====================================================
\ifnum \isequal{\beamer@kenotom@theme}{dark}=0
\colorlet{BackgroundCanvasColor}{KenotomGreenGreyDark}
\colorlet{TitleColor}{KenotomGreyLight}
\colorlet{TitleColorFancy}{KenotomWhite}
\colorlet{TitleColorAux}{KenotomGreenLight}
\colorlet{SectionTitleColor}{KenotomGreenLight}
\colorlet{FrameTitleColor}{KenotomGreenLight}
\colorlet{BlockTitleColor}{KenotomGreenLight}
\colorlet{TextColor}{KenotomGreenGreyLight}
\colorlet{StructureColor}{KenotomGreenLight}
\colorlet{SectionFrameOpacityColor}{KenotomGreenGreyDark}
\colorlet{GraphicBoxColor}{KenotomGreyDark1}
\colorlet{GraphicLineColor}{KenotomGreenLight}
\colorlet{NavigationColor}{KenotomGreen}
\colorlet{NavigationColorFancy}{KenotomGreen}
\colorlet{NavigationArrowsColor}{KenotomGreyLight}
\colorlet{NavigationArrowsColorFancy}{KenotomGreyLight}
\colorlet{TableCaptionColor}{KenotomGreyDark1}
\colorlet{TableCaptionTextColor}{KenotomWhite}
\colorlet{TableRowColor1}{KenotomLightBlue1}
\colorlet{TableRowColor2}{KenotomLightBlue2}
\else \ifnum \isequal{\beamer@kenotom@theme}{light}=0
\colorlet{BackgroundCanvasColor}{KenotomWhite}
\colorlet{TitleColor}{KenotomGrey}
\colorlet{TitleColorFancy}{KenotomWhite}
\colorlet{TitleColorAux}{KenotomGreen}
\colorlet{SectionTitleColor}{KenotomWhite!90!KenotomGreenLight}
\colorlet{FrameTitleColor}{KenotomGrey}
\colorlet{BlockTitleColor}{KenotomGrey}
\colorlet{TextColor}{KenotomGrey}
\colorlet{StructureColor}{KenotomGreen}
\colorlet{SectionFrameOpacityColor}{KenotomGreenLight}
\colorlet{GraphicBoxColor}{KenotomGreyDark1}
\colorlet{GraphicLineColor}{KenotomGreenLight}
\colorlet{NavigationColor}{KenotomGreen}
\colorlet{NavigationColorFancy}{KenotomWhite}
\colorlet{NavigationArrowsColor}{KenotomGrey}
\colorlet{NavigationArrowsColorFancy}{KenotomWhite}
\colorlet{TableCaptionColor}{KenotomGrey}
\colorlet{TableCaptionTextColor}{KenotomWhite}
\colorlet{TableRowColor1}{KenotomLightBlue1}
\colorlet{TableRowColor2}{KenotomLightBlue2}
\else % clasic
\colorlet{BackgroundCanvasColor}{KenotomWhite}
\colorlet{TitleColor}{KenotomGreyDark1}
\colorlet{TitleColorFancy}{KenotomWhite}
\colorlet{TitleColorAux}{KenotomGreen}
\colorlet{SectionTitleColor}{KenotomWhite!90!KenotomGreenLight}
\colorlet{TitleColorFancy}{KenotomWhite}
\colorlet{FrameTitleColor}{KenotomGreyDark2}
\colorlet{BlockTitleColor}{KenotomGreyDark2}
\colorlet{TextColor}{KenotomGreyDark1}
\colorlet{StructureColor}{KenotomGreen}
\colorlet{SectionFrameOpacityColor}{KenotomGreenLight}
\colorlet{GraphicBoxColor}{KenotomGreyDark1}
\colorlet{GraphicLineColor}{KenotomGreenLight}
\colorlet{SectionFrameOpacityColor}{KenotomGreen}
\colorlet{GraphicBoxColor}{KenotomGreyDark1}
\colorlet{GraphicLineColor}{KenotomGreenLight}
\colorlet{NavigationColor}{KenotomGreen}
\colorlet{NavigationColorFancy}{KenotomWhite}
\colorlet{NavigationArrowsColor}{KenotomGreyDark1}
\colorlet{NavigationArrowsColorFancy}{KenotomWhite}
\colorlet{TableCaptionColor}{KenotomGreyDark1}
\colorlet{TableCaptionTextColor}{KenotomWhite}
\colorlet{TableRowColor1}{KenotomLightBlue1}
\colorlet{TableRowColor2}{KenotomLightBlue2}
\fi\fi
% Apply theme colors
\setbeamercolor{background canvas}{bg=BackgroundCanvasColor}
\setbeamercolor{title}{fg=TitleColor}
\setbeamercolor{subtitle}{fg=TitleColor}
\setbeamercolor{frametitle}{fg=FrameTitleColor}
\setbeamercolor{section title}{fg=FrameTitleColor}
\setbeamercolor{subsection title}{fg=FrameTitleColor}
\setbeamercolor{block title}{fg=BlockTitleColor}
\setbeamercolor{normal text}{fg=TextColor}
\setbeamercolor{structure}{fg=StructureColor}
\setbeamercolor{navigation symbols}{fg=NavigationColor, bg=NavigationArrowsColor}
%
% Layout and global settings
% =====================================================
\newcommand{\SideMargin}{2em}
% Frame layout
\setbeamersize{
text margin left=\SideMargin,
text margin right=\SideMargin
}
\setlength{\leftmargini}{1.25em}
\setlength{\leftmarginii}{1em}
\setlength{\leftmarginiii}{1em}
\addtobeamertemplate{footnote}{}{\vspace{2ex}}
% Default background (We overwrite it temporary inside kenotom frame environments)
\ifnum \isequal{\beamer@kenotom@background}{ribon}=0
\SetBackgroundImage{media/BannerLogoLink.png}{media/Ribon.png}{0.04}{0.15}
\else %None
\SetBackgroundPlain{media/BannerLogoLink.png}
\fi%
% Fonts
\setromanfont{Georgia}
\setsansfont[Scale=MatchLowercase]{Open Sans}
% General
\ifdefined \beamer@kenotom@nonavigation
\setbeamertemplate{navigation symbols}{}
\fi
\setbeamertemplate{caption}[numbered]
% Default itemize symbols (We overwrite them with kenotom environments)
\SetItemize{\textbullet}
% Content style
% =====================================================
\newcommand{\TitleSize}{\Huge}
\newcommand{\SectionSize}{\Large}
\ifnum \isequal{\beamer@kenotom@title}{small}=0
\newcommand{\FrameTitleSize}{\large}
\else\ifnum \isequal{\beamer@kenotom@title}{normal}=0
\newcommand{\FrameTitleSize}{\Large}
\else\ifnum \isequal{\beamer@kenotom@title}{large}=0
\newcommand{\FrameTitleSize}{\huge}
\else % default = normal
\newcommand{\FrameTitleSize}{\Large}
\fi\fi\fi%
\newcommand{\AuthorSize}{\Large}
\newcommand{\InstituteSize}{\normalsize}
\newcommand{\ContactInfoSize}{\normalize}
\newcommand{\FancyTitleSize}{\LARGE}
\newcommand{\FancyTitleFontStyle}[1]{\textbf{#1}}
%\newcommand{\FancyDateSize}{\normalize}
%\newcommand{\FancyDateFontStyle}[1]{\textrm{#1}}
\newcommand{\FancySectionSize}{\huge}
\newcommand{\FancySectionFontStyle}[1]{\textbf{#1}}
% Title page style
\setbeamertemplate{title page}[default][left]
\setbeamerfont{title}{family=\rmfamily,size=\TitleSize}
\setbeamerfont{author}{size=\AuthorSize}
\setbeamerfont{institute}{size=\InstituteSize}
\renewcommand{\maketitle}{%
\ifdefined \beamer@kenotom@fancy
\TitleFrameFancy
\else {% once
\SetBackgroundImage{media/BannerLink.png}{media/Ribon.png}{0.04}{0.4}
\begin{frame}
\titlepage
\end{frame}
} \fi
}
% footline
%\setbeamertemplate{navigation symbols}{}
%\setbeamertemplate{footlline}{\hfill \insertnavigation{0.3\textwidth}}
% Frame title style
\setbeamerfont{frametitle}{family=\rmfamily,size=\FrameTitleSize,series=\bfseries}
\setbeamertemplate{frametitle}{
\vskip0.05\paperheight
\insertframetitle
}
%\setbeamerfont{section title}{size=\LARGE,series=\bfseries}
%\setbeamerfont{subsection title}{size=\Large,series=\bfseries}
% Block style
\setbeamerfont{block title}{family=\rmfamily,size=\large}
% Table style
\renewcommand{\arraystretch}{1.2}
\newcommand{\tableheadrow}{\rowcolor{TableCaptionColor}}
\newcommand{\tableheadcol}[1]{{\bfseries\color{TableCaptionTextColor}#1}}
\rowcolors{2}{TableRowColor1}{TableRowColor2}
% Section frames
\AtBeginSection[]{%
\ifdefined \beamer@kenotom@fancy
\SectionFrameFancy
\fi
}
%\AtBeginEnvironment{tabular}{\color{black}}
\newcommand{\InsertFancyTitle}{%
\FancyTitleSize
\textcolor{TitleColorFancy}{\FancyTitleFontStyle{\inserttitle}}
}
\newcommand{\InsertFancySection}{%
\FancySectionSize
\textcolor{SectionTitleColor}{
\ifnum \thesection<10
\FancySectionFontStyle{0\thesection} \\
\else
\FancySectionFontStyle{\thesection} \\
\fi
\FancySectionFontStyle{\insertsection}
}
}
\newcommand{\InsertFancyDate}{%
\textcolor{TitleColorFancy}{\insertdate}
}
\newcommand{\InsertAuthorEmail}{%
\AuthorEmail
}
\newcommand{\InsertAddress}{%
\textcolor{StructureColor}{\Address}
}
\newcommand{\InsertTelephone}{%
\textcolor{StructureColor}{\Telephone}
}
% Kenotom environments
% =====================================================
% Kenotom CoverFrame
\newcommand{\TitleFrameFancy}{ {% once
\SetBackgroundImage[social]{media/BannerLink.png}{media/Ribon.png}{0.12}{0.1}
\setbeamercolor{navigation symbols}{fg=NavigationColor, bg=NavigationArrowsColorFancy}
\addtobeamertemplate{background}{}{%
\begin{tikzpicture}[overlay,remember picture]
% Logo
\node[anchor=center, inner sep=0pt, yshift=0.275\paperheight] at (current page.center) {%
\ifnum \isequal{\beamer@kenotom@theme}{dark}=0
\includegraphics[width=\paperwidth]{media/LogoWhite.png}
\else
\includegraphics[width=\paperwidth]{media/Logo.png}
\fi
};%
% Car the
\node[anchor=north, inner sep=0pt, yshift=0.08\paperheight] at (current page.center) {%
\includegraphics[width=\paperwidth, keepaspectratio]{media/CarCover.png}
};%
% TitleBox center:0.58\paperheight
\node[anchor=center, inner sep=0pt, yshift=0.08\paperheight] at (current page.center) {%
\includegraphics[width=0.7\paperwidth, keepaspectratio]{media/FancyTitleBox.png}
};%
\end{tikzpicture}
}
\begin{frame}
\setlength{\TPHorizModule}{\paperwidth}
\setlength{\TPVertModule}{\paperheight}
% hsize:
% 0.58 = {BoxLength=7.697}/{TotlaLength=13.333}
% hpos: 0.56
% (1.6/2)/13.333 in = 0.06\paperwidth
% 0.5+0.06 = 0.56
% vpos: 0.42
% 0.42 = 0.5 - 0.08
\begin{textblock}{0.58}[0.5,0.5](0.56,0.42)
\centering
\InsertFancyTitle
\end{textblock}
% Date @ bottom right
\begin{textblock}{0.5}[1,1](0.95,0.95)
\begin{flushright}
\InsertFancyDate
\end{flushright}
\end{textblock}
\end{frame}
}
}
% [nosubsections]
% {1} : Outline Text Grey
% {2} : Outline Text Green
\newcommand{\OutlineFrameFancy}[3][subsections]{ {% once
\SetBackgroundImage{media/BannerLink.png}{media/Ribon.png}{0.04}{0.1}
\begin{frame}
\begin{columns}
\begin{column}{0.6\textwidth}
\setlength{\TPHorizModule}{\textwidth}
\setlength{\TPVertModule}{\textheight}
\begin{textblock}{1}[0.5,0.5](0.55,0.35)
\centering
\huge \textbf {\textcolor{KenotomGrey}{#2} \textcolor{KenotomGreen}{#3}}
\end{textblock}
\end{column}
\begin{column}{0.4\textwidth}
\vspace{0.2\textheight}
\ifnum \isequal{#1}{nosubsections}=0
\setcounter{tocdepth}{1}
\fi
\tableofcontents
\Vfill
\end{column}
\end{columns}
\end{frame}
}
}
\newcommand{\OutlineFrame}[3][subsections]{%
\ifdefined \beamer@kenotom@fancy
\OutlineFrameFancy[#1]{#2}{#3}
\else
\begin{frame}{#2 #3}
\vspace{0.2\textheight}
\ifnum \isequal{#1}{nosubsections}=0
\setcounter{tocdepth}{1}
\fi
\tableofcontents
\Vfill
\end{frame}
\fi
}
\newcommand{\SectionFrameFancy}{ {% once
\SetBackgroundImage{media/nothing.png}{media/SectionBackground.png}{0}{1.0}
\setbeamercolor{navigation symbols}{fg=NavigationColorFancy, bg=NavigationArrowsColorFancy}
\addtobeamertemplate{background}{}{%
\begin{tikzpicture}[overlay,remember picture]
% Rectangular fill
\fill[SectionFrameOpacityColor, opacity=0.95]
(current page.south east) rectangle (0.3075\paperwidth, \paperheight);
% Circle fill
\fill[GraphicBoxColor, opacity=0.95]
(0.3075\paperwidth, -0.5\paperheight) circle (0.1537\paperwidth);
% Border lines
\draw[color=GraphicLineColor, line width=0.8mm]
(0.3075\paperwidth, -0.5\paperheight) circle (0.17\paperwidth);
\draw[color=GraphicLineColor, line width=0.8mm]
(0.4775\paperwidth, -0.5\paperheight) -- (0.9\paperwidth, -0.5\paperheight);
\fill[GraphicLineColor, opacity=0.95]
(0.9\paperwidth, -0.5\paperheight) circle (1.2mm);
% City
\node[anchor=center] at (0.3075\paperwidth, -0.5\paperheight) {%
\includegraphics[width=0.1945\paperwidth]{media/City.png}
};
\end{tikzpicture}
}
\begin{frame}
\setlength{\TPHorizModule}{\paperwidth}
\setlength{\TPVertModule}{\paperheight}
% hsize:
% 0.4 = {AvailableLength}/{TotlaLength}
% hpos: 0.9
% // The line in svg ends @12in
% 0.9 = {LineEnds}/{TotalLength} = 12/13.333
% vpos: 0.475
% // 0.025 above center
% 0.475 = 0.5 - 0.025
\begin{textblock}{0.4}[1,1](0.9,0.475)
\begin{flushright}
\InsertFancySection
\end{flushright}
\end{textblock}
\end{frame}
}
}
\newcommand{\BackFrame}{ {% once
\SetBackgroundImage[social]{media/BannerThankYou.png}{media/Ribon.png}{0.04}{0.4}
\addtobeamertemplate{background}{}{%
\begin{tikzpicture}[overlay,remember picture]
\node[anchor=center, inner sep=0pt, yshift=0.04\paperheight] at (current page.center) {%
\includegraphics[width=\paperwidth]{media/LogoDetails.png}
};%
\node[anchor=south, inner sep=0pt] at (current page.south) {%
\includegraphics[width=\paperwidth]{media/BottomGradient.png}
};%
\end{tikzpicture}
}
\begin{frame}
\Vfill
\insertauthor \\
\InsertAuthorEmail \\
\InsertAddress \\
\InsertTelephone
\vspace{0.125\paperheight}
\end{frame}
}
}
\newenvironment{tickmarks}{%
\SetGraphItemize{1.6ex}{media/Tickmark.png}
\begin{itemize}
}{%
\end{itemize}
}
\newenvironment{bullets}{%
\SetGraphItemize{1.3em}{media/Bullet.png}
\begin{itemize}
}{%
\end{itemize}
}