From ce8083552e0d948bf495e72d5c4d2680b505c90b Mon Sep 17 00:00:00 2001
From: Norbert Preining <norbert@preining.info>
Date: Sun, 25 Sep 2022 03:00:53 +0000
Subject: CTAN sync 202209250300

---
 .../contrib/udes-genie-these/udes-genie-these.dtx  | 120 +++++++++++++++------
 1 file changed, 90 insertions(+), 30 deletions(-)

(limited to 'macros/latex/contrib/udes-genie-these/udes-genie-these.dtx')

diff --git a/macros/latex/contrib/udes-genie-these/udes-genie-these.dtx b/macros/latex/contrib/udes-genie-these/udes-genie-these.dtx
index ccdaae0838..9b8282eb1b 100644
--- a/macros/latex/contrib/udes-genie-these/udes-genie-these.dtx
+++ b/macros/latex/contrib/udes-genie-these/udes-genie-these.dtx
@@ -26,18 +26,18 @@
 %<these|protocole>%%---   IDENTIFICATION   ------------------------------------------------------
 %<these|protocole>%%-----------------------------------------------------------------------------
 %<these|protocole>
-%<these>\ProvidesExplClass{udes-genie-these}{2022/09/15}{2.0.1}
-%<these>  {Universite de Sherbrooke, Faculte de genie: classe de document pour theses, memoires, DPR et essais}
-%<protocole>\ProvidesExplClass{udes-genie-protocole}{2022/09/15}{2.0.1}
-%<protocole>  {Universite de Sherbrooke, Faculte de genie: classe de document pour le protocole de redaction}
+%<these>\ProvidesExplClass{udes-genie-these}{2022/09/19}{3.0}
+%<these>  {Université de Sherbrooke, Faculté de génie: classe de document pour thèses, mémoires, DPR et essais}
+%<protocole>\ProvidesExplClass{udes-genie-protocole}{2022/09/19}{3.0}
+%<protocole>  {Université de Sherbrooke, Faculté de génie: classe de document pour le protocole de rédaction}
 %<these|protocole>
 %<*driver>
 \documentclass[12pt,letterpaper,french]{l3doc}
 \usepackage[T1]{fontenc}
-\usepackage[notextcomp]{kpfonts}
+\usepackage{kpfonts}
 \usepackage[scaled=0.7881]{DejaVuSansMono}
 \usepackage[french]{babel}
-\usepackage{hologo,setspace,parskip,microtype,xspace,tabularx,xcolor,pifont}
+\usepackage{hologo,setspace,parskip,microtype,xspace,tabularx,xcolor,pifont,bookmark}
 \hypersetup{colorlinks=true,linkcolor=blue,citecolor=blue,urlcolor=blue,linktocpage=true}
 \setlength{\parskip}{1ex plus0.25ex minus0ex}
 \setlength{\parindent}{0em}
@@ -128,10 +128,11 @@
 % \changes{v2.0}{2018/09/26}{Adaptations pour respecter la nouvelle version du protocole de rédaction.}
 % \changes{v2.0.1}{2020/04/17}{(Aussi connue comme v2.0a) Correction de bugs. Changements internes. Changements à la documentation.}
 % \changes{v2.0.2}{2022/09/15}{Maintenance (LaTeX2e 2020-02-02 à 2022-06-01). Distribution sur CTAN. Adaptations à la documentation.}
+% \changes{v3.0}{2022/09/19}{Support pour \pkg{biblatex}. Ajustements à la documentation.}
 %
 % \GetFileInfo{udes-genie-these.dtx}
 %
-% \title{CLASSE DE DOCUMENT \latex POUR LA RÉDACTION AUX ÉTUDES SUPÉRIEURES À LA FACULTÉ DE GÉNIE DE L'UNIVERSITÉ DE SHERBROOKE\\{\large \laclassetitre, version 2.0.2}}
+% \title{CLASSE DE DOCUMENT \latex POUR LA RÉDACTION AUX ÉTUDES SUPÉRIEURES À LA FACULTÉ DE GÉNIE DE L'UNIVERSITÉ DE SHERBROOKE\\{\large \laclassetitre, version 3.0}}
 % \author{Charles-Antoine Brunet}
 % \date{\today}
 % \maketitle
@@ -147,8 +148,14 @@
 %
 % Ce document détaille l'utilisation de \laclasse afin de faciliter son utilisation. Un exemple complet est distribué avec \laclasse. Le but de ce document n'est pas d'expliquer l'utilisation générale de \latex ou de \bibtex. Pour cela, il faut consulter d'autres ouvrages. D'ailleurs, ce document assume une connaissance préalable fonctionnelle de \latex et de \bibtex.
 %
+% \subsection*{De la version~2 à la version~3}
+%
+% La version 3 contient un changement incompatible avec la version~2. Le changement répond à des demandes faites à plusieurs reprises au cours des années: supporter le \package |biblatex|. Heureusement, si vous utilisiez la version~2, la transition devrait vous prendre moins de deux minutes. Le paragraphe qui suit vous donne tous les détails.
+%
+% Le style de références est maintenant spécifié par le nouveau champ de configuration |style-references| et non plus dans le préambule avec la macro |\bibliographystyle|. Il faut donc retirer une macro du style |\bibliographystyle{AAA}| et la remplacer par un champ de configuration du genre |style-references = AAA|. C'est tout!
+%
 %\section{Installation et vérification}\label{sec:inst}
-% La classe \laclasse peut être installée comme tout autre \package \latex avec le gestionnaire de \packages de votre distribution, comme avec la console de \miktex ou le \tlmgr. Du même coup, il faut s'assurer d'avoir une version à jour de la distribution \latex, car \laclasse utilise des fonctionnalités qui sont relativement récentes. Si vous optez pour une installation manuelle, la classe \laclasse est disponible sur \ctan et s'installe en accord avec les procédures spécifiées dans la documentation de votre distribution \latex.
+% La classe \laclasse peut être installée comme tout autre \package \latex avec le gestionnaire de \packages de votre distribution, comme avec la console de \miktex ou le \tlmgr. Du même coup, il faut s'assurer d'avoir une version à jour de la distribution \latex, car \laclasse utilise des fonctionnalités qui sont relativement récentes. Si vous optez pour une installation manuelle, la classe \laclasse est disponible sur \href{https://www.ctan.org/pkg/udes-genie-these/}{\ctan} et s'installe en accord avec les procédures spécifiées dans la documentation de votre distribution \latex.
 %
 % Afin de vérifier que l'installation s'est bien passée, il vous est suggéré de compiler l'exemple distribué avec \laclasse. C'est le meilleur moyen de savoir si votre installation \latex a tout ce qu'il faut pour utiliser \laclasse. L'exemple se trouve dans le même répertoire que la documentation.
 %
@@ -199,6 +206,7 @@
 \bool_new:N \g_@@_listeDesTableaux_bool
 
 \clist_new:N \g_@@_dedicace_cl
+\clist_new:N \g_@@_fichiers_references_cl
 \clist_new:N \g_@@_jury_codirecteurs_cl
 \clist_new:N \g_@@_jury_evaluateurs_cl
 \clist_new:N \g_@@_pas_jury_cl
@@ -231,7 +239,6 @@
 \tl_new:N \g_@@_fichier_resume_anglais_tl
 \tl_new:N \g_@@_fichier_resume_francais_tl
 \tl_new:N \g_@@_fichier_symboles_tl
-\tl_new:N \g_@@_fichiers_references_tl
 \tl_new:N \g_@@_format_tl
 \tl_new:N \g_@@_juryname_tl
 \tl_new:N \g_@@_jury_codirname_tl
@@ -250,8 +257,10 @@
 \tl_new:N \g_@@_mots_cles_francais_tl
 \tl_new:N \g_@@_motsclesname_tl
 \tl_new:N \g_@@_programme_tl
+\tl_new:N \g_@@_references_engin_tl
 \tl_new:N \g_@@_specialite_tl
 \tl_new:N \g_@@_specialityname_tl
+\tl_new:N \g_@@_style_references_tl
 \tl_new:N \g_@@_these_tl
 \tl_new:N \g_@@_titre_anglais_tl
 \tl_new:N \g_@@_titre_francais_tl
@@ -281,6 +290,8 @@
 \tl_const:Nn \c_@@_programme_meca_tl {mecanique}
 %<protocole>\tl_const:Nn \c_@@_protocole_droits_tl {Tous~droits~réservés.\ Faculté~de~génie,~Université~de~Sherbrooke.}
 %<protocole>\tl_const:Nn \c_@@_protocole_notice_tl {Document~adopté~à~la~Faculté~de~génie~de~l'Université~de~Sherbrooke~par~le~Comité~de~la~recherche~et~des~études~supérieures~(\g_@@_date_cres_tl)~et~le~Comité~des~études~de~la~faculté~de~génie~(\g_@@_date_cefg_tl).}
+\tl_const:Nn \c_@@_references_biblatex_tl {biblatex}
+\tl_const:Nn \c_@@_references_bibtex_tl {bibtex}
 \tl_const:Nn \c_@@_type_dprdoctorat_tl {dprdoctorat}
 \tl_const:Nn \c_@@_type_dprmaitrise_tl {dprmaitrise}
 \tl_const:Nn \c_@@_type_essai_tl {essai}
@@ -291,6 +302,9 @@
 %%-----------------------------------------------------------------------------
 %%---   INITIALISATION DE VARIABLES   -----------------------------------------
 %%-----------------------------------------------------------------------------
+\tl_gset_eq:NN \g_@@_references_engin_tl \c_@@_references_bibtex_tl
+\tl_gset:Nn \g_@@_style_references_tl {plain}
+
 %% Identifie les types de documents avec dedicace (optionnelle)
 \clist_gput_right:Nx \g_@@_dedicace_cl
   {\c_@@_type_essai_tl, \c_@@_type_memoire_tl, \c_@@_type_these_tl}
@@ -306,34 +320,50 @@
 
 %\end{implementation}
 %
-% \subsection{Options}
-% Pour utiliser \laclasse, il faut spécifier son utilisation avec la macro \cs{documentclass} de \latex. La classe \laclasse a deux options qui permettent de spécifier le style du document, tel que spécifié par le \protocole. Le style choisi est spécifié dans le paramètre optionnel de \cs{documentclass}.
+% \subsection{Options} \label{class-options}
+% Pour utiliser \laclasse, il faut spécifier son utilisation avec la macro \cs{documentclass} de \latex. La classe \laclasse a deux types d'options qui sont spécifiées dans le paramètre optionnel de \cs{documentclass}.
 %
 %\begin{variable}{livre,simple}
 %\begin{syntax}
 % |\documentclass| \oarg{style} \{\laclassename\}
 %\end{syntax}
-% La valeur de \meta{style} est |livre| ou |simple|. Si le paramètre est absent, le style |livre| est utilisé par défaut.
+% La valeur de \meta{style} est |livre| ou |simple|, tel que spécifié dans le \protocole. Si le paramètre est absent, le style |livre| est utilisé par défaut.
+%
 %\end{variable}
 %
+%\begin{variable}[added=2022-09-19]{bibtex,biblatex}
+%\begin{syntax}
+% |\documentclass| \oarg{engin-bib} \{\laclassename\}
+%\end{syntax}
+% La valeur de \meta{engin-bib} est |bibtex| ou |biblatex|, selon ce que vous voulez utiliser. Si rien n'est spécifié, |bibtex| est utilisé par défaut.
+%
+% Si le choix est |bibtex|, le style bibliographique est spécifié avec le champ de configuration |style-references| et les fichiers de références utilisés par |bibtex| sont ceux spécifiés avec le champ |references| (voir la section~\ref{sec:config}). La liste des références est générée automatiquement par \laclasse avec la macro |\bibliography|.
+%
+% Si le choix est de |biblatex|, la personne qui rédige le document est responsable de charger le \package |biblatex| avec la macro |\usepackage| dans le préambule, car trop de cas de figures peuvent survenir afin d'assurer un chargement correct. La liste des références est gérérée automatiquement par \laclasse avec la macro |\printbibliography| et les fichiers de références sont spécifiés avec le champs de configuration |references| (voir la section~\ref{sec:config}). Les fichiers de références sont fournis automatiquement par \laclasse avec la macro |\addbibresource|. Le champ de configuration |references-style| est ignoré, car le style est géré par la personne qui rédige avec avec l'aide de |biblatex|.
+%
+%\end{variable}
 %\begin{implementation}
 %%-----------------------------------------------------------------------------
 %%---   OPTIONS DE CLASSE   ---------------------------------------------------
 %%-----------------------------------------------------------------------------
 \DeclareKeys {
-  livre.code:n = {
+  biblatex .code:n = {\tl_gset_eq:NN \g_@@_references_engin_tl \c_@@_references_biblatex_tl},
+  biblatex .usage:n = load,
+  bibtex .code:n = {\tl_gset_eq:NN \g_@@_references_engin_tl \c_@@_references_bibtex_tl},
+  bibtex .usage:n = load,
+  livre .code:n = {
     \PassOptionsToClass{twoside,openright}{book}
     \PassOptionsToPackage{twoside=true}{geometry}
     \tl_gset_eq:NN \g_@@_format_tl \c_@@_format_livre_tl
   },
-  livre.usage:n = load,
-  simple.code:n = {
+  livre .usage:n = load,
+  simple .code:n = {
     \PassOptionsToClass{oneside,openany}{book}
     \PassOptionsToPackage{twoside=false}{geometry}
     \tl_gset_eq:NN \g_@@_format_tl \c_@@_format_simple_tl
   },
-  simple.usage:n = load,
-  unknown.code:n = {\PassOptionsToClass{\CurrentOption}{book}},
+  simple .usage:n = load,
+  unknown .code:n = {\PassOptionsToClass{\CurrentOption}{book}},
 }
 
 \SetKeys{livre}
@@ -444,7 +474,14 @@
 %\begin{syntax}
 % |fichiers-references =| \marg{valeur}
 %\end{syntax}
-% Ce champ spécifie les fichiers de bibliographie \bibtex à être inclus pour la construction de la liste des références par \bibtex ou un autre utilitaire équivalent. \meta{valeur} est une liste de noms de fichiers et l'extension |.bib| est assumé pour chacun. Chaque nom de fichier est séparé par une virgule. Ce champ ne doit pas contenir d'espaces superflus. D'autres détails au sujet des références bibliographiques sont donnés dans la section~\ref{sec:bibtex}.
+% Ce champ spécifie les fichiers de bibliographie \bibtex à être inclus pour la construction de la liste des références par \bibtex ou un autre utilitaire équivalent. La liste des fichiers à utiliser est spécifiée par \meta{valeur}, une liste de noms de fichiers. Chaque nom de fichier est séparé par une virgule. Ce champ ne doit pas contenir d'espaces superflus. D'autres détails au sujet des références bibliographiques sont donnés dans la section~\ref{sec:refbib}.
+%\end{variable}
+%
+%\begin{variable}[added=2022-09-19]{style-references}
+%\begin{syntax}
+% |style-references =| \marg{valeur}
+%\end{syntax}
+% Ce champ spécifie le style bibliographique à utiliser pour la construction de la liste des références, tel que requis par \bibtex ou un autres engins bibliographiques équivalents. Comme ce champ spécifie le style à utiliser, il n'est pas nécessaire de mettre la macro |\bibliographystyle| dans le préambule, car la classe \laclasse automatise cette étape. Ce champ est ignoré, si l'option de classe |biblatex| a été spécifié (voir la section~\ref{class-options}). Consultez le protocole au sujet des styles bibliographiques. D'autres détails au sujet des références bibliographiques sont donnés dans la section~\ref{sec:refbib}.
 %\end{variable}
 %
 %\begin{implementation}
@@ -481,8 +518,10 @@
   fichier-symboles .value_required:n = true,
   fichier-acronymes .tl_gset:N = \g_@@_fichier_acronymes_tl,
   fichier-acronymes .value_required:n = true,
-  fichiers-references .tl_gset:N = \g_@@_fichiers_references_tl,
+  fichiers-references .clist_gset:N = \g_@@_fichiers_references_cl,
   fichiers-references .value_required:n = true,
+  style-references .tl_gset:N = \g_@@_style_references_tl,
+  style-references .value_required:n = true,
 }
 
 %\end{implementation}
@@ -644,8 +683,10 @@
 %
 % La gestion du passage d'une langue à une autre dans les parties principales est laissée à la personne qui rédige le document. Cependant, la classe \laclasse est basée, entre autres, sur le \package \babel qui permet de gérer des documents multilingues. Pour plus de détail sur le passage d'une langue à une autre dans un document, la lecture de la documentation de \babel est suggérée. Avec un bon usage des macros de \babel, la typographie sera ajustée en accord avec la langue de ces différentes parties du document.
 %
-%\subsection{Références bibliographiques et \bibtex}\label{sec:bibtex}
-% L'utilisation de \bibtex, ou autre utilitaire semblable, avec \laclasse se fait de la même manière que tout autre document \latex. Le style bibliographique est spécifié dans le document avec la commande |\bibliographystyle|, comme il est usuel de le faire. Il est important de noter que le style bibliographique choisi doit respecter les exigences du \protocole. Les fichiers de bibliographie (fichiers |.bib|) sont spécifiés avec le champ |fichiers-references| de la configuration du document, comme mentionné dans la section~\ref{sec:config}. Ils ne sont pas spécifiés avec la commande |\bibliography|, comme cela est fait habituellement, car le placement de la liste des références dans le document est géré par \laclasse.
+%\subsection{Références bibliographiques}\label{sec:refbib}
+% L'utilisation de \bibtex, ou autre utilitaires similaires, avec \laclasse est évidemment possible.
+%
+% Le style bibliographique est spécifié dans le document avec le champ |style-references| de la configuration du document et les fichiers de références (fichiers |.bib|) sont spécifiés avec le champ |fichiers-references|. Il est important de noter que le style bibliographique choisi doit respecter les exigences du \protocole. La section~\ref{sec:config} discute de ces champs et la section~\ref{class-options} discute aussi des options pour \bibtex et |biblatex|.
 %
 %\begin{implementation}
 %<*protocole>
@@ -905,9 +946,6 @@
   \tl_if_blank:VT \g_@@_fichier_acronymes_tl
   { \tl_gclear:N \g_@@_fichier_acronymes_tl }
 
-  \tl_if_blank:VT \g_@@_fichiers_references_tl
-  { \tl_gclear:N \g_@@_fichiers_references_tl }
-
   \tl_if_blank:VT \g_@@_titre_francais_tl
   { \tl_gclear:N \g_@@_titre_francais_tl }
 
@@ -947,7 +985,7 @@
 %<these>  \tl_if_empty:NT \g_@@_programme_tl
 %<these>  { \msg_error:nn {udesgeniethese}{config_programme_vide}{type} }
 %<these>
-  \tl_if_empty:NT \g_@@_fichiers_references_tl
+  \clist_if_empty:NT \g_@@_fichiers_references_cl
   { \msg_error:nnnn {udesgeniethese}{config_fichiers_vides}{la~bibliographie}{fichiersReferences} }
 
   \tl_if_empty:NT \g_@@_auteur_nom_tl
@@ -1302,7 +1340,7 @@
   {
     \chapter*{\g_@@_acknowledgementsname_tl}
     \int_set:Nn \l_@@_tmp_int {\value{page}}
-    \input{\g_@@_fichier_remerciements_tl}
+    \input{\g_@@_fichier_remerciements_tl}\par
     \thispagestyle{empty}\clearpage
     \int_sub:Nn \l_@@_tmp_int {\value{page}}
     \int_compare:nNnT {\l_@@_tmp_int} < {-1}
@@ -1359,7 +1397,7 @@
   {
     \chapter*{\glossaryname}
     \markboth{\glossaryname}{\glossaryname}
-    \input{\g_@@_fichier_lexique_tl}
+    \input{\g_@@_fichier_lexique_tl}\par
     \if@openright\cleardoublepage\else\clearpage\fi
   }
 
@@ -1367,7 +1405,7 @@
   {
     \chapter*{\g_@@_listsymbolsname_tl}
     \markboth{\g_@@_listsymbolsname_tl}{\g_@@_listsymbolsname_tl}
-    \input{\g_@@_fichier_symboles_tl}
+    \input{\g_@@_fichier_symboles_tl}\par
     \if@openright\cleardoublepage\else\clearpage\fi
   }
 
@@ -1375,7 +1413,7 @@
   {
     \chapter*{\g_@@_listacronymsname_tl}
     \markboth{\g_@@_listacronymsname_tl}{\g_@@_listacronymsname_tl}
-    \input{\g_@@_fichier_acronymes_tl}
+    \input{\g_@@_fichier_acronymes_tl}\par
     \if@openright\cleardoublepage\else\clearpage\fi
   }
 %</these>
@@ -1385,13 +1423,35 @@
 {
   \refstepcounter{chapter}
   \addcontentsline{toc}{chapter}{\bibname}
-  \bibliography{\g_@@_fichiers_references_tl}
+
+  \tl_case:Nn \g_@@_references_engin_tl
+  {
+    \c_@@_references_bibtex_tl
+      { \bibliography{\g_@@_fichiers_references_cl} }
+    \c_@@_references_biblatex_tl
+      { \printbibliography }
+  }
+
   \if@openright\cleardoublepage\else\clearpage\fi
 }
 
 %%-----------------------------------------------------------------------------
 %%---   GESTION AUTOMATISEE   -------------------------------------------------
 %%-----------------------------------------------------------------------------
+\AtEndPreamble
+{
+  \tl_case:Nn \g_@@_references_engin_tl
+  {
+    \c_@@_references_bibtex_tl
+    { \bibliographystyle{\g_@@_style_references_tl} }
+    \c_@@_references_biblatex_tl
+    {
+      \clist_map_inline:Nn \g_@@_fichiers_references_cl
+      {\addbibresource{#1}}
+    }
+  }
+}
+
 \AfterEndPreamble{
   \@@_validation
   \@@_setup
-- 
cgit v1.2.3

