% \iffalse meta-comment
%
% Copyright (C) 2012, 2013, 2014 by Denis Bitouz'e <denis.bitouze@lmpa.univ-littoral.fr>
% --------------------------------------------------------------------------------------
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
% 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.3 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.99k
E-mail: denis.bitouze@lmpa.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.

Installation
------------

The class is supplied in dtx format. If you want to unpack the dtx yourself,
running 'xetex yathesis.dtx' will extract the class whereas 'xelatex
yathesis.dtx will extract it and also typeset the documentation.

             ******************************
             *                            *
             * Both require XeTeX engine! *
             *                            *
             ******************************

Typesetting the documentation also requires:

1. a number of packages in addition to those needed to use the yathesis class.
To compile the documentation without error, you will need the packages:

- xpatch
- morewrites
- exsheets
- parskip
- amsthm
- thmtools
- fixfoot
- enumitem
- afterpage
- tabulary
- calc
- libertine
- geometry
- siunitx
- tocbibind
- biblatex
- listings
- varioref
- marginnote
- xspace
- booktabs
- zref
- footmisc
- rotating
- pdflscape
- hologo
- xifthen
- iflang
- tocvsec2
- csquotes
- tcolorbox
- path
- fontawesome
- textcase
- multicol
- babel
- datetime
- floatrow
- subcaption
- hyperref
- nameref
- hypcap
- bookmark
- glossaries
- cleveref

2. a complete pdflatex run of these.tex to be found in the 'sample'
subdirectory of the current directory, with 'yathesis-demo' package load at
first place. If latexmk is available, it is easier to run:

  latexmk -f -pdf -jobname=these -pdflatex="pdflatex %O '\RequirePackage{yathesis-demo}\input{%S}'" these.tex

3. to run xelatex on yathesis.dtx. If latexmk is available, it is easier to
run:

  latexmk yathesis.dtx
%</readme>
%<*internal>
\fi
\def\nameofplainTeX{plain}
\ifx\fmtname\nameofplainTeX\else
  \expandafter\begingroup
\fi
%</internal>
%<*install>
\input docstrip.tex
\Msg{********************************************************}
\Msg{* Installation}
\Msg{* Class: yathesis 2014/10/01 v0.99k}
\Msg{* that helps to write thesis following French rules (DB)}
\Msg{********************************************************}
\keepsilent
\askforoverwritefalse
\preamble
-----------------------------------------------------------------------
yathesis --- Yet Another Thesis Class
E-mail: denis.bitouze@lmpa.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, 2013, 2014 by Denis Bitouz'e <denis.bitouze@lmpa.univ-littoral.fr>
----------------------------------------------------------------------------------
This work may be distributed and/or modified under the
conditions of the LaTeX Project Public License, either version 1.3
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.3 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 file  yathesis.dtx
          and the derived files yathesis.cls,
                                yathesis.ins,
                                yathesis.pdf,
                                yathesisdoc.sty,
                                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@singlefiletemplate{single-file-template}
\def\YAD@singlefilesample{single-file-sample}
\def\YAD@masterslavesfilestemplate{master-slaves-files-template}
\def\YAD@sample{master-slaves-files-sample}
\usedir{/}
\generate{
  \nopreamble\nopostamble
  \file{README}{\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}}
}%
%</install>
%<install>\endbatchfile
%<*internal>
\usedir{source/latex/\YAD@classname}
\generate{
  \file{\YAD@classname.ins}{\from{\jobname.dtx}{install}}
  \file{\YAD@packagename.sty}{\from{\jobname.dtx}{class-doc-package}}
  \file{\YAD@classname.drv}{\from{\jobname.dtx}{driver}}%
  \nopreamble\nopostamble
  \file{lstlang0.sty}{\from{\jobname.dtx}{class-lstlang0}}
  \file{latexmkrc}{\from{\jobname.dtx}{class-latexmkrc}}
  \file{translations.tex}{\from{\jobname.dtx}{translations}}
}%
\usedir{doc/latex/\YAD@classname}
\generate{
  \nopreamble\nopostamble
  \file{README}{\from{\jobname.dtx}{readme}}
}%
\usedir{doc/latex/\YAD@classname/\YAD@singlefiletemplate}
\generate{
  \nopreamble\nopostamble
  \file{latexmkrc}{\from{\jobname.dtx}{samples-templates-latexmkrc}}
  \file{these.tex}{\from{\YAD@sampletemplates.dtx}{single-template}}
}%
\usedir{doc/latex/\YAD@classname/\YAD@singlefilesample}
\generate{
  \nopreamble\nopostamble
  \file{latexmkrc}{\from{\jobname.dtx}{samples-templates-latexmkrc}}
  \file{these.tex}{\from{\YAD@sampletemplates.dtx}{single-sample}}
  \file{bibliographie.bib}{\from{\YAD@sampletemplates.dtx}{bibliography-sample}}
}%
\usedir{doc/latex/\YAD@classname/\YAD@sample}
\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/\YAD@sample/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/\YAD@sample/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/\YAD@sample/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/\YAD@sample/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/\YAD@sample/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/\YAD@sample/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/\YAD@masterslavesfilestemplate}
\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/\YAD@masterslavesfilestemplate/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/\YAD@masterslavesfilestemplate/auxiliaires}
\generate{
  \nopreamble\nopostamble
  \file{bibliographie.bib}{\from{\YAD@sampletemplates.dtx}{bibliography-master}}
}%
\usedir{doc/latex/\YAD@classname/\YAD@masterslavesfilestemplate/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/\YAD@masterslavesfilestemplate/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/\YAD@masterslavesfilestemplate/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.99k}
% \def\YADdatelastversion{\today}
% \def\fileversion{v\YADnblastversion}
% \def\filedate{\YADdatelastversion}
% \iffalse
%<*class>
\def\fileversion{v0.99k}
\def\filedate{2014/10/01}
%</class>
%<*driver>
\ProvidesFile{yathesis.dtx}
\RequirePackage{scrlfile}
\ReplaceClass{article}{report}
\BeforePackage{doc}{\let\oldmaketitle\maketitle}
\documentclass[english,french]{ltxdoc}
\usepackage{yathesisdoc}
%
\includeall
\includeonly{%
  % sections/introduction,
  sections/proprietes-document,
  % sections/pages-titre,
  % sections/pages-liminaires,
  % sections/pages-corps,
  % sections/pages-annexes,
  % sections/pages-finales,
  sections/personnalisation,
  % sections/recommandations,
  % sections/installation,
  % sections/specimens-canevas,
  % sections/add-ons,
  % sections/faq,
  % sections/fichiers-charges,
  % sections/packages-charges,
  % sections/aspects,
  % sections/notations,
  % sections/usage-avance,
  % sections/developpements
}%
\begin{document}
\DocInput{\jobname.dtx}
\end{document}
%</driver>
% \fi
%
% \changes{v0.99k}{2014/10/01}{Documentation révisée}%
% \changes{v0.99k}{2014/10/01}{Corrections de bugs}%
% \changes{v0.99j}{2014/07/18}{Documentation révisée}%
% \changes{v0.99j}{2014/07/18}{Corrections de bugs}%
% \changes{v0.99i}{2014/07/17}{Documentation révisée}%
% \changes{v0.99i}{2014/07/17}{Corrections de bugs}%
% \changes{v0.99h}{2014/07/14}{Documentation révisée}%
% \changes{v0.99h}{2014/07/14}{Corrections de bugs}%
% \changes{v0.99g}{2014/07/13}{Documentation révisée}%
% \changes{v0.99g}{2014/07/13}{Corrections de bugs}%
% \changes{v0.99c}{2014/06/06}{Corrections de bugs}%
% \changes{v0.99c}{2014/06/06}{Documentation révisée}%
% \changes{v0.99b}{2014/06/02}{Corrections de bugs}%
% \changes{v0.99a}{2014/06/02}{Corrections de bugs}%
% \changes{v0.99}{2014/05/18}{Corrections de bugs}%
%
% \CheckSum{4413}
%
% \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}
% ^^A\settocdepth{subparagraph}
% \input{sections/fixed-footnotes}
% \include{sections/titre}
% \include{sections/abstract}
% \tableofcontents
% \setsecnumdepth{none}%
% \include{sections/introduction}
% \setsecnumdepth{subsection}
% \include{sections/proprietes-document}
% \include{sections/pages-titre}
% \include{sections/pages-liminaires}
% \include{sections/pages-corps}
% \include{sections/pages-annexes}
% \include{sections/pages-finales}
% \include{sections/personnalisation}
% \appendix
% \include{sections/installation}
% \include{sections/specimens-canevas}
% \include{sections/recommandations}
% \include{sections/faq}
% \include{sections/fichiers-charges}
% \include{sections/packages-charges}
% \include{sections/incompatibilites-connues}
% \include{sections/aspects}
% \include{sections/notations}
% \include{sections/add-ons}
% \include{sections/usage-avance}
% \include{sections/developpements}
% \PrintChanges%
% \printbibliography[heading=bibintoc]
% \printglossaries\label{glossaire}
% \begingroup
% \setlength{\parskip}{0pt plus .1pt}
% \listoffigures
% \listoftables
% \endgroup
% \tcblistof[\chapter*]{dbwarninglist}{Table des avertissements\addcontentsline{toc}{chapter}{Table des avertissements}}%
% \tcblistof[\chapter*]{dbremarklist}{Table des remarques\addcontentsline{toc}{chapter}{Table des remarques}}%
% \tcblistof[\chapter*]{dbexamplelist}{Table des exemples\addcontentsline{toc}{chapter}{Table des exemples}}%
% \tcblistof[\chapter*]{dbfaqlist}{Table des questions\addcontentsline{toc}{chapter}{Table des questions}}%
% \printindex
%
% \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 :
% \directory{/usr/local/texlive/2013/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg}
% (problème rapporté à  l'auteur du package) ou à la ligne :
% \directory{/usr/local/texlive/2013/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}
% 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}
\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{nodate}%
\YAD@create@boolean{noinstitute}%
\YAD@create@boolean{nodoctoralschool}%
\YAD@create@boolean{nolaboratory}%
\YAD@create@boolean{nolaboratoryadress}%
\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}%
%
\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{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,%
  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}
%
%    \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 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 fixer quelques bugs (en général sans conséquence) de \hologo{LaTeX2e}
%    \begin{macrocode}
\RequirePackage{fixltx2e}[2006/09/13]%
%    \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 pouvoir afficher un sommaire c-à-d une table des matières réduite
%    \begin{macrocode}
\RequirePackage{shorttoc}[2002/08/20]%
%    \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{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 tester la langue en cours
%    \begin{macrocode}
\RequirePackage{iflang}[2007/11/11]%
%    \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}
%
% 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}
%
%    \begin{macrocode}
%<*class-doc-package>
%    \end{macrocode}
%
%    \begin{macrocode}
\let\maketitle\oldmaketitle
%    \end{macrocode}
%
%    \begin{macrocode}
\PassOptionsToPackage{obeyspaces}{url}
%    \end{macrocode}
%
%    \begin{macrocode}
\RequirePackage{xpatch}%
% Pour pouvoir disposer 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
% ×(/usr/local/texlive/2013/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg)×
% (problème rapporté à l'auteur du package).
%    \begin{macrocode}
\AtEndPreamble{\RequirePackage{morewrites}}%
%
\let\YAD@ORI@task\task
\let\task\relax
\RequirePackage{exsheets}
\let\task\YAD@ORI@task
\RequirePackage{parskip}%
\RequirePackage{amsthm}%
\RequirePackage{thmtools}%
\RequirePackage{fixfoot}%
\RequirePackage[inline]{enumitem}%
\RequirePackage{afterpage}%
\RequirePackage{tabulary}%
\RequirePackage{calc}%
\RequirePackage[lining]{libertine}%
\RequirePackage[a4paper]{geometry}%
\RequirePackage{siunitx}%
\RequirePackage[notindex]{tocbibind}%
\RequirePackage[backend=biber,style=authortitle,autopunct=false,useprefix=true,backref,dashed=false]{biblatex}%
\RequirePackage{listings}%
\RequirePackage{varioref}%
\RequirePackage{xspace}%
\RequirePackage{booktabs}%
\RequirePackage[xr]{zref}%
\RequirePackage[multiple,bottom]{footmisc}%
\RequirePackage{rotating}%
\RequirePackage{pdflscape}%
\RequirePackage{hologo}%
\RequirePackage{xifthen}%
\RequirePackage{iflang}%
\RequirePackage{amssymb}%
\RequirePackage{tocvsec2}%
\RequirePackage[autostyle=once]{csquotes}%
\RequirePackage{tcolorbox}%
\RequirePackage{path}%
\RequirePackage{fontawesome}%
\RequirePackage{textcase}%
\RequirePackage{multicol}%
\RequirePackage{babel}%
\RequirePackage[nodayofweek]{datetime}%
\RequirePackage{floatrow}%
\RequirePackage{subcaption}%
\RequirePackage{hyperref}%
\RequirePackage{nameref}%
\RequirePackage[all]{hypcap}%
\RequirePackage[numbered]{bookmark}%
\RequirePackage[xindy,toc,hyperfirst=false]{glossaries}%
\RequirePackage{cleveref}%
%
\hypersetup{colorlinks}%
%
\newbool{afterbegindocument}%
\AtBeginDocument{%
  \booltrue{afterbegindocument}%
}%
\presetkeys{todonotes}{fancyline, color=white}{}%
\newcommand{\alert}[1]{\begingroup\color{red}#1\endgroup}%
\let\YAD@ORI@changes\changes%
\renewcommand{\changes}{%
  \@ifstar{\@tempswatrue\YAD@changes}{\@tempswafalse\YAD@changes}%
}%
\newcommand{\YAD@changes}[3]{%
  \YAD@ORI@changes{#1}{#2}{%
    \if@tempswa%
    \alert{#3}%
    \else%
    #3%
    \fi%
  }%
  % \if@tempswa%
  % % \protect\marginpar{\scriptsize NEW ! (#1, #2)}%
  % \else%
  % \fi%
}%
%
\newcommand{\includeall}{%
  \renewcommand\includeonly[1]{}%
  % \let\include\input%
}%
%
\setlength\bibinitsep{1.25\baselineskip}
%
\setglossarystyle{indexhypergroup}
\setacronymstyle{long-sc-short}
%
\SetupExSheets[question]{type=exam}
\SetupExSheets[solution]{print=true}
%
\SetCiteCommand{\autocite}
%
\renewcommand{\ttdefault}{lmtt}
%
\renewcommand{\generalname}{Général}%
%
\xapptocmd{\@chapter}{%
  \addtocontents{dbwarninglist}{\protect\addvspace{10\p@}}%
  \addtocontents{dbremarklist}{\protect\addvspace{10\p@}}%
  \addtocontents{dbexamplelist}{\protect\addvspace{10\p@}}%
  \addtocontents{dbfaqlist}{\protect\addvspace{10\p@}}%
}{}{}
%
\sisetup{locale=FR,detect-all}
\floatsetup[table]{style=plaintop}
%
% \DeclareRobustCommand*{\package}{\textsf}
% \DeclareRobustCommand*{\Package}[1]{%
%   \IfLanguageName{french}{package }{}%
%   \package{#1}%
%   \IfLanguageName{english}{ package}{}%
%   \xspace%
% }%
\DeclareRobustCommand*{\package}{%
  \texorpdfstring{%
    \@ifstar{\package@star}{\package@nostar}%
  }{%
    \package@nostar%
  }%
}
\DeclareRobustCommand*{\package@star}[2][]{%
  \ifthenelse{\isempty{#1}}{%
    \href{http://www.ctan.org/pkg/#2}{\textsf{#2}}%
  }{%
    \href{#1}{\textsf{#2}}%
  }%
}
\DeclareRobustCommand*{\package@nostar}[2][]{%
  \textsf{#2}%
}
\DeclareRobustCommand*{\Package}{%
  \IfLanguageName{french}{package }{}%
  \@ifstar{\package@star}{\package@nostar}%
  % \IfLanguageName{english}{ package}{}%
  % \xspace%
}
%
\DeclareRobustCommand*{\class}{\package}
\DeclareRobustCommand*{\Class}{%
  \texorpdfstring{%
    \IfLanguageName{french}{classe }{}%
    \@ifstar{\package@star}{\package@nostar}%
  }{%
    \IfLanguageName{french}{classe }{}%
    \package@nostar%
  }%
  % \@ifstar{\package@star}{\package@nostar}%
  % \IfLanguageName{english}{ class}{}%
  % \xspace%
}%
%
\DeclareRobustCommand*{\file}[1]{\bgroup% \color{magenta}
  \texttt{#1}\egroup}
\DeclareRobustCommand*{\File}[1]{%
  \IfLanguageName{french}{fichier }{}%
  \file{#1}%
  \IfLanguageName{english}{ file}{}%
  \xspace%
}%
\DeclareRobustCommand*{\directory}{\file}
\DeclareRobustCommand*{\Directory}[1]{%
  \IfLanguageName{french}{répertoire }{}%
  \directory{#1}%
  \IfLanguageName{english}{ directory}{}%
  \xspace%
}%
\DeclareRobustCommand*{\program}{\file}
\DeclareUrlCommand\urldirectory{\urlstyle{tt}}
%
\AtBeginDocument{%
  \renewcommand*{\meta}[2][meta]{%
    \bgroup%
    \normalfont
    \ttfamily%
    \textcolor{#1}{$\langle$\emph{#2}$\rangle$}%
    \egroup%
  }%
}%
%
\colorlet{texcs}{blue}
\colorlet{environment}{teal}
\colorlet{key}{purple}
\colorlet{value}{violet}
\colorlet{keyword4}{key}
\colorlet{keyword5}{magenta}
\colorlet{comment}{gray}
\colorlet{string}{cyan}
\colorlet{meta}{brown}
\colorlet{preamble}{violet}
\lstset{%
  escapeinside=÷÷,
  breaklines=true,
  basicstyle=\normalfont\ttfamily,
  commentstyle=\color{comment},
  keywordstyle=\color{environment},
  keywordstyle=[2]\color{key},
  keywordstyle=[3]\color{value},
  keywordstyle=[4]\color{keyword4},
  keywordstyle=[5]\color{keyword5},
  stringstyle=\color{string},
  columns=flexible,
  % prebreak={\space\Righttorque},
  % postbreak={\space\Lefttorque}
}%
\lstdefinestyle{dbtex}{%
  language=[LaTeX]TeX,
  alsolanguage=[extLaTeX]TeX,
  alsolanguage=[yad]TeX,
  alsolanguage=[glossaries]TeX,
  alsolanguage=[biblatex]TeX,
  alsolanguage=[tcolorbox]TeX,
  texcsstyle=*\color{texcs},
  % numbers=left,
  numberstyle=\small,
}%
\lstset{style=dbtex}
\lstMakeShortInline[style=dbtex]×
%
\tcbuselibrary{documentation,theorems,breakable,skins}
%    \end{macrocode}
% Début du hack fourni par Thomas Sturm pour circonvenir à deux bugs récemment
% introduits dans le \Package{tcolorbox}.
%    \begin{macrocode}
\RenewDocumentEnvironment{docKey}{ O{} +O{} m m +m }{\tcbset{#2,doc
description={#5}}%
  \begin{tcb@manual@entry}%
  \begin{tcb@doc@head}{doc@head@key}%
  \ifblank{#1}{%
    \tcb@Print@Key{#3}\tcb@index@Key{#3}\protected@edef\@currentlabel{#3}\label{key:#3}{\ttfamily
#4}%
  }{%
    \tcb@Print@Key{/#1/#3}\tcb@index@KeyPath{#1}{#3}\protected@edef\@currentlabel{/#1/#3}\label{key:/#1/#3}{\ttfamily
#4}%
  }%
  \tcb@doc@do@description%
  \end{tcb@doc@head}\tcbset{before upper=}}%
  {\end{tcb@manual@entry}}

\def\tcbmakedocSubKey#1#2{%
  \NewDocumentEnvironment{#1}{ O{} +O{} m m +m }{%
    \ifblank{##1}{\def\tcb@key@path{#2}}{\def\tcb@key@path{#2/##1}}%
    \begin{docKey}[\tcb@key@path][##2]{##3}{##4}{##5}}%
      {\end{docKey}}%
  \newenvironment{#1*}{\bgroup\tcb@doc@toindexfalse\begin{#1}}{\end{#1}\egroup}%
}

\renewcommand{\docAuxKey@}[2][]{%
  \ifblank{#1}{%
    \tcb@Print@Key{#2}\tcb@index@Key{#2}%
  }{%
    \tcb@Print@Key{/#1/#2}\tcb@index@KeyPath{#1}{#2}%
}}%

\renewcommand{\docAuxKey@star}[2][]{%
  \ifblank{#1}{%
    \tcb@Print@Key{#2}%
  }{%
    \tcb@Print@Key{/#1/#2}%
}}%
%    \end{macrocode}
% Fin du hack fourni par Thomas Sturm.
%    \begin{macrocode}
\tcbset{dbtcb/.style={%
    breakable,
    fonttitle=\bfseries,
    enlarge top by=1mm,
    separator sign dash
  }%
}%
%
\newtcbtheorem[list inside=dbwarninglist,number within=chapter]{dbwarning}{Avertissement}{%
  colback=red!5!white,
  colframe=red!75!black,
  dbtcb
}{wa}
%
\newtcbtheorem[list inside=dbexamplelist,number within=chapter]{dbexample}{Exemple}{%
  colback=lime!5!white,
  colframe=lime!75!black,
  dbtcb
}{ex}
%
\newtcbtheorem[list inside=dbremarklist,number within=chapter]{dbremark}{Remarque}{%
  colback=cyan!5!white,
  colframe=cyan!75!black,
  dbtcb
}{rq}
% FAQs sous forme de \enquote{théorème}.
\newtcbtheorem[list inside=dbfaqlist,number within=chapter]{dbfaq}{Question}{%
  colback=lightgray!5!white,
  colframe=lightgray!75!black,
  fontupper=\slshape,
  dbtcb
}{faq}
%
% Déclaration des nouveaux noms de \enquote{théorèmes} en vue d'en faciliter le
% référencement grâce au \Package{cleveref}.
\AtEndPreamble{%
  \crefname{tcb@cnt@dbexample}{exemple}{exemples}%
  \crefname{tcb@cnt@dbremark}{remarque}{remarques}%
  \crefname{tcb@cnt@dbwarning}{avertissement}{avertissements}%
  \crefname{tcb@cnt@dbfaq}{question}{questions}%
}%
%
\tcbset{%
  /tcb/doclang/environment content=contenu de l'environnement,
  /tcb/doclang/color= (couleur),
  /tcb/doclang/colors=Couleurs,
  /tcb/doclang/environments=Environnements,
  /tcb/doclang/keys=Clés,
  /tcb/doclang/values=Valeurs,
  /tcb/doclang/pageshort=p.,
  /tcb/documentation listing style=dbtex,
  /tcb/color command=texcs,
  /tcb/color environment=environment,
  /tcb/color key=key,
  /tcb/color value=value,
  index format=pgfchapter,
  index colorize,
  index annotate=false,
  enhanced,
  % index actual={},
  every box/.style={documentation listing style=dbtex},
  % doc left indent=-15mm,
  % doc right indent=-15mm+2em
}%
\tcbset{codes/.style={%
    listing only,
    enlarge top by=1mm,
    colframe=ExampleFrame,
    colback=ExampleBack,
    fonttitle=\bfseries,
    fontupper=\small,
    enhanced,
    listing options={style=dbtex}
  }%
}%
\newtcblisting{origpreamblecode}[1][]{%
  % beamer,%
  codes,%
  drop lifted shadow,
  #1%
}%
\newtcblisting{origbodycode}[1][]{%
  codes,%
  #1%
}%
\begingroup%
\catcode`\^^M\active%
\global\def\activeeol{^^M}%
\endgroup%
\newenvironment{preamblecode}{%
  \@ifnextchar[\YAD@preamblecode@\YAD@preamblecode@noargs%]
}{%
  \endorigpreamblecode%
}%
\def\YAD@preamblecode@[#1]{%
  \origpreamblecode[#1]%
}%
\def\YAD@preamblecode@noargs#1{%
  \edef\temp{[]\activeeol\string#1}%
  \expandafter\YAD@preamblecode@\temp%
}%
\newenvironment{bodycode}{%
  \@ifnextchar[\YAD@bodycode@\YAD@bodycode@noargs%
}{%
  \endorigbodycode%
}%
\def\YAD@bodycode@[#1]{%
  \origbodycode[#1]%
}%
\def\YAD@bodycode@noargs#1{%
  \edef\temp{[]\activeeol\string#1}%
  \expandafter\YAD@bodycode@\temp%
}%
\tcbset{samples/.style={%
    codes,
    % listing options={rangebeginprefix=\\,rangeendsuffix=\}}
  }%
}%
\newtcbinputlisting{\preamblesample}[3][these.tex]{%
  samples,
  drop lifted shadow,
  listing file={master-slaves-files-sample/#1},
  listing options={rangebeginprefix=\\,rangeendsuffix=\},#2},
  #3,
}%
\newtcbinputlisting{\bodysample}[3][these.tex]{%
  samples,
  listing file={master-slaves-files-sample/#1},
  listing options={rangebeginprefix=\\,rangeendsuffix=\},#2},
  #3,
}%
\newcommand{\obligatoire}{%
  \marginpar{%
    \scriptsize%
    \raggedleft%
    % \bfseries%
    \hyperref[sec:comm-oblig]{%
      % \colorbox{red!75!black}{%
        % \textcolor{white}{%
        \textcolor{red!75!black}{\faLock}%
          \ifnum\getpagerefnumber{sec:comm-oblig}=\thepage%
          \else%
          \textsuperscript{\ding{213}\,\kvtcb@text@pageshort\,\pageref*{sec:comm-oblig}}%
          \fi%
          % Obligatoire%
        % }%
      % }%
    }%
  }%
}%
\newcommand{\mandatory}{%
  \hyperref[sec:comm-oblig]{%
    \textcolor{red!75!black}{\faLock}%
    \ifnum\getpagerefnumber{sec:comm-oblig}=\thepage%
    \else%
    \textsuperscript{\ding{213}\,\kvtcb@text@pageshort\,\pageref*{sec:comm-oblig}}%
    \fi%
  }%
}%
%
% Suppression du gras dans la commande ×\docAuxCommand× :
\def\disp@com#1{\colDef{\ttfamily#1}}
%
\DeclareRobustCommand*{\yat}{\textsl{\texttt{yathesis}}}
\DeclareRobustCommand*{\yatpa}{package \textsl{\texttt{yathesisdoc}}\xspace}
\DeclareRobustCommand*{\yatcl}{classe \yat\xspace}
\DeclareRobustCommand*{\unixtldirectory}{\directory{/usr/local/}}
\DeclareRobustCommand*{\wintldirectory}{\directory{c:/}}
\DeclareRobustCommand*{\tldistdirectory}{\directory{texlive/2013/texmf-dist/}}
\DeclareRobustCommand*{\miktexdistdirectory}{[TODO]}
\DeclareRobustCommand*{\docdirectory}{\directory{doc/}}
\DeclareRobustCommand*{\texdirectory}{\directory{tex/}}
\DeclareRobustCommand*{\sourcedirectory}{\directory{source/}}
\DeclareRobustCommand*{\jobdirectory}{\directory{latex/\jobname}}
\DeclareRobustCommand*{\jobdocdirectory}{\docdirectory\jobdirectory}
%
\newcommand{\phrase}{%
  \@ifstar{\phrase@star}{\phrase@nostar}%
}
\newcommand{\phrase@star}[1]{--- #1}
\newcommand{\phrase@nostar}[1]{--- #1 ---}
%
\makeglossaries
\loadglsentries{glossaries/glossary}
\loadglsentries{glossaries/acronyms}
\addbibresource{\jobname.bib}
%
\newcommand{\pdf}{\acrshort{pdf}\xspace}
%    \end{macrocode}
% For the \yatcl' documentation, using \Class{ltxdoc}, we need to
% perform some changes in \Package{glossaries} provided by its author.
%    \begin{macrocode}
\renewcommand*{\newacronymhook}{%
\edef\tmp{\noexpand\textsc{\the\glsshorttok}}%
\expandafter\glsshorttok\expandafter{\tmp}%
}%
\renewcommand*{\acrpluralsuffix}{\textup{\glspluralsuffix}}
%    \end{macrocode}
% On définit une nouvelle clé pour la commande ×\includegraphics× de
% sorte à pouvoir inclure les pages d'un \File{.pdf} externe en
% indiquant non pas des numéros de pages absolus, mais plutôt des
% références qui devront être labellisées au moyen de la commande
% ×\zlabel× du \Package{zref} (ce dernier devant être chargé dans le
% \File{.tex} externe du \File{.pdf} avec les options ×user× et
% ×abspage×).
%    \begin{macrocode}
\define@key{Gin}{bylabel}{%
    \edef\@tempa{{Gin}{page=\zref@extract{#1}{abspage}}}%
    \expandafter\setkeys\@tempa%
}%
%    \end{macrocode}
% On définit une commande d'inclusion de \enquote{copie d'écran} qui
% inclut une page d'un \File{.pdf} externe en indiquant non pas des
% numéros de pages absolus, mais plutôt des références stipulées au
% moyen de la clé ×bylabel× ci-dessus. Ceci nécessite de charger le
% \Package{zref} avec l'option ×xr× dans le \File{.tex} où sont
% incluses les pages du \File{.pdf} externe.
%    \begin{macrocode}
\zexternaldocument{master-slaves-files-sample/these}%
\newcommand{\screenshot}[2][.45]{%
  \fbox{\includegraphics[bylabel=#2,width=#1\linewidth-2\fboxsep-2\fboxrule]{master-slaves-files-sample/these}}%
}%
%    \end{macrocode}
%
%    \begin{macrocode}
%</class-doc-package>
%    \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|class-doc-package>
%    \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}
%
%    \begin{macrocode}
%</class|class-doc-package>
%    \end{macrocode}
%
%    \begin{macrocode}
%<*class-doc-package>
%    \end{macrocode}
%
% On définit la macro publique où est stocké le nom du répertoire des
% \enquote{réglages} où se trouvent les divers fichiers de configuration.
% \begin{macro}{\configurationdirectory}
%    \begin{macrocode}
\newcommand*{\configurationdirectory}{\YAD@configuration@directory}
%    \end{macrocode}
% \end{macro}
%
% On définit la macro publique où est stocké le nom du fichier
% de configuration \emph{local} de la thèse.
% \begin{macro}{\configurationfile}
%    \begin{macrocode}
\newcommand*{\configurationfile}{\YAD@configuration@file}
%    \end{macrocode}
% \end{macro}
%
% On définit la macro publique 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}{\characteristicsfile}
%    \begin{macrocode}
\newcommand*{\characteristicsfile}{\YAD@characteristics@file}
%    \end{macrocode}
% \end{macro}
%
% On définit les macros (privée et publique) où est stocké le nom du fichier
% esclave dédiées aux macros personnelles.
% \begin{macro}{\macrosfile}
%    \begin{macrocode}
\newcommand*{\macrosfile}{macros.tex}
%    \end{macrocode}
% \end{macro}
%
% On définit la macro publique où est stocké le nom du répertoire des fichiers
% auxiliaires, par exemple de base bibliographique (fichier(s) \file{.bib}) et
% de base terminologique (fichier(s) \file{.tex} contenant les définitions par
% exemple du glossaire, des acronymes, des symboles).
% \begin{macro}{\configurationdirectory}
%    \begin{macrocode}
\newcommand*{\auxiliarydirectory}{auxiliaires}
%    \end{macrocode}
% \end{macro}
%
% On définit la macro (publique) où est stocké le nom du fichier contenant les
% définitions des termes du glossaire.
% \begin{macro}{\glossaryfile}
%    \begin{macrocode}
\newcommand*{\glossaryfile}{glossaire.tex}
%    \end{macrocode}
% \end{macro}
%
% On définit la macro (publique) où est stocké le nom du fichier contenant les
% définitions des acronymes.
% \begin{macro}{\acronymsfile}
%    \begin{macrocode}
\newcommand*{\acronymsfile}{acronymes.tex}
%    \end{macrocode}
% \end{macro}
%
% On définit la macro (publique) où est stocké le nom du fichier contenant les
% définitions des acronymes.
% \begin{macro}{\symbolsfile}
%    \begin{macrocode}
\newcommand*{\symbolsfile}{symboles.tex}
%    \end{macrocode}
% \end{macro}
%
% On définit la macro (publique) où est stocké le nom du répertoire des images
% de la thèse.
% \begin{macro}{\imagesdirectory}
%    \begin{macrocode}
\newcommand*{\imagesdirectory}{images}
%    \end{macrocode}
% \end{macro}
%
% On définit la macro (publique) où est stocké le nom du fichier maître de la
% thèse.
% \begin{macro}{\thesismasterfile}
%    \begin{macrocode}
\newcommand*{\thesismasterfile}{these}
%    \end{macrocode}
% \end{macro}
%
%    \begin{macrocode}
%</class-doc-package>
%    \end{macrocode}
%
%    \begin{macrocode}
%<*class>
%    \end{macrocode}
%
% Recherche automatique des fichiers images dans le \Directory{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{\acrshort*{url}}×}{×\meta{texte}×}× n'affiche que le
% \meta{texte} et les hyperliens des macros
% ×\url× sont supprimés. En outre, les commandes
% ×\href{×\meta{\acrshort*{url}}×}{×\meta{texte}×}× du \Package{hyperref} sont
% automatiquement remplacées par :
% \begin{itemize}
% \item \meta{texte}×\footnote{×\meta{\acrshort*{url}}×}× ;
% \item \meta{texte} ×(×\meta{\acrshort*{url}}×)× ;
% \end{itemize}
% selon que ×\href{×\meta{\acrshort*{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{\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}%
  }%
}%
%    \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{reinitialize person/.style={%
    corps=,%
    role=,%
    affiliation=,%
    affiliationsecondary=,%
    female=false,%
    male=true,%
    professor=false,%
    mcf=false,%
    mcf*=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}
%
% \begin{macro}{\YAD@staff}
%    \begin{macrocode}
\newcommand*{\YAD@staff}[4][]{%
%    \end{macrocode}
% On continue.
%    \begin{macrocode}
  \dtlexpandnewvalue%
  %
  \yadsetup{#1}%
  %
  \ifbool{YAD@professor}{%
    \ifboolexpr{%
      bool {YAD@female} or %
      not bool {YAD@male}%
    }{%
      \yadsetup{corps=professorfem,#1}%
    }{%
      \yadsetup{corps=professor,#1}%
    }%
  }{%
  }%
  \ifboolexpr{ bool {YAD@mcf} }{%
    \yadsetup{corps=mcf,#1}%
  }{%
  }%
  \ifboolexpr{ bool {YAD@mcf*} }{%
    \yadsetup{corps=mcf*,#1}%
  }{%
  }%
  \ifboolexpr{ bool {YAD@juniorresearcher} }{%
    \ifboolexpr{%
      bool {YAD@female} or %
      not bool {YAD@male}%
    }{%
      \yadsetup{corps=juniorresearcherfem,#1}%
    }{%
      \yadsetup{corps=juniorresearcher,#1}%
    }%
  }{%
  }%
  \ifboolexpr{ bool {YAD@juniorresearcher*} }{%
    \ifboolexpr{%
      bool {YAD@female} or %
      not bool {YAD@male}%
    }{%
      \yadsetup{corps=juniorresearcherfem*,#1}%
    }{%
      \yadsetup{corps=juniorresearcher*,#1}%
    }%
  }{%
  }%
  \ifboolexpr{ bool {YAD@seniorresearcher} }{%
    \ifboolexpr{%
      bool {YAD@female} or %
      not bool {YAD@male}%
    }{%
      \yadsetup{corps=seniorresearcherfem,#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.
% \changes{v0.99e}{2014/06/15}{La clé \protect\refAux{corporation} est remplacée
%   par (et devient un alias de) la clé \protect\refKey{corps}}
%    \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{reinitialize person}%
}%
%    \end{macrocode}
% \end{macro}
%
% \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{\@tempswatrue\YAD@supervisor}{\@tempswafalse\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=supervisorfem,#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%
  \else%
  \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=cosupervisorfem,#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=comonitorfem,#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}{committeepresidentfem}}%
  }{%
  }{%
    \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=committeepresidentfem,#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@fistname=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}}%
        }{%
          \YAD@translation{\YAD@the@staff-pl-hdr}%
        }{%
          \YAD@translation{\YAD@the@staff-pl}%
        }%
      }{%
        \ifboolexpr{%
          bool {YAD@hdr} and test {\ifdefstring{\YAD@the@staff}{supervisors-in-committee}}%
        }{%
          \YAD@translation{\YAD@the@staff-hdr}%
        }{%
          \YAD@translation{\YAD@the@staff}%
        }%
      }%
    }{%
    }%
    &
    % Prénom
    \YAD@reach@file{%
      %
      \ifthenelse{\DTLiseq{\YAD@committeemember@fistname}{}}{%
        \YAD@generic@argument@translate{firstname}%
      }{%
        \YAD@committeemember@fistname%
      }%
%    \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}{%
      \begin{tabular}[t]{>{\itshape}lll}
      }{%
        \begin{tabular}[t]{>{\itshape}l@{ }ll}
        }%
        \DTLforeach*{YAD@supervisors}{%
          \YAD@committeemember@lastname=lastname,%
          \YAD@committeemember@fistname=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@fistname}{}}{%
              \YAD@generic@argument@translate{firstname}%
            }{%
              \YAD@committeemember@fistname%
            }%
          }
          % 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. Veuillez le supprimer%
%           }%
%         }{%
%         }%
        \@ifstar{\@tempswatrue\csuse{YAD@starnostar@print#2logo}}{\@tempswafalse\csuse{YAD@starnostar@print#2logo}}%
      }%
      \csdef{YAD@starnostar@print#2logo}{%
        \yadsetup{url=,##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}%
      }%
    }%
  }%
}{%
}%
%    \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]{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{macro}{\date}
%    \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{\YAD@daydate}{\YAD@monthdate}{\YAD@yeardate}%
      }%
    }{%
      \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{\YAD@daydate}{\YAD@monthdate}{\YAD@yeardate}%
      }%
    }{%
      \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}
%
% \begin{macro}{\YAD@starttoc}
%   On définit la commande ×\YAD@starttoctoc×, analogue à
%   ×\starttoc× fournie par \file{latex.ltx}, ne concernant que la
%   table des matières (×toc×), qui génère mais n'importe pas le
%   \File{.toc}.
%    \begin{macrocode}
\newcommand{\YAD@starttoctoc}{%
  \begingroup
    \if@filesw
      \expandafter\newwrite\csname tf@toc\endcsname
      \immediate\openout \csname tf@toc\endcsname \jobname.toc\relax
    \fi
    \@nobreakfalse
  \endgroup}
%    \end{macrocode}
% On fait générer le \File{.toc}, en s'assurant que cela se fera
% après la commande ×\shorttableofcontents× du \Package{shorttoc}
% utilisée dans la redéfinition de la commande ×\tableofcontents×
% ci-après (obligation de ce package).
%    \begin{macrocode}
\AtEndDocument{\YAD@starttoctoc}
%    \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
% s'appuie sur le \Package{shorttoc}, avec hack de sorte qu'elle
% soit compatible avec (et exprimée en les même termes que) le
% \Package{tocvsec2}. 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.
%
% % Pour commencer, on doit faire en sorte que la commande
% % ×\shorttableofcontents× utilise la définition originale de la commande
% % ×\chapter× et pas celle qu'on a patchée dans le but de simplifier l'usage de
% % sa version étoilée.
% %    \begin{macrocode}
% \xpatchcmd{\shorttableofcontents}{\chapter}{\YAD@ORI@chapter}{}{}
% %    \end{macrocode}
%
% \begin{macro}{\tableofcontents}
%    \begin{macrocode}
\let\YAD@ORI@setcounter\setcounter%
\let\YAD@ORI@tableofcontents\tableofcontents%
\newif\if@YAD@knownsect%
%    \end{macrocode}
% On redéfinit la commande ×\shorttableofcontents× du \Package{shorttoc} en
% retirant ×\@mkboth{\uppercase{#1}}{\uppercase{#1}}× qui provoque sinon une
% erreur au niveau de la commande ×\tableofcontents× si elle est employée avec
% un argument optionnel.
%    \begin{macrocode}
\def\shorttableofcontents#1#2{\bgroup\c@tocdepth=#2\@restonecolfalse
  \if@tightshtoc
     \parsep\z@
  \fi
  \if@twocolumn\@restonecoltrue\onecolumn\fi
  \chapter*{#1}%
  \@startshorttoc{toc}\if@restonecol\twocolumn\fi\egroup}
%    \end{macrocode}
\renewcommand{\tableofcontents}{%
  \booltrue{YAD@tableofcontents@used}%
  \cleardoublepage%
  \YAD@phantomsection%
  \let\cmdKV@YAD@name\contentsname%
  \@ifnextchar[{\tableofcontents@YAD@with@argument}{\tableofcontents@YAD@without@argument}%]
}%
\newcommand\tableofcontents@YAD@without@argument{%
  \YAD@ORI@tableofcontents%
}%
\newcommand\tableofcontents@YAD@with@argument[1][]{%
  \yadsetup{#1}%
  \renewcommand{\setcounter}[2]{}%
  %
  \ifthenelse{\equal{\cmdKV@YAD@depth}{none}}{%
    \shorttableofcontents{\cmdKV@YAD@name}{-10}%
    \@YAD@knownsecttrue%
  }{%
  }%
  \ifthenelse{\equal{\cmdKV@YAD@depth}{part}}{%
    \shorttableofcontents{\cmdKV@YAD@name}{-1}%
    \@YAD@knownsecttrue%
  }{%
  }%
  \ifthenelse{\equal{\cmdKV@YAD@depth}{chapter}}{%
    \shorttableofcontents{\cmdKV@YAD@name}{0}%
    \@YAD@knownsecttrue%
  }{%
  }%
  \ifthenelse{\equal{\cmdKV@YAD@depth}{section}}{%
    \shorttableofcontents{\cmdKV@YAD@name}{1}%
    \@YAD@knownsecttrue%
  }{%
  }%
  \ifthenelse{\equal{\cmdKV@YAD@depth}{subsection}}{%
    \shorttableofcontents{\cmdKV@YAD@name}{2}%
    \@YAD@knownsecttrue%
  }{%
  }%
  \ifthenelse{\equal{\cmdKV@YAD@depth}{subsubsection}}{%
    \shorttableofcontents{\cmdKV@YAD@name}{3}%
    \@YAD@knownsecttrue%
  }{%
  }%
  \ifthenelse{\equal{\cmdKV@YAD@depth}{paragraph}}{%
    \shorttableofcontents{\cmdKV@YAD@name}{4}%
    \@YAD@knownsecttrue%
  }{%
  }%
  \ifthenelse{\equal{\cmdKV@YAD@depth}{subparagraph}}{%
    \shorttableofcontents{\cmdKV@YAD@name}{5}%
    \@YAD@knownsecttrue%
  }{%
  }%
  \ifthenelse{\equal{\cmdKV@YAD@depth}{all}}{%
    \shorttableofcontents{\cmdKV@YAD@name}{100}%
    \@YAD@knownsecttrue%
  }{%
  }%
  \if@YAD@knownsect%
  \else%
  \shorttableofcontents{\cmdKV@YAD@name}{3}%
  \YAD@ClassWarningNoLine{%
    La valeur (`\cmdKV@YAD@depth') passee a la cle `depth'\MessageBreak%
    en argument de la commande \protect\tableofcontents\space n'est
    pas\MessageBreak%
    un des niveaux de sectionnement connus (`part', `chapter',\MessageBreak%
    `section', `subsection', `subsubsection', `paragraph',\MessageBreak%
    `subparagraph' et `all').\MessageBreak%
    Le niveau `subsection' va etre utilise\MessageBreak%
    a la place%
  }%
  \fi%
  \let\setcounter\YAD@ORI@setcounter%
  \resettocdepth*%
}%
%
%    \end{macrocode}
% \end{macro}
%
% Globalement dans le document, la table des matières et la
% numérotation des paragraphes vont jusqu'aux sous-sections
%    \begin{macrocode}
\AtBeginDocument{\maxtocdepth{\YAD@tocdepth}}%
\AtBeginDocument{\maxsecnumdepth{\YAD@secnumdepth}}%
%    \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}{%
  \ifthenelse{%
    \value{secnumdepth}>-1
    \and
    \value{chapter}>0
  }{%
    \MakeUppercase\chaptername{}\ \thechapter.%
  }{%
  }
  \chaptertitle%
}%
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\YAD@section@header}
%    \begin{macrocode}
\newcommand*{\YAD@section@header}{%
  \ifthenelse{%
    \value{secnumdepth}>0
    \and
    \value{chapter}>0
  }{%
    \thesection.%
  }{%
  }
  \sectiontitle%
}%
%    \end{macrocode}
% \end{macro}
% Par défaut, rien n'est numéroté au début du document.
%    \begin{macrocode}
  \AtBeginDocument{%
    \setsecnumdepth{none}%
    \frontmatter%
  }%
%    \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}%
  \setsecnumdepth{none}%
  \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%
      \booltrue{YAD@logo@before}%
    }{%
    }%
    \ifdef{\printinstitutelogo}{%
      \ifbool{YAD@logo@before}{%
        \hspace{\stretch{1}}%
      }{%
      }%
      \printinstitutelogo%
      \booltrue{YAD@logo@before}%
    }{%
    }%
    \ifdef{\printcoinstitutelogo}{%
      \ifbool{YAD@logo@before}{%
        \hspace{\stretch{1}}%
      }{%
      }%
      \printcoinstitutelogo%
      \booltrue{YAD@logo@before}%
    }{%
    }%
    \ifdef{\printcompanylogo}{%
      \ifbool{YAD@logo@before}{%
        \hspace{\stretch{1}}%
      }{%
      }%
      \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}[]{%
  \restoregeometry%
%    \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}
  \setsecnumdepth{none}%
  \resettocdepth*%
  \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}
  \setsecnumdepth{none}%
  \resettocdepth*%
  \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}
  \setsecnumdepth{none}%
  \resettocdepth*%
  \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}
  \resettocdepth*%
  \setsecnumdepth{\YAD@secnumdepth}%
  \YAD@setfoot%
}%
%    \end{macrocode}
% Extension de la commande ×\mainmatter× de sorte qu'elle applique le style de
% page ×mainmatter×.
%    \begin{macrocode}
\xapptocmd{\mainmatter}{%
  \booltrue{YAD@mainmatter@used}%
  \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.\
      }{%
      }
    }{%
      \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%
  \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}
  \setsecnumdepth{none}%
%    \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%
  \setsecnumdepth{none}%
  \YAD@bookmarksetup{startatroot}%
  \YAD@setfoot%
}%
%    \end{macrocode}
% Extension de la commande ×\backmatter× de sorte qu'elle applique le style de
% page ×backmatter×.
% \begin{macro}{\backmatter}
%    \begin{macrocode}
\xapptocmd{\backmatter}{%
  \pagestyle{backmatter}%
}{}{}%
%    \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}
  \setsecnumdepth{none}%
  \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}
  \setsecnumdepth{none}%
  \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}
  \setsecnumdepth{none}%
  \cleardoublepage%
  \YAD@phantomsection%
  \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}
  \setsecnumdepth{none}%
}%
%    \end{macrocode}
%
% \begin{macro}{\printlaboratory}
%    \begin{macrocode}
% \newcommand*{\printlaboratory}{\@ifstar{\@tempswatrue\YAD@laboratory@name@temp}{\@tempswafalse\YAD@laboratory@name@temp}}%
\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@nolaboratoryadress}{%
    }{%
      \YAD@ClassError[nolaboratoryadress]{%
        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}
% On n'affiche le numéro d'ordre de la thèse 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}
  \ifboolexpr{%
    bool {YAD@cover@page}%
    or (bool {YAD@nofrontcover} and test {\IfLanguageName{\YAD@mainlanguage}})%
  }{%
    \ifdraft{}{\vspace*{\stretch{1}}}%
    % \vspace*{\stretch{1}}%
    \raggedleft{%
      \itshape%
      \sffamily%
      \YAD@translation{ordernumber}%
      \IfLanguageName{french}{%
        \FBcolonspace%
      }{%
      }: \printordernumber%
    }%
  }{%
  }%
  \ifdraft{}{\vspace*{\stretch{.5}}}%
  % \vspace*{\stretch{.5}}%
  \par%
}{%
}%
    % \begin{minipage}[c][\YAD@otherboxheight][c]{\YAD@titleboxwidth}
    %   \ifdraft{}{\vspace*{\stretch{.25}}}%
    \begin{center}
      \YAD@ifemptyorundef{\printinstitute}{%
        \YAD@generic@argument@translate{institute}%
        \ifbool{YAD@noinstitute}{%
        }{%
          \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}}%
      }%
      \ifdraft{}{\vspace*{\stretch{1.5}}}%
      % \vspace*{\stretch{1.5}}%
      \par%
      \YAD@translation{doctoralschool}
      \YAD@ifemptyorundef{\printdoctoralschool}{%
        \YAD@generic@argument@translate{doctoralschool}%
        \ifbool{YAD@nodoctoralschool}{%
        }{%
          \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}%
      }%
      \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}%
          % }%
        }{%
          \ifdraft{}{\vspace*{\stretch{1}}}%
          % \vspace*{\stretch{1}}%
          \par%
          \YAD@translation{defendedon}
          \YAD@ifemptyorundef{\printdate}{%
            \YAD@generic@argument@translate{date}%
          }{%
            \textbf{\printdate}%
          }%
        }%
      }%
      \ifYAD@hdr%
      \else%
      \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}}%
      \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}%
\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%
  % \setlength{\footskip}{-15pt}%
  \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}%
    }{%
    }%
  }%
  ][]{%
    \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@nolaboratoryadresstrue%
}%
%    \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}
% 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}{...}{...}× ;
% \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 précédents).
% \end{itemize}
% Pour ce faire, on recourt aux bascules ×\setsecnumdepth{none}× and
% ×\resetsecnumdepth× du \Package{tocvsec2}.
% % Mais, avant cela, on redéfinit la
% % macro ×\resetsecnumdepth× qui souffre de \enquote{spurious spaces} dans les
% % versions antérieures à celles en date du 2014/03/10.
% %    \begin{macrocode}
% \@ifpackagelater{tocvsec2}{2014/03/10}{%
% }{%
%   \renewcommand\resetsecnumdepth{%
%     \@ifstar{%
%       \setcounter{secnumdepth}{\value{max@secnumdepth}}%
%       \edef\stack@secnumdepth{\the\c@secnumdepth\relax}%
%     }{%
%       \ifx\stack@secnumdepth\@empty%
%       \PackageWarning{tocvsec2}{There is no previous value for secnumdepth}%
%       \else%
%       \afterassignment\gobble@secnumdepth%
%       \expandafter\c@secnumdepth\expandafter\numexpr\stack@secnumdepth\@nil%
%       \fi%
%     }%
%   }%
% }%
\let\YAD@ORI@chapter\chapter%
\AfterPreamble{% delay the redefinition when titlesec has done its own
  \renewcommand\chapter{%
    \cleardoublepage%
    \YAD@phantomsection%
    \ifbool{YAD@output@paper}{%
    }{%
      \YAD@bookmarksetup{startatroot}%
    }%
    \@ifstar{\YAD@starred@chapter}{\YAD@unstarred@chapter}%
  }%
  \newcommand{\YAD@starred@chapter}{%
    \setsecnumdepth{none}%
    \YAD@ORI@chapter%
  }%
  \newcommand{\YAD@unstarred@chapter}{%
%    \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}
    \if@mainmatter%
    \resetsecnumdepth*%
    \fi%
    \YAD@ORI@chapter%
  }%
  % \newcommand{\YAD@arg@chapter}[2][]{%
  %   \ifthenelse{\isempty{#1}}{%
  %     \YAD@ORI@chapter{#2}%
  %     \def\chaptertitle{#2}%
  %   }{%
  %     \YAD@ORI@chapter[#1]{#2}%
  %     \def\chaptertitle{#1}%
  %   }%
  % }%
  % \newcommand{\YAD@noarg@chapter}[1]{%
  %   \YAD@ORI@chapter{#1}%
  %   \def\chaptertitle{#1}%
  % }%
%    \end{macrocode}
% On ne veut pas utiliser cette nouvelle définition de ×\chapter*× pour
% ×\tableofcontents× et les listes similaires.
%    \begin{macrocode}
  % \xpatchcmd{\tableofcontents}{\chapter}{\YAD@ORI@chapter}{}{}%
  % \xpatchcmd{\shorttableofcontents}{\chapter}{\YAD@ORI@chapter}{}{}%
  % \xpatchcmd{\listoftables}{\chapter}{\YAD@ORI@chapter}{}{}%
  % \xpatchcmd{\listoffigures}{\chapter}{\YAD@ORI@chapter}{}{}%
%    \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}{\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]{%
%   \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]{%
%   \setsecnumdepth{none}%
%   \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*}{%
%   \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]{%
%   \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%
%   \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]{%
%   \setsecnumdepth{none}%
%   \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%
%   \setsecnumdepth{\YAD@secnumdepth}%
%   \YAD@bookmarksetup{startatroot}%
% }%
% \AfterEndEnvironment{conclusion*}{%
%   \appendix%
%   \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
%    \begin{macrocode}
\AtEndPreamble{%
  \@ifpackageloaded{biblatex}{%
    \defbibheading{bibintoc}[\bibname]{\chapter*{#1}}%
    \defbibheading{subbibintoc}[\bibname]{\section{#1}}%
%    \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}%
      \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-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-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}
%
%    \begin{macrocode}
%</class>
%    \end{macrocode}
%
%    \begin{macrocode}
%<*class|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{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 researches 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 researches has been
  prepared at the following research units.}%
\expression{juniorresearcher}{charg\'e de recherche}{Junior Researcher}%
\expression{juniorresearcherfem}{charg\'ee de recherche}{Junior Researcher}%
\expression{juniorresearcher*}{charg\'e de recherche
  \textsc{hdr}}{\textsc{hdr} Junior Researcher}%
\expression{juniorresearcherfem*}{charg\'ee de recherche
  \textsc{hdr}}{\textsc{hdr} Junior Researcher}%
\expression{cosupervisor}{co-directeur}{Co-Supervisor}%
\expression{cosupervisorfem}{co-directrice}{Co-Supervisor}
\expression{comonitor}{co-encadrant}{Co-Monitor}%
\expression{comonitorfem}{co-encadrante}{Co-Monitor}
\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{supervisorfem}{directrice}{Supervisor}
\expression{seniorresearcher}{directeur de recherche}{Senior Researcher}%
\expression{seniorresearcherfem}{directrice de recherche}{Senior Researcher}%
\expression{supervisors-in-committee}{Directeur de th\`ese}{Supervisor}%
\expression{supervisors-in-committee-pl}{Directeurs de th\`ese}{Supervisors}%
\expression{supervisors-in-committee-hdr}{Directeur}{Supervisor}%
\expression{supervisors-in-committee-pl-hdr}{Directeurs}{Supervisors}%
\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}{Examinateurs}{Examiners}%
\expression{guests}{Invit\'e}{Guest}%
\expression{guests-pl}{Invit\'es}{Guests}%
% \expression{introduction}{Introduction}{Introduction}%
\expression{mcf}{\textsc{mcf}}{Lecturer}%
\expression{mcf*}{\textsc{mcf} \textsc{hdr}}{\textsc{hdr} Lecturer}%
\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{committeepresidentfem}{pr\'esidente du jury}{Committee President}%
\expression{professor}{professeur}{Professor}%
\expression{professorfem}{professeure}{Professor}%
\expression{referees}{Rapporteur}{Referee}%
\expression{referees-pl}{Rapporteurs}{Referees}%
\expression{website}{Site}{Web Site}%
\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}{Directeurs}{Supervisors}%
\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 researches defended by}%
\expression{thesistitle}{Titre de la th\`ese}{Thesis Title}%
\expression{thesistitle-hdr}{Titre de l'habilitation \`a diriger les recherches}{Habilitation to conduct researches Title}%
\expression{inprogress}{travail en cours}{work in progress}%
\expression{universitydepartment}{Unit\'e de recherche}{University
  Department}%
%<!translations>\expression{versiondate}{Version interm\'ediaire en date
%<!translations>du}{Work in progress as of}%
%<translations>\expression{inprogressfoottext}{Version interm\'ediaire en
%<translations>date du}{Work in progress as of}%
%<class>\expression{inprogressfoottext}{\translate{lbl-versiondate}}{\translate{lbl-versiondate}}%
\expression{submittedfoottext}{Version soumise en date du}{Submitted work
  as of}%
%    \end{macrocode}
%
%    \begin{macrocode}
%</class|translations>
%    \end{macrocode}
%
% \subsection{Local language definitions for \Package{listings}}
%
% Now, we create some \file{lstlang0.sty} files where are extended
% some (or defined new) languages.
%
% \subsubsection{Extension of the \enquote{LaTeX} TeX dialect}
%
%    \begin{macrocode}
%<*class-lstlang0>
%    \end{macrocode}
%
%    \begin{macrocode}
\lst@definelanguage[extLaTeX]{TeX}[LaTeX]{TeX}{%
  moretexcs={%
    footnotesize,huge,Huge,large,Large,LARGE,large,Large,scriptsize,tiny,%
    includegraphics,cite,ttwplink,vref,LTXtable,tableofcontents,frontmatter,mainmatter,%
    part,chapter,section,subsection,subsubsection,paragraph,subparagraph,RequirePackage,%
    listoftables,listoffigures,lstlistingname,si,SI,ohm,num,space,shorthandon,shorthandoff,%
    abstractname,appendixname,contentsname,listfigurename,listtablename,indexname,%
    figurename,tablename,chaptername,pagename,seename,alsoname,proofname,bibname,glossaryname,%
    addto,captionsenglish,captionsfrench,lipsum,href,url,partname,refname,renewcommand*,%
    appendix,lstlistoflistings,graphicpath,loadglsentries,hypersetup,detect-all,SetWatermarkColor,%
    @pnumwidth,bookmarksetup,DeclareTextCommand%
  },%
  morekeywords=[1]{% Environments' names
    tabular,tabulary,math%
  },%
  morekeywords=[2]{% Keys of key-value lists and packages' names
    bookmarksdepth,see,babel,colorlinks,linktoc%
  },%
  morekeywords=[3]{% Values of key-value lists
    german,ngerman,french,english,spanish%
  },
  alsoletter={-*@1234560}%
}%
%    \end{macrocode}
%
% \subsubsection{Definition of the \enquote{yad} \TeX{} dialect}
%
%    \begin{macrocode}
\lst@definelanguage[yad]{TeX}[LaTeX]{TeX}{%
  % yathesis% TODO : à mettre ailleurs
  moretexcs={% Control sequences' names
    author,title,subtitle,academicfield,speciality,date,supervisor,cosupervisor,comonitor,%
    referee,guest,examiner,committeepresident,pres,institute,coinstitute,company,doctoralschool,%
    laboratory,dedication,frontepigraph,keywords,subject,expression,tableofcontents,submissiondate,%
    maketitle,makedisclaimer,makekeywords,makelaboratory,makeabstract,makededications,makefrontepigraphs,%
    % acknowledgements,frenchabstract,foreword,preface,caution,
    makebackcover,ordernumber,chapter*,%
    disclaimer,newglssymbol,yadsetup%
  },%
  % Environments' names
  morekeywords={%
    yathesis%
  },%
  morekeywords=[1]{% Environments' names
    abstract,dedicationspage,epigraphspage,epigraphs,%
    glossaries,otherlanguage%
  },%
  morekeywords=[2]{% Keys of key-value lists
    professor,seniorresearcher,mcf,juniorresearcher,mcf*,%
    juniorresearcher*,corporation,corps,male,female,%
    distinction,award,affiliation,sepcorpaffilfrench,affiliationsecondary,sepcorpaffilenglish,%
    logo,url,nologo,space,mainlanguage,secnumdepth,tocdepth,depth,version,output,logoheight,%
    address,telephone,fax,email,type,acronym,heading,nowarning,noerror,nofrontcover,role,%
    hyperfootnotes,hyperindex,plainpages,pdfpagemode,pdfpagelayout,locale,gray,frametitle,%
    graphicx,adjustbox,setspace,xcolor,datatool,titleps,draftwatermark,babel,datetime,%
    bookmark,fncychap,%
  },%
  morekeywords=[3]{% Values of key-value lists
    single,onehalf,double,doctor,yadsymbolstyle,%
    part,chapter,section,subsection,subsubsection,paragraph,subparagraph,%
    none,true,false,UseOutlines,TwoPageRight,UK,FR,dvipsnames,table,%
    Sonny,Lenny,Glenn,Conny,Rejne,Bjarne,PetersLenny,Bjornstrup,%
    screen,draft,inprogress,inprogress*,submitted,submitted*,final,paper,paper*,%
    fbox,shadowbox,ovalbox,supervisor*,cosupervisor*,comonitor*,%
  },%
  morekeywords=[4]{% Class and packages options
    warn,nodayofweek,unicode,nostamp,all,numbered,a4paper,leqno,fleqn,10pt,11pt,12pt,%
    detect-all,breaklinks,oneside%
  },%
  morekeywords=[5]{% Translation labels
    email,phone,fax,caution,draft,prepared-at,prepared-at-pl,juniorresearcher,juniorresearcher*,%
    committeemembers,estimateddefensedate,seniorresearcher,supervisors-in-committee,%
    supervisors-in-committee-pl,aim,aimand,examiners,examiners-pl,guests,guests-pl,mcf,mcf*,%
    professor,referees,referees-pl,website,defendedon,supervisedby,thesisdefendedby,thesistitle,%
    inprogress,universitydepartment,inprogressfoottext,submittedfoottext
  },%
  alsoletter={!-*1234560}%
}%
\lst@definelanguage[glossaries]{TeX}[LaTeX]{TeX}%
{%
  % Séquences de contrôles (communément appelées commandes ou macros)
  moretexcs={%
    makeglossaries,printglossaries,printglossary,newglossaryentry,gls,Gls,GLS,glspl,Glspl,GLSpl,newacronym,%
    glsuseri,glsuserii,glsuseriii,glsuseriv,glsuserv,glsuservi,glsshortpluralkey,glslongpluralkey,loadglsentries,%
    glsadd,glstextformat,glsnamefont,glossarypreamble,glossarypostamble,acrshort,acrshort*,acrlong,acrfull,%
    Acrshort,ACRshort,Acrlong,ACRlong,Acrfull,ACRfull,acrshortpl,Acrshortpl,acrlongpl,Acrlongpl,acrfullpl,Acrfullpl,%
    Acrlong*,acronymtype,printacronyms,printsymbols%
  },%
  % Environments' names
  morekeywords={%
  },%
  % Mots-clés de niveau 2 : arguments obligatoires et environnements
  morekeywords=[2]{%
    first,firstplural,plural,sort,nonumberlist,name,acronym,acronyms,symbols,%
    user1,user2,user3,user4,user5,user6,hyper,style,xindy,toc,%
    useri,userii,useriii,useriv,userv,uservi%
  },%
  % Mots-clés de niveau 3 : arguments optionnels valeurs de clés dans clé=valeur
  morekeywords=[3]{%
    listgroup,listhypergroup,%
    textrm,textit,textsf,textsl,texttt,textup,textbf,textsc,textmd,emph,%
    hyperrm,hyperit,hypersf,hypersl,hypertt,hyperup,hyperbf,hypersc,hypermd,hyperemph%
  },%
  sensitive%
}[keywords,tex,comments]%
%
\lst@definelanguage[biblatex]{TeX}[LaTeX]{TeX}%
{%
  % Séquences de contrôles (communément appelées commandes ou macros)
  moretexcs={%
    printbibliography,SetCiteCommand,autocite%
  },%
  % Mots-clés de niveau 1 : arguments optionnels
  morekeywords={%
  },%
  % Mots-clés de niveau 2 : arguments obligatoires et environnements
  morekeywords=[2]{%
    title,heading%
  },%
  % Mots-clés de niveau 3 : arguments optionnels valeurs de clés dans clé=valeur
  morekeywords=[3]{%
    bibintoc%
  },%
  sensitive%
}[keywords,tex,comments]%
%
\lst@definelanguage[tcolorbox]{TeX}[LaTeX]{TeX}%
{%
  % Séquences de contrôles (communément appelées commandes ou macros)
  moretexcs={%
    tcbset,tcbuselibrary%
  },%
  % Mots-clés de niveau 1 : arguments optionnels
  morekeywords={%
  },%
  % Mots-clés de niveau 2 : arguments obligatoires et environnements
  morekeywords=[2]{%
    colback,beamer,skins%
  },%
  % Mots-clés de niveau 3 : arguments optionnels valeurs de clés dans clé=valeur
  morekeywords=[3]{%
    lightgray,red!50!white%
  },%
  sensitive,%
}[keywords,tex,comments]%
%    \end{macrocode}
%
%    \begin{macrocode}
%</class-lstlang0>
%    \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, 16.05.2014
#
#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:fixltx2e
#include:iftex
#include:epigraph
#include:tcolorbox
#include:marvosym
#include:setspace
#include:shorttoc
#include:tocvsec2
#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*
10pt
11pt
12pt
leqno
fleqn
oneside
noerror
noauthor
notitle
noacademicfield
nodate
noinstitute
nodoctoralschool
nolaboratory
nolaboratoryadress
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%>]{%<titre dans la langue principale%>}#n
\subtitle[%<sous-titre dans la langue secondaire%>]{%<sous-titre dans la langue principale%>}#n
\academicfield[%<discipline dans la langue secondaire%>]{%<discipline dans la langue principale%>}#n
\speciality[%<spécialité dans la langue secondaire%>]{%<spécialité dans la langue principale%>}#n
\subject[%<sujet dans la langue secondaire%>]{%<sujet dans la langue principale%>}#n
#
\title{%<titre%>}#n
\subtitle{%<sous-titre%>}#n
\academicfield{%<discipline%>}#n
\speciality{%<spécialité%>}#n
\subject{%<sujet%>}#n
\date{%<jour%>}{%<mois%>}{%<année%>}#n
#
# Institute and entities
\pres{%<nom du PRES%>}#n
\institute{%<nom de l'institut%>}#n
\coinstitute{%<nom de l'institut de cotutelle%>}#n
\company{%<nom de l'entreprise%>}#n
\doctoralschool{%<nom de l'école doctorale%>}#n
\laboratory{%<nom du laboratoire%>}{adresse du laboratoire%>}#n
#
\pres[%<précision(s)%>]{%<nom du PRES%>}#n
\institute[%<précision(s)%>]{%<nom de l'institut%>}#n
\coinstitute[%<précision(s)%>]{%<nom de l'institut de cotutelle%>}#n
\company[%<précision(s)%>]{%<nom de l'entreprise%>}#n
\doctoralschool[%<précision(s)%>]{%<nom de l'école doctorale%>}#n
\laboratory[%<précision(s)%>]{%<nom du laboratoire%>}{%<adresse du laboratoire%>}#n
#
#keyvals:\pres
logo=
logoheight=
url=
#endkeyvals
#keyvals:\institute
logo=
logoheight=
url=
#endkeyvals
#keyvals:\coinstitute
logo=
logoheight=
url=
#endkeyvals
#keyvals:\company
logo=
logoheight=
url=
#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*
juniorresearcher
juniorresearcher*
#endkeyvals
#keyvals:\cosupervisor
affiliation=
professor
seniorresearcher
mcf
mcf*
juniorresearcher
juniorresearcher*
#endkeyvals
#keyvals:\comonitor
affiliation=
professor
seniorresearcher
mcf
mcf*
juniorresearcher
juniorresearcher*
#endkeyvals
#keyvals:\referee
affiliation=
professor
seniorresearcher
mcf
mcf*
juniorresearcher
juniorresearcher*
#endkeyvals
#keyvals:\examiner
affiliation=
professor
seniorresearcher
mcf
mcf*
juniorresearcher
juniorresearcher*
#endkeyvals
#keyvals:\committeepresident
affiliation=
professor
seniorresearcher
mcf
mcf*
juniorresearcher
juniorresearcher*
#endkeyvals
#keyvals:\guest
affiliation=
professor
seniorresearcher
mcf
mcf*
juniorresearcher
juniorresearcher*
#endkeyvals
#
# Misc
\ordernumber[%<numéro d'ordre%>]#n
\ordernumber#n*
\submissiondate{%<jour%>}{%<mois%>}{%<année%>}#n
#
# Preliminary pages
#
\disclaimer{%<clause%>}#n
\makedisclaimer#n
\makedisclaimer*#n
\keywords{%<mots clés dans la langue principale%>}{%<mots clés dans la langue secondaire%>}#n
\makekeywords#n
\makekeywords*#n
\makelaboratory#n
\makelaboratory*#n
\dedication{%<dédicace%>}#n
\makededications#n
\makededications*#n
\frontepigraph{%<épigraphe%>}{%<auteur%>}
\frontepigraph[%<langue%>]{%<épigraphe%>}{%<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%>]#n*
\end{abstract}#n
\makeabstract#n
\newglssymbol{%<label%>}{%<symbole%>}{%<nom%>}{%<description%>}#n
\newglssymbol[%<classement%>]{%<label%>}{%<symbole%>}{%<nom%>}{%<description%>}#n
\tableofcontents#n*
\tableofcontents[%<précision(s)%>]#n*
#
#keyvals:\tableofcontents
depth=#part,chapter,section,subsection,subsubsection,paragraph,subparagraph
name=
#endkeyvals
#
# Main pages
#
# Appendix pages
#
# Back matter pages
#
\makebackcover
#
# Customization
#
\expression{%<label%>}{%<valeur (en français)%>}{%<valeur (en anglais)%>}#n*
%    \end{macrocode}
%
%    \begin{macrocode}
%</class-cwl>
%    \end{macrocode}
%
%    \begin{macrocode}
%<*class-latexmkrc|samples-templates-latexmkrc>
%    \end{macrocode}
%
%    \begin{macrocode}
$pdf_mode = 1;

$bibtex_use = 1;
$bibtex = 'biber %O %B';

%<class-latexmkrc>add_cus_dep('glo', 'gls', 0, 'makeindex');
%<samples-templates-latexmkrc>add_cus_dep('glo', 'gls', 0, 'makeglossaries');
add_cus_dep('glo2', 'gls2', 0, 'makeglossaries');
add_cus_dep('acn', 'acr', 0, 'makeglossaries');
add_cus_dep('slo', 'sls', 0, 'makeglossaries');
sub makeglossaries{
    system( "makeglossaries \"$_[0]\"" );
}
%<class-latexmkrc>sub makeindex{
%<class-latexmkrc>  system( "makeindex -s gglo.ist -o \"$_[0].gls\" \"$_[0].glo\"" );
%<class-latexmkrc>}

add_cus_dep('idx', 'ind', 0, 'texindy');
sub texindy{
    system("texindy -L french \"$_[0].idx\"");
}

@generated_exts = qw(aux idx ind lo* out toc acn acr alg bbl bcf fls gl* ist
run.xml sbl* sl* sym* xdy unq synctex.gz mw *~
%<class-latexmkrc>db* listing tcbtemp ins drv
);
%<class-latexmkrc>$pdflatex = 'xelatex %O %S';
%<class-latexmkrc>$postscript_mode = $dvi_mode = 0;
%<class-latexmkrc>$quote_filenames = 0;
%    \end{macrocode}
%
%    \begin{macrocode}
%</class-latexmkrc|samples-templates-latexmkrc>
%    \end{macrocode}
%
%    \begin{macrocode}
%<*demopkg>
%    \end{macrocode}
%
%    \begin{macrocode}
\RequirePackage{xpatch}
\RequirePackage{xstring}
\RequirePackage{xparse}
\RequirePackage{letltxmacro}
\RequirePackage{xifthen}
\RequirePackage[user,abspage]{zref}
%
\AtEndPreamble{%
  \xpretocmd{\tableofcontents@YAD@with@argument}{\cleardoublepage\zlabel{tableofcontents-withargument}}{}{}
  \xpretocmd{\tableofcontents@YAD@without@argument}{\cleardoublepage\zlabel{tableofcontents-withoutargument}}{}{}
}
%
\AfterEndPreamble{%
  \xpretocmd{\maketitle}{\zlabel{fr-title}}{}{}%
  \xpretocmd{\makedisclaimer}{\cleardoublepage\zlabel{disclaimer}}{}{}
  \xpretocmd{\makekeywords}{\cleardoublepage\zlabel{keywords}}{}{}
  \xpretocmd{\makelaboratory}{\cleardoublepage\zlabel{laboratory}}{}{}
  \xpretocmd{\makededications}{\cleardoublepage\zlabel{dedications}}{}{}
  \xpretocmd{\makefrontepigraphs}{\cleardoublepage\zlabel{frontepigraphs}}{}{}
  \xpretocmd{\acknowledgements}{\cleardoublepage\zlabel{acknowledgements}}{}{}
  \xpretocmd{\caution}{\cleardoublepage\zlabel{caution}}{}{}
  \xpretocmd{\makeabstract}{\cleardoublepage\zlabel{abstract}}{}{}
  \xpretocmd{\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}
%
% \Finale
\endinput

%%% Local Variables:
%%% mode: latex
%%% eval: (doctex-mode)
%%% TeX-engine: xetex
%%% TeX-master: t
%%% ispell-local-dictionary: "francais"
%%% End:
