Commit 6954b15a authored by Cédric Ware's avatar Cédric Ware
Browse files

Implement LuaTeX / XeTeX compatibility.

Bump release version.
parent 53ddd4d2
latex-theme-tpt (0.9.2-1) UNRELEASED; urgency=medium
* New release.
* Implement LuaTeX and XeTeX compatibility.
-- Cedric Ware <cedric.ware@telecom-paristech.fr> Fri, 31 Jul 2020 22:23:50 +0200
latex-theme-tpt (0.9.1-2) UNRELEASED; urgency=medium
* Make dependency on tex-common more explicit, override version.
......
......@@ -23,10 +23,16 @@
% Vous pouvez aussi ajuster les marges en décommentant :
% \setbeamersize{text margin left=1cm, text margin right=1cm}
% Gestion des fontes. (FIXME incompatible LuaTeX.)
\usepackage[T1]{fontenc}
%\usepackage{lmodern}% Recommandé si vous activez l'option latex ou nohelvet.
\usepackage{inconsolata}% Pour la police monospace (p.ex. pour l'adresse mail).
% Gestion des fontes. Attention, le code à utiliser dépend du moteur TeX.
\iftptusefontspec
% Utiliser ce code avec LuaTeX et XeLaTeX.
\setmonofont{inconsolata}% Police monospace (p.ex. pour l'adresse mail).
\else
% Utiliser ce code avec pdfTeX et le vieux TeX original.
\usepackage[T1]{fontenc}
%\usepackage{lmodern}% Recommandé si vous activez l'option latex ou nohelvet.
\usepackage{inconsolata}% Police monospace (p.ex. pour l'adresse mail).
\fi
% Gestion des images. Le thème a déjà chargé graphicx. Pour préciser
% les dossiers où se trouvent les images, et ne pas avoir à spécifier
......@@ -41,6 +47,7 @@
% programmation de dessins, calcul de longueurs, date, texte de remplissage.
% Supprimez ce dont vous n'avez pas besoin.
\usepackage[french]{babel}
\usepackage[babel]{microtype}
\usepackage{booktabs}
\usepackage{tikz}
\usepackage{calc}
......@@ -70,7 +77,7 @@
\author{Wolfgang Amadeus Mozart}
\email{not.beethoven@telecom-paris.fr}
\institute{Une école de l'IMT}
\date[2020-07-28]{Le \DTMdate{2020-07-28}}% Ou simplement \date{\today}.
\date[2020-07-31]{Le \DTMdate{2020-07-31}}% Ou simplement \date{\today}.
% Logo additionnel sur la page de titre (pour une conf ou un évènement).
%\logotitleextra*[width=2cm]{logo-cnrs}
......@@ -82,14 +89,14 @@
\begin{frame}
\frametitle{Présentation standard}
\begin{itemize}
\item Charte graphique officielle :
\item Charte graphique officielle :
\begin{itemize}
\item Boîtes en bas de page
\item Frise de titre du frame
\item Police Helvetica (ou Dinot)
\item Logo Télécom Paris + IP Paris
\end{itemize}
\item Rupture avec la tradition \LaTeX :
\item Rupture avec la tradition \LaTeX{} :
\begin{itemize}
\item Police imposée
\item Pas de symboles de navigation Beamer
......@@ -103,25 +110,25 @@
\begin{frame}
\frametitle{Présentation \LaTeX{}ifiée et plus lisible}
\begin{itemize}
\item Option ``\texttt{latex}'' :
\item Option ``\texttt{latex}'' :
\begin{itemize}
\item Police Computer Modern ou Latin Modern
\item Symboles de navigation Beamer
\item Puces Beamer
\end{itemize}
\item Option ``\texttt{visual}'' :
\item Option ``\texttt{visual}'' :
\begin{itemize}
\item Gris plus foncé pour plus de contraste
\end{itemize}
\item Option ``\texttt{slim}'' :
\item Option ``\texttt{slim}'' :
\begin{itemize}
\item Réduit l'encombrement vertical
\end{itemize}
\item Option ``framecount'' :
\item Option ``framecount'' :
\begin{itemize}
\item Affiche le nombre total de pages avec le nº
\end{itemize}
\item Autres options disponibles, voir la suite !
\item Autres options disponibles, voir la suite !
\end{itemize}
\end{frame}
}
......@@ -217,7 +224,7 @@
\begin{frame}
\frametitle{Moins encombré, et avec le nombre de pages
(... et d'autres couleurs !)}
(... et d'autres couleurs !)}
\lipsum[5]
\end{frame}
}
......@@ -236,7 +243,7 @@
%------------------------------------------------------------------------------
\section[1e] { 1e Section }
%------------------------------------------------------------------------------
\subsection[1su] { Sous section 1 : texte}
\subsection[1su] { Sous section 1 : texte}
%------------------------------------------------------------------------------
\begin{frame}
\frametitle{First Frame}
......@@ -267,7 +274,7 @@
\end{frame}
%------------------------------------------------------------------------------
\subsection { Sous section 2 : illustrations}
\subsection { Sous section 2 : illustrations}
%------------------------------------------------------------------------------
\begin{frame}
\frametitle{Another Frame}
......@@ -296,6 +303,7 @@
\end{frame}
%------------------------------------------------------------------------------
\ifxetex\else% FIXME figlatex passe mal avec XeTeX.
\begin{frame}
\frametitle{Another Frame : Fig illustration}
......@@ -304,8 +312,9 @@
\end{center}
\end{frame}
\fi
%------------------------------------------------------------------------------
\section[2e] { 2e Section : blocs }
\section[2e] { 2e Section : blocs }
%------------------------------------------------------------------------------
\begin{frame}
\frametitle{Block Frame}
......@@ -353,7 +362,7 @@
\end{alertblock}
\end{frame}
%------------------------------------------------------------------------------
\section{\appendixname : Documentation pour usage avancé}
\section{\appendixname : Documentation pour usage avancé}
%------------------------------------------------------------------------------
\appendix
\tptthemekeys{slim,bodyframecount}
......@@ -367,19 +376,19 @@
navigation et spécifie leur alignement latéral (défaut \texttt{left}).
\item \texttt{nonavsymbols} désactive les symboles de navigation.
\item \texttt{align frametitle=}<\textrm{\textit{option}}> spécifie
l'alignement vertical du titre du frame par rapport à la frise :
l'alignement vertical du titre du frame par rapport à la frise :
\begin{itemize}
\item \texttt{baseline} : 1\textsuperscript{re} ligne du titre ;
\item \texttt{bottom baseline} : dernière ligne du titre ;
\item \texttt{bottom} : dessous du titre (pas pareil que la
baseline p.\,ex.\ avec un p ou un g) ;
\item \texttt{baseline} : 1\textsuperscript{re} ligne du titre ;
\item \texttt{bottom baseline} : dernière ligne du titre ;
\item \texttt{bottom} : dessous du titre (pas pareil que la
baseline p.\,ex.\ avec un p ou un g) ;
\item \texttt{subtitle bottom, subtitle bottom baseline}
comme \texttt{bottom} et \texttt{bottom baseline} mais
avec le sous-titre.
\end{itemize}
\item \texttt{frametitle yshift=}<\textrm{\textit{dimension}}> :
\item \texttt{frametitle yshift=}<\textrm{\textit{dimension}}> :
ajuste l'alignement vertical du titre du frame.
\item \texttt{frametitle yshift if subtitle=}<\textrm{\textit{dimension}}> :
\item \texttt{frametitle yshift if subtitle=}<\textrm{\textit{dimension}}> :
comme \texttt{frametitle yshift} mais seulement en présence
d'un sous-titre.
\end{itemize}
......
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\ProvidesPackage{beamerthemetptng}[2020/07/28 v0.9.1]
\ProvidesPackage{beamerthemetptng}[2020/07/31 v0.9.2]
% Utilisation de pgfkeys/pgfopts pour la gestion des options,
% et définition de raccourcis.
......@@ -7,10 +7,13 @@
\newcommand\tptthemekeys[1]{\pgfqkeys{/tpt theme}{#1}}
\newcommand\tptthemevalueof[1]{\pgfkeysvalueof{/tpt theme/#1}}
% 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}
% Besoin de savoir si on compile avec XeLaTeX ou LuaLaTeX,
% notamment pour la gestion des polices avec fontspec.
\RequirePackage{iftex}
\newif\iftptusefontspec
\tptusefontspecfalse
\ifluatex\tptusefontspectrue\fi
\ifxetex\tptusefontspectrue\fi
% On charge le thème infolines (puis on le désactive) pour que ses
% templates soient disponibles.
......@@ -41,7 +44,7 @@
% logo Télécom avec endossement IP Paris, affiliation IMT dans
% la page de titre, pas de nombre total de pages.
official/.style={%
nonavsymbols,noslim,framecount=false,logoofficial},
helvet,nonavsymbols,noslim,framecount=false,logoofficial},
logoofficial/.style={footeraffiliation=false,titleaffiliation,logoofficial@},
logoofficial@/.code={%
\logofootermain*{logo-tp-ipp.pdf}%
......@@ -135,12 +138,15 @@
\tptcalculateheadfoot
},
%
% Police Helvetica (ou non).
helvet/.is choice,
helvet/.default=true,
helvet/false/.code={\let\sfdefault=\tpt@save@sffamily\normalfont},
helvet/true/.code={\renewcommand\sfdefault{phv}\normalfont},
nohelvet/.style={helvet=false},
% Police Helvetica (ou non, auquel cas on restaure la police sans serif).
% L'argument optionnel de helvet, pour LuaTeX et XeTeX, est la liste des
% polices à chercher dans le système à la place de Helvetica, car il n'y
% en a pas de standard.
helvet/.code={%
\edef\tpt@helvet@searchlist{#1}%
\tpt@activatehelvet},
helvet/.default={Helvetica,TeX Gyre Heros,NimbusSanL-Reg,Arial},
nohelvet/.code={\tpt@restoresans},
%
% Affichage du nombre total de pages (framecount), éventuellement
% sans tenir compte des annexes (bodyframecount), avec le nº de page.
......@@ -148,7 +154,7 @@
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/.default=true,% "framecount" seul veut dire "framecount=true".
bodyframecount/.style={framecount=body},
%
% Alignement du titre de frame sur la frise. Peut se faire sur
......@@ -296,7 +302,7 @@
}
%
% Fonts and colors.
% Couleurs et polices.
%
\definecolor{tptred}{RGB}{191,18,56}
......@@ -348,6 +354,105 @@
}%
}
%
% Police : officiellement Dinot ou Arial, pour nous ce sera soit
% Helvetica ou équivalent, soit laisser les polices LaTeX et
% laisser faire l'utilisateur. Difficulté : si on utilise fontspec,
% il n'y a pas d'équivalent complètement standard de Helvetica.
%
% Fonctionnement : deux macros, \tpt@activatehelvet et \tpt@restoresans.
% Dans le préambule, elles ne font qu'activer ou désactiver un flag qui
% reporte leur action au début du document. Ensuite, \tpt@activatehelvet
% sauvegarde la police sans serif, et sélectionne une police équivalente
% à Helvetica (après l'avoir définie au besoin). \tpt@restoresans
% restaure la police sans serif.
% Flag et macro de sauvegarde.
\newif\iftpt@helvetatbegindocument
\let\tpt@save@sfdefaultfamily=\@empty
\let\tpt@helvet@family=\@empty
% Chargement des packages adéquats : fontspec si le moteur LaTeX le
% supporte, sinon helvet en sauvant préalablement la police sans serif.
\iftptusefontspec
\RequirePackage{fontspec}
\else
\let\tpt@save@sfdefaultfamily=\sfdefault
\RequirePackage{helvet}
\let\sfdefault=\tpt@save@sfdefaultfamily
\def\tpt@helvet@family{phv}
\fi
% Définitions avant le \begin{document}
\newcommand*\tpt@activatehelvet{\tpt@helvetatbegindocumenttrue}
\newcommand*\tpt@restoresans{\tpt@helvetatbegindocumentfalse}
% Définitions après le \begin{document}
\newcommand*\tpt@activatehelvet@real{%
\ifx\tpt@helvet@family\@empty
% On doit encore définir la police pour Helvetica.
% Ce cas ne se présente qu'avec fontspec, car autrement
% la macro \tpt@helvet@family est initialisée ci-dessus.
\tptfindfont{tpthelvetlike}{\tpt@helvet@searchlist}%
\ifx\tpthelvetlikefont\@empty
% Pas trouvé, on reste sur une police LaTeX.
\PackageWarning{beamerthemetptng}{Did not find an Arial-like font.}%
\let\tpt@helvet@family=\sfdefault
\else
\def\tpt@helvet@family{tpthelvetlike}%
\fi
\fi
\let\tpt@save@sfdefaultfamily=\sfdefault
\let\sfdefault=\tpt@helvet@family
\normalfont
}
\newcommand*\tpt@restoresans@real{%
\ifx\tpt@save@sfdefaultfamily\@empty
\else
% La macro de sauvegarde n'est pas vide, on peut restaurer la police.
\let\sfdefault=\tpt@save@sfdefaultfamily
\let\tpt@save@sfdefaultfamily=\@empty
\normalfont
\fi
}
% Définir une police : on parcourt une liste donnée jusqu'à trouver
% la première qui existe. Ne fonctionne qu'avec fontspec.
\newcommand*\tptfindfont[2]{%
\PackageError{beamerthemetptng}{%
\string\tptfindfont{} requires LuaTeX or XeTeX}{%
This macro requires package fontspec,
which only works with LuaTeX or XeTeX.
}%
}
\iftptusefontspec
\renewcommand*\tptfindfont[2]{%
\let\tpt@foundfont=\@empty
\edef\tpt@tmp@fontsearchlist{#2}%
\foreach \tpt@findfont in \tpt@tmp@fontsearchlist {%
\IfFontExistsTF{\tpt@findfont}{%
\xdef\tpt@foundfont{\tpt@findfont}%
\breakforeach}{}%
}%
\ifx\tpt@foundfont\@empty
\@namedef{#1font}{}%
\else
\expandafter\newfontfamily\csname #1font\endcsname{\tpt@foundfont}[%
NFSSFamily=#1]%
\fi
}
\fi
% Au début du document, on change les définitions, et on invoque
% \tpt@activatehelvet si le flag était activé.
\AtBeginDocument{%
\let\tpt@activatehelvet=\tpt@activatehelvet@real
\let\tpt@restoresans=\tpt@restoresans@real
\iftpt@helvetatbegindocument
\tpt@activatehelvet
\fi
}
%
% Page de titre.
......@@ -726,10 +831,10 @@
%
% Macro pour recalculer la hauteur des haut et bas de page.
% On ne l'active qu'à la fin du package.
% On ne l'active qu'à la fin du préambule.
%
\newcommand*\tptcalculateheadfoot{}
\AtEndOfPackage{%
\AtBeginDocument{%
\renewcommand*\tptcalculateheadfoot{\beamer@calculateheadfoot}%
}
......
# Updated by update-release script.
RELEASE_VERSION = v0.9.1
RELEASE_DATE = 2020-07-28
RELEASE_VERSION = v0.9.2
RELEASE_DATE = 2020-07-31
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