Commit 88372df1 authored by Cédric Ware's avatar Cédric Ware
Browse files

Start revamping the footline.

Start updating some colors.
Rationalize frieze generation.
Rationalize \contentsframe.
Convert options to pgfopts.
Enable displaying page as N / total.
parent d37e9f19
......@@ -41,20 +41,15 @@
%%------------------------------------------------------------------------------
%% Faire apparaitre le plan à chaque section
\AtBeginSection[]
{
\begin{frame}<beamer>
\frametitle{Plan}
\tableofcontents[currentsection]
\end{frame}
\AtBeginSection[]{
\contentsframe[currentsection]
}
\AtBeginSubsection[]
{
\begin{frame}<beamer>
\frametitle{Plan}
\tableofcontents[currentsubsection]
\end{frame}
\AtBeginSubsection[]{
\contentsframe[currentsubsection]
}
% Avec un autre nom que «Table des matières» en français.
\renewcommand*{\contentsframename}{Plan}
%------------------------------------------------------------------------------
......
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\ProvidesPackage{beamerthemetptnew}[2011/11/15]
% Utilisation de pgfkeys/pgfopts pour la gestion des options,
% et définition de raccourcis.
\RequirePackage{pgfopts}
\newcommand\tptthemekeys[1]{\pgfqkeys{/tpt theme}{#1}}
\newcommand\tptthemevalueof[1]{\pgfkeysvalueof{/tpt theme/#1}}
\RequirePackage{pgffor}
\RequirePackage{graphicx}
\RequirePackage{xcolor}
% Police Helvetica par défaut, mais on sauve la police sans-serif d'avant
% s'il y en a une (sinon c'est cmss).
\let\tpt@save@sffamily=\sfdefault
\RequirePackage{helvet}
\mode<presentation>
% FIXME déplacer.
% Trouver le compromis entre \ProcessOptions au début ou à la fin.
\defbeamertemplate{page in head/foot}{plain}{%
\insertframenumber
}
\defbeamertemplate{page in head/foot}{total}{%
\insertframenumber/\inserttotalframenumber
}
\defbeamertemplate{page in head/foot}{body}{%
\insertframenumber/\insertbodyframenumber
}
\newif\iftpt@infolines\tpt@infolinesfalse
\DeclareOption{infolines}{\tpt@infolinestrue}
\newif\iftpt@navsymbols\tpt@navsymbolstrue
\DeclareOption{nonavsymbols}{\tpt@navsymbolsfalse}
\newif\iftpt@titleaffiliation\tpt@titleaffiliationfalse
\DeclareOption{titleaffiliation}{\tpt@titleaffiliationtrue}
\newif\iftpt@affiliation\tpt@affiliationfalse
\DeclareOption{affiliation}{\tpt@affiliationtrue}
\newif\iftpt@logosaclay\tpt@logosaclayfalse
\DeclareOption{logosaclay}{\tpt@logosaclaytrue}
\newif\iftpt@logoipp\tpt@logoippfalse
\DeclareOption{logoipp}{\tpt@logoipptrue}
\ProcessOptions
\tptthemekeys{%
infolines/.is if=tpt@infolines,
navsymbols/.is if=tpt@navsymbols,
nonavsymbols/.style={navsymbols=false},
titleaffiliation/.is if=tpt@titleaffiliation,
affiliation/.is if=tpt@affiliation,
logosaclay/.is if=tpt@logosaclay,
logoipp/.is if=tpt@logoipp,
helvet/.is choice,
helvet/.default=true,
helvet/false/.code={\let\sfdefault=\tpt@save@sffamily},
helvet/true/.code={\renewcommand\sfdefault{phv}},
nohelvet/.style={helvet=false},
framecount/.is choice,
framecount/false/.code={\setbeamertemplate{page in head/foot}[plain]},
framecount/true/.code={\setbeamertemplate{page in head/foot}[total]},
framecount/body/.code={\setbeamertemplate{page in head/foot}[body]},
framecount/.default=true, % "framecount" seul veut dire "framecount=true"...
framecount=false, % ... mais par défaut il est mis à "false".
bodyframecount/.style={framecount=body},
}
\ProcessPgfOptions{/tpt theme}
\mode<presentation>
%
% Extra metadata commands: \email, \dept.
......@@ -28,10 +68,17 @@
\newcommand\dept[1]{\gdef\insertdept{#1}}
\dept{}
\newlength{\titlelogowidth}
\setlength{\titlelogowidth}{2cm}
\newlength{\titleaffiliationlogowidth}
\setlength{\titleaffiliationlogowidth}{2cm}
%
% Définition de longueurs.
%
% Une macro pour aider.
\newcommand*\tpt@deflength[2]{\newlength{#1}\setlength{#1}{#2}}
% Taille des logos.
\tpt@deflength{\titlelogowidth}{2cm}
\tpt@deflength{\titleaffiliationlogowidth}{2cm}
% le logo de la page de titre
\pgfdeclareimage[width=\titlelogowidth]{LogoFirst}{logo-tp-ipp.pdf}
% pour positionner ce logo par rapport au coin sup. gauche
......@@ -93,8 +140,7 @@
\newcommand\insertAffLogo{}
\fi
\pgfdeclareimage[width=\footerlogoheight]{logoTPT}{tp}
\logo{\pgfuseimage{logoTPT}}
\logo{\includegraphics[height=\footerlogoheight]{logo-tp-ipp}}
% .3 cm pour un beamer standard de 9.6cm de haut
\newcommand\footlineheight{0.03125\paperheight}
......@@ -116,13 +162,13 @@
\setbeamercolor{author in title frame}{bg=white,fg=black!40}
\setbeamercolor{mail in title frame}{bg=white,fg=black!40}
\setbeamercolor{date in title frame}{bg=white,fg=black!40}
\setbeamercolor{date in head/foot}{fg=white,bg=tptbrown}
\setbeamercolor{page in head/foot}{fg=white,bg=tptred}
\setbeamercolor{date in head/foot}{parent=page in head/foot}
\setbeamercolor{dept in head/foot}{fg=white,bg=black}
\setbeamercolor{author in head/foot}{fg=white,bg=tptbrown}
\setbeamercolor{section in head/foot}{bg=white,fg=tptred}
\setbeamercolor{subsection in head/foot}{bg=white,fg=tptbrown}
\setbeamercolor{title in head/foot}{fg=white,bg=tptbrown}
\setbeamercolor{title in head/foot}{fg=white,bg=gray}
\setbeamercolor{block title}{parent=structure,bg=normal text.bg!75!tptbrown}
\setbeamercolor{block body}{bg=normal text.bg!98!tptbrown}
\setbeamercolor{block title alerted}{use={normal text,alerted text},fg=alerted text.fg!75!normal text.fg,bg=normal text.bg!75!tptred}
......@@ -140,6 +186,13 @@
\setbeamerfont{author in head/foot}{size*={6}{7},series=\sffamily}
\setbeamerfont{frametitle}{size*={14}{18},series=\bfseries}
% FIXME déplacer ailleurs et documenter.
\newcommand*\tptfrieze[4][0pt]{%
\foreach \tpt@color in {#4} {%
\textcolor{\tpt@color}{\rule[#1]{#2}{#3}}%
}%
}
%
% Title page.
......@@ -182,9 +235,8 @@
\end{minipage}%
\vspace{.03\paperheight}\par%
\begin{beamercolorbox}[sep=0cm,wd=.6\paperwidth]{title}
\begin{beamercolorbox}[sep=0pt,wd=.2\paperwidth,ht=.4cm]{page in head/foot}\hfill{}\end{beamercolorbox}%
\begin{beamercolorbox}[sep=0pt,wd=.2\paperwidth,ht=.4cm]{dept in head/foot}\hfill{}\end{beamercolorbox}%
\begin{beamercolorbox}[sep=0pt,wd=.2\paperwidth,ht=.4cm]{author in head/foot}\hfill{}\end{beamercolorbox}%
\tptfrieze{.2\paperwidth}{.4cm}{%
page in head/foot.bg,dept in head/foot.bg,title in head/foot.bg}
\end{beamercolorbox}%
\vspace{.20\paperheight}%
\end{column}
......@@ -207,46 +259,101 @@
\defbeamertemplate*{sidebar right}{tpt default} {}
%
% Bas de page : boîtes de couleur et logo.
%
% On commence par définir :
% * les dimensions ;
% * une macro générique pour faire une boîte ;
% * deux macros spécialisées pour les boîtes selon qu'elles sont
% centrées ou alignées verticalement ;
% * une macro qui pointe vers l'une ou l'autre des macros spécialisées,
% changeable par une option du package.
%
\tpt@deflength{\tptbottomboxsep}{\footlinespacing}
\tpt@deflength{\tptleftbottomboxwidth}{.15\paperwidth}
\tpt@deflength{\tptmidbottomboxwidth}{.27\paperwidth}
\tpt@deflength{\tptbottomboxdepth}{1ex}
\tpt@deflength{\tptbottomboxheight}{%
\dimexpr \footlineheight + \tptbottomboxdepth \relax}
\tpt@deflength{\tptfooterlogoyshift}{-2pt}
% Macros génériques et spécialisées pour faire un boîte.
% Paramètres : [options beamercolorbox], couleur Beamer, contenu.
\newcommand*\tpt@bottombox[3]{%
\begin{beamercolorbox}[center,#1]{#2}
#3
\end{beamercolorbox}%
}
\newcommand*\tpt@bottombox@centered[4][]{%
\tpt@bottombox{wd={#3},#1}{#2}{%
\vbox to\tptbottomboxheight{\vfil#4\vfil}%
}%
}
\newcommand*\tpt@bottombox@aligned[4][]{%
\tpt@bottombox{wd={#3},ht={\dimexpr\tptbottomboxheight-\tptbottomboxdepth\relax},dp=\tptbottomboxdepth,#1}{#2}{%
#4%
}%
}
\let\tptbottombox=\tpt@bottombox@aligned
% Macro pour faire l'ensemble des boîtes de bas de page.
% Paramètre : la largeur totale (pour ajuster la dernière boîte).
\newcommand*\tptbottomboxes[1]{%
\setlength\@tempdima{#1}%
\leavevmode
\tptbottombox{page in head/foot}{\tptleftbottomboxwidth}{%
\usebeamertemplate{page in head/foot}%
\ifx\insertdate\@empty\else\hfill\insertdate\fi
}%
\hspace*{\tptbottomboxsep}%
\tptbottombox{dept in head/foot}{\tptmidbottomboxwidth}{%
\insertinstitute
}%
\hspace*{\tptbottomboxsep}%
\tptbottombox{title in head/foot}{%
\dimexpr \@tempdima - \tptleftbottomboxwidth - \tptmidbottomboxwidth
- 2\tptbottomboxsep\relax}{%
\insertshorttitle
}%
}
%%% Bas de page
\defbeamertemplate*{footline}{tpt default}
{%
\leavevmode%
\iftpt@navsymbols\vskip 2pt%
\begin{beamercolorbox}[left, wd=.9\paperwidth, ht=\footlineheight]{}
\usebeamertemplate***{navigation symbols}%
\end{beamercolorbox}
\vskip -14pt%
\else\fi
\hbox{%
\begin{beamercolorbox}[left,wd=.15\paperwidth,ht=\footlineheight,dp=1.5ex]{page in head/foot}%
\hspace*{3ex}%
\usebeamerfont{author in head/foot}\insertframenumber{}/\inserttotalframenumber%
\hfill{}%
\end{beamercolorbox}%
\hspace*{\footlinespacing}%
\hfill{}%
\begin{beamercolorbox}[wd=.27\paperwidth,ht=\footlineheight,dp=1.5ex,leftskip=1em,rightskip=1em]{dept in head/foot}%
\hfill{}%
\usebeamerfont{dept in head/foot}\insertinstitute%
\hfill{}\hfill{}%
\end{beamercolorbox}%
\hspace*{\footlinespacing}%
\hfill{}%
\begin{beamercolorbox}[wd=\brownblockwidth,ht=\footlineheight,dp=1.5ex,leftskip=.3cm,rightskip=1ex]{title in head/foot}%
\usebeamerfont{author in head/foot}\insertshortauthor%
\hfill{}%
\usebeamerfont{date in head/foot}\insertshortdate%
\end{beamercolorbox}
\hspace*{\footlinespacing}%
\hfill{}%
\raisebox{-1.5ex}{\insertlogo}% le logo
\insertAffLogo%
}%
\vskip3pt%
%
% Le bas de page proprement dit : les boîtes et le logo dans la footline.
% Le logo est typesetté dans une boîte pour calculer sa largeur et
% ajuster la taille des boîtes via le paramètre de \tptbottomboxes.
%
\newsavebox\tpt@tempbox
\defbeamertemplate*{footline}{tpt default}{%
%
% On commence par typesetter le logo.
% FIXME \sbox\tpt@tempbox{\insertlogo}%
\sbox\tpt@tempbox{%
\raisebox{-1.5ex}{\insertlogo}%
\insertAffLogo%
}
%
% FIXME nav symbols
%
\iftpt@navsymbols\vskip 2pt%
\begin{beamercolorbox}[left, wd=.9\paperwidth, ht=\footlineheight]{}
\usebeamertemplate***{navigation symbols}%
\end{beamercolorbox}
\vskip -14pt%
\fi
\leavevmode
\mbox{%
\tptbottomboxes{\dimexpr \paperwidth - \wd\tpt@tempbox}%
\hspace*{\footlinespacing}%
\hfill%
\smash{\raisebox{\tptfooterlogoyshift}{\usebox{\tpt@tempbox}}}%
}%
\vskip3pt%
}
%%%% En tête
% Frame title
......@@ -263,9 +370,8 @@
\begin{minipage}[b]{1.95cm}
\iftpt@infolines\vspace*{.15cm}\else\vspace*{.5cm}\fi
\mbox{%
\begin{beamercolorbox}[wd=0.65cm,ht=.5cm]{page in head/foot}\hfill{}\end{beamercolorbox}%
\begin{beamercolorbox}[wd=0.65cm,ht=.5cm]{dept in head/foot}\hfill{}\end{beamercolorbox}%
\begin{beamercolorbox}[wd=0.65cm,ht=.5cm]{author in head/foot}\hfill{}\end{beamercolorbox}%
\tptfrieze{0.65cm}{.5cm}{%
page in head/foot.bg,dept in head/foot.bg,title in head/foot.bg}
}\par%
\end{minipage}
\hspace*{1ex}
......@@ -308,16 +414,43 @@
\defbeamertemplate*{itemize subitem}{tpt}{\textbullet}
\defbeamertemplate*{itemize subsubitem}{tpt}{--}
%
% \bodyframecount: nº du dernier frame hors annexe.
%
\newcommand\insertbodyframenumber{1} % On démarre au frame 1.
\newif\ifinappendix\inappendixfalse % Flag positionné par \appendix...
\let\save@beamer@appendix=\appendix % ... ce pour quoi on modifie \appendix.
\renewcommand\appendix{%
%
% On sauve le nº du frame : c'est le dernier frame hors annexe.
%
\immediate\write\@auxout{\string\@writefile{nav}%
{\noexpand\headcommand{\noexpand\def\noexpand\insertbodyframenumber{\the\c@framenumber}}}}
\save@beamer@appendix
\inappendixtrue
}
\AtEndDocument{%
%
% S'il n'y a pas d'annexe, on sauve le nº du dernier frame.
%
\ifinappendix
\else
\immediate\write\@auxout{\string\@writefile{nav}%
{\noexpand\headcommand{\noexpand\def\noexpand\insertbodyframenumber{\the\c@framenumber}}}}
\fi
}
% .. from tptthemtheme?
% Contents frame (FIXME part frame option).
%
\providecommand*{\contentsframe}[1][]{%
\providecommand*\contentsframe[1][]{%
\begin{frame}
\frametitle{Plan}% FIXME languages.
\frametitle{\contentsframename}
\tableofcontents[#1]
\end{frame}
}
\providecommand*\contentsframename{\contentsname}
\providecommand*\contentsname{Outline}% In case Babel not loaded.
\mode<all>
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment