% Cette classe de document est basee sur [report].
% Assurez vous d'avoir installe tous les paquets utiles
%%%%%% Licence%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% la classe LaTeX thesis
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
% the Free Software Foundation
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% PROPOSITION DE TEMPLATE POUR THESE DE DBL par L.YALA (Doctorante
% IRISA-UR1, Juin 2018)
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Revision des en-tetes et prise en compte de [twoside]
% Revision de la gestion de la bibliographie avec BiblaTex
% Ajouts de boites et encarts grises
% revision de l'enchainement des chapitres
% Mise aux normes typographiques suivant les Regles Typographiques
% en usage a l'Imprimerie Nationale
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{thesis}[19/03/2023 v6]

\LoadClass[twoside,multicol,12pt,a4paper]{book} % notez le "twoside", essentiellement pour alterner les en-tete et pieds de page gauche et droit si on veut utliser les fancyhead.

\RequirePackage[utf8]{inputenc}
\RequirePackage[english,french]{babel} % Last language is the default, use \selectlanguage{english} to switch
\RequirePackage{ifpdf}
\RequirePackage[usenames,dvipsnames]{color} % pour les couleurs
\RequirePackage{textcomp}
\RequirePackage{titlesec}
\RequirePackage{parcolumns}
\RequirePackage{multicol}
\RequirePackage[T1]{fontenc} % permet de spécifier à LaTeX l'utilisation du codage de caractères T1, nouvelle norme LaTeX non utilisée par défaut pour des raisons de compatibilité avec les anciens documents LaTeX.
\RequirePackage{lmodern} % Assurer une bonne impression!
\RequirePackage{tikz} % tikz est utilise pour tracer des boites, par exemple
\usetikzlibrary{fadings,babel}
\RequirePackage{fix-cm}
\RequirePackage{graphicx} % Pour insérer des images. Utiliser le format jpg pour plus de simplicité.
\RequirePackage{sectsty} % obligatoire, pour jouer avec l'apparence des titres
\RequirePackage{shorttoc} % pour le sommaire, au debut.
\RequirePackage{fancyhdr} % Afin de réaliser soi-même les en-têtes et pieds de page, voir chaque début de chapitre.
\RequirePackage{pifont} % Pour utiliser des symboles divers.
\RequirePackage{color}
\RequirePackage{comment}
\RequirePackage{wallpaper}
\RequirePackage[inner=30mm,outer=20mm,top=30mm,bottom=20mm]{geometry}
%Ou bien : \RequirePackage[top=4 cm, bottom=4 cm, left=3 cm, right=3 cm]{geometry} % On peut modifier ces valeurs pour augmenter ou réduire les marges. Attention aux en-têtes de chapitres.
\RequirePackage{epigraph} % \cleartoevenpage

\RequirePackage{setspace} % permet d'utiliser les commandes \spacing, doublespace (double interligne), singlespace (simple interligne) et onehalfspace (un interligne et demi)

\RequirePackage{hyperref} %Utiliser pour une bibliographie interactive + sommaire et TOC interactifs (pour une sortie PDF, par exemple).
\hypersetup{colorlinks=true, citecolor=black, filecolor=black, linkcolor=black, urlcolor=black}

\RequirePackage{eso-pic} % For \AddToShipoutPicture used for cover backgrounds
\RequirePackage{framed} % utilise pour coloriser les encarts

\onehalfspacing %Interligne 1,5

\RequirePackage{ifthen} % Entrer valeurs booléennes et autres options
\RequirePackage{csquotes} % Assurer les guillemets français
\frenchspacing
\FrenchFootnotes

% Define commands to set fonts throughout the document
\newcommand*{\selectfontfrontcover}{\fontfamily{phv}\selectfont}  % Font style used in front cover
\newcommand*{\selectfontbackcover}{\fontfamily{phv}\selectfont}   % Font style used in back cover
\newcommand*{\selectfontchapheads}{\fontfamily{phv}\selectfont} % Font style used chapter headings

% Override default font here if you want
%\renewcommand{\rmdefault}{qpl}
%\renewcommand{\sfdefault}{qpl}



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%% CONDITIONAL COMPILATION %%%%%%%%%%%%%%%
\RequirePackage{xparse}
\ExplSyntaxOn
\tl_const:Nn \c_getenv_par_tl { \par }
\NewDocumentCommand{\ifenvsetTF}{mmm}
{
    \sys_get_shell:nnN { kpsewhich ~ --var-value ~ #1 } { } \l_tmpa_tl
    \tl_if_eq:NNTF \l_tmpa_tl \c_getenv_par_tl { #3 } { #2 }
}
\ExplSyntaxOff


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%% En-tete chap %%%%%%%%%%%%%%%%

\makeatletter
\def\thickhrulefill{\leavevmode \leaders \hrule height 1ex \hfill \kern \z@}
\def\@makechapterhead#1{%
    \vspace*{-30\p@}%
    {\parindent \z@ \raggedleft \reset@font
        \scshape \@chapapp{} \thechapter
        \par\nobreak
        \interlinepenalty\@M
        \selectfontchapheads \Huge \bfseries #1\par\nobreak
        %\vspace*{1\p@}%
        \hrulefill
        \par\nobreak
        \vskip 50\p@
    }}
\def\@makeschapterhead#1{%
    \vspace*{-50\p@}%
    {\parindent \z@ \raggedleft \reset@font
        \scshape \vphantom{\@chapapp{} \thechapter}
        \par\nobreak
        \interlinepenalty\@M
        \selectfontchapheads \Huge \bfseries #1 \par\nobreak
        %\vspace*{1\p@}%
        \hrulefill
        \par\nobreak
        \vskip 30\p@
    }}



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%% Tete de parties %%%%%%%%%%%%%%%%

\makeatletter
\newcommand*{\jolipart}[1]{%
    \begin{center}
        \begin{Huge}\color{black}
            #1
        \end{Huge}
    \end{center}
    \vspace{1cm}
    \begin{center}
        %\begin{Huge}
        %\ding{167}
        %\end{Huge}
        \hrulefill
    \end{center}
}

\parttitlefont{\jolipart}

\partnumberfont{\sc\normalsize}



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%% Interligne simple pour citations et vers %%%%%%%%%%%%%%%%%%
%% Environnements: QUOTE, QUOTATION, VERSE
% Copyright (C) 2002 Mike Nolta <mrnolta@princeton.edu>, GPL V. 2.0 and
% later version. http://www.physics.princeton.edu/cosmology/computing/PrincetonThesis.cls
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\let\orig@quote\quote
\let\endorig@quote\endquote
\renewenvironment*{quote}
{\begin{orig@quote}\begin{singlespace}}
            {\end{singlespace}\end{orig@quote}}

\let\old@quotation\quotation
\let\endold@quotation\endquotation
\renewenvironment*{quotation}
{\begin{old@quotation}\begin{singlespace}}
            {\end{singlespace}\end{old@quotation}}

\let\old@verse\verse
\let\endold@verse\endverse
\renewenvironment*{verse}
{\begin{old@verse}\begin{singlespace}}
            {\end{singlespace}\end{old@verse}}



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%% VARIABLES PAGE DE GARDE %%%%%%%%%%%%%%%%

