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