Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Germain-C2S
Beamer TPT NG
Commits
5effc582
Commit
5effc582
authored
May 17, 2020
by
Cédric Ware
Browse files
Reimplement frame title, add alignment options.
Fix typos.
parent
07bd4779
Changes
2
Hide whitespace changes
Inline
Side-by-side
model.tex
View file @
5effc582
...
...
@@ -90,19 +90,29 @@
\setlength
{
\tptframetitlesep
}{
6pt
}
\setlength
{
\tptframetitlefriezeheight
}{
6pt
}
\setlength
{
\tptframetitlefriezewidth
}{
24pt
}
\setbeamercolor
{
frametitle
}{
fg=blue
}
\setlength
{
\tptframetitlefriezesep
}{
4pt
}
\setbeamercolor
{
frametitle
}{
fg=blue,bg=cyan!50!white
}
\setbeamercolor
{
structure
}{
fg=blue
}
\setbeamercolor
{
page in head/foot
}{
bg=blue
}
\tptcalculateheadfoot
\begin{frame}
\frametitle
{
Moins encombré, et avec le nombre de pages
}
\framesubtitle
{
... et d'autres couleurs !
}
\frametitle
{
Moins encombré, et avec le nombre de pages
(
... et d'autres couleurs !
)
}
\lipsum
[3]
\end{frame}
}
\tptcalculateheadfoot
{
\tptthemekeys
{
align frametitle=subtitle bottom baseline
}
\begin{frame}
\frametitle
{
Avec la frise alignée...
}
\framesubtitle
{
... sur le sous-titre, voir la ligne
%
\llap
{
\rule
{
20em
}{
0.4pt
}}}
\lipsum
[4]
\end{frame}
}
%------------------------------------------------------------------------------
\section
[1e]
{
1e Section
}
...
...
texinputs/beamerthemetptnew.sty
View file @
5effc582
...
...
@@ -22,7 +22,10 @@
\newif\iftpt
@titleaffiliation
\tpt
@titleaffiliationfalse
\newif\iftpt
@affiliation
\tpt
@affiliationfalse
\tptthemekeys
{
%
infolines/.is if=tpt@infolines,
infolines/.code=
{
%
\tpt
@infolinestrue
\setlength
{
\tptframetitlefriezesep
}{
1.5mm
}
%
}
,
navsymbols/.is choice,
navsymbols/.default=left,
navsymbols/left/.style=
{
navsymbols enable,navsymbols align=left
}
,
...
...
@@ -62,6 +65,28 @@
framecount/.default=true,
% "framecount" seul veut dire "framecount=true"...
framecount=false,
% ... mais par défaut il est mis à "false".
bodyframecount/.style=
{
framecount=body
}
,
alignframetitle/.style=
{
%
alignframetitle@template=#1,
frame title yshift=0pt,
frame title yshift if subtitle=0pt,
}
,
alignframetitle/.value required,
alignframetitle@template/.code=
{
%
\setbeamertemplate
{
frametitle content box
}
[#1]
%
}
,
alignframetitle@template/.value required,
align frametitle/.style=
{
alignframetitle=#1
}
,
align frame title/.style=
{
alignframetitle=#1
}
,
frametitleyshift/.code=
{
%
\setlength
{
\tptframetitleyshift
}{
#1
}}
,
frametitleyshift/.value required,
frametitle yshift/.style=
{
frametitleyshift=#1
}
,
frame title yshift/.style=
{
frametitleyshift=#1
}
,
frametitleyshiftifsubtitle/.code=
{
%
\setlength
{
\tptframetitleyshiftifsubtitle
}{
#1
}}
,
frametitleyshiftifsubtitle/.value required,
frametitle yshift if subtitle/.style=
{
frametitleyshiftifsubtitle=#1
}
,
frame title yshift if subtitle/.style=
{
frametitleyshiftifsubtitle=#1
}
,
}
% \ProcessPgfOptions à la fin du package, après les définitions.
...
...
@@ -360,44 +385,151 @@
%%%% En tête
% Frame title
%
% Titre du frame : dimensions.
%
\tpt
@deflength
{
\tptframetitlesep
}{
3ex
}
\tpt
@deflength
{
\tptframetitlefriezesep
}{
5mm
}
\tpt
@deflength
{
\tptframetitlefriezewidth
}{
19.5mm
}
\tpt
@deflength
{
\tptframetitlefriezeheight
}{
5mm
}
\tpt
@deflength
{
\tptframetitleyshift
}{
0pt
}
\tpt
@deflength
{
\tptframetitleyshiftifsubtitle
}{
8pt
}
% FIXME
\tpt
@deflength
{
\tptframetitledepth
}{
2.1mm
}
% FIXME
\newlength
{
\tpt
@frametitle@width
}
\newlength
{
\tpt
@frametitle@content@width
}
\defbeamertemplate*
{
frametitle
}{
tpt default
}
[1][left]
{
\ifbeamercolorempty
[bg]
{
frametitle
}{}{
\nointerlineskip
}
%
\setlength
{
\@
tempdima
}{
%
\dimexpr
\paperwidth
-
\tptframetitlefriezewidth
-
\tptframetitlesep
\relax
}
%
\begin{beamercolorbox}
[sep=0cm,#1,wd=
\paperwidth
]
{
frametitle
}
\usebeamerfont
{
frametitle
}
%
\if
@tempswa
\else\csname
beamer@fte#1
\endcsname\fi
%
\begin{minipage}
[b]
{
\tptframetitlefriezewidth
}
\iftpt
@infolines
\vspace*
{
.15cm
}
\else\vspace*
{
.5cm
}
\fi
\mbox
{
%
\tptfrieze
{
%
0.333
\tptframetitlefriezewidth
}{
\tptframetitlefriezeheight
}{
%
page in head/foot.bg,institute in head/foot.bg,title in head/foot.bg
}
}
\par
%
\end{minipage}
%
\hspace*
{
\tptframetitlesep
}
%
\begin{minipage}
[c]
{
\@
tempdima
}
\ifx\insertframesubtitle\@
empty
%
\strut\insertframetitle\strut\par
%
\else
%
\strut\insertframetitle\strut\par
%
\usebeamerfont
{
framesubtitle
}
\usebeamercolor
[fg]
{
framesubtitle
}
\insertframesubtitle\strut\par
\fi
\end{minipage}
\vskip
-1ex
%
\if
@tempswa
\else\vskip
-.3cm
\fi
% set inside beamercolorbox... evil here...
%
% Titre du frame : beamercolorbox standard incluant la frise,
% et un template interne qui gère les options d'alignement
% de l'ensemble titre + sous-titre.
%
% Largeurs calculées au vol.
\defbeamertemplate*
{
frametitle
}{
tpt default
}
[1][]
{
%
\tptthemekeys
{
#1
}
% Active les options données (comme pour le package).
\nointerlineskip
% On ne saute pas de ligne après l'en-tête.
%
% La beamercolorbox prend tout le frame (moins les éventuelles sidebars).
\setlength
{
\tpt
@frametitle@width
}{
%
\dimexpr
\textwidth
+
\beamer
@leftmargin +
\beamer
@rightmargin
\relax
}
%
\begin{beamercolorbox}
[sep=0pt,wd=
\the\tpt
@frametitle@width]
{
frametitle
}
%
% La frise, avec une \rule invisible pour la marge verticale,
% et un arrière-plan blanc s'il y a une couleur de fond.
% FIXME mieux gérer couleur et marge p.ex. avec une autre beamercolorbox.
\mbox
{
%
\rule
{
0pt
}{
%
\dimexpr
\tptframetitlefriezeheight
+
\tptframetitlefriezesep
\relax
}
%
\ifbeamercolorempty
[bg]
{
frametitle
}{}{
%
\rlap
{
\textcolor
{
white
}{
%
\rule
[-1pt]
{
%
\dimexpr
\tptframetitlefriezewidth
+ 1pt
}{
%
\dimexpr
\tptframetitlefriezeheight
+ 2pt
}
%
}}}
%
\tptfrieze
{
%
0.333
\tptframetitlefriezewidth
}{
\tptframetitlefriezeheight
}{
%
page in head/foot.bg,institute in head/foot.bg,title in head/foot.bg
}
%
}
%
\hspace*
{
\tptframetitlesep
}
%
%
% On ajoute une profondeur minimale s'il y a une couleur de fond.
\ifbeamercolorempty
[bg]
{
frametitle
}{}{
%
\rule
[-\tptframetitledepth]
{
0pt
}{
0pt
}
%
}
%
%
% On décale la baseline de la hauteur demandée,
% notamment s'il y a un sous-titre.
\setlength
{
\@
tempdima
}{
\tptframetitleyshift
}
%
\ifx\insertframesubtitle\@
empty
\else
\addtolength
{
\@
tempdima
}{
\tptframetitleyshiftifsubtitle
}
%
\fi
%
% Le template interne, à qui on précalcule sa largeur.
\setlength
{
\tpt
@frametitle@content@width
}{
%
\dimexpr
\tpt
@frametitle@width
-
\tptframetitlefriezewidth
-
\tptframetitlesep
-
\beamer
@rightmargin
\relax
}
%
\raisebox
{
\@
tempdima
}{
\usebeamertemplate
{
frametitle content box
}}
%
\end{beamercolorbox}
%
}
%
% Pour le contenu du titre du frame, définissons des macros auxiliaires.
%
% Crée une \vbox alignée sur le dessous de son contenu
% et non sur la baseline de celui-ci.
\newcommand\tpt
@bottomalignedbox[1]
{
%
\vbox
{
#1
\nointerlineskip\vbox
{}}
%
}
% \tpt@framecontentbox{vbox}{align1}{pos1}{titre}{align2}{pos2}{sous-titre}
% génère la boîte contenant titre et sous-titre du frame, en l'alignant
% selon les paramètres :
% * "vbox" : \vbox (aligne le sous-titre) ou \vtop (aligne titre) ;
% * "align[12]" : vides (pour baseline) ou \tpt@bottomalignbox (pour dessous) ;
% * "pos[12]" sont passés aux \parbox qui contiennent titre/sous-titre.
%
\newcommand\tpt
@framecontentbox[7]
{
%
#1
{
%
#2
{
\hbox
{
\parbox
[#3]
{
\tpt
@frametitle@content@width
}{
%
\usebeamerfont
{
frametitle
}
%
\raggedright\noindent
#4
\par
}}}
%
\nointerlineskip
\ifx\insertframesubtitle\@
empty
%
\else
#5
{
\hbox
{
\parbox
[#6]
{
\tpt
@frametitle@content@width
}{
%
\usebeamerfont
{
framesubtitle
}
%
\usebeamercolor
[fg]
{
framesubtitle
}
%
\raggedright
#7
\par
}}}
%
\fi
}
}
% Maintenant les variantes du template contenu, selon l'alignement désiré.
\defbeamertemplate*
{
frametitle content box
}{
baseline
}{
%
\tpt
@framecontentbox
{
\vtop
}
%
{}{
t
}{
\strut\insertframetitle\strut
}
%
{}{}{
\insertframesubtitle\strut
}
%
}
\defbeamertemplate
{
frametitle content box
}{
bottom baseline
}{
%
\tpt
@framecontentbox
{
\vtop
}
%
{}{
b
}{
\strut\insertframetitle\strut
}
%
{}{}{
\insertframesubtitle\strut
}
%
}
\defbeamertemplate
{
frametitle content box
}{
bottom
}{
%
\tpt
@framecontentbox
{
\vtop
}
%
{
\tpt
@bottomalignedbox
}{
b
}{
\insertframetitle
}
%
{}{}{
\insertframesubtitle\strut
}
%
}
\defbeamertemplate
{
frametitle content box
}{
subtitle bottom baseline
}{
%
\tpt
@framecontentbox
{
\vbox
}
%
{}{}{
\strut\insertframetitle\strut
}
%
{}{
b
}{
\insertframesubtitle\strut
}
%
}
\defbeamertemplate
{
frametitle content box
}{
subtitle bottom
}{
%
\tpt
@framecontentbox
{
\vbox
}
%
{}{}{
\strut\insertframetitle\strut
}
%
{
\tpt
@bottomalignedbox
}{
b
}{
\insertframesubtitle
}
%
}
% Aliases des options sans les espaces (parce que LaTeX les supprime).
\newcommand*\tpt
@frametitle@defalias[2]
{
%
\defbeamertemplatealias
{
frametitle content box
}{
#1
}{
#2
}
%
}
\tpt
@frametitle@defalias
{
bottombaseline
}{
bottom baseline
}
\tpt
@frametitle@defalias
{
subtitlebottombaseline
}{
subtitle bottom baseline
}
\tpt
@frametitle@defalias
{
subtitlebottom
}{
subtitle bottom
}
%
% L'en-tête.
%
\defbeamertemplate*
{
headline
}{
tpt default
}
{
\iftpt
@infolines
...
...
@@ -424,7 +556,7 @@
\defbeamertemplate*
{
itemize subsubitem
}{
tpt
}{
--
}
%
% \bodyframecount: nº du dernier frame hors annexe.
% \bodyframecount
: nº du dernier frame hors annexe.
%
\newcommand\insertbodyframenumber
{
1
}
% On démarre au frame 1.
\newif\ifinappendix\inappendixfalse
% Flag positionné par \appendix...
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment