From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001
From: Norbert Preining <norbert@preining.info>
Date: Mon, 2 Sep 2019 13:46:59 +0900
Subject: Initial commit

---
 macros/latex/contrib/yathesis/source/yathesis.dtx | 7000 +++++++++++++++++++++
 1 file changed, 7000 insertions(+)
 create mode 100644 macros/latex/contrib/yathesis/source/yathesis.dtx

(limited to 'macros/latex/contrib/yathesis/source/yathesis.dtx')

diff --git a/macros/latex/contrib/yathesis/source/yathesis.dtx b/macros/latex/contrib/yathesis/source/yathesis.dtx
new file mode 100644
index 0000000000..6c9a4414ea
--- /dev/null
+++ b/macros/latex/contrib/yathesis/source/yathesis.dtx
@@ -0,0 +1,7000 @@
+% \iffalse meta-comment
+%
+% Copyright (C) 2012-2019 by Denis Bitouz'e <denis.bitouze@univ-littoral.fr>
+% -------------------------------------------------------------------------------
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3c
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+%   http://www.latex-project.org/lppl.txt
+% and version 1.3c or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status `maintained'.
+%
+% The Current Maintainer of this work is Denis Bitouz'e.
+%
+% This work consists of the files yathesis.dtx and yathesis.ins
+% and the derived filebase yathesis.cls.
+%
+%<*internal>
+\iffalse
+%</internal>
+%<*readme>
+-----------------------------------------------------------------------
+
+- `yathesis` --- Yet Another Thesis Class, version 0.99u
+- E-mail: `denis.bitouze@univ-littoral.fr`
+- Released under the LaTeX Project Public License v1.3c or later. See
+  http://www.latex-project.org/lppl.txt
+
+-----------------------------------------------------------------------
+
+**The `yathesis` bundle provides a LaTeX class file to help to write a thesis
+following French rules.**
+
+The class is supplied in `.dtx` format. If you want to unpack the `.dtx`
+yourself, running:
+
+    pdftex yathesis.dtx
+
+will extract the class whereas:
+
+    pdflatex yathesis.dtx
+
+will extract it and also typeset the documentation of the code.
+
+Typesetting the documentation of the class requires:
+
+- a number of packages in addition to those needed to use the `yathesis`
+   classes.  To compile the documentation without error, you will need, among
+   others, my personal (dirty) package `denisbdoc` for documenting the classes
+   I've written.
+- a complete `pdflatex` run of `these.tex` to be found in the
+  `.../doc/latex/yathesis/french/exemples/specimen/a-plat` directory,
+  with `yathesis-demo` package load at first place. If `latexmk` is available,
+  it is easier to run:
+
+      latexmk -g -norc -r ./latexmkrc  -jobname=these -pdflatex="pdflatex %O '\RequirePackage{etoolbox}\AtEndPreamble{\RequirePackage{yathesis-demo}}\input{%S}'" these.tex
+
+- to compile `yathesis-fr.tex` to be found in the
+  `.../doc/latex/yathesis/french/documentation` directory as follows:
+
+      latexmk -norc -r ./latexmkrc yathesis-fr
+%</readme>
+%<*internal>
+\fi
+\def\nameofplainTeX{plain}
+\ifx\fmtname\nameofplainTeX\else
+  \expandafter\begingroup
+\fi
+%</internal>
+%<*install>
+\input docstrip.tex
+\Msg{********************************************************}
+\Msg{* Installation}
+\Msg{* Class: yathesis 2019-03-28 v0.99u}
+\Msg{* that helps to write thesis following French rules (DB)}
+\Msg{********************************************************}
+\keepsilent
+\askforoverwritefalse
+\preamble
+-----------------------------------------------------------------------
+yathesis --- Yet Another Thesis Class
+E-mail: denis.bitouze@univ-littoral.fr
+Released under the LaTeX Project Public License v1.3c or later
+See http://www.latex-project.org/lppl.txt
+-----------------------------------------------------------------------
+\endpreamble
+\postamble
+% Copyright (C) 2012-2019 by Denis Bitouzé <denis.bitouze@univ-littoral.fr>
+----------------------------------------------------------------------------------
+This work may be distributed and/or modified under the
+conditions of the LaTeX Project Public License, either version 1.3c
+of this license or (at your option) any later version.
+The latest version of this license is in
+  http://www.latex-project.org/lppl.txt
+and version 1.3c or later is part of all distributions of LaTeX
+version 2005/12/01 or later.
+
+This work has the LPPL maintenance status `maintained'.
+
+The Current Maintainer of this work is Denis Bitouzé.
+
+This work consists of the file  yathesis.dtx
+          and the derived files yathesis.cls,
+                                yathesis.ins,
+                                yathesis.pdf,
+                                and a number of configuration files.
+\endpostamble
+%
+\def\YAD@classname{\jobname}
+\def\YAD@packagename{\YAD@classname doc}
+\def\YAD@sampletemplates{\jobname-samples-templates}
+\def\YAD@addons{addons}
+% \def\YAD@flattemplate{flat-template}
+% \def\YAD@flatsample{flat-sample}
+% \def\YAD@treetemplate{tree-template}
+% \def\YAD@sample{tree-sample}
+%</install>
+%<*install>
+\def\YAD@documentation{documentation}
+\def\YAD@examples{exemples}
+\def\YAD@sample{specimen}
+\def\YAD@template{canevas}
+\def\YAD@flattemplate{\YAD@examples/\YAD@template/a-plat}
+\def\YAD@flatsample{\YAD@examples/\YAD@sample/a-plat}
+\def\YAD@treetemplate{\YAD@examples/\YAD@template/en-arborescence}
+\def\YAD@treesample{\YAD@examples/\YAD@sample/en-arborescence}
+%</install>
+%<*install>
+\usedir{doc/latex/\YAD@classname/}
+\generate{
+  \nopreamble\nopostamble
+  \file{README.md}{\from{\jobname.dtx}{readme}}
+}%
+\usedir{tex/latex/\YAD@classname}
+\generate{%
+  \file{\YAD@classname.cls}{\from{\jobname.dtx}{class}}
+  \file{\YAD@classname-demo.sty}{\from{\jobname.dtx}{demopkg}}
+  \file{\YAD@classname-translations.tex}{\from{\jobname.dtx}{translations}}
+}%
+%</install>
+%<install>\endbatchfile
+%<*internal>
+\usedir{source/latex/\YAD@classname}
+\generate{
+  \file{\YAD@classname.ins}{\from{\jobname.dtx}{install}}
+  \file{\YAD@classname.drv}{\from{\jobname.dtx}{driver}}%
+}%
+\usedir{doc/latex/\YAD@classname/french/\YAD@flattemplate}
+\generate{
+  \nopreamble\nopostamble
+  \file{latexmkrc}{\from{\jobname.dtx}{samples-templates-latexmkrc}}
+  \file{these.tex}{\from{\YAD@sampletemplates.dtx}{flat-template}}
+}%
+\usedir{doc/latex/\YAD@classname/french/\YAD@flatsample}
+\generate{
+  \nopreamble\nopostamble
+  \file{latexmkrc}{\from{\jobname.dtx}{samples-templates-latexmkrc}}
+  \file{these.tex}{\from{\YAD@sampletemplates.dtx}{flat-sample}}
+  \file{bibliographie.bib}{\from{\YAD@sampletemplates.dtx}{bibliography-sample}}
+}%
+\usedir{doc/latex/\YAD@classname/french/\YAD@treesample}
+\generate{
+  \nopreamble\nopostamble
+  \file{latexmkrc}{\from{\jobname.dtx}{samples-templates-latexmkrc}}
+  \file{these.tex}{\from{\YAD@sampletemplates.dtx}{these-sample}}
+}%
+\usedir{doc/latex/\YAD@classname/french/\YAD@treesample/configuration}
+\generate{
+  \nopreamble\nopostamble
+  \file{characteristics.tex}{\from{\YAD@sampletemplates.dtx}{characteristics-sample}}
+  \file{thesis.cfg}{\from{\YAD@sampletemplates.dtx}{cfg-sample}}
+  \file{macros.tex}{\from{\YAD@sampletemplates.dtx}{macros-sample}}
+}%
+\usedir{doc/latex/\YAD@classname/french/\YAD@treesample/corps}
+\generate{
+  \nopreamble\nopostamble
+  \file{conclusion.tex}{\from{\YAD@sampletemplates.dtx}{conclusion-sample}}
+  \file{conclusionI.tex}{\from{\YAD@sampletemplates.dtx}{conclusionI-sample}}
+  \file{position-problemeI.tex}{\from{\YAD@sampletemplates.dtx}{position-problemeI-sample}}
+  \file{developpementI.tex}{\from{\YAD@sampletemplates.dtx}{developpementI-sample}}
+  \file{position-problemeII.tex}{\from{\YAD@sampletemplates.dtx}{position-problemeII-sample}}
+  \file{conclusionII.tex}{\from{\YAD@sampletemplates.dtx}{conclusionII-sample}}
+  \file{developpementII.tex}{\from{\YAD@sampletemplates.dtx}{developpementII-sample}}
+  \file{introduction.tex}{\from{\YAD@sampletemplates.dtx}{introduction-sample}}
+}%
+\usedir{doc/latex/\YAD@classname/french/\YAD@treesample/liminaires}
+\generate{
+  \nopreamble\nopostamble
+  \file{dedicaces.tex}{\from{\YAD@sampletemplates.dtx}{dedications-sample}}
+  \file{epigraphes.tex}{\from{\YAD@sampletemplates.dtx}{epigraphs-sample}}
+  \file{avant-propos.tex}{\from{\YAD@sampletemplates.dtx}{foreword-sample}}
+  \file{avertissement.tex}{\from{\YAD@sampletemplates.dtx}{caution-sample}}
+  \file{remerciements.tex}{\from{\YAD@sampletemplates.dtx}{acknowledgments-sample}}
+  \file{resumes.tex}{\from{\YAD@sampletemplates.dtx}{abstract-sample}}
+}%
+\usedir{doc/latex/\YAD@classname/french/\YAD@treesample/annexes}
+\generate{
+  \nopreamble\nopostamble
+  \file{juridique.tex}{\from{\YAD@sampletemplates.dtx}{juridique-sample}}
+  \file{listings.tex}{\from{\YAD@sampletemplates.dtx}{listings-sample}}
+}%
+\usedir{doc/latex/\YAD@classname/french/\YAD@treesample/annexes/programmes}
+\generate{
+  \nopreamble\nopostamble
+  \file{factorielle.c}{\from{\YAD@sampletemplates.dtx}{factorielle-sample}}
+  \file{heure.c}{\from{\YAD@sampletemplates.dtx}{heure-sample}}
+}%
+\usedir{doc/latex/\YAD@classname/french/\YAD@treesample/auxiliaires}
+\generate{
+  \nopreamble\nopostamble
+  \file{acronymes.tex}{\from{\YAD@sampletemplates.dtx}{acronyms-sample}}
+  \file{glossaire.tex}{\from{\YAD@sampletemplates.dtx}{glossary-sample}}
+  \file{symboles.tex}{\from{\YAD@sampletemplates.dtx}{symbols-sample}}
+  \file{bibliographie.bib}{\from{\YAD@sampletemplates.dtx}{bibliography-sample}}
+}%
+\usedir{doc/latex/\YAD@classname/french/\YAD@treetemplate}
+\generate{
+  \nopreamble\nopostamble
+  \file{latexmkrc}{\from{\jobname.dtx}{samples-templates-latexmkrc}}
+  \file{these.tex}{\from{\YAD@sampletemplates.dtx}{these-master}}
+}%
+\usedir{doc/latex/\YAD@classname/french/\YAD@treetemplate/configuration}
+\generate{
+  \nopreamble\nopostamble
+  \file{characteristics.tex}{\from{\YAD@sampletemplates.dtx}{characteristics-master}}
+  \file{thesis.cfg}{\from{\YAD@sampletemplates.dtx}{cfg-master}}
+  \file{macros.tex}{\from{\YAD@sampletemplates.dtx}{macros-master}}
+}%
+\usedir{doc/latex/\YAD@classname/french/\YAD@treetemplate/auxiliaires}
+\generate{
+  \nopreamble\nopostamble
+  \file{bibliographie.bib}{\from{\YAD@sampletemplates.dtx}{bibliography-master}}
+}%
+\usedir{doc/latex/\YAD@classname/french/\YAD@treetemplate/annexes}
+\generate{
+  \nopreamble\nopostamble
+  \file{annexeI.tex}{\from{\YAD@sampletemplates.dtx}{annexe-masterI}}
+  \file{annexeII.tex}{\from{\YAD@sampletemplates.dtx}{annexe-masterII}}
+}%
+\usedir{doc/latex/\YAD@classname/french/\YAD@treetemplate/corps}
+\generate{
+  \nopreamble\nopostamble
+  \file{conclusion.tex}{\from{\YAD@sampletemplates.dtx}{conclusion-master}}
+  \file{introduction.tex}{\from{\YAD@sampletemplates.dtx}{introduction-master}}
+}%
+\usedir{doc/latex/\YAD@classname/french/\YAD@treetemplate/liminaires}
+\generate{
+  \nopreamble\nopostamble
+  \file{dedicaces.tex}{\from{\YAD@sampletemplates.dtx}{dedications-master}}
+  \file{epigraphes.tex}{\from{\YAD@sampletemplates.dtx}{epigraphs-master}}
+  \file{remerciements.tex}{\from{\YAD@sampletemplates.dtx}{acknowledgments-master}}
+  \file{resumes.tex}{\from{\YAD@sampletemplates.dtx}{abstract-master}}
+}%
+\usedir{doc/latex/\YAD@classname/\YAD@addons/completion}
+\generate{%
+  \nopreamble\nopostamble
+  \file{\YAD@classname.cwl}{\from{\jobname.dtx}{class-cwl}}
+}%
+\ifx\fmtname\nameofplainTeX
+  \expandafter\endbatchfile
+\else
+  \expandafter\endgroup
+\fi
+%</internal>
+% \fi
+% \def\YADnblastversion{0.99u}
+% \def\YADdatelastversion{\today}
+% \def\fileversion{v\YADnblastversion}
+% \def\filedate{\YADdatelastversion}
+% \iffalse
+%<*class>
+\def\fileversion{v0.99u}
+\def\filedate{2019/03/28}
+%</class>
+%<*driver>
+\ProvidesFile{yathesis.dtx}
+\RequirePackage{scrlfile}
+\ReplaceClass{article}{report}
+\BeforePackage{doc}{\let\oldmaketitle\maketitle}
+\documentclass[english,french]{ltxdoc}
+\usepackage{denisbdoc}
+\lstMakeShortInline[style=dbtex]"
+\usepackage[lining]{libertine}
+\renewcommand{\ttdefault}{lmtt}
+\makeatletter
+\@ifpackageloaded{glossaries}{%
+}{%
+  \usepackage[xindy,toc,hyperfirst=false]{glossaries}%
+  \makeglossaries
+  \setglossarystyle{indexhypergroup}
+  \setacronymstyle{long-sc-short}
+}
+\makeatother
+\addbibresource{yathesis.bib}
+%
+% Comme il est inutile que les modifications d'inclusion/exclusion
+% ("\includeall"/"\includeonly") des différents fichiers esclaves de la
+% documentation soient versionnées, elles ne se font désormais plus directement
+% incluses dans le présent \File{yathesis.dtx}, mais dans le fichier non
+% versionné \File{includeall-includeonly.tex}. Ce fichier n'est inclus que s'il
+% existe et, dans le cas contraire, tous les fichiers esclaves sont inclus.
+\InputIfFileExists{includeall-includeonly}{}{}
+%
+\begin{document}
+\DocInput{\jobname.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \CheckSum{4290}
+%
+% \CharacterTable
+%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%   Digits        \0\1\2\3\4\5\6\7\8\9
+%   Exclamation   \!     Double quote  \"     Hash (number) \#
+%   Dollar        \$     Percent       \%     Ampersand     \&
+%   Acute accent  \'     Left paren    \(     Right paren   \)
+%   Asterisk      \*     Plus          \+     Comma         \,
+%   Minus         \-     Point         \.     Solidus       \/
+%   Colon         \:     Semicolon     \;     Less than     \<
+%   Equals        \=     Greater than  \>     Question mark \?
+%   Commercial at \@     Left bracket  \[     Backslash     \\
+%   Right bracket \]     Circumflex    \^     Underscore    \_
+%   Grave accent  \`     Left brace    \{     Vertical bar  \|
+%   Right brace   \}     Tilde         \~}
+%
+%   \DoNotIndex{%
+%   \newcommand,\newenvironment,\begin,\end,\acrpluralsuffix,\acrshort,\active,\addlinespace,\advance,\AtEndDocument,\begingroup,\caption,\catcode,\ClassInfo,\color,\colorlet,\cr,\DeclareGraphicsExtensions,\declaretheorem,\declaretheoremstyle,\def,\definecolor,\do,\edef,\else,\emph,\endgroup,\endVerbatimOut,\expandafter,\fi,\floatsetup,\footnotesize,\gls,\glsentrylong,\glspluralsuffix,\glsshorttok,\graphicspath,\hide,\ifluatex,\includegraphics,\InputIfFileExists,\intertitle,\killienc,\label,\LaTeX,\linewidth,\LoadClass,\loadglsentries,\lstinputlisting,\lstMakeShortInline,\lstset,\LTXtable,\makeglossaries,\mdfdefinestyle,\mdfsetup,\medskipamount,\meta,\multicolumn,\noexpand,\normalfont,\nothing,\PassOptionsToClass,\PassOptionsToPackage,\ProcessOptions,\protect,\raisebox,\relax,\renewcommand,\RequirePackage,\temp,\TeX,\textbf,\textlangle,\textrangle,\textsc,\textsf,\texttt,\textup,\the,\tmp,\to,\todoformat,\todos,\ttdefault,\ttfamily,\typeout,\uccode,\uppercase,\VerbatimOut,\WithSuffix,\LoadClassWithOptions,\DeclareOption,\xspace,\undefined,\newif,\nothtfalse,\nothttrue,\HCode,\ifnotht,\ifx,\@bsphack}
+%   \DoNotIndex{%
+%   \@documentclasshook,\@empty,\@esphack,\@tempa,\\,\actualchar,\baselineskip,\boolean,\c@CodelineNo,\c@HD@hypercount,\count@,\Describe@Option,\Describe@ShortCut,\encapchar,\endoption,\endshortcut,\endtrivlist,\equal,\fvset,\g@addto@macro,\global,\hbox,\HD@target,\HDorg@encapchar,\hologo,\if@inlabel,\ignorespaces,\index,\input,\item,\leavevmode,\let,\levelchar,\llap,\long,\loop,\Lsmcp,\lstdefinestyle,\lstnewenvironment,\m@cro@YT,\m@ne,\macro@cnt,\MacroTopsep,\makelabel,\MakePrivateLetters,\marginnote,\marginpar,\newboolean,\nobreak,\or,\PackageWarning,\PrintDescribeEnv,\PrintDescribeOption,\PrintDescribeShortCut,\PrintEnvName,\PrintOptionName,\PrintShortCutName,\ProvidesFile,\raggedleft,\repeat,\reversedvideodbend,\saved@macroname,\setboolean,\sffamily,\shortcut,\space,\special@index,\SpecialMainOptionIndex,\SpecialMainShortCutIndex,\SpecialOptionIndex,\SpecialShortCutIndex,\string,\strut,\textbelow,\textsl,\topsep,\trivlist,\VerbatimEnvironment,\vss,\vtop,\xspaceaddexceptions,\par}
+%
+% \DoNotIndex{\@cclvi,\@ne,\@tempcnta,\@whilenum,\toks@,\z@}
+%
+% \DoNotIndex{\addbibresource,\biolinumKeyGlyph,\DeclareRobustCommand,\ClassWarning,\DescribeOption,\DescribeShortCut,\ifcase,\ifnum,\ifthenelse,\option,\pagestyle}
+%
+% \selectlanguage{french}
+% \StopEventually{}
+%
+% \chapter{Implementation}
+%
+%^^A The following implementation is for both \yatcl and for \yatpa (the
+%^^A latter just used for documenting the former). Code concerning:
+%^^A \begin{description}
+%^^A \item[\yatcl only] is between \metaimplementation{*class} and
+%^^A   \metaimplementation{/class} tags,
+%^^A \item[\yatpa only] is between \metaimplementation{*package} and
+%^^A   \metaimplementation{/package} tags,
+%^^A \item[both \yatcl and \yatpa] is between
+%^^A \metaimplementation{*package\textbar class} and
+%^^A   \metaimplementation{/package\textbar class} tags.
+%^^A \end{description}
+%
+%^^A Please note that the following implementation is far from being well
+%^^A documented. This may be improved in the future.
+%
+% \section{Declaration of options}
+%
+%    \begin{macrocode}
+%<*class>
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+\ProvidesClass{yathesis}[\filedate\space\fileversion\space Yet another class for writing thesis (DB)]
+%    \end{macrocode}
+%
+% Pour pouvoir définir des macros dont les arguments puissent être
+% spécifiés sous la forme "clé="\meta{valeur}, tant en argument de
+% "\documentclass" que de macros et environnements de la classe.
+%    \begin{macrocode}
+\RequirePackage{pgfopts}[2011/06/02]%
+%    \end{macrocode}
+% Pour disposer d'une boîte à outils de programmation
+%    \begin{macrocode}
+\RequirePackage{etoolbox}[2011/01/03]%
+%    \end{macrocode}
+% Extension de \package{etoolbox} permettant de patcher des
+% commandes à argument(s) optionnel
+%    \begin{macrocode}
+\RequirePackage{xpatch}[2012/10/02]%
+%    \end{macrocode}
+% Pour pouvoir disposer d'autant de \enquote{flots} d'écriture dans
+% des fichiers annexes que nécessaire. Il est chargé en fin de préambule sans
+% quoi la compilation s'arrête longuement à la ligne :
+% \folder{/usr/local/texlive/.../texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg}
+% (problème rapporté à l'auteur du package) ou à la ligne :
+% \folder{/usr/local/texlive/.../texmf-dist/tex/latex/floatrow/fr-longtable.sty}.
+%    \begin{macrocode}
+\AtEndPreamble{%
+  \RequirePackage{morewrites}%
+}%
+%    \end{macrocode}
+% Pour pouvoir patcher des commandes à argument(s) optionnel(s)
+%    \begin{macrocode}
+\RequirePackage{filehook}[2011/10/12]%
+\RequirePackage{hopatch}[2012/05/28]%
+%    \end{macrocode}
+% Assignation "\let" pour macros à arguments optionnels améliorée
+%    \begin{macrocode}
+\RequirePackage{letltxmacro}[2010/09/02]%
+%    \end{macrocode}
+% Definitions with two optional arguments
+%    \begin{macrocode}
+\RequirePackage{twoopt}[1999/04/12]%
+%    \end{macrocode}
+% Pour la gestion des tests conditionnels
+%    \begin{macrocode}
+\RequirePackage{xifthen}[2009/04/17]%
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\newbool{YAD@cosupervisor@or@comonitor}
+\newbool{YAD@inprogress@work@star}
+\newbool{YAD@inprogress@work}
+\newbool{YAD@submitted@work}
+\newbool{YAD@submitted@work@star}
+\newbool{YAD@final@work}
+\newbool{YAD@draft}
+%
+% \newbool{YAD@frenchabstract@used}
+\newbool{YAD@output@paper}
+\newbool{YAD@output@paper@star}
+\newbool{YAD@in@footnote}
+\newbool{YAD@second@title}
+\newbool{YAD@second@abstract}
+\newbool{YAD@maketitle@used}
+\newbool{YAD@keywords@used}
+\newbool{YAD@introduction@used}
+\newbool{YAD@introduction@empty}
+\newbool{YAD@conclusion@used}
+\newbool{YAD@conclusion@empty}
+\newbool{YAD@makeabstract@used}
+\newbool{YAD@second@abstract@used}
+\newbool{YAD@abstract@used}
+\newbool{YAD@main@abstract@empty}
+\newbool{YAD@second@abstract@empty}
+\newbool{YAD@tableofcontents@used}
+\newbool{YAD@printbibliography@used}
+\newbool{YAD@two@titles}
+\newbool{YAD@cover@page}
+\newbool{YAD@supervisor@specified}
+\newbool{YAD@symbols@isolated}
+\newbool{YAD@logo@before}
+\newbool{YAD@valid@day}
+\newbool{YAD@valid@month}
+\newbool{YAD@valid@year}
+\newbool{YAD@mainmatter@used}
+\newbool{YAD@localtocs}%
+\newbool{YAD@nextwithlocaltoc}%
+\newbool{YAD@nonnumbered@chapter}%
+\newbool{YAD@nonnumbered@section}%
+\newbool{YAD@nonnumbered@subsection}%
+\newbool{YAD@nonnumbered@subsubsection}%
+\newbool{YAD@nonnumbered@paragraph}%
+\newbool{YAD@nonnumbered@subparagraph}%
+%
+\newlength{\cmdKV@YAD@logoheight}
+\newlength{\YAD@max@logoheight}
+\newlength{\YAD@default@logoheight}
+\newlength{\YAD@titleboxheight}%
+\newlength{\YAD@titleboxwidth}%
+\newlength{\YAD@otherboxheight}%
+\newlength{\YAD@laboratory@width}%
+%
+\setlength\YAD@default@logoheight{1.5cm}%
+\setlength\cmdKV@YAD@logoheight{\YAD@default@logoheight}%
+\setlength\YAD@max@logoheight{\cmdKV@YAD@logoheight}%
+%
+\newsavebox{\YAD@titlebox}%
+\newsavebox{\YAD@beforetitlebox}%
+\newsavebox{\YAD@aftertitlebox}%
+\newsavebox{\YAD@abstract@mainlanguage}%
+\newsavebox{\YAD@abstract@secondarylanguage}%
+%
+\newcounter{YAD@abstracts}%
+\newcounter{YAD@warnings}%
+\setcounter{YAD@abstracts}{0}%
+\setcounter{YAD@warnings}{0}%
+%
+\def\YAD@mainlanguage{french}%
+\def\YAD@secondarylanguage{english}%
+\def\YAD@tocdepth{subsection}%
+\def\YAD@secnumdepth{subsection}%
+\def\YAD@mainkeywords{\YAD@generic@argument@translate{keywords}}%
+\def\YAD@secondarykeywords{\YAD@generic@argument@translate{keywords}}%
+\def\YAD@global@sepcorpaffil@french{}%
+\def\YAD@global@sepcorpaffil@english{}%
+%    \end{macrocode}
+% On définit une marco dans laquelle sera stockée le style du cadre figurant
+% autour du titre de la thèse sur les pages de titre.
+% \begin{macro}{\cmdKV@YAD@frametitle}
+%    \begin{macrocode}
+\def\cmdKV@YAD@frametitle{fbox}%
+%    \end{macrocode}
+% \end{macro}
+%
+% On définit la macro "\YAD@ClassError" qui est essentiellement identique
+% à "\ClassError", sauf que les erreurs définies par elle sont désactivées si
+% l'une ou l'autre des options "noerror", "version=draft", "version=inprogress"
+% ou "version=inprogress*" est passée à la \yatcl{}.
+%    \begin{macrocode}
+\newcommand{\YAD@generic@text}{%
+  Un texte generique risque d'etre affiche a la place.\MessageBreak%
+}%
+\newcommand{\YAD@quiet@text}[1]{%
+  Pour ne plus etre importune par la presente erreur,\MessageBreak%
+  on peut passer l'option\MessageBreak%
+  \space\space`#1'\MessageBreak%
+  a la classe `yathesis', mais cela peut serieusement\MessageBreak%
+  alterer son fonctionnement : option a utiliser\MessageBreak%
+  \space\space\space\space/a ses risques et perils !/%
+}%
+\newcommand{\YAD@extra@help@text}{%
+  \MessageBreak%
+  Consulter la documentation de la classe `yathesis'\MessageBreak%
+  pour plus de precisions.%
+}%
+\newcommand{\YAD@ClassError}{\@ifstar{\@tempswatrue\@YAD@ClassError}{\@tempswafalse\@YAD@ClassError}}
+\newcommand{\@YAD@ClassError}[3][]{%
+  \ifbool{YAD@noerror}{%
+  }{%
+    \ifboolexpr{%
+      bool {YAD@inprogress@work}%
+      or bool {YAD@inprogress@work@star}%
+      or bool {YAD@draft}%
+      or bool {YAD@noerror}%
+    }{%
+    }{%
+      \ifthenelse{\isempty{#1}}{%
+        \ClassError{yathesis}{%
+          #2%
+        }{%
+          #3%
+          \MessageBreak
+          \if@tempswa%
+          \else%
+          \YAD@generic@text%
+          \fi%
+          \YAD@extra@help@text%
+        }%
+      }{%
+        \ClassError{yathesis}{%
+          #2%
+        }{%
+          #3%
+          \MessageBreak
+          \if@tempswa%
+          \else%
+          \YAD@generic@text%
+          \fi%
+          \YAD@quiet@text{#1}%
+          \YAD@extra@help@text%
+        }%
+      }%
+    }%
+  }%
+}%
+%    \end{macrocode}
+% On définit la macro "\YAD@ClassWarningNoLine" qui est essentiellement
+% identique à "\ClassWarningNoLine", sauf que les messages de warnings :
+% \begin{itemize}
+% \item apparaissent en fin de log ;
+% \item sont désactivés si l'une ou l'autre des options "nowarning",
+%   "version=draft", "version=inprogress" ou "version=inprogress*" est passée
+%   à la \yatcl{}.
+% \end{itemize}
+%
+%    \begin{macrocode}
+% \newwrite\YAD@file%
+% \immediate\openout\YAD@file=\jobname.yad%
+%    \begin{macrocode}
+\newcommand{\YAD@ClassWarningNoLine}[1]{%
+  \ifboolexpr{%
+    bool {YAD@inprogress@work}%
+    or bool {YAD@inprogress@work@star}%
+    or bool {YAD@draft}%
+    or bool {YAD@nowarning}%
+  }{%
+    \stepcounter{YAD@warnings}%
+  }{%
+    \ClassWarningNoLine{yathesis}{%
+      #1%
+    }%
+  }%
+}%
+%    \end{macrocode}
+% On définit le chemin \enquote{yad} par défaut des clés \enquote{pgf}.
+%    \begin{macrocode}
+\pgfkeys{/yad/.is family}
+\pgfkeys{/yad/.cd}
+\def\yadsetup{\pgfqkeys{/yad}}
+%    \end{macrocode}
+% On interdit l'utilisation de "\yadsetup" ailleurs qu'en préambule.
+%    \begin{macrocode}
+% \@onlypreamble\yadsetup%
+%    \end{macrocode}
+%    \begin{macrocode}
+\newcommand{\YAD@create@boolean}[1]{%
+  % \yadsetup{#1/.is if = #1}
+  \newbool{YAD@#1}%
+  \yadsetup{%
+    #1/.is choice,
+    #1/true/.code={%
+      \booltrue{YAD@#1}%
+    },
+    #1/false/.code={%
+      \boolfalse{YAD@#1}%
+    },
+    #1/.initial=false,
+    #1/.default=true,
+  }%
+  % }{%
+  %   \ClassWarningNoLine{yathesis}{%
+  %     Valeur passee a la cle `#1' non valide :\MessageBreak%
+  %     cette valeur ne peut etre que `true' ou `false'%
+  %   }%
+  % }%
+}%
+% \YAD@create@boolean{nolink}%
+\YAD@create@boolean{nonamelink}%
+\YAD@create@boolean{noerror}%
+\YAD@create@boolean{nowarning}%
+\YAD@create@boolean{noauthor}%
+\YAD@create@boolean{notitle}%
+\YAD@create@boolean{noacademicfield}%
+\YAD@create@boolean{noaim}%
+\YAD@create@boolean{nodate}%
+\YAD@create@boolean{noinstitute}%
+\YAD@create@boolean{nodoctoralschool}%
+\YAD@create@boolean{nolaboratory}%
+\YAD@create@boolean{nolaboratoryaddress}%
+\YAD@create@boolean{nosupervisor}%
+\YAD@create@boolean{nomaketitle}%
+\YAD@create@boolean{nokeywords}%
+\YAD@create@boolean{noabstract}%
+\YAD@create@boolean{nomakeabstract}%
+\YAD@create@boolean{notableofcontents}%
+\YAD@create@boolean{noprintbibliography}%
+\YAD@create@boolean{nofrontcover}%
+\YAD@create@boolean{hdr}%
+\YAD@create@boolean{localtocs@classoption}%
+\YAD@create@boolean{localbibs}%
+%
+\yadsetup{noerror=true}%
+%
+\booltrue{YAD@cover@page}%
+%
+\YAD@create@boolean{nologo}%
+\YAD@create@boolean{professor}%
+\YAD@create@boolean{mcf}%
+\YAD@create@boolean{mcf*}%
+\YAD@create@boolean{associateprofessor}%
+\YAD@create@boolean{associateprofessor*}%
+\YAD@create@boolean{juniorresearcher}%
+\YAD@create@boolean{juniorresearcher*}%
+\YAD@create@boolean{seniorresearcher}%
+\YAD@create@boolean{male}%
+\YAD@create@boolean{female}%
+\yadsetup{%
+  nologo=false,%
+  professor=false,%
+  mcf=false,%
+  mcf*=false,%
+  associateprofessor=false,%
+  associateprofessor*=false,%
+  juniorresearcher=false,%
+  juniorresearcher*=false,%
+  seniorresearcher=false,%
+  male=true,%
+  female=false,%
+}%
+% \end{macrocode}
+%
+% On définit la clé "version" de la classe qui prend pour valeurs :
+% \begin{itemize}
+% \item (par défaut) "inprogress" qui indique clairement qu'il s'agit d'une
+%   version de travail et désactive les erreurs pour éléments
+%   \enquote{obligatoires} manquants ;
+% \item "inprogress*", identique à "inprogress" avec un filigrane en plus ;
+% \item "draft" » ;
+% \item "final", qui active les erreurs pour éléments \enquote{obligatoires}
+%   manquants, à spécifier pour la version finale du document qui ne compose
+%   pas en pied de page la mention \enquote{Version intermédiaire en date du
+%   ...} ;
+% \item "submitted", analogue à "final", sauf que la date de soutenance n'est
+%   pas affichée ;
+% \item "submitted*", identique à "submitted", mais qui en plus indique
+%   clairement qu'il s'agit d'une version soumise aux rapporteurs.
+% \end{itemize}
+%    \begin{macrocode}
+\yadsetup{%
+  version/.is choice,%
+  version/draft/.code={%
+    \booltrue{YAD@draft}%
+    \boolfalse{YAD@inprogress@work}%
+    \boolfalse{YAD@inprogress@work@star}%
+    \boolfalse{YAD@submitted@work}%
+    \boolfalse{YAD@submitted@work@star}%
+    \boolfalse{YAD@final@work}%
+    \ifthenelse{\equal{\@classoptionslist}{}}{%
+      \edef\@classoptionslist{draft}%
+    }{%
+      \edef\@classoptionslist{\@classoptionslist,draft}%
+    }%
+  },%
+  version/inprogress/.code={%
+    \boolfalse{YAD@draft}%
+    \booltrue{YAD@inprogress@work}%
+    \boolfalse{YAD@inprogress@work@star}%
+    \boolfalse{YAD@submitted@work}%
+    \boolfalse{YAD@submitted@work@star}%
+    \boolfalse{YAD@final@work}%
+  },%
+  version/inprogress*/.code={%
+    \boolfalse{YAD@draft}%
+    \boolfalse{YAD@inprogress@work}%
+    \booltrue{YAD@inprogress@work@star}%
+    \boolfalse{YAD@submitted@work}%
+    \boolfalse{YAD@submitted@work@star}%
+    \boolfalse{YAD@final@work}%
+  },%
+  version/submitted/.code={%
+    \boolfalse{YAD@nowarning}%
+    \boolfalse{YAD@noerror}%
+    \boolfalse{YAD@nowarning}%
+    \boolfalse{YAD@noerror}%
+    \boolfalse{YAD@draft}%
+    \boolfalse{YAD@inprogress@work}%
+    \boolfalse{YAD@inprogress@work@star}%
+    \booltrue{YAD@submitted@work}%
+    \boolfalse{YAD@submitted@work@star}%
+    \boolfalse{YAD@final@work}%
+  },%
+  version/submitted*/.code={%
+    \boolfalse{YAD@nowarning}%
+    \boolfalse{YAD@noerror}%
+    \boolfalse{YAD@draft}%
+    \boolfalse{YAD@inprogress@work}%
+    \boolfalse{YAD@inprogress@work@star}%
+    \boolfalse{YAD@submitted@work}%
+    \booltrue{YAD@submitted@work@star}%
+    \boolfalse{YAD@final@work}%
+  },%
+  version/final/.code={%
+    \boolfalse{YAD@nowarning}%
+    \boolfalse{YAD@noerror}%
+    \boolfalse{YAD@draft}%
+    \boolfalse{YAD@inprogress@work}%
+    \boolfalse{YAD@inprogress@work@star}%
+    \boolfalse{YAD@submitted@work}%
+    \boolfalse{YAD@submitted@work@star}%
+    \booltrue{YAD@final@work}%
+  },%
+  version/.initial=final%
+}%
+\yadsetup{version=inprogress}%
+%    \end{macrocode}
+%
+% On définit la clé "output" de la classe qui prend pour valeurs :
+% \begin{itemize}
+% \item (par défaut) "screen" ;
+% \item "paper" » ;
+% \item "paper*".
+% \end{itemize}
+%    \begin{macrocode}
+\yadsetup{%
+  output/.is choice,%
+  output/paper/.code={\booltrue{YAD@output@paper}},%
+  output/paper*/.code={%
+    \booltrue{YAD@output@paper}%
+    \booltrue{YAD@output@paper@star}%
+  },%
+  output/screen/.code={},%
+  output/.initial=screen%
+}%
+%    \end{macrocode}
+%
+% On définit la clé de classe "localtocs" qui fait que les titres des chapitres
+% de la partie principale sont automatiquement suivis d'une table des matières
+% locale à ce chapitre, de profondeur pouvant être précisée mais par défaut
+% celle par défaut de la table des matières.
+%    \begin{macrocode}
+\def\YAD@localtocsdepth{\YAD@tocdepth}%
+\yadsetup{%
+  localtocs/.is family,%
+  localtocs/.code={%
+    \booltrue{YAD@localtocs@classoption}%
+  },%
+  localtocs/depth/.code={%
+    \pgfkeysalso{localtocs}%
+    \ifboolexpr{%
+      test {\ifstrempty{#1}}
+      or %
+      test {\ifstrequal{#1}{part}}
+      or %
+      test {\ifstrequal{#1}{chapter}}
+    }{%
+      \def\YAD@localtocsdepth{\YAD@tocdepth}%
+    }{%
+      \def\YAD@localtocsdepth{#1}%
+    }%
+    \ifboolexpr{%
+      test {\@ifundefined {Etoc@\YAD@localtocsdepth @@}}
+      or %
+      test {\ifstrequal{#1}{part}}
+      or %
+      test {\ifstrequal{#1}{chapter}}
+    }{%
+      \YAD@ClassWarningNoLine{%
+        La valeur (`#1') passee a la cle\MessageBreak%
+         `localtocs/depth'\MessageBreak%
+        en option de classe n'est pas un des niveaux de\MessageBreak%
+        sectionnement acceptes :\MessageBreak%
+        `section', `subsection',`subsubsection',\MessageBreak%
+        `paragraph', `subparagraph'.\MessageBreak%
+        Le niveau `\YAD@tocdepth' va etre utilise a la place%
+      }%
+    }{%
+    }%
+  },%
+}%
+%    \end{macrocode}
+%
+% On définit la clé de classe "localbibs" qui fait que les chapitres
+% contenant des références bibliographiques sont automatiquement terminées par
+% leurs bibliographies locales. 
+%    \begin{macrocode}
+\newcommand\YAD@localbibs@common@code[1]{%
+  \booltrue{YAD@localbibs}%
+  \AtEndPreamble{%
+    \@ifpackageloaded{biblatex}{%
+    }{%
+      \@ifpackageloaded{csquotes}{%
+      }{%
+        \RequirePackage{csquotes}%
+      }%
+      \YAD@ClassWarningNoLine{%
+        L'ajout automatique des bibliographies locales en fin\MessageBreak%
+        de chapitres fourni par l'option de classe\MessageBreak%
+        `localbibs' repose sur le package `biblatex'\MessageBreak%
+        que vous n'avez pas charge.\MessageBreak%
+        La classe `yathesis' va le faire pour vous mais\MessageBreak%
+        le recours a ce package pour la bibliographie sera\MessageBreak%
+        alors necessaire et exclura tout autre outil\MessageBreak%
+        de production de la bibliographie\MessageBreak%
+        (notamment `BibTeX')%
+      }%
+      \RequirePackage{biblatex}%
+    }%
+    \ExecuteBibliographyOptions{%
+      refsegment=chapter,%
+      defernumbers=#1%
+    }%
+    \AfterEndPreamble{\newrefsegment}%
+  }%
+}
+\yadsetup{%
+  localbibs*/.code={%
+    \YAD@localbibs@common@code{true}%
+  },%
+  localbibs/.code={%
+    \YAD@localbibs@common@code{false}%
+  }%
+}
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+% \def\YAD@interligne{single}%
+% \define@choicekey*{yathesis.cls}{space}{single,onehalf,double}[single]%
+% {\def\YAD@interligne{#1}}%
+\def\YAD@interligne{single}%
+\yadsetup{%
+  space/.is choice,%
+  space/single/.code={\def\YAD@interligne{single}},%
+  space/onehalf/.code={\def\YAD@interligne{onehalf}},%
+  space/double/.code={\def\YAD@interligne{double}},%
+  space/.initial=single%
+}%
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\yadsetup{%
+  mainlanguage/.store in=\YAD@mainlanguage,%
+  secnumdepth/.store in=\YAD@secnumdepth,%
+  sepcorpaffilfrench/.store in=\YAD@global@sepcorpaffil@french,%
+  sepcorpaffilenglish/.store in=\YAD@global@sepcorpaffil@english,%
+  % frametitle/.store in=\cmdKV@YAD@frametitle,%
+  chap-style/.code={%
+    \def\YAD@fncychapstyle{#1}%
+    \PassOptionsToPackage{#1}{fncychap}%
+  },%
+}%
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\yadsetup{fncychap/.style={chap-style=#1}}
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\yadsetup{%
+  sepcorpaffilenglish={\ at\ },%
+  chap-style=PetersLenny,%
+}%
+%    \end{macrocode}
+%
+% On crée des \enquote{hooks} permettant de passer, en option de
+% "\documentclass", des options aux packages chargés par la classe qui :
+% \begin{enumerate}
+% \item présentent un intérêt en soi pour l'utilisateur final ;
+% \item dont les options peuvent être utiles à l'utilisateur final.
+% \end{enumerate}
+%
+%    \begin{macrocode}
+\PassOptionsToPackage{a4paper}{geometry}%
+\PassOptionsToPackage{nodayofweek}{datetime}%
+\PassOptionsToPackage{export}{adjustbox}%
+\PassOptionsToPackage{numbered}{bookmark}%
+% \PassOptionsToPackage{pagestyles}{titlesec}%
+%    \end{macrocode}
+% On passe au \Package{hyperref} (s'il est chargé par l'utilisteur final) des
+% options qui nous semblent pertinentes.
+%    \begin{macrocode}
+\PassOptionsToPackage{%
+  final,%
+  unicode,%
+  hyperfootnotes=false,%
+  hyperindex=false,%
+  plainpages=false,%
+  breaklinks,%
+  pdfpagemode=UseOutlines,%
+  pdfpagelayout=TwoPageRight%
+}{hyperref}%
+%
+\yadsetup{%
+  graphicx/.code={\PassOptionsToPackage{#1}{graphicx}},%
+  adjustbox/.code={\PassOptionsToPackage{#1}{adjustbox}},%
+  setspace/.code={\PassOptionsToPackage{#1}{setspace}},%
+  xcolor/.code={\PassOptionsToPackage{#1}{xcolor}},%
+  datatool/.code={\PassOptionsToPackage{#1}{datatool}},%
+  titleps/.code={\PassOptionsToPackage{#1}{titleps}},%
+  titlesec/.code={\PassOptionsToPackage{#1}{titlesec}},%
+  draftwatermark/.code={\PassOptionsToPackage{#1}{draftwatermark}},%
+  babel/.code={\PassOptionsToPackage{#1}{babel}},%
+  datetime/.code={\PassOptionsToPackage{#1}{datetime}}%
+}%
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\yadsetup{%
+  .unknown/.code ={\expandafter\PassOptionsToClass\expandafter{\pgfkeyscurrentname}{book}}%
+}%
+%    \end{macrocode}
+%
+% \section{Process of Options}
+%
+%    \begin{macrocode}
+\ProcessPgfOptions{/yad}%
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\ifthenelse{\equal{\YAD@mainlanguage}{english}}{%
+  \def\YAD@secondarylanguage{french}%
+}{%
+}%
+\ifthenelse{\equal{\YAD@mainlanguage}{french}}{%
+  \def\YAD@secondarylanguage{english}%
+}{%
+}%
+\ifthenelse{\equal{\@classoptionslist}{}}{%
+  \edef\@classoptionslist{\YAD@secondarylanguage,\YAD@mainlanguage}%
+}{%
+  \edef\@classoptionslist{\YAD@secondarylanguage,\YAD@mainlanguage,\@classoptionslist}%
+}%
+%    \end{macrocode}
+%
+% \section{Class Loading}
+%
+% The \yatcl is based upon the standard \class{book} class:
+%
+%    \begin{macrocode}
+\LoadClass{book}%
+%    \end{macrocode}
+%
+% \section{Packages loaded}\label{sec-packages-loaded}
+%
+% All of the following packages are in the standard modern distributions of
+% \LaTeX.
+%
+% Le \Package{xkeyval} permet aussi de définir des macros dont les arguments
+% puissent être spécifiés sous la forme "clé="\meta{valeur} mais ce n'est pas
+% pour cela qu'il est chargé : c'est pour éviter des erreurs qui ont lieu dans
+% certaines circonstances du fait du \Package{keyval} chargé par le
+% \Package{geometry}.
+%    \begin{macrocode}
+\RequirePackage{xkeyval}%
+%    \end{macrocode}
+% Gestion de la géométrie de la page.
+%    \begin{macrocode}
+\RequirePackage{geometry}[2010/09/12]%
+%    \end{macrocode}
+% Pour insérer des images
+%    \begin{macrocode}
+\RequirePackage{graphicx}[1999/02/16]%
+%    \end{macrocode}
+% Pour stocker le contenu d'un environnement dans une macro.
+%    \begin{macrocode}
+\RequirePackage{environ}[2013/04/01]%
+%    \end{macrocode}
+% Pour ajuster la position des matériels \LaTeX{}, notamment pour assurer
+% l'alignement vertical des images.
+%    \begin{macrocode}
+\RequirePackage{adjustbox}[2012/05/21]%
+%    \end{macrocode}
+% Pour disposer d'outils pour les tableaux
+%    \begin{macrocode}
+\RequirePackage{array}[2008/09/09]%
+%    \end{macrocode}
+% Pour effectuer des manipulations sur des chaîne de caractères
+%    \begin{macrocode}
+\RequirePackage{xstring}[2013/10/13]%
+%    \end{macrocode}
+% Pour facilement changer la casse
+%    \begin{macrocode}
+\RequirePackage{textcase}[2004/10/07]%
+%    \end{macrocode}
+% Pour tester le moteur employé
+%    \begin{macrocode}
+\RequirePackage{iftex}[2013/04/04]%
+%    \end{macrocode}
+% Pour les épigraphes
+%    \begin{macrocode}
+\RequirePackage{epigraph}[2009/09/02]%
+%    \end{macrocode}
+% Pour disposer de boîtes élaborées en couleurs et encadrées
+%    \begin{macrocode}
+\RequirePackage{tcolorbox}[2014/03/31]%
+%    \end{macrocode}
+% Pour insérer des petits symboles rigolos (téléphone, fax, etc.)
+%    \begin{macrocode}
+\RequirePackage{marvosym}[2011/07/20]%
+%    \end{macrocode}
+% Pour la gestion des interlignes
+%    \begin{macrocode}
+\RequirePackage{setspace}[2011/12/19]%
+%    \end{macrocode}
+% % Pour régler finement la profondeur de la table des matières et de la
+% % numérotation
+% %    \begin{macrocode}
+% \RequirePackage{tocvsec2}[2014/03/10]%
+% %    \end{macrocode}
+% Pour faire figurer les table des matières, bibliographie et index
+% dans la table des matières
+%    \begin{macrocode}
+\RequirePackage{tocbibind}[2010/10/13]%
+%    \end{macrocode}
+% Pour déboguer
+%    \begin{macrocode}
+% \RequirePackage{trace}%
+%    \end{macrocode}
+% Pour des titres de chapitres améliorés
+%    \begin{macrocode}
+\ifthenelse{\equal{\YAD@fncychapstyle}{none}}{%
+}{%
+  \RequirePackage{fncychap}[2007/07/30]%
+}%
+%    \end{macrocode}
+% Pour gérer les titres courants (entêtes) et bas de page
+%    \begin{macrocode}
+\RequirePackage[nopatches]{titleps}[2011/12/15]%
+%    \end{macrocode}
+% Pour supprimer le numéro de page sur la page de titre d'une partie
+%    \begin{macrocode}
+\RequirePackage{nonumonpart}[2011/04/15]%
+%    \end{macrocode}
+% Pour les couleurs
+%    \begin{macrocode}
+\RequirePackage{xcolor}[2007/01/21]%
+%    \end{macrocode}
+% Pour manipuler des bases de données
+%    \begin{macrocode}
+\RequirePackage{datatool}[2014/03/08]%
+%    \end{macrocode}
+% Pour distinguer le mode \enquote{draft} des autres modes.
+%    \begin{macrocode}
+\RequirePackage{ifdraft}[2008/08/11]%
+%    \end{macrocode}
+% Pour insérer du texte en filigrane
+%    \begin{macrocode}
+\ifdraft{%
+  \RequirePackage{draftwatermark}[2006/06/30]%
+%    \end{macrocode}
+% Si on est en mode \enquote{draft}, les différentes zones de la page,
+% notamment celle allouée au texte, sont matérialisées et les
+% dépassements de marges sont signalés par une barre verticale noire
+% dans la marge.
+%    \begin{macrocode}
+  \geometry{showframe}%
+  \setlength\overfullrule{5pt}%
+}{%
+  \ifbool{YAD@inprogress@work@star}{%
+    \RequirePackage{draftwatermark}[2006/06/30]%
+  }{%
+  }%
+}%
+%    \end{macrocode}
+% Pour gérer les langues.
+%    \begin{macrocode}
+\RequirePackage{babel}[2014/03/24]
+%    \end{macrocode}
+% Pour pouvoir afficher un sommaire c-à-d une table des matières réduite
+%    \begin{macrocode}
+\RequirePackage{etoc}[2016/09/29]%
+%    \end{macrocode}
+% Pour tester la langue en cours
+%    \begin{macrocode}
+\RequirePackage{iflang}[2007/11/11]%
+%    \end{macrocode}
+% Pour pouvoir assurer facilement les traductions de certains mots ou
+% expressions clés du canevas de thèse (notamment dans les pages de titre)
+%    \begin{macrocode}
+\RequirePackage{translator}[2010/06/12]%
+%    \end{macrocode}
+% Pour générer les dates (sans affichage du jour de la semaine).
+%    \begin{macrocode}
+\RequirePackage{datetime}[2013/09/10]%
+%    \end{macrocode}
+% Pour faire pointer les hyperliens au début des flottants plutôt qu'au
+% début des légendes
+%    \begin{macrocode}
+\AtEndPreamble{%
+  \@ifpackageloaded{hyperref}{%
+    \RequirePackage[all]{hypcap}[2011/02/16]%
+  }{%
+  }%
+}%
+%    \end{macrocode}
+% Pour la gestion des signets
+%    \begin{macrocode}
+\AtEndPreamble{%
+  \@ifpackageloaded{hyperref}{%
+    \RequirePackage[numbered]{bookmark}[2011/12/02]%
+  }{%
+  }%
+}%
+%    \end{macrocode}
+%
+% \section{Début du code de la classe}
+%
+% Because of some changes in \Package{parskip}, we need to adjust the vertical
+% space before the first rule of the local TOCs, depending on this package is
+% loaded or not (cf. definition of ×\YAD@localstyle× below).
+%    \begin{macrocode}
+\newlength{\YAD@vspace@before@localtoc@rule}
+\setlength{\YAD@vspace@before@localtoc@rule}{-1.25\baselineskip}
+\AtEndPreamble{%
+  \@ifpackageloaded{parskip}{%
+    \@ifpackagelater{parskip}{2.0a}{%
+      \setlength{\YAD@vspace@before@localtoc@rule}{-.775\baselineskip}%
+    }{%
+    }%
+  }{%
+  }%
+}
+%    \end{macrocode}
+%
+% On définit les macros "\YAD@href", "\YAD@hypersetup", "\YAD@url",
+% "\YAD@nolinkurl" identiques aux macros "\href", "\hypersetup", "\url",
+% "\nolinkurl" du \Package{hyperref} mais sur lesquelles on a plus de
+% contrôle.
+%    \begin{macrocode}
+\AtEndPreamble{%
+  \@ifpackageloaded{hyperref}{%
+    \newcommand{\YAD@href}[3][]{\href[#1]{#2}{#3}}%
+    \newcommand{\YAD@hypersetup}[1]{\hypersetup{#1}}%
+    \newcommand{\YAD@url}[1]{\url{#1}}%
+    \newcommand{\YAD@nolinkurl}[1]{\nolinkurl{#1}}%
+    \newcommand{\YAD@texorpdfstring}[2]{\texorpdfstring{#1}{#2}}%
+    \newcommand{\YAD@phantomsection}{\phantomsection}%
+  }{%
+    \newcommand{\YAD@href}[3][]{#3}%
+    \newcommand{\YAD@hypersetup}[1]{}%
+    \newcommand{\YAD@url}[1]{\texttt{#1}}%
+    \newcommand{\YAD@nolinkurl}[1]{\texttt{#1}}%
+    \newcommand{\YAD@texorpdfstring}[2]{#1}%
+    \newcommand{\YAD@phantomsection}{}%
+  }%
+  \@ifpackageloaded{bookmark}{%
+    \newcommand{\YAD@bookmarksetup}[1]{\bookmarksetup{#1}}%
+  }{%
+    \newcommand{\YAD@bookmarksetup}[1]{}%
+  }%
+}%
+%    \end{macrocode}
+%
+% Pour éviter certains comportements inattendus, on précise la langue
+% principale au moyen de l'option "main" du \Package{babel}. Mais, comme
+% celle-ci n'est apparue que récemment, on n'y recourt que si la version du
+% package est assez récente.
+%    \begin{macrocode}
+\@ifpackagelater{babel}{2013/04/15}{%
+  \PassOptionsToPackage{main=\YAD@mainlanguage}{babel}%
+}{%
+  % \AtEndPreamble{%
+  \YAD@ClassWarningNoLine{%
+    La version de `babel' utilisee est obsolete.\MessageBreak%
+    La classe `yathesis' va essayer de faire son possible\MessageBreak%
+    mais il est possible qu'elle produise des resultats\MessageBreak%
+    non prevus. Il est conseille de mettre a jour sa\MessageBreak%
+    distribution TeX%
+  }%
+  % }%
+}%
+%    \end{macrocode}
+%
+% On change l'appellation des tableaux flottants tels que traduits par le
+% module \package{frenchb} du \Package{babel} de \enquote{Table} à \enquote{Tableau}.
+%
+%    \begin{macrocode}
+\addto\captionsfrench{\def\tablename{{\scshape Tableau}}}%
+%    \end{macrocode}
+%
+% On définit la macro "\YAD@ifemptyorundef" qui teste si le nom passé est celui
+% d'une macro inexistante ou dont le texte de remplacement est vide (ou
+% constitué d'espaces seulement).
+%    \begin{macrocode}
+\newcommand{\YAD@ifemptyorundef}[3]{%
+  \ifboolexpr{%
+    test {\ifundef{#1}} or %
+    test {\ifdefempty{#1}}%
+  }{%
+    #2%
+  }{%
+    #3%
+  }%
+}%
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\AfterEndDocument{%
+  \ifbool{YAD@nowarning}{%
+    \ifboolexpr{%
+      bool {YAD@inprogress@work}%
+      or bool {YAD@inprogress@work@star}%
+      or bool {YAD@draft}%
+    }{%
+    }{%
+      \ifnumgreater{\value{YAD@warnings}}{0}{%
+        % \immediate\write\YAD@file{%
+          \ClassWarningNoLine{yathesis}{%
+            L'option `nowarning' ayant ete utilisee,\MessageBreak%
+            \theYAD@warnings\space warning%
+            \ifnumequal{\value{YAD@warnings}}{1}{%
+              \space propre%
+            }{%
+              s propres%
+            }
+            %
+            a la classe `yathesis'\MessageBreak%
+            \ifnumequal{\value{YAD@warnings}}{1}{%
+              a ete masque%
+            }{%
+              ont ete masques%
+            }
+            %
+            dans ce fichier de log.\MessageBreak%
+            Il est fortement conseille de reactiver\MessageBreak%
+            l'affichage de ce%
+            \ifnumequal{\value{YAD@warnings}}{1}{%
+              \space warning%
+            }{%
+              s warnings%
+            }
+            %
+            en supprimant\MessageBreak%
+            l'option `nowarning'%
+          }%
+        % }%
+      }{%
+      }%
+    }%
+  }{%
+  }%
+}%
+% \AtEndDocument{%
+%   \immediate\closeout\YAD@file%
+% }%
+% \InputIfFileExists{\jobname.yad}{}{}%
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+%</class>
+%    \end{macrocode}
+%
+% \section{Main Code}
+%
+%    \begin{macrocode}
+%<*class>
+%    \end{macrocode}
+%
+% On charge la libraire "skins" du \Package{tcolorbox}.
+%    \begin{macrocode}
+  \tcbuselibrary{skins}%
+%    \end{macrocode}
+%
+% Par défaut, les listings sont composés en fonte à châsse fixe
+%    \begin{macrocode}
+% \lstset{basicstyle=\ttfamily}
+%    \end{macrocode}
+%
+% \begin{macro}{\YAD@clearspread}
+%
+% Commande permettant de débuter sur une page paire (pour la 4\ieme{}
+% de couverture)
+%    \begin{macrocode}
+\def\YAD@clearspread{\clearpage\if@twoside \ifodd\c@page
+  \hbox{}\newpage\if@twocolumn\hbox{}\newpage\fi\fi\fi}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{environment}{titlepage}
+% Redéfinition de l'environnement \lstinline|titlepage| pour que la numérotation
+% des pages n'y soit pas fixée à $1$.
+%    \begin{macrocode}
+\renewenvironment{titlepage}
+{%
+  \cleardoublepage
+  \if@twocolumn
+  \@restonecoltrue\onecolumn
+  \else
+  \@restonecolfalse\newpage
+  \fi
+  \thispagestyle{empty}%
+}%
+{\if@restonecol\twocolumn \else \newpage \fi
+}%
+%    \end{macrocode}
+% \end{environment}
+%
+%    \begin{macrocode}
+% \patchcmd{\chapter}{plain}{empty}{}{}%
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+%</class>
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+%<*class>
+%    \end{macrocode}
+%
+% On définit la macro privée où est stocké le nom du répertoire des
+% \enquote{réglages} où se trouvent les divers fichiers de configuration.
+% \begin{macro}{\YAD@configuration@directory}
+%    \begin{macrocode}
+\newcommand*{\YAD@configuration@directory}{configuration}
+%    \end{macrocode}
+% \end{macro}
+%
+% On définit la macro privée où est stocké le nom du fichier
+% de configuration \emph{local} de la thèse.
+% \begin{macro}{\YAD@configuration@file}
+%    \begin{macrocode}
+\newcommand*{\YAD@configuration@file}{thesis.cfg}
+%    \end{macrocode}
+% \end{macro}
+%
+% On définit la macro privée où est stocké le nom du fichier esclave contenant
+% les données caractéristiques du document (ce qui doit figurer sur les pages
+% de couverture et de titre, les mots clés, etc.).
+% \begin{macro}{\YAD@characteristics@file}
+%    \begin{macrocode}
+\newcommand*{\YAD@characteristics@file}{characteristics.tex}
+%    \end{macrocode}
+% \end{macro}
+%
+% On définit la macro privée où est stocké le nom du fichier contenant
+% les traductions de la classe.
+% \begin{macro}{\YAD@characteristics@file}
+%    \begin{macrocode}
+\newcommand*{\YAD@translations@file}{yathesis-translations.tex}
+%    \end{macrocode}
+% \end{macro}
+%
+%    \begin{macrocode}
+%</class>
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+%<*class>
+%    \end{macrocode}
+%
+% Recherche automatique des fichiers images dans le \Folder{images}.
+% Ceci permet de ne pas spécifier le chemin des images qui s'y trouvent.
+%
+%    \begin{macrocode}
+% \graphicspath{{\imagesdirectory/}}
+%    \end{macrocode}
+%
+% Réglages propres au \Package{siunitx} (nombres composés avec la
+% fonte courante et adoption des conventions typographiques
+% françaises, notamment la virgule en guise de séparateur décimal).
+%    \begin{macrocode}
+\AtEndPreamble{%
+  \@ifpackageloaded{siunitx}{%
+    \sisetup{detect-all}%
+    \ifthenelse{\equal{\YAD@mainlanguage}{french}}{%
+      \sisetup{locale=FR}%
+    }{%
+      \sisetup{locale=UK}%
+    }%
+  }{%
+  }%
+}%
+%    \end{macrocode}
+%
+% \begin{macro}{\YAD@reach@file}
+% Macro offrant la possibilité de cliquer sur un hyperlien pour ouvrir
+% les fichier permettant de modifier les mots et expressions clés du
+% canevas de thèse et les données de la thèse
+%    \begin{macrocode}
+\definecolor{YAD@configuration@file@color}{rgb}{0.5,0,0.5}%
+\definecolor{YAD@main@file@color}{rgb}{1,0.5,0}%
+\newcommand*{\YAD@reach@file}[2][\YAD@characteristics@file]{%
+  \ifdraft{%
+    \ifthenelse{\equal{\YAD@configuration@file}{#1}}{%
+      \YAD@hypersetup{%
+        urlbordercolor=YAD@configuration@file@color,%
+        urlcolor=YAD@configuration@file@color%
+      }%
+    }{%
+      \YAD@hypersetup{%
+        urlbordercolor=YAD@main@file@color,%
+        urlcolor=YAD@main@file@color%
+      }%
+    }%
+    \IfFileExists{\YAD@configuration@directory/#1}{%
+       \YAD@href{\YAD@configuration@directory/#1}{#2}%
+    }{%
+      \YAD@href{\jobname.tex}{#2}%
+    }%
+  }{%
+    #2%
+  }%
+}%
+%    \end{macrocode}
+% \end{macro}
+%
+% Si on est en format de sortie "paper" (impression sur papier) la macro
+% "\YAD@href"\meta{\textsc{url}}"}{"\meta{texte}"}" n'affiche que le
+% \meta{texte} et les hyperliens des macros
+% "\url" sont supprimés. En outre, les commandes
+% "\href{"\meta{\textsc{url}}"}{"\meta{texte}"}" du \Package{hyperref} sont
+% automatiquement remplacées par :
+% \begin{itemize}
+% \item \meta{texte}"\footnote{"\meta{\textsc{url}}"}" ;
+% \item \meta{texte} "("\meta{\textsc{url}}")" ;
+% \end{itemize}
+% selon que "\href{"\meta{\textsc{url}}"}{"\meta{texte}"}" est dans le texte
+% ordinaire ou elle-même en note de bas de page.
+%    \begin{macrocode}
+\ifbool{YAD@output@paper}{%
+  \AtEndPreamble{%
+    \@ifpackageloaded{hyperref}{%
+      \YAD@hypersetup{colorlinks=false}%
+      \renewcommand{\YAD@href}[3][]{#3}%
+      \let\YAD@ori@footnote\footnote%
+      \renewcommand{\footnote}[1]{\booltrue{YAD@in@footnote}\YAD@ori@footnote{#1}\boolfalse{YAD@in@footnote}}%
+      \renewcommand*\url[1]{\nolinkurl{#1}}%
+      \renewcommand*\href[3][]{%
+        \ifbool{YAD@in@footnote}{%
+          #3 (\url{#2}) }{%
+          #3\footnote{\url{#2}} }%
+      }%
+    }{%
+    }%
+  }%
+}{%
+}%
+%    \end{macrocode}
+%
+% On fixe la couleur du filigrane inséré lorsque le
+% \Package{draftwatermark} est chargé.
+%    \begin{macrocode}
+\@ifpackageloaded{draftwatermark}{%
+  \SetWatermarkColor{gray!10}%
+}{%
+}%
+%    \end{macrocode}
+% En cas de travail en cours, on l'indique en filigrane.
+%    \begin{macrocode}
+\ifbool{YAD@inprogress@work@star}{%
+  \SetWatermarkFontSize{3cm}%
+  \AfterEndPreamble{\translatelet\YAD@trinprogress{lbl-inprogress}}%
+  \SetWatermarkText{\MakeUppercase{\YAD@trinprogress}}%
+}{%
+}%
+%    \end{macrocode}
+% Si l'option "draft" est activée, on indique clairement qu'on est en
+% mode brouillon au moyen d'un texte en filigrane
+%    \begin{macrocode}
+\ifdraft{%
+  \AfterEndPreamble{\translatelet\YAD@trdraft{lbl-draft}}%
+  \SetWatermarkText{\MakeUppercase{\YAD@trdraft}}%
+}{%
+}%
+%    \end{macrocode}
+%
+% Commande permettant de composer les arguments génériques
+% \begin{macro}{\YAD@generic@argument@}
+%    \begin{macrocode}
+\newcommand*{\YAD@generic@argument}[1]{%
+  \bgroup\color{brown}\normalfont$\langle$\textsl{\texttt{#1}}$\rangle$\egroup%
+}%
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\YAD@translation}
+%   Commande adjoignant à "\translate" les hyperliens vers le fichier
+%   de configuration où peuvent être surchargées les traductions
+%    \begin{macrocode}
+\newcommand*{\YAD@translation}[1]{%
+  \ifthenelse{\isempty{#1}}{%
+  }{%
+    \ifdraft{%
+      {%
+        \scriptsize%
+        \begin{tabular}{l}
+          {%
+            \normalfont\ttfamily\tiny%
+            (#1)%
+          }%
+          \\[-.3\baselineskip]
+          \YAD@reach@file[\YAD@configuration@file]{%
+            \translate{lbl-#1}%
+          }%
+        \end{tabular}%
+      }%
+    }{%
+    \translate{lbl-#1}%
+    }%
+  }%
+}%
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\YAD@astuce@expressioncle}
+%    \begin{macrocode}
+\newcommand{\YAD@astuce@expressioncle}{%
+  \ifdraft{%
+    \begin{center}
+      \footnotesize%
+      \fboxrule4pt%
+      \fcolorbox{red}{white}{%
+        \begin{minipage}{.9\linewidth}
+          \selectlanguage{french}%
+          Sur cette page, il est simple de (re)d\'efinir\ifundef{\Fcolonspace}{\FBcolonspace}{\Fcolonspace}:
+          \begin{enumerate}
+          \item une
+            \YAD@reach@file[\YAD@configuration@file]{expression
+              cl\'e}\ifundef{\Fcolonspace}{\FBcolonspace}{\Fcolonspace}:
+            il suffit de cliquer sur le cadre de couleur orange qui
+            l'entoure pour atteindre le fichier
+            \YAD@reach@file[\YAD@configuration@file]{\texttt{\YAD@configuration@file}}
+            et d'y ins\'erer
+            \begin{center}
+              \lstinline[morekeywords=expression]|\\expression\{|%
+              \YAD@meta{label}%
+              \lstinline|\}\{|%
+              \YAD@meta{valeur (en fran\c cais)}%
+              \lstinline|\}\{|%
+              \YAD@meta{valeur (en anglais)}%
+              \lstinline|\}|
+            \end{center}
+            pour lui donner une (nouvelle) \YAD@meta{valeur} (\'eventuellement
+            vide), \YAD@meta{label} \'etant son identifiant indiqu\'e au-dessus et
+            entre parenth\`eses\ifundef{\Fcolonspace}{\FBcolonspace}{\Fcolonspace};
+          \item une \YAD@reach@file{donn\'ee}\ifundef{\Fcolonspace}{\FBcolonspace}{\Fcolonspace}: il
+            suffit de cliquer sur le cadre de couleur pourpre qui l'entoure
+            pour atteindre le fichier
+            \YAD@reach@file{\texttt{\YAD@configuration@file}} o\`u elle est
+            d\'efinie.
+          \end{enumerate}
+          Pour plus de d\'etails, consulter la documentation de la
+          classe \textsl{yathesis}.%
+        \end{minipage}%
+      }%
+    \end{center}
+  }{%
+  }%
+}%
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\expression}
+%   On offre la possibilité de (re)définir les expressions clés de la thèse.
+%   Le 1\ier{} argument est le label de l'expression et les 2\ieme{} et
+%   3\ieme{} arguments permettent de stipuler les (nouvelles) valeurs
+%   (éventuellement vides) de l'expresion respectivement en français et en
+%   anglais.
+%    \begin{macrocode}
+\newcommand{\YAD@expression}[3]{%
+  \AtBeginDocument{%
+    \deftranslation[to=French]{lbl-#1}{#2}%
+    \deftranslation[to=English]{lbl-#1}{#3}%
+    \deftranslation[to=French]{#1}{#2}%
+    \deftranslation[to=English]{#1}{#3}%
+  }%
+}%
+\newcommand{\YAD@expression@alias}[5]{%
+  \ifthenelse{\equal{#1}{#4}}{%
+    \YAD@expression{#5}{#2}{#3}%
+  }{%
+  }%
+}%
+\newcommand{\expression}[3]{%
+  \YAD@expression@alias{#1}{#2}{#3}{juniorresearcherfem*}{juniorresearcher-female*}%
+  \YAD@expression@alias{#1}{#2}{#3}{mcf}{associateprofessor}%
+  \YAD@expression@alias{#1}{#2}{#3}{mcf*}{associateprofessor*}%
+  \renewcommand*{\do}[1]{\YAD@expression@alias{#1}{#2}{#3}{##1fem}{##1-female}}
+  \docsvlist{%
+    juniorresearcher,%
+    supervisor,%
+    cosupervisor,%
+    comonitor,%
+    seniorresearcher,%
+    committeepresident,%
+    professor,%
+  }
+  %
+  \YAD@expression{#1}{#2}{#3}%
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\YAD@generic@argument@translate}
+%    \begin{macrocode}
+\newcommand*{\YAD@generic@argument@translate}[1]{%
+  \YAD@texorpdfstring{\YAD@generic@argument{\translate{meta-#1}}}{<#1>}%
+}%
+%    \end{macrocode}
+% \end{macro}
+%
+% Déclarations permettant de définir des macros des directeurs (dont
+% d'éventuels co-directeurs), rapporteurs et examinateurs (dont le président du
+% jury) dont les arguments puissent être spécifiés sous la forme \meta{clé} =
+% \meta{valeur} (grâce au package \package{pgfkeys}). La famille est nommée
+% \lstinline|yad| (comme \foreignquote{english}{yet antoher document}).
+%    \begin{macrocode}
+\newcommand{\cmdKV@YAD@numlaboratories}{1}%
+\yadsetup{%
+  role/.store in=\cmdKV@YAD@role,%
+  corporation/.store in=\cmdKV@YAD@corps,%
+  corps/.store in=\cmdKV@YAD@corps,%
+  url/.store in=\cmdKV@YAD@url,%
+  logo/.store in=\cmdKV@YAD@logo,%
+  address/.store in=\cmdKV@YAD@address,%
+  telephone/.store in=\cmdKV@YAD@telephone,%
+  fax/.store in=\cmdKV@YAD@fax,%
+  email/.store in=\cmdKV@YAD@email,%
+  affiliation/.store in=\cmdKV@YAD@affiliation,%
+  affiliationsecondary/.store in=\cmdKV@YAD@affiliationsecondary,%
+  sepcorpaffilfrench/.store in=\cmdKV@YAD@sepcorpaffilfrench,%
+  sepcorpaffilenglish/.store in=\cmdKV@YAD@sepcorpaffilenglish,%
+  name/.store in=\cmdKV@YAD@name,%
+  depth/.store in=\cmdKV@YAD@depth,%
+  frametitle/.store in=\cmdKV@YAD@frametitle,%
+  numlaboratories/.store in=\cmdKV@YAD@numlaboratories,%
+}%
+%
+\yadsetup{%
+  logoheight/.code={%
+    \global\setlength\cmdKV@YAD@logoheight{#1}%
+    \ifdimgreater{\cmdKV@YAD@logoheight}{\YAD@max@logoheight}{%
+      \global\setlength\YAD@max@logoheight{\cmdKV@YAD@logoheight}%
+    }{%
+    }%
+  }%
+}%
+%
+\yadsetup{sepcorpaffilfrench=\YAD@global@sepcorpaffil@french}%
+\yadsetup{sepcorpaffilenglish=\YAD@global@sepcorpaffil@english}%
+\yadsetup{name=\contentsname}%
+\yadsetup{depth=subsubsection}%
+% \yadsetup{frametitle=fbox}%
+%    \end{macrocode}
+% On crée un style de réinitialisation des caractéristiques des personnes.
+%    \begin{macrocode}
+\yadsetup{reset person/.style={%
+    corps=,%
+    role=,%
+    affiliation=,%
+    affiliationsecondary=,%
+    female=false,%
+    male=true,%
+    professor=false,%
+    mcf=false,%
+    mcf*=false,%
+    associateprofessor=false,%
+    associateprofessor*=false,%
+    juniorresearcher=false,%
+    juniorresearcher*=false,%
+    seniorresearcher=false,%
+  }%
+}%
+%
+% Définition de nouvelles bases de données
+%    \begin{macrocode}
+\DTLnewdb{YAD@staffs}%
+\DTLnewrow{YAD@staffs}%
+\DTLnewdbentry{YAD@staffs}{YAD@the@staff}{referees}%
+\DTLnewrow{YAD@staffs}%
+\DTLnewdbentry{YAD@staffs}{YAD@the@staff}{examiners}%
+\DTLnewrow{YAD@staffs}%
+\DTLnewdbentry{YAD@staffs}{YAD@the@staff}{guests}%
+\DTLnewrow{YAD@staffs}%
+\DTLnewdbentry{YAD@staffs}{YAD@the@staff}{supervisors-in-committee}%
+%
+\DTLforeach{YAD@staffs}{%
+  \YAD@the@staff=YAD@the@staff}{%
+  \DTLnewdb{\YAD@the@staff}%
+}%
+\DTLnewdb{YAD@supervisors}%
+%
+\DTLnewdb{dedications}%
+\DTLnewdb{frontepigraphs}%
+%    \end{macrocode}
+% Booléens testant la présence de femmes uniquement dans chacun des groupes de
+% membres du jury, globalement fixés à \enquote{vrai} par défaut.
+%    \begin{macrocode}
+\DTLforeach{YAD@staffs}{%
+  \YAD@the@staff=YAD@the@staff}{%
+  \YAD@create@boolean{only@female@\YAD@the@staff}%
+  \global\booltrue{YAD@only@female@\YAD@the@staff}%
+}%
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\newcommand*{\YAD@staff}[4][]{%
+%    \end{macrocode}
+% On continue.
+%    \begin{macrocode}
+  \dtlexpandnewvalue%
+  %
+  \yadsetup{#1}%
+%    \end{macrocode}
+% Pour chacun des groupes de membres du jury, le booléen testant la présence de
+% femmes uniquement est globalement fixés à \enquote{faux} si au moins une
+% personne n'est pas une femme.
+%    \begin{macrocode}
+\DTLforeach{YAD@staffs}{%
+  \YAD@the@staff=YAD@the@staff}{%
+    \ifthenelse{\equal{#4}{\YAD@the@staff}}{%
+      \ifboolexpr{%
+        bool {YAD@female} or %
+        not bool {YAD@male}%
+      }{%
+      }{%
+        \global\boolfalse{YAD@only@female@#4}%
+      }%
+    }{%
+    }
+}%
+%
+  \ifbool{YAD@professor}{%
+    \ifboolexpr{%
+      bool {YAD@female} or %
+      not bool {YAD@male}%
+    }{%
+      \yadsetup{corps=professor-female,#1}%
+    }{%
+      \yadsetup{corps=professor,#1}%
+    }%
+  }{%
+  }%
+  \ifboolexpr{
+    bool {YAD@mcf}
+    or
+    bool {YAD@associateprofessor}
+  }{%
+    \yadsetup{corps=associateprofessor,#1}%
+  }{%
+  }%
+  \ifboolexpr{
+    bool {YAD@mcf*}
+    or
+    bool {YAD@associateprofessor*}
+  }{%
+    \yadsetup{corps=associateprofessor*,#1}%
+  }{%
+  }%
+  \ifboolexpr{ bool {YAD@juniorresearcher} }{%
+    \ifboolexpr{%
+      bool {YAD@female} or %
+      not bool {YAD@male}%
+    }{%
+      \yadsetup{corps=juniorresearcher-female,#1}%
+    }{%
+      \yadsetup{corps=juniorresearcher,#1}%
+    }%
+  }{%
+  }%
+  \ifboolexpr{ bool {YAD@juniorresearcher*} }{%
+    \ifboolexpr{%
+      bool {YAD@female} or %
+      not bool {YAD@male}%
+    }{%
+      \yadsetup{corps=juniorresearcher-female*,#1}%
+    }{%
+      \yadsetup{corps=juniorresearcher*,#1}%
+    }%
+  }{%
+  }%
+  \ifboolexpr{ bool {YAD@seniorresearcher} }{%
+    \ifboolexpr{%
+      bool {YAD@female} or %
+      not bool {YAD@male}%
+    }{%
+      \yadsetup{corps=seniorresearcher-female,#1}%
+    }{%
+      \yadsetup{corps=seniorresearcher,#1}%
+    }%
+  }{%
+  }%
+  %
+%    \end{macrocode}
+% On fait en sorte que la clé "corporation", obsolète et remplacée par la clé
+% "corps",  soit un alias de ce dernier.
+%    \begin{macrocode}
+  % \ifthenelse{\equal{\cmdKV@YAD@corporation}{}}{%
+  % }{%
+  %   \ifthenelse{\equal{\cmdKV@YAD@corps}{}}{%
+  %     \yadsetup{#1,corps=\cmdKV@YAD@corporation}%
+  %   }{%
+  %   }%
+  % }%
+%    \end{macrocode}
+% On continue.
+%    \begin{macrocode}
+  \DTLnewrow{#4}%
+  \DTLnewdbentry{#4}{firstname}{#2}%
+  \DTLnewdbentry{#4}{lastname}{#3}%
+  \YAD@ifemptyorundef{\cmdKV@YAD@role}{%
+    \DTLnewdbentry{#4}{role}{}%
+  }{%
+    \DTLnewdbentry{#4}{role}{\cmdKV@YAD@role}%
+  }%
+  \YAD@ifemptyorundef{\cmdKV@YAD@corps}{%
+    \DTLnewdbentry{#4}{corps}{}%
+  }{%
+    \DTLnewdbentry{#4}{corps}{\cmdKV@YAD@corps}%
+  }%
+  \YAD@ifemptyorundef{\cmdKV@YAD@sepcorpaffilfrench}{%
+    \DTLnewdbentry{#4}{sepcorpaffilfrench}{\YAD@global@sepcorpaffil@french}%
+  }{%
+    \DTLnewdbentry{#4}{sepcorpaffilfrench}{\cmdKV@YAD@sepcorpaffilfrench}%
+    \def\cmdKV@YAD@sepcorpaffilfrench{}%
+  }%
+  \YAD@ifemptyorundef{\cmdKV@YAD@sepcorpaffilenglish}{%
+    \DTLnewdbentry{#4}{sepcorpaffilenglish}{\YAD@global@sepcorpaffil@english}%
+  }{%
+    \DTLnewdbentry{#4}{sepcorpaffilenglish}{\cmdKV@YAD@sepcorpaffilenglish}%
+    \def\cmdKV@YAD@sepcorpaffilenglish{}%
+  }%
+  \YAD@ifemptyorundef{\cmdKV@YAD@affiliation}{%
+    \DTLnewdbentry{#4}{affiliation}{}%
+  }{%
+    \DTLnewdbentry{#4}{affiliation}{\cmdKV@YAD@affiliation}%
+  }%
+  \YAD@ifemptyorundef{\cmdKV@YAD@affiliationsecondary}{%
+    \YAD@ifemptyorundef{\cmdKV@YAD@affiliation}{%
+      \DTLnewdbentry{#4}{affiliationsecondary}{}%
+    }{%
+      \DTLnewdbentry{#4}{affiliationsecondary}{\cmdKV@YAD@affiliation}%
+    }%
+  }{%
+    \DTLnewdbentry{#4}{affiliationsecondary}{\cmdKV@YAD@affiliationsecondary}%
+  }%
+% \end{macrocode}
+% On réinitialise les caractéristiques pour la personne suivante.
+%    \begin{macrocode}
+  \yadsetup{reset person}%
+}%
+%    \end{macrocode}
+%
+% \begin{macro}{\YAD@error@firstlastnames@empty}
+%    \begin{macrocode}
+\newcommand{\YAD@error@firstlastnames@empty}[4]{%
+  \ifthenelse{\isempty{#2}}{%
+    \YAD@ClassError{%
+      Prenom #1 non specifie%
+    }{%
+      Le 1er argument obligatoire de la commande \string#4\MessageBreak%
+      est vide (celui-ci doit etre renseigne).%
+    }%
+  }{%
+  }%
+  \ifthenelse{\isempty{#3}}{%
+    \YAD@ClassError{%
+      Nom #1 non specifie%
+    }{%
+      Le 2e argument obligatoire de la commande \string#4\MessageBreak%
+      est vide (celui-ci doit etre renseigne).%
+    }%
+  }{%
+  }%
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\YAD@supervisors@in@committee}
+%    \begin{macrocode}
+\newcommand*{\YAD@supervisors@in@committee}[3][]{%
+  \YAD@staff[#1]{#2}{#3}{supervisors-in-committee}%
+}%
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\supervisor}
+%    \begin{macrocode}
+\newcommand{\supervisor}{%
+  \@ifstar{\@tempswafalse\YAD@supervisor}{\@tempswatrue\YAD@supervisor}%
+}
+\newcommand*{\YAD@supervisor}[3][]{%
+  \booltrue{YAD@supervisor@specified}%
+  \yadsetup{#1}%
+  \ifboolexpr{%
+    bool {YAD@female} or %
+    not bool {YAD@male}%
+  }{%
+    \YAD@error@firstlastnames@empty{de la directrice de these}{#2}{#3}{\supervisor}%
+    \YAD@staff[role=supervisor-female,#1]{#2}{#3}{YAD@supervisors}%
+  }{%
+    \YAD@error@firstlastnames@empty{du directeur de these}{#2}{#3}{\supervisor}%
+    \YAD@staff[role=supervisor,#1]{#2}{#3}{YAD@supervisors}%
+  }%
+  \if@tempswa%
+  \YAD@staff[role=supervisor,#1]{#2}{#3}{supervisors-in-committee}%
+  \fi%
+}%
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\cosupervisor}
+%    \begin{macrocode}
+\newcommand{\cosupervisor}{%
+  \@ifstar{\@tempswatrue\YAD@cosupervisor}{\@tempswafalse\YAD@cosupervisor}%
+}
+\newcommand*{\YAD@cosupervisor}[3][]{%
+  \booltrue{YAD@supervisor@specified}%
+  \booltrue{YAD@cosupervisor@or@comonitor}%
+  \yadsetup{#1}%
+  \ifboolexpr{%
+    bool {YAD@female} or %
+    not bool {YAD@male}%
+  }{%
+    \YAD@error@firstlastnames@empty{de la co-directrice de these}{#2}{#3}{\cosupervisor}%
+    \YAD@staff[role=cosupervisor-female,#1]{#2}{#3}{YAD@supervisors}%
+  }{%
+    \YAD@error@firstlastnames@empty{du co-directeur de these}{#2}{#3}{\cosupervisor}%
+    \YAD@staff[role=cosupervisor,#1]{#2}{#3}{YAD@supervisors}%
+  }%
+  \if@tempswa%
+  \else%
+  \YAD@staff[role=cosupervisor,#1]{#2}{#3}{supervisors-in-committee}%
+  \fi%
+}%
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\comonitor}
+%    \begin{macrocode}
+\newcommand{\comonitor}{%
+  \@ifstar{\@tempswatrue\YAD@comonitor}{\@tempswafalse\YAD@comonitor}%
+}
+\newcommand*{\YAD@comonitor}[3][]{%
+  \booltrue{YAD@supervisor@specified}%
+  \booltrue{YAD@cosupervisor@or@comonitor}%
+  \yadsetup{#1}%
+  \ifboolexpr{%
+    bool {YAD@female} or %
+    not bool {YAD@male}%
+  }{%
+    \YAD@error@firstlastnames@empty{de la co-encadrante de these}{#2}{#3}{\comonitor}%
+    \YAD@staff[role=comonitor-female,#1]{#2}{#3}{YAD@supervisors}%
+  }{%
+    \YAD@error@firstlastnames@empty{de co-encadrant de these}{#2}{#3}{\comonitor}%
+    \YAD@staff[role=comonitor,#1]{#2}{#3}{YAD@supervisors}%
+  }%
+  \if@tempswa%
+  \else%
+  \YAD@staff[role=comonitor,#1]{#2}{#3}{supervisors-in-committee}%
+  \fi%
+}%
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\guest}
+%    \begin{macrocode}
+\newcommand*{\guest}[3][]{%
+  \YAD@staff[#1]{#2}{#3}{guests}%
+  \YAD@error@firstlastnames@empty{de l'invite}{#2}{#3}{\guest}%
+}%
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\referee}
+%    \begin{macrocode}
+\newcommand*{\referee}[3][]{%
+  \yadsetup{#1}%
+  \ifboolexpr{%
+    bool {YAD@female} or %
+    not bool {YAD@male}%
+  }{%
+    \YAD@error@firstlastnames@empty{de la rapportrice}{#2}{#3}{\referee}%
+  }{%
+    \YAD@error@firstlastnames@empty{du rapporteur}{#2}{#3}{\referee}%
+  }%
+  \YAD@staff[#1]{#2}{#3}{referees}%
+}%
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\examiner}
+%    \begin{macrocode}
+\newcommand*{\examiner}[3][]{%
+  \yadsetup{#1}%
+  \YAD@staff[#1]{#2}{#3}{examiners}%
+  \ifboolexpr{%
+    test {\ifdefstring{\cmdKV@YAD@role}{committeepresident}} or %
+    test {\ifdefstring{\cmdKV@YAD@role}{committeepresident-female}}%
+  }{%
+  }{%
+    \ifboolexpr{%
+      bool {YAD@female} or %
+      not bool {YAD@male} or %
+    }{%
+      \YAD@error@firstlastnames@empty{de l'examinatrice}{#2}{#3}{\examiner}%
+    }{%
+      \YAD@error@firstlastnames@empty{de l'examinateur}{#2}{#3}{\examiner}%
+    }%
+  }%
+}%
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\committeepresident}
+%    \begin{macrocode}
+\newcommand*{\committeepresident}[3][]{%
+  \yadsetup{#1}%
+  \ifboolexpr{%
+    bool {YAD@female} or %
+    not bool {YAD@male}%
+  }{%
+    \YAD@error@firstlastnames@empty{de la presidente du jury}{#2}{#3}{\committeepresident}%
+    \examiner[role=committeepresident-female,#1]{#2}{#3}%
+  }{%
+    \YAD@error@firstlastnames@empty{du president du jury}{#2}{#3}{\committeepresident}%
+    \examiner[role=committeepresident,#1]{#2}{#3}%
+  }%
+}%
+%    \end{macrocode}
+% \end{macro}
+%
+%    \begin{macrocode}
+\newcommand*{\YAD@al}{ \`a l'}%
+\newcommand*{\YAD@au}{ au }%
+\newcommand*{\YAD@del}{ de l'}%
+\newcommand*{\YAD@du}{ du }%
+%
+\newcommand*{\YAD@if@starts@with@vowel}[3]{%
+  \ifboolexpr{%
+    test {\IfBeginWith{#1}{a}} or %
+    test {\IfBeginWith{#1}{e}} or %
+    test {\IfBeginWith{#1}{i}} or %
+    test {\IfBeginWith{#1}{o}} or %
+    test {\IfBeginWith{#1}{u}} or %
+    test {\IfBeginWith{#1}{y}} or %
+    test {\IfBeginWith{#1}{\`a}} or %
+    test {\IfBeginWith{#1}{\^a}} or %
+    test {\IfBeginWith{#1}{\"a}} or %
+    test {\IfBeginWith{#1}{\'e}} or %
+    test {\IfBeginWith{#1}{\`e}} or %
+    test {\IfBeginWith{#1}{\^e}} or %
+    test {\IfBeginWith{#1}{\"e}} or %
+    test {\IfBeginWith{#1}{\^i}} or %
+    test {\IfBeginWith{#1}{\"i}} or %
+    test {\IfBeginWith{#1}{\^o}} or %
+    test {\IfBeginWith{#1}{\"o}} or %
+    test {\IfBeginWith{#1}{\`u}} or %
+    test {\IfBeginWith{#1}{\^u}} or %
+    test {\IfBeginWith{#1}{\"u}} or %
+    test {\IfBeginWith{#1}{\"y}} or %
+    test {\IfBeginWith{#1}{A}} or %
+    test {\IfBeginWith{#1}{E}} or %
+    test {\IfBeginWith{#1}{I}} or %
+    test {\IfBeginWith{#1}{O}} or %
+    test {\IfBeginWith{#1}{U}} or %
+    test {\IfBeginWith{#1}{Y}} or %
+    test {\IfBeginWith{#1}{\`A}} or %
+    test {\IfBeginWith{#1}{\^A}} or %
+    test {\IfBeginWith{#1}{\"A}} or %
+    test {\IfBeginWith{#1}{\'E}} or %
+    test {\IfBeginWith{#1}{\`E}} or %
+    test {\IfBeginWith{#1}{\^E}} or %
+    test {\IfBeginWith{#1}{\"E}} or %
+    test {\IfBeginWith{#1}{\^I}} or %
+    test {\IfBeginWith{#1}{\"I}} or %
+    test {\IfBeginWith{#1}{\^O}} or %
+    test {\IfBeginWith{#1}{\"O}} or %
+    test {\IfBeginWith{#1}{\`U}} or %
+    test {\IfBeginWith{#1}{\^U}} or %
+    test {\IfBeginWith{#1}{\"U}} or %
+    test {\IfBeginWith{#1}{\"Y}} or %
+    test {\IfBeginWith{#1}{\ae}} or %
+    test {\IfBeginWith{#1}{\oe}} or %
+    test {\IfBeginWith{#1}{\AE}} or %
+    test {\IfBeginWith{#1}{\OE}}%
+  }{%
+    #2%
+  }{%
+    #3%
+  }%
+}%
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\newcommand{\YAD@display@staff}[1]{%
+  \DTLforeach*{#1}{%
+    \YAD@committeemember@lastname=lastname,%
+    \YAD@committeemember@firstname=firstname,%
+    \YAD@committeemember@role=role,%
+    \YAD@committeemember@corps=corps,%
+    \YAD@committeemember@sepcorpaffil=%
+    \expandafter\IfLanguageName{french}{%
+      sepcorpaffilfrench%
+    }{%
+      sepcorpaffilenglish%
+    }%
+    ,%
+    \YAD@committeemember@affiliation=%
+    \IfLanguageName{french}{%
+      affiliation%
+    }{%
+      affiliationsecondary%
+    }%
+  }{%
+    % Nature des membres du jury
+    \DTLiffirstrow{%
+      \ifthenelse{\DTLrowcount{\YAD@the@staff}>1}{%
+        \ifboolexpr{%
+          bool {YAD@hdr} and test {\ifdefstring{\YAD@the@staff}{supervisors-in-committee}}%
+        }{%
+          \ifboolexpr{%
+            bool {YAD@only@female@\YAD@the@staff}%
+          }{%
+            \YAD@translation{\YAD@the@staff-pl-hdr-female}%
+          }{%
+            \YAD@translation{\YAD@the@staff-pl-hdr}%
+          }
+        }{%
+          \ifboolexpr{%
+            bool {YAD@only@female@\YAD@the@staff}%
+          }{%
+            \YAD@translation{\YAD@the@staff-pl-female}%
+          }{%
+            \YAD@translation{\YAD@the@staff-pl}%
+          }
+        }%
+      }{%
+        \ifboolexpr{%
+          bool {YAD@hdr} and test {\ifdefstring{\YAD@the@staff}{supervisors-in-committee}}%
+        }{%
+          \ifboolexpr{%
+            bool {YAD@only@female@\YAD@the@staff}%
+          }{%
+            \YAD@translation{\YAD@the@staff-hdr-female}%
+          }{%
+            \YAD@translation{\YAD@the@staff-hdr}%
+          }
+        }{%
+          \ifboolexpr{%
+            bool {YAD@only@female@\YAD@the@staff}%
+          }{%
+            \YAD@translation{\YAD@the@staff-female}%
+          }{%
+            \YAD@translation{\YAD@the@staff}%
+          }
+        }%
+      }%
+    }{%
+    }%
+    &
+    % Prénom
+    \YAD@reach@file{%
+      %
+      \ifthenelse{\DTLiseq{\YAD@committeemember@firstname}{}}{%
+        \YAD@generic@argument@translate{firstname}%
+      }{%
+        \YAD@committeemember@firstname%
+      }%
+%    \end{macrocode}
+% L'accolade suivante ne doit pas être suivie d'un "%" sans quoi il
+% n'y aura pas d'espace entre le prénom et le nom.
+%    \begin{macrocode}
+    }
+% Nom
+    \YAD@reach@file{%
+      \ifthenelse{\DTLiseq{\YAD@committeemember@lastname}{}}{%
+        \YAD@generic@argument@translate{lastname}%
+      }{%
+        \textsc{\YAD@committeemember@lastname}%
+      }%
+    }%
+    &
+% Corps
+    \YAD@reach@file{%
+      \ifthenelse{\DTLiseq{\YAD@committeemember@corps}{}}{%
+        \ifdraft{%
+          \YAD@generic@argument@translate{corps}%
+        }{%
+        }%
+      }{%
+        \YAD@translation{%
+          \YAD@committeemember@corps%
+        }%
+      }%
+    }%
+% Établissement
+    \YAD@reach@file{%
+      \ifthenelse{\DTLiseq{\YAD@committeemember@affiliation}{}}{%
+        \ifdraft{%
+          \YAD@generic@argument@translate{affiliation}%
+        }{%
+        }%
+      }{%
+        \ifthenelse{\DTLiseq{\YAD@committeemember@corps}{}}{%
+          \YAD@committeemember@affiliation%
+        }{%
+          \ifthenelse{\equal{\YAD@committeemember@sepcorpaffil}{}}{%
+            \YAD@if@starts@with@vowel{\YAD@committeemember@affiliation}{\YAD@al}{\YAD@au}\YAD@committeemember@affiliation%
+          }{%
+            \YAD@committeemember@sepcorpaffil\YAD@committeemember@affiliation%
+          }%
+        }%
+      }%
+    }%
+    &
+% Fonction
+    \YAD@reach@file{%
+      \ifthenelse{\DTLiseq{\YAD@committeemember@role}{}}{%
+        \ifdraft{%
+          \YAD@generic@argument@translate{role}%
+        }{%
+        }%
+      }{%
+        \ifthenelse{\equal{\YAD@the@staff}{supervisors-in-committee}}{%
+        }{%
+          \YAD@translation{\YAD@committeemember@role}%
+        }%
+      }%
+    }%
+    \DTLiflastrow{%
+      \\[.15cm]
+    }{%
+      \\
+    }%
+  }%
+}%
+%
+\newcommand*{\YAD@supervisors@tabular}{%
+  \small%
+  \DTLifdbempty{YAD@staffs}{}{%
+    \ifthenelse{\DTLrowcount{YAD@supervisors}>1}{%
+      \newcolumntype{u}{>{\itshape}lll}%
+    }{%
+      \newcolumntype{u}{>{\itshape}l@{ }ll}%
+    }%
+    \begin{tabular}[t]{u}
+      \DTLforeach*{YAD@supervisors}{%
+          \YAD@committeemember@lastname=lastname,%
+          \YAD@committeemember@firstname=firstname,%
+          \YAD@committeemember@role=role%
+        }{%
+          % Nature des membres du jury
+          \DTLiffirstrow{%
+            \hspace{-\tabcolsep}%
+            \normalfont\bfseries%
+            \ifYAD@hdr%
+            \YAD@translation{supervisedby-hdr} %
+            \else%
+            \YAD@translation{supervisedby}%
+            \fi%
+          }{%
+          }%
+          &
+          % Prénom
+          \YAD@reach@file{%
+            %
+            \ifthenelse{\DTLiseq{\YAD@committeemember@firstname}{}}{%
+              \YAD@generic@argument@translate{firstname}%
+            }{%
+              \YAD@committeemember@firstname%
+            }%
+          }
+          % Nom
+          \YAD@reach@file{%
+            \ifthenelse{\DTLiseq{\YAD@committeemember@lastname}{}}{%
+              \YAD@generic@argument@translate{lastname}%
+            }{%
+              \textsc{\YAD@committeemember@lastname}%
+            }%
+          }%
+          &
+          % Fonction
+          \YAD@reach@file{%
+            \ifthenelse{\DTLiseq{\YAD@committeemember@role}{}}{%
+              \ifdraft{%
+                \YAD@generic@argument@translate{role}%
+              }{%
+              }%
+            }{%
+              \ifthenelse{\DTLrowcount{YAD@supervisors}>1}{%
+                \ifbool{YAD@cosupervisor@or@comonitor}{%
+                  \YAD@translation{\YAD@committeemember@role}%
+                }{%
+                }%
+              }{%
+              }%
+            }%
+          }%
+          % &
+          \DTLiflastrow{%
+            \\[.5cm]
+          }{%
+            \\
+          }%
+        }%
+      \end{tabular}%
+    }{%
+    }%
+  }%
+%
+\newcommand*{\YAD@committee@tabular}{%
+  \small%
+  \begin{tabular}[t]{>{\itshape}llp{5cm}l}
+    \multicolumn{4}{@{}l}{\bfseries\YAD@translation{committeemembers}}%
+    \\[.25cm]
+    \DTLforeach*{YAD@staffs}{%
+      \YAD@the@staff=YAD@the@staff%
+    }{%
+      %
+      \YAD@display@staff{\YAD@the@staff}%
+    }%
+  \end{tabular}%
+}%
+%    \end{macrocode}
+%
+% \begin{macro}{\YAD@meta}
+%    \begin{macrocode}
+\DeclareRobustCommand*\YAD@meta{\YAD@generic@argument}%
+%    \end{macrocode}
+% \end{macro}
+%
+% Commande où seront stockés les logos (avec écrasement à chaque
+% nouveau logo).
+%    \begin{macrocode}
+\newcommand*\YAD@logo{}%
+%    \end{macrocode}
+%
+% On crée une commande créant des commandes.
+%
+%    \begin{macrocode}
+\newcommand*{\YAD@create@macro}[2][]{%
+%    \end{macrocode}
+% Création d'une commande standard
+%    \begin{macrocode}
+  \ifthenelse{\isempty{#1}}{%
+    \csdef{#2}##1{%
+%    \end{macrocode}
+% Création de la commande affichant le résultat de la commande standard
+%    \begin{macrocode}
+      \csdef{print#2}{%
+        \YAD@reach@file{%
+          \ifthenelse{\isempty{##1}}{%
+            \YAD@generic@argument@translate{#2}%
+          }{%
+            ##1%
+          }%
+        }%
+      }%
+    }%
+  }{%
+  }%
+%    \end{macrocode}
+% Création d'une commande de type email
+%    \begin{macrocode}
+  \ifthenelse{\equal{#1}{email}}{%
+    \csdef{#1#2}##1{%
+%    \end{macrocode}
+% Création de la commande affichant le résultat de la commande
+% de type email
+%    \begin{macrocode}
+      \csdef{print#1#2}{%
+        \YAD@reach@file{%
+          \ifthenelse{\isempty{##1}}{%
+            % \ifbool{YAD@nolink}{%
+            %   \YAD@generic@argument@translate{#1#2}%
+            % }{%
+              \YAD@href{mailto:#1.#2@institute.fr}{\YAD@generic@argument@translate{#1#2}}%
+            % }%
+          }{%
+            % \ifbool{YAD@nolink}{%
+            %   \YAD@nolinkurl{##1}%
+            % }{%
+              \YAD@href{mailto:##1}{\YAD@nolinkurl{##1}}%
+            % }%
+          }%
+        }%
+      }%
+    }%
+  }{%
+  }%
+%    \end{macrocode}
+% Création d'une commande de type URL
+%    \begin{macrocode}
+  \ifthenelse{\equal{#1}{url}}{%
+    \csdef{#1#2}##1{%
+%    \end{macrocode}
+% Création de la commande affichant le résultat de type URL
+%    \begin{macrocode}
+      \csdef{print#1#2}{%
+        \YAD@reach@file{%
+          \ifthenelse{\isempty{##1}}{%
+            % \ifbool{YAD@nolink}{%
+            %   \YAD@generic@argument@translate{#1#2}%
+            % }{%
+              \YAD@url{%
+                \YAD@generic@argument@translate{#1#2}%
+              }%
+            % }%
+          }{%
+            % \ifbool{YAD@nolink}{%
+            %   \YAD@nolinkurl{##1}%
+            % }{%
+              \YAD@url{##1}%
+            % }%
+          }%
+        }%
+      }%
+    }%
+  }{%
+  }%
+%    \end{macrocode}
+% Création d'une commande pour une entité (école doctorale,
+% établissement, laboratoire, etc.)
+%    \begin{macrocode}
+  \ifthenelse{\equal{#1}{entite}}{%
+    \expandafter\newcommand\expandafter{\csname #2\endcsname}[2][]{%
+%    \end{macrocode}
+% Création de la commande contenant l'entité.
+%    \begin{macrocode}
+     \csdef{YAD@#2}{##2}%
+     \ifthenelse{\isempty{##2}}{%
+       \YAD@ClassError[no#2]{%
+         Argument obligatoire de \csuse{#2}\space vide%
+       }{%
+         L'argument obligatoire de la commande \csuse{#2}\MessageBreak%
+         est vide (celui-ci doit etre renseigne).%
+       }%
+     }{%
+     }%
+%    \end{macrocode}
+% Création de la commande affichant l'entité.
+%    \begin{macrocode}
+\csdef{print#2}{%
+  \@ifstar{\csuse{YAD@print#2@star}}{\csuse{YAD@print#2@nostar}}%
+}%
+\csdef{YAD@print#2@star}{%
+  \ifthenelse{\isempty{##2}}{%
+    \YAD@reach@file{\YAD@generic@argument@translate{#2}}%
+  }{%
+    \YAD@reach@file{##2}%
+  }%
+}%
+\csdef{YAD@print#2@nostar}{%
+  \let\YAD@texte\relax%
+  \csdef{YAD@texte}{%
+    \ifthenelse{\isempty{##2}}{%
+      \YAD@reach@file{\YAD@generic@argument@translate{#2}}%
+    }{%
+      ##2%
+    }%
+  }%
+  % \boolfalse{YAD@nolink}%
+  \yadsetup{##1}%
+  \ifthenelse{\equal{\cmdKV@YAD@url}{}}{%
+    \ifdraft{%
+      \YAD@reach@file{%
+        \YAD@texte%
+      }%
+    }{%
+      % \ifbool{YAD@nolink}{%
+      \YAD@texte%
+      % }{%
+      %   \YAD@href{www.#2.fr}{\YAD@texte}%
+      % }%
+    }%
+  }{%
+    \ifdraft{%
+      \YAD@reach@file{%
+        \YAD@texte%
+      }%
+    }{%
+      % \ifbool{YAD@nolink}{%
+      %   \YAD@texte%
+      % }{%
+        \YAD@href{\cmdKV@YAD@url}{\YAD@texte}%
+      % }%
+    }%
+  }%
+}%
+%    \end{macrocode}
+% Création de la commande affichant l'adresse de l'entité
+%    \begin{macrocode}
+      \csdef{print#2address}{%
+        \yadsetup{##1}%
+        \ifthenelse{\equal{\cmdKV@YAD@address}{}}{%
+          \YAD@reach@file{\YAD@generic@argument@translate{address#2}}%
+        }{%
+          \YAD@reach@file{\cmdKV@YAD@address}%
+        }%
+        %
+      }%
+%    \end{macrocode}
+% Création de la commande affichant le téléphone de l'entité
+%    \begin{macrocode}
+      \csdef{print#2telephone}{%
+        \yadsetup{##1}%
+        \ifthenelse{\equal{\cmdKV@YAD@telephone}{}}{%
+          \YAD@reach@file{\YAD@generic@argument@translate{telephone#2}}%
+        }{%
+          \YAD@reach@file{\cmdKV@YAD@telephone}%
+        }%
+        %
+      }%
+%    \end{macrocode}
+% Création de la commande affichant le fax de l'entité
+%    \begin{macrocode}
+      \csdef{print#2fax}{%
+        \yadsetup{##1}%
+        \ifthenelse{\equal{\cmdKV@YAD@fax}{}}{%
+          \YAD@reach@file{\YAD@generic@argument@translate{fax#2}}%
+        }{%
+          \YAD@reach@file{\cmdKV@YAD@fax}%
+        }%
+        %
+      }%
+%    \end{macrocode}
+% Création de la commande affichant le résultat de la commande
+% de type email
+%    \begin{macrocode}
+\csdef{print#2email}{%
+  \YAD@reach@file{%
+    \ifthenelse{\equal{\cmdKV@YAD@email}{}}{%
+      % \ifbool{YAD@nolink}{%
+      %   \YAD@generic@argument@translate{#2email}%
+      % }{%
+        \YAD@href{mailto:#2@institute.fr}{\YAD@generic@argument@translate{#2email}}%
+      % }%
+    }{%
+      % \ifbool{YAD@nolink}{%
+      %   \YAD@nolinkurl{\cmdKV@YAD@email}%
+      % }{%
+        \YAD@href{mailto:\cmdKV@YAD@email}{\YAD@nolinkurl{\cmdKV@YAD@email}}%
+      % }%
+    }%
+  }%
+}%
+%    \end{macrocode}
+% Création de la commande affichant le logo de l'entité (sauf si "nologo" est demandé).
+%    \begin{macrocode}
+\ifbool{YAD@nologo}{%
+      }{%
+        \csdef{print#2logo}{%
+% %    \end{macrocode}
+% % Un avertissement est émis si le logo de l'école doctorale est fourni car
+% % celui-ci n'apparaîtra nulle part.
+% %    \begin{macrocode}
+%         \ifthenelse{\equal{#2}{doctoralschool}}{%
+%           \YAD@ClassWarningNoLine{%
+%             Le logo de l'ecole doctorale a ete fourni mais\MessageBreak%
+%             il n'apparaitra nulle part. Le mieux est de le supprimer%
+%           }%
+%         }{%
+%         }%
+        \@ifstar{%
+        \@tempswatrue%
+        \csuse{YAD@starnostar@print#2logo}%
+        }{%
+        \@tempswafalse%
+        \csuse{YAD@starnostar@print#2logo}%
+        }%
+      }%
+      \csdef{YAD@starnostar@print#2logo}{%
+        \yadsetup{url=,nologo=false,##1}%
+        \ifbool{YAD@nologo}{%
+        }{%
+          \ifbool{YAD@logo@before}{%
+            \hspace{\stretch{1}}%
+          }{%
+          }%
+          \renewcommand*\YAD@logo{%
+            \ifthenelse{\equal{\cmdKV@YAD@logo}{}}{%
+              \YAD@reach@file{\YAD@generic@argument@translate{logo#2}}%
+            }{%
+              \YAD@reach@file{%
+                \includegraphics[height=\cmdKV@YAD@logoheight]{\cmdKV@YAD@logo}%
+              }%
+            }%
+          }%
+          \if@tempswa%
+          \else%
+          % \ifbool{YAD@nolink}{%
+          % \YAD@logo%
+          % }{%
+          \ifthenelse{\equal{\cmdKV@YAD@url}{}}{%
+            % \YAD@href{www.#2.fr}{
+            \YAD@logo%
+            % }%
+          }{%
+            \YAD@href{\cmdKV@YAD@url}{\YAD@logo}%
+          }%
+          % }%
+          \fi%
+          \setlength\cmdKV@YAD@logoheight{\YAD@default@logoheight}%
+          \boolfalse{YAD@nologo}
+          \booltrue{YAD@logo@before}%
+        }%
+      }%
+    }%
+  }%
+}{%
+}%
+%    \end{macrocode}
+% Création d'une commande bilingue
+%    \begin{macrocode}
+\ifthenelse{\equal{#1}{bilingue}}{%
+  \ifthenelse{\isnamedefined{#2}}{%
+  }{%
+    \csdef{#2}{}%
+  }%
+  \expandafter\renewcommand\expandafter{\csname #2\endcsname}[2][]{%
+%    \end{macrocode}
+% Création des commandes pour les méta-données du PDF
+%    \begin{macrocode}
+\ifthenelse{\isempty{##1}}{%
+  \csdef{YAD@meta#2}{%
+    ##2%
+  }%
+}{%
+  \csdef{YAD@meta#2}{%
+    ##2 (##1)%
+  }%
+}%
+\ifthenelse{\isempty{##2}}{%
+  \YAD@ClassError[no#2]{%
+    Argument obligatoire de \csuse{#2}\space vide%
+  }{%
+    L'argument obligatoire de la commande \csuse{#2}\MessageBreak%
+    est vide (celui-ci doit etre renseigne).%
+  }%
+}{%
+}%
+\ifthenelse{\equal{#2}{title}}{%
+  \YAD@hypersetup{pdftitle=\YAD@metatitle}%
+}{%
+}%
+\ifundef{\YAD@metasubject}{%
+  \ifundef{\YAD@metaacademicfield}{%
+  }{%
+    \YAD@hypersetup{pdfsubject=\YAD@metaacademicfield}%
+  }%
+}{%
+  \YAD@hypersetup{pdfsubject=\YAD@metasubject}%
+}%
+%    \end{macrocode}
+% Création de la commande affichant le résultat de la commande bilingue
+%    \begin{macrocode}
+\csdef{print#2}{%
+        \YAD@reach@file{%
+          \expandafter\IfLanguageName{\YAD@mainlanguage}{%
+%    \end{macrocode}
+% En langue principale
+%    \begin{macrocode}
+            \ifthenelse{\isempty{##2}}{%
+              \YAD@reach@file{\YAD@generic@argument@translate{#2}}%
+            }{%
+              \YAD@reach@file{##2}%
+            }%
+          }{%
+%    \end{macrocode}
+% En langue secondaire
+%    \begin{macrocode}
+            \ifthenelse{\isempty{##1}}{%
+              \ifbool{YAD@two@titles}{%
+                \YAD@ClassError[no#2]{%
+                  Argument optionnel de \csuse{#2}\space vide%
+                }{%
+                  La commande \csuse{#2}\space a ete utilisee\MessageBreak%
+                  mais avec un argument optionnel vide : celui-ci doit\MessageBreak%
+                  etre soit non vide soit pas utilise%
+                }%
+                \YAD@reach@file{\YAD@generic@argument@translate{#2}}%
+              }{%
+              }%
+            }{%
+              \YAD@reach@file{##1}%
+            }%
+          }%
+        }%
+      }%
+      \ifthenelse{\isempty{##1}}{%
+      }{%
+        \ifthenelse{\equal{#2}{subject}}{%
+        }{%
+          \booltrue{YAD@two@titles}%
+        }%
+      }%
+    }%
+  }{%
+  }%
+}%
+%    \end{macrocode}
+%
+% Définition des commandes des données de la thèse
+%
+%    \begin{macrocode}
+\YAD@create@macro[entite]{pres}
+\YAD@create@macro[entite]{comue}
+\YAD@create@macro[entite]{institute}
+\YAD@create@macro[entite]{coinstitute}
+\YAD@create@macro[entite]{company}
+\YAD@create@macro[entite]{cocompany}
+\YAD@create@macro[entite]{doctoralschool}
+\YAD@create@macro[bilingue]{academicfield}
+\YAD@create@macro[bilingue]{speciality}
+\YAD@create@macro[bilingue]{title}
+\YAD@create@macro[bilingue]{subtitle}
+\YAD@create@macro[bilingue]{subject}
+\YAD@create@macro{disclaimer}
+%    \end{macrocode}
+% Commande définissant le numéro d'ordre de la thèse, tel qu'exigé par certains
+% instituts.
+% \begin{macro}{\ordernumber}
+%    \begin{macrocode}
+\newcommand{\ordernumber}{%
+  \@ifnextchar[{%
+    \YAD@ordernumber@with@argument%
+  }{%
+    \YAD@ordernumber@without@argument%
+  }%]
+}%
+\newcommand{\YAD@ordernumber@with@argument}[1][]{%
+  \csdef{printordernumber}{%
+    \ifthenelse{\isempty{#1}}{%
+      \YAD@reach@file{%
+        \YAD@generic@argument@translate{ordernumber}%
+      }%
+      \YAD@ClassError{%
+        Argument optionnel de \protect\ordernumber\space vide%
+      }{%
+        La commande \protect\ordernumber\space a ete
+        utilisee\MessageBreak%
+        mais avec un argument optionnel vide : celui-ci doit\MessageBreak%
+        etre soit non vide soit pas utilise.%
+      }%
+    }{%
+      #1%
+    }%
+  }%
+}%
+\newcommand{\YAD@ordernumber@without@argument}{%
+  \csdef{printordernumber}{%
+    \hspace{2cm}%
+  }%
+}%
+%    \end{macrocode}
+% \end{macro}
+% Commande définissant l'auteur.
+% \begin{macro}{\author}
+%    \begin{macrocode}
+\renewcommand*{\author}[3][]{%
+  \ifthenelse{\isempty{#2}}{%
+    \newcommand*\YAD@firstname@author{%
+      \YAD@generic@argument@translate{firstname}%
+    }%
+  }{%
+    \newcommand*\YAD@firstname@author{%
+      #2%
+    }%
+  }%
+  \ifthenelse{\isempty{#3}}{%
+    \newcommand*\YAD@lastname@author{%
+      \YAD@generic@argument@translate{lastname}%
+    }%
+  }{%
+    \newcommand*\YAD@lastname@author{%
+      #3%
+    }%
+  }%
+  \YAD@error@firstlastnames@empty{de l'auteur de la these}{#2}{#3}{\author}%
+  \YAD@hypersetup{pdfauthor=\YAD@firstname@author{} \YAD@lastname@author}%
+  \newcommand*\YAD@email@author{%
+    #1%
+  }%
+  \ifthenelse{\isempty{#2}\AND\isempty{#3}}{%
+    \newcommand*{\printauthor}{%
+      \ifdraft{%
+        \YAD@reach@file{%
+          \YAD@generic@argument@translate{firstname}
+          \YAD@generic@argument@translate{lastname}%
+        }%
+      }{%
+        \ifthenelse{\isempty{#1}}{%
+          \YAD@generic@argument@translate{firstname}
+          \YAD@generic@argument@translate{lastname}%
+        }{%
+          \YAD@href{mailto:\YAD@email@author}{%
+            \YAD@generic@argument@translate{firstname}
+            \YAD@generic@argument@translate{lastname}%
+          }%
+        }%
+      }%
+    }%
+  }{%
+    \newcommand*{\printauthor}{%
+      \ifdraft{%
+        \YAD@reach@file{\YAD@firstname@author{} \bsc{\YAD@lastname@author}}%
+      }{%
+        % \ifbool{YAD@nolink}{%
+        % \YAD@firstname@author{} \bsc{\YAD@lastname@author}%
+        % }{%
+        \ifthenelse{\isempty{#1}}{%
+          \YAD@firstname@author{} \bsc{\YAD@lastname@author}%
+        }{%
+          \YAD@href{mailto:\YAD@email@author}{\YAD@firstname@author{} \bsc{\YAD@lastname@author}}%
+        }%
+        % }%
+      }%
+    }%
+  }%
+}%
+%    \end{macrocode}
+% \end{macro}
+%
+%    \begin{macrocode}
+\csdef{YAD@checkdate}#1#2#3#4#5{%
+  \boolfalse{YAD@valid@day}%
+  \boolfalse{YAD@valid@month}%
+  \boolfalse{YAD@valid@year}%
+  %
+  \csxdef{YAD@daydate}{#1}%
+  \csxdef{YAD@monthdate}{#2}%
+  \csxdef{YAD@yeardate}{#3}%
+  % \ifboolexpr{%
+  %   bool {YAD@submitted@work}%
+  %   or bool {YAD@submitted@work@star}%
+  % }{%
+  % }{%
+    \ifboolexpr{%
+      not (test {\IfInteger{\YAD@daydate}})%
+    }{%
+      \YAD@ClassError[nodate]{%
+        Jour de la date de #5 non valide%
+      }{%
+        La commande \string#4{\YAD@daydate}{\YAD@monthdate}{\YAD@yeardate}\space\MessageBreak%
+        n'a pas ete correctement saisie car le\MessageBreak%
+        jour (`\YAD@daydate') n'est pas valide :\MessageBreak%
+        ce doit etre un nombre entier entre 1 et 31.%
+      }%
+    }{%
+      \IfDecimal{\YAD@daydate}{%
+        \csxdef{YAD@daydate}{\number\integerpart}%
+      }{%
+      }%
+      \ifboolexpr{%
+        test {\ifnumless{\YAD@daydate}{1}}%
+        or test {\ifnumgreater{\YAD@daydate}{31}}%
+      }{%
+        \YAD@ClassError[nodate]{%
+          Jour de la date de #5 non valide%
+        }{%
+          La commande \string#4{\YAD@daydate}{\YAD@monthdate}{\YAD@yeardate}\space\MessageBreak%
+          n'a pas ete correctement saisie car le\MessageBreak%
+          numero de jour (`\YAD@daydate') n'est pas valide :\MessageBreak%
+          ce doit etre un nombre entier entre 1 et 31.%
+        }%
+      }{%
+        \global\booltrue{YAD@valid@day}%
+      }%
+    }%
+    % month
+    \ifboolexpr{%
+      not (test {\IfInteger{\YAD@monthdate}})%
+    }{%
+      \YAD@ClassError[nodate]{%
+        Mois de la date de #5 non valide%
+      }{%
+        La commande \string#4{\YAD@daydate}{\YAD@monthdate}{\YAD@yeardate}\space\MessageBreak%
+        n'a pas ete correctement saisie car le\MessageBreak%
+        mois (`\YAD@monthdate') n'est pas valide :\MessageBreak%
+        ce doit etre un nombre entier entre\MessageBreak%
+        1 (janvier) et 12 (decembre).%
+      }%
+    }{%
+      \IfDecimal{\YAD@monthdate}{%
+        \csxdef{YAD@monthdate}{\number\integerpart}%
+      }{%
+      }%
+      \ifboolexpr{%
+        test {\ifnumless{\YAD@monthdate}{1}}%
+        or test {\ifnumgreater{\YAD@monthdate}{12}}%
+      }{%
+        \YAD@ClassError[nodate]{%
+          Mois de la date de #5 non valide%
+        }{%
+          La commande \string#4{\YAD@daydate}{\YAD@monthdate}{\YAD@yeardate}\space\MessageBreak%
+          n'a pas ete correctement saisie car le\MessageBreak%
+          numero de mois (`\YAD@monthdate') n'est pas valide :\MessageBreak%
+          ce doit etre un nombre entier entre\MessageBreak%
+          1 (janvier) et 12 (decembre).%
+        }%
+      }{%
+        \global\booltrue{YAD@valid@month}%
+      }%
+    }%
+    % year
+    \ifboolexpr{%
+      not (test {\IfInteger{\YAD@yeardate}})%
+    }{%
+      \YAD@ClassError[nodate]{%
+        Annee de la date de #5 non valide%
+      }{%
+        La commande \string#4{\YAD@daydate}{\YAD@monthdate}{\YAD@yeardate}\space\MessageBreak%
+        n'a pas ete correctement saisie car l'annee\MessageBreak%
+        (`\YAD@yeardate') n'est pas valide : ce doit etre\MessageBreak%
+        un nombre entier.%
+      }%
+    }{%
+      \global\booltrue{YAD@valid@year}%
+    }%
+  % }%
+}%
+%    \end{macrocode}
+%
+% \begin{macro}{\date}
+%    \begin{macrocode}
+\csdef{date}#1#2#3{%
+  \YAD@checkdate{#1}{#2}{#3}{\date}{soutenance}%
+  \ifboolexpr{%
+      bool {YAD@valid@day}%
+      and bool {YAD@valid@month}%
+      and bool {YAD@valid@year}%
+    }{%
+      \csdef{printdate}{%
+        \formatdate{#1}{#2}{#3}%
+      }%
+    }{%
+      \csdef{printdate}{%
+        \YAD@generic@argument@translate{date}%
+      }%
+    }%
+}%
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\submissiondate}
+%    \begin{macrocode}
+\csdef{submissiondate}#1#2#3{%
+  \YAD@checkdate{#1}{#2}{#3}{\submissiondate}{soumission}%
+  \ifboolexpr{%
+      bool {YAD@valid@day}%
+      and bool {YAD@valid@month}%
+      and bool {YAD@valid@year}%
+    }{%
+      \csdef{printsubmissiondate}{%
+        \formatdate{#1}{#2}{#3}%
+      }%
+    }{%
+      \csdef{printsubmissiondate}{%
+        \YAD@generic@argument@translate{submissiondate}%
+      }%
+    }%
+}%
+%    \end{macrocode}
+% \end{macro}
+%
+%    \begin{macrocode}
+\AtEndDocument{%
+  \YAD@ifemptyorundef{\printdate}{%
+    \ifbool{YAD@nodate}{%
+    }{%
+      \ifboolexpr{%
+        bool {YAD@submitted@work}%
+        or bool {YAD@submitted@work@star}%
+      }{%
+      }{%
+        \YAD@ClassError[nodate]{%
+          Date de soutenance non specifiee%
+        }{%
+          La commande \protect\date\space n'a pas ete utilisee\MessageBreak%
+          (celle-ci est requise).%
+        }%
+      }%
+    }%
+  }{%
+  }%
+}%
+%    \end{macrocode}
+%
+% \begin{macro}{\dedication}
+%    \begin{macrocode}
+\newcommand{\dedication}[1]{%
+  \DTLnewrow{dedications}%
+  \DTLnewdbentry{dedications}{dedication}{#1}%
+}%
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\frontepigraph}
+%    \begin{macrocode}
+\newcommand{\frontepigraph}[3][\YAD@mainlanguage]{%
+  \DTLnewrow{frontepigraphs}%
+  \DTLnewdbentry{frontepigraphs}{epigraphlanguage}{#1}%
+  \DTLnewdbentry{frontepigraphs}{epigraph}{#2}%
+  \DTLnewdbentry{frontepigraphs}{epigraphauthor}{#3}%
+}%
+%    \end{macrocode}
+% \end{macro}
+%
+% Réglage nécessaire sans quoi le titre courant de la nomenclature (si
+% le \Package{nomencl} est chargé) n'apparaît pas
+%    \begin{macrocode}
+\AtEndPreamble{%
+  \@ifpackageloaded{nomencl}{%
+    \let\YAD@ORI@printnomenclature\printnomenclature%
+    \renewcommand{\printnomenclature}{%
+      \cleardoublepage%
+      \sethead[\thepage][][\nomname]{\nomname}{}{\thepage}\headrule%
+      \YAD@ORI@printnomenclature%
+      \pagestyle{preliminary}%
+    }%
+  }{%
+  }%
+}%
+%    \end{macrocode}
+%
+% \begin{macro}{\YAD@setfoot}
+%   Définition d'une commande affichant un texte fixe en bas de page en cas de
+%   version "inprogess(*)" ou "submitted*" de la thèse.
+%    \begin{macrocode}
+\ifboolexpr{%
+  bool {YAD@inprogress@work}%
+  or bool {YAD@inprogress@work@star}%
+}{%
+  \newcommand*{\YAD@setfoot}{%
+    \footrule%
+    \setfoot{}{\textsc{\translate{lbl-inprogressfoottext} \today}}{}%
+  }%
+}{%
+  \ifbool{YAD@submitted@work@star}{%
+    \newcommand*{\YAD@setfoot}{%
+      \footrule%
+      \YAD@ifemptyorundef{\printsubmissiondate}{%
+        \setfoot{}{\textsc{\translate{lbl-submittedfoottext} \today}}{}%
+      }{%
+        \setfoot{}{\textsc{\translate{lbl-submittedfoottext} \printsubmissiondate}}{}%
+      }%
+    }%
+  }{%
+    \newcommand*{\YAD@setfoot}{}%
+  }%
+}%
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pagestyle}
+%   Redéfinition permettant d'éviter de devoir ajouter
+%   \lstinline|\cleardoublepage| avant chaque la commande
+%   \lstinline|\pagestyle| fournie par le package \package{titleps}
+%   (cet ajout est pour l'instant nécessaire pour que les entêtes
+%   aux frontières des chapitres non numérotés ne soient pas
+%   erronés).
+%    \begin{macrocode}
+\xpretocmd{\pagestyle}{\cleardoublepage}{}{}%
+% \xapptocmd{\pagestyle}{\YAD@setfoot}{}{}%
+%    \end{macrocode}
+% \end{macro}
+%
+% Redéfinition de la commande "\tableofcontents" de sorte qu'elle admette un
+% argument optionnel permettant d'afficher une table des matières supplémentaire
+% jusqu'à un niveau donné. Cette commande, qui s'appuie sur le \Package{etoc},
+% est exprimée en les même termes que le \Package{tocvsec2} (désormais non
+% chargé). On lui applique le style de page propre à la partie liminaire du
+% document, notamment début de la prise en compte des chapitres et sections
+% (numérotés ou pas) dans la table des matières. 
+%
+% \begin{macro}{\tableofcontents}
+%    \begin{macrocode}
+        \AfterEndPreamble{%
+          \let\YAD@ORI@tableofcontents\tableofcontents%
+          \let\YAD@ORI@localtableofcontents\localtableofcontents%
+          \renewcommand{\tableofcontents}{%
+            \pagestyle{preliminary}%
+            \booltrue{YAD@tableofcontents@used}%
+            \cleardoublepage%
+            \YAD@phantomsection%
+            % \renewcommand{\contentsname}{\cmdKV@YAD@name}
+            \@ifnextchar[{\tableofcontents@YAD@with@argument}{\tableofcontents@YAD@without@argument}%]
+          }%
+          \newcommand\tableofcontents@YAD@without@argument{%
+            \YAD@globalstyle
+            \YAD@computenumwidths\relax%
+            \etoctableofcontents%
+            \etocsetnexttocdepth{\YAD@tocdepth}%
+            \let\cmdKV@YAD@depth\YAD@tocdepth%
+            \let\cmdKV@YAD@name\contentsname%
+            \YAD@localstyle % pour les local TOCs qui suivent
+          }%
+          \newcommand\tableofcontents@YAD@with@argument[1][]{%
+            \yadsetup{#1}%
+            \@ifundefined {Etoc@\cmdKV@YAD@depth @@}
+            {%
+              \YAD@ClassWarningNoLine{%
+                La valeur (`\cmdKV@YAD@depth') passee a la cle `depth'\MessageBreak%
+                en argument de la commande \string\tableofcontents\space n'est pas\MessageBreak%
+                un des niveaux de sectionnement connus :\MessageBreak%
+                `part', `chapter', `section', `subsection',\MessageBreak%
+                `subsubsection', `paragraph', `subparagraph', `none' et `all'.\MessageBreak%
+                Le niveau `\YAD@tocdepth' va etre utilise a la place%
+              }%
+              \let\cmdKV@YAD@depth\YAD@tocdepth
+            }{%
+            }%
+            \YAD@globalstyle
+            \etocsetnexttocdepth{\cmdKV@YAD@depth}%
+            \YAD@computenumwidths\relax% note: a effet global
+            \etocsetnexttocdepth{\cmdKV@YAD@depth}% on doit le répéter, car c'est un truc à un coup seulement
+            \etoctableofcontents%
+            \etocsettocdepth{\YAD@tocdepth}%
+            \let\cmdKV@YAD@depth\YAD@tocdepth%
+            \let\cmdKV@YAD@name\contentsname%
+            \YAD@localstyle % pour les local TOCs qui suivent
+          }%
+        }%
+%    \end{macrocode}
+% \end{macro}
+%
+% On crée la macro "\YAD@setsecnumdepth", analogue à "\@setseccntt@c" du \Package{tocvsec2}, qui fixe
+% la valeur du compteur "secnumdepth" selon l'argument donné sous la forme du
+% nom d'une commande de sectionnement
+%    \begin{macrocode}
+        \newcommand{\YAD@setsecnumdepth}[1]{%
+        \newif\if@YAD@knownsect%
+        \ifthenelse{\equal{#1}{none}}{%
+        \setcounter{secnumdepth}{-10}%
+        \@YAD@knownsecttrue%
+        }{%
+        }%
+        \ifthenelse{\equal{#1}{part}}{%
+        \setcounter{secnumdepth}{-1}%
+        \@YAD@knownsecttrue%
+        }{%
+        }%
+        \ifthenelse{\equal{#1}{chapter}}{%
+        \setcounter{secnumdepth}{0}%
+        \@YAD@knownsecttrue%
+        }{%
+        }%
+        \ifthenelse{\equal{#1}{section}}{%
+        \setcounter{secnumdepth}{1}%
+        \@YAD@knownsecttrue%
+        }{%
+        }%
+        \ifthenelse{\equal{#1}{subsection}}{%
+        \setcounter{secnumdepth}{2}%
+        \@YAD@knownsecttrue%
+        }{%
+        }%
+        \ifthenelse{\equal{#1}{subsubsection}}{%
+        \setcounter{secnumdepth}{3}%
+        \@YAD@knownsecttrue%
+        }{%
+        }%
+        \ifthenelse{\equal{#1}{paragraph}}{%
+        \setcounter{secnumdepth}{4}%
+        \@YAD@knownsecttrue%
+        }{%
+        }%
+        \ifthenelse{\equal{#1}{subparagraph}}{%
+        \setcounter{secnumdepth}{5}%
+        \@YAD@knownsecttrue%
+        }{%
+        }%
+        \ifthenelse{\equal{#1}{all}}{%
+        \setcounter{secnumdepth}{100}%
+        \@YAD@knownsecttrue%
+        }{%
+        }%
+        \if@YAD@knownsect%
+        \else%
+        \setcounter{secnumdepth}{3}%
+        \YAD@ClassWarningNoLine{%
+        La valeur (`\YAD@secnumdepth') passee a la cle `secnumdepth'\MessageBreak%
+        en argument de la commande \string\documentclass\space n'est
+        pas\MessageBreak%
+        un des niveaux de sectionnement connus (`part', `chapter',\MessageBreak%
+        `section', `subsection', `subsubsection', `paragraph',\MessageBreak%
+        `subparagraph', `none' et `all').\MessageBreak%
+        Le niveau `subsection' va etre utilise\MessageBreak%
+        a la place%
+        }%
+        \fi%
+        }
+%    \end{macrocode}
+%
+% Globalement dans le document, la table des matières et la
+% numérotation des paragraphes vont jusqu'aux sous-sections
+%    \begin{macrocode}
+        \etocsettocdepth{\YAD@tocdepth}%
+        \AtBeginDocument{%
+        % \yadsetup{#1}%
+        \YAD@setsecnumdepth{\YAD@secnumdepth}%
+        }
+        % \renewcommand{\setcounter}[2]{}%
+        %
+%    \end{macrocode}
+%
+% Définition des styles de pages (basées sur le \Package{titleps})
+%
+% \begin{macro}{\YAD@chapter@header}
+% Définition de titres courants
+%    \begin{macrocode}
+\newcommand*{\YAD@chapter@header}{%
+  \ifboolexpr{
+    (test {\ifnumcomp{\value{secnumdepth}}{>}{-1}} or (not bool
+    {YAD@nonnumbered@chapter})) and test {\ifnumcomp{\value{chapter}}{>}{0}}
+  }{%
+    \MakeUppercase\chaptername{}\ \thechapter.
+  }{%
+  }%
+  \chaptertitle%
+}%
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\YAD@section@header}
+%    \begin{macrocode}
+\newcommand*{\YAD@section@header}{%
+  \ifboolexpr{
+    (test {\ifnumcomp{\value{secnumdepth}}{>}{0}} or (not bool
+    {YAD@nonnumbered@section})) and test {\ifnumcomp{\value{chapter}}{>}{0}}
+  }{%
+    \thesection.
+  }{%
+  }%
+  \sectiontitle%
+}%
+%    \end{macrocode}
+% \end{macro}
+% Par défaut, au début du document rien n'est numéroté et les chapitres ne
+% débutent pas par des tables des matières locales. 
+%    \begin{macrocode}
+  \AtBeginDocument{%
+    \setcounter{secnumdepth}{-10}%
+    \frontmatter%
+    \boolfalse{YAD@localtocs}%
+  }%
+%    \end{macrocode}
+% Définition du style de page des titres
+%    \begin{macrocode}
+\newpagestyle{titles}[]{%
+%    \end{macrocode}
+% Au début du document, donc à partir de sa ou ses pages de titre,
+% aucun élément de structuration n'est numéroté ni ne figure dans la
+% table des matières
+%    \begin{macrocode}
+  % \settocdepth{none}%
+  \setcounter{secnumdepth}{-10}%
+  \ifdraft{%
+    \newgeometry{centering,nomarginpar,bottom=1cm,top=1cm,headheight=\YAD@max@logoheight,margin=0.5cm,tmargin=\YAD@max@logoheight+1cm}%
+  }{%
+    \newgeometry{centering,nomarginpar,bottom=1cm,top=1cm,headheight=\YAD@max@logoheight,hmargin=2cm,includeall}%
+  }%
+  \sethead[]%
+  []%
+  []%
+  {%
+    \ifdef{\printpreslogo}{%
+      \printpreslogo%
+    }{%
+    }%
+    \ifdef{\printcomuelogo}{%
+      \printcomuelogo%
+    }{%
+    }%
+    \ifdef{\printinstitutelogo}{%
+      \printinstitutelogo%
+    }{%
+    }%
+    \ifdef{\printcoinstitutelogo}{%
+      \printcoinstitutelogo%
+    }{%
+    }%
+    \ifdef{\printcompanylogo}{%
+      \printcompanylogo%
+    }{%
+    }%
+  }%
+  {}%
+  {}%
+  \setfootrule{0pt}%
+  \setfoot{}{}{}%
+}%
+%    \end{macrocode}
+%
+% Définition du style de page de la partie pré-préliminaire:
+% géométrie restaurée mais toujours pas de titres courants
+%    \begin{macrocode}
+\newpagestyle{prepreliminary}[]{%
+%    \end{macrocode}
+% Dans la partie pré-préliminaire, aucun élément de structuration n'est
+% numéroté, les titres courants sont absents et la profondeur de la table des
+% matières est fixée à son niveau par défaut (sous-sections)
+%    \begin{macrocode}
+  \setcounter{secnumdepth}{-10}%
+  \YAD@setfoot%
+}%
+%    \end{macrocode}
+% Définition du style de page de la partie préliminaire: début
+% de l'insertion des titres courants
+%    \begin{macrocode}
+\newpagestyle{preliminary}[]{%
+  \sethead[\thepage]%
+  []%
+  [\YAD@chapter@header]%
+  {%
+    \ifthenelse{%
+      \equal{\sectiontitle}{}%
+    }{%
+      \YAD@chapter@header%
+    }{%
+      \YAD@section@header%
+    }%
+  }%
+  {}%
+  {\thepage}%
+  \headrule%
+%    \end{macrocode}
+% Dans la partie préliminaire, aucun élément de structuration n'est
+% numéroté et la profondeur de la table des matières est fixée à son
+% niveau par défaut (sous-sections)
+%    \begin{macrocode}
+  \setcounter{secnumdepth}{-10}%
+  \YAD@setfoot%
+}%
+%    \end{macrocode}
+% Définition du style de page de la partie liminaire
+%    \begin{macrocode}
+\newpagestyle{ordinary}[]{%
+  \sethead[\thepage]%
+  []%
+  [\YAD@chapter@header]%
+  {%
+    \ifthenelse{%
+      \equal{\sectiontitle}{}%
+    }{%
+      \YAD@chapter@header%
+    }{%
+      \YAD@section@header%
+    }%
+  }%
+  {}%
+  {\thepage}%
+  \headrule%
+%    \end{macrocode}
+% Dans la partie liminaire, aucun élément de structuration n'est
+% numéroté et la profondeur de la table des matières est fixée à son
+% niveau par défaut (sous-sections)
+%    \begin{macrocode}
+  \setcounter{secnumdepth}{-10}%
+  \YAD@setfoot%
+}%
+%    \end{macrocode}
+% Définition du style de page de la partie principale
+%    \begin{macrocode}
+\newpagestyle{mainmatter}[]{%
+  \ifthenelse{\equal{\YAD@interligne}{single}}{%
+    \singlespacing%
+  }{%
+    \ifthenelse{\equal{\YAD@interligne}{double}}{%
+      \doublespacing%
+    }{%
+      \onehalfspacing%
+    }%
+  }%
+  \sethead[\thepage]%
+  []%
+  [\YAD@chapter@header]%
+  {%
+    \ifthenelse{%
+      \equal{\sectiontitle}{}%
+    }{%
+      \YAD@chapter@header%
+    }{%
+      \YAD@section@header%
+    }%
+  }%
+  {}%
+  {\thepage}%
+  \headrule%
+%    \end{macrocode}
+% Dans la partie principale, la profondeur de la table des matières
+% est fixée à son niveau par défaut (sous-sections).
+%    \begin{macrocode}
+  \YAD@setsecnumdepth{\YAD@secnumdepth}%
+  \YAD@setfoot%
+}%
+%    \end{macrocode}
+% Extension de la commande "\mainmatter" de sorte qu'elle applique le style de
+% page "mainmatter" et que les chapitres qui s'y trouvent débutent
+% automatiquement par des tables des matières locales.
+%    \begin{macrocode}
+\xapptocmd{\mainmatter}{%
+  \booltrue{YAD@mainmatter@used}%
+  \ifbool{YAD@localtocs@classoption}%
+  {%
+    \booltrue{YAD@localtocs}%
+  }{%
+  }
+  \pagestyle{mainmatter}%
+}{}{}%
+%    \end{macrocode}
+% Vérification, en fin de document, de l'usage de la commande "\mainmatter" et
+% émission d'une erreur si ça n'est pas le cas.
+%    \begin{macrocode}
+\AtEndDocument{%
+  \ifboolexpr{%
+    bool {YAD@mainmatter@used}%
+  }{%
+  }{%
+    \YAD@ClassError*{%
+      Commande \protect\mainmatter\space non utilisee%
+    }{%
+      La commande \protect\mainmatter\space introduisant la partie principale
+      du document\MessageBreak%
+      n'a pas ete utilisee. Celle-ci est requise.%
+    }%
+  }%
+}%
+%    \end{macrocode}
+% Définition du style de page de la partie annexe
+%    \begin{macrocode}
+\newpagestyle{appendix}[]{%
+  \singlespacing%
+  \sethead[\thepage]%
+  []%
+  [%
+  \ifthenelse{%
+    \value{secnumdepth}>-1
+    \and
+    \value{chapter}>0
+  }{%
+    \MakeUppercase\appendixname{} \thechapter.\
+  }{%
+  }
+  \chaptertitle%
+  ]%
+  {%
+    \ifthenelse{%
+      \equal{\sectiontitle}{}%
+    }{%
+      \ifthenelse{%
+        \value{secnumdepth}>-1
+        \and
+        \value{chapter}>0
+      }{%
+        \MakeUppercase\appendixname{} \thechapter.\
+      }{%
+      }
+      \chaptertitle%
+    }{%
+      \YAD@section@header%
+    }%
+  }%
+  {}%
+  {\thepage}%
+  \headrule%
+%    \end{macrocode}
+% Dans la partie annexe, la numérotation des paragraphes est fixée à
+% son niveau par défaut (sous-sections)
+%    \begin{macrocode}
+  \YAD@phantomsection%
+  \YAD@setsecnumdepth{\YAD@secnumdepth}%
+  \YAD@bookmarksetup{startatroot}%
+  \YAD@setfoot%
+}%
+%    \end{macrocode}
+% Extension de la commande "\appendix" de sorte qu'elle applique le style de
+% page "appendix".
+% \begin{macro}{\appendix}
+%    \begin{macrocode}
+\xapptocmd{\appendix}{%
+  \pagestyle{appendix}%
+}{}{}%
+%    \end{macrocode}
+% \end{macro}
+% Définition du style de page de la partie biblio
+%    \begin{macrocode}
+\newpagestyle{biblio}[]{%
+%    \end{macrocode}
+% Dans la partie biblio, aucun élément de structuration n'est
+% numéroté
+%    \begin{macrocode}
+  \setcounter{secnumdepth}{-10}%
+%    \end{macrocode}
+%    \begin{macrocode}
+  \singlespacing%
+  \sethead[\thepage]%
+  []%
+  [\YAD@chapter@header]%
+  {\YAD@chapter@header}%
+  {}%
+  {\thepage}%
+  \headrule%
+%    \end{macrocode}
+% On demande que la bibliographie apparaisse au plus haut niveau des
+% signets
+%    \begin{macrocode}
+  \cleardoublepage%
+  \YAD@phantomsection%
+  \YAD@bookmarksetup{startatroot}%
+  \YAD@setfoot%
+}%
+%    \end{macrocode}
+% Définition du style de page de la partie finale
+%    \begin{macrocode}
+\newpagestyle{backmatter}[]{%
+  \singlespacing%
+  \sethead[\thepage]%
+  []%
+  [\YAD@chapter@header]%
+  {%
+    \ifthenelse{%
+      \equal{\sectiontitle}{}%
+    }{%
+      \YAD@chapter@header%
+    }{%
+      \YAD@section@header%
+    }%
+  }%
+  {}%
+  {\thepage}%
+  \headrule%
+%    \end{macrocode}
+% Dans la partie finale, rien n'est numéroté
+%    \begin{macrocode}
+  \YAD@phantomsection%
+  \setcounter{secnumdepth}{-10}%
+  \YAD@bookmarksetup{startatroot}%
+  \YAD@setfoot%
+}%
+%    \end{macrocode}
+% Extension de la commande "\backmatter" de sorte qu'elle applique le style de
+% page "backmatter" et que les chapitres qui s'y trouvent ne débutent pas par
+% des tables des matières locales.
+% \begin{macro}{\backmatter}
+%    \begin{macrocode}
+\xapptocmd{\backmatter}{%
+  \pagestyle{backmatter}%
+  \boolfalse{YAD@localtocs}%
+}{}{}%
+%    \end{macrocode}
+% \end{macro}
+% Définition du style de page de la table des matières
+%    \begin{macrocode}
+\newpagestyle{contents}[]{%
+  \cleardoublepage%
+  \YAD@phantomsection%
+  \YAD@bookmarksetup{startatroot}%
+  \singlespacing%
+  \sethead[\thepage]%
+  []%
+  [\cmdKV@YAD@name]%
+  {\cmdKV@YAD@name}%
+  {}%
+  {\thepage}%
+  \headrule%
+%    \end{macrocode}
+% Dans la partie glossaire, aucun élément de structuration n'est
+% numéroté
+%    \begin{macrocode}
+  \setcounter{secnumdepth}{-10}%
+  \YAD@setfoot%
+}%
+%    \end{macrocode}
+% Définition du style de page de la partie glossaire
+%    \begin{macrocode}
+\newpagestyle{glossaire}[]{%
+  \cleardoublepage%
+  \YAD@phantomsection%
+  \YAD@bookmarksetup{startatroot}%
+  \singlespacing%
+  \sethead[\thepage]%
+  []%
+  [\YAD@chapter@header]%
+  {\YAD@chapter@header}%
+  {}%
+  {\thepage}%
+  \headrule%
+%    \end{macrocode}
+% Dans la partie glossaire, aucun élément de structuration n'est
+% numéroté
+%    \begin{macrocode}
+  \setcounter{secnumdepth}{-10}%
+  \YAD@setfoot%
+}%
+%    \end{macrocode}
+% Définition du style de page de la partie index
+%    \begin{macrocode}
+\newpagestyle{index}[]{%
+  \singlespacing%
+  \sethead[\thepage]%
+  []%
+  [\YAD@chapter@header]%
+  {\YAD@chapter@header}%
+  {}%
+  {\thepage}%
+  \headrule%
+%    \end{macrocode}
+% Dans la partie index, aucun élément de structuration n'est
+% numéroté
+%    \begin{macrocode}
+  \setcounter{secnumdepth}{-10}%
+  \cleardoublepage%
+  \YAD@phantomsection%
+  \YAD@setsecnumdepth{\YAD@secnumdepth}%
+  \YAD@bookmarksetup{startatroot}%
+  \YAD@setfoot%
+}%
+%    \end{macrocode}
+% Définition du style de page de la partie \textquote{4\ieme{} de
+% couverture} (\emph{blub} en anglais).
+%    \begin{macrocode}
+\newpagestyle{backcover}[]{%
+  \singlespacing%
+  \YAD@clearspread%
+  \setlength{\footskip}{35pt}%
+  \setfootrule{0pt}%
+  \setfoot[%
+  \YAD@laboratory@abstract@page%
+  ][][]{}{}{}%
+  \sethead[]%
+  []%
+  []%
+  {}%
+  {}%
+  {}%
+%    \end{macrocode}
+% Dans la partie \textquote{4\ieme{} de couverture}, aucun élément
+% de structuration n'est numéroté
+%    \begin{macrocode}
+  \setcounter{secnumdepth}{-10}%
+}%
+%    \end{macrocode}
+%
+% \begin{macro}{\printlaboratory}
+%    \begin{macrocode}
+\newcommand*{\printlaboratory}[2][]{%
+  \YAD@ifemptyorundef{#2}{%
+    \YAD@reach@file{\YAD@generic@argument@translate{laboratory}}%
+    \ifbool{YAD@nolaboratory}{%
+    }{%
+      \YAD@ClassError[nolaboratory]{%
+        Nom du laboratoire de la these non specifie ou vide%
+      }{%
+        La commande \protect\laboratory\space n'a pas ete utilisee\MessageBreak%
+        (celle-ci est requise) ou son 1er argument est vide\MessageBreak%
+        (celui-ci doit etre renseigne).%
+      }%
+    }%
+  }{%
+    \ifdraft{%
+      \YAD@reach@file{%
+        #2%
+      }%
+    }{%
+      \ifboolexpr{%
+        test {\expandafter\ifstrempty\expandafter{#1}}
+        or %
+        test {\ifdefstring{\YAD@laboratory@nonamelink}{true}}%
+      }{%
+        #2%
+      }{%
+        \YAD@href{#1}{#2}%
+      }%
+    }%
+  }%
+}%
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\printlaboratoryaddress}
+%    \begin{macrocode}
+\newcommand*{\printlaboratoryaddress}[1]{%
+  \ifundef{#1}{%
+    \YAD@reach@file{\YAD@generic@argument@translate{laboratoryaddress}}%
+    \ifbool{YAD@nolaboratoryaddress}{%
+    }{%
+      \YAD@ClassError[nolaboratoryaddress]{%
+        Adresse du laboratoire non specifiee ou vide%
+      }{%
+        La commande \protect\laboratory\space n'a pas ete utilisee\MessageBreak%
+        (celle-ci est requise) ou son 2e argument est vide\MessageBreak%
+        (celui-ci doit etre renseigne).%
+      }%
+    }%
+  }{%
+    \YAD@reach@file{#1}%
+  }%
+}%
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\maketitle}
+% Commande de la page de titre
+%    \begin{macrocode}
+\renewcommand{\maketitle}[1][]{%
+  \booltrue{YAD@maketitle@used}%
+  \yadsetup{#1}
+  \setlength{\fboxsep}{10pt}%
+  \setlength{\YAD@titleboxwidth}{\linewidth-2\fboxsep-2\fboxrule}%
+  \renewcommand*{\do}[1]{%
+%    \end{macrocode}
+% Appel du style de page propre au(x) titre(s)
+%    \begin{macrocode}
+  \pagestyle{titles}%
+%    \end{macrocode}
+% On passe dans la langue choisie en option (en français si rien n'est
+% spécifié).
+%    \begin{macrocode}
+\begingroup%
+\expandafter\selectlanguage\expandafter{##1}%
+% \YAD@ifemptyorundef{\YAD@frametitle@set}{%
+%   \gdef\YAD@frametitle{\cmdKV@YAD@frametitle}%
+% }{%
+%   \gdef\YAD@frametitle{\YAD@frametitle@set}%
+% }%
+  \begin{lrbox}{\YAD@titlebox}
+    \ifthenelse{\equal{\cmdKV@YAD@frametitle}{none}}{%
+    }{%
+      \tcbset{colback=white,boxsep=3pt,boxrule=0.4pt,arc=0mm}%
+      \ifthenelse{\equal{\cmdKV@YAD@frametitle}{shadowbox}}{%
+        \tcbset{enhanced,drop shadow southeast={black,opacity=1}}%
+      }{%
+        \ifthenelse{\equal{\cmdKV@YAD@frametitle}{ovalbox}}{%
+          \tcbset{arc=3mm}%
+        }{%
+          \ifthenelse{\equal{\cmdKV@YAD@frametitle}{fbox}}{%
+          }{%
+            \tcbset{code={\expandafter\pgfkeysalsofrom{\cmdKV@YAD@frametitle}}}%
+          }%
+        }%
+      }%
+      \begin{tcolorbox}
+    }%
+    \noindent%
+    \begin{minipage}{\linewidth-2\fboxsep-2\fboxrule}
+      \onehalfspacing%
+      \noindent%
+      \ifthenelse{\equal{\cmdKV@YAD@frametitle}{none}}{%
+      }{%
+        \ifYAD@hdr
+        \YAD@translation{thesistitle-hdr}%
+        \else%
+        \YAD@translation{thesistitle}%
+        \fi
+      }%
+      \par%
+      \centering%
+      \Huge\bfseries%
+      \YAD@ifemptyorundef{\printtitle}{%
+        \YAD@generic@argument@translate{title}%
+        \ifbool{YAD@notitle}{%
+        }{%
+          \YAD@ClassError[notitle]{%
+            Titre de la these non specifie%
+          }{%
+            La commande \protect\title\space n'a pas ete utilisee\MessageBreak%
+            (celle-ci est requise) ou son argument obligatoire est vide\MessageBreak%
+            (celui-ci doit etre renseigne).%
+          }%
+        }%
+      }{%
+        \printtitle%
+      }%
+      \ifundef{\printsubtitle}{%
+      }{%
+        \ifdraft{}{\vspace*{\stretch{.15}}}%
+        % \vspace*{\stretch{.15}}%
+        \par%
+        \centering%
+        \Large\printsubtitle%
+      }%
+    \end{minipage}%
+    \ifthenelse{\equal{\cmdKV@YAD@frametitle}{none}}{%
+    }{%
+    \end{tcolorbox}%
+  }%
+  \end{lrbox}%
+  \settototalheight{\YAD@titleboxheight}{\YAD@titlebox}%
+  \setlength{\YAD@otherboxheight}{0.3\paperheight-\YAD@titleboxheight}%
+%    \end{macrocode}
+% On met en page les divers éléments des titres.
+%    \begin{macrocode}
+  %\YAD@astuce@expressioncle%
+  \noindent%
+  \ifcsdef{printordernumber}{%
+%    \end{macrocode}
+% S'il est demandé, le numéro d'ordre de la thèse n'est affiché que sur la
+% 1\iere{} page du document : 1\iere{} de couverture s'il y a, page de titre en
+% langue principale sinon.
+%    \begin{macrocode}
+  \newcommand\YAD@printedordernumber{%
+    \itshape%
+    \sffamily%
+    \YAD@translation{ordernumber}%
+    \IfLanguageName{french}{%
+      \FBcolonspace%
+    }{%
+    }: \printordernumber%
+  }
+  \ifdraft{}{\vspace*{\stretch{1}}}%
+  \ifboolexpr{%
+    bool {YAD@cover@page}%
+    or (bool {YAD@nofrontcover} and test {\IfLanguageName{\YAD@mainlanguage}})%
+  }{%
+    % \vspace*{\stretch{1}}%
+    \raggedleft{%
+      \YAD@printedordernumber%
+    }%
+  }{%
+  }%
+  \ifdraft{}{\vspace*{\stretch{.5}}}%
+  % \vspace*{\stretch{.5}}%
+  \par%
+}{%
+}%
+    % \begin{minipage}[c][\YAD@otherboxheight][c]{\YAD@titleboxwidth}
+    %   \ifdraft{}{\vspace*{\stretch{.25}}}%
+    \begin{center}
+      \ifbool{YAD@noinstitute}{%
+      }{%
+        \YAD@ifemptyorundef{\printinstitute}{%
+          \YAD@generic@argument@translate{institute}%
+          \YAD@ClassError[noinstitute]{%
+            Institut de la these non specifie%
+          }{%
+            La commande \protect\institute\space n'a pas ete
+            utilisee\MessageBreak%
+            (celle-ci est requise) ou son argument obligatoire est
+            vide\MessageBreak%
+            (celui-ci doit etre renseigne).%
+          }%
+        }{%
+          \YAD@translation{institute} \textbf{\textsc{\Large\printinstitute}}%
+        }%
+        \ifundef{\printcoinstitute}{%
+        }{%
+          \ifdraft{}{\vspace*{\stretch{.5}}}%
+          % \vspace*{\stretch{.5}}%
+          \par%
+          \YAD@translation{coinstitute} \textbf{\textsc{\Large\printcoinstitute}}%
+        }%
+      }%
+      \ifundef{\printcompany}{%
+      }{%
+        \ifdraft{}{\vspace*{\stretch{.5}}}%
+        % \vspace*{\stretch{.5}}%
+        \par%
+        \YAD@translation{company} \textbf{\textsc{\Large\printcompany}}%
+      }%
+      \ifbool{YAD@nodoctoralschool}{%
+      }{%
+        \ifdraft{}{\vspace*{\stretch{1.5}}}%
+        % \vspace*{\stretch{1.5}}%
+        \par%
+        \YAD@translation{doctoralschool}
+        \YAD@ifemptyorundef{\printdoctoralschool}{%
+          \YAD@generic@argument@translate{doctoralschool}%
+          \YAD@ClassError[nodoctoralschool]{%
+            Ecole doctorale de la these non specifiee%
+          }{%
+            la commande \protect\doctoralschool\space n'a pas ete
+            utilisee\MessageBreak%
+            (celle-ci est requise) ou son argument obligatoire est
+            vide\MessageBreak%
+            (celui-ci doit etre renseigne).%
+          }%
+        }{%
+          \textbf{\printdoctoralschool}%
+        }%
+      }%
+      \ifbool{YAD@nolaboratory}{%
+      }{%
+        \ifdraft{}{\vspace*{\stretch{.5}}}%
+        % \vspace*{\stretch{.5}}%
+        \par%
+        \YAD@translation{universitydepartment}
+        \ifdefstring{\YAD@main@laboratory@nonamelink}{true}{%
+          \textbf{\printlaboratory{\YAD@main@laboratory@name}}%
+        }{%
+          \textbf{\printlaboratory[\YAD@main@laboratory@url]{\YAD@main@laboratory@name}}%
+        }%
+      }%
+      \ifdraft{}{\vspace*{\stretch{1.5}}}%
+      % \vspace*{\stretch{1.5}}%
+      \par%
+      {\large%
+        \ifYAD@hdr%
+        \YAD@translation{thesisdefendedby-hdr} %
+        \else%
+        \YAD@translation{thesisdefendedby} %
+        \fi%
+        \YAD@ifemptyorundef{\printauthor}{%
+          \YAD@generic@argument@translate{author}%
+          \ifbool{YAD@noauthor}{%
+          }{%
+            \YAD@ClassError[noauthor]{%
+              Auteur de la these non specifie%
+            }{%
+              La commande \protect\author\space n'a pas ete utilisee (celle-ci
+              est requise)\MessageBreak%
+              ou ses 2 premiers arguments obligatoires sont vides\MessageBreak%
+              (ceux-ci doivent etre renseignes).%
+            }%
+          }%
+        }{%
+          \textbf{\printauthor}%
+        }%
+        \ifboolexpr{%
+          bool {YAD@submitted@work}%
+          or bool {YAD@submitted@work@star}%
+        }{%
+          % \ifdraft{}{\vspace*{\stretch{1}}}%
+          % \par%
+          % \YAD@translation{estimateddefensedate}
+          % \YAD@ifemptyorundef{\printdate}{%
+          %   \YAD@generic@argument@translate{date}%
+          % }{%
+          %   \textbf{\printdate}%
+          % }%
+        }{%
+          \ifbool{YAD@nodate}{%
+          }{%
+            \ifdraft{}{\vspace*{\stretch{1}}}%
+            % \vspace*{\stretch{1}}%
+            \par%
+            \YAD@translation{defendedon}
+            \YAD@ifemptyorundef{\printdate}{%
+              \YAD@generic@argument@translate{date}%
+            }{%
+              \textbf{\printdate}%
+            }%
+          }%
+        }%
+      }%
+      \ifYAD@hdr%
+      \else%
+      \ifbool{YAD@noaim}{%
+      }{%
+        \ifdraft{}{\vspace*{\stretch{1}}}%
+        % \vspace*{\stretch{1}}%
+        \par%
+        \YAD@translation{aim}%
+        \ifundef{\printinstitute}{%
+          \YAD@generic@argument@translate{institute}%
+        }{%
+          \printinstitute*%
+        }%
+        \ifundef{\printcoinstitute}{%
+        }{%
+          \YAD@translation{aimand}%
+          \printcoinstitute*%
+        }%
+      }%
+      \fi%
+      \ifdraft{}{\vspace*{\stretch{1}}}%
+      % \vspace*{\stretch{1}}%
+      \ifbool{YAD@noacademicfield}{%
+      }{%
+        \par%
+        \large%
+        \YAD@translation{academicfield}
+        %
+        \YAD@ifemptyorundef{\printacademicfield}{%
+          \YAD@generic@argument@translate{academicfield}%
+          \ifbool{YAD@noacademicfield}{%
+          }{%
+            \YAD@ClassError[noacademicfield]{%
+              Champ disciplinaire de la these non specifie%
+            }{%
+              La commande \protect\academicfield\space n'a pas ete utilisee
+              (celle-ci est requise)\MessageBreak%
+              ou son argument obligatoire est vide (celui-ci doit etre renseigne).%
+            }%
+          }%
+        }{%
+          \textbf{\printacademicfield}%
+        }%
+        \ifundef{\printspeciality}{%
+        }{%
+          \ifdraft{}{\vspace*{\stretch{.5}}}%
+          % \vspace*{\stretch{.5}}%
+          \par%
+          \large%
+          \YAD@translation{speciality} \textbf{\printspeciality}%
+        }%
+      }
+    \end{center}
+  % \end{minipage}%
+  \vspace*{\stretch{1}}%
+  \begin{center}
+    \ifthenelse{\equal{\cmdKV@YAD@frametitle}{none}}{%
+    }{%
+      \ifdraft{}{\vspace*{\stretch{2}}}%
+      % \vspace*{\stretch{2}}%
+    }{%
+      \ifdraft{}{\vspace*{\stretch{.25}}}%
+      % \vspace*{\stretch{.25}}%
+    }%
+    \usebox{\YAD@titlebox}%
+    % \ifdraft{}{\vspace*{\stretch{2}}}%
+    \vspace*{\stretch{2}}%
+  \end{center}
+%    \end{macrocode}
+% Affichage des directeurs de thèse et du jury
+%    \begin{macrocode}
+  \noindent%
+  \begin{minipage}[c][\YAD@otherboxheight][c]{\YAD@titleboxwidth}
+    \YAD@supervisors@tabular%
+    \par%
+    \ifboolexpr{%
+      bool {YAD@submitted@work}%
+      or bool {YAD@submitted@work@star}%
+    }{%
+      \vphantom{\YAD@committee@tabular}%
+    }{%
+      \YAD@committee@tabular%
+    }%
+    \ifdraft{}{\vspace*{\stretch{.1}}}%
+    % \vspace*{\stretch{.1}}%
+  \end{minipage}%
+  \ifthenelse{\equal{\cmdKV@YAD@frametitle}{none}}{%
+  }{%
+    % \ifdraft{}{\vspace*{\stretch{2}}}%
+    \vspace*{\stretch{2}}%
+  }{%
+  }%
+  \ifbool{YAD@supervisor@specified}{%
+  }{%
+    \ifbool{YAD@nosupervisor}{%
+    }{%
+      \YAD@ClassError*[nosupervisor]{%
+        Directeur de these non specifie%
+      }{%
+        La commande \protect\supervisor\space n'a pas ete utilisee\MessageBreak%
+        (celle-ci est requise) ou ses arguments obligatoires sont
+        vides\MessageBreak%
+        (ceux-ci doivent etre renseignes).%
+      }%
+    }%
+  }%
+%    \end{macrocode}
+% On repasse à la langue par défaut
+%    \begin{macrocode}
+\endgroup%
+%    \end{macrocode}
+% Maintenant que la 1\iere{} page de titre (celle de 1\iere{} de couverture)
+% a été créée, le booléen "YAD@cover@page" est faux.
+%    \begin{macrocode}
+\boolfalse{YAD@cover@page}%
+%    \end{macrocode}
+% On génère une page de titre dans la langue principale puis dans la
+% langue secondaire.
+%    \begin{macrocode}
+}%
+\expandafter\docsvlist{\YAD@mainlanguage}%
+\ifbool{YAD@two@titles}{%
+  \booltrue{YAD@second@title}%
+  \ifthenelse{\equal{\YAD@mainlanguage}{french}}{%
+    \ifbool{YAD@nofrontcover}{%
+      \docsvlist{english}%
+    }{%
+      \docsvlist{french,english}%
+    }%
+  }{%
+    \ifbool{YAD@nofrontcover}{%
+      \docsvlist{french}%
+    }{%
+      \docsvlist{english,french}%
+    }%
+  }%
+}{%
+}%
+\ifthenelse{\equal{\cmdKV@YAD@frametitle}{shadowbox}}{%
+  \let\tcb@shadow@prepare=\origtcb@shadow@prepare%
+}{%
+}%
+\expandafter\selectlanguage\expandafter{\YAD@mainlanguage}%
+\restoregeometry%
+\pagestyle{preliminary}%
+}%
+%    \end{macrocode}
+% \end{macro}
+%
+% Si la commande "\maketitle" n'a pas été utilisée, une erreur est émise.
+%    \begin{macrocode}
+\AtEndDocument{%
+  \ifboolexpr{%
+    bool {YAD@maketitle@used}%
+    or bool {YAD@nomaketitle}%
+  }{%
+  }{%
+    \YAD@ClassError*[nomaketitle]{%
+      Commande \protect\maketitle\space non utilisee%
+    }{%
+      La commande \protect\maketitle\space n'a pas ete utilisee. Celle-ci est
+      requise.%
+    }%
+  }%
+}%
+%    \end{macrocode}
+%
+% Définition de "\keywords".
+% \begin{macro}{\keywords}
+% \begin{macro}{\YAD@metakeywords}
+%    \begin{macrocode}
+\newcommand{\keywords}[2]{%
+  \booltrue{YAD@keywords@used}%
+  \def\YAD@mainkeywords{#1}%
+  \def\YAD@secondarykeywords{#2}%
+  \ifthenelse{\isempty{#1}}{%
+  }{%
+    \ifthenelse{\isempty{#2}}{%
+      \YAD@hypersetup{pdfkeywords={#1}}%
+    }{%
+      \YAD@hypersetup{pdfkeywords={#1} ({#2})}%
+    }%
+  }%
+}%
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\printkeywords}
+% Définition de "\printkeywords".
+%    \begin{macrocode}
+\csdef{printkeywords}{%
+  \expandafter\IfLanguageName{\YAD@mainlanguage}{%
+    \YAD@ifemptyorundef{\YAD@mainkeywords}{%
+      \YAD@generic@argument@translate{keywords}%
+    }{%
+      \MakeTextLowercase{\YAD@mainkeywords}%
+    }%
+  }{%
+    \YAD@ifemptyorundef{\YAD@secondarykeywords}{%
+      \YAD@generic@argument@translate{keywords}%
+    }{%
+      \MakeTextLowercase{\YAD@secondarykeywords}%
+    }%
+  }%
+}%
+%    \end{macrocode}
+% Émission d'une erreur si les mots clés sont vides ou non spécifiés.
+%    \begin{macrocode}
+\AtEndDocument{%
+  \notbool{YAD@keywords@used}{%
+    \ifbool{YAD@nokeywords}{%
+    }{%
+      \YAD@ClassError[nokeywords]{%
+        Commande \protect\keywords\space non utilisee%
+      }{%
+        La commande \protect\keywords\space n'a pas ete utilisee. Celle-ci est
+        requise.%
+      }%
+    }%
+  }{%
+    \ifdefempty{\YAD@mainkeywords}{%
+      \YAD@ClassError[nokeywords]{%
+        Mots cles dans la langue principale non specifies%
+      }{%
+        Les mots cles dans la langue principale\MessageBreak%
+        (1er argument de la commande \protect\keywords) n'ont\MessageBreak%
+        pas ete specifies. Ceux-ci sont requis.%
+      }%
+    }{%
+      \csdef{YAD@metakeywords}{\YAD@mainkeywords} }%
+    \ifdefempty{\YAD@secondarykeywords}{%
+      \YAD@ClassError[nokeywords]{%
+        Mots cles dans la langue secondaire non specifies%
+      }{%
+        Les mots cles dans la langue secondaire\MessageBreak%
+        (2e argument de la commande \protect\keywords) n'ont\MessageBreak%
+        pas ete specifies. Ceux-ci sont requis.%
+      }%
+    }{%
+      \csdef{YAD@metakeywords}{\YAD@mainkeywords (\YAD@secondarykeywords)}%
+    }%
+  }%
+}%
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\makekeywords}
+% Commande de la page de mots clés.
+%    \begin{macrocode}
+\csdef{makekeywords}{%
+  \@ifstar{\@tempswatrue\csuse{YAD@starnostar@makekeywords}}{\@tempswafalse\csuse{YAD@starnostar@makekeywords}}%
+}%
+\csdef{YAD@starnostar@makekeywords}{%
+  \cleardoublepage%
+%    \end{macrocode}
+% Appel du style de page propre à la partie préliminaire
+%    \begin{macrocode}
+  \pagestyle{prepreliminary}%
+  % \YAD@astuce@expressioncle%
+  \if@tempswa%
+  \else%
+  \vspace*{\stretch{1}}%
+  \fi
+  \begin{flushleft}
+    \begin{description}
+      \renewcommand*{\do}[1]{%
+        \expandafter\selectlanguage\expandafter{##1}%
+      \item[\YAD@translation{keywords}\IfLanguageName{french}{\,}{}:]
+        \YAD@ifemptyorundef{\printkeywords}{%
+          \YAD@generic@argument@translate{keywords}%
+        }{%
+          \printkeywords%
+        }%
+      }%
+      \expandafter\docsvlist{\YAD@mainlanguage}%
+      \ifthenelse{\equal{\YAD@mainlanguage}{french}}{%
+        \docsvlist{english}%
+      }{%
+        \docsvlist{french}%
+      }%
+    \end{description}
+  \end{flushleft}
+  \if@tempswa%
+  \else%
+  \vspace*{\stretch{1}}%
+  \fi
+  \expandafter\selectlanguage\expandafter{\YAD@mainlanguage}%
+  \pagestyle{preliminary}%
+}%
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\laboratory}
+%    \begin{macrocode}
+\DTLnewdb{laboratories}%
+\newcommand{\laboratory}[3][]{%
+  \DTLnewrow{laboratories}%
+  \dtlexpandnewvalue%
+  \yadsetup{%
+    #1%
+  }%
+  \DTLnewdbentry{laboratories}{name}{#2}%
+  \DTLnewdbentry{laboratories}{address}{#3}%
+  \ifbool{YAD@nolaboratory}{%
+  }{%
+    \ifthenelse{\isempty{#2}}{%
+      \YAD@ClassError[nolaboratory]{%
+        Nom du laboratoire de la these vide%
+      }{%
+        Le 1er argument obligatoire de la commande
+        \protect\laboratory\MessageBreak%
+        est vide (celui-ci doit etre renseigne).%
+      }%
+    }{%
+    }%
+    \ifthenelse{\isempty{#3}}{%
+      \YAD@ClassError[nolaboratory]{%
+        Adresse du laboratoire de la these vide%
+      }{%
+        Le 2e argument obligatoire de la commande
+        \protect\laboratory\MessageBreak%
+        est vide (celui-ci doit etre renseigne).%
+      }%
+    }{%
+    }%
+  }%
+  \YAD@ifemptyorundef{\cmdKV@YAD@logo}{%
+    \DTLnewdbentry{laboratories}{logo}{}%
+  }{%
+    \DTLnewdbentry{laboratories}{logo}{\cmdKV@YAD@logo}%
+  }%
+  \YAD@ifemptyorundef{\cmdKV@YAD@logoheight}{%
+    \DTLnewdbentry{laboratories}{logoheight}{\YAD@default@logoheight}%
+  }{%
+    \DTLnewdbentry{laboratories}{logoheight}{\cmdKV@YAD@logoheight}%
+  }%
+  \YAD@ifemptyorundef{\cmdKV@YAD@url}{%
+    \DTLnewdbentry{laboratories}{url}{}%
+  }{%
+    \DTLnewdbentry{laboratories}{url}{\cmdKV@YAD@url}%
+  }%
+  \YAD@ifemptyorundef{\cmdKV@YAD@telephone}{%
+    \DTLnewdbentry{laboratories}{telephone}{}%
+  }{%
+    \DTLnewdbentry{laboratories}{telephone}{\cmdKV@YAD@telephone}%
+  }%
+  \YAD@ifemptyorundef{\cmdKV@YAD@fax}{%
+    \DTLnewdbentry{laboratories}{fax}{}%
+  }{%
+    \DTLnewdbentry{laboratories}{fax}{\cmdKV@YAD@fax}%
+  }%
+  \YAD@ifemptyorundef{\cmdKV@YAD@email}{%
+    \DTLnewdbentry{laboratories}{email}{}%
+  }{%
+    \DTLnewdbentry{laboratories}{email}{\cmdKV@YAD@email}%
+  }%
+  \ifbool{YAD@nonamelink}{%
+    \DTLnewdbentry{laboratories}{nonamelink}{true}%
+  }{%
+    \DTLnewdbentry{laboratories}{nonamelink}{false}%
+  }%
+  %
+  \DTLgetvalue{\YAD@main@laboratory@name}{laboratories}{1}{\dtlcolumnindex{laboratories}{name}}%
+  \DTLgetvalue{\YAD@main@laboratory@address}{laboratories}{1}{\dtlcolumnindex{laboratories}{address}}%
+  \DTLgetvalue{\YAD@main@laboratory@url}{laboratories}{1}{\dtlcolumnindex{laboratories}{url}}%
+  \DTLgetvalue{\YAD@main@laboratory@nonamelink}{laboratories}{1}{\dtlcolumnindex{laboratories}{nonamelink}}%
+  %
+  \boolfalse{YAD@nonamelink}%
+  \yadsetup{%
+    logo=,%
+    url=,%
+    telephone=,%
+    fax=,%
+    email=,%
+  }%
+}%
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\makelaboratory}
+% Commande créant la page dédiée au laboratoire.
+%    \begin{macrocode}
+\csdef{makelaboratory}{%
+  \@ifstar{\@tempswatrue\csuse{YAD@starnostar@makelaboratory}}{\@tempswafalse\csuse{YAD@starnostar@makelaboratory}}%
+}%
+\csdef{YAD@starnostar@makelaboratory}{%
+  \cleardoublepage%
+%    \end{macrocode}
+% Appel du style de page propre à la partie préliminaire
+%    \begin{macrocode}
+  \pagestyle{prepreliminary}%
+% \YAD@astuce@expressioncle%
+  \if@tempswa%
+  \else%
+  \vspace*{\stretch{1}}%
+  \fi
+  \noindent%
+  \ifthenelse{\DTLrowcount{laboratories}>1}{%
+    \ifYAD@hdr
+    \YAD@translation{prepared-at-pl-hdr}%
+    \else%
+    \YAD@translation{prepared-at-pl}%
+    \fi
+  }{%
+    \ifYAD@hdr
+    \YAD@translation{prepared-at-hdr}%
+    \else%
+    \YAD@translation{prepared-at}%
+    \fi
+  }%
+  \if@tempswa%
+  \vspace*{\baselineskip}%
+  \else%
+  \vspace*{\stretch{.25}}%
+  \fi
+  \par%
+  \ifthenelse{\DTLrowcount{laboratories}<1}{%
+    \begin{minipage}[t]{\linewidth-\parindent}
+      \YAD@reach@file{\YAD@generic@argument@translate{laboratory}}%
+      \\[.1cm]
+      \YAD@reach@file{\YAD@generic@argument@translate{laboratoryaddress}}%
+    \end{minipage}%
+  }{%
+  }%
+  \DTLforeach*{laboratories}{%
+    \YAD@laboratory@name=name,%
+    \YAD@laboratory@address=address,%
+    \YAD@laboratory@url=url,%
+    \YAD@laboratory@logo=logo,%
+    \YAD@laboratory@logoheight=logoheight,%
+    \YAD@laboratory@telephone=telephone,%
+    \YAD@laboratory@fax=fax,%
+    \YAD@laboratory@email=email,%
+    \YAD@laboratory@nonamelink=nonamelink%
+  }{%
+    \ifthenelse{\DTLiseq{\YAD@laboratory@logo}{}}{%
+      \setlength{\YAD@laboratory@width}{\linewidth-\parindent}%
+    }{%
+      \setlength{\YAD@laboratory@width}{.625\linewidth-\parindent}%
+    }%
+    \begin{minipage}[t]{\YAD@laboratory@width}
+      \textbf{\printlaboratory[\YAD@laboratory@url]{\YAD@laboratory@name}}%
+      \\[.1cm]
+      \printlaboratoryaddress{\YAD@laboratory@address}%
+      \\[.25cm]
+      \begin{tabular}{@{}ll}
+        \ifthenelse{\DTLiseq{\YAD@laboratory@telephone}{}}{%
+        }{%
+          \YAD@translation{phone} & \YAD@reach@file{\YAD@laboratory@telephone} \\%
+        }%
+        \ifthenelse{\DTLiseq{\YAD@laboratory@fax}{}}{%
+        }{%
+          \YAD@translation{fax}  & \YAD@reach@file{\YAD@laboratory@fax}      \\%
+        }%
+        \ifthenelse{\DTLiseq{\YAD@laboratory@email}{}}{%
+        }{%
+          \YAD@translation{email} &
+          \YAD@reach@file{%
+            \YAD@ifemptyorundef{\YAD@laboratory@email}{%
+              % \ifbool{YAD@nolink}{%
+                \YAD@generic@argument@translate{laboratoryemail}%
+              % }{%
+              %   \YAD@href{mailto:laboratory@institute.fr}{\YAD@generic@argument@translate{laboratoryemail}}%
+              % }%
+            }{%
+              % \ifbool{YAD@nolink}{%
+              %   \YAD@nolinkurl{\YAD@laboratory@email}%
+              % }{%
+                \YAD@href{mailto:\YAD@laboratory@email}{\YAD@nolinkurl{\YAD@laboratory@email}}%
+              % }%
+            }%
+          }%
+          \\%
+        }%
+        \ifthenelse{\DTLiseq{\YAD@laboratory@url}{}}{%
+        }{%
+          \YAD@translation{website} & % \printlaboratoryurl
+          \def\YAD@texteurl{%
+            \YAD@ifemptyorundef{\YAD@laboratory@url}{%
+              \YAD@reach@file{\YAD@generic@argument@translate{urllaboratory}}%
+            }{%
+              \YAD@reach@file{\YAD@nolinkurl{\YAD@laboratory@url}}%
+            }%
+          }%
+          \YAD@ifemptyorundef{\YAD@laboratory@url}{%
+            % \ifbool{YAD@nolink}{%
+            %   \YAD@texteurl%
+            % }{%
+              % \YAD@href{www.laboratory.fr}{%
+                \YAD@texteurl%
+              % }%
+            % }%
+          }{%
+            \ifdraft{%
+              \YAD@texteurl%
+            }{%
+              % \ifbool{YAD@nolink}{%
+              %   \YAD@nolinkurl{\YAD@laboratory@url}%
+              % }{%
+                \YAD@url{%
+                  \YAD@laboratory@url%
+                }%
+              % }%
+            }%
+          }%
+        }%
+      \end{tabular}%
+    \end{minipage}%
+    \ifthenelse{\DTLiseq{\YAD@laboratory@logo}{}}{%
+    }{%
+      \hspace{\stretch{1}}%
+      \begin{minipage}[t]{.325\linewidth}
+        \def\YAD@logo{%
+          \YAD@ifemptyorundef{\YAD@laboratory@logo}{%
+            \YAD@reach@file{\YAD@generic@argument@translate{logolaboratory}}%
+          }{%
+            \YAD@reach@file{%
+              \includegraphics[height=\YAD@laboratory@logoheight,valign=t]{\YAD@laboratory@logo}%
+            }%
+          }%
+        }%
+        \if@tempswa%
+        \else%
+        \hspace{\stretch{1}}%
+        % \ifbool{YAD@nolink}{%
+        %   \YAD@logo%
+        % }{%
+          \YAD@ifemptyorundef{\YAD@laboratory@url}{%
+            % \YAD@href{www.laboratory.fr}{%
+              \YAD@logo%
+            % }%
+          }{%
+            \YAD@href{\YAD@laboratory@url}{\YAD@logo}%
+          }%
+        % }%
+        \fi%
+      \end{minipage}%
+    }%
+    \par%
+    \DTLiflastrow{%
+      \vspace*{\stretch{1}}%
+    }{%
+      \if@tempswa%
+      \vspace*{\baselineskip}%
+      \else%
+      \vspace*{\stretch{.25}}%
+      \fi%
+    }%
+    \setlength\cmdKV@YAD@logoheight{\YAD@default@logoheight}%
+  }%
+  \ifthenelse{\DTLrowcount{laboratories}<1}{%
+    \vspace*{\stretch{1}}%
+  }{%
+  }%
+  \pagestyle{preliminary}%
+}%
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{environment}{abstract}
+%   Environnement de résumé créant un chapitre non numéroté avec un
+%   intitulé par défaut pouvant être modifié au moyen d'un argument
+%   optionnel. Une seconde occurrence de cet environnement est
+%   similaire, mais compose le contenu dans la langue secondaire.
+%    \begin{macrocode}
+\csgdef{YAD@abstractname@mainlanguage}{\abstractname}%
+\csgdef{YAD@abstractname@secondarylanguage}{\abstractname}%
+%
+\newcommand{\YAD@abstract}[1]{%
+  \ifstrempty{#1}{%
+    \ifnumcomp{\value{YAD@abstracts}}{>}{0}{%
+      \global\booltrue{YAD@second@abstract@empty}%
+    }{%
+      \global\booltrue{YAD@main@abstract@empty}%
+    }%
+  }{%
+    \begin{minipage}{\linewidth}
+      \small%
+      #1%
+    \end{minipage}%
+  }%
+}
+\newenvironment{abstract}[1][\abstractname]{%
+  \global\booltrue{YAD@abstract@used}%
+  \ifnumcomp{\value{YAD@abstracts}}{>}{0}{%
+    \global\booltrue{YAD@second@abstract@used}%
+    \csgdef{YAD@abstractname@secondarylanguage}{#1}%
+    \lrbox{\YAD@abstract@secondarylanguage}%
+    \expandafter\selectlanguage\expandafter{\YAD@secondarylanguage}%
+  }{%
+    \csgdef{YAD@abstractname@mainlanguage}{#1}%
+    \lrbox{\YAD@abstract@mainlanguage}%
+  }%
+  \Collect@Body\YAD@abstract%
+}{%
+  \endlrbox%
+  \stepcounter{YAD@abstracts}%
+}%
+%    \end{macrocode}
+% \end{environment}
+%
+% \begin{macro}{\YAD@abstract@page}
+%   Éléments communs aux pages de résumé(s) et de 4\ieme{} de couverture.
+%    \begin{macrocode}
+\newcommand{\YAD@abstract@page}{%
+  \bgroup%
+  \enlargethispage{2cm}%
+  \setlength{\parindent}{0pt}%
+  \begin{minipage}{\linewidth}
+    \small%
+    {%
+      \bfseries%
+      \YAD@ifemptyorundef{\printtitle}{%
+        \YAD@generic@argument@translate{title}%
+      }{%
+        \textsc{\printtitle}%
+      }%
+      \ifundef{\printsubtitle}{%
+      }{%
+        \newline%
+        \printsubtitle%
+      }%
+      \vspace{-.5em}%
+      \vspace{\z@}%
+      \begin{center}%
+        \YAD@abstractname@mainlanguage%
+      \end{center}%
+    }%
+    \par%
+    \ifboolexpr{%
+      bool {YAD@abstract@used}%
+      and not bool {YAD@main@abstract@empty}%
+    }{%
+      \usebox{\YAD@abstract@mainlanguage}%
+    }{%
+      \YAD@generic@argument@translate{abstract}%
+    }%
+    \ifundef{\printkeywords}{%
+    }{%
+      \vspace{.5em}%
+      \begin{description}
+      \item[\YAD@translation{keywords}\IfLanguageName{french}{\ifundef{\Fcolonspace}{\FBcolonspace}{\Fcolonspace}}{}:]
+        \printkeywords
+      \end{description}
+    }%
+  \end{minipage}%
+  \ifbool{YAD@second@abstract@used}{%
+    \expandafter\selectlanguage\expandafter{\YAD@secondarylanguage}%
+    \\[.5\baselineskip]%
+    \YAD@abstract@page@rule%
+    \\[.5\baselineskip]%
+    \begin{minipage}{\linewidth}
+      \small%
+      {%
+        \bfseries%
+        \YAD@ifemptyorundef{\printtitle}{%
+          \YAD@generic@argument@translate{title}%
+        }{%
+          \textsc{\printtitle}%
+        }%
+        \ifundef{\printsubtitle}{%
+        }{%
+          \newline%
+          \printsubtitle%
+        }%
+        \vspace{-.5em}%
+        \vspace{\z@}%
+        \begin{center}%
+          \YAD@abstractname@secondarylanguage%
+        \end{center}%
+      }%
+      \par%
+      \ifboolexpr{%
+        bool {YAD@abstract@used}%
+        and not bool {YAD@second@abstract@empty}%
+      }{%
+        \usebox{\YAD@abstract@secondarylanguage}%
+      }{%
+        \YAD@generic@argument@translate{abstract}%
+      }%
+      \ifundef{\printkeywords}{%
+      }{%
+        \vspace{.5em}%
+        \begin{description}
+        \item[\YAD@translation{keywords}\IfLanguageName{french}{\ifundef{\Fcolonspace}{\FBcolonspace}{\Fcolonspace}}{}:]
+          \textnormal{\printkeywords}
+        \end{description}
+      }%
+    \end{minipage}%
+  }{%
+  }%
+    \\[.5\baselineskip]%
+  \YAD@abstract@page@rule%
+  % \par%
+  % \textbf{\printlaboratory*}%
+  % \\%
+  % \let\YAD@ORI@doublebackslash\\%
+  % \renewcommand{\\}{ -- }%
+  % \printlaboratoryaddress%
+  % \let\\\YAD@ORI@doublebackslash%
+  \egroup%
+}%
+% \newcommand{\YAD@abstract@page}{%
+%   \ifbool{YAD@inprogress@work}{%
+%     \setfootrule{0pt}%
+%     \setfoot{}{}{}%
+%   }{%
+%   }%
+%   \bgroup%
+%   \enlargethispage{2cm}%
+%   \setlength{\parindent}{0pt}%
+%   \usebox{\YAD@titleabstractkeywords@mainlanguage}%
+%   \par%
+%   \usebox{\YAD@titleabstractkeywords@secondarylanguage}%
+%   \par%
+%   \textbf{\printlaboratory*}%
+%   \\%
+%   \let\YAD@ORI@doublebackslash\\%
+%   \renewcommand{\\}{ -- }%
+%   \printlaboratoryaddress%
+%   \let\\\YAD@ORI@doublebackslash%
+%   \egroup%
+% }%
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\YAD@laboratory@abstract@page}
+%    \begin{macrocode}
+\newcommand{\YAD@laboratory@abstract@page}{%
+  \ifnumgreater{\cmdKV@YAD@numlaboratories}{0}{%
+    \begin{minipage}[t]{\linewidth}
+      \let\YAD@ORI@doublebackslash\\%
+      \renewcommand{\\}{ -- }%
+      \DTLforeach*{laboratories}{%
+        \YAD@laboratory@name=name,%
+        \YAD@laboratory@address=address%
+      }{%
+        \DTLiffirstrow{}{\newline}%
+        \textbf{\printlaboratory{\YAD@laboratory@name}}%
+        \ifnumgreater{\cmdKV@YAD@numlaboratories}{1}{%
+          \\%
+        }{%
+          \newline%
+        }%
+        \printlaboratoryaddress{\YAD@laboratory@address}%
+        \ifthenelse{\value{DTLrowi}=\cmdKV@YAD@numlaboratories}{\dtlbreak}{}%
+      }%
+    \end{minipage}%
+  }{%
+  }%
+}%
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\makeabstract}
+% Page de présentation (résumés)
+%    \begin{macrocode}
+\newcommand{\makeabstract}{%
+  \ifbool{YAD@nomakeabstract}{%
+  }{%
+    \YAD@alarm@noabstract%
+  }%
+  \pagestyle{preliminary}%
+  \YAD@phantomsection%
+  \addcontentsline{toc}{chapter}{\abstractname}%
+  \booltrue{YAD@makeabstract@used}%
+  \bgroup%
+  \addtolength{\footskip}{6pt minus 6pt}%
+  \setfootrule{0pt}%
+  \setfoot[][%
+  \ifboolexpr{%
+    bool {YAD@inprogress@work}%
+    or bool {YAD@inprogress@work@star}%
+  }{%
+    \textsc{\translate{lbl-inprogressfoottext} \today}%
+  }{%
+    \ifboolexpr{%
+      bool {YAD@submitted@work@star}%
+    }{%
+      \textsc{\translate{lbl-submittedfoottext} \today}%
+    }{%
+    }%
+  }%
+  ][]{%
+    % \medskip\par%
+    \YAD@laboratory@abstract@page%
+  }{}{}%
+  \cleardoublepage%
+  \renewcommand{\YAD@chapter@header}{\abstractname}%
+  \renewcommand{\YAD@section@header}{\abstractname}%
+  \YAD@abstract@page%
+  \cleardoublepage%
+  \egroup%
+%    \end{macrocode}
+% La commande de production de la page de résumés émet les erreurs signalant
+% l'absence de nom ou d'adresse du laboratoire. Il est donc inutile de les
+% émettre à nouveau par la suite donc on met à \enquote{vrai} les booléens qui
+% désactivent l'émission de ces erreurs.
+%    \begin{macrocode}
+  \YAD@nolaboratorytrue%
+  \YAD@nolaboratoryaddresstrue%
+}%
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\YAD@abstract@page@rule}
+%   Style des filets horizontaux sur la page de présentation.
+%    \begin{macrocode}
+\newcommand{\YAD@abstract@page@rule}[1][black]{\bgroup\color{#1}\noindent\rule[2pt]{\linewidth}{2pt}\egroup}
+%    \end{macrocode}
+% \end{macro}
+%
+% Si la commande "\makeabstract" n'a pas été utilisée, une erreur est émise.
+%    \begin{macrocode}
+\AtEndDocument{%
+  \ifbool{YAD@makeabstract@used}{%
+  }{%
+    \ifbool{YAD@nomakeabstract}{%
+    }{%
+      \YAD@ClassError*[nomakeabstract]{%
+        Commande \protect\makeabstract\space non utilisee%
+      }{%
+        La commande \protect\makeabstract\space n'a pas ete\MessageBreak%
+        utilisee. Celle-ci est requise.%
+      }%
+    }%
+  }%
+}%
+%    \end{macrocode}
+%
+% Si l'environnement "abstract" n'a pas été utilisé, une erreur est émise.
+%    \begin{macrocode}
+\newcommand{\YAD@alarm@noabstract}{%
+  \ifbool{YAD@abstract@used}{%
+    \ifbool{YAD@main@abstract@empty}{%
+      \ifnumcomp{\value{YAD@abstracts}}{>}{1}{%
+        \YAD@ClassError[noabstract]{%
+          Contenu de la 1re occurrence de `abstract' vide%
+        }{%
+          La 1re occurrence de l'environnement `abstract' a ete
+          utilisee\MessageBreak%
+          avec un contenu vide.  Un contenu non vide est requis.%
+        }%
+      }{%
+        \YAD@ClassError[noabstract]{%
+          Contenu de l'environnement `abstract' vide%
+        }{%
+          L'environnement `abstract' a ete utilise mais avec un contenu
+          vide.\MessageBreak%
+          Un contenu non vide est requis.%
+        }%
+      }%
+    }{%
+    }%
+    \ifbool{YAD@second@abstract@empty}{%
+      \YAD@ClassError[noabstract]{%
+        Contenu de la 2e occurrence de `abstract' vide%
+      }{%
+        La 2e occurrence de l'environnement `abstract' a ete
+        utilisee\MessageBreak%
+        avec un contenu vide.  Un contenu non vide est requis.%
+      }%
+    }{%
+    }%
+  }{%
+    \ifbool{YAD@noabstract}{%
+    }{%
+      \YAD@ClassError[noabstract]{%
+        Environnement `abstract' non utilise%
+      }{%
+        L'environnement `abstract' n'a pas ete utilise. Celui-ci est requis.%
+      }%
+    }%
+  }%
+}%
+%    \end{macrocode}
+%
+% \begin{macro}{\makebackcover}
+% Éléments communs de la page de présentation
+%    \begin{macrocode}
+\newcommand{\makebackcover}{%
+  \YAD@alarm@noabstract%
+  \cleardoublepage%
+  \pagestyle{backcover}%
+  \YAD@abstract@page%
+}%
+%    \end{macrocode}
+% \end{macro}
+%
+% Commande de la page de la ou des dédicaces
+% \begin{macro}{\makededications}
+%    \begin{macrocode}
+        \csdef{makededications}{%
+        \@ifstar{\@tempswatrue\csuse{YAD@starnostar@makededications}}{\@tempswafalse\csuse{YAD@starnostar@makededications}}%
+        }%
+        \csdef{YAD@starnostar@makededications}{%
+        \pagestyle{prepreliminary}%
+        \cleardoublepage%
+        \if@tempswa%
+        \else%
+        \vspace*{\stretch{2}}%
+        \fi%
+        \DTLifdbempty{dedications}{%
+        \YAD@generic@argument@translate{dedications}%
+        \YAD@ClassError{%
+        \protect\makededications\space utilisee/\protect\dedication\space non
+        utilisee%
+        }{%
+        La commande \protect\makededications\space a ete utilisee mais la
+        commande \protect\dedication,\MessageBreak%
+        permettant de preparer des dedicaces, n'a pas ete utilisee.%
+        }%
+        }{%
+%    \end{macrocode}
+% Appel du style de page propre à la partie préliminaire
+%    \begin{macrocode}
+        \begin{flushright}
+          \itshape%
+          \DTLforeach*{dedications}{%
+            \YAD@dedication=dedication%
+          }{%
+            \YAD@ifemptyorundef{\YAD@dedication}{%
+              \YAD@generic@argument@translate{dedication}%
+              \YAD@ClassError{%
+                Dedicace vide%
+              }{%
+                L'argument obligatoire d'une commande \protect\dedication\space est
+                vide\MessageBreak%
+                (celui-ci doit etre renseigne).%
+              }%
+            }{%
+              \YAD@dedication%
+            }%
+            \par%
+            \DTLiflastrow{%
+            }{%
+              \if@tempswa%
+              \vspace*{\baselineskip}%
+              \else%
+              \vspace*{\stretch{1}}%
+              \fi
+            }%
+          }%
+        \end{flushright}
+        }%
+        \if@tempswa%
+        \else%
+        \vspace*{\stretch{2}}%
+        \fi
+        }%
+%    \end{macrocode}
+% \end{macro}
+%
+% Commande de la page de la ou des dédicaces
+% \begin{macro}{\makefrontepigraphs}
+%    \begin{macrocode}
+\csdef{makefrontepigraphs}{%
+  \@ifstar{\@tempswatrue\csuse{YAD@starnostar@makefrontepigraphs}}{\@tempswafalse\csuse{YAD@starnostar@makefrontepigraphs}}%
+}%
+\csdef{YAD@starnostar@makefrontepigraphs}{%
+  \patchcmd{\epigraphs}{\qitemlabel}{\qitemlabel\itemsep=1.5\baselineskip}{}{}%
+  \cleardoublepage%
+  \if@tempswa%
+  \else%
+  \vspace*{\stretch{2}}%
+  \fi
+  \DTLifdbempty{frontepigraphs}{%
+    \setlength\epigraphrule{0pt}%
+    \begin{epigraphs}
+      \qitem{\YAD@generic@argument@translate{epigraphs}}{}%
+    \end{epigraphs}%
+    \YAD@ClassError{%
+      \protect\makefrontepigraphs\space utilisee/\protect\frontepigraph\space
+      non utilisee%
+    }{%
+      La commande \protect\makefrontepigraphs\space a ete utilisee mais la
+      commande\MessageBreak%
+      \protect\frontepigraph, permettant de preparer des epigraphes, n'a pas
+      ete utilisee.%
+    }{%
+    }%
+  }{%
+%    \end{macrocode}
+% Appel du style de page propre à la partie préliminaire
+%    \begin{macrocode}
+    \begin{epigraphs}
+      \DTLforeach*{frontepigraphs}{%
+        \YAD@epigraphlanguage=epigraphlanguage,%
+        \YAD@epigraph=epigraph,%
+        \YAD@epigraphauthor=epigraphauthor%
+      }{%
+        \YAD@ifemptyorundef{\YAD@epigraph}{%
+          \renewcommand{\YAD@epigraph}{%
+            \YAD@generic@argument@translate{epigraph}%
+          }%
+          \YAD@ClassError{%
+            Epigraphe vide%
+          }{%
+            L'argument obligatoire d'une commande \protect\frontepigraph\space
+            est vide\MessageBreak%
+            (celui-ci doit etre renseigne).%
+          }%
+        }{%
+        }%
+        \ifthenelse{\equal{\YAD@mainlanguage}{\YAD@epigraphlanguage}}{%
+          \qitem{\YAD@epigraph}{\YAD@epigraphauthor}%
+        }{%
+          \bgroup%
+          \expandafter\selectlanguage\expandafter{\YAD@epigraphlanguage}%
+          \qitem{\YAD@epigraph}{\YAD@epigraphauthor}%
+          \egroup%
+        }%
+        \DTLiflastrow{%
+        }{%
+          \if@tempswa%
+          % \vspace*{2cm}%
+          \else%
+          % \vspace*{\stretch{1}}%
+          \fi
+        }%
+      }%
+    \end{epigraphs}
+  }%
+  \if@tempswa%
+  \else%
+  \vspace*{\stretch{2}}%
+  \fi
+}%
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{environment}{epigraphspage}
+% Environnement de la page des épigraphes globales à la thèse
+%    \begin{macrocode}
+\newenvironment{epigraphspage}{%
+%    \end{macrocode}
+% Redéfinition locale de la commande d'épigraphe
+%    \begin{macrocode}
+  \patchcmd{\epigraphs}{\qitemlabel}{\qitemlabel\itemsep=1.5\baselineskip}{}{}
+  \cleardoublepage%
+  \vspace*{\stretch{1}}%
+}{%
+  \vspace*{\stretch{1}}%
+}%
+%    \end{macrocode}
+% Appel du style de page propre à la partie préliminaire du
+% document, notamment début de l'insertion des titres courants (on
+% ajoute le style de page "prepreliminary" avant que l'environnement
+% "epigraphspage" ne débute, de sorte que sa portée ne soit pas
+% limitée à cet environnement).
+%    \begin{macrocode}
+\BeforeBeginEnvironment{epigraphspage}{%
+  \pagestyle{prepreliminary}%
+}%
+\AfterEndEnvironment{epigraphspage}{%
+  \pagestyle{preliminary}%
+}%
+%    \end{macrocode}
+% \end{environment}
+%
+%
+%\section{Commandes et styles pour les tables des matières locales}
+%
+% Les commandes et styles suivants, ainsi que toute la machinerie permettant de
+% faire débuter les chapitres par leurs tables des matières locales s'appuient
+% sur le \pkg{etoc} de Jean-François Burnol (qui a aimablement fourni le code
+% suivant). 
+%    \begin{macrocode}
+% it will be easy to globally shift the TOC horizontally if needed
+\def\YAD@leftmargin {0pt}
+\def\YAD@rightmargin {2.55em}% like LaTeX’s \@tocrmarg
+%    \end{macrocode}
+% this is for dotted leaders
+%    \begin{macrocode}
+\newbox\YAD@leaderbox
+\def\YAD@leaderboxwidth {0.7777em}% about like what standard classes do
+%    \end{macrocode}
+% vertical spacing
+%    \begin{macrocode}
+\def\YAD@verysmallvskip {0pt plus .2pt}
+\def\YAD@globalmedvskip {1em plus 1pt}
+\def\YAD@localmedvskip {.25em plus .25pt}
+\def\YAD@bigvskip {2.25em plus 1pt}
+%    \end{macrocode}
+% the ‘‘numwidths’’ for typesetting the numbering of division units.
+% I don’t recall exactly how (and for which fonts) these figures were chosen.
+% They quickly prove too small if using Roman numerals (as do too the book
+% class defaults even though they are a bit larger).
+%    \begin{macrocode}
+\def\YAD@numwidthB {1.5em} % chapter
+\def\YAD@numwidthC {2.278em}% section, I think default is 2.3em
+\def\YAD@numwidthD {3.056em}% analog in standard class is 3.2em
+\def\YAD@numwidthE {3.833em}% analog in standard class is 4.1em
+\def\YAD@numwidthF {4.611em}% analog in standard class is 5em
+\def\YAD@numwidthG {5.389em}% analog in standard class is 6em
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\newcommand\YAD@setlinestyle [2]{% #1= unit, #2= numwidth as macro
+  \etocsetstyle{#1}
+  {\advance\leftskip#2\relax}
+  {%
+    \vskip
+    \YAD@verysmallvskip\relax
+    \leavevmode%
+    {\interlinepenalty\@M
+      \etocifnumbered
+      {%
+        \llap{%
+          \makebox[#2][l]{%
+            \etocnumber%
+          }%
+        }%
+      }{\advance\leftskip-#2\relax}%
+      \etocname
+      \nobreak\leaders \copy\YAD@leaderbox
+      \hfil\makebox[-\parfillskip][r]{\etocpage}%
+      \par }%
+  }
+  {}
+  {\advance\leftskip-#2\relax}%
+}
+%    \end{macrocode}
+%    \begin{macrocode}
+\newcommand\YAD@globalstyle {% encapsule le style pour les global TOCs
+  \etocsettocstyle {%
+    \if@twocolumn
+    \@restonecoltrue
+    \onecolumn
+    \else
+    \@restonecolfalse
+    \fi
+    \parindent\z@
+    \leftskip\z@skip
+    \rightskip\z@skip
+    \setbox\YAD@leaderbox\hbox to \YAD@leaderboxwidth{\hss.\hss}%
+    \chapter *[\cmdKV@YAD@name]{\noindent\kern\YAD@leftmargin\relax % uses "pt"...
+      \cmdKV@YAD@name%
+    }%
+    \rightskip \YAD@rightmargin\relax
+    \parfillskip -\rightskip % or a smaller value if desired
+    \leftskip \YAD@leftmargin \relax%
+  }{%
+    \if@restonecol
+    \twocolumn
+    \fi
+    \cleardoublepage%
+  }%
+  % 
+  \etocsetstyle{part} {} {\addpenalty {-\@highpenalty}%
+    \addvspace \YAD@bigvskip \leavevmode {\large
+      \bfseries % use a group to limit font change
+      \interlinepenalty\@M \etocifnumbered{\etocnumber\hspace{1em}}{}%
+      \etocname \nobreak\hfil\makebox[-\parfillskip][r]{\etocpage}}\par
+    \nobreak } {} {}
+  % 
+  \etocsetstyle{chapter} {\advance\leftskip\YAD@numwidthB\relax} {\addpenalty
+    {-\@highpenalty }%
+    \vskip \YAD@globalmedvskip\relax
+    \leavevmode%
+    {\interlinepenalty\@M \etocifnumbered
+      {\llap{\makebox[\YAD@numwidthB][l]{\bfseries\etocnumber}}}
+      {\advance\leftskip-\YAD@numwidthB\relax}%
+      \bfseries\etocname
+      \nobreak\hfil\makebox[-\parfillskip][r]{\etocpage}\par }%
+    \penalty \@highpenalty } {} {\advance\leftskip-\YAD@numwidthB\relax}
+  % 
+  \YAD@setlinestyle {section}{\YAD@numwidthC}%
+  \YAD@setlinestyle {subsection}{\YAD@numwidthD}%
+  \YAD@setlinestyle {subsubsection}{\YAD@numwidthE}%
+  \YAD@setlinestyle {paragraph}{\YAD@numwidthF}%
+  \YAD@setlinestyle {subparagraph}{\YAD@numwidthG}%
+}
+%    \end{macrocode}
+% style pour les local TOCs
+%    \begin{macrocode}
+\let\YAD@addcontentsline\addcontentsline
+\newcommand\YAD@localstyle {%
+  \etocsettocstyle {%
+    \if@twocolumn
+    \@restonecoltrue
+    \onecolumn
+    \else
+    \@restonecolfalse
+    \fi%
+    \setbox\YAD@leaderbox\hbox to \YAD@leaderboxwidth{\hss.\hss}%
+    \parindent\z@
+    \dimen@ 2.25em % soon to be \leftskip
+%    \end{macrocode}
+% We don't want the "section" containing the localtoc to be itself in (global
+% or local) TOCs. For this, it is enough to \enquote{relax} "\addcontentsline".
+%    \begin{macrocode}
+    \renewcommand\addcontentsline[3]{}%
+    \section *{\kern\dimen@ % \dimen@ works here by sheer luck
+      % \contentsname%
+      % \@mkboth{\MakeUppercase\contentsname}{\MakeUppercase\contentsname}%
+      \large\textbf{\translate{lbl-localtocname}}%
+    }%
+%    \end{macrocode}
+% We restore the original behavior of "\addcontentsline".
+%    \begin{macrocode}
+    \let\addcontentsline\YAD@addcontentsline
+    \parskip \z@skip
+%    \end{macrocode}
+%
+% Because of some changes in \Package{parskip}, we need to adjust the vertical
+% space before the first rule of the local TOCs, depending on this package is
+% loaded or not (cf. definition of ×\YAD@vspace@before@localtoc@rule× above).
+%
+%    \begin{macrocode}
+    \vspace{\YAD@vspace@before@localtoc@rule}% somewhat ad hoc
+    \leftskip 2.25em \rightskip 4.5em \advance\rightskip-\YAD@rightmargin\relax
+    \leavevmode\leaders\hrule\@height\p@\hfill\kern\z@\par
+    \rightskip 4.5em
+    \parfillskip -\YAD@rightmargin\relax%
+  }{%
+    \nobreak\vskip-.5\baselineskip
+    \leavevmode\leaders\hrule\@height\p@\hfill\kern\z@\par
+    \bigskip \if@restonecol \twocolumn \fi
+  }
+  % % 
+  \etocsetstyle{section} {%
+    \advance\leftskip\YAD@numwidthC\relax%
+  } {%
+    \addpenalty
+    \@secpenalty \etociffirst{}{\addvspace{\YAD@localmedvskip}}%
+    \leavevmode {%
+      \interlinepenalty\@M \bfseries%
+      \etocifnumbered
+      {%
+        \llap{%
+          \makebox[\YAD@numwidthC][l]{\etocnumber}%
+        }%
+      }
+      {%
+        \advance\leftskip-\YAD@numwidthC%
+      }%
+      \etocname\nobreak\hfil\makebox[-\parfillskip][r]{\etocpage}\par%
+    }%
+    \penalty \@highpenalty%
+  }
+  {} {%
+    \advance\leftskip-\YAD@numwidthC\relax%
+  }
+  % % 
+  \YAD@setlinestyle {subsection}{\YAD@numwidthD}%
+  \YAD@setlinestyle {subsubsection}{\YAD@numwidthE}%
+  \YAD@setlinestyle {paragraph}{\YAD@numwidthF}%
+  \YAD@setlinestyle {subparagraph}{\YAD@numwidthG}%
+}
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\newcommand*\YAD@computenumwidths@ [2] {% #1 pour `etoc' ou `local', #2=pour le
+                                % \kern 
+  \begingroup
+  \def\YAD@numwidthB {0pt}%
+  \def\YAD@numwidthC {0pt}%
+  \def\YAD@numwidthD {0pt}%
+  \def\YAD@numwidthE {0pt}%
+  \def\YAD@numwidthF {0pt}%
+  \def\YAD@numwidthG {0pt}%
+  \etocsetstyle{part}{}{}{}{}%
+  \etocsetstyle{chapter}{}
+  {\setbox0\hbox{\bfseries\etocthenumber\kern#2}}
+  {\ifdim\wd0>\YAD@numwidthB\edef\YAD@numwidthB{\the\wd0}\fi}{}%
+  \etocsetstyle{section}{}
+  {\setbox0\hbox{\bfseries\etocthenumber\kern#2}}
+  {\ifdim\wd0>\YAD@numwidthC\edef\YAD@numwidthC{\the\wd0}\fi}{}%
+  \etocsetstyle{subsection}{}
+  {\setbox0\hbox{\etocthenumber\kern#2}}
+  {\ifdim\wd0>\YAD@numwidthD\edef\YAD@numwidthD{\the\wd0}\fi}{}%
+  \etocsetstyle{subsubsection}{}
+  {\setbox0\hbox{\etocthenumber\kern#2}}
+  {\ifdim\wd0>\YAD@numwidthE\edef\YAD@numwidthE{\the\wd0}\fi}{}%
+  \etocsetstyle{paragraph}{}
+  {\setbox0\hbox{\etocthenumber\kern#2}}
+  {\ifdim\wd0>\YAD@numwidthF\edef\YAD@numwidthF{\the\wd0}\fi}{}%
+  \etocsetstyle{subparagraph}{}
+  {\setbox0\hbox{\etocthenumber\kern#2}}
+  {\ifdim\wd0>\YAD@numwidthG\edef\YAD@numwidthG{\the\wd0}\fi}{}%
+  % 
+  \etocsettocstyle{}
+  {\global\let\YAD@numwidthB\YAD@numwidthB
+    \global\let\YAD@numwidthC\YAD@numwidthC
+    \global\let\YAD@numwidthD\YAD@numwidthD
+    \global\let\YAD@numwidthE\YAD@numwidthE
+    \global\let\YAD@numwidthF\YAD@numwidthF
+    \global\let\YAD@numwidthG\YAD@numwidthG}%
+  \etocnopar
+  \csname YAD@ORI@#1tableofcontents\endcsname
+  \endgroup
+}%
+%    \end{macrocode}
+%    \begin{macrocode}
+\newcommand*\YAD@computenumwidths [1][0.5em]{%
+  \YAD@computenumwidths@ {}{#1}%
+}
+\newcommand*\YAD@computelocalnumwidths [1][0.5em]{%
+  \YAD@computenumwidths@ {local}{#1}%
+}
+%    \end{macrocode}
+%
+% \section{Machinerie pour les tables des matières locales}
+%
+% Les tables des matières locales ne sont pas imprimées si elles sont vides.
+%    \begin{macrocode}
+\etocchecksemptiness
+%    \end{macrocode}
+%
+% Ajout automatique de tables des matières locales.
+%    \begin{macrocode}
+\newcommand{\YAD@default@localtoc}{%
+  \ifbool{YAD@localtocs}%
+  {%
+    \bgroup
+    \YAD@localstyle%
+    \@ifundefined {Etoc@\YAD@localtocsdepth @@}
+    {%
+    }{%
+      \etocsetnexttocdepth{\YAD@localtocsdepth}%
+    }
+    \YAD@computelocalnumwidths\relax%
+    \@ifundefined {Etoc@\YAD@localtocsdepth @@}
+    {%
+    }{%
+      \etocsetnexttocdepth{\YAD@localtocsdepth}%
+    }
+    \localtableofcontents%
+    \YAD@globalstyle
+    \egroup
+  }{%
+  }%
+}
+\newcommand{\YAD@localtoc}{\YAD@default@localtoc}
+\newcommand{\stoplocaltocs}{%
+  \boolfalse{YAD@localtocs}%
+}
+\newcommand{\startlocaltocs}{%
+  \booltrue{YAD@localtocs}%
+}
+\newcommand{\nextwithoutlocaltoc}{%
+  \renewcommand{\YAD@localtoc}{}%
+}
+\newcommand{\nextwithlocaltoc}{%
+  \renewcommand{\YAD@localtoc}{\YAD@default@localtoc}%
+  \booltrue{YAD@localtocs}%
+  \booltrue{YAD@nextwithlocaltoc}%
+}
+\apptocmd{\@makechapterhead}{%
+  \ifbool{YAD@localtocs}%
+  {%
+    \YAD@localtoc%
+    \renewcommand{\YAD@localtoc}{\YAD@default@localtoc}%
+    \ifbool{YAD@nextwithlocaltoc}%
+    {%
+      \boolfalse{YAD@localtocs}%
+      \boolfalse{YAD@nextwithlocaltoc}%
+      % \boolfalse{YAD@localtocs@classoption}%
+    }{%
+    }%
+  }{%
+  }%
+}{}{}%
+%    \end{macrocode}
+% \end{environment}
+% On redéfinit la commande "\chapter" de sorte que, dans un chapitre non
+% numéroté ("\chapter*") :
+% \begin{itemize}
+% \item les (sous-(sous-))sections n'aient pas besoin d'être étoilées à leur
+%   tour pour être non numérotées ;
+% \item il ne soit pas nécessaire de faire appel aux commandes cryptiques
+%   "\addcontentsline{toc}{...}{...}" pour que ce qui est non numéroté figure
+%   dans la (les) table(s) des matières ;
+% \item les titres courants soient corrects (par défaut, les titres courants
+%   des chapitres et sections non numérotés sont ceux des chapitre et section
+%   numérotés les précédant) ;
+% \item elle dispose d'un argument optionnel supplémentaire permettant de
+%   spécifier un titre courant différent des titres du texte et de la (des)
+%   tables des matières.
+% \end{itemize}
+%    \begin{macrocode}
+% \let\YAD@ORI@chapter\chapter%
+\LetLtxMacro{\YAD@ORI@chapter}{\chapter}%
+\AfterPreamble{% delay the redefinition when titlesec has done its own
+  \renewcommand\chapter{%
+    \ifbool{YAD@localbibs}{%
+      \let\YAD@ORI@blx@warn@bibempty\blx@warn@bibempty%
+      \def\blx@warn@bibempty{}%
+      \YAD@printbibliography@ORI[segment=\therefsegment,heading=YAD@localbibs@heading]%
+      \let\blx@warn@bibempty\YAD@ORI@blx@warn@bibempty%
+   }{%
+    }
+    \cleardoublepage%
+    \YAD@phantomsection%
+    \ifbool{YAD@output@paper}{%
+    }{%
+      \YAD@bookmarksetup{startatroot}%
+    }%
+    \@ifstar{\YAD@starred@chapter}{\YAD@unstarred@chapter}%
+  }%
+  \newcommandtwoopt{\YAD@tmp@chapter}[3][][]{%
+    \ifthenelse{\isempty{#1}}{%
+      \ifthenelse{\isempty{#2}}{%
+        \YAD@ORI@chapter{#3}%
+      }{%
+        \YAD@ORI@chapter{#3}%
+        \chaptermark{#2}%
+      }%
+    }{%
+      \ifthenelse{\isempty{#2}}{%
+        \YAD@ORI@chapter[#1]{#3}%
+      }{%
+        \YAD@ORI@chapter[#1]{#3}%
+        \chaptermark{#2}%
+      }%
+    }%
+  }%
+  \newcommandtwoopt{\YAD@starred@chapter}[3][][]{%
+    \booltrue{YAD@nonnumbered@chapter}%
+    \booltrue{YAD@nonnumbered@section}%
+    \booltrue{YAD@nonnumbered@subsection}%
+    \booltrue{YAD@nonnumbered@subsubsection}%
+    \booltrue{YAD@nonnumbered@paragraph}%
+    \booltrue{YAD@nonnumbered@subparagraph}%
+    \YAD@setsecnumdepth{none}%
+    \YAD@tmp@chapter[#1][#2]{#3}%
+  }%
+%    \end{macrocode}
+% La numérotation des chapitres non étoilés au niveau initial
+% ("\resetsecnumdepth*") n'est activée qu'à partir de la partie principale
+% ("\mainmatter"), sans quoi les (sous-)sections de la partie "\frontmatter"
+% sont numérotées, alors que rien ne doit l'être dans cette partie.
+%    \begin{macrocode}
+  \newcommandtwoopt{\YAD@unstarred@chapter}[3][][]{%
+    \boolfalse{YAD@nonnumbered@chapter}%
+    \boolfalse{YAD@nonnumbered@section}%
+    \boolfalse{YAD@nonnumbered@subsection}%
+    \boolfalse{YAD@nonnumbered@subsubsection}%
+    \boolfalse{YAD@nonnumbered@paragraph}%
+    \boolfalse{YAD@nonnumbered@subparagraph}%
+    \if@mainmatter%
+    \YAD@setsecnumdepth{\YAD@secnumdepth}
+    \fi%
+    \YAD@tmp@chapter[#1][#2]{#3}%
+  }%
+%    \end{macrocode}
+% On ne veut pas utiliser cette nouvelle définition de "\chapter*" pour
+% "\tableofcontents" et les listes similaires.
+%    \begin{macrocode}
+\xpretocmd{\tableofcontents}{\renewcommand{\YAD@localtoc}{}}{}{}%
+\xapptocmd{\tableofcontents}{\renewcommand{\YAD@localtoc}{\YAD@default@localtoc}}{}{}%
+\xpretocmd{\listoftables}{\renewcommand{\YAD@localtoc}{}}{}{}%
+\xapptocmd{\listoftables}{\renewcommand{\YAD@localtoc}{\YAD@default@localtoc}}{}{}%
+\xpretocmd{\listoffigures}{\renewcommand{\YAD@localtoc}{}}{}{}%
+\xapptocmd{\listoffigures}{\renewcommand{\YAD@localtoc}{\YAD@default@localtoc}}{}{}%
+\xpretocmd{\printbibliography}{\renewcommand{\YAD@localtoc}{}}{}{}%
+\xapptocmd{\printbibliography}{\renewcommand{\YAD@localtoc}{\YAD@default@localtoc}}{}{}%
+\xpretocmd{\printglossary}{\renewcommand{\YAD@localtoc}{}}{}{}%
+\xapptocmd{\printglossary}{\renewcommand{\YAD@localtoc}{\YAD@default@localtoc}}{}{}%
+\xpretocmd{\printindex}{\renewcommand{\YAD@localtoc}{}}{}{}%
+\xapptocmd{\printindex}{\renewcommand{\YAD@localtoc}{\YAD@default@localtoc}}{}{}%
+%    \end{macrocode}
+% On redéfinit la commande "\section" de sorte que, comme la commande
+% "\chapter", elle dispose d'un argument optionnel supplémentaire permettant de
+% spécifier un titre courant différent des titres du texte et de la (des)
+% tables des matières.
+% \end{itemize}
+%    \begin{macrocode}
+\LetLtxMacro{\YAD@ORI@section}{\section}
+\renewcommand\section{%
+  \if@mainmatter%
+  \ifbool{YAD@nonnumbered@chapter}{%
+  }{%
+    \YAD@setsecnumdepth{\YAD@secnumdepth}%
+  }%
+  \fi%
+  \@ifstar{\YAD@starred@section}{\YAD@unstarred@section}%
+}
+\newcommandtwoopt*{\YAD@tmp@section}[3][][]{%
+  \ifthenelse{\isempty{#1}}{%
+    \ifthenelse{\isempty{#2}}{%
+      \YAD@ORI@section{#3}%
+    }{%
+      \let\YAD@ORI@sectionmark\sectionmark%
+      \renewcommand\sectionmark[1]{}%
+      \YAD@ORI@section{#3}%
+      \YAD@ORI@sectionmark{#2}%
+      \let\sectionmark\YAD@ORI@sectionmark%
+    }%
+  }{%
+    \ifthenelse{\isempty{#2}}{%
+      \YAD@ORI@section[#1]{#3}%
+    }{%
+      \let\YAD@ORI@sectionmark\sectionmark%
+      \renewcommand\sectionmark[1]{}%
+      \YAD@ORI@section[#1]{#3}%
+      \YAD@ORI@sectionmark{#2}%
+      \let\sectionmark\YAD@ORI@sectionmark%
+    }%
+  }%
+}%
+\newcommandtwoopt{\YAD@starred@section}[3][][]{%
+  \booltrue{YAD@nonnumbered@section}%
+  \booltrue{YAD@nonnumbered@subsection}%
+  \booltrue{YAD@nonnumbered@subsubsection}%
+  \booltrue{YAD@nonnumbered@paragraph}%
+  \booltrue{YAD@nonnumbered@subparagraph}%
+  \YAD@setsecnumdepth{none}%
+  \YAD@tmp@section[#1][#2]{#3}%
+}%
+\newcommandtwoopt{\YAD@unstarred@section}[3][][]{%
+  \if@mainmatter%
+  \ifbool{YAD@nonnumbered@chapter}{%
+  }{%
+    \boolfalse{YAD@nonnumbered@section}%
+    \boolfalse{YAD@nonnumbered@subsection}%
+    \boolfalse{YAD@nonnumbered@subsubsection}%
+    \boolfalse{YAD@nonnumbered@paragraph}%
+    \boolfalse{YAD@nonnumbered@subparagraph}%
+  }%
+  \fi%
+  \YAD@tmp@section[#1][#2]{#3}%
+}%
+%    \end{macrocode}
+% On redéfinit la commande "\subsection" de sorte que sa version étoilée dispose
+% des mêmes facilités que les versions étoilées des commandes "\chapter" et
+% "\section".
+% \end{itemize}
+%    \begin{macrocode}
+\LetLtxMacro{\YAD@ORI@subsection}{\subsection}
+\renewcommand\subsection{%
+  \if@mainmatter%
+  \ifbool{YAD@nonnumbered@section}{%
+  }{%
+    \YAD@setsecnumdepth{\YAD@secnumdepth}%
+  }%
+  \fi%
+  \@ifstar{\YAD@starred@subsection}{\YAD@unstarred@subsection}%
+}
+\newcommand*{\YAD@tmp@subsection}[2][]{%
+  \ifthenelse{\isempty{#1}}{%
+    \YAD@ORI@subsection{#2}%
+  }{%
+    \YAD@ORI@subsection[#1]{#2}%
+  }%
+}%
+\newcommand{\YAD@starred@subsection}[2][]{%
+  \booltrue{YAD@nonnumbered@subsection}%
+  \booltrue{YAD@nonnumbered@subsubsection}%
+  \booltrue{YAD@nonnumbered@paragraph}%
+  \booltrue{YAD@nonnumbered@subparagraph}%
+  \YAD@setsecnumdepth{none}%
+  \YAD@tmp@subsection[#1]{#2}%
+}%
+\newcommand{\YAD@unstarred@subsection}[2][]{%
+  \if@mainmatter%
+  \ifbool{YAD@nonnumbered@section}{%
+  }{%
+    \boolfalse{YAD@nonnumbered@subsection}%
+    \boolfalse{YAD@nonnumbered@subsubsection}%
+    \boolfalse{YAD@nonnumbered@paragraph}%
+    \boolfalse{YAD@nonnumbered@subparagraph}%
+  }%
+  \fi%
+  \YAD@tmp@subsection[#1]{#2}%
+}%
+%
+\LetLtxMacro{\YAD@ORI@subsubsection}{\subsubsection}
+\renewcommand\subsubsection{%
+  \if@mainmatter%
+  \ifbool{YAD@nonnumbered@subsection}{%
+  }{%
+    \YAD@setsecnumdepth{\YAD@secnumdepth}%
+  }%
+  \fi%
+  \@ifstar{\YAD@starred@subsubsection}{\YAD@unstarred@subsubsection}%
+}
+\newcommand*{\YAD@tmp@subsubsection}[2][]{%
+  \ifthenelse{\isempty{#1}}{%
+    \YAD@ORI@subsubsection{#2}%
+  }{%
+    \YAD@ORI@subsubsection[#1]{#2}%
+  }%
+}%
+\newcommand{\YAD@starred@subsubsection}[2][]{%
+  \booltrue{YAD@nonnumbered@subsubsection}%
+  \booltrue{YAD@nonnumbered@paragraph}%
+  \booltrue{YAD@nonnumbered@subparagraph}%
+  \YAD@setsecnumdepth{none}%
+  \YAD@tmp@subsubsection[#1]{#2}%
+}%
+\newcommand{\YAD@unstarred@subsubsection}[2][]{%
+  \if@mainmatter%
+  \ifbool{YAD@nonnumbered@subsection}{%
+  }{%
+    \boolfalse{YAD@nonnumbered@subsubsection}%
+    \boolfalse{YAD@nonnumbered@paragraph}%
+    \boolfalse{YAD@nonnumbered@subparagraph}%
+  }%
+  \fi%
+  \YAD@tmp@subsubsection[#1]{#2}%
+}%
+%
+\LetLtxMacro{\YAD@ORI@paragraph}{\paragraph}
+\renewcommand\paragraph{%
+  \if@mainmatter%
+  \ifbool{YAD@nonnumbered@subsubsection}{%
+  }{%
+    \YAD@setsecnumdepth{\YAD@secnumdepth}%
+  }%
+  \fi%
+  \@ifstar{\YAD@starred@paragraph}{\YAD@unstarred@paragraph}%
+}
+\newcommand*{\YAD@tmp@paragraph}[2][]{%
+  \ifthenelse{\isempty{#1}}{%
+    \YAD@ORI@paragraph{#2}%
+  }{%
+    \YAD@ORI@paragraph[#1]{#2}%
+  }%
+}%
+\newcommand{\YAD@starred@paragraph}[2][]{%
+  \booltrue{YAD@nonnumbered@paragraph}%
+  \booltrue{YAD@nonnumbered@subparagraph}%
+  \YAD@setsecnumdepth{none}%
+  \YAD@tmp@paragraph[#1]{#2}%
+}%
+\newcommand{\YAD@unstarred@paragraph}[2][]{%
+  \if@mainmatter%
+  \ifbool{YAD@nonnumbered@subsubsection}{%
+  }{%
+    \boolfalse{YAD@nonnumbered@paragraph}%
+    \boolfalse{YAD@nonnumbered@subparagraph}%
+  }%
+  \fi%
+  \YAD@tmp@paragraph[#1]{#2}%
+}%
+%
+\LetLtxMacro{\YAD@ORI@subparagraph}{\subparagraph}
+\renewcommand\subparagraph{%
+  \if@mainmatter%
+  \ifbool{YAD@nonnumbered@paragraph}{%
+  }{%
+    \YAD@setsecnumdepth{\YAD@secnumdepth}%
+  }%
+  \fi%
+  \@ifstar{\YAD@starred@subparagraph}{\YAD@unstarred@subparagraph}%
+}
+\newcommand*{\YAD@tmp@subparagraph}[2][]{%
+  \ifthenelse{\isempty{#1}}{%
+    \YAD@ORI@subparagraph{#2}%
+  }{%
+    \YAD@ORI@subparagraph[#1]{#2}%
+  }%
+}%
+\newcommand{\YAD@starred@subparagraph}[2][]{%
+  \booltrue{YAD@nonnumbered@subparagraph}%
+  \YAD@setsecnumdepth{none}%
+  \YAD@tmp@subparagraph[#1]{#2}%
+}%
+\newcommand{\YAD@unstarred@subparagraph}[2][]{%
+  \if@mainmatter%
+  \ifbool{YAD@nonnumbered@paragraph}{%
+  }{%
+    \boolfalse{YAD@nonnumbered@subparagraph}%
+  }%
+  \fi%
+  \YAD@tmp@subparagraph[#1]{#2}%
+}%
+%    \end{macrocode}
+% Si le \Package{floatrow} est chargé, on doit aussi ne pas utiliser cette
+% nouvelle définition de "\chapter*" pour les listes de flottants personnalisés
+% qui peuvent être créées.
+%    \begin{macrocode}
+  \@ifpackageloaded{floatrow}{%
+    \xpatchcmd{\float@listhead}{\chapter}{\YAD@ORI@chapter}{}{}%
+  }{%
+  }%
+%    \end{macrocode}
+% On doit modifier la commande "\toc@chapter" du \Package{tocbibind} sans quoi
+% les éléments qu'il ajoute apparaissent en double.
+%    \begin{macrocode}
+  \@ifpackageloaded{tocbibind}{%
+    \renewcommand{\toc@chapter}[1]{%
+      \chapter*{#1}\prw@mkboth{#1}%
+      % \addcontentsline{toc}{chapter}{#1}% < Suppression par rapport à l'original
+    }%
+  }{%
+  }%
+}%
+%    \end{macrocode}
+% Les parties sont par défaut numérotées.
+%    \begin{macrocode}
+\xpretocmd{\part}{\YAD@setsecnumdepth{\YAD@secnumdepth}}{}{}%
+%    \end{macrocode}
+%
+% % On crée une commande créant des chapitres. Celle-ci a un argument optionnel,
+% % par défaut égal à "preliminary" qui définit le style de page s'appliquant au
+% % chapitre créé.
+% % \begin{macro}{\YAD@create@chapter}
+% %    \begin{macrocode}
+% \newcommand*{\YAD@create@chapter}[2][preliminary]{%
+%   \expandafter\newcommand\expandafter{\csname #2\endcsname}[1][\csuse{YAD@tr#2}]{%
+%     \pagestyle{#1}%
+%     \expandafter\translatelet\expandafter{\csname YAD@tr#2\endcsname}{lbl-#2}%
+%     \chapter[##1]{\YAD@reach@file[\YAD@configuration@file]{##1}}%
+%   }%
+% }
+% %    \end{macrocode}
+% % \end{macro}
+% %
+% % Au moyen de cette commande, on crée des commandes de chapitres.
+% %
+% %    \begin{macrocode}
+% \YAD@create@chapter{acknowledgements}%
+% \YAD@create@chapter{caution}%
+% \YAD@create@chapter{foreword}%
+% \YAD@create@chapter{preface}%
+% \YAD@create@chapter{frenchabstract}%
+% %
+% \xapptocmd{\frenchabstract}{\booltrue{YAD@frenchabstract@used}}{}{}
+% \AtEndDocument{%
+%   \ifbool{YAD@frenchabstract@used}{%
+%     \ifthenelse{\equal{\YAD@mainlanguage}{french}}{%
+%       \YAD@ClassWarningNoLine{%
+%         Resume substantiel en francais inutile.\MessageBreak%
+%         La langue principale de la these etant le\MessageBreak%
+%         fran\c cais, un resume substantiel en\MessageBreak%
+%         fran\c cais est inutile : vous pouvez supprimer\MessageBreak%
+%         la commande \protect\frenchabstract\space et le texte qui s'y\MessageBreak%
+%         rapporte%
+%       }%
+%     }{%
+%     }%
+%   }{%
+%     \ifthenelse{\equal{\YAD@mainlanguage}{french}}{%
+%     }{%
+%       \YAD@ClassWarningNoLine{%
+%         Resume substantiel en fran\c cais recommande.\MessageBreak%
+%         La langue principale de la these n'etant pas le\MessageBreak%
+%         fran\c cais, un resume substantiel en\MessageBreak%
+%         fran\c cais est recommande : vous pouvez en creer\MessageBreak%
+%         un au moyen de \protect\frenchabstract\space (cf. la\MessageBreak%
+%         documentation de la la classe yat)%
+%       }%
+%     }%
+%   }%
+% }%
+% %    \end{macrocode}
+%
+% On définit la valeur, en anglais et en français, de la macro "\disclaimer" de
+% clause de non-responsabilité définie précédemment.
+%
+%    \begin{macrocode}
+\disclaimer{%
+  \IfLanguageName{french}{%
+    \ifundef{\printinstitute}{%
+      L'\YAD@generic@argument@translate{institute}
+    }{%
+      \YAD@if@starts@with@vowel{\YAD@institute}{L'}{Le }\printinstitute*
+    }%
+    %
+    \ifundef{\printcoinstitute}{%
+      n'entend
+    }{%
+      et
+      \YAD@if@starts@with@vowel{\YAD@coinstitute}{l'}{le }\printcoinstitute*
+      n'entendent
+    }%
+    %
+    donner aucune approbation ni improbation aux opinions \'emises dans les
+    th\`eses : ces opinions devront \^etre consid\'er\'ees comme propres \`a
+    leurs auteurs.%
+  }{%
+    The \printinstitute{}
+    %
+    \ifundef{\printcoinstitute}{}{and the \printcoinstitute{}}
+    %
+    neither endorse nor censure authors' opinions expressed in the theses:
+    these opinions must be considered to be those of their authors.%
+  }%
+}%
+%    \end{macrocode}
+%
+% \begin{macro}{\makedisclaimer}
+%    \begin{macrocode}
+\csdef{makedisclaimer}{%
+  \@ifstar{\@tempswatrue\csuse{YAD@starnostar@makedisclaimer}}{\@tempswafalse\csuse{YAD@starnostar@makedisclaimer}}%
+}%
+\csdef{YAD@starnostar@makedisclaimer}{%
+%    \end{macrocode}
+% Appel du style de page propre à la partie préliminaire
+%    \begin{macrocode}
+  \pagestyle{prepreliminary}%
+  \if@tempswa%
+  \else%
+  \vspace*{\stretch{1}}%
+  \fi%
+  \printdisclaimer%
+  \if@tempswa%
+  \else%
+  \vspace*{\stretch{1}}%
+  \fi%
+  \pagestyle{preliminary}%
+}%
+%    \end{macrocode}
+% \end{macro}
+%
+% % Le contenu de l'environnement "introduction" est collecté dans la macro
+% % "\YAD@introduction" pour tester s'il est vide.
+% % \begin{macro}{\YAD@introduction}
+% %    \begin{macrocode}
+% \newcommand{\YAD@introduction}[1]{%
+%   \ifthenelse{\isempty{#1}}{%
+%     \global\booltrue{YAD@introduction@empty}%
+%     \YAD@generic@argument@translate{introduction}%
+%   }{%
+%     #1%
+%   }%
+% }
+% %    \end{macrocode}
+% % \end{macro}
+% %
+% % \begin{environment}{introduction}
+% %   Environnement d'introduction générale numérotée, qui permet de
+% %   masquer l'appel du style de page "mainmatter" chargé avant
+% %   qu'elle ne commence. La numérotation des paragraphes y est fixée
+% %   à son niveau par défaut (par défaut sous-sections).
+% %    \begin{macrocode}
+% \newenvironment{introduction}[1][\YAD@trintroduction]{%
+%   \YAD@setsecnumdepth{\YAD@secnumdepth}%
+%   \YAD@introduction@begin[#1]%
+%   \Collect@Body\YAD@introduction%
+% }{%
+%   \YAD@introduction@end%
+% }%
+% %    \end{macrocode}
+% % \end{environment}
+% % Appel du style de page propre à la partie principale du document,
+% % notamment début de la numérotation des chapitres, chargé avant
+% % l'environnement "introduction".
+% %    \begin{macrocode}
+% \BeforeBeginEnvironment{introduction}{\pagestyle{mainmatter}}
+% %    \end{macrocode}
+% %
+% % \begin{environment}{introduction*}
+% %   Environnement d'introduction générale \emph{non} numérotée, qui
+% %   permet de masquer l'appel du style de page "mainmatter" chargé
+% %   avant qu'elle ne commence.
+% %    \begin{macrocode}
+% \newenvironment{introduction*}[1][\YAD@trintroduction]{%
+%   \setcounter{secnumdepth}{-10}%
+%   \YAD@introduction@begin[#1]%
+%   \Collect@Body\YAD@introduction%
+% }{%
+%   \YAD@introduction@end%
+% }%
+% %    \end{macrocode}
+% % \end{environment}
+% % Au début de l'environnement, appel du style de page propre à la
+% % partie introductive du document. À la fin de l'environnement,
+% % numérotation des paragraphes est fixée à son niveau par défaut
+% % (sous-sections).
+% %    \begin{macrocode}
+% \BeforeBeginEnvironment{introduction*}{\pagestyle{mainmatter}}
+% \AfterEndEnvironment{introduction*}{%
+%   \YAD@setsecnumdepth{\YAD@secnumdepth}%
+% }%
+% %    \end{macrocode}
+% %
+% % \begin{macro}{\@introduction@begin}
+% %   Commande de début d'environnement commune à "introduction" et à
+% %   "introduction*".
+% %    \begin{macrocode}
+% \newcommand{\YAD@introduction@begin}[1][\YAD@trintroduction]{%
+%   \translatelet\YAD@trintroduction{lbl-introduction}%
+%   \global\booltrue{YAD@introduction@used}%
+%   \chapter[#1]{\YAD@reach@file[\YAD@configuration@file]{#1}}
+% }%
+% %    \end{macrocode}
+% % \end{macro}
+% %
+% % \begin{macro}{\@introduction@end}
+% %   Commande de fin d'environnement commune à "introduction" et à
+% %   "introduction*".
+% %    \begin{macrocode}
+% \newcommand{\YAD@introduction@end}{%
+%   \cleardoublepage%
+% }%
+% %    \end{macrocode}
+% % \end{macro}
+% %
+% % Si l'environnement "introduction" n'a pas été utilisé, une erreur est émise
+% % (car la commande "mainmatter" n'aura alors pas été insérée).
+% %    \begin{macrocode}
+% \AtEndDocument{%
+%   \ifbool{YAD@introduction@used}{%
+%     \ifbool{YAD@introduction@empty}{%
+%       \YAD@ClassWarningNoLine{%
+%         L'environnement `introduction' a ete utilise\MessageBreak%
+%         avec un contenu vide.\MessageBreak%
+%         Un contenu non vide est requis%
+%       }%
+%     }{%
+%     }%
+%   }{%
+%     \ifYAD@nointroduction%
+%     \else%
+%     \YAD@ClassWarningNoLine{%
+%       L'environnement `introduction' n'a pas ete\MessageBreak%
+%       utilise. Celui-ci est requis%
+%     }%
+%     \fi%
+%   }%
+% }
+% %    \end{macrocode}
+% %
+% % Le contenu de l'environnement "conclusion" est collecté dans la macro
+% % "\YAD@conclusion" pour tester s'il est vide.
+% % \begin{macro}{\YAD@conclusion}
+% %    \begin{macrocode}
+% \newcommand{\YAD@conclusion}[1]{%
+%   \ifthenelse{\isempty{#1}}{%
+%     \global\booltrue{YAD@conclusion@empty}%
+%     \YAD@generic@argument@translate{conclusion}%
+%   }{%
+%     #1%
+%   }%
+% }
+% %    \end{macrocode}
+% % \end{macro}
+% %
+% % \begin{environment}{conclusion}
+% %   Environnement de conclusion générale numérotée.
+% %    \begin{macrocode}
+% \newenvironment{conclusion}[1][\YAD@trconclusion]{%
+%   \YAD@setsecnumdepth{\YAD@secnumdepth}%
+%   \YAD@conclusion@begin[#1]%
+%   \Collect@Body\YAD@conclusion%
+% }{%
+%   \YAD@conclusion@end%
+% }%
+% %    \end{macrocode}
+% % \end{environment}
+% % Appel du style de page propre à la partie conclusion générale du
+% % document, notamment pour s'assurer que celle-ci va figurer au plus
+% % haut niveau des signets, chargé avant l'environnement
+% % "conclusion".
+% %    \begin{macrocode}
+% \BeforeBeginEnvironment{conclusion}{%
+%   \YAD@phantomsection%
+%   \YAD@setsecnumdepth{\YAD@secnumdepth}%
+%   \YAD@bookmarksetup{startatroot}%
+% }%
+% \AfterEndEnvironment{conclusion}{\appendix}
+% %    \end{macrocode}
+% %
+% % \begin{environment}{conclusion*}
+% %   Environnement d'conclusion générale \emph{non} numérotée, qui
+% %   permet de masquer l'appel du style de page "conclusion-generale"
+% %   chargé avant qu'elle ne commence.
+% %    \begin{macrocode}
+% \newenvironment{conclusion*}[1][\YAD@trconclusion]{%
+%   \setcounter{secnumdepth}{-10}%
+%   \YAD@conclusion@begin[#1]%
+%   \Collect@Body\YAD@conclusion%
+% }{%
+%   \YAD@conclusion@end%
+% }%
+% %    \end{macrocode}
+% % \end{environment}
+% % Appel du style de page propre à la partie conclusion générale du
+% % document, notamment pour s'assurer que celle-ci va figurer au plus
+% % haut niveau des signets, chargé avant l'environnement
+% % "conclusion*".
+% %    \begin{macrocode}
+% \BeforeBeginEnvironment{conclusion*}{%
+%   \YAD@phantomsection%
+%   \YAD@setsecnumdepth{\YAD@secnumdepth}%
+%   \YAD@bookmarksetup{startatroot}%
+% }%
+% \AfterEndEnvironment{conclusion*}{%
+%   \appendix%
+%   \YAD@setsecnumdepth{\YAD@secnumdepth}%
+% }%
+% %    \end{macrocode}
+% %
+% % \begin{macro}{\@conclusion@begin}
+% %   Commande de début d'environnement commune à "conclusion" et à
+% %   "conclusion*".
+% %    \begin{macrocode}
+% \newcommand{\YAD@conclusion@begin}[1][\YAD@trconclusion]{%
+%   \translatelet\YAD@trconclusion{lbl-conclusion}%
+%   \global\booltrue{YAD@conclusion@used}%
+%   \chapter[#1]{\YAD@reach@file[\YAD@configuration@file]{#1}}
+% }%
+% %    \end{macrocode}
+% % \end{macro}
+% %
+% % \begin{macro}{\@conclusion@end}
+% %   Commande de fin d'environnement commune à "conclusion" et à
+% %   "conclusion*".
+% %    \begin{macrocode}
+% \newcommand{\YAD@conclusion@end}{%
+%   \cleardoublepage%
+% }%
+% %    \end{macrocode}
+% % \end{macro}
+% %
+% % Si l'environnement "conclusion" n'a pas été utilisé, une erreur est émise
+% % (car la commande "appendix" n'aura alors pas été insérée).
+% %    \begin{macrocode}
+% \AtEndDocument{%
+%   \ifbool{YAD@conclusion@used}{%
+%     \ifbool{YAD@conclusion@empty}{%
+%       \YAD@ClassWarningNoLine{%
+%         L'environnement `conclusion' a ete utilise\MessageBreak%
+%         avec un contenu vide.\MessageBreak%
+%         Un contenu non vide est requis%
+%       }%
+%     }{%
+%     }%
+%   }{%
+%     \ifYAD@noconclusion%
+%     \else%
+%     \YAD@ClassError{%
+%       L'environnement `conclusion' n'a pas ete\MessageBreak%
+%       utilise. Celui-ci est requis%
+%     }%
+%     \fi%
+%   }%
+% }
+% %    \end{macrocode}
+%
+% On fixe la métadonnée de la langue.
+%    \begin{macrocode}
+\AtBeginDocument{%
+  \ifthenelse{\equal{\YAD@mainlanguage}{french}}{%
+    \YAD@hypersetup{pdflang=fr}%
+  }{%
+    \YAD@hypersetup{pdflang=en}%
+  }%
+}%
+%    \end{macrocode}
+%
+% Réglage nécessaire sans quoi le titre courant \textquote{BIBLIOGRAPHIE}
+% apparaît en trop en entête et en pied de page (see \url{http://tex.stackexchange.com/q/89884/18401}).
+%    \begin{macrocode}
+\AtEndPreamble{%
+  \@ifpackageloaded{biblatex}{%
+    \defbibheading{bibintoc}[\bibname]{\chapter*{#1}}%
+    \defbibheading{YAD@localbibs@heading}[\translate{lbl-localbibname}]{%
+      \renewcommand\addcontentsline[3]{}%
+      \section*{#1}%
+      \let\addcontentsline\YAD@addcontentsline
+    }%
+%    \end{macrocode}
+%
+% Références bibliographiques des citations formelles (cf. \Package{biblatex}):
+%    \begin{macrocode}
+    \@ifpackageloaded{csquotes}{%
+      \SetCiteCommand{\autocite}%
+    }{%
+    }%
+%    \end{macrocode}
+%
+% Redéfinition de la commande d'insertion de la bibliographie et ce,
+% seulement si le \Package{biblatex} est chargé
+% \begin{macro}{\printbibliography}
+%    \begin{macrocode}
+    \let\YAD@printbibliography@ORI\printbibliography%
+    \renewcommand{\printbibliography}[1][]{%
+      \booltrue{YAD@printbibliography@used}%
+% TODO: The "biblio" page style (which starts a new page) should be used except
+% in case of "refsection" \package{biblatex}'s option, otherwise the
+% bibliographies by chapters (that should be considered as sections) don't
+% behave as sections: they start a newpage!
+      \pagestyle{biblio}%
+      \YAD@printbibliography@ORI[heading=bibintoc,#1]%
+      \pagestyle{ordinary}%
+    }%
+  }{%
+  }%
+}%
+%    \end{macrocode}
+% \end{macro}
+%
+% Si la commande "\printbibliography" n'a pas été utilisée, une erreur est émise.
+%    \begin{macrocode}
+\AtEndDocument{%
+  \ifbool{YAD@printbibliography@used}{%
+  }{%
+    \ifbool{YAD@noprintbibliography}{%
+    }{%
+      \YAD@ClassError*[noprintbibliography]{%
+        Commande \protect\printbibliography\space non utilisee%
+      }{%
+        La commande \protect\printbibliography\space n'a pas ete utilisee. Celle-ci est
+        requise.%
+      }%
+    }%
+  }%
+}%
+%    \end{macrocode}
+%
+% Patch du \Package{glossaries}, pour lui appliquer certains
+% réglages s'il est chargé et notamment pour lui adjoindre une liste
+% de symboles.
+%    \begin{macrocode}
+\hopatch@AfterPackage{glossaries}{%
+%    \end{macrocode}
+% Si on est en sortie "output=paper" (et pas en sortie "output=paper*"), on
+% supprime la barre de navigation des glossaires qui ne sert que par ses liens
+% hypertextes et donc \emph{a priori} pas en version imprimée.
+%    \begin{macrocode}
+  \ifbool{YAD@output@paper}{%
+    \ifbool{YAD@output@paper@star}{%
+    }{%
+      \renewcommand{\glsnavigation}{}%
+    }%
+  }{%
+  }%
+%    \end{macrocode}
+% Création d'une commande "\newglssymbol" pour définir des symboles,
+% dans l'esprit de "\newacronym" ("\newsymbol" ne peut pas être
+% employée car elle existe déjà dans le \Package{amsfonts})
+%    \begin{macrocode}
+  \newcommand{\newglssymbol}[5][]{%
+    \@ifpackageloaded{glossaries}{%
+%    \end{macrocode}
+% Le tri du symbole dans la liste des symboles se fait par défaut
+% sur la clé...
+%    \begin{macrocode}
+      \ifthenelse{\isempty{#1}}{%
+        \newglossaryentry{#2}{%
+          type=symbols,%
+          symbol={#3},%
+          name={#4},%
+          description={#5},%
+          sort={#2}%
+        }%
+%    \end{macrocode}
+% ... mais peut être forcé par l'argument optionnel de "\newglssymbol"
+%    \begin{macrocode}
+}{%
+  \newglossaryentry{#2}{%
+    type=symbols,%
+    symbol={#3},%
+    name={#4},%
+    description={#5},%
+    sort={#1}%
+  }%
+}%
+}{%
+  \ClassError{yathesis}{}{%
+    Commande \protect\newglssymbol\space utilisee sans que 'glossaries' soit
+    charge%
+  }{%
+    La commande \protect\newglssymbol ne peut etre\MessageBreak%
+    utilisee que si le package 'glossaries' est charge%
+  }%
+}%
+}%
+%    \end{macrocode}
+% On définit un nouveau type de style de glossaire, "yadsymbolstyle".
+% \begin{macro}{\yadsymbolstyle}
+%    \begin{macrocode}
+\newglossarystyle{yadsymbolstyle}{%
+  % put the glossary in the itemize environment:
+  \renewenvironment{theglossary}%
+  {\begin{description}}{\end{description}}%
+  % have nothing after \begin{theglossary}:
+  \renewcommand*{\glossaryheader}{}%
+  % have nothing between glossary groups:
+  \renewcommand*{\glsgroupheading}[1]{}%
+  \renewcommand*{\glsgroupskip}{}%
+  % set how each entry should appear:
+  \renewcommand*{\glossentry}[2]{%
+  \item[\textmd{\glossentrysymbol{##1}}]
+    \glstarget{##1}{\glossentryname{##1}}% the entry name
+    \ifthenelse{\equal{\glossentrydesc{##1}}{}}{%
+    }{%
+      \space (\glossentrydesc{##1})% the description
+    }%
+    \hfill ##2% the number list in square brackets
+  }%
+  % set how sub-entries appear:
+  \renewcommand*{\subglossentry}[3]{%
+    \glossentry{##2}{##3}}%
+}%
+%    \end{macrocode}
+% \end{macro}
+%
+% La commande "\printsymbols" est (re)définie de sorte que lui soit par défaut
+% appliqué le style "yadsymbolstyle".
+% \begin{macro}{\printsymbols}
+%    \begin{macrocode}
+\ifundef{\printsymbols}{%
+  \newcommand{\printsymbols}[1][]{%
+    \printglossary[type=symbols,style=yadsymbolstyle,#1]%
+  }%
+}{%
+  \renewcommand{\printsymbols}[1][]{%
+    \printglossary[type=symbols,style=yadsymbolstyle,#1]%
+  }%
+}%
+%    \end{macrocode}
+% \end{macro}
+% On force le chargement du \Package{glossaries-babel} si le
+% \Package{glossaries} l'est, sans quoi les signets des glossaires
+% et objets assimilés ne sont pas correctement traduits.
+%    \begin{macrocode}
+\AtEndPreamble{%
+  \@ifpackageloaded{glossaries}{%
+    \RequirePackage{glossaries-babel}%
+  }{%
+  }%
+}%
+%    \end{macrocode}
+% On termine le patch du \Package{glossaries}.
+%    \begin{macrocode}
+}%
+%    \end{macrocode}
+%
+% \subsection{Fichiers importés par la classe}
+%
+% La \yatcl charge les fichiers de configuration locale et de données
+% caractéristiques du document, situés dans le répertoire de configuration.
+%
+%    \begin{macrocode}
+\AtEndPreamble{%
+  \ifPDFTeX
+  \shorthandon{;:!?}%
+  \fi
+  \InputIfFileExists{\YAD@configuration@directory/\YAD@configuration@file}%
+  {\ClassInfo{yathesis}{%
+    Fichier de configuration local \YAD@configuration@file\space
+    trouve%
+    }%
+  }{%
+    % \YAD@ClassWarningNoLine{%
+    %   Fichier de configuration local
+    %   \YAD@configuration@file\space introuvable%
+    % }%
+  }%
+  \ifPDFTeX
+  \shorthandoff{;:!?}%
+  \fi
+}%
+%    \end{macrocode}
+%
+% \subsubsection{Données caractéristiques du document}
+%
+%    \begin{macrocode}
+\AtEndPreamble{%
+  \ifPDFTeX
+  \shorthandon{;:!?}%
+  \fi
+  \InputIfFileExists{\YAD@configuration@directory/\YAD@characteristics@file}%
+  {%
+    \ClassInfo{yathesis}{%
+      Fichier \YAD@characteristics@file\space des donnees du document trouve%
+    }%
+  }%
+  {%
+    % \YAD@ClassWarningNoLine{%
+    %   Fichier \YAD@characteristics@file\space des donnees du titre
+    %   introuvable.\MessageBreak%
+    %   Le fichier \YAD@characteristics@file\space n'a pas ete trouve\MessageBreak%
+    %   dans le dossier `\YAD@configuration@directory'.\MessageBreak Ce fichier
+    %   \YAD@characteristics@file\space peut faciliter l'usage\MessageBreak de la classe%
+    % }%
+  }%
+  \ifPDFTeX
+  \shorthandoff{;:!?}%
+  \fi
+}%
+%    \end{macrocode}
+%
+% % \subsubsection{Macros}
+% %
+% %    \begin{macrocode}
+% \AtEndPreamble{%
+%   \ifPDFTeX
+%   \shorthandon{;:!?}%
+%   \fi
+%   \InputIfFileExists{\YAD@configuration@directory/\macrosfile}%
+%   {\ClassInfo{yathesis}{%
+%       Fichier \macrosfile\space trouve%
+%     }}%
+%   {%
+%     % \YAD@ClassWarningNoLine{%
+%     %   Fichier \macrosfile\space introuvable.\MessageBreak%
+%     %   Le fichier \macrosfile\space n'a pas ete trouve\MessageBreak%
+%     %   dans le dossier `\YAD@configuration@directory'%
+%     % }%
+%   }%
+%   \ifPDFTeX
+%   \shorthandoff{;:!?}%
+%   \fi
+% }%
+% %    \end{macrocode}
+%
+% \section{Avertissements}
+% \label{cha-yadr}
+%
+% Si la commande "\tableofcontents" n'a pas été utilisée, une erreur est émise.
+%    \begin{macrocode}
+\AtEndDocument{%
+  \ifbool{YAD@tableofcontents@used}{%
+  }{%
+    \ifbool{YAD@notableofcontents}{%
+    }{%
+      \YAD@ClassError*[notableofcontents]{%
+        Commande \protect\tableofcontents\space non utilisee%
+      }{%
+        La commande \protect\tableofcontents\space n'a pas ete utilisee. Celle-ci
+        est requise.%
+      }%
+    }%
+  }%
+}%
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\expression{meta-logopres}{logo PRES}{logo PRES}
+\expression{meta-logocomue}{logo ComUE}{logo ComUE}
+\expression{meta-logoinstitute}{logo de l'institut}{logo de l'institut}
+\expression{meta-institute}{institut principal}{institut principal}
+\expression{meta-coinstitute}{institut de cotutelle}{institut de cotutelle}
+\expression{meta-logocoinstitute}{logo de l'institut de cotutelle}{logo de l'institut de cotutelle}
+\expression{meta-logocompany}{logo de l'entreprise}{logo de l'entreprise}
+\expression{meta-doctoralschool}{\'ecole doctorale}{\'ecole doctorale}
+\expression{meta-laboratory}{nom du laboratoire}{nom du laboratoire}
+\expression{meta-logolaboratory}{logo du laboratoire}{logo du laboratoire}
+\expression{meta-author}{pr\'enom et nom de l'auteur}{pr\'enom et nom de l'auteur}
+\expression{meta-date}{date de la soutenance}{defense date}
+\expression{meta-submissiondate}{date de la soumission}{submission date}
+\expression{meta-academicfield}{discipline}{academic field}
+\expression{meta-speciality}{sp\'ecialit\'e}{speciality}
+\expression{meta-title}{titre du m\'emoire de th\`ese}{thesis title}
+\expression{meta-subtitle}{sous-titre du m\'emoire de th\`ese}{thesis subtitle}
+\expression{meta-firstname}{Pr\'enom}{Pr\'enom}
+\expression{meta-lastname}{Nom}{Nom}
+\expression{meta-role}{fonction}{fonction}
+\expression{meta-corporation}{corporation}{corporation}
+\expression{meta-corps}{corps}{corps}
+\expression{meta-affiliation}{affiliation}{affiliation}
+\expression{meta-introduction}{introduction}{introduction}%
+\expression{meta-conclusion}{conclusion}{conclusion}%
+\expression{meta-keywords}{mot(s) cl\'e(s) de la th\`ese}{thesis keyword(s)}
+\expression{meta-laboratoryaddress}{adresse du laboratoire}{adresse du laboratoire}
+\expression{meta-laboratorytelephone}{t\'el\'ephone du laboratoire}{t\'el\'ephone du laboratoire}
+\expression{meta-laboratoryfax}{fax du laboratoire}{fax du laboratoire}
+\expression{meta-laboratoryemail}{email du laboratoire}{email du laboratoire}
+\expression{meta-urllaboratory}{URL du laboratoire}{URL du laboratoire}
+\expression{meta-dedication}{d\'edicace}{dedication}
+\expression{meta-dedications}{d\'edicaces}{dedications}
+\expression{meta-epigraph}{\'epigraphe}{epigraph}
+\expression{meta-epigraphs}{\'epigraphes}{epigraphs}
+\expression{meta-abstract}{r\'esum\'e}{abstract}%
+\expression{meta-ordernumber}{num\'ero d'ordre}{order number}%
+%    \end{macrocode}
+%
+% The following translations are gathered in the
+% \file{yathesis-translations.tex} file that has to be input in the class.
+%    \begin{macrocode}
+\InputIfFileExists{\YAD@translations@file}{}{%
+  \ClassError{%
+    Fichier \`YAD@translations@file' non trouve%
+  }{%
+    Le fichier \`YAD@translations@file' n'a pas ete trouve.\MessageBreak%
+    Veuillez verifier votre installation de la classe `yathesis'.%
+  }%
+}
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+%</class>
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+%<*translations>
+%    \end{macrocode}
+% Traduction des expressions clés de la thèse.
+%    \begin{macrocode}
+\expression{coinstitute}{}{}%
+\expression{company}{}{}%
+\expression{institute}{}{}%
+\expression{email}{\Email}{\Email}%
+\expression{phone}{\Telefon}{\Telefon}%
+\expression{fax}{\Fax}{\Fax}%
+\expression{caution}{Avertissement}{Caution}%
+\expression{localbibname}{Bibliographie du pr\'esent chapitre}{Bibliography of the current chapter}%
+\expression{draft}{brouillon}{draft}%
+\expression{prepared-at}{Cette th\`ese a \'et\'e pr\'epar\'ee au}{This
+  thesis has been prepared at}%
+\expression{prepared-at-pl}{Cette th\`ese a \'et\'e pr\'epar\'ee dans les
+  laboratoires suivants.}{This thesis has been prepared at the following
+  research units.}%
+\expression{prepared-at-hdr}{Cette \textsc{hdr} a \'et\'e pr\'epar\'ee au}{This
+  habilitation to conduct research has been prepared at}%
+\expression{prepared-at-pl-hdr}{Cette \textsc{hdr} a \'et\'e pr\'epar\'ee dans
+  les laboratoires suivants.}{This habilitation to conduct research has been
+  prepared at the following research units.}%
+\expression{juniorresearcher}{charg\'e de recherche}{Junior Researcher}%
+\expression{juniorresearcher-female}{charg\'ee de recherche}{\translate[to=English]{lbl-juniorresearcher}}%
+\expression{juniorresearcher*}{\translate[to=French]{lbl-juniorresearcher}
+  \textsc{hdr}}{\textsc{hdr} \translate[to=English]{lbl-juniorresearcher}}%
+\expression{juniorresearcher-female*}{\translate[to=French]{lbl-juniorresearcher-female}
+  \textsc{hdr}}{\translate[to=English]{lbl-juniorresearcher*}}%
+\expression{cosupervisor}{co-directeur}{Co-Supervisor}%
+\expression{cosupervisor-female}{co-directrice}{\translate[to=English]{lbl-cosupervisor}}
+\expression{comonitor}{co-encadrant}{Co-Monitor}%
+\expression{comonitor-female}{\translate[to=French]{lbl-comonitor}e}{\translate[to=English]{lbl-comonitor}}
+\expression{committeemembers}{Composition du jury}{Committee members}%
+% \expression{conclusion}{Conclusion}{Conclusion}%
+\expression{estimateddefensedate}{Date de soutenance pr\'evue le}{Defense
+  date scheduled on}%
+\expression{supervisor}{directeur}{Supervisor}%
+\expression{supervisor-female}{directrice}{\translate[to=English]{lbl-supervisor}}
+\expression{seniorresearcher}{directeur de recherche}{Senior Researcher}%
+\expression{seniorresearcher-female}{directrice de recherche}{\translate[to=English]{lbl-seniorresearcher}}%
+\expression{supervisors-in-committee}{Directeur de th\`ese}{\translate[to=English]{lbl-supervisor}}%
+\expression{supervisors-in-committee-pl}{Directeurs de th\`ese}{\translate[to=English]{lbl-supervisors-in-committee}s}%
+\expression{supervisors-in-committee-female}{Directrice de th\`ese}{\translate[to=English]{lbl-supervisors-in-committee}}%
+\expression{supervisors-in-committee-pl-female}{Directrices de th\`ese}{\translate[to=English]{lbl-supervisors-in-committee-pl}}%
+\expression{supervisors-in-committee-hdr}{Directeur}{\translate[to=English]{lbl-supervisors-in-committee}}%
+\expression{supervisors-in-committee-pl-hdr}{\translate[to=French]{lbl-supervisors-in-committee-hdr}s}{\translate[to=English]{lbl-supervisors-in-committee-pl}}%
+\expression{supervisors-in-committee-hdr-female}{Directrice}{\translate[to=English]{lbl-supervisors-in-committee}}%
+\expression{supervisors-in-committee-pl-hdr-female}{\translate[to=French]{lbl-supervisors-in-committee-hdr-female}s}{\translate[to=English]{lbl-supervisors-in-committee-pl}}%
+\expression{academicfield}{Discipline}{Academic Field}%
+\expression{doctoralschool}{\'Ecole doctorale}{Doctoral School}%
+\expression{aim}{En vue de l'obtention du grade de docteur de l'}{In order
+  to become Doctor from }%
+\expression{aimand}{ et de l'}{ and from }%
+\expression{examiners}{Examinateur}{Examiner}%
+\expression{examiners-pl}{\translate[to=French]{lbl-examiners}s}{\translate[to=English]{lbl-examiners}s}%
+\expression{examiners-female}{Examinatrice}{\translate[to=English]{lbl-examiners}}%
+\expression{examiners-pl-female}{\translate[to=French]{lbl-examiners-female}s}{\translate[to=English]{lbl-examiners-pl}}%
+\expression{guests}{Invit\'e}{Guest}%
+\expression{guests-pl}{\translate[to=French]{lbl-guests}s}{\translate[to=English]{lbl-guests}s}%
+\expression{guests-female}{\translate[to=French]{lbl-guests}e}{\translate[to=English]{lbl-guests}}%
+\expression{guests-pl-female}{\translate[to=French]{lbl-guests-female}s}{\translate[to=English]{lbl-guests-pl}}%
+\expression{referees}{Rapporteur}{Referee}%
+\expression{referees-pl}{\translate[to=French]{lbl-referees}s}{\translate[to=English]{lbl-referees}s}%
+\expression{referees-female}{\translate[to=French]{lbl-referees}e}{\translate[to=English]{lbl-referees}}%
+\expression{referees-pl-female}{\translate[to=French]{lbl-referees-female}s}{\translate[to=English]{lbl-referees-pl}}%
+% \expression{introduction}{Introduction}{Introduction}%
+% \expression{mcf}{\textsc{mcf}}{Associate Professor}%
+% \expression{mcf*}{\textsc{mcf} \textsc{hdr}}{\textsc{hdr} Associate Professor}%
+\expression{associateprofessor}{\textsc{mcf}}{Associate Professor}%
+\expression{associateprofessor*}{\textsc{mcf} \textsc{hdr}}{\textsc{hdr} Associate Professor}%
+\expression{keywords}{Mots cl\'es}{Keywords}%
+\expression{ordernumber}{Num\'ero d'ordre}{Order Number}%
+% \expression{preface}{Pr\'eface}{Preface}%
+\expression{committeepresident}{pr\'esident du jury}{Committee President}%
+\expression{committeepresident-female}{pr\'esidente du jury}{\translate[to=English]{lbl-committeepresident}}%
+\expression{professor}{professeur}{Professor}%
+\expression{professor-female}{\translate[to=French]{lbl-professor}e}{\translate[to=English]{lbl-professor}}%
+\expression{website}{Site}{Web Site}%
+\expression{localtocname}{Sommaire du pr\'esent chapitre}{Outline of the current
+  chapter}%
+\expression{defendedon}{Soutenue le}{Defended on}%
+\expression{speciality}{Sp\'ecialit\'e}{Speciality}%
+\expression{supervisedby}{Th\`ese dirig\'ee par}{Thesis supervised by}%
+\expression{supervisedby-hdr}{Habilitation dirig\'ee par}{Habilitation supervised by}%
+\expression{thesisdefendedby}{Th\`ese pr\'esent\'ee par}{Thesis defended by}%
+\expression{thesisdefendedby-hdr}{Habilitation \`a diriger les recherches
+  pr\'esent\'ee par}{Habilitation to conduct research defended by}%
+\expression{thesistitle}{}{}%
+\expression{thesistitle-hdr}{}{}%
+\expression{inprogress}{travail en cours}{work in progress}%
+\expression{universitydepartment}{Unit\'e de recherche}{University Department}%
+\expression{versiondate}{Version interm\'ediaire en date du}{Work in progress as
+  of}%
+\expression{inprogressfoottext}{\translate[to=French]{lbl-versiondate}}{\translate[to=English]{lbl-versiondate}}%
+\expression{submittedfoottext}{Version soumise en date du}{Submitted work as
+  of}%
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+%</translations>
+%    \end{macrocode}
+%
+% \chapter{Fichier de complétion}
+% Now, the \File{yathesis.cwl} for \yatcl commands completion and syntax checking:
+%
+%    \begin{macrocode}
+%<*class-cwl>
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+# mode: yathesis.cls
+# denisbitouze, 2016-12-01
+#
+#include:class-book
+#include:latex-document
+#include:latex-mathsymbols
+#include:tex
+#include:pgfopts
+#include:etoolbox
+#include:xpatch
+#include:morewrites%
+#include:filehook
+#include:hopatch
+#include:xifthen
+#include:xkeyval%
+#include:geometry
+#include:graphicx
+#include:environ
+#include:adjustbox
+#include:array
+#include:xstring
+#include:textcase
+#include:translator
+#include:iftex
+#include:epigraph
+#include:tcolorbox
+#include:marvosym
+#include:setspace
+#include:etoc
+#include:tocbibind
+#include:nonumonpart
+#include:xcolor
+#include:datatool
+#include:fncychap
+#include:titleps
+#include:ifdraft
+#include:draftwatermark
+#include:babel
+#include:iflang
+#include:datetime
+#include:hypcap
+#include:bookmark
+#include:glossaries-babel
+#
+# Document class
+#keyvals:\documentclass/yathesis
+mainlanguage=#french,english
+secnumdepth=#part,chapter,section,subsection,subsubsection,paragraph,subparagraph
+space=#single,onehalf,double
+chap-style=#Sonny,Lenny,Glenn,Conny,Rejne,Bjarne,PetersLenny,Bjornstrup,none
+nofrontcover#true,false
+sepcorpaffilfrench=
+sepcorpaffilenglish=
+version=#inprogress,inprogress*,submitted,submitted*,final,draft
+output=#screen,paper,paper*
+localtocs
+localtocs/depth=#section,subsection,subsubsection,paragraph,subparagraph
+localbibs
+localbibs*
+10pt
+11pt
+12pt
+leqno
+fleqn
+oneside
+noerror
+noauthor
+notitle
+noacademicfield
+nodate
+noinstitute
+nodoctoralschool
+nolaboratory
+nolaboratoryaddress
+nosupervisor
+nomaketitle
+nokeywords
+noabstract
+nomakeabstract
+notableofcontents
+noprintbibliography
+graphicx
+adjustbox
+setspace
+xcolor
+datatool
+titleps
+draftwatermark
+babel
+datetime
+#endkeyvals
+#
+\yadsetup{%<options%>}#n
+#
+# Cover and title pages
+#
+# Author
+\author{%<prénom%>}{%<nom%>}#n
+\author[%<email%>]{%<prénom%>}{%<nom%>}#n
+#
+# Title, etc.
+\title[titre dans la langue secondaire%text]{titre dans la langue principale%text}#n
+\subtitle[sous-titre dans la langue secondaire%text]{sous-titre dans la langue principale%text}#n
+\academicfield[discipline dans la langue secondaire%text]{discipline dans la langue principale%text}#n
+\speciality[spécialité dans la langue secondaire%text]{spécialité dans la langue principale%text}#n
+\subject[sujet dans la langue secondaire%text]{sujet dans la langue principale%text}#n
+#
+\title{titre%text}#n
+\subtitle{sous-titre%text}#n
+\academicfield{discipline%text}#n
+\speciality{spécialité%text}#n
+\subject{sujet%text}#n
+\date{%<jour%>}{%<mois%>}{%<année%>}#n
+\submissiondate{%<jour%>}{%<mois%>}{%<année%>}#n
+#
+# Institute and entities
+\pres{%<nom du PRES%>}#n
+\comue{%<nom de la ComUE%>}#n
+\institute{nom de l'institut%text}#n
+\coinstitute{nom de l'institut de cotutelle%text}#n
+\company{%<nom de l'entreprise%>}#n
+\doctoralschool{nom de l'école doctorale%text}#n
+\laboratory{%<nom du laboratoire%>}{%<adresse du laboratoire%>}#n
+#
+\pres[%<précision(s)%>]{%<nom du PRES%>}#n
+\comue[%<précision(s)%>]{%<nom de la ComUE%>}#n
+\institute[%<précision(s)%>]{nom de l'institut%text}#n
+\coinstitute[%<précision(s)%>]{nom de l'institut de cotutelle%text}#n
+\company[%<précision(s)%>]{%<nom de l'entreprise%>}#n
+\doctoralschool[%<précision(s)%>]{nom de l'école doctorale%text}#n
+\laboratory[%<précision(s)%>]{%<nom du laboratoire%>}{%<adresse du laboratoire%>}#n
+#
+#keyvals:\pres
+logo=
+logoheight=
+url=
+#endkeyvals
+#keyvals:\comue
+logo=
+logoheight=
+url=
+#endkeyvals
+#keyvals:\institute
+logo=
+logoheight=
+url=
+nologo
+#endkeyvals
+#keyvals:\coinstitute
+logo=
+logoheight=
+url=
+nologo
+#endkeyvals
+#keyvals:\company
+logo=
+logoheight=
+url=
+nologo
+#endkeyvals
+#keyvals:\doctoralschool
+logo=
+logoheight=
+url=
+#endkeyvals
+#keyvals:\laboratory
+logo=
+logoheight=
+url=
+telephone=
+fax=
+email=
+nonamelink
+#endkeyvals
+#
+# Committee
+\supervisor{%<prénom%>}{%<nom%>}#n
+\cosupervisor{%<prénom%>}{%<nom%>}#n
+\comonitor{%<prénom%>}{%<nom%>}#n
+\referee{%<prénom%>}{%<nom%>}#n
+\examiner{%<prénom%>}{%<nom%>}#n
+\committeepresident{%<prénom%>}{%<nom%>}#n
+\guest{%<prénom%>}{%<nom%>}#n
+#
+\supervisor[%<précision(s)%>]{%<prénom%>}{%<nom%>}#n
+\cosupervisor[%<précision(s)%>]{%<prénom%>}{%<nom%>}#n
+\comonitor[%<précision(s)%>]{%<prénom%>}{%<nom%>}#n
+\referee[%<précision(s)%>]{%<prénom%>}{%<nom%>}#n
+\examiner[%<précision(s)%>]{%<prénom%>}{%<nom%>}#n
+\committeepresident[%<précision(s)%>]{%<prénom%>}{%<nom%>}#n
+\guest[%<précision(s)%>]{%<prénom%>}{%<nom%>}#n
+#
+#keyvals:\supervisor
+affiliation=
+professor
+seniorresearcher
+mcf
+mcf*
+associateprofessor
+associateprofessor*
+juniorresearcher
+juniorresearcher*
+#endkeyvals
+#keyvals:\cosupervisor
+affiliation=
+professor
+seniorresearcher
+mcf
+mcf*
+associateprofessor
+associateprofessor*
+juniorresearcher
+juniorresearcher*
+#endkeyvals
+#keyvals:\comonitor
+affiliation=
+professor
+seniorresearcher
+mcf
+mcf*
+associateprofessor
+associateprofessor*
+juniorresearcher
+juniorresearcher*
+#endkeyvals
+#keyvals:\referee
+affiliation=
+professor
+seniorresearcher
+mcf
+mcf*
+associateprofessor
+associateprofessor*
+juniorresearcher
+juniorresearcher*
+#endkeyvals
+#keyvals:\examiner
+affiliation=
+professor
+seniorresearcher
+mcf
+mcf*
+associateprofessor
+associateprofessor*
+juniorresearcher
+juniorresearcher*
+#endkeyvals
+#keyvals:\committeepresident
+affiliation=
+professor
+seniorresearcher
+mcf
+mcf*
+associateprofessor
+associateprofessor*
+juniorresearcher
+juniorresearcher*
+#endkeyvals
+#keyvals:\guest
+affiliation=
+professor
+seniorresearcher
+mcf
+mcf*
+associateprofessor
+associateprofessor*
+juniorresearcher
+juniorresearcher*
+#endkeyvals
+#
+# Misc
+\ordernumber[%<numéro d'ordre%>]#n
+\ordernumber#n*
+#
+#keyvals:\maketitle
+nofrontcover
+noaim
+frametitle=#shadowbox,ovalbox,none,fbox
+#endkeyvals
+#
+# Preliminary part
+#
+\disclaimer{clause%text}#n
+\makedisclaimer#n
+\makedisclaimer*#n
+\keywords{mots clés dans la langue principale%text}{mots clés dans la langue secondaire%text}#n
+\makekeywords#n
+\makekeywords*#n
+\makelaboratory#n
+\makelaboratory*#n
+\dedication{dédicace%text}#n
+\makededications#n
+\makededications*#n
+\frontepigraph{épigraphe%text}{%<auteur%>}
+\frontepigraph[%<langue%>]{épigraphe%text}{%<auteur%>}
+#keyvals:\frontepigraph
+afrikaans
+bahasa
+basque
+breton
+bulgarian
+catalan
+croatian
+czech
+danish
+dutch
+english
+esperanto
+estonian
+finnish
+french
+galician
+ngerman
+greek
+hebrew
+hungarian
+icelandic
+interlingua
+irish
+italian
+latin
+lowersorbian
+samin
+norsk
+polish
+portuguese
+romanian
+russian
+scottish
+spanish
+slovak
+slovene
+swedish
+serbian
+turkish
+ukrainian
+uppersorbian
+welsh
+#endkeyvals
+\makefrontepigraphs#n
+\makefrontepigraphs*#n
+\begin{abstract}#n
+\begin{abstract}[intitulé alternatif%text]#n*
+\end{abstract}#n
+\makeabstract#n
+\newglssymbol{%<label%>}{%<symbole%>}{%<nom%>}{description%text}#n
+\newglssymbol[%<classement%>]{%<label%>}{%<symbole%>}{%<nom%>}{description%text}#n
+\tableofcontents#n*
+\tableofcontents[%<précision(s)%>]#n*
+#
+#keyvals:\tableofcontents
+depth=#part,chapter,section,subsection,subsubsection,paragraph,subparagraph
+name=
+#endkeyvals
+#
+# Main part
+#
+\chapter{titre%title}#L1
+\chapter*{titre%title}#L1
+\chapter[titre alt. pour TdM et entête%short title]{titre%title}#L1
+\chapter*[titre alt. pour TdM et entête%short title]{titre%title}#L1
+\chapter[titre alt. pour TdM%short title][titre alt. pour entête%short title]{titre%title}#L1
+\chapter*[titre alt. pour TdM%short title][titre alt. pour entête%short title]{titre%title}#L1
+\section{titre%title}#L2
+\section*{titre%title}#L2
+\section[titre alt. pour TdM et entête%short title]{titre%title}#L2
+\section*[titre alt. pour TdM et entête%short title]{titre%title}#L2
+\section[titre alt. pour TdM%short title][titre alt. pour entête%short title]{titre%title}#L2
+\section*[titre alt. pour TdM%short title][titre alt. pour entête%short title]{titre%title}#L2
+\subsection{titre%title}#L3
+\subsection*{titre%title}#L3
+\subsection[titre alt. pour TdM et entête%short title]{titre%title}#L3
+\subsection*[titre alt. pour TdM et entête%short title]{titre%title}#L3
+\subsubsection{titre%title}#L4
+\subsubsection*{titre%title}#L4
+\subsubsection[titre alt. pour TdM et entête%short title]{titre%title}#L4
+\subsubsection*[titre alt. pour TdM et entête%short title]{titre%title}#L4
+\paragraph{titre%title}#L5
+\paragraph*{titre%title}#L5
+\paragraph[titre alt. pour TdM et entête%short title]{titre%title}#L5
+\paragraph*[titre alt. pour TdM et entête%short title]{titre%title}#L5
+\subparagraph{titre%title}#L6
+\subparagraph[titre alt. pour TdM et entête%short title]{titre%title}#L6
+#
+# Appendix part
+#
+# Back matter part
+#
+\makebackcover
+#
+# All parts
+#
+\startlocaltocs
+\stoplocaltocs
+\nextwithlocaltoc
+\nextwithoutlocaltoc
+#
+# Customization
+#
+\expression{%<label%>}{valeur (en français)%text}{valeur (en anglais)%text}#n*
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+%</class-cwl>
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+%<*demopkg>
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\RequirePackage{xpatch}
+\RequirePackage{xstring}
+\RequirePackage{xparse}
+\RequirePackage{letltxmacro}
+\RequirePackage{xifthen}
+\RequirePackage[user,abspage]{zref}
+%
+\AfterEndPreamble{
+  \pretocmd{\tableofcontents@YAD@without@argument}{\cleardoublepage\zlabel{tableofcontents-withoutargument}}{}{}
+  \pretocmd{\tableofcontents@YAD@with@argument}{\cleardoublepage\zlabel{tableofcontents-withargument}}{}{}
+  \pretocmd{\maketitle}{\zlabel{fr-title}}{}{}%
+  \pretocmd{\makedisclaimer}{\cleardoublepage\zlabel{disclaimer}}{}{}
+  \pretocmd{\makekeywords}{\cleardoublepage\zlabel{keywords}}{}{}
+  \pretocmd{\makelaboratory}{\cleardoublepage\zlabel{laboratory}}{}{}
+  \pretocmd{\makededications}{\cleardoublepage\zlabel{dedications}}{}{}
+  \pretocmd{\makefrontepigraphs}{\cleardoublepage\zlabel{frontepigraphs}}{}{}
+  \pretocmd{\acknowledgements}{\cleardoublepage\zlabel{acknowledgements}}{}{}
+  \pretocmd{\caution}{\cleardoublepage\zlabel{caution}}{}{}
+  \pretocmd{\makeabstract}{\cleardoublepage\zlabel{abstract}}{}{}
+  \pretocmd{\foreword}{\cleardoublepage\zlabel{foreword}}{}{}
+  \let\YAD@demo@chapter@ORI\chapter%
+  \RenewDocumentCommand\chapter{som}{%
+    \IfBooleanTF{#1}
+    {
+      \ifthenelse{\equal{#3}{Introduction g\IeC {\'e}n\IeC {\'e}rale}}{\cleardoublepage\zlabel{introduction}%
+      }{%
+      }%
+      \IfNoValueTF{#2}
+      {\YAD@demo@chapter@ORI*{#3}}
+      {\YAD@demo@chapter@ORI*[#2]{#3}}%
+    }
+    {%
+      \ifthenelse{\equal{#3}{Introduction g\IeC {\'e}n\IeC {\'e}rale}}{\cleardoublepage\zlabel{introduction}%
+      }{%
+      }%
+      \ifthenelse{\equal{#3}{Contexte du chaos du rire}}{\cleardoublepage\zlabel{chapter}%
+      }{%
+      }%
+      \ifthenelse{\equal{#3}{Documents juridiques}}{\cleardoublepage\zlabel{appendix}%
+      }{%
+      }%
+      \IfNoValueTF{#2}
+      {\YAD@demo@chapter@ORI{#3}}
+      {\YAD@demo@chapter@ORI[#2]{#3}}%
+    }
+  }
+  \ifcsdef{printglossary}{%
+    \LetLtxMacro{\YAD@printglossary@ORI}{\printglossary}
+    \renewcommand{\printglossary}[1][]{%
+      \ifthenelse{\isempty{#1}}{\cleardoublepage\zlabel{printglossary}%
+      }{%
+      }%
+      \YAD@printglossary@ORI[{#1}]%
+    }
+    \xpretocmd{\printacronyms}{\cleardoublepage\zlabel{printacronyms}}{}{}
+    \xpretocmd{\printsymbols}{\cleardoublepage\zlabel{printsymbols}}{}{}
+  }{%
+  }
+  \xpretocmd{\conclusion}{\cleardoublepage\zlabel{conclusion}}{}{}
+  \xpretocmd{\conclusion*}{\cleardoublepage\zlabel{conclusion}}{}{}
+  \xpretocmd{\printbibliography}{\cleardoublepage\zlabel{printbibliography}}{}{}
+  \xpretocmd{\printindex}{\cleardoublepage\zlabel{printindex}}{}{}
+  \xapptocmd{\makebackcover}{\zlabel{makebackcover}}{}{}
+  \let\include\input
+}
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+%</demopkg>
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+%<*samples-templates-latexmkrc>
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+$pdf_mode = 1;
+
+$bibtex_use = 1;
+$bibtex = 'biber %O %B';
+
+add_cus_dep('glo', 'gls', 0, 'makeglossaries');
+add_cus_dep('acn', 'acr', 0, 'makeglossaries');
+add_cus_dep('slo', 'sls', 0, 'makeglossaries');
+sub makeglossaries{
+    system( "makeglossaries \"$_[0]\"" );
+}
+
+$makeindex = 'texindy -L french';
+
+add_cus_dep('idx', 'ind', 0, 'texindy');
+sub texindy{
+    system("texindy -L french \"$_[0].idx\"");
+}
+
+push @generated_exts, 'acn', 'acr', 'alg', 'bbl', 'bcf', 'fls', 'gl*', 'idx',
+'ind', 'ist', 'sbl*', 'sl*', 'sym*' ;
+
+$clean_ext .= 'synctex.gz* run.xml tex.bak out bbl bcf fdb_latexmk run tdo listing *~ lo* unq mw' ;
+);
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+%</samples-templates-latexmkrc>
+%    \end{macrocode}
+%
+% \Finale
+\endinput
+
+%%% Local Variables:
+%%% mode: tex
+%%% eval: (doctex-mode)
+%%% ispell-local-dictionary: "francais"
+%%% TeX-command-default: "TeX"
+%%% TeX-master: t
+%%% End:
-- 
cgit v1.2.3

