diff options
author | Karl Berry <karl@freefriends.org> | 2023-09-01 21:19:34 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2023-09-01 21:19:34 +0000 |
commit | 63b1de3dc657c563490e2d8fe79b9145c7df5982 (patch) | |
tree | 1687ad985da99eb47f086df075ccba17f87afe2d /Master/texmf-dist/tex/latex/udes-genie-these | |
parent | f39ca0c5a0f585fe73054f95da17b3a47e9d989a (diff) |
udes-genie-these (1sep23)
git-svn-id: svn://tug.org/texlive/trunk@68141 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/udes-genie-these')
-rw-r--r-- | Master/texmf-dist/tex/latex/udes-genie-these/udes-genie-these.cls | 608 |
1 files changed, 321 insertions, 287 deletions
diff --git a/Master/texmf-dist/tex/latex/udes-genie-these/udes-genie-these.cls b/Master/texmf-dist/tex/latex/udes-genie-these/udes-genie-these.cls index bb862a1b901..090db155a82 100644 --- a/Master/texmf-dist/tex/latex/udes-genie-these/udes-genie-these.cls +++ b/Master/texmf-dist/tex/latex/udes-genie-these/udes-genie-these.cls @@ -6,7 +6,7 @@ %% %% udes-genie-these.dtx (with options: `these') %% -%% Copyright 2022 Charles-Antoine Brunet +%% Copyright 2023 Charles-Antoine Brunet %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3 @@ -25,21 +25,23 @@ %% and the derived files udes-genie-these.cls. %% %% udes-genie-these.dtx -%% Copyright 2022 Charles-Antoine Brunet +%% Copyright 2023 Charles-Antoine Brunet %% %%----------------------------------------------------------------------------- %%--- IDENTIFICATION ------------------------------------------------------ %%----------------------------------------------------------------------------- -\ProvidesExplClass{udes-genie-these}{2022/11/17}{3.0.1} +\ProvidesExplClass{udes-genie-these}{2023/09/01}{3.1.0} {Université de Sherbrooke, Faculté de génie: classe de document pour thèses, mémoires, DPR et essais} %%----------------------------------------------------------------------------- %%--- DECLARATION DES VARIABLES ------------------------------------------- %%----------------------------------------------------------------------------- +\bool_new:N \g__udesgeniethese_autobib_bool +\bool_new:N \g__udesgeniethese_legendes_min_bool \bool_new:N \g__udesgeniethese_lignes_bool -\bool_new:N \g__udesgeniethese_listeDesFigures_bool -\bool_new:N \g__udesgeniethese_listeDesTableaux_bool +\bool_new:N \g__udesgeniethese_liste_figures_bool +\bool_new:N \g__udesgeniethese_liste_tableaux_bool \clist_new:N \g__udesgeniethese_dedicace_cl \clist_new:N \g__udesgeniethese_fichiers_references_cl @@ -105,7 +107,7 @@ %%--- DECLARATION DES CONSTANTES ------------------------------------------ %%----------------------------------------------------------------------------- \int_const:Nn \c__udesgeniethese_max_pages_dprdoctorat_int {40} -\int_const:Nn \c__udesgeniethese_max_pages_dprmaitrise_int {30} +\int_const:Nn \c__udesgeniethese_max_pages_dprmaitrise_int {25} \int_const:Nn \c__udesgeniethese_max_pages_essai_int {70} \int_const:Nn \c__udesgeniethese_max_pages_memoire_int {120} \int_const:Nn \c__udesgeniethese_max_pages_these_int {250} @@ -149,35 +151,90 @@ {\c__udesgeniethese_type_memoire_tl, \c__udesgeniethese_type_these_tl} %%----------------------------------------------------------------------------- +%%--- MESSAGES D'ERREURS -------------------------------------------------- +%%----------------------------------------------------------------------------- +\msg_new:nnnn {udesgeniethese}{erreur_format}{Un~LaTeX~plus~récent~est~nécessaire.~Veuillez~mettre~à~jour~votre~distribution~LaTeX.}{Le~format~2022-06-01~ou~un~plus~récent~est~nécessaire.} + +\msg_new:nnnn {udesgeniethese}{biblatex_en_trop}{Avec~l'option~bibtex,~il~ne~faut~pas~charger~le~package~biblatex.}{Consultez~la~documentation~de~la~classe.} + +\msg_new:nnnn {udesgeniethese}{biblatex_manquant}{L'option~biblatex~requiert~de~charger~le~package~biblatex~dans~le~preambule.}{Consultez~la~documentation~de~la~classe.} + +\msg_new:nnnn {udesgeniethese}{auteur_nom_vide}{Le~nom~de~l'auteur~du~document~n'est~pas~specifie.~Specifiez-le~avec~la~macro~\Auteur~dans~le~preambule.}{Consultez~la~documentation~de~la~classe.} + +\msg_new:nnnn {udesgeniethese}{auteur_prenom_vide}{Le~prenom~de~l'auteur~du~document~n'est~pas~specifie.~Specifiez-le~avec~la~macro~\Auteur~dans~le~preambule.}{Consultez~la~documentation~de~la~classe.} + +\msg_new:nnnn {udesgeniethese}{config_fichier_vide}{Le~fichier~pour~#1~n'est~pas~specifie.~Specifiez-le~avec~la~cle~'#2'~dans~la~configuration~du~document.}{Consultez~la~documentation~de~la~classe.} + +\msg_new:nnnn {udesgeniethese}{config_fichiers_vides}{Les~fichiers~pour~#1~ne~sont~pas~specifies.~Specifiez-les~avec~la~cle~'#2'~dans~la~configuration~du~document.}{Consultez~la~documentation~de~la~classe.} + +\msg_new:nnnn {udesgeniethese}{config_langue_vide}{La~langue~principale~du~document~n'est~pas~specifiee.~Specifiez-la~avec~la~cle~'langue'~dans~la~configuration~du~document.}{Consultez~la~documentation~de~la~classe.} + +\msg_new:nnnn {udesgeniethese}{config_programme_vide}{Le~programme~du~document~n'est~pas~specifie.~Specifiez-le~avec~la~cle~'programme'~dans~la~configuration~du~document.}{Consultez~la~documentation~de~la~classe.} + +\msg_new:nnnn {udesgeniethese}{config_type_vide}{Le~type~du~document~n'est~pas~specifie.~Specifiez-le~avec~la~cle~'type'~dans~la~configuration~du~document.}{Consultez~la~documentation~de~la~classe.} + +\msg_new:nnnn {udesgeniethese}{date_annee_vide}{L'annee~de~la~date~du~document~n'est~pas~specifiee.~Specifiez-la~avec~la~macro~\Date~dans~le~preambule.}{Consultez~la~documentation~de~la~classe.} + +\msg_new:nnnn {udesgeniethese}{date_mois_vide}{Le~mois~de~la~date~du~document~n'est~pas~specifie.~Specifiez-le~avec~la~macro~\Date~dans~le~preambule.}{Consultez~la~documentation~de~la~classe.} + +\msg_new:nnnn {udesgeniethese}{dprdoctorat_max_pages}{La~DPR~de~doctorat~semble~longue.~Le~protocole~exige~un~maximum~de~40~pages.}{Consultez~le~protocole~de~redaction.} + +\msg_new:nnnn {udesgeniethese}{dprmaitrise_max_pages}{La~DPR~de~maitrise~semble~longue.~Le~protocole~exige~un~maximum~de~25~pages.}{Consultez~le~protocole~de~redaction.} + +\msg_new:nnnn {udesgeniethese}{essai_max_pages}{L'essai~semble~long.~Le~protocole~exige~un~maximum~de~70~pages.}{Consultez~le~protocole~de~redaction.} + +\msg_new:nnnn {udesgeniethese}{memoire_max_pages}{Le~memoire~semble~long.~Le~protocole~exige~un~maximum~de~120~pages.}{Consultez~le~protocole~de~redaction.} + +\msg_new:nnnn {udesgeniethese}{mots_cles_anglais_vide}{Les~mots-cles~anglais~ne~sont~pas~specifies.~Specifiez-les~avec~la~macro~\MotsClesAnglais~dans~le~preambule.}{Consultez~la~documentation~de~la~classe.} + +\msg_new:nnnn {udesgeniethese}{mots_cles_francais_vide}{Les~mots-cles~francais~ne~sont~pas~specifies.~Specifiez-les~avec~la~macro~\MotsClesFrancais~dans~le~preambule.}{Consultez~la~documentation~de~la~classe.} + +\msg_new:nnnn {udesgeniethese}{remerciements_longs}{Les~remerciements~doivent~etre~d'une~page~maximum.}{Consultez~la~documentation~de~la~classe.} + +\msg_new:nnnn {udesgeniethese}{resume_anglais_long}{Le~resume~anglais~doit~etre~d'une~page~maximum,~incluant~les~mots-cles.}{Consultez~la~documentation~de~la~classe.} + +\msg_new:nnnn {udesgeniethese}{titre_resume_mots_cles_anglais}{Le~titre,~le~resume~et~les~mots-cles~anglais~doivent~etre~donnes.~On~ne~peut~donner~l'un~sans~les~autres.}{Consultez~la~documentation.} + +\msg_new:nnnn {udesgeniethese}{resume_francais_long}{Le~resume~francais~doit~etre~d'une~page~maximum,~incluant~les~mots-cles.}{Consultez~la~documentation~de~la~classe.} + +\msg_new:nnnn {udesgeniethese}{these_max_pages}{La~these~semble~longue.~Le~protocole~exige~un~maximum~de~250~pages}{Consultez~le~protocole~de~redaction.} + +\msg_new:nnnn {udesgeniethese}{titre_anglais_vide}{Le~titre~anglais~du~document~n'est~pas~specifie.~Specifiez-le~avec~la~macro~\TitreAnglais~dans~le~preambule.}{Consultez~la~documentation~de~la~classe.} + +\msg_new:nnnn {udesgeniethese}{titre_francais_vide}{Le~titre~francais~du~document~n'est~pas~specifie.~Specifiez-le~avec~la~macro~\TitreFrancais~dans~le~preambule.}{Consultez~la~documentation~de~la~classe.} + +\msg_new:nnnn {udesgeniethese}{aerospatial}{Le~type~du~document~doit~etre~essai~si~le~programme~est~aerospatial.~Specifiez-le~~bon~type~dans~la~configuration~du~document.}{Consultez~la~documentation~de~la~classe.} + +%%----------------------------------------------------------------------------- %%--- OPTIONS DE CLASSE --------------------------------------------------- %%----------------------------------------------------------------------------- -\keys_define:nn { udes-genie-these } +\IfFormatAtLeastTF {2022-06-01} + {}{\msg_fatal:nn{udesgeniethese}{erreur_format}} + +\DeclareKeys { biblatex .code:n = {\tl_gset_eq:NN \g__udesgeniethese_references_engin_tl \c__udesgeniethese_references_biblatex_tl}, + biblatex .usage:n = load, bibtex .code:n = {\tl_gset_eq:NN \g__udesgeniethese_references_engin_tl \c__udesgeniethese_references_bibtex_tl}, + bibtex .usage:n = load, livre .code:n = { \PassOptionsToClass{twoside,openright}{book} \PassOptionsToPackage{twoside=true}{geometry} \tl_gset_eq:NN \g__udesgeniethese_format_tl \c__udesgeniethese_format_livre_tl }, + livre .usage:n = load, simple .code:n = { \PassOptionsToClass{oneside,openany}{book} \PassOptionsToPackage{twoside=false}{geometry} \tl_gset_eq:NN \g__udesgeniethese_format_tl \c__udesgeniethese_format_simple_tl }, + simple .usage:n = load, unknown .code:n = {\PassOptionsToClass{\CurrentOption}{book}}, } -\keys_set:nn { udes-genie-these } {livre} +\SetKeys{livre} -\IfFormatAtLeastTF {2022-06-01} -{ - \ProcessKeyOptions[udes-genie-these] -} -{ - \RequirePackage {l3keys2e} - \ProcessKeysOptions{udes-genie-these} -} +\ProcessKeyOptions %%----------------------------------------------------------------------------- %%--- DEPENDANCES DE CLASSE ----------------------------------------------- @@ -204,9 +261,9 @@ programme .choices:nn = {electrique,mecanique,aerospatial,chimique,civil} {\tl_gset_eq:NN \g__udesgeniethese_programme_tl \l_keys_choice_tl}, programme .value_required:n = true, - liste-figures .bool_gset:N = \g__udesgeniethese_listeDesFigures_bool, + liste-figures .bool_gset:N = \g__udesgeniethese_liste_figures_bool, liste-figures .default:n = true, - liste-tableaux .bool_gset:N = \g__udesgeniethese_listeDesTableaux_bool, + liste-tableaux .bool_gset:N = \g__udesgeniethese_liste_tableaux_bool, liste-tableaux .default:n = true, lignes .bool_gset:N = \g__udesgeniethese_lignes_bool, lignes .default:n = true, @@ -226,6 +283,10 @@ fichiers-references .value_required:n = true, style-references .tl_gset:N = \g__udesgeniethese_style_references_tl, style-references .value_required:n = true, + auto-bib .bool_gset:N = \g__udesgeniethese_autobib_bool, + auto-bib .default:n = true, + legendes-min .bool_gset:N = \g__udesgeniethese_legendes_min_bool, + legendes-min .default:n = true, } \DeclareDocumentCommand \Auteur {mm} @@ -302,7 +363,7 @@ foot=1.25cm,head=0.9cm,headsep=0.35cm,bindingoffset=0.5cm} \captionsetup[table]{labelsep=quad,textformat=simple,font=normal,margin=5ex,position=top,skip=0.5ex} \captionsetup[figure]{labelsep=quad,textformat=simple,font=normal,margin=5ex,position=bottom,skip=1ex} -\frenchbsetup{ItemLabels=\textendash} +\frenchsetup{ItemLabels=\textendash} %%----------------------------------------------------------------------------- %%--- REDEFINITION MACROS STANDARDS ------------------------------------ @@ -335,123 +396,6 @@ \secdef\__udesgeniethese_chapter\__udesgeniethese_schapter } -\addto\captionsfrench -{ - \tl_gset:Nn \contentsname {TABLE~DES~MATIÈRES} - \tl_gset:Nn \listfigurename {LISTE~DES~FIGURES} - \tl_gset:Nn \listtablename {LISTE~DES~TABLEAUX} - \tl_gset:Nn \chaptername {CHAPITRE} - \tl_gset:Nn \bibname {LISTE~DES~RÉFÉRENCES} - \tl_gset:Nn \appendixname {ANNEXE} - \tl_gset:Nn \partname {PARTIE} - \tl_gset:Nn \figurename {Figure} - \tl_gset:Nn \tablename {Tableau} - \tl_gset:Nn \glossaryname {LEXIQUE} - \tl_gset:Nn \indexname {INDEX} - \tl_gset:Nn \abstractname {RÉSUMÉ} - \tl_gset:Nn \refname {LISTE~DES~RÉFÉRENCES} - \tl_gset:Nn \prefacename {PRÉFACE} - \tl_gset:Nn \CaptionSeparator {~~} - \tl_gset:Nn \g__udesgeniethese_listsymbolsname_tl {LISTE~DES~SYMBOLES} - \tl_gset:Nn \g__udesgeniethese_listacronymsname_tl {LISTE~DES~ACRONYMES} - \tl_gset:Nn \g__udesgeniethese_acknowledgementsname_tl {REMERCIEMENTS} - \tl_gset:Nn \g__udesgeniethese_udesname_tl {UNIVERSITÉ~DE~SHERBROOKE} - \tl_gset:Nn \g__udesgeniethese_facultyname_tl {Faculté~de~génie} - \tl_gset:Nn \g__udesgeniethese_specialityname_tl {Spécialité~:~} - \tl_gset:Nn \g__udesgeniethese_juryname_tl {MEMBRES~DU~JURY} - \tl_gset:Nn \g__udesgeniethese_adressname_tl {Sherbrooke~(Québec)~Canada} - \tl_gset:Nn \g__udesgeniethese_motsclesname_tl {Mots-clés~:} - \tl_gset:Nn \g__udesgeniethese_jury_codirname_tl {Codirecteur} - \tl_gset:Nn \g__udesgeniethese_jury_codirnamef_tl {Codirectrice} - \tl_gset:Nn \g__udesgeniethese_jury_dirname_tl {Directeur} - \tl_gset:Nn \g__udesgeniethese_jury_dirnamef_tl {Directrice} - \tl_gset:Nn \g__udesgeniethese_jury_evalname_tl {Évaluateur} - \tl_gset:Nn \g__udesgeniethese_jury_evalnamef_tl {Évaluatrice} -} - -\addto\captionsenglish -{ - \tl_gset:Nn \contentsname {TABLE~OF~CONTENTS} - \tl_gset:Nn \listfigurename {LIST~OF~FIGURES} - \tl_gset:Nn \listtablename {LIST~OF~TABLES} - \tl_gset:Nn \chaptername {CHAPTER} - \tl_gset:Nn \bibname {LIST~OF~REFERENCES} - \tl_gset:Nn \appendixname {APPENDIX} - \tl_gset:Nn \partname {PART} - \tl_gset:Nn \figurename {Figure} - \tl_gset:Nn \tablename {Table} - \tl_gset:Nn \glossaryname {GLOSSARY} - \tl_gset:Nn \indexname {INDEX} - \tl_gset:Nn \abstractname {ABSTRACT}~ - \tl_gset:Nn \refname {REFERENCES} - \tl_gset:Nn \prefacename {PREFACE} - \tl_gset:Nn \CaptionSeparator {~~} - \tl_gset:Nn \g__udesgeniethese_listsymbolsname_tl {LIST~OF~SYMBOLS} - \tl_gset:Nn \g__udesgeniethese_listacronymsname_tl {LIST~OF~ACRONYMS} - \tl_gset:Nn \g__udesgeniethese_acknowledgementsname_tl {ACKNOWLEDGEMENTS} - \tl_gset:Nn \g__udesgeniethese_udesname_tl {UNIVERSITÉ~DE~SHERBROOKE} - \tl_gset:Nn \g__udesgeniethese_facultyname_tl {Faculté~de~génie} - \tl_gset:Nn \g__udesgeniethese_specialityname_tl {Specialité:~} - \tl_gset:Nn \g__udesgeniethese_juryname_tl {JURY~MEMBERS} - \tl_gset:Nn \g__udesgeniethese_adressname_tl {Sherbrooke~(Québec)~Canada} - \tl_gset:Nn \g__udesgeniethese_motsclesname_tl {Keywords:} - \tl_gset:Nn \g__udesgeniethese_jury_codirname_tl {Co-supervisor} - \tl_gset:Nn \g__udesgeniethese_jury_codirnamef_tl {Co-supervisor} - \tl_gset:Nn \g__udesgeniethese_jury_dirname_tl {Supervisor} - \tl_gset:Nn \g__udesgeniethese_jury_dirnamef_tl {Supervisor} %Directress - \tl_gset:Nn \g__udesgeniethese_jury_evalname_tl {Examiner} %Internal et external - \tl_gset:Nn \g__udesgeniethese_jury_evalnamef_tl {Examiner} %Internal et external -} - -%%----------------------------------------------------------------------------- -%%--- MESSAGES D'ERREURS -------------------------------------------------- -%%----------------------------------------------------------------------------- -\msg_new:nnnn {udesgeniethese}{auteur_nom_vide}{Le~nom~de~l'auteur~du~document~n'est~pas~specifie.~Specifiez-le~avec~la~macro~\Auteur~dans~le~preambule.}{Consultez~la~documentation~de~la~classe.} - -\msg_new:nnnn {udesgeniethese}{auteur_prenom_vide}{Le~prenom~de~l'auteur~du~document~n'est~pas~specifie.~Specifiez-le~avec~la~macro~\Auteur~dans~le~preambule.}{Consultez~la~documentation~de~la~classe.} - -\msg_new:nnnn {udesgeniethese}{config_fichier_vide}{Le~fichier~pour~#1~n'est~pas~specifie.~Specifiez-le~avec~la~cle~'#2'~dans~la~configuration~du~document.}{Consultez~la~documentation~de~la~classe.} - -\msg_new:nnnn {udesgeniethese}{config_fichiers_vides}{Les~fichiers~pour~#1~ne~sont~pas~specifies.~Specifiez-les~avec~la~cle~'#2'~dans~la~configuration~du~document.}{Consultez~la~documentation~de~la~classe.} - -\msg_new:nnnn {udesgeniethese}{config_langue_vide}{La~langue~principale~du~document~n'est~pas~specifiee.~Specifiez-la~avec~la~cle~'langue'~dans~la~configuration~du~document.}{Consultez~la~documentation~de~la~classe.} - -\msg_new:nnnn {udesgeniethese}{config_programme_vide}{Le~programme~du~document~n'est~pas~specifie.~Specifiez-le~avec~la~cle~'programme'~dans~la~configuration~du~document.}{Consultez~la~documentation~de~la~classe.} - -\msg_new:nnnn {udesgeniethese}{config_type_vide}{Le~type~du~document~n'est~pas~specifie.~Specifiez-le~avec~la~cle~'type'~dans~la~configuration~du~document.}{Consultez~la~documentation~de~la~classe.} - -\msg_new:nnnn {udesgeniethese}{date_annee_vide}{L'annee~de~la~date~du~document~n'est~pas~specifiee.~Specifiez-la~avec~la~macro~\Date~dans~le~preambule.}{Consultez~la~documentation~de~la~classe.} - -\msg_new:nnnn {udesgeniethese}{date_mois_vide}{Le~mois~de~la~date~du~document~n'est~pas~specifie.~Specifiez-le~avec~la~macro~\Date~dans~le~preambule.}{Consultez~la~documentation~de~la~classe.} - -\msg_new:nnnn {udesgeniethese}{dprdoctorat_max_pages}{La~DPR~de~doctorat~semble~longue.~Le~protocole~suggere~de~25~a~40~pages.}{Consultez~le~protocole~de~redaction.} - -\msg_new:nnnn {udesgeniethese}{dprmaitrise_max_pages}{La~DPR~de~maitrise~semble~longue.~Le~protocole~suggere~de~20~a~30~pages.}{Consultez~le~protocole~de~redaction.} - -\msg_new:nnnn {udesgeniethese}{essai_max_pages}{L'essai~semble~long.~Le~protocole~exige~un~maximum~de~70~pages.}{Consultez~le~protocole~de~redaction.} - -\msg_new:nnnn {udesgeniethese}{memoire_max_pages}{Le~memoire~semble~long.~Le~protocole~exige~un~maximum~de~120~pages.}{Consultez~le~protocole~de~redaction.} - -\msg_new:nnnn {udesgeniethese}{mots_cles_anglais_vide}{Les~mots-cles~anglais~ne~sont~pas~specifies.~Specifiez-les~avec~la~macro~\MotsClesAnglais~dans~le~preambule.}{Consultez~la~documentation~de~la~classe.} - -\msg_new:nnnn {udesgeniethese}{mots_cles_francais_vide}{Les~mots-cles~francais~ne~sont~pas~specifies.~Specifiez-les~avec~la~macro~\MotsClesFrancais~dans~le~preambule.}{Consultez~la~documentation~de~la~classe.} - -\msg_new:nnnn {udesgeniethese}{remerciements_longs}{Les~remerciements~doivent~etre~d'une~page~maximum.}{Consultez~la~documentation~de~la~classe.} - -\msg_new:nnnn {udesgeniethese}{resume_anglais_long}{Le~resume~anglais~doit~etre~d'une~page~maximum,~incluant~les~mots-cles.}{Consultez~la~documentation~de~la~classe.} - -\msg_new:nnnn {udesgeniethese}{titre_resume_mots_cles_anglais}{Le~titre,~le~resume~et~les~mots-cles~anglais~doivent~etre~donnes.~On~ne~peut~donner~l'un~sans~les~autres.}{Consultez~la~documentation.} - -\msg_new:nnnn {udesgeniethese}{resume_francais_long}{Le~resume~francais~doit~etre~d'une~page~maximum,~incluant~les~mots-cles.}{Consultez~la~documentation~de~la~classe.} - -\msg_new:nnnn {udesgeniethese}{these_max_pages}{La~these~semble~longue.~Le~protocole~exige~un~maximum~de~250~pages}{Consultez~le~protocole~de~redaction.} - -\msg_new:nnnn {udesgeniethese}{titre_anglais_vide}{Le~titre~anglais~du~document~n'est~pas~specifie.~Specifiez-le~avec~la~macro~\TitreAnglais~dans~le~preambule.}{Consultez~la~documentation~de~la~classe.} - -\msg_new:nnnn {udesgeniethese}{titre_francais_vide}{Le~titre~francais~du~document~n'est~pas~specifie.~Specifiez-le~avec~la~macro~\TitreFrancais~dans~le~preambule.}{Consultez~la~documentation~de~la~classe.} - -\msg_new:nnnn {udesgeniethese}{aerospatial}{Le~type~du~document~doit~etre~essai~si~le~programme~est~aerospatial.~Specifiez-le~~bon~type~dans~la~configuration~du~document.}{Consultez~la~documentation~de~la~classe.} - %%----------------------------------------------------------------------------- %%--- MACROS INTERNES -------------------------------------------------- %%----------------------------------------------------------------------------- @@ -484,19 +428,19 @@ \newcommand*{\__udesgeniethese_makechapterhead}[1] { - { - \parindent \z@ \normalfont % \raggedright - \ifnum \c@secnumdepth >\m@ne - \if@mainmatter - \LARGE\sffamily\bfseries \chaptername\space \thechapter - \par\nobreak - \vskip 0\p@ - \fi - \fi - \interlinepenalty\@M - \LARGE\sffamily\bfseries #1 \par\nobreak - \vskip 30\p@ - } + \group_begin: + \parindent \z@ \normalfont % \raggedright + \ifnum \c@secnumdepth >\m@ne + \if@mainmatter + \LARGE\sffamily\bfseries \chaptername\space \thechapter + \par\nobreak + \vskip 0\p@ + \fi + \fi + \interlinepenalty\@M + \LARGE\sffamily\bfseries #1 \par\nobreak + \vskip 30\p@ + \group_end: } \newcommand*{\__udesgeniethese_schapter}[1] @@ -511,12 +455,85 @@ \newcommand*{\__udesgeniethese_makeschapterhead}[1] { + \group_begin: + \parindent \z@ \normalfont %\raggedright + \vskip 0\p@ + \interlinepenalty\@M + \LARGE\sffamily\bfseries #1 \par\nobreak + \vskip 30\p@ + \group_end: +} + +\cs_new:Npn \__udesgeniethese_caption_fmt #1 { #1 } + +\cs_new:Npn \__udesgeniethese_setup_captions +{ + \addto\captionsfrench + { + \tl_gset:Nn \contentsname {TABLE~DES~MATIÈRES} + \tl_gset:Nn \listfigurename {LISTE~DES~FIGURES} + \tl_gset:Nn \listtablename {LISTE~DES~TABLEAUX} + \tl_gset:Nn \chaptername {CHAPITRE} + \tl_gset:Nn \bibname {LISTE~DES~RÉFÉRENCES} + \tl_gset:Nn \appendixname {ANNEXE} + \tl_gset:Nn \partname {PARTIE} + \tl_gset:Nn \figurename {Figure} + \tl_gset:Nn \tablename {Tableau} + \tl_gset:Nn \glossaryname {LEXIQUE} + \tl_gset:Nn \indexname {INDEX} + \tl_gset:Nn \abstractname {RÉSUMÉ} + \tl_gset:Nn \refname {LISTE~DES~RÉFÉRENCES} + \tl_gset:Nn \prefacename {PRÉFACE} + \tl_gset:Nn \CaptionSeparator {~~} + \tl_gset:Nn \g__udesgeniethese_listsymbolsname_tl {LISTE~DES~SYMBOLES} + \tl_gset:Nn \g__udesgeniethese_listacronymsname_tl {LISTE~DES~ACRONYMES} + \tl_gset:Nn \g__udesgeniethese_acknowledgementsname_tl {REMERCIEMENTS} + \tl_gset:Nn \g__udesgeniethese_udesname_tl {UNIVERSITÉ~DE~SHERBROOKE} + \tl_gset:Nn \g__udesgeniethese_facultyname_tl {Faculté~de~génie} + \tl_gset:Nn \g__udesgeniethese_specialityname_tl {Spécialité~:~} + \tl_gset:Nn \g__udesgeniethese_juryname_tl {MEMBRES~DU~JURY} + \tl_gset:Nn \g__udesgeniethese_adressname_tl {Sherbrooke~(Québec)~Canada} + \tl_gset:Nn \g__udesgeniethese_motsclesname_tl {Mots-clés~:} + \tl_gset:Nn \g__udesgeniethese_jury_codirname_tl {Codirecteur} + \tl_gset:Nn \g__udesgeniethese_jury_codirnamef_tl {Codirectrice} + \tl_gset:Nn \g__udesgeniethese_jury_dirname_tl {Directeur} + \tl_gset:Nn \g__udesgeniethese_jury_dirnamef_tl {Directrice} + \tl_gset:Nn \g__udesgeniethese_jury_evalname_tl {Évaluateur} + \tl_gset:Nn \g__udesgeniethese_jury_evalnamef_tl {Évaluatrice} + } + + \addto\captionsenglish { - \parindent \z@ \normalfont %\raggedright - \vskip 0\p@ - \interlinepenalty\@M - \LARGE\sffamily\bfseries #1 \par\nobreak - \vskip 30\p@ + \tl_gset:Nn \contentsname {TABLE~OF~CONTENTS} + \tl_gset:Nn \listfigurename {LIST~OF~FIGURES} + \tl_gset:Nn \listtablename {LIST~OF~TABLES} + \tl_gset:Nn \chaptername {CHAPTER} + \tl_gset:Nn \bibname {LIST~OF~REFERENCES} + \tl_gset:Nn \appendixname {APPENDIX} + \tl_gset:Nn \partname {PART} + \tl_gset:Nn \figurename {\__udesgeniethese_caption_fmt{Figure}} + \tl_gset:Nn \tablename {\__udesgeniethese_caption_fmt{Table}} + \tl_gset:Nn \glossaryname {GLOSSARY} + \tl_gset:Nn \indexname {INDEX} + \tl_gset:Nn \abstractname {ABSTRACT}~ + \tl_gset:Nn \refname {LIST~OF~REFERENCES} + \tl_gset:Nn \prefacename {PREFACE} + \tl_gset:Nn \CaptionSeparator {~~} + \tl_gset:Nn \g__udesgeniethese_listsymbolsname_tl {LIST~OF~SYMBOLS} + \tl_gset:Nn \g__udesgeniethese_listacronymsname_tl {LIST~OF~ACRONYMS} + \tl_gset:Nn \g__udesgeniethese_acknowledgementsname_tl {ACKNOWLEDGEMENTS} + \tl_gset:Nn \g__udesgeniethese_udesname_tl {UNIVERSITÉ~DE~SHERBROOKE} + \tl_gset:Nn \g__udesgeniethese_facultyname_tl {Faculté~de~génie} + \tl_gset:Nn \g__udesgeniethese_specialityname_tl {Specialité:~} + \tl_gset:Nn \g__udesgeniethese_juryname_tl {JURY~MEMBERS} + \tl_gset:Nn \g__udesgeniethese_adressname_tl {Sherbrooke~(Québec)~Canada} + \tl_gset:Nn \g__udesgeniethese_motsclesname_tl {Keywords:} + \tl_gset:Nn \g__udesgeniethese_jury_codirname_tl {Co-supervisor} + \tl_gset:Nn \g__udesgeniethese_jury_codirnamef_tl {Co-supervisor} + \tl_gset:Nn \g__udesgeniethese_jury_dirname_tl {Supervisor} + \tl_gset:Nn \g__udesgeniethese_jury_dirnamef_tl {Supervisor} %Directress + \tl_gset:Nn \g__udesgeniethese_jury_evalname_tl {Examiner} %Internal et external + \tl_gset:Nn \g__udesgeniethese_jury_evalnamef_tl {Examiner} %Internal et external } } @@ -594,46 +611,46 @@ \tl_if_empty:NT \g__udesgeniethese_date_mois_tl { \msg_error:nn {udesgeniethese}{date_mois_vide} } - \tl_case:Nn \g__udesgeniethese_langue_tl + \token_case_meaning:Nn \g__udesgeniethese_langue_tl { \c__udesgeniethese_langue_francais_tl { \tl_if_empty:NT \g__udesgeniethese_titre_francais_tl - { \msg_error:nn {udesgeniethese}{titre_francais_vide} } - \tl_if_empty:NT \g__udesgeniethese_mots_cles_francais_tl + { \msg_error:nn {udesgeniethese}{titre_francais_vide} } + \tl_if_empty:NT \g__udesgeniethese_mots_cles_francais_tl { \msg_error:nn {udesgeniethese}{mots_cles_francais_vide} } - \tl_if_empty:NT \g__udesgeniethese_fichier_resume_francais_tl + \tl_if_empty:NT \g__udesgeniethese_fichier_resume_francais_tl { \msg_error:nnnn {udesgeniethese}{config_fichier_vide}{le~resume~francais}{fichierResumeFrancais} } - \int_zero:N \l_tmpa_int - \tl_if_empty:NF \g__udesgeniethese_titre_anglais_tl + \int_zero:N \l_tmpa_int + \tl_if_empty:NF \g__udesgeniethese_titre_anglais_tl { \int_incr:N \l_tmpa_int } - \tl_if_empty:NF \g__udesgeniethese_fichier_resume_anglais_tl + \tl_if_empty:NF \g__udesgeniethese_fichier_resume_anglais_tl { \int_incr:N \l_tmpa_int } - \tl_if_empty:NF \g__udesgeniethese_mots_cles_anglais_tl + \tl_if_empty:NF \g__udesgeniethese_mots_cles_anglais_tl { \int_incr:N \l_tmpa_int } - \int_case:nnF { \l_tmpa_int } - { {0}{}{3}{} } - { - \msg_error:nn {udesgeniethese}{titre_resume_mots_cles_anglais} - \tl_gclear:N \g__udesgeniethese_fichier_resume_anglais_tl % resume pas genere - } + \int_case:nnF { \l_tmpa_int } + { {0}{}{3}{} } + { + \msg_error:nn {udesgeniethese}{titre_resume_mots_cles_anglais} + \tl_gclear:N \g__udesgeniethese_fichier_resume_anglais_tl % resume pas genere + } } \c__udesgeniethese_langue_english_tl { - \tl_if_empty:NT \g__udesgeniethese_titre_francais_tl - { \msg_error:nn {udesgeniethese}{titre_francais_vide} } - \tl_if_empty:NT \g__udesgeniethese_mots_cles_francais_tl - { \msg_error:nn {udesgeniethese}{mots_cles_francais_vide} } - \tl_if_empty:NT \g__udesgeniethese_fichier_resume_francais_tl - { \msg_error:nnnn {udesgeniethese}{config_fichier_vide}{le~resume~francais}{fichierResumeFrancais} } - \tl_if_empty:NT \g__udesgeniethese_titre_anglais_tl - { \msg_error:nn {udesgeniethese}{titre_anglais_vide} } - \tl_if_empty:NT \g__udesgeniethese_mots_cles_anglais_tl - { \msg_error:nn {udesgeniethese}{mots_cles_anglais_vide} } - \tl_if_empty:NT \g__udesgeniethese_fichier_resume_anglais_tl - { \msg_error:nnnn {udesgeniethese}{config_fichier_vide}{le~resume~anglais}{fichierResumeAnglais} } + \tl_if_empty:NT \g__udesgeniethese_titre_francais_tl + { \msg_error:nn {udesgeniethese}{titre_francais_vide} } + \tl_if_empty:NT \g__udesgeniethese_mots_cles_francais_tl + { \msg_error:nn {udesgeniethese}{mots_cles_francais_vide} } + \tl_if_empty:NT \g__udesgeniethese_fichier_resume_francais_tl + { \msg_error:nnnn {udesgeniethese}{config_fichier_vide}{le~resume~francais}{fichierResumeFrancais} } + \tl_if_empty:NT \g__udesgeniethese_titre_anglais_tl + { \msg_error:nn {udesgeniethese}{titre_anglais_vide} } + \tl_if_empty:NT \g__udesgeniethese_mots_cles_anglais_tl + { \msg_error:nn {udesgeniethese}{mots_cles_anglais_vide} } + \tl_if_empty:NT \g__udesgeniethese_fichier_resume_anglais_tl + { \msg_error:nnnn {udesgeniethese}{config_fichier_vide}{le~resume~anglais}{fichierResumeAnglais} } } } } @@ -679,7 +696,6 @@ \__udesgeniethese_setup_mecanique \tl_gset:Nn \g__udesgeniethese_essai_tl {GMC~809~Projet~en~génie~aérospatial} - \tl_if_eq:NNF \g__udesgeniethese_type_tl \c__udesgeniethese_type_essai_tl {\msg_error:nn {udesgeniethese}{aerospatial}} } @@ -722,7 +738,7 @@ \cs_new:Npn \__udesgeniethese_setup { - \tl_case:Nn \g__udesgeniethese_langue_tl + \token_case_meaning:Nn \g__udesgeniethese_langue_tl { \c__udesgeniethese_langue_francais_tl { \selectlanguage{french} @@ -742,7 +758,7 @@ \renewcommand{\footrulewidth}{0pt} } - \tl_case:Nn \g__udesgeniethese_format_tl + \token_case_meaning:Nn \g__udesgeniethese_format_tl { \c__udesgeniethese_format_livre_tl { @@ -760,126 +776,126 @@ } } - \use:c {__udesgeniethese_setup_ \g__udesgeniethese_programme_tl} } \cs_new:Npn \__udesgeniethese_generer_page_titre { - { - \begin{titlepage} - \renewcommand*{\thepage}{T1} - \vspace*{-0.5 in} - \begin{center} - \begin{tabular}{c} - \Large \g__udesgeniethese_udesname_tl \\ - \Large\g__udesgeniethese_facultyname_tl\\ - \Large\g__udesgeniethese_departement_tl\\[0.5ex] - \end{tabular} - \vfill - \tl_case:Nn \g__udesgeniethese_langue_tl + \group_begin: + \begin{titlepage} + \renewcommand*{\thepage}{T1} + \vspace*{-0.5 in} + \begin{center} + \begin{tabular}{c} + \Large \g__udesgeniethese_udesname_tl \\ + \Large\g__udesgeniethese_facultyname_tl\\ + \Large\g__udesgeniethese_departement_tl\\[0.5ex] + \end{tabular} + \vfill + \token_case_meaning:Nn \g__udesgeniethese_langue_tl + { + \c__udesgeniethese_langue_francais_tl { + {\huge\g__udesgeniethese_titre_francais_tl\par} + } + \c__udesgeniethese_langue_english_tl { + \begin{otherlanguage}{french} + {\huge\g__udesgeniethese_titre_francais_tl} + \end{otherlanguage}\par + {\Large\g__udesgeniethese_titre_anglais_tl\par} + } + } + \vfill + \begin{tabular}{c} + \Large \use:c {g__udesgeniethese_ \g__udesgeniethese_type_tl _tl} + \clist_if_in:NVT \g__udesgeniethese_specialite_cl \g__udesgeniethese_type_tl { - \c__udesgeniethese_langue_francais_tl { - {\huge\g__udesgeniethese_titre_francais_tl\par} - } - \c__udesgeniethese_langue_english_tl { - \begin{otherlanguage}{french} - {\huge\g__udesgeniethese_titre_francais_tl} - \end{otherlanguage}\par - {\Large\g__udesgeniethese_titre_anglais_tl\par} - } + \\[0.5ex]\Large\g__udesgeniethese_specialityname_tl\g__udesgeniethese_specialite_tl } - \vfill - \begin{tabular}{c} - \Large \use:c {g__udesgeniethese_ \g__udesgeniethese_type_tl _tl} - \clist_if_in:NVT \g__udesgeniethese_specialite_cl \g__udesgeniethese_type_tl - { - \\[0.5ex]\Large\g__udesgeniethese_specialityname_tl\g__udesgeniethese_specialite_tl - } - \end{tabular} - \vfill - \begin{tabular}{c} - {\Large\g__udesgeniethese_auteur_prenom_tl\ \g__udesgeniethese_auteur_nom_tl} - \end{tabular} - \vfill - {\Large \g__udesgeniethese_adressname_tl \par \vspace{2ex}\g__udesgeniethese_date_mois_tl\ \g__udesgeniethese_date_annee_tl} - \end{center} - \end{titlepage} - \clearpage - \clearpage - \if@openright\null\thispagestyle{empty}\renewcommand*{\thepage}{T2}\cleardoublepage\fi - } + \end{tabular} + \vfill + \begin{tabular}{c} + {\Large\g__udesgeniethese_auteur_prenom_tl\ \g__udesgeniethese_auteur_nom_tl} + \end{tabular} + \vfill + {\Large \g__udesgeniethese_adressname_tl \par \vspace{2ex}\g__udesgeniethese_date_mois_tl\ \g__udesgeniethese_date_annee_tl} + \end{center} + \end{titlepage} + \clearpage + \if@openright\null\thispagestyle{empty}\renewcommand*{\thepage}{T2}\cleardoublepage\fi + \group_end: } \cs_new:Npn \__udesgeniethese_generer_jury { - { - {\centering\chapter*{\g__udesgeniethese_juryname_tl}} + \group_begin: + {\centering\chapter*{\g__udesgeniethese_juryname_tl}} + + \begin{center} + \vspace{4ex} + \begin{tabular}{p{3in}} + \hfill\large\g__udesgeniethese_jury_directeur_tl\hfill\null \\ \hline + \centering\small + \token_case_meaning:Nn \g__udesgeniethese_jury_directeur_mf_tl + { + \c__udesgeniethese_male_tl {\g__udesgeniethese_jury_dirname_tl} + \c__udesgeniethese_female_tl {\g__udesgeniethese_jury_dirnamef_tl} + } + \end{tabular}\par - \begin{center} - \vspace{4ex} + \tl_if_empty:NF \g__udesgeniethese_jury_codirecteurs_cl + { \vspace{6ex} } + + \clist_map_inline:Nn \g__udesgeniethese_jury_codirecteurs_cl + { \begin{tabular}{p{3in}} - \hfill\large\g__udesgeniethese_jury_directeur_tl\hfill\null \\ \hline + \hfill\large ##1 \hfill\null \\ \hline + \seq_gpop_left:NN \g__udesgeniethese_jury_codirecteurs_mf_seq \l_tmpa_tl \centering\small - \tl_case:Nn \g__udesgeniethese_jury_directeur_mf_tl + \token_case_meaning:Nn \l_tmpa_tl { - \c__udesgeniethese_male_tl {\g__udesgeniethese_jury_dirname_tl} - \c__udesgeniethese_female_tl {\g__udesgeniethese_jury_dirnamef_tl} + \c__udesgeniethese_male_tl {\g__udesgeniethese_jury_codirname_tl} + \c__udesgeniethese_female_tl {\g__udesgeniethese_jury_codirnamef_tl} } \end{tabular}\par + } - \tl_if_empty:NF \g__udesgeniethese_jury_codirecteurs_cl - { \vspace{6ex} } - - \clist_map_inline:Nn \g__udesgeniethese_jury_codirecteurs_cl - { - \begin{tabular}{p{3in}} - \hfill\large ##1 \hfill\null \\ \hline - \seq_gpop_left:NN \g__udesgeniethese_jury_codirecteurs_mf_seq \l_tmpa_tl - \centering\small - \tl_case:Nn \l_tmpa_tl - { - \c__udesgeniethese_male_tl {\g__udesgeniethese_jury_codirname_tl} - \c__udesgeniethese_female_tl {\g__udesgeniethese_jury_codirnamef_tl} - } - \end{tabular}\par - } - - \tl_if_empty:NF \g__udesgeniethese_jury_evaluateurs_cl - { \vspace{6ex} } + \tl_if_empty:NF \g__udesgeniethese_jury_evaluateurs_cl + { \vspace{6ex} } - \clist_map_inline:Nn \g__udesgeniethese_jury_evaluateurs_cl - { - \begin{tabular}{p{3in}} - \hfill\large ##1 \hfill\null \\ \hline - \seq_gpop_left:NN \g__udesgeniethese_jury_evaluateurs_mf_seq \l_tmpa_tl - \centering\small - \tl_case:Nn \l_tmpa_tl - { - \c__udesgeniethese_male_tl {\g__udesgeniethese_jury_evalname_tl} - \c__udesgeniethese_female_tl {\g__udesgeniethese_jury_evalnamef_tl} - } - \end{tabular}\par - } - \end{center} + \clist_map_inline:Nn \g__udesgeniethese_jury_evaluateurs_cl + { + \begin{tabular}{p{3in}} + \hfill\large ##1 \hfill\null \\ \hline + \seq_gpop_left:NN \g__udesgeniethese_jury_evaluateurs_mf_seq \l_tmpa_tl + \centering\small + \token_case_meaning:Nn \l_tmpa_tl + { + \c__udesgeniethese_male_tl {\g__udesgeniethese_jury_evalname_tl} + \c__udesgeniethese_female_tl {\g__udesgeniethese_jury_evalnamef_tl} + } + \end{tabular}\par + } + \end{center} - \thispagestyle{empty}\clearpage - \if@openright\null\thispagestyle{empty}\cleardoublepage\fi - } + \thispagestyle{empty}\clearpage + \if@openright\null\thispagestyle{empty}\cleardoublepage\fi + \group_end: } \cs_new:Npn \__udesgeniethese_generer_dedicace { \tl_if_empty:NF \g__udesgeniethese_dedicace_tl { - {\null\vfill\flushright - \begin{minipage}{0.5\linewidth} - \setlength{\parskip}{1.5ex}\setlength{\parindent}{0em} - \g__udesgeniethese_dedicace_tl - \end{minipage} - \vfill\vfill - \thispagestyle{empty}\clearpage - \if@openright\null\thispagestyle{empty}\cleardoublepage\fi} + \group_begin: + \null\vfill\flushright + \begin{minipage}{0.5\linewidth} + \setlength{\parskip}{1.5ex}\setlength{\parindent}{0em} + \g__udesgeniethese_dedicace_tl + \end{minipage} + \vfill\vfill + \thispagestyle{empty}\clearpage + \if@openright\null\thispagestyle{empty}\cleardoublepage\fi + \group_end: } } @@ -943,7 +959,7 @@ { \__udesgeniethese_generer_jury } \__udesgeniethese_generer_resume_francais - \tl_case:Nn \g__udesgeniethese_langue_tl + \token_case_meaning:Nn \g__udesgeniethese_langue_tl { \c__udesgeniethese_langue_francais_tl { \tl_if_blank:VF \g__udesgeniethese_fichier_resume_anglais_tl @@ -963,13 +979,13 @@ \tableofcontents \if@openright\cleardoublepage\else\clearpage\fi - \bool_if:NT \g__udesgeniethese_listeDesFigures_bool + \bool_if:NT \g__udesgeniethese_liste_figures_bool { \listoffigures \if@openright\cleardoublepage\else\clearpage\fi } - \bool_if:NT \g__udesgeniethese_listeDesTableaux_bool + \bool_if:NT \g__udesgeniethese_liste_tableaux_bool { \listoftables \if@openright\cleardoublepage\else\clearpage\fi @@ -1005,7 +1021,7 @@ \refstepcounter{chapter} \addcontentsline{toc}{chapter}{\bibname} - \tl_case:Nn \g__udesgeniethese_references_engin_tl + \token_case_meaning:Nn \g__udesgeniethese_references_engin_tl { \c__udesgeniethese_references_bibtex_tl { \bibliography{\g__udesgeniethese_fichiers_references_cl} } @@ -1019,21 +1035,38 @@ %%----------------------------------------------------------------------------- %%--- GESTION AUTOMATISEE ------------------------------------------------- %%----------------------------------------------------------------------------- -\AtEndPreamble +\AddToHook{begindocument/before} { - \tl_case:Nn \g__udesgeniethese_references_engin_tl + \bool_if:NTF \g__udesgeniethese_legendes_min_bool + {\frenchsetup{SmallCapsFigTabCaptions=false}} + {\cs_gset:Npn \__udesgeniethese_caption_fmt #1 { \textsc{#1} }} + + \token_case_meaning:Nn \g__udesgeniethese_references_engin_tl { \c__udesgeniethese_references_bibtex_tl - { \bibliographystyle{\g__udesgeniethese_style_references_tl} } + { + \IfPackageLoadedTF{biblatex} + {\msg_error:nn {udesgeniethese}{biblatex_en_trop}}{} + \bibliographystyle{\g__udesgeniethese_style_references_tl} + } \c__udesgeniethese_references_biblatex_tl { + \IfPackageLoadedTF{biblatex} + {}{\msg_error:nn {udesgeniethese}{biblatex_manquant}} + \clist_map_inline:Nn \g__udesgeniethese_fichiers_references_cl - {\addbibresource{#1}} + { + \bool_if:nTF \g__udesgeniethese_autobib_bool + { \addbibresource{#1.bib} } + { \addbibresource{#1} } + } } } + \__udesgeniethese_setup_captions } -\AfterEndPreamble{ +\AddToHook{begindocument/end} +{ \__udesgeniethese_validation \__udesgeniethese_setup \frontmatter @@ -1044,7 +1077,8 @@ \onehalfspacing } -\AtEndDocument{ +\AddToHook{enddocument} +{ % Si pas eu d'annexes avec \appendix \int_compare:nNnT {\g__udesgeniethese_pages_int} = {0} { \int_gset:Nn \g__udesgeniethese_pages_int {\value{page}} } |