%%%%% Dossier contenant les info de l'ecole doctorale
\newcommand*{\direcole}[1]{\gdef\vdirecole{./00-cover/ecoles-doctorales/#1}}
\direcole{}

%%%%% Nom ecole, une variable par ligne
\newcommand{\nomecoleA}[1]{\gdef\@nomecoleA{#1}}
\nomecoleA{}
\newcommand{\nomecoleB}[1]{\gdef\@nomecoleB{#1}}
\nomecoleB{}

%%%%% Numero ecole doctorale
\newcommand{\numeroecole}[1]{\gdef\@numeroecole{#1}}
\numeroecole{}

%%%% Etablissement delivrant le diplome, une variable par ligne
\newcommand{\nometablissementA}[1]{\gdef\vnometablissementA{#1}}
\nometablissementA{}
\newcommand{\nometablissementB}[1]{\gdef\vnometablissementB{#1}}
\nometablissementB{}
\newcommand{\nometablissementC}[1]{\gdef\vnometablissementC{#1}}
\nometablissementC{}
\newcommand{\nometablissementD}[1]{\gdef\vnometablissementD{#1}}
\nometablissementD{}
\newcommand{\nometablissementE}[1]{\gdef\vnometablissementE{#1}}
\nometablissementE{}

%%%% Logos etablissement delivrant le diplome, supporte deuble affiliation
\newcommand*{\logoetablissementA}[1]{\gdef\vlogoetablissementA{#1}}
\logoetablissementA{}
\newcommand*{\logoetablissementB}[1]{\gdef\vlogoetablissementB{#1}}
\logoetablissementB{}

%%%% Hauteur des logos, variable selon les (double) affiliations
\newcommand*{\hauteurlogoecole}[1]{\gdef\vhauteurlogoecole{#1}}
\hauteurlogoecole{2cm}
\newcommand*{\hauteurlogoetablissementA}[1]{\gdef\vhauteurlogoetablissementA{#1}}
\hauteurlogoetablissementA{}
\newcommand*{\hauteurlogoetablissementB}[1]{\gdef\vhauteurlogoetablissementB{#1}}
\hauteurlogoetablissementB{2cm}

%%%% Eventuel sous-titre
\newcommand{\lesoustitre}[1]{\gdef\@lesoustitre{#1}}
\lesoustitre{}

%%%% Discipline
\newcommand{\discipline}[1]{\gdef\@discipline{#1}}
\discipline{}

%%%% Jury
\newcommand{\jury}[1]{\gdef\@jury{#1}}
\jury{}

%%%%% Spécialité
\newcommand{\spec}[1]{\gdef\@spec{#1}}
\spec{}

%%% Ville de soutenance
\newcommand{\lieu}[1]{\gdef\@lieu{#1}}
\lieu{}

%%% Unite de recherche: laboratoire / department / unité
\newcommand{\uniterecherche}[1]{\gdef\@uniterecherche{#1}}
\uniterecherche{}

%%% Numéro de la thèse
\newcommand{\numthese}[1]{\gdef\@numthese{#1}}
\numthese{}

%%% Couleur de la police de la page de garde
\newcommand{\couleurpolice}[1]{\gdef\@couleurpolice{#1}}
\couleurpolice{black}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%% PAGE DE GARDE %%%%%%%%%%%%%%%%

% Define some font sizes specific to the covers, supposed to be in 12pt
\newcommand{\HugeTwelve}{\fontsize{26}{31}\selectfont} % 12pt \Huge
\newcommand{\LARGETwelve}{\fontsize{20.74}{25}\selectfont} % 12pt \LARGE
\newcommand{\LargeTwelve}{\fontsize{16}{19}\selectfont} % 12pt \Large
\newcommand{\largeTwelve}{\fontsize{14.4}{17}\selectfont} % 12pt \large
\newcommand{\normalTwelve}{\fontsize{12}{13.2}\selectfont} % 12pt \normalsize
\newcommand{\smallTwelve}{\fontsize{11}{13.5}\selectfont} % 12pt \small
\newcommand{\footnotesizeTwelve}{\fontsize{9.5}{11}\selectfont} % 12pt \footnotesize

% Affiche les logos sur les pages de couverture
\newcommand{\displayLogos}{%
    \thispagestyle{empty}
    \begin{tikzpicture}[remember picture,overlay,line width=0mm]
        \node[xshift=6.2cm,yshift=2cm] {%
            \parbox{\textwidth}{%
                % Quand UR1 est l'unique etablissement, il ne faut afficher que son logo
                {\ifthenelse{\equal{\vlogoetablissementA}{}\and\equal{\vlogoetablissementB}{UR1-noir}}{
                            $\vcenter{\hbox{%
                                        \includegraphics[keepaspectratio,height=\vhauteurlogoetablissementB,width=7cm
                                        ]{./00-cover/logos-etablissements/\vlogoetablissementB}%
                                    }}$
                        }{%
                            $\vcenter{\hbox{%
                                        \includegraphics[keepaspectratio,height=\vhauteurlogoecole,%width=7cm
                                        ]{\vdirecole/logo}%
                                    }}$
                            \hfill
                            {\if\vlogoetablissementA\empty \else
                                    $\vcenter{\hbox{%
                                                \includegraphics[keepaspectratio,height=\vhauteurlogoetablissementA,width=7cm
                                                ]{./00-cover/logos-etablissements/\vlogoetablissementA}%
                                            }}$
                                \fi}%
                            \hspace{3mm}
                            $\vcenter{\hbox{%
                                        \includegraphics[keepaspectratio,height=\vhauteurlogoetablissementB,width=7cm
                                        ]{./00-cover/logos-etablissements/\vlogoetablissementB}%
                                    }}$
                        }}%
            }%
        };
    \end{tikzpicture}
    \par\nobreak
}

%mise en page de la page de garde
\makeatletter
\def\maketitle{%
    \thispagestyle{empty}
    \clearpage
    % Background image of the front cover
    \AddToShipoutPicture*{%
        \put(0,0){%
            \parbox[b][42.6cm]{\paperwidth}{%

                %        \includegraphics[width=\paperwidth,keepaspectratio,trim={0 5pt 0 0}]{\vdirecole/image-fond-garde.png} % Must trim white border off of bottom
                %        \begin{tikzpicture}
                %            \fill[couleur-ecole-recto] (0,0) rectangle (\paperwidth,4.4);
                %        \end{tikzpicture}
                \input{./00-cover/cover_background}
                \vspace{10cm}
            }}}
    \displayLogos
    %
    \begin{tikzpicture}[remember picture,overlay,line width=0mm]
        \node at (current page.center)
        {\parbox{17.6cm}{
        \vspace{3.6cm}

        \selectfontfrontcover % Set font style for front cover page

        {\HugeTwelve \textsc{Thèse de doctorat de} \\}

        \color{\@couleurpolice} % Some schools use white font

        % \vspace{5mm}
        {\normalTwelve \if\@nomecoleB\empty ~\\ \else \fi} % To compensate the 2 lines of MathSTIC
        {\setlength{\baselineskip}{0.9\baselineskip}
        {\largeTwelve \if\vnometablissementA\empty ~ \else \textsc{\vnometablissementA} \fi} \\
        {\largeTwelve \if\vnometablissementB\empty ~ \else \textsc{\vnometablissementB} \fi} \\
        {\largeTwelve \if\vnometablissementC\empty ~ \else \textsc{\vnometablissementC} \fi} \\
        {\largeTwelve \if\vnometablissementD\empty ~ \else \textsc{\vnometablissementD} \fi} \\
        {\largeTwelve \textsc{\vnometablissementE}} \\
        \par}
        \vspace{0.01cm}
        {\setlength{\baselineskip}{0.7\baselineskip}
        {\smallTwelve \textsc{école Doctorale \No \@numeroecole}} \\
        {\normalTwelve \textit{\@nomecoleA}} \\
        {\normalTwelve \if\@nomecoleB\empty \else \textit{\@nomecoleB} \\ \fi}
        {\normalTwelve Spécialité : \textit{\@spec}}

        %\fontsize{12}{10}\selectfont
        \vspace{0.5cm}
        \hspace{0.6cm}{\normalTwelve Par \vspace{0.15cm}}
        \par}
        \hspace{0.6cm}{\LARGETwelve \textbf{\@author}} \vspace{0.5cm}

        {\LargeTwelve \textbf{\@title}} \vspace{0.5cm}

        {\largeTwelve \@lesoustitre} \vspace{0.5cm}
        \begin{spacing}{1}
            \smallTwelve
            \textbf{Thèse présentée et soutenue à \@lieu, le \@date} \\
            \textbf{Unité de recherche : \@uniterecherche} \\
            \textbf{\if\@numthese\empty \else Thèse \No : \@numthese \fi} % Hide line if no number provided
        \end{spacing}
        \color{black}
        \vspace{1.3cm}
        \begin{small}
            \begin{spacing}{1}
                \@jury
            \end{spacing}
        \end{small}
        }
        };
    \end{tikzpicture}
}

\makeatother



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%% QUATRIEME DE COUVERTURE %%%%%%%%%%%%%%%%

\newcommand{\titleFR}[1]{%
    \vspace{1cm}
    {\centering \noindent \textcolor{couleur-ecole-verso}{\rule{\textwidth}{0.2cm}}}
    \vspace{-1cm}
    \selectlanguage{french}
    \section*{\selectfontbackcover\smallTwelve \textcolor{couleur-ecole-verso}{Titre : }{\selectfontbackcover\mdseries{#1}}} % In this particular case, font style needs to get re-selected locally
}

\newcommand{\keywordsFR}[1]{%
    \vspace{-0.2cm}
    \noindent{\smallTwelve \textbf{Mot clés : }#1}
}

\newcommand{\abstractFR}[1]{%
    \vspace{-0.2cm}
    \begin{multicols}{2}
        \begin{spacing}{1}
            \noindent\smallTwelve \textbf{Résumé : }#1
        \end{spacing}
    \end{multicols}
}

\newcommand{\titleEN}[1]{%
    \vspace{0.5cm}
    {\centering \noindent \textcolor{couleur-ecole-verso}{\rule{\textwidth}{0.2cm}}}
    \vspace{-1cm}
    \selectlanguage{english}
    \section*{\selectfontbackcover\smallTwelve \textcolor{couleur-ecole-verso}{Title: }{\selectfontbackcover\mdseries{#1}}} % In this particular case, font style needs to get re-selected locally
}

\newcommand{\keywordsEN}[1]{%
    \vspace{-0.2cm}
    \noindent{\smallTwelve \textbf{Keywords: }#1}
}

\newcommand{\abstractEN}[1]{%
    \vspace{-0.2cm}
    \begin{multicols}{2}
        \begin{spacing}{1}
            \noindent\smallTwelve \textbf{Abstract: }#1
        \end{spacing}
    \end{multicols}
}



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%% EN-TETES PAGES %%%%%%%%%%%%%%%%

%%%%%%%%% Pour suppirmer les entetes et pied de page gênants par exemple juste avant un chapitre sur une page de droite
\newcommand{\clearemptydoublepage}{%
    \newpage{\pagestyle{empty}\cleardoublepage}}
%%%% .... et utiliser la commande \clearemptydoublepage juste avant le \chapter

\fancyhf{} % on annule le fancy automatique

%%%%%%%%%% Gerer les en tetes dans les frontmatter mainmatter et backmatter
\RequirePackage{geometry}
\RequirePackage{etoolbox}

\appto\frontmatter{\pagestyle{fancy}
    \renewcommand{\sectionmark}[1]{}
    \renewcommand{\chaptermark}[1]{\markboth{#1}{}}
    \fancyhead[LE,RO]{\small\thepage}
    \fancyhead[RO]{\small\leftmark} % \rightmark = section courante
    \fancyhead[LE]{\small\leftmark} % \leftmark = chapitre courant
    \fancyfoot[C]{\thepage} % marque la page au centre
}

\appto\mainmatter{\pagestyle{fancy}
    \renewcommand{\sectionmark}[1]{\markright{\thesection.\ #1}}
    \renewcommand{\chaptermark}[1]{\markboth{\chaptername~\thechapter~--\ #1}{}}
    \fancyhead[LE,RO]{\small\thepage}
    \fancyhead[RO]{\small\rightmark}   % \rightmark = section courante
    \fancyhead[LE]{\small\leftmark} % \leftmark = chapitre courant
    \fancyfoot[C]{\thepage} % marque la page au centre
}

\appto\backmatter{\pagestyle{fancy}
    \renewcommand{\sectionmark}[1]{\markright{\thesection.\ #1}}
    \renewcommand{\chaptermark}[1]{\markboth{\chaptername~\thechapter~--\ #1}{}}
    \fancyhead[LE,RO]{\small\thepage}
    \fancyhead[RO]{}
    \fancyhead[LE]{}
    \fancyfoot[C]{\thepage} % marque la page au centre
}
