From 13141509121da94e7a6a3a524da222fbe946a8a1 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sat, 9 May 2015 22:27:02 +0000 Subject: gzt (9may15) git-svn-id: svn://tug.org/texlive/trunk@37300 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/latex/gzt/README | 24 + Master/texmf-dist/doc/latex/gzt/README.tex | 24 + .../texmf-dist/doc/latex/gzt/fixed-footnotes.tex | 8 + Master/texmf-dist/doc/latex/gzt/gzt-logo.tex | 88 + Master/texmf-dist/doc/latex/gzt/gzt.bib | 28 + Master/texmf-dist/doc/latex/gzt/gzt.cwl | 1 + Master/texmf-dist/doc/latex/gzt/gzt.pdf | Bin 0 -> 513072 bytes Master/texmf-dist/doc/latex/gzt/gzt.tex | 96 + Master/texmf-dist/doc/latex/gzt/gztarticle.tex | 1368 ++++ Master/texmf-dist/doc/latex/gzt/latexmkrc | 32 + Master/texmf-dist/doc/latex/gzt/latexmkrc.tex | 32 + Master/texmf-dist/doc/latex/gzt/lstlang0.sty | 115 + Master/texmf-dist/doc/latex/gzt/ltxdoc.cfg | 23 + Master/texmf-dist/doc/latex/gzt/notations.tex | 137 + .../texmf-dist/doc/latex/gzt/packages-charges.tex | 36 + Master/texmf-dist/doc/latex/gzt/todo.tex | 17 + Master/texmf-dist/source/latex/gzt/gzt.drv | 37 + Master/texmf-dist/source/latex/gzt/gzt.dtx | 6859 ++++++++++++++++++++ Master/texmf-dist/source/latex/gzt/gzt.ins | 95 + Master/texmf-dist/tex/latex/gzt/gzt.cfg | 178 + Master/texmf-dist/tex/latex/gzt/gzt.cls | 3529 ++++++++++ Master/texmf-dist/tex/latex/gzt/gzt.dbx | 165 + Master/texmf-dist/tex/latex/gzt/gzt.lbx | 45 + Master/texmf-dist/tex/latex/gzt/gztarticle.cls | 3175 +++++++++ 24 files changed, 16112 insertions(+) create mode 100644 Master/texmf-dist/doc/latex/gzt/README create mode 100644 Master/texmf-dist/doc/latex/gzt/README.tex create mode 100644 Master/texmf-dist/doc/latex/gzt/fixed-footnotes.tex create mode 100644 Master/texmf-dist/doc/latex/gzt/gzt-logo.tex create mode 100644 Master/texmf-dist/doc/latex/gzt/gzt.bib create mode 100644 Master/texmf-dist/doc/latex/gzt/gzt.cwl create mode 100644 Master/texmf-dist/doc/latex/gzt/gzt.pdf create mode 100644 Master/texmf-dist/doc/latex/gzt/gzt.tex create mode 100644 Master/texmf-dist/doc/latex/gzt/gztarticle.tex create mode 100644 Master/texmf-dist/doc/latex/gzt/latexmkrc create mode 100644 Master/texmf-dist/doc/latex/gzt/latexmkrc.tex create mode 100644 Master/texmf-dist/doc/latex/gzt/lstlang0.sty create mode 100644 Master/texmf-dist/doc/latex/gzt/ltxdoc.cfg create mode 100644 Master/texmf-dist/doc/latex/gzt/notations.tex create mode 100644 Master/texmf-dist/doc/latex/gzt/packages-charges.tex create mode 100644 Master/texmf-dist/doc/latex/gzt/todo.tex create mode 100644 Master/texmf-dist/source/latex/gzt/gzt.drv create mode 100644 Master/texmf-dist/source/latex/gzt/gzt.dtx create mode 100644 Master/texmf-dist/source/latex/gzt/gzt.ins create mode 100644 Master/texmf-dist/tex/latex/gzt/gzt.cfg create mode 100644 Master/texmf-dist/tex/latex/gzt/gzt.cls create mode 100644 Master/texmf-dist/tex/latex/gzt/gzt.dbx create mode 100644 Master/texmf-dist/tex/latex/gzt/gzt.lbx create mode 100644 Master/texmf-dist/tex/latex/gzt/gztarticle.cls (limited to 'Master/texmf-dist') diff --git a/Master/texmf-dist/doc/latex/gzt/README b/Master/texmf-dist/doc/latex/gzt/README new file mode 100644 index 00000000000..4e168d922c2 --- /dev/null +++ b/Master/texmf-dist/doc/latex/gzt/README @@ -0,0 +1,24 @@ +----------------------------------------------------------------------------- +gzt --- SMF bundle of classes for the French journal "La Gazette des + Math'ematiciens", version 0.9 + +E-mail: denis.bitouze@lmpa.univ-littoral.fr +Released under the LaTeX Project Public License v1.3c or later +See http://www.latex-project.org/lppl.txt +----------------------------------------------------------------------------- + +`gzt' is a new SMF bundle of classes for the French journal "La gazette des +math'ematiciens". + +Installation +------------ + +The classes are supplied in dtx format. If you want to unpack the dtx yourself, +running 'xetex gzt.dtx' will extract the two classes gzt.cls and gztarticle.cls +whereas 'pdflatex gzt.tex' will typeset the gztarticle.cls' documentation. + +Typesetting the documentation also requires a number of packages in addition to +those needed to use the gzt class. To compile the documentation without error, +you will need, among others, my personal package denisbdoc.sty for documenting +packages which can be found on CTAN. + diff --git a/Master/texmf-dist/doc/latex/gzt/README.tex b/Master/texmf-dist/doc/latex/gzt/README.tex new file mode 100644 index 00000000000..4e168d922c2 --- /dev/null +++ b/Master/texmf-dist/doc/latex/gzt/README.tex @@ -0,0 +1,24 @@ +----------------------------------------------------------------------------- +gzt --- SMF bundle of classes for the French journal "La Gazette des + Math'ematiciens", version 0.9 + +E-mail: denis.bitouze@lmpa.univ-littoral.fr +Released under the LaTeX Project Public License v1.3c or later +See http://www.latex-project.org/lppl.txt +----------------------------------------------------------------------------- + +`gzt' is a new SMF bundle of classes for the French journal "La gazette des +math'ematiciens". + +Installation +------------ + +The classes are supplied in dtx format. If you want to unpack the dtx yourself, +running 'xetex gzt.dtx' will extract the two classes gzt.cls and gztarticle.cls +whereas 'pdflatex gzt.tex' will typeset the gztarticle.cls' documentation. + +Typesetting the documentation also requires a number of packages in addition to +those needed to use the gzt class. To compile the documentation without error, +you will need, among others, my personal package denisbdoc.sty for documenting +packages which can be found on CTAN. + diff --git a/Master/texmf-dist/doc/latex/gzt/fixed-footnotes.tex b/Master/texmf-dist/doc/latex/gzt/fixed-footnotes.tex new file mode 100644 index 00000000000..8e9d5ac41fb --- /dev/null +++ b/Master/texmf-dist/doc/latex/gzt/fixed-footnotes.tex @@ -0,0 +1,8 @@ +\DeclareFixedFootnote{\conseilslatex}{Et donne de façon subliminale quelques conseils + \LaTeX{}. On consultera \autocite{Ensenbach} pour un panorama plus complet des + commandes et extensions obsolètes (et autres erreurs).} + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: "../gztdoc.tex" +%%% End: diff --git a/Master/texmf-dist/doc/latex/gzt/gzt-logo.tex b/Master/texmf-dist/doc/latex/gzt/gzt-logo.tex new file mode 100644 index 00000000000..587a83991fd --- /dev/null +++ b/Master/texmf-dist/doc/latex/gzt/gzt-logo.tex @@ -0,0 +1,88 @@ +\documentclass{standalone} +\usepackage{fontspec} +\usepackage[export]{adjustbox} +\usepackage[cmyk]{xcolor} +\usepackage{xparse} +\setmainfont{HelveticaNeueLTStd-ThEx} +\newfontfamily\des{HelveticaNeueLTStd-Th} +\newfontfamily\mathematiciens{HelveticaNeueLTStd-Lt} +\ExplSyntaxOn +\tl_new:N \l__gzt_frontmatter_head_text_tl +\tl_set:Nn \l__gzt_frontmatter_head_text_tl {% + \adjustbox{stack=r} + {% + \addfontfeature{LetterSpace=10} + \textcolor{__gzt_generic_light_color}{% + \fontsize{21}{0}\selectfont% + la\hspace{5mm}% + \fontsize{45}{0}\selectfont% + Gazette% + }% + \\[1.7mm]% + \fontsize{15}{0}\selectfont% + \textcolor{__gzt_generic_light_color}{% + \des% + \addfontfeature{LetterSpace=6}% + des% + }% + \hspace{2.5mm}% + \textcolor{__gzt_generic_dark_color}{% + \mathematiciens% + \addfontfeature{LetterSpace=6}% + Math\'ematiciens% + }% + }% +} +\NewDocumentCommand \frontmatterheadtext { } { + \l__gzt_frontmatter_head_text_tl +} +\definecolorset{cmyk}{__gzt_}{_color}{ + generic_dark,1,.60,.10,0; % kind of blue (!) + light_generic_dark,1,.35,0,0 % kind of blue (!), light +} +\colorlet{__gzt_generic_light_color}{black!50} +\colorlet{__gzt_dark_generic_light_color}{black!60} +\colorlet{__gzt_description_label_light_color}{__gzt_dark_generic_light_color} +\colorlet{__gzt_cover_itemize_label_color}{__gzt_light_generic_dark_color} +\colorlet{__gzt_default_text_color}{black} +\colorlet{__gzt_rubric_head_text_color}{black!65} +\colorlet{__gzt_bibliography_minibios_acknowledgments_bg_color}{black!10} +\colorlet{__gzt_headrule_color}{__gzt_generic_light_color!65} +\colorlet{__gzt_circlerule_color}{__gzt_generic_dark_color!65} +\colorlet{__gzt_frontmatter_text_color}{black!75} +\colorlet{__gzt_people_color}{__gzt_generic_dark_color} +\colorlet{__gzt_arrayrule_color}{__gzt_generic_dark_color} +\colorlet{__gzt_acknowledgements_color}{__gzt_generic_dark_color} +\colorlet{__gzt_question_color}{__gzt_generic_dark_color} +\colorlet{__gzt_boxed_issue_number_bg_color}{__gzt_generic_dark_color} +\colorlet{__gzt_rule_in_toc_color}{__gzt_generic_dark_color} +\colorlet{__gzt_rubric_in_toc_color}{__gzt_generic_dark_color} +\colorlet{__gzt_article_in_toc_color}{__gzt_generic_light_color} +\colorlet{__gzt_rubric_title_color}{__gzt_generic_light_color} +\colorlet{__gzt_article_title_color}{__gzt_generic_dark_color} +\colorlet{__gzt_section_color}{__gzt_generic_dark_color} +\colorlet{__gzt_subsection_color}{__gzt_generic_dark_color!90} +\colorlet{__gzt_subsubsection_color}{__gzt_generic_dark_color!80} +\colorlet{__gzt_rubric_abstract_color}{__gzt_generic_dark_color} +\colorlet{__gzt_article_abstract_color}{__gzt_generic_light_color} +\colorlet{__gzt_dotfill_color}{__gzt_generic_dark_color} +\colorlet{__gzt_about_frontcover_title_color}{__gzt_generic_dark_color} +\colorlet{__gzt_reflected_text_color}{__gzt_generic_dark_color} +\colorlet{__gzt_inside_frontcover_frame_bg_color}{__gzt_generic_dark_color!8} +\colorlet{__gzt_inside_frontcover_frame_title_color}{__gzt_generic_dark_color} +\colorlet{__gzt_footer_bg_color}{black!10} +\colorlet{__gzt_float_title_color}{__gzt_generic_dark_color} +\colorlet{__gzt_float_title_bg_color}{__gzt_generic_dark_color!10} +\colorlet{__gzt_float_frame_color}{__gzt_generic_dark_color!20} +\colorlet{__gzt_chapter_color}{__gzt_generic_dark_color} +\colorlet{__gzt_smf_number_color}{__gzt_generic_dark_color} +\colorlet{__gzt_date_color}{__gzt_generic_light_color} +\colorlet{__gzt_table_head_color}{__gzt_generic_dark_color!25} +\colorlet{__gzt_book_review_frame_bg_color}{__gzt_generic_dark_color!8} +\colorlet{__gzt_book_advertisement_bg_color}{white} +\colorlet{__gzt_book_advertisement_frame_color}{__gzt_generic_dark_color} +\ExplSyntaxOff +\begin{document} +\frontmatterheadtext +\end{document} + diff --git a/Master/texmf-dist/doc/latex/gzt/gzt.bib b/Master/texmf-dist/doc/latex/gzt/gzt.bib new file mode 100644 index 00000000000..03de2257e69 --- /dev/null +++ b/Master/texmf-dist/doc/latex/gzt/gzt.bib @@ -0,0 +1,28 @@ +% This file was created with JabRef 2.10. +% Encoding: UTF8 + + +@Online{Bitouze, + Title = {Conférence \LaTeX{} \no6}, + Author = {Bitouzé, Denis}, + Date = {2015-03-17}, + Url = {http://gte.univ-littoral.fr/members/dbitouze/pub/latex/diapositives-cours-d/conference-n-6/downloadFile/file/en-ligne6.pdf}, + Language = {french}, + Organization = {Université du Littoral Côte d'Opale}, + Subtitle = {Bibliographie (biber/biblatex), citations d’extraits}, + + Owner = {bitouze}, + Timestamp = {2015.03.18} +} + +@Manual{Ensenbach, + Title = {Liste des péchés des utilisateurs de \LaTeXe}, + Author = {Ensenbach, Marc and Trettin, Mark and Alfonsi, Bernard}, + Date = {2011-09-20}, + Language = {french}, + Subtitle = {Commandes et extensions obsolètes, et autres erreurs}, + Url = {http://mirrors.ctan.org/info/l2tabu/french/l2tabufr.pdf}, + + Owner = {bitouze}, + Timestamp = {2015.03.18} +} diff --git a/Master/texmf-dist/doc/latex/gzt/gzt.cwl b/Master/texmf-dist/doc/latex/gzt/gzt.cwl new file mode 100644 index 00000000000..8b137891791 --- /dev/null +++ b/Master/texmf-dist/doc/latex/gzt/gzt.cwl @@ -0,0 +1 @@ + diff --git a/Master/texmf-dist/doc/latex/gzt/gzt.pdf b/Master/texmf-dist/doc/latex/gzt/gzt.pdf new file mode 100644 index 00000000000..907745a7f74 Binary files /dev/null and b/Master/texmf-dist/doc/latex/gzt/gzt.pdf differ diff --git a/Master/texmf-dist/doc/latex/gzt/gzt.tex b/Master/texmf-dist/doc/latex/gzt/gzt.tex new file mode 100644 index 00000000000..e6a941e77f3 --- /dev/null +++ b/Master/texmf-dist/doc/latex/gzt/gzt.tex @@ -0,0 +1,96 @@ + +\chapter{Documentation} +\label{cha:documentation} + +\section{Configuration de la classe} + +Pour configurer la classe, on dispose de la commande semi-globale +\refCom{issuesetup}, à utiliser autant de fois que souhaité, de préférence en +préambule mais également au fil du document. Elle permet d'apporter des +modifications : +\begin{itemize} +\item ordinaires, par exemple pour spécifier divers aspects de l'édition en + cours (notamment son numéro) ; +\item extraordinaires, par exemple pour modifier une de ses expressions clés. +\end{itemize} + +\begin{docCommand}{issuesetup}{\marg{configuration}} + Cette commande permet de configurer la classe, la \meta{configuration} se + faisant au moyen de clés/valeurs. +\end{docCommand} + +\section{Configuration de l'édition en cours} + +Pour configurer l'édition en cours, on dispose des clés \refKey{number} +(obligatoire) et \refKey{month} et \refKey{year} (facultatives), à passer à la +commande \refCom{issuesetup}. + +\begin{docKey}{number}{=\meta{nombre}}{pas de valeur par défaut, + initialement vide} +\end{docKey} + +\begin{docKey}{month}{=\meta{nombre}}{pas de valeur par défaut, + initialement vide} +\end{docKey} + +\begin{docKey}{year}{=\meta{nombre}}{pas de valeur par défaut, + initialement vide} +\end{docKey} + +\section{Personnes impliquées dans le journal} +\label{sec:pers-impl-dans} + +On liste ici les commandes permettant de spécifier les personnes impliquées dans +le journal. + +Les commandes \refCom{editorinchief}, \refCom{editor} et \refCom{president} +suivantes permettent de spécifier respectivement un (ou plusieurs) rédacteur en +chef, un (ou plusieurs) rédacteur et le président de la \gls{smf} au moyen de +leurs : +\begin{itemize} +\item \meta{prénom} ; +\item \meta{nom} ; +\item \meta{institut} ; +\item \meta{courriel} ; +\end{itemize} +et, le cas échéant, de leur \meta{spécialité}. + +\begin{docCommand}{editorinchief}{\oarg{specialité}\marg{prénom}\marg{nom}\marg{institut}\marg{courriel}} + Cette commande permet de spécifier un rédacteur en chef. +\end{docCommand} + +\begin{docCommand}{editor}{\oarg{specialité}\marg{prénom}\marg{nom}\marg{institut}\marg{courriel}} + Cette commande permet de spécifier un rédacteur. +\end{docCommand} + +\begin{docCommand}{president}{\oarg{specialité}\marg{prénom}\marg{nom}\marg{institut}\marg{courriel}} + Cette commande permet de spécifier le président de la \gls{smf}. +\end{docCommand} + +Les commandes \refCom{classdesigner}, \refCom{classmaintainer} et +\refCom{graphicdesigner} suivantes, permettant de spécifier respectivement le +concepteur de la classe \LaTeX, le ou les maintaineurs de la classe \LaTeX et le +concepteur de la maquette, sont similaires aux commandes précédentes, sauf +qu'aucune spécialité ne peut être spécifiée. + +\begin{docCommand}{classdesigner}{\marg{prénom}\marg{nom}\marg{institut}\marg{courriel}} + Cette commande permet de spécifier le concepteur de la classe \LaTeX. +\end{docCommand} + +\begin{docCommand}{classmaintainer}{\marg{prénom}\marg{nom}\marg{institut}\marg{courriel}} + Cette commande permet de spécifier le ou les mainteneurs de la classe \LaTeX. +\end{docCommand} + +\begin{docCommand}{graphicdesigner}{\marg{prénom}\marg{nom}\marg{institut}\marg{courriel}} + Cette commande permet de spécifier le concepteur de la maquette. +\end{docCommand} + + +\iffalse +%%% Local Variables: +%%% mode: latex +%%% eval: (latex-mode) +%%% ispell-local-dictionary: "fr_FR" +%%% TeX-master: "../gazette.dtx" +%%% End: +\fi diff --git a/Master/texmf-dist/doc/latex/gzt/gztarticle.tex b/Master/texmf-dist/doc/latex/gzt/gztarticle.tex new file mode 100644 index 00000000000..c4704c67f23 --- /dev/null +++ b/Master/texmf-dist/doc/latex/gzt/gztarticle.tex @@ -0,0 +1,1368 @@ +\section{Introduction} +\label{sec-introduction} + +\begin{dbremark}{Documentation : travail en cours}{} + La présente documentation est un travail en cours. Nous remercions d'avance + les lecteurs qui ont des remarques à formuler ou qui trouveront des erreurs de + nous les signaler à l'adresse courriel figurant en fin de document. +\end{dbremark} + +La \smf fournit la classe \LaTeX{} \gztauthor{} destinée aux auteurs souhaitant +publier un article dans la +\href{http://smf4.emath.fr/Publications/Gazette/}{\gzt*{}}. Cette classe a pour +but : +\begin{enumerate} +\item de reproduire fidèlement la maquette de la \gzt{}, permettant ainsi aux + auteurs de pouvoir travailler la mise en page de leur document dans des + conditions (quasi-)réelles ; +\item de fournir un certain nombre d'outils (commandes et environnements) + destinés à faciliter la composition de documents, notamment ceux contenant des + formules de mathématiques. +\end{enumerate} + +\section{Avertissements préliminaires} +\label{sec-avert-prel} + +\begin{dbwarning}{Codage d'entrée \protect\lstinline+UTF-8+ obligatoire}{} + La \gztauthorcl{} de la \gzt{} repose de façon cruciale sur un codage + d'entrée en |UTF-8| : + \begin{itemize} + \item elle charge le \Package{inputenc}\footnote{% + Il convient donc de \emph{ne pas} charger ce package : on se reportera + à la \vref{sec-canevas-de-fichier} pour un canevas de fichier source + destiné à la \gzt{} et notamment pour un préambule typique.% + % + } avec l'option \docAuxKey{utf8} ; + \item elle suppose que les fichiers sources \file{.tex} sont effectivement + codés en |UTF-8| : on veillera donc à ce que l'éditeur utilisé soit réglé + sur ce codage d'entrée. + \end{itemize} +\end{dbwarning} + +\begin{dbwarning}{Format et compilation \hologo{pdfLaTeX}}{} + La composition des numéros de la \gzt*{} met en œuvre : + \begin{itemize} + \item le format \hologo{LaTeX}\footnote{Sous sa version \hologo{LaTeXe}, la + plus courante de nos jours.}. On évitera donc les commandes des autres + formats tels que \hologo{plainTeX} ; + \item le compilateur \hologo{pdfLaTeX}. En particulier, le compilateur + \hologo{LaTeX} n'étant pas utilisé : + \begin{enumerate} + \item les formats d'images acceptés sont \format{jpg}, \format{png} et + \format{pdf}\footnote{Le format recommandé est \format{pdf} car il est + vectoriel si bien que la qualité des images n'est pas dégradée en cas de + redimensionnement.}. Le \Format{eps}, quoique indirectement + supporté, est déconseillé ; + \item le code \program{PostScript}, notamment via \program{PSTricks}, n'est + pas directement pris en charge. Bien qu'il soit accepté, il est à éviter + dans la mesure du possible. + \end{enumerate} + \end{itemize} +\end{dbwarning} + +\begin{dbremark}{Composition par défaut en bi-colonne}{} + Sauf cas particuliers, tous les articles de la \gzt{} sont composés en mode + bi-colonne. +\end{dbremark} + +\section{Article standard} +\label{sec-article-standard} + +Nous commençons par décrire les éléments caractéristiques d'un article standard. + +\subsection{Préparation du \enquote{titre} de l'article} +\label{sec-prep-de-lart} + +Cette section liste les commandes, options et environnement permettant de +\emph{préparer} le \enquote{titre} de l'article ainsi que son éventuelle partie +finale. + +\subsubsection{Titre, sous-titre} +\label{sec-titre} + +\begin{docCommand}[doc description=\mandatory]{title}{\oarg{option}\marg{titre}} + Cette commande définit le \meta{titre} de l'article. Celui-ci apparaît alors + en début d'article et aussi comme métadonnée \enquote{Titre} du fichier + \textsc{pdf} correspondant. +\end{docCommand} + +\begin{docCommand}{subtitle}{\oarg{option}\marg{sous-titre}} + Cette commande définit l'éventuel \meta{sous-titre} de l'article. Celui-ci + est automatiquement ajouté au titre. +\end{docCommand} + +Les commandes \refCom{title} et \refCom{subtitle} admettent un argument +optionnel permettant de spécifier comme \oarg{option} un (sous-)titre court au +moyen de la clé \refKey{short}. + +\begin{docKey}{short}{=\meta{(sous-)titre court}}{pas de valeur par défaut, + initialement vide} + Cette clé définit un (sous-)titre \enquote{court} de l'article qui figure + alors à la place du (sous-)titre \enquote{normal} dans le sommaire et en titre + courant\footnote{En entête.}. +\end{docKey} + +\begin{bodycode} +\title[short=Les travaux de Martin \surname{Hairer}]{Martin \surname{Hairer}, + l'équation de KPZ et les structures de régularité} +\end{bodycode} + +\begin{dbremark}{Affichage des titre et sous-titre}{} + Pour que les titre et sous-titre soient affichés, il est nécessaire de + recourir à la commande habituelle \refCom{maketitle}. +\end{dbremark} + +\subsubsection{Auteur(s)} +\label{sec-auteurs} + +Un auteur d'article est spécifié au moyen de la commande \refCom{author} +suivante. En cas d'auteurs multiples, il suffit de recourir à plusieurs +occurrences de cette commande. + +\begin{docCommand}{author}{\oarg{options}\brackets{\meta{Nom}, \meta{Prénom}}} + Cette commande, facultative, définit un auteur d'article. +\end{docCommand} +% +\begin{dbwarning}{Format des prénom et nom de l'auteur}{} + On veillera à ce que : + \begin{enumerate} + \item la saisie des prénom et nom de l'auteur soit conforme à la syntaxe + (identique à celle de \hologo{BibTeX} et \package{biblatex}) : + % +\begin{bodycode}[listing options={showspaces}] +"\meta{Nom}", "\meta{Prénom}" +\end{bodycode} + % + \item les éventuels accents figurent dans les \meta{Prénom} et + \meta{Nom} ; + \item le \meta{Nom} \emph{ne} soit \emph{pas} saisi en capitales + (sauf pour la ou les majuscules) car il sera automatiquement + composé en petites capitales. + \end{enumerate} +\end{dbwarning} + +\begin{dbremark}{Affichage des prénoms et noms du ou des auteurs}{} + Pour que les prénoms et noms du ou des auteurs soient affichés, il est + nécessaire de recourir à la commande habituelle \refCom{maketitle}. +\end{dbremark} + +\subsubsection{Auteur(s) : détails} +\label{sec-auteurs-details} + +La commande \refCom{author} admet un argument optionnel permettant, pour chaque +auteur, de spécifier un certain nombre de détails complémentaires : son affiliation, sa +photo, son email, sa page Web, sa biographie express au moyen des clés +respectives %^^A (à séparer par des virgules) +\refKey{affiliation}, \refKey{photo}, \refKey{email}, \refKey{webpage} et +\refKey{minibio} : +\begin{bodycode} +\author[% + affiliation="\marg{affiliation(s)}",% + photo="\meta{photo}",% + email="\meta{email}",% + webpage="\meta{page Web}",% + minibio="\marg{biographie express}"% +]{"\meta{Nom}", "\meta{Prénom}"} +\end{bodycode} + +\begin{docKey}{affiliation}{={\marg{affiliation(s)}}}{pas de valeur par défaut, + initialement vide} + Cette clé permet de spécifier une ou plusieurs affiliations. En cas + d'affiliations multiples, celles-ci peuvent être séparées par la commande + \docAuxCommand*{newline}. +\end{docKey} + +\begin{docKey}{photo}{={\meta{photo}}}{pas de valeur par défaut, + initialement vide} + Cette clé permet de spécifier la photographie de l'auteur au moyen d'un + fichier image\footnote{Si ce fichier ne figure pas dans le dossier courant, il + faut faire figurer le chemin (relatif) y menant.}. +\end{docKey} + +\begin{docKey}{email}{={\meta{email}}}{pas de valeur par défaut, + initialement vide} + Cette clé permet de spécifier l'adresse courriel de l'auteur. +\end{docKey} + +\begin{docKey}{webpage}{={\meta{page Web}}}{pas de valeur par défaut, + initialement vide} + Cette clé permet de spécifier la page Web de l'auteur. +\end{docKey} + +\begin{docKey}{minibio}{={\marg{biographie express}}}{pas de valeur par défaut, + initialement vide} + Cette clé permet de spécifier la biographie express de l'auteur. +\end{docKey} + +\begin{dbwarning}{Paires d'accolades + % des clés \refKey{affiliation} et \refKey{minibio} + (relativement) obligatoires}{} + Au cas (probable) où les valeurs \meta{affiliation(s)} et \meta{biographie + express} des clés \refKey{affiliation} et \refKey{minibio} contiennent des + virgules, les paires d'accolades les entourant sont obligatoires. +\end{dbwarning} + +\begin{dbwarning}{Courriels et pages Web à saisir tels quels}{} + Les valeurs \meta{email} et \meta{webpage} des clés \refKey{email} et + \refKey{webpage} doivent être saisies telles quelles, sans recours aucun aux + commandes \refCom{url}, \docAuxCommand{href} ou assimilées des packages + \package{url} ou \package{hyperref}. +\end{dbwarning} + +\begin{dbremark}{Affichage des détails complémentaires sur les auteurs}{} + Pour que les détails complémentaires précédents soient affichés, il est + nécessaire de recourir aux commandes \refCom{printauthorsdetails} ou + \refCom{printbibliography}, destinées à être utilisées en fin d'article. + + Ces commandes affichent également d'éventuels remerciements à spécifier au + moyen de la commande \refCom{acknowledgements} suivante. +\end{dbremark} + +\begin{docCommand}{acknowledgements}{\marg{remerciements}} + Cette commande, facultative, permet de spécifier des \meta{remerciements} pour + un article. +\begin{bodycode} +\acknowledgements{% + L'auteur remercie Frédéric Patras, pour les nombreuses discussions qu'il + a eues avec lui sur le sujet. Il remercie également le relecteur anonyme, + qui a lu le texte avec un très grand soin, et dont les commentaires et + suggestions ont été très utiles.% +} +\end{bodycode} +\end{docCommand} + +\subsubsection{Résumé} +\label{sec-resume} + +\begin{docEnvironment}[doclang/environment content=résumé]{abstract}{} + Cet environnement, facultatif, est destiné à recevoir le \meta{résumé} de + l'article. +\end{docEnvironment} + +\subsection{Production du titre de l'article} +\label{sec-creation-du-titre} + +Le titre proprement dit de l'article, regroupant tous les éléments saisis à la +\vref{sec-prep-de-lart}, est produit par la commande standard +\refCom{maketitle}. + +\begin{docCommand}[doc description=\mandatory]{maketitle}{} + Cette commande \emph{produit} l'affichage du \enquote{titre} de l'article, + c'est-à-dire : + \begin{itemize} + \item son titre et son éventuel sous-titre (commandes \refCom{title} et + \refCom{subtitle}) ; + \item son ou ses éventuels auteurs, sous la forme de leurs noms et + prénoms\footnote{Les prénoms sont alors abrégés au moyen de leurs + initiales.} (commande(s) \refCom{author}) ; + \item son éventuel résumé (environnement \refEnv{abstract}). + \end{itemize} +\end{docCommand} + +L'exemple suivant\footnote{Les commandes \refCom{surname} et \refCom{enquote} + qui y figurent sont documentées plus loin.} illustre la plupart des commandes +et options vues jusqu'ici. + +\begin{bodycode} +\title[short=Les travaux de Manjul \surname{Bhargava}]{Manjul \surname{Bhargava}, + anneaux de petit rang et courbes elliptiques} +% +\author[% + affiliation={% + Univ. Bordeaux, IMB, UMR 5251, F-33400 Talence, France\newline% + CNRS, IMB, UMR 5251, F-33400 Talence, France\newline% + INRIA, F-33400 Talence, France% + },% + photo=Belabas,% + email=Karim.Belabas@math.u-bordeaux.fr,% + minibio={% + Karim Belabas est professeur à l'université de Bordeaux. Ses centres + d'intérêts sont la théorie des nombres sous toutes ses formes et le calcul + formel. Il développe le système libre PARI/GP.% + }% +]{Belabas, Karim} +% +\author[% + affiliation={% + Laboratoire de Mathématiques de Besançon, Facultés des sciences et techniques, + CNRS, UMR 6623, 16 route de Gray, 25030 Besançon, France% + },% + photo=Delaunay,% + email=Christophe.Delaunay@univ-fcomte.fr,% + minibio={% + Christophe Delaunay est professeur à l'université de Franche-Comté et membre + du laboratoire de mathématiques de Besançon. Il est spécialiste de théorie des + nombres.% + }% +]{Delaunay, Christophe} +% +\begin{abstract} + Manjul Bhargava a reçu la médaille Fields au congrès international de Séoul + \enquote{pour avoir développé de nouvelles méthodes en géométrie des nombres, + qu'il a appliquées au comptage des anneaux de petit rang et pour borner le + rang moyen de courbes elliptiques}. Cet article est un survol d'une partie + de ses travaux. +\end{abstract} +% +\maketitle +\end{bodycode} + +\subsection{Affichage des détails complémentaires sur les auteurs} + +\begin{docCommand}{printauthorsdetails}{} + Cette commande, facultative, \emph{produit} l'affichage : + \begin{itemize} + \item des détails complémentaires sur les auteurs (options + \refKey{affiliation}, \refKey{photo}, \refKey{email}, \refKey{webpage} et + \refKey{minibio}) ; + \item des éventuels remerciements (commande \refCom{acknowledgements}) ; + \end{itemize} + tels que définis à la \vref{sec-auteurs-details}. +\end{docCommand} + +\begin{dbwarning}{Commande \protect\docAuxCommand*{printauthorsdetails} inutile + en cas de bibliographie}{} + En cas de bibliographie (cf. commande \refCom{printbibliography}), l'usage de + la commande \refCom{printauthorsdetails} est inutile car l'affichage des + détails complémentaires sur les auteurs est alors automatique. +\end{dbwarning} + +\section{Article sans auteur mais avec signature \enquote{académique}} +\label{sec-article-sans-auteur} + +Les articles standard précédents sont écrits par une ou plusieurs personnes +physiques clairement identifiées en tant qu'auteurs. + +D'autres types d'articles n'ont pas véritablement d'auteurs mais sont plutôt +\enquote{signés} par, par exemple, un comité. Pour ce type d'article, on ne +recourra pas à la commande \refCom{author}, mais plutôt à la commande +\refCom{academicsignature} suivante. + +\begin{docCommand}{academicsignature}{\marg{signature}} + Cette commande permet de spécifier une \meta{signature} académique. +\begin{bodycode} +\academicsignature{% + Au nom du comité éditorial, Serge Nicaise (éditeur en chef) et Nicolas + Wicker (directeur technique).% +} +\end{bodycode} +\end{docCommand} + +\begin{dbwarning}{Commande \protect\docAuxCommand*{academicsignature} à effet \enquote{immédiat}}{} + La commande \refCom{author} \enquote{prépare} un auteur qui n'est affiché que + là où est employée la commande \refCom{maketitle}. Au contraire, la commande + \refCom{academicsignature} affiche \enquote{immédiatement} la \meta{signature} + passée en argument. +\end{dbwarning} + +\section{Articles de type \enquote{entretien}} +\label{sec-entretiens} + +Les entretiens sont caractérisés par l'alternance de questions et de +réponses. Les questions, qui doivent être composées de façon spécifique, sont +à passer en argument de la commande \refCom{question} suivante. + +\begin{docCommand}{question}{\marg{question}} + Cette commande permet de spécifier une \meta{question}. +\end{docCommand} + +\begin{dbremark}{Composition des réponses aux questions}{} + Les réponses aux questions ne nécessitant pas de mise en page particulière, + elles seront insérées telles quelles. +\end{dbremark} + +\begin{bodycode} +\question{Ton sujet principal est celui des systèmes dynamiques, mais quels + sont les autres thèmes qui t'intéressent ?} + +L'étude des systèmes dynamiques est un sujet qui peut être abordé de façon les +plus diverses. Certains les considèrent d'un point de vue combinatoire, +d'autres sont plus axés sur les probabilités ou encore sur l'analyse. [...] +Mais si mes capacités d'analystes n'avaient pu se réaliser dans les systèmes +dynamiques j'aurais fait autre chose. + +\question{Parmi ses lauréats de cette édition, on compte deux dynamiciens : + Maryam Mirzakhani et toi. Quelles sont les différences entre vos + approches ?} + +Ces travaux sont principalement concentrés sur un objet lié aux échanges +d'intervalles : le flot de Teichmüller. [...] +\end{bodycode} + +\begin{dbwarning}{Insertion manuelle d'espacements inutile}{} + On évitera de modifier l'agencement les questions et réponses en insérant + manuellement des espacements horizontaux ou verticaux + (\docAuxCommand*{hspace}, \docAuxCommand*{hskip}, \docAuxCommand*{vspace}, + \docAuxCommand*{vskip}, etc.). +\end{dbwarning} + +Les entretiens sont des articles en général sans auteur mais les personnes ayant +recueilli les propos peuvent être signalées dans le résumé (cf. environnement +\refEnv{abstract}), par exemple ainsi : + +\begin{bodycode} +\title{Entretien avec Artur \surname{Avila}} +\begin{abstract} + Propos recueillis à Séoul, pendant l'ICM, par Boris Adamczewski et Gaël + Octavia. +\end{abstract} +\maketitle +\end{bodycode} + +\section{Outils communs à tous types d'articles, fournis par \gztauthor} +\label{sec-outils-communs-tous} + +Cette section donne une liste exhaustive des outils (commandes et +environnements) fournis par la \gztauthorcl. + +\subsection{Images et tableaux} +\label{sec-images-tableaux} + +Les images et tableaux destinés à illustrer le corps d'un article doivent être +insérés dans les environnements \refEnv{gztfigure}, \refEnv{gztfigure*}, +\refEnv{gzttable} et \refEnv{gzttable*}, analogues, décrits dans cette section. + +\subsubsection{Images} +\label{sec-images} + +Une image est incluse au moyen de la commande standard +\docAuxCommand{includegraphics}\footnote{Il est possible de passer à cette + commande toutes ses options définies par le \Package{graphicx}.} mais celle-ci +doit être employée dans l'un des deux environnements \refEnv{gztfigure} et +\refEnv{gztfigure*} suivants. + +\begin{docEnvironment}[doclang/environment content=image incluse avec \docAuxCommand{includegraphics}]{gztfigure}{\oarg{option(s)}} + Cet environnement insère l'image : + \begin{itemize} + \item \emph{à l'emplacement où il est utilisé} ; + \item dans un cadre de largeur la ligne courante, donc notamment de la largeur + de la ligne d'une colonne en mode bi-colonne. + \end{itemize} +\end{docEnvironment} + +\begin{docEnvironment}[doclang/environment content=image incluse avec \docAuxCommand{includegraphics}]{gztfigure*}{\oarg{option(s)}} + Cet environnement insère l'image : + \begin{itemize} + \item en haut de la page où il a été employé, donc probablement \emph{pas} + à l'emplacement où il est utilisé (il s'agit d'une figure + \enquote{flottante}) ; + \item dans un cadre de largeur celle de l'empagement, donc à cheval sur les + deux colonnes en mode bi-colonne. + \end{itemize} +\end{docEnvironment} + +\subsubsection{Tableaux} +\label{sec-tableaux} + +Un tableau est créé au moyen de l'environnement standard +\docAuxEnvironment{tabular}\footnote{Il est recommandé de faire usage du + \Package*{booktabs} pour produire des tableaux plus lisibles.} mais celui-ci +doit être employé dans l'un des deux environnements \refEnv{gzttable} et +\refEnv{gzttable*} suivants. + +\begin{docEnvironment}[doclang/environment content=tableau créé avec \docAuxEnvironment{tabular}]{gzttable}{\oarg{option(s)}} + Cet environnement insère le tableau : + \begin{itemize} + \item \emph{à l'emplacement où il est utilisé} ; + \item dans un cadre de largeur la ligne courante, donc notamment de la largeur + de la ligne d'une colonne en mode bi-colonne. + \end{itemize} +\end{docEnvironment} + +\begin{docEnvironment}[doclang/environment content=tableau créé avec \docAuxEnvironment{tabular}]{gzttable*}{\oarg{option(s)}} + Cet environnement insère le tableau : + \begin{itemize} + \item en haut de la page où il a été employé, donc probablement \emph{pas} + à l'emplacement où il est utilisé (il s'agit d'un tableau + \enquote{flottant}) ; + \item dans un cadre de largeur celle de l'empagement, donc à cheval sur les + deux colonnes en mode bi-colonne. + \end{itemize} +\end{docEnvironment} + +\subsubsection{Options} +\label{sec-options-gzt} + +Les environnements \refEnv{gztfigure}, \refEnv{gztfigure*}, \refEnv{gzttable} et +\refEnv{gzttable*} admettent en argument optionnel : +\begin{itemize} +\item la plupart des (très nombreuses) options de l'environnement + \docAuxEnvironment{tcolorbox} du \Package*{tcolorbox}. On retiendra notamment + les options suivantes : +\begin{docKey}{title}{=\meta{titre}}{pas de valeur par défaut, + initialement vide} + Cette clé permet de spécifier l'éventuel \meta{titre} (ou légende). +\end{docKey} +\begin{docKey}{label}{=\meta{label}}{pas de valeur par défaut, initialement + vide} + Cette clé permet de spécifier l'éventuel \meta{label} de l'image, de sorte + à y faire référence, notamment au moyen de la commande \refCom{vref}. +\end{docKey} +\item la clé \refKey{copyright} suivante :\begin{docKey}{copyright}{=\meta{titulaire}}{pas de valeur par défaut, initialement + vide} + Cette clé permet de spécifier un éventuel \meta{titulaire} de + \emph{copyright}. +\end{docKey} +\end{itemize} + +Les exemples suivants illustrent les environnements et options qui viennent +d'être vus. + +% \tcbset{listing options={morekeywords=[2]{title,label}}} +\begin{bodycode}[listing options={morekeywords={[2]title,label}}] +L'exemple avec $a=-1$ et $b=0$ donne la courbe de la \vref{elliptique}. +% +\begin{gztfigure}[title=Courbe elliptique correspondant à l'équation + $y^2=x^3-x$,label=elliptique] + \includegraphics[width=\linewidth]{courbe-elliptique} +\end{gztfigure} +\end{bodycode} + +\begin{bodycode}[listing options={morekeywords={[2]title,label},deletekeywords={[3]section}}] +En analysant les chiffres des \vref{recru-mc-25,recru-mc-26} correspondant au +recrutement des maîtres de conférences, on voit que la proportion des femmes +recrutées est [...] +% +\begin{gzttable*}[label=recru-mc-25,title=Recrutement des maîtres de + conférences section 25] + \begin{tabular}{|l|cccccc|} + \hline + & 2008 & 2009 & 2010 & 2011 & 2012 & 2013 \\ \hline + [...] + \end{tabular} +\end{gzttable*} +% +\begin{gzttable*}[label=recru-mc-26,title=Recrutement des maîtres de + conférences section 26] + \begin{tabular}{|l|cccccc|} + \hline + & 2008 & 2009 & 2010 & 2011 & 2012 & 2013 \\ \hline + [...] + \end{tabular} +\end{gzttable*} +\end{bodycode} + +\subsection{Bibliographie} +\label{sec-bibliographie} + +Pour composer les bibliographies, la \gzt{} recourt aux outils modernes que sont +le \Package*{biblatex} et le moteur \hologo{biber}. Leur usage est détaillé dans +\autocite{Bitouze} et peut être brièvement résumé comme suit. +\begin{enumerate} +\item Construire, dans un \meta{fichier bibliographique}\footnote{De tels + fichiers sont d'extension \file{.bib}.}, une base bibliographique. + + Nous conseillons pour ce faire de recourir à un logiciel dédié, par exemple + \href{http://jabref.sourceforge.net/}{\program{JabRef}} à configurer en se + rendant dans le menu \menu{Options>Preferences} et, dans l'onglet : + \begin{itemize} + \item \menu{Général}\footnote{On pourra en profiter pour changer la langue de + l'interface dans la liste déroulante \menu{Language}.}, en choisissant + \menu{UTF8} dans la liste déroulante \menu{Default encoding} ; + \item \menu{Advanced}, en cochant l'option \menu{BibLaTeX mode} ; + \end{itemize} + + On n'oubliera pas de donner à chaque entrée bibliographique une \meta{clé} + permettant de l'identifier de façon unique dans la base + bibliographique\footnote{Sous \program{JabRef}, on pourra se faire aider pour + cela par l'icône en forme de \enquote{baguette magique}.}. +\item Dans le fichier source \file{.tex} : + \begin{enumerate} + \item \emph{En préambule}, utiliser la commande \docAuxCommand{addbibresource} + pour indiquer le \meta{fichier bibliographique} à considérer : +\begin{preamblecode} +\addbibresource{"\meta{fichier bibliographique}".bib} +\end{preamblecode} + \item Dans le corps du document, utiliser la commande + \docAuxCommand{autocite}\footnote{De préférence à la commande + \docAuxCommand{cite}.} du \Package*{biblatex} pour citer les références + bibliographiques (pourvue d'une \meta{clé}) : +\begin{bodycode} +\autocite{"\meta{clé}"} +\end{bodycode} + \item À la fin du document, faire figurer la liste des références + bibliographiques au moyen de la commande \refCom{printbibliography} + suivante. + \end{enumerate} +\item Procéder à une suite de compilations \hologo{pdfLaTeX}, \hologo{biber} et + \hologo{pdfLaTeX}\footnote{Pour automatiser ces compilations, on pourra + recourir au \enquote{compilateur} \program{latexmk}, fourni par toute + distribution \TeX{} moderne, en s'aidant du fichier de configuration + \file{latexmkrc} joint à la présente classe.}. +\end{enumerate} + +\begin{docCommand}{printbibliography}{} + Cette commande produit la liste des références bibliographiques saisies selon + la syntaxe du \Package*{biblatex}. Elle a été redéfinie de sorte + à automatiquement afficher, en sus de la bibliographie, les détails + complémentaires sur les auteurs (s'ils ont été renseignés). +\end{docCommand} + +\subsection{Commandes diverses} +\label{sec-commandes-diverses} + +La \gztauthorcl{} fournit des commandes généralistes ou propres aux +mathématiques destinées à faciliter la saisie d'un article à paraître dans la +\gzt{}. + +\subsubsection{Commandes généralistes} +\label{sec-comm-gener} + +\begin{docCommand}{smf}{} + Cette commande produit l'acronyme \textsc{smf} de la Société Mathématique de + France. +\end{docCommand} + +\begin{docCommand}{gzt}{} + Cette commande : + \begin{description} + \item[sous sa forme non étoilée :] produit l'abréviation \enquote{\gzt}. + \item[sous sa forme étoilée :] produit la forme complète \enquote{\gzt*}. + \end{description} +\end{docCommand} + +\begin{docCommand}{cad}{} + Cette commande : + \begin{description} + \item[sous sa forme non étoilée :] produit l'abréviation \enquote{c.-à-d.}. + \item[sous sa forme étoilée :] produit la forme complète + \enquote{c'est-à-dire}. + \end{description} +\end{docCommand} + +\begin{docCommand}{Cad}{} + Cette commande : + \begin{description} + \item[sous sa forme non étoilée :] produit l'abréviation \enquote{C.-à-d.}. + \item[sous sa forme étoilée :] produit la forme complète + \enquote{C'est-à-dire}. + \end{description} +\end{docCommand} + +\begin{docCommand}{surname}{\marg{nom de famille}} + Cette commande compose le \meta{nom de famille} en petites capitales. + \begin{dbwarning}{Petites capitales : à employer avec parcimonie}{} + \begin{itemize} + \item De manière générale, quand elles sont appliquées aux noms de + personnes, les petites capitales doivent ne s'appliquer qu'au nom de + famille, et notamment \emph{pas} aux prénoms. + \item Pour un article de la \gzt{}, on évitera d'appliquer systématiquement + les petites capitales (et donc la commande \refCom{surname}) à tous les + noms de famille : on les réservera aux noms d'auteurs, notamment à ceux + spécialement mis à l'honneur, par exemple s'ils figurent dans le titre + d'un article. + \end{itemize} + \end{dbwarning} +\end{docCommand} + +\begin{docCommand}{century}{\marg{numéro}} + Cette commande affiche le \meta{numéro}\footnote{Ce numéro doit être un nombre + entier relatif non nul.} d'un siècle en chiffre romain composé en petites + capitales, suivi : + \begin{itemize} + \item du mot \enquote{siècle} ou \enquote{century} ; + \item si \meta{numéro} $<0$, de l'expression \enquote{avant J.-C.} ou + \enquote{BC} ; + \end{itemize} + selon que la langue en cours est le français ou l'anglais. Ainsi : +\begin{bodycode}[listing and text] +Au \century{1}, [...]. Plus tard, au \century{8}, [...] +\end{bodycode} +\end{docCommand} + +\begin{docCommand}{aside}{\marg{texte}} + Cette commande permet de composer du \meta{texte} entre tirets longs, pour une + \enquote{incise} (un peu à la manière de parenthèses). + \begin{description} + \item[Sous sa forme non étoilée,] elle insère le \meta{texte} entre deux + tirets longs. + \item[Sous sa forme étoilée,] elle fait (seulement) précéder le \meta{texte} + d'un tiret, ce qui est à utiliser en fin de phrase. + \end{description} + Ainsi : +\begin{bodycode}[listing and text] +Des expériences \aside{dans le monde \enquote{réel}} ont même été suscitées +par des expériences numériques. +\end{bodycode} + et : +\begin{bodycode}[listing and text] +On soupçonne que non \aside*{par exemple on s'attend à ce que $1/\pi$ ne +soit pas une période}. +\end{bodycode} +\end{docCommand} + +% ^^A smf,cad,Cad,gzt,century,aside + +\subsubsection{Commandes propres aux mathématiques} +\label{sec-comm-propr-aux} + +La \gztauthorcl{} : +\begin{itemize} +\item charge les packages : + \begin{itemize} + \item \package*{kpfonts} qui fournit tous les symboles standard, y compris + ceux du \Package{amssymb}, mais en propose également de nombreux autres ; + \item \package*{mathtools} qui lui-même charge \package*{amsmath} (mais en + l'étendant et en corrigeant certains de ses défauts), si bien que toutes les + commandes de ces deux packages sont disponibles ; + \item \package*{mathrsfs} qui fournit de jolies lettres calligraphiques (via + la commande \docAuxCommand{mathscr}) ; + \end{itemize} +\item redéfinit certaines commandes et en fournit quelques nouvelles, listées + ci-dessous ; +\item fournit (en s'appuyant sur les packages \package*{amsthm} et + \package*{thmtools}) des environnements de type \enquote{théorème} classiques, + listés ci-dessous. +\end{itemize} + +\paragraph{Ensembles courants} + +\begin{docCommand}{N}{} + Cette commande affiche l'ensemble des nombres entiers positifs : + \enquote{$\mathbb{N}$}. +\end{docCommand} + +\begin{docCommand}{Z}{} + Cette commande affiche l'ensemble des nombres entiers relatifs : + \enquote{$\mathbb{Z}$}. +\end{docCommand} + +\begin{docCommand}{D}{} + Cette commande affiche l'ensemble des nombres décimaux : + \enquote{$\mathbb{D}$}. +\end{docCommand} + +\begin{docCommand}{Q}{} + Cette commande affiche l'ensemble des nombres rationnels : + \enquote{$\mathbb{Q}$}. +\end{docCommand} + +\begin{docCommand}{R}{} + Cette commande affiche l'ensemble des nombres réels : \enquote{$\mathbb{R}$}. +\end{docCommand} + +\begin{docCommand}{C}{} + Cette commande affiche l'ensemble des nombres complexes : + \enquote{$\mathbb{C}$}. +\end{docCommand} + +\begin{docCommand}{K}{} + Cette commande peut être utilisée pour dénoter un corps quelconque. Elle + affiche \enquote{$\mathbb{K}$}. +\end{docCommand} + +\paragraph{Fonctions trigonométriques circulaires et hyperboliques, directes et + réciproques} + +\begin{docCommand}{cotan}{} + Cette commande affiche la cotangente : \enquote{$\cotan$}. +\end{docCommand} + +\begin{docCommand}{arccos}{} + Cette commande affiche (la détermination principale de) l'arc cosinus : + \enquote{$\arccos$} ou + \enquote{\selectlanguage{english}$\arccos$\selectlanguage{french}} selon que + la langue en cours est le français ou l'anglais. +\end{docCommand} + +\begin{docCommand}{arcsin}{} + Cette commande affiche (la détermination principale de) l'arc sinus : + \enquote{$\arcsin$} ou + \enquote{\selectlanguage{english}$\arcsin$\selectlanguage{french}} selon que + la langue en cours est le français ou l'anglais. +\end{docCommand} + +\begin{docCommand}{arctan}{} + Cette commande affiche (la détermination principale de) l'arc tangente : + \enquote{$\arctan$} ou + \enquote{\selectlanguage{english}$\arctan$\selectlanguage{french}} selon que + la langue en cours est le français ou l'anglais. +\end{docCommand} + +\begin{docCommand}{ch}{} + Cette commande affiche le cosinus hyperbolique : \enquote{$\ch$}. +\end{docCommand} + +\begin{docCommand}{sh}{} + Cette commande affiche le sinus hyperbolique : \enquote{$\sh$}. +\end{docCommand} + +\begin{docCommand}{tanh}{} + Cette commande affiche la tangente hyperbolique : \enquote{$\tanh$} ou + \enquote{\selectlanguage{english}$\tanh$\selectlanguage{french}} selon que la + langue en cours est le français ou l'anglais. + \begin{dbremark}{Pas de commande \protect\lstinline+\\th+ pour la tangente + hyperbolique}{} + La commande |\th| est déjà définie dans \LaTeX{} et ne peut donc pas être + utilisée pour la tangente hyperbolique. + \end{dbremark} +\end{docCommand} + +\paragraph{Fonctions diverses} + +\begin{docCommand}{log}{} + Cette commande : + \begin{description} + \item[sous sa forme non étoilée :] produit \enquote{$\log$}. + \item[sous sa forme étoilée :] produit \enquote{$\log*$}. + \end{description} +\end{docCommand} + +\begin{docCommand}{lg}{} + Cette commande : + \begin{description} + \item[sous sa forme non étoilée :] produit \enquote{$\lg$}. + \item[sous sa forme étoilée :] produit \enquote{$\lg*$}. + \end{description} +\end{docCommand} + +\paragraph{Théorèmes et objets analogues} + +Pour faciliter la composition des théorèmes et objets analogues, la +\gztauthorcl{} fournit des environnements prêts à l'emploi et permet d'en créer +de nouveaux si besoin est (cf. commande \refCom{newtheorem}). + +Le \vref{env-theorems} liste les théorèmes et objets analogues disponibles +% +avec : +\begin{description} +\item[en colonne~1] le nom de l'environnement \LaTeX{} correspondant, et son + éventuel alias (utilisables indifféremment) ; +\item[en colonne~2] les titres récurrents correspondants selon que la langue en + cours est le français ou l'anglais. +\end{description} + +\begin{gzttable}[label=env-theorems,title=Environnements de type \enquote{théorème} fournis] + \begin{tabular}{ll} + Environnement/Alias & Titre en français/en anglais \\\toprule + |theoreme|/|theorem| & Théorème/Theorem \\\midrule + |corollaire|/|corollary| & Corollaire/Corollary \\\midrule + |conjecture| & Conjecture \\\midrule + |proposition| & Proposition \\\midrule + |lemme|/|lemma| & Lemme/Lemma \\\midrule + |axiome|/|axiom| & Axiome/Axiom \\\midrule[.75pt] + |definition|/|definition| & Définition/Definition \\\midrule + |remarque|/|remark| & Remarque/Remark \\\midrule + |exemple|/|example| & Exemple/Example \\\midrule + |notation| & Notation \\\midrule[.75pt] + |preuve|/|proof| & Preuve/Proof \\\bottomrule + \end{tabular} +\end{gzttable} + +\begin{dbremark}{\enquote{Théorèmes} non numérotés : versions étoilées des + environnements}{} + Tous les environnements \LaTeX{} du \vref{env-theorems} admettent une version + étoilée produisant des occurrences \emph{non} numérotées du \enquote{théorème} + correspondant. +\end{dbremark} + +Ces environnements s'emploient de façon classique, c'est-à-dire comme tout +environnement \LaTeX{}. Ils disposent cependant d'un argument optionnel +permettant de préciser le \enquote{théorème}, par exemple en spécifiant son +auteur. + +\begin{bodycode}[listing and text] +\begin{theorem} + Tout espace métrisable séquentiellement compact est compact. +\end{theorem} +\begin{definition}[congruence modulo $n$] + Soit $n$ un entier supérieur ou égal à 2. Deux entiers $a$ et $b$ sont dits + congruents modulo $n$ si $a - b \in n\Z$ +\end{definition} +\begin{remark*} + \[ + e^{i\pi}+1=0. + \] +\end{remark*} +\begin{proof} + Tout ce qui est rare est cher. Or un cheval bon marché est rare. Donc un + cheval bon marché est cher. +\end{proof} +\end{bodycode} + +On remarque dans l'exemple précédent que les \enquote{théorèmes} ont des mises +en forme variables. La \gztauthorcl{} fournit effectivement trois styles de +\enquote{théorèmes}, \docValue{theorem}, \docValue{definition} et +\docValue{proof}, dont les caractéristiques sont indiquées au +\vref{env-theorems-styles}. + +\begin{gzttable}[label=env-theorems-styles,title=Styles de \enquote{théorèmes} fournis] +\begin{tabular}{lp{3cm}p{3cm}p{5.5cm}} +Style & Titre récurrent & Contenu & Théorèmes concernés \\\toprule +\docValue{theorem} & gras & italique + & théorèmes, corollaires, conjectures, propositions, lemmes, axiomes \\\midrule +\docValue{definition} & gras & romain & définitions, remarques, exemples, notations \\\midrule +\docValue{proof} & italique, non gras, non numéroté & romain, terminé par un carré noir & preuves \\\bottomrule +\end{tabular} +\end{gzttable} + +% \begin{description} +% \item[\docValue{theorem} :]\ +% \begin{enumerate} +% \item le titre récurrent (et l'éventuelle précision) est en gras ; +% \item le contenu est en italique. +% \end{enumerate} +% Ce style est appliqué aux environnements \enquote{de type théorème}, \cad*{} +% les théorèmes, corollaires, conjectures, propositions, lemmes et axiomes. +% \item[\docValue{definition} :]\ +% \begin{enumerate} +% \item le titre récurrent (et l'éventuelle précision) est en gras ; +% \item le contenu \emph{n'est pas} en italique. +% \end{enumerate} +% Ce style est appliqué aux environnements \enquote{de type définition}, \cad*{} +% les définitions, remarques, exemples et notations. +% \item[\docValue{proof} :]\ +% \begin{enumerate} +% \item le titre récurrent (et l'éventuelle précision) \emph{n'est pas} en gras, +% est en italique et n'est \emph{jamais} numéroté ; +% \item le contenu \emph{n'est pas} en italique et se termine par un carré noir +% en fin de ligne. +% \end{enumerate} +% Ce style est appliqué aux environnements \enquote{de type preuve}, +% \cad*{}... les preuves. +% \end{description} + +Si les environnements de \enquote{théorème} fournis par la classe ne suffisent +pas, la commande \refCom{newtheorem} permet d'en créer de nouveaux. + +\begin{docCommand}{newtheorem}{\oarg{option(s)}\marg{nom}} + Cette commande crée un nouvel environnement \LaTeX{}, \meta{nom}, destiné à la + composition d'un \enquote{théorème} dont, par défaut : + \begin{itemize} + \item le titre récurrent est \meta{Nom}\footnote{\Cad*{}, quelle que soit la + langue en cours, le \meta{nom} de l'environnement \LaTeX{} dont l'initiale + est en majuscule.} ; + \item le style est \docValue{theorem}. + \end{itemize} + Cette commande crée également l'environnement \meta{nom}* produisant des + occurrences \emph{non} numérotées de ce \enquote{théorème}. + + Si les valeurs par défaut du titre récurrent (\meta{Nom}) ou du style + (\docValue{theorem}) ne conviennent pas, il suffit spécifier celles souhaitées + en \meta{option(s)} au moyen des clés \refKey{frenchtitle}, + \refKey{englishtitle} et \refKey{style} suivantes. + \begin{docKey}{frenchtitle}{={\meta{titre récurrent en français}}}{pas de + valeur par défaut, initialement vide} + Cette clé permet de spécifier un \meta{titre récurrent en français} + différent de \meta{Nom}. + \end{docKey} + \begin{docKey}{englishtitle}{={\meta{titre récurrent en anglais}}}{pas de + valeur par défaut, initialement vide} + Cette clé permet de spécifier un \meta{titre récurrent en anglais} différent + de \meta{Nom}. + \end{docKey} + \begin{docKey}{style}{=\docValue{theorem}\textbar\docValue{definition}\textbar\docValue{proof}}{pas + de valeur par défaut, initialement \docValue{theorem}} + Cette clé permet de spécifier le style du \enquote{théorème} à créer, au + moyen des valeurs \docValue{theorem}, \docValue{definition} et + \docValue{proof}. + \end{docKey} + +\newtheorem{article} +\newtheorem[frenchtitle=Fait,style=definition]{fact} +\begin{preamblecode} +\newtheorem{article} +\newtheorem[frenchtitle=Fait,style=definition]{fact} +\end{preamblecode} +\begin{bodycode}[listing and text] +\begin{article}[dit premier] +Les hommes naissent et demeurent libres et égaux en droits\ldots{} +\end{article} +\begin{fact*} +Tout ce qui est rare est cher. +\end{fact*} +\begin{fact} +Un cheval bon marché est rare. +\end{fact} +\end{bodycode} +\end{docCommand} + +\subsubsection{Code informatique} +\label{sec-commande-pour-code} + +La \gztauthorcl{} fournit des outils permettant de faire aisément figurer du +code informatique, notamment du code \LaTeX{} : +\begin{itemize} +\item l'environnement \refEnv{gztcode} pour des listings ; +\item la commande \refCom{gztverb} pour de courts extraits, notamment amenés + à figurer dans des phrases. +\end{itemize} + +\begin{docEnvironment}[doclang/environment content=listing]{gztcode}{\oarg{option(s)}} + Cet environnement permet de faire figurer un listing de code informatique dans + une boîte colorée. +\begin{bodycode}[listing and text] +Nous préconisons l'environnement \verb|align*| : +\begin{gztcode} +\begin{align*} + a & = a\\ + b & = b +\end{align*} +\end{gztcode} +\end{bodycode} +\end{docEnvironment} + +L'environnement \refEnv{gztcode} admet en argument optionnel la plupart des +(très nombreuses) options de l'environnement \docAuxEnvironment{tcblisting} du +\Package*{tcolorbox}. On retiendra notamment les options suivantes. + +\begin{docKey}{title}{=\meta{titre}}{pas de valeur par défaut, + initialement vide} + Cette clé permet de donner un \meta{titre} au listing. +\begin{bodycode}[listing and text,listing options={morekeywords={[2]title}}] +Nous préconisons l'environnement \verb|align*| : +\begin{gztcode}[title=Alignement d'équations] +\begin{align*} + a & = a\\ + b & = b +\end{align*} +\end{gztcode} +\end{bodycode} +\end{docKey} + +\begin{docKey}{listing and text}{}{} + Cette clé permet de, dans la boîte colorée, faire figurer en partie : + \begin{itemize} + \item haute, le listing ; + \item basse, son résultat compilé par \LaTeX{}. + \end{itemize} + % ^^A + \begin{dbwarning}{Option \protect\refKey*{listing and text} : seulement pour + du code \LaTeX{}}{} + L'option \refKey{listing and text} n'a de sens que pour un listing de code + \LaTeX{}. + \end{dbwarning} +\begin{tcboutputlisting} +\begin{gztcode}[listing and text] +L'environnement \verb|eqnarray| est obsolète et nous préconisons plutôt +\verb|align| : + +\begin{minipage}[t]{0.4\linewidth} + Avec l'environnement \verb|eqnarray*| : + \begin{eqnarray*} + a & = & a\\ + b & = & b + \end{eqnarray*} +\end{minipage} +\hspace{1cm} +\begin{minipage}[t]{0.4\linewidth} + Avec l'environnement \verb|align*| : + \begin{align*} + a & = a\\ + b & = b + \end{align*} +\end{minipage} +\end{gztcode} +\end{tcboutputlisting} +L'exemple suivant illustre l'usage de cette option\conseilslatex{}. Le +code : +\tcbinputlisting{codes,listing only} +donne : +\input{\jobname.listing} +\end{docKey} + +L'environnement \refEnv{gztcode} permet d'afficher du code informatique +arbitraire. Mais, dans les listings précédents, on constate que certaines +commandes \LaTeX{} sont mises en évidence, en l'occurrence en gras. Ceci +provient du fait que l'environnement \refEnv{gztcode} est configuré pour, par +défaut, colorer syntaxiquement le code \LaTeX{}. Mais d'autres langages sont +pris en charge. + +\begin{dbremark}{Environnement \protect\refEnv*{gztcode} : pas seulement pour le + code \LaTeX{}}{} + L'environnement \refEnv{gztcode} permet de colorer syntaxiquement le code + informatique de tout langage connu du \Package*{listings}. Pour ce faire, il + suffit de le spécifier (selon la syntaxe de ce package) en argument de + l'option \refKey{listing options} suivante. +\end{dbremark} + +\begin{docKey}{listing options}{}{} + Cette clé de l'environnement \refEnv{gztcode} permet de passer au listing + toute option connue du \Package*{listings}, notamment le langage sous-jacent + au moyen de l'option \docAuxKey{language}. +\lstset{escapechar={},escapeinside={}} +\begin{bodycode}[listing and text,listing options={deletekeywords={listing,[2]style}}] +\lstdefinestyle{mon-style}{% + language=Python,% + basicstyle=\ttfamily,% + keywordstyle=\color{magenta},% + commentstyle=\color{gray}\itshape,% + stringstyle=\color{cyan}% +} +% +\begin{gztcode}[listing options={style=mon-style}] +"""Calcul de la factorielle""" # En python +def factorielle(x): + if x < 2: + return 1 + else: + return x * factorielle(x-1) +\end{gztcode} +\end{bodycode} +\lstset{escapechar="} +\end{docKey} + +\begin{docCommand}{gztverb}{\marg{code}} + Cette commande permet d'afficher \emph{verbatim}\footnote{\Cad*{} tel quel, + sans être compilé par \LaTeX{}.} un (court) extrait de \meta{code} passé en + argument. + + L'exemple suivant illustre l'usage de cette commande\conseilslatex. +\begin{bodycode}[listing and text,colback=white,listing options={deletekeywords={[3]style}}] +Dans le cas de \LaTeX, les commandes de style de caractères \gztverb{\bf}, +\gztverb{\it}, \gztverb{\sf}, \gztverb{\tt}, \gztverb{\sc}, \gztverb{\sl}, +\gztverb{\rm} sont désormais à proscrire. Elles doivent être remplacées par +les commutateurs, respectivement \gztverb{\bfseries}, \gztverb{\itshape}, +\gztverb{\sffamily}, \gztverb{\ttfamily}, \gztverb{\scshape}, +\gztverb{\slshape}, \gztverb{\rmfamily}. +\end{bodycode} +\end{docCommand} + +\section{Autres outils communs à tous types d'articles} +\label{sec-outils-communs-tous-1} + +Cette section donne une liste d'outils (commandes et environnements) fournis par +des packages automatiquement chargés par la \gztauthorcl\footnote{La + \vref{sec-packages-charges-par} liste ceux dont les fonctionnalités peuvent + être utiles aux auteurs.}. + +\begin{dbwarning}{Liste des fonctionnalités des packages tiers non exhaustive}{} + Cette liste est \emph{non exhaustive} : + \begin{itemize} + \item seule une infime partie des packages existants est chargée par la + classe ; + \item seuls certains packages chargés par la classe sont cités ; + \item seules certaines fonctionnalités des packages cités sont décrites. Le + lecteur souhaitant en savoir davantage est invité à lire la documentation de + ces packages. + \end{itemize} +\end{dbwarning} + +\subsection{Guillemets, citations} +\label{sec-guillemets-citations} + +Le \Package*{csquotes} est dédié aux citations, formelles et informelles, +d'extraits de textes. Il propose notamment la commande \refCom{enquote} +suivante, simple d'emploi. + +\begin{docCommand}{enquote}{\marg{texte}} + Cette commande compose le \meta{texte} entre guillemets, automatiquement + adaptés : + \begin{itemize} + \item aux standards typographiques de la langue en cours. On pourra donc + l'utiliser dès que du texte est à mettre entre guillemets ; + \item au niveau (1 ou 2) de \enquote{citation} en cas d'emboîtement. On + pourra donc également l'utiliser dès que du texte est à citer de façon + informelle. + \end{itemize} +\begin{bodycode}[listing and text] +Il lui répondit: \enquote{Courteline disait: \enquote{Passer pour un idiot aux + yeux d'un imbécile est une volupté de fin gourmet.}} +\end{bodycode} +\end{docCommand} + +\begin{docCommand}{textelp}{\marg{texte}} + Cette commande est à employer pour signifier une omission, avec éventuel ajout + de \meta{texte}. + + Cf. \vref{sec-epigraphes} pour un exemple d'utilisation de cette commande. +\end{docCommand} + +(\textsc{À suivre...}) + +\subsection{Adresses Web (\enquote{\textsc{url}})} +\label{sec-url} + +Le \Package*{hyperref} fournit (entre autres) la commande \refCom{url} qui permet +de facilement afficher des adresses Web (aussi appelées \enquote{\textsc{url}}), +même si elles comportent des caractères spéciaux de \TeX{} (|#|, |_|, |~|, +\lstinline[commentstyle={}]+%+, |&|, etc.). + +\begin{docCommand}{url}{\marg{adresse Web}} + Cette commande affiche l'\meta{adresse Web} saisie \emph{telle + quelle}\footnote{Notamment sans faire précéder les éventuels caractères + spéciaux qu'elle contient de la commande d'échappement + \protect\lstinline+\\+.} et fait d'elle un lien hypertexte. +\begin{bodycode}[listing and text,listing options={deletekeywords={[2]url,math}}] +Pour plus d'information, nous renvoyons à notre site Web +\url{http://math.univ-lille1.fr/~nwejm/}. +\end{bodycode} + \lstset{deletekeywords={[2]url,[1]exemple}}% +\begin{bodycode}[listing and text,listing options={deletekeywords={[2]url,[1]exemple}}] +Par exemple, \url{www.cnrs.fr/insmi/IMG/pdf/Parite_ReunionDU290312.pdf}. +\end{bodycode} +\end{docCommand} + +\subsection{Graphiques de très haute qualité} +\label{sec-graphiques-de-tres} + +Le \Package*{pgfplots} permet de créer aisément des graphiques (de dimensions +$2$ ou $3$) de très haute qualité, que ce soit pour représenter des fonctions ou +des jeux de données. + +(\textsc{À suivre...}) + +\subsection{Références croisées} +\label{sec-references-croisees} + +Le \Package*{cleveref}, utilisé conjointement avec le \Package*{varioref}, rend la +commande \refCom{vref} de ce dernier très puissante. + +\begin{docCommand}{vref}{\marg{label}} + Cette commande affiche le numéro de la référence labellisée par \meta{label} + et : + \begin{itemize} + \item affiche (ou pas selon le contexte) la page où se situe cette + référence\footnote{Fonctionnalité fournie par le \Package{varioref}.} ; + \item détecte automatiquement la nature de la référence (section, tableau, + figure, équation, théorème, etc.) et fait précéder le numéro de celle-ci du + mot clé correspondant\footnote{Fonctionnalité fournie par le + \Package{cleveref}.} ; + \item fait de la référence un lien hypertexte\footnote{Fonctionnalité fournie + par le \Package{hyperref}.}. + \end{itemize} +\begin{bodycode}[listing and text,listing options={deletekeywords={[2]url,[1]math}}] +[...] on se reportera à la \vref{sec-canevas-de-fichier} pour un canevas de +fichier source [...] +\end{bodycode} +\end{docCommand} + +\subsection{Épigraphes} +\label{sec-epigraphes} + +Le \Package*{epigraph} permet de composer des épigraphes au moyen de la commande +\refCom{epigraph}. + +\begin{docCommand}{epigraph}{\marg{épigraphe}{\marg{source}}} + Cette commande\footnote{Légèrement redéfinie par la \gztauthorcl.} compose un + \meta{épigraphe} et sa \meta{source} (qui peut éventuellement être vide). +\end{docCommand} + +\begin{bodycode}[listing and text] +\epigraph{% + Parce qu'un secret, ce n'est pas quelque chose qui ne se raconte pas. \textelp{}% +}{% + César\\M. \textsc{Pagnol}, \emph{César}. Livre de Poche~161, p.~115% +} +\end{bodycode} + +\begin{dbremark}{Source de l'épigraphe en entrée bibliographique}{} + La source de l'épigraphe pourra faire l'objet d'une entrée bibliographique en + vue d'être citée en 2\ieme{} argument de \refCom{epigraph} au moyen de la + commande |\fullcite| du \Package*{biblatex} + (cf. \vref{sec-bibliographie}).\footnote{% + Dans le fichier \hologo{BibTeX}, on ajoutera à cette entrée la ligne + \protect\lstinline+options = {skipbib}+ pour éviter que cette source figure + dans la liste des références bibliographiques.% + } +\end{dbremark} + +% Dans le source \hologo{BibTeX} de l'exemple suivant, on notera la ligne +% \lstinline|options = {skipbib}| permettant d'éviter que la source de l'épigraphe +% ne figure dans la liste des références bibliographiques. +% \begin{preamblecode}[title=Source \hologo{BibTeX}] +% @book{pagnol, +% title = {César}, +% author = {Pagnol, Marcel}, +% number = {161}, +% pages = {115}, +% series = {Livre de poche}, +% options = {skipbib} +% } +% \end{preamblecode} +% \begin{bodycode}[listing and text,listing options={deletekeywords={options,[2]number}}] +% \epigraph{Je ne peux pas vous le dire à tous à la fois, et si vite que ça. Parce +% qu'un secret, ce n'est pas quelque chose qui ne se raconte pas. Mais c'est une +% chose qu'on se raconte à voix basse, et séparément.}{César\\\fullcite{pagnol}} +% \end{bodycode} + + +\subsection{Listes en ligne} +\label{sec-listes-en-ligne} + +Le lecteur est certainement familier des environnements +\docAuxEnvironment{itemize}, \docAuxEnvironment{enumerate} et +\docAuxEnvironment{description} permettant de créer des listes respectivement +\enquote{à puces}, \enquote{numérotées} et \enquote{de description}. Le +\Package*{enumitem} fournit des versions étoilées de ces environnements qui +composent ces listes \enquote{en ligne}, \cad*{} au sein d'un même +paragraphe\footnote{Le but premier de ce package est de personnaliser les listes + mais cela est déconseillé dans le cadre de la \gzt{} car cela pourrait + contrevenir à la marche typographique qu'elle a adoptée.}. + +\begin{docEnvironment}[doclang/environment content=liste]{itemize*}{} + Cet environnement compose une liste \enquote{à puces} en ligne. +\end{docEnvironment} + +\begin{docEnvironment}[doclang/environment content=liste]{enumerate*}{} + Cet environnement compose une liste \enquote{numérotée} en ligne. +\end{docEnvironment} + +\begin{docEnvironment}[doclang/environment content=liste]{description*}{} + Cet environnement compose une liste \enquote{de description} en ligne. +\end{docEnvironment} + +\begin{bodycode}[listing and text,listing options={deletekeywords={[1]math,[2]url}}] +\begin{enumerate} +\item Les données que j'ai rassemblées [...] +\item Les données que j'ai recueillies sont + \begin{enumerate*} + \item disponibles publiquement sur internet : [...] + \item accessibles par Wikipédia, [...] ; + \item pour 60 des conférenciers [...]. + \end{enumerate*} +\end{enumerate} +\end{bodycode} + +\section{Canevas de fichier source typique} +\label{sec-canevas-de-fichier} + +Le lecteur souhaitant écrire un article pour la \gzt*{} trouvera ci-dessous un +canevas de fichier source dont il pourra faire un copié-collé\footnote{La + plupart des afficheurs \textsc{pdf} permetttent de sélectionner et de copier + du texte.}. Il s'agit d'un modèle typique d'article standard où les commandes +et environnement moins fréquents ont été mis en commentaire. + +\begin{bodycode} +\documentclass{gztarticle} +% +% Indiquer le (chemin vers le) fichier .bib utilisé. +\addbibresource{....bib} +% +\begin{document} +\title[short=]{} +% \subtitle[short=]{} +% +\author[% + affiliation={% + },% + photo=,% + email=,% + webpage=,% + minibio={% + }% +]{} +% +% \acknowledgements{% +% } +% +% \begin{abstract} +% \end{abstract} +% +\maketitle +% +% Ici vient le contenu de l'article. + +% +\printbibliography % ou \printminibios +\end{document} +\end{bodycode} + +\iffalse +%%% Local Variables: +%%% mode: latex +%%% eval: (latex-mode) +%%% ispell-local-dictionary: "fr_FR" +%%% TeX-master: "../gzt.tex" +%%% End: +\fi diff --git a/Master/texmf-dist/doc/latex/gzt/latexmkrc b/Master/texmf-dist/doc/latex/gzt/latexmkrc new file mode 100644 index 00000000000..fd07cd3c23e --- /dev/null +++ b/Master/texmf-dist/doc/latex/gzt/latexmkrc @@ -0,0 +1,32 @@ +$pdf_mode = 1; + +$bibtex_use = 1; +$bibtex = 'biber %O %B'; + +add_cus_dep('glo', 'gls', 0, 'makeindex'); +add_cus_dep('glo2', 'gls2', 0, 'makeglossaries'); +add_cus_dep('acn', 'acr', 0, 'makeglossaries'); +add_cus_dep('slo', 'sls', 0, 'makeglossaries'); +sub makeglossaries{ + system( "makeglossaries \"$_[0]\"" ); +} +sub makeindex{ + system( "makeindex -s gglo.ist -o \"$_[0].gls\" \"$_[0].glo\"" ); +} + +$makeindex = 'texindy -L french'; + +add_cus_dep('idx', 'ind', 0, 'texindy'); +sub texindy{ + system("texindy -L french \"$_[0].idx\""); +} + +@generated_exts = qw(aux idx ind lo* out toc acn acr alg bbl bcf fls gl* ist +run.xml sbl* sl* sym* xdy unq synctex.gz mw *~ + +$clean_ext = 'synctex.gz synctex.gz(busy) run.xml tex.bak bbl bcf fdb_latexmk run tdo listing' +db* listing tcbtemp ins drv +); +$postscript_mode = $dvi_mode = 0; +$quote_filenames = 0; + diff --git a/Master/texmf-dist/doc/latex/gzt/latexmkrc.tex b/Master/texmf-dist/doc/latex/gzt/latexmkrc.tex new file mode 100644 index 00000000000..fd07cd3c23e --- /dev/null +++ b/Master/texmf-dist/doc/latex/gzt/latexmkrc.tex @@ -0,0 +1,32 @@ +$pdf_mode = 1; + +$bibtex_use = 1; +$bibtex = 'biber %O %B'; + +add_cus_dep('glo', 'gls', 0, 'makeindex'); +add_cus_dep('glo2', 'gls2', 0, 'makeglossaries'); +add_cus_dep('acn', 'acr', 0, 'makeglossaries'); +add_cus_dep('slo', 'sls', 0, 'makeglossaries'); +sub makeglossaries{ + system( "makeglossaries \"$_[0]\"" ); +} +sub makeindex{ + system( "makeindex -s gglo.ist -o \"$_[0].gls\" \"$_[0].glo\"" ); +} + +$makeindex = 'texindy -L french'; + +add_cus_dep('idx', 'ind', 0, 'texindy'); +sub texindy{ + system("texindy -L french \"$_[0].idx\""); +} + +@generated_exts = qw(aux idx ind lo* out toc acn acr alg bbl bcf fls gl* ist +run.xml sbl* sl* sym* xdy unq synctex.gz mw *~ + +$clean_ext = 'synctex.gz synctex.gz(busy) run.xml tex.bak bbl bcf fdb_latexmk run tdo listing' +db* listing tcbtemp ins drv +); +$postscript_mode = $dvi_mode = 0; +$quote_filenames = 0; + diff --git a/Master/texmf-dist/doc/latex/gzt/lstlang0.sty b/Master/texmf-dist/doc/latex/gzt/lstlang0.sty new file mode 100644 index 00000000000..8e450f2ff1d --- /dev/null +++ b/Master/texmf-dist/doc/latex/gzt/lstlang0.sty @@ -0,0 +1,115 @@ +\lst@definelanguage[extLaTeX]{TeX}[LaTeX]{TeX}{% + moretexcs={% + footnotesize,huge,Huge,large,Large,LARGE,large,Large,scriptsize,tiny,% + includegraphics,cite,ttwplink,vref,LTXtable,tableofcontents,frontmatter,mainmatter,% + part,chapter,section,subsection,subsubsection,paragraph,subparagraph,RequirePackage,% + listoftables,listoffigures,lstlistingname,si,SI,ohm,num,space,shorthandon,shorthandoff,% + abstractname,appendixname,contentsname,listfigurename,listtablename,indexname,% + figurename,tablename,chaptername,pagename,seename,alsoname,proofname,bibname,glossaryname,% + addto,captionsenglish,captionsfrench,lipsum,href,url,partname,refname,renewcommand*,% + appendix,lstlistoflistings,graphicpath,loadglsentries,hypersetup,detect-all,SetWatermarkColor,% + @pnumwidth,bookmarksetup,DeclareTextCommand% + },% + morekeywords=[1]{% Environments' names + tabular,tabulary,math% + },% + morekeywords=[2]{% Keys of key-value lists and packages' names + bookmarksdepth,see,babel,colorlinks,linktoc% + },% + morekeywords=[3]{% Values of key-value lists + german,ngerman,french,english,spanish% + }, + alsoletter={-*@1234560}% +}% +\lst@definelanguage[gzt]{TeX}[LaTeX]{TeX}{% + % yathesis% TODO : à mettre ailleurs + moretexcs={% Control sequences' names + author,title,subtitle,acknowledgements,% + },% + % Environments' names + morekeywords={% + },% + morekeywords=[1]{% Environments' names + abstract,dedicationspage,epigraphspage,epigraphs,% + glossaries,otherlanguage% + },% + morekeywords=[2]{% Keys of key-value lists + short,affiliation,photo,email,webpage,minibio% + },% + morekeywords=[3]{% Values of key-value lists + % + },% + morekeywords=[4]{% Class and packages options + % + },% + morekeywords=[5]{% Translation labels + % + },% + alsoletter={!-*1234560}% +}% +\lst@definelanguage[glossaries]{TeX}[LaTeX]{TeX}% +{% + % Séquences de contrôles (communément appelées commandes ou macros) + moretexcs={% + makeglossaries,printglossaries,printglossary,newglossaryentry,gls,Gls,GLS,glspl,Glspl,GLSpl,newacronym,% + glsuseri,glsuserii,glsuseriii,glsuseriv,glsuserv,glsuservi,glsshortpluralkey,glslongpluralkey,loadglsentries,% + glsadd,glstextformat,glsnamefont,glossarypreamble,glossarypostamble,acrshort,acrshort*,acrlong,acrfull,% + Acrshort,ACRshort,Acrlong,ACRlong,Acrfull,ACRfull,acrshortpl,Acrshortpl,acrlongpl,Acrlongpl,acrfullpl,Acrfullpl,% + Acrlong*,acronymtype,printacronyms,printsymbols% + },% + % Environments' names + morekeywords={% + },% + % Mots-clés de niveau 2 : arguments obligatoires et environnements + morekeywords=[2]{% + first,firstplural,plural,sort,nonumberlist,name,acronym,acronyms,symbols,% + user1,user2,user3,user4,user5,user6,hyper,style,xindy,toc,% + useri,userii,useriii,useriv,userv,uservi% + },% + % Mots-clés de niveau 3 : arguments optionnels valeurs de clés dans clé=valeur + morekeywords=[3]{% + listgroup,listhypergroup,% + % textrm,textit,textsf,textsl,texttt,textup,textbf,textsc,textmd,emph,% + hyperrm,hyperit,hypersf,hypersl,hypertt,hyperup,hyperbf,hypersc,hypermd,hyperemph% + },% + sensitive% +}[keywords,tex,comments]% +\lst@definelanguage[biblatex]{TeX}[LaTeX]{TeX}% +{% + % Séquences de contrôles (communément appelées commandes ou macros) + moretexcs={% + printbibliography,SetCiteCommand,autocite% + },% + % Mots-clés de niveau 1 : arguments optionnels + morekeywords={% + },% + % Mots-clés de niveau 2 : arguments obligatoires et environnements + morekeywords=[2]{% + heading% + },% + % Mots-clés de niveau 3 : arguments optionnels valeurs de clés dans clé=valeur + morekeywords=[3]{% + bibintoc% + },% + sensitive% +}[keywords,tex,comments]% +\lst@definelanguage[tcolorbox]{TeX}[LaTeX]{TeX}% +{% + % Séquences de contrôles (communément appelées commandes ou macros) + moretexcs={% + tcbset,tcbuselibrary% + },% + % Mots-clés de niveau 1 : arguments optionnels + morekeywords={% + },% + % Mots-clés de niveau 2 : arguments obligatoires et environnements + morekeywords=[2]{% + colback,beamer,skins% + },% + % Mots-clés de niveau 3 : arguments optionnels valeurs de clés dans clé=valeur + morekeywords=[3]{% + lightgray,red!50!white% + },% + sensitive,% +}[keywords,tex,comments]% + diff --git a/Master/texmf-dist/doc/latex/gzt/ltxdoc.cfg b/Master/texmf-dist/doc/latex/gzt/ltxdoc.cfg new file mode 100644 index 00000000000..09527a427aa --- /dev/null +++ b/Master/texmf-dist/doc/latex/gzt/ltxdoc.cfg @@ -0,0 +1,23 @@ +\AtBeginDocument{% + \OnlyDescription% Comment out for implementation details + \EnableCrossrefs% + \RecordChanges% + \GlossaryPrologue{% + % \chapter{Historique des changements}\label{cha:history} + % L'auteur a eu le souci constant d'assurer la compatibilité ascendante de la + % \yatcl{}. Cependant, pour répondre à des demandes de fonctionnalités jugées + % légitimes, quelques rares changements (signalés \alert{en rouge} + % ci-dessous) cassent cette compatibilté en ce sens que certains anciens + % documents peuvent éventuellement : + % \begin{itemize} + % \item soit ne plus compiler sans quelques ajustements. Dans ce cas, les + % remèdes sont indiqués en note de bas de page du changement concerné ; + % \item soit voir leur mise en page modifiée, en général légèrement. Dans ce + % cas, les pages concernées sont indiquées. + % \end{itemize} + }% + \CodelineIndex% +}% +\AtEndDocument{% + % \PrintIndex% +} diff --git a/Master/texmf-dist/doc/latex/gzt/notations.tex b/Master/texmf-dist/doc/latex/gzt/notations.tex new file mode 100644 index 00000000000..56d5113b2ec --- /dev/null +++ b/Master/texmf-dist/doc/latex/gzt/notations.tex @@ -0,0 +1,137 @@ +\etocsettocdepth.toc{section}% +% +\section{Notations, syntaxe, terminologie et codes couleurs}\label{sec-synt-term-notat} + +Cette section précise les notations, syntaxe, terminologie et codes couleurs de +la présente documentation. + + +\subsection{Commandes, environnements, clés, valeurs}\label{sec-comm-envir-cles} + +Les commandes, environnements, clés et valeurs de clés sont systématiquement +composés en fonte à chasse fixe. En outre, pour plus facilement les +distinguer, ils figurent avec des couleurs propres : +\begin{itemize} +\item les commandes en bleu : \docAuxCommand*{commande} ; +\item les environnements en \enquote{sarcelle} : + \docAuxEnvironment*{environnement} ; +\item les clés en pourpre : \docAuxKey*{clé} ; +\item les valeurs des clés en violet : \docValue*{valeur}. +\end{itemize} + +\subsection{Arguments génériques} +\label{sec-arguments-generiques} + +Pour expliquer le rôle d'une commande, il est parfois nécessaire d'indiquer +à quoi celle-ci s'applique, autrement dit quel en est l'argument générique. +Un tel argument est composé : +\begin{itemize} +\item en fonte à chasse fixe ; +\item en italique ; +\item entre chevrons simples ; +\end{itemize} +le tout en marron, ainsi : \meta{argument générique}. + +\subsection{Liens hypertextes} +\label{sec-liens-hypertextes} + +Les liens hypertextes figurent en couleur, ainsi : +\href{http://gte.univ-littoral.fr/members/dbitouze/pub/latex}{lien hypertexte}. +La plupart des références aux commandes, environnements et clés définis dans la +présente documentation, sont des liens hypertextes, surmontés du numéro de page +où se trouve la cible correspondante (sauf si elle se situe sur la même page) : +\begin{itemize} +\item \refCom{author} ; +\item \refEnv{abstract}. +\end{itemize} + + +\subsection{Éléments \enquote{obligatoires}} +\label{sec-comm-oblig} + +L'icône \mandatory{}, figurant en regard de certains éléments (commandes ou +environnements), indique que ceux-ci sont \enquote{obligatoires}. + +\subsection{Codes sources} +\label{sec-codes-sources} + +Les exemples qui illustrent la présente documentation sont constitués de codes +sources et, le cas échéant, des \enquote{copies d'écran} correspondantes. + +Ces codes sources figurent dans des cadres de couleur bleu : +\begin{itemize} +\item non ombrés s'ils doivent être saisis dans le corps du document ; +\item ombrés s'ils doivent être saisis en préambule du fichier (maître). +\end{itemize} +Ces cadres pourront en outre comporter d'éventuels titres : +\begin{multicols}{2} +\begin{bodycode} +"\meta{code source}" +\end{bodycode} +\begin{bodycode}[title=\meta{titre}] +"\meta{code source}" +\end{bodycode} +\begin{preamblecode} +"\meta{code source à insérer en préambule}" +\end{preamblecode} +\begin{preamblecode}[title=\meta{titre}] +"\meta{code source à insérer en préambule}" +\end{preamblecode} +\end{multicols} + +\subsection{Espaces dans les codes sources} +\label{sec-espaces-dans-les} + +Pour éviter certaines confusions, les espaces dans les codes sources devant +être saisis au clavier sont parfois matérialisés au moyen de la marque +\lstinline[showspaces]+ +. + +\subsection{Options} +\label{sec-options} + +La présente classe, ainsi que certaines de ses commandes et certains de ses +environnements, peuvent être modulés au moyen d'options, ou listes d'options +(séparées par des virgules). Ces options se présentent sous la forme +\meta{clé}|=|\meta{valeur} et la \meta{valeur} passée à une \meta{clé} peut +être : +%^^A \begin{description} +%^^A \item[ne prennent pas de valeur.] Une telle option, par exemple nommée +%^^A \refKey{option}, est alors documentée selon la syntaxe suivante: +%^^A \begin{docKey*}{option}{}{\meta{valeurs par défaut et initiale}} +%^^A \meta{Description de \refKey{option}} +%^^A \end{docKey*} +%^^A \item[prennent des valeurs.] Une telle option se présente alors sous la forme +%^^A \meta{clé}"="\meta{valeur}. Les valeurs passées à une clé peuvent être : +\begin{description} +\item[libre.] Si une telle \meta{clé} est (pour l'exemple) nommée + \refKey{freekey}, elle est alors documentée selon la syntaxe suivante : + \begin{docKey*}{freekey}{=\meta{valeur}}{\meta{valeurs par défaut et initiale}} + \meta{Description de \refKey{freekey}} + \end{docKey*} +\item[imposée] (parmi une liste de valeurs possibles). Si une telle \meta{clé} est + (pour l'exemple) nommée \refKey{choicekey} et de valeurs imposées + \docValue*{valeur1}, \docValue*{valeur2}, ..., \docValue*{valeurN}, elle est alors + documentée selon la syntaxe suivante\footnote{Comme souvent en informatique, + la barre verticale séparant les valeurs possibles signifie \enquote{ou}.} : + \begin{docKey*}{choicekey}{=\docValue*{valeur1}\textbar\docValue*{valeur2}\textbar...\textbar\docValue*{valeurN}}{\meta{valeurs par défaut et initiale}} + \meta{Description de \refKey{choicekey} et de ses valeurs possibles} + \end{docKey*} +\end{description} +%^^A \end{description} + +Les \meta{valeurs par défaut et initiale} d'une clé sont souvent précisées +(entre parenthèses en fin de ligne). Elles indiquent ce que la clé vaut : +\begin{description} +\item[par défaut] c'est-à-dire lorsque la clé \emph{est} employée, mais + \emph{seule} c'est-à-dire sans qu'une valeur explicite lui soit passée ; +\item[initialement] c'est-à-dire lorsque la clé \emph{n'est pas} employée. +\end{description} +% +\iffalse +%%% Local Variables: +%%% mode: latex +%%% eval: (latex-mode) +%%% ispell-local-dictionary: "fr_FR" +%%% TeX-master: "../gzt.dtx" +%%% End: +\fi diff --git a/Master/texmf-dist/doc/latex/gzt/packages-charges.tex b/Master/texmf-dist/doc/latex/gzt/packages-charges.tex new file mode 100644 index 00000000000..496bf974ffc --- /dev/null +++ b/Master/texmf-dist/doc/latex/gzt/packages-charges.tex @@ -0,0 +1,36 @@ +\section{Packages chargés par la classe}\label{sec-packages-charges-par} + +On a vu que, pour plusieurs de ses fonctionnalités, la \gztauthorcl{} s'appuie +sur des packages qu'elle charge automatiquement. Ceux dont les fonctionnalités +peuvent être utiles aux auteurs sont répertoriés dans la liste suivante qui +indique leur fonction et le cas échéant : +\begin{itemize} +\item la ou les options avec lesquelles ils sont chargés ; +\item les options de la \gztauthorcl{} ou leurs commandes propres permettant de les + personnaliser. +\end{itemize} +En sus des outils propres à la \gztauthorcl, tous ceux fournis par ces +différents packages sont donc à disposition des auteurs de la \gzt{}. + +\begin{description} +\item[\package{xcolor} :] couleurs ; + \begin{description} + \item[option par défaut :] \docAuxKey{table} et \docAuxKey{cmyk} ; + \end{description} +\item[\package{kpfonts} :] police principale du document ; + \begin{description} + \item[option par défaut :] \docAuxKey{sfmath}, \docAuxKey{easyscsl}, + \docAuxKey{noDcommand} ; + \end{description} +\item[\package*{graphicx} :] inclusion d'images ; +\item[\package*{csquotes} :] citations formelles et informelles ; + \begin{description} + \item[option par défaut :] \docAuxKey{autostyle} ; + \end{description} +\item[...] (à suivre). +\end{description} + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: "../gztdoc.tex" +%%% End: diff --git a/Master/texmf-dist/doc/latex/gzt/todo.tex b/Master/texmf-dist/doc/latex/gzt/todo.tex new file mode 100644 index 00000000000..9a1c9eec1a8 --- /dev/null +++ b/Master/texmf-dist/doc/latex/gzt/todo.tex @@ -0,0 +1,17 @@ +\chapter{To do} +\label{cha:do} + +% \begin{enumerate} +% \item Revoir les pointillés de la 2\ieme{} de couverture avec le \Pkg{TikZ} (au +% moyen de quelque chose comme : +% \verb|\tikz \draw[dotted] (0pt,0pt) -- (50pt,0pt);|). +% \end{enumerate} + +\iffalse +%%% Local Variables: +%%% mode: latex +%%% eval: (latex-mode) +%%% ispell-local-dictionary: "fr_FR" +%%% TeX-master: "../gazette.dtx" +%%% End: +\fi diff --git a/Master/texmf-dist/source/latex/gzt/gzt.drv b/Master/texmf-dist/source/latex/gzt/gzt.drv new file mode 100644 index 00000000000..4a7d1eb5a37 --- /dev/null +++ b/Master/texmf-dist/source/latex/gzt/gzt.drv @@ -0,0 +1,37 @@ +%% +%% This is file `gzt.drv', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% gzt.dtx (with options: `driver') +%% ----------------------------------------------------------------------------- +%% gzt --- SMF bundle of classes for the French journal "La Gazette des +%% Math'ematiciens", version 0.9 +%% +%% E-mail: denis.bitouze@lmpa.univ-littoral.fr +%% Released under the LaTeX Project Public License v1.3c or later +%% See http://www.latex-project.org/lppl.txt +%% ----------------------------------------------------------------------------- + +%% ---------------------------------------------------------------------------- +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.3 +%% of this license or (at your option) any later version. +%% The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.3 or later is part of all distributions of LaTeX +%% version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status `maintained'. +%% +%% The Current Maintainer of this work is Denis Bitouz'e. +%% +%% This work consists of the file gzt.dtx +%% and the derived files gzt.cls, +%% gztarticle.cls, +%% gzt.ins, +%% gzt.pdf, +%% and a number of configuration files. +%% +%% End of file `gzt.drv'. diff --git a/Master/texmf-dist/source/latex/gzt/gzt.dtx b/Master/texmf-dist/source/latex/gzt/gzt.dtx new file mode 100644 index 00000000000..c5641633879 --- /dev/null +++ b/Master/texmf-dist/source/latex/gzt/gzt.dtx @@ -0,0 +1,6859 @@ +% \iffalse meta-comment +% +% File: gzt.dtx Copyright (C) 2014, 2015 by +% Denis Bitouz'e +% +% It may be distributed and/or modified under the conditions of the +% LaTeX Project Public License (LPPL), either version 1.3c of this +% license or (at your option) any later version. The latest version +% of this license is in the file +% +% http://www.latex-project.org/lppl.txt +% +% This work has the LPPL maintenance status `maintained'. +% +% The Current Maintainer of this work is Denis Bitouz'e. +% +% This work consists of the files gzt.dtx and gzt.ins +% and the derived filebase gzt.cls. +% +%<*internal> +\iffalse +% +%<*readme> +----------------------------------------------------------------------------- +gzt --- SMF bundle of classes for the French journal "La Gazette des + Math'ematiciens", version 0.9 + +E-mail: denis.bitouze@lmpa.univ-littoral.fr +Released under the LaTeX Project Public License v1.3c or later +See http://www.latex-project.org/lppl.txt +----------------------------------------------------------------------------- + +`gzt' is a new SMF bundle of classes for the French journal "La gazette des +math'ematiciens". + +Installation +------------ + +The classes are supplied in dtx format. If you want to unpack the dtx yourself, +running 'xetex gzt.dtx' will extract the two classes gzt.cls and gztarticle.cls +whereas 'pdflatex gzt.tex' will typeset the gztarticle.cls' documentation. + +Typesetting the documentation also requires a number of packages in addition to +those needed to use the gzt class. To compile the documentation without error, +you will need, among others, my personal package denisbdoc.sty for documenting +packages which can be found on CTAN. +% +%<*internal> +\fi +\def\nameofplainTeX{plain} +\ifx\fmtname\nameofplainTeX\else + \expandafter\begingroup +\fi +% +%<*install> +\input l3docstrip.tex +% \input docstrip.tex +\Msg{********************************************************} +\Msg{* Installation} +\Msg{* Class: gzt 2015/05/02 v0.9} +\Msg{* for the French journal} +\Msg{* "La Gazette des Math'ematiciens" (DB)} +\Msg{********************************************************} +\keepsilent +\askforoverwritefalse +\preamble +----------------------------------------------------------------------------- +gzt --- SMF bundle of classes for the French journal "La Gazette des + Math'ematiciens", version 0.9 + +E-mail: denis.bitouze@lmpa.univ-littoral.fr +Released under the LaTeX Project Public License v1.3c or later +See http://www.latex-project.org/lppl.txt +----------------------------------------------------------------------------- +\endpreamble +\postamble +% Copyright (C) 2014, 2015 by Denis Bitouz'e +---------------------------------------------------------------------------- +This work may be distributed and/or modified under the +conditions of the LaTeX Project Public License, either version 1.3 +of this license or (at your option) any later version. +The latest version of this license is in + http://www.latex-project.org/lppl.txt +and version 1.3 or later is part of all distributions of LaTeX +version 2005/12/01 or later. + +This work has the LPPL maintenance status `maintained'. + +The Current Maintainer of this work is Denis Bitouz'e. + +This work consists of the file gzt.dtx + and the derived files gzt.cls, + gztarticle.cls, + gzt.ins, + gzt.pdf, + and a number of configuration files. +\endpostamble +% +\def\GZT@classname{\jobname} +\def\GZT@logo{\GZT@classname-logo} +\def\GZT@addons{addons} +\usedir{/} +\generate{ + \nopreamble\nopostamble + \file{README}{\from{\jobname.dtx}{readme}} +}% +\usedir{tex/latex/\GZT@classname} +\generate{% + \file{\GZT@classname.cls}{\from{\jobname.dtx}{class}} + \file{\GZT@classname article.cls}{\from{\jobname.dtx}{class-article}} + \file{\GZT@classname.dbx}{\from{\jobname.dtx}{datamodel}} + \file{\GZT@classname.lbx}{\from{\jobname.dtx}{languagemodel}} + \nopreamble\nopostamble + \file{\GZT@classname.cfg}{\from{\jobname.dtx}{configuration}} +}% +% +%\endbatchfile +%<*internal> +\usedir{source/latex/\GZT@classname} +\generate{ + \file{\GZT@classname.ins}{\from{\jobname.dtx}{install}} + \file{\GZT@classname.drv}{\from{\jobname.dtx}{driver}}% + \nopreamble\nopostamble + \file{\GZT@logo.tex}{\from{\jobname.dtx}{class-logo}}% + \file{lstlang0.sty}{\from{\jobname.dtx}{class-lstlang0}} + \file{latexmkrc}{\from{\jobname.dtx}{class-latexmkrc}} +}% +\usedir{doc/latex/\GZT@classname} +\generate{ + \nopreamble\nopostamble + \file{README}{\from{\jobname.dtx}{readme}} +}% +\usedir{doc/latex/\GZT@classname/\GZT@addons/completion} +\generate{% + \nopreamble\nopostamble + \file{\GZT@classname.cwl}{\from{\jobname.dtx}{class-cwl}} +}% +\ifx\fmtname\nameofplainTeX + \expandafter\endbatchfile +\else + \expandafter\endgroup +\fi +% +% +% \changes{v0.9}{2015/05/02}{First CTAN version}% +% +% \CheckSum{4413} +% +% \CharacterTable +% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +% Digits \0\1\2\3\4\5\6\7\8\9 +% Exclamation \! Double quote \" Hash (number) \# +% Dollar \$ Percent \% Ampersand \& +% Acute accent \' Left paren \( Right paren \) +% Asterisk \* Plus \+ Comma \, +% Minus \- Point \. Solidus \/ +% Colon \: Semicolon \; Less than \< +% Equals \= Greater than \> Question mark \? +% Commercial at \@ Left bracket \[ Backslash \\ +% Right bracket \] Circumflex \^ Underscore \_ +% Grave accent \` Left brace \{ Vertical bar \| +% Right brace \} Tilde \~} +% +% \StopEventually{} +% +% \selectlanguage{english} +% \chapter{Auxiliary files} +% +% \section{Gazette's logo} +% \label{sec:gzts-logo} +% Before the code of the \gztcl{} by itself, we give the begining of the +% code of the source file of the Gazette's logo (to be compiled with "xelatex"). +% \begin{macrocode} +%<*class-logo> +% \end{macrocode} +% +% \begin{macrocode} +\documentclass{standalone} +\usepackage{fontspec} +\usepackage[export]{adjustbox} +\usepackage[cmyk]{xcolor} +\usepackage{xparse} +% +\setmainfont{HelveticaNeueLTStd-ThEx} +\newfontfamily\des{HelveticaNeueLTStd-Th} +\newfontfamily\mathematiciens{HelveticaNeueLTStd-Lt} +% +\ExplSyntaxOn +\tl_new:N \l__gzt_frontmatter_head_text_tl +\tl_set:Nn \l__gzt_frontmatter_head_text_tl {% + \adjustbox{stack=r} + {% + \addfontfeature{LetterSpace=10} + \textcolor{__gzt_generic_light_color}{% + \fontsize{21}{0}\selectfont% + la\hspace{5mm}% + \fontsize{45}{0}\selectfont% + Gazette% + }% + \\[1.7mm]% + \fontsize{15}{0}\selectfont% + \textcolor{__gzt_generic_light_color}{% + \des% + \addfontfeature{LetterSpace=6}% + des% + }% + \hspace{2.5mm}% + \textcolor{__gzt_generic_dark_color}{% + \mathematiciens% + \addfontfeature{LetterSpace=6}% + Math\'ematiciens% + }% + }% +} +% +\NewDocumentCommand \frontmatterheadtext { } { + \l__gzt_frontmatter_head_text_tl +} +% \end{macrocode} +% +% \begin{macrocode} +% +% \end{macrocode} +% +% \section{(\Pkg{biblatex}) Data model} +% Before the code of the \gztcl{} by itself, we give the (\pkg{biblatex}) +% data model that enriches the default one for several purposes: +% \begin{itemize} +% \item the interviews, +% \item the books reviews, +% \item the books advertisements, +% \item the tributes. +% \end{itemize} +% +% \begin{macrocode} +%<*languagemodel> +% \end{macrocode} +% +% \begin{macrocode} + \ProvidesFile{gzt.lbx} + \InheritBibliographyExtras{french}% extras are inherited from French... + \DeclareBibliographyStrings{% + inherit = {french},% .... as well as all the keys + number = {{\no}{\no}}, + volume = {{volume}{vol\adddot}}, + volumes = {{volumes}{vol\adddot}}, + } +% \end{macrocode} +% +% \begin{macrocode} +% +% \end{macrocode} +% +% \begin{macrocode} +%<*datamodel> +% \end{macrocode} +% +% \subsection{For the interviews} +% +% First, we create the new entry type "interview" and the new field +% "interviewee". +% \begin{macrocode} +% \DeclareDatamodelEntrytypes{interview} +\DeclareDatamodelFields[type=list,datatype=name]{interviewee} +% \end{macrocode} +% +% Then, we declare the fields known by the entry type "interview": our new field +% "interviewee" and the existing one "author". +% \begin{macrocode} +\DeclareDatamodelEntryfields[interview]{ + interviewee, + author +} +% \end{macrocode} +% +% An finally, we create the bibliography driver for the "interview" (that seems to +% create the corresponding new entry). +% \begin{macrocode} +\DeclareBibliographyDriver{interview}{% + \printnames{author}~interviewent~\printnames{interviewee}% + \usebibmacro{finentry}% +} +% \end{macrocode} +% % +% % \subsection{For the tributes} +% % +% % First, we create the new entry type "tribute" and the new field +% % "honouree". +% % \begin{macrocode} +% % \DeclareDatamodelEntrytypes{tribute} +% % \DeclareDatamodelFields[type=list,datatype=name]{honouree} +% % \end{macrocode} +% % +% % Then, we declare the fields known by the entry type "tribute": our new field +% % "honouree" and the existing one "author". +% % \begin{macrocode} +% \DeclareDatamodelEntryfields[tribute]{ +% honouree, +% author +% } +% % \end{macrocode} +% % +% % An finally, we create the bibliography driver for the "tribute" (that seems to +% % create the corresponding new entry). +% % \begin{macrocode} +% \DeclareBibliographyDriver{tribute}{% +% \printnames{author}~rendent~hommage~\`a~\printnames{honouree}% +% \usebibmacro{finentry}% +% } +% % \end{macrocode} +% +% \subsection{For the books reviews} +% +% First, we create the new bibliography driver "bookreview" (that seems to +% create the corresponding new entry). +% \begin{macrocode} +\DeclareBibliographyDriver{bookreview}{% + \usebibmacro{bibindex}% + \usebibmacro{begentry}% + \usebibmacro{maintitle+title}% + \newline\nopunct\newblock + \usebibmacro{author/editor+others/translator+others}% + \setunit{\labelnamepunct} + \newline\nopunct\newblock + \usebibmacro{byauthor}% + \newunit\newblock + \usebibmacro{byeditor+others}% + \newunit\newblock + \printfield{edition}% + \newunit + \iffieldundef{maintitle} + {\printfield{volume}% + \printfield{part}} + {}% + \newunit + \printfield{volumes}% + \newunit\newblock + \usebibmacro{series+number}% + \newunit\newblock + \printfield{note}% + \newunit\newblock + \usebibmacro{publisher+location+date}% + \newunit\newblock + \usebibmacro{chapter+pages}% + \newunit + \printfield{pagetotal}% + \newunit\newblock + \printlist{language}% + \newunit\newblock + \iftoggle{bbx:isbn} + {\printfield{isbn}} + {}% + \newunit\newblock + \usebibmacro{doi+eprint+url}% + \newunit\newblock + \usebibmacro{addendum+pubstate}% + \setunit{\bibpagerefpunct}\newblock + \usebibmacro{pageref}% + \newunit\newblock + \iftoggle{bbx:related} + {\usebibmacro{related:init}% + \usebibmacro{related}} + {}% + \usebibmacro{finentry}} +% \end{macrocode} +% +% Then, we create the new fields "reviewer" and "reviewerinstitution" and make +% them known by the entry type "bookreview". +% \begin{macrocode} +\DeclareDatamodelFields[type=list,datatype=name]{reviewer} +\DeclareDatamodelFields[type=list,datatype=literal]{reviewerinstitution} +\DeclareDatamodelEntryfields[bookreview]{ + reviewer, + reviewerinstitution +} +% \end{macrocode} +% +% \subsection{For the books advertisements} +% +% First, we create the new bibliography driver "bookadvertisement" (that seems to +% create the corresponding new entry). +% \begin{macrocode} +\DeclareBibliographyDriver{bookadvertisement}{% + \usebibmacro{bibindex}% + \usebibmacro{begentry}% + \textbf{\printfield{series}}% + % \usebibmacro{series+number}% + \bigskip\newline\nopunct\newblock + {% + \Large% + \printfield{title}% + \newunit\newblock + }% + \iffieldundef{volume} + {}% + {\textbf{\printfield{volume}}} + \newline\nopunct\newblock + \textbf{\printfield{titleaddon}}% + \newline\nopunct\newblock + \printfield{subtitle}% + \newline\nopunct\newblock + \usebibmacro{author/editor+others/translator+others}% + \setunit{\labelnamepunct} + \newline\nopunct\newblock + \usebibmacro{byauthor}% + \newunit\newblock + \usebibmacro{byeditor+others}% + \newunit\newblock + \printfield{edition}% + \newunit\newblock + \printfield{note}% + \newunit\newblock + \usebibmacro{publisher+location+date}% + \newunit\newblock + \usebibmacro{chapter+pages}% + \newunit + \printfield{pagetotal}% + \newunit\newblock + \printlist{language}% + \newline\nopunct\newblock + \iftoggle{bbx:isbn} + {\printfield{isbn}} + {}% + \newunit\newblock + \usebibmacro{doi+eprint+url}% + \newunit\newblock + \usebibmacro{addendum+pubstate}% + \setunit{\bibpagerefpunct}\newblock + \usebibmacro{pageref}% + \newunit\newblock + \iftoggle{bbx:related} + {\usebibmacro{related:init}% + \usebibmacro{related}} + {}% + \usebibmacro{finentry}} +% \end{macrocode} +% +% Then, we create the new fields "publicprice" and "smfprice" and make +% them known by the entry type "bookadvertisement". +% \begin{macrocode} +\DeclareDatamodelFields[type=field,datatype=literal]{publicprice} +\DeclareDatamodelFields[type=field,datatype=literal]{smfprice} +\DeclareDatamodelFields[type=field,datatype=literal]{frenchabstract} +\DeclareDatamodelFields[type=field,datatype=literal]{englishabstract} +\DeclareDatamodelFields[type=list,datatype=literal]{copublisher} +\DeclareDatamodelEntryfields[bookadvertisement]{ + publicprice, + smfprice, + frenchabstract, + englishabstract, + copublisher +} +% \end{macrocode} +% +% \begin{macrocode} +% +% \end{macrocode} +% +% \chapter{Implementation of the \gztcl{}} +% +% Here comes the code of the \gztcl{}. +% \begin{macrocode} +%<*class> +% \end{macrocode} +% +% \section{Removability of local customizations} +% +% We define two... +% \begin{macrocode} +\def\sectioncommandslist{}% +\let\saved@ifdefinable\@ifdefinable% +\let\saved@@ifdefinable\@@ifdefinable% +\newcommand{\startcustomization}{% + % Redefine \@ifdefinable + \renewcommand{\@ifdefinable}[2]{% + \listadd\sectioncommandslist##1% + \saved@ifdefinable{##1}{##2}% + }% + \renewcommand{\@@ifdefinable}[2]{% + \listadd\sectioncommandslist##1% + \saved@@ifdefinable{##1}{##2}% + }% +}% +\newcommand{\cleancustomization}{% + \forlistloop{\undef}{\sectioncommandslist}% + \def\sectioncommandslist{}% + \let\@ifdefinable\saved@ifdefinable% + \let\@@ifdefinable\saved@@ifdefinable% +}% +% \end{macrocode} +% +% \begin{macrocode} +% +% \end{macrocode} +% +% \begin{macrocode} +%<*class|class-article> +% \end{macrocode} +% +% Selective filtering of error messages and warnings: +% \begin{macrocode} +\RequirePackage{silence}% +\WarningFilter{kpfonts}{With 'easyscsl' option} +% \end{macrocode} +% +% Extending \pkg{etoolbox}'s patching commands: +% \begin{macrocode} +\RequirePackage{xpatch}% +% \end{macrocode} +% +% \begin{macrocode} +% +% \end{macrocode} +% +% \begin{macrocode} +%<*class|class-article> +% \end{macrocode} +% +% We alter the behaviour of the internals of "\usetikzlibrary" so that the +% \LaTeXe{} push/pop filename system is used (see +% \url{http://tex.stackexchange.com/a/57428/18401}). +% \begin{macrocode} +\patchcmd% + {\use@@tikzlibrary}% + {% + \pgfutil@InputIfFileExists{tikzlibrary\pgf@temp.code.tex}{}{ + \pgfutil@IfFileExists{pgflibrary\pgf@temp.code.tex}{% + \expandafter\usepgflibrary\expandafter{\pgf@temp}% + }{% + \tikzerror{I did not find the tikz library + '\pgf@temp'. I looked for files named + tikzlibrary\pgf@temp.code.tex and + pgflibrary\pgf@temp.code.tex, but neither + could be found in the current texmf trees.} + }}% + }% + {% + \@pushfilename + \pgfutil@InputIfFileExists{tikzlibrary\pgf@temp.code.tex}{}{ + \pgfutil@IfFileExists{pgflibrary\pgf@temp.code.tex}{% + \expandafter\usepgflibrary\expandafter{\pgf@temp}% + }{% + \tikzerror{I did not find the tikz library + '\pgf@temp'. I looked for files named + tikzlibrary\pgf@temp.code.tex and + pgflibrary\pgf@temp.code.tex, but neither + could be found in the current texmf trees.} + }}% + \@popfilename + }% + {}{}% +\patchcmd + {\tcb@input@library@in} + {% + \input\tcbpkgprefix#1\relax% + } + {% + \@pushfilename + \input\tcbpkgprefix#1\relax% + \@popfilename + } + {}{} +% \end{macrocode} +% +% \begin{macrocode} +% +% \end{macrocode} +% +% \begin{macrocode} +%<*class|class-article> +% \end{macrocode} +% +% In order to avoid "__gzt" in the name of each internal (i.e. private) function +% and variable, we make use of the "@@" place holder provided by the +% \Pkg{l3docstrip}. +% \begin{macrocode} +%<@@=gzt> +% \end{macrocode} +% +% \section{\LaTeX3 loading} +% +% For debugging purpose, \Pkg{expl3} could be loaded with its +% \docAuxKey*{check-declarations} option. +% \begin{macrocode} +% \PassOptionsToPackage{check-declarations}{expl3} +% \end{macrocode} +% +% ^^AIn order to define class options, in key-value form, \Pkg{l3keys2e} is +% ^^Aloaded. This have to be done at an early stage because options have to be +% ^^Adefined before the (here `book') class loading. +% \begin{macrocode} +\RequirePackage{l3keys2e} +% \end{macrocode} +% +% This \gztcl{} will make use of the \pkg{expl3} programming interface +% (\LaTeX3). In order to load this package, it is enough to load the +% \Pkg{xparse} which is anyway needed to produce document-level commands. +% \begin{macrocode} +\RequirePackage{xparse} +\ExplSyntaxOn +% \end{macrocode} +% +% The \gztcl{} is declared in the \LaTeX3{}'s way. +% \begin{macrocode} +\ProvidesExplClass +% {gzt} +% {gztarticle} + {2015/05/02} + {0.9} + { + SMF class for the French journal^^J + "La Gazette des Math'ematiciens". +%^^J (Author version.) + } +% \end{macrocode} +% +% The needed \TeX{} format is specified. +% \begin{macrocode} +\NeedsTeXFormat{LaTeX2e} +% \end{macrocode} +% +% \section{Class loading} +% +% \begin{macrocode} +% +% \end{macrocode} +% +% \begin{macrocode} +%<*class> +% \end{macrocode} +% +% \begin{macro}{\c_@@_pagegrid_dim} +% We declare the constant dimension of the pagegrid, when enabled. +% \begin{macrocode} +\dim_const:Nn \c_@@_pagegrid_dim { 1mm} +% \end{macrocode} +% \end{macro} +% +% We define some class options: +% \begin{itemize} +% \item "pagegrid" in order to draw a grid on each page, in order to check the +% layout (most debugging purpose), +% \item ... +% \end{itemize} +% +% \begin{macrocode} +\keys_define:nn { gzt } +{ + pagegrid .dim_gset:N = \g_@@_pagegrid_dim, + pagegrid .default:n = {\c_@@_pagegrid_dim}, + forprinter .bool_gset:N = \g_@@_for_printer_bool, + insidepages .bool_gset:N = \g_@@_inside_pages_bool, + noinsidebackcover .bool_gset:N = \g_@@_no_inside_backcover_bool, + cover .code:n = {% + \bool_gset_true:N \g_@@_for_printer_bool% + \bool_gset_true:N \g_@@_cover_bool% + },% + forauthors .bool_gset:N = \g_@@_for_authors_bool,% +}% +% +\ProcessKeysOptions { gzt } +% \end{macrocode} +% +% \begin{macrocode} +% +% \end{macrocode} +% +% \begin{macrocode} +%<*class|class-article> +% \end{macrocode} +% +% As subsequent class, the \Cls{book} is loaded, with "openany", "english" and +% "french" options. +% \begin{macrocode} +%\PassOptionsToClass{openany,english,french}{book} +%\LoadClassWithOptions { book } +\PassOptionsToPackage{table,cmyk}{xcolor}% +\PassOptionsToPackage{export}{adjustbox}% +\PassOptionsToPackage{english,french}{translator} +\PassOptionsToPackage{english,french}{babel} +\PassOptionsToPackage{english,french}{varioref} +\PassOptionsToPackage{english,french}{cleveref} +% \end{macrocode} +% +% \section{Packages loading} +% +% Many of the \gztcl{} features are provided by third party packages. In this +% section, we load them and outline their features interesting from the \gztcl{} +% point of view.\todo{When possible, the list of loaded packages should be split +% into two lists: one of the packages needed just by \gzt{} (for both its logic +% and its layout) and one of packages useful for the end user.} +% +% \begin{enumerate} +% \item Compile \TeX{} pictures stand-alone or as part of a document: +% \begin{macrocode} +\RequirePackage[group=false]{standalone}% +% \end{macrocode} +% +% \item Extending \pkg{etoolbox}'s patching commands: +% \begin{macrocode} +\RequirePackage{xpatch}% +% \end{macrocode} +% +% \item Tools to load and manipulate data: +% \begin{macrocode} +\RequirePackage{datatool}% +% \end{macrocode} +% +% \item In case of \hologo{pdfTeX} engine, we enforce \pkg{fontenc} to be loaded +% with its \docAuxKey*{T1} option (usual for French and English documents) and +% \pkg{inputenc} to be loaded with its \docAuxKey*{utf8} option. Otherwise +% \pkg{fontspec}, convenient for both \hologo{XeLaTeX} and \hologo{LuaLaTeX}, +% is loaded, with ligatures à la \TeX{} by default enabled. +% \begin{macrocode} +\pdftex_if_engine:TF + { + \RequirePackage[T1]{fontenc} + \RequirePackage[utf8]{inputenc} + }{ + \RequirePackage{fontspec} + } +% \end{macrocode} +% +% Load of main font to be used: +% \begin{macrocode} +\RequirePackage[sfmath,easyscsl,noDcommand]{kpfonts} +% \end{macrocode} +% +% \item Formatting both header and footers (pagestyle), and sections headers: +% \begin{macrocode} +\RequirePackage[pagestyles]{titlesec}% +% \end{macrocode} +% +% \item Multicolumn output: +% \begin{macrocode} +\RequirePackage{multicol}% +% \end{macrocode} +% +% \item Graphics inclusion: +% \begin{macrocode} +\RequirePackage{graphicx}% +% \end{macrocode} +% +% \item Establish input relative to a directory: +% \begin{macrocode} +%\RequirePackage{import}% +% \end{macrocode} +% +% \item Allow tables to flow over page boundaries: +% \begin{macrocode} +\RequirePackage{longtable}% +% \end{macrocode} +% +% \item Put a grey textual watermark on document pages (loaded only if +% "forauthors" \gzt{}'s option is on): +% \begin{macrocode} +%\bool_if:nT { \g_@@_for_authors_bool } { +% \RequirePackage{draftwatermark}[2006/06/30]% +%} +% \end{macrocode} +% +% \item Graphics package-alike macros for \enquote{general} boxes: +% \begin{macrocode} +\RequirePackage{adjustbox}% +% \end{macrocode} +% +% \item A new reference scheme for \LaTeX{}, giving the total number of pages in +% the document: +% \begin{macrocode} +\RequirePackage{zref-totpages} +% \end{macrocode} +% +% \item A new reference scheme for \LaTeX{}, providing the facilities of the +% \package{xr} and \package{xr-hyper} packages: +% \begin{macrocode} +\RequirePackage{zref-xr}% +% \end{macrocode} +% +% \item Alternative versions of "ragged"-type commands: +% \begin{macrocode} +\RequirePackage{ragged2e}% +% \end{macrocode} +% +% \item Define commands that appear not to eat spaces: +% \begin{macrocode} +\RequirePackage{xspace}% +% \end{macrocode} +% +% \item ...: +% \begin{macrocode} +\RequirePackage{textcase}% +% \end{macrocode} +% +% \item For typesetting epigraphs: +% \begin{macrocode} +\RequirePackage{epigraph}% +% \end{macrocode} +% +% \item Context sensitive quotation facilities: +% \begin{macrocode} +\RequirePackage[autostyle]{csquotes}% +% \end{macrocode} +% +% \item Programmable bibliographies and citations: +% \begin{macrocode} +\RequirePackage[datamodel=gzt,backend=biber,defernumbers=true,firstinits,autolang=other]{biblatex}% +% \end{macrocode} +% +% \item Extended implementation of the \LaTeX{} array and +% tabular–environments: +% \begin{macrocode} +\RequirePackage{array} +% \end{macrocode} +% +% \item Publication quality tables in \LaTeX{}: +% \begin{macrocode} +\RequirePackage{booktabs} +% \end{macrocode} +% +% \item Tabulars with adjustable-width columns: +% \begin{macrocode} +\RequirePackage{tabularx} +% \end{macrocode} +% +% % \item Set of tools for authors to typeset quantities in a consistent way +% % (automated processing of numbers and units, and control of tabular alignment +% % of numbers): +% % \begin{macrocode} +% \RequirePackage{siunitx} +% % \end{macrocode} +% +% \item Modify skips between paragraphs: +% \begin{macrocode} +\RequirePackage{nccparskip} +% \end{macrocode} +% +% \item Construction for table cells that span more than one row of the table: +% \begin{macrocode} +\RequirePackage{multirow} +% \end{macrocode} +% +% \item Intelligent page references: +% \begin{macrocode} +\RequirePackage{varioref} +% \end{macrocode} +% +% \item Extension to \Pkg{amsmath}: correct various bugs/defeciencies in amsmath +% and useful tools for mathematical typesetting\footnote{The \Pkg{mathtools} +% loads \pkg{amsmath}, hence it's not necessary to load the latter.}: +% \begin{macrocode} +\RequirePackage{mathtools} +% \end{macrocode} +% +% \item Support for using RSFS fonts in maths: +% \begin{macrocode} +\RequirePackage{mathrsfs} +% \end{macrocode} +% +% \item Vector arrows: +% \begin{macrocode} +\RequirePackage{esvect} +% \end{macrocode} +% +% \item Hooks to do actions on every page or on the current page: +% \begin{macrocode} +\RequirePackage{everypage} +% \end{macrocode} +% +% \item For translating words in \LaTeX{}. +% \begin{macrocode} +\RequirePackage{translator}% +% \end{macrocode} +% +% \item Flexible and easy interface to page dimensions: +% \begin{macrocode} +\RequirePackage{geometry} +% \end{macrocode} +% +% \item Bilingual (French and English) documents, with French as default +% language: +% \begin{macrocode} +\RequirePackage{babel}% +% \end{macrocode} +% +% \item METAFONT and macros for Euro sign: +% \begin{macrocode} +\RequirePackage{eurosym}% +% \end{macrocode} +% +% Expandable checks for the current language: +% \begin{macrocode} +\RequirePackage{iflang}[2007/11/11]% +% \end{macrocode} +% +% \item Tagging tables of contents: +% \begin{macrocode} +%\RequirePackage{tableof}% +% \end{macrocode} +% +% \item Completely customisable TOCs: +% \begin{macrocode} +\RequirePackage{etoc}% +% \end{macrocode} +% +% \item Subliminal refinements towards typographical perfection: +% \begin{macrocode} +\RequirePackage[babel=true]{microtype}% +% \end{macrocode} +% +% \item Current date and time formatting: +% \begin{macrocode} +\RequirePackage[nodayofweek]{datetime}% +% \end{macrocode} +% +% \item Customization of lists: +% \begin{macrocode} +\RequirePackage[inline]{enumitem}% +% \end{macrocode} +% +% \item Patches for \LaTeX{}: +% \begin{macrocode} +\RequirePackage{fixltx2e}% +% \end{macrocode} +% +% \item Execute command after the next page break: +% \begin{macrocode} +\RequirePackage{afterpage} +% \end{macrocode} +% +% \item Extension of \LaTeX{}'s color facilities: +% \begin{macrocode} +\RequirePackage{xcolor}% +% \end{macrocode} +% +% \item We need to avoid some macros from few of the following packages to be +% added to "\@preamblecmds": +% \begin{macrocode} +%\cs_set_eq:NN \_@@_orig_preamblecmds \@preamblecmds +% \end{macrocode} +% +% Create PostScript and PDF graphics in \TeX: +% \begin{macrocode} +\RequirePackage{tikz} +% \end{macrocode} +% +% Create normal/logarithmic plots in two and three dimensions: +% \begin{macrocode} +\RequirePackage{pgfplots} +% \end{macrocode} +% +% \item Environments for colored and framed text boxes, e.g. theorems: +% \begin{macrocode} +\RequirePackage{tcolorbox} +% \end{macrocode} +% +% \item A single TikZ node for the whole page: +% \begin{macrocode} +\RequirePackage{tikzpagenodes} +% \end{macrocode} +% +% \item Tools for drawing Euclidean geometry: +% \begin{macrocode} +%\RequirePackage{tkz-euclide} +% \end{macrocode} +% +% \item Print page grid in background: +% \begin{macrocode} +%\RequirePackage[foreground]{pagegrid}% +% \end{macrocode} +% +% \item Typesetting theorems (AMS style): +% \begin{macrocode} +\RequirePackage{amsthm} +% \end{macrocode} +% +% \item Extensions to theorem environments: +% \begin{macrocode} +\RequirePackage{thmtools} +% \end{macrocode} +% +% We restore "\@preamblecmds" as it was before: +% \begin{macrocode} +%\cs_set_eq:NN \@preamblecmds \_@@_orig_preamblecmds +% \end{macrocode} +% +% \item Control float placement: +% \begin{macrocode} +\RequirePackage{placeins}% +% \end{macrocode} +% +% \item Hypertext marks: +% \begin{macrocode} +\RequirePackage[hidelinks,hypertexnames=false]{hyperref}% +% \end{macrocode} +% +% \item A new bookmark (outline) organization for \Pkg{hyperref}: +% \begin{macrocode} +\RequirePackage[numbered]{bookmark}% +% \end{macrocode} +% +% % \item Create glossaries and lists of acronyms: +% % \begin{macrocode} +% \RequirePackage[nowarn]{glossaries}% +% % \end{macrocode} +% +% \item Intelligent cross-referencing: +% \begin{macrocode} +\RequirePackage{cleveref}% +% \end{macrocode} +% \end{enumerate} +% +% % Setings of the glossaries and acronyms. +% % \begin{macrocode} +% \makeglossaries +% % \loadglsentries{../glossaries/glossary} +% % \loadglsentries{../glossaries/acronyms} +% % +% \setglossarystyle{indexhypergroup} +% \setacronymstyle{long-sc-short} +% \glsaddall +% % \end{macrocode} +% +% \begin{macrocode} +% +% \end{macrocode} +% +% \begin{macrocode} +%<*class|class-article> +% \end{macrocode} +% +% In case of \hologo{pdfTeX} engine, the document is by default in sans serif +% and makes use of the \pkg{lmodern} for the \enquote{ttfamily} font. +% +% \begin{macrocode} +\pdftex_if_engine:T + { + \renewcommand\familydefault{\sfdefault} + \renewcommand{\ttdefault}{lmtt} + } +% \end{macrocode} +% +% \section{Miscellaneous patches} +% +% We pop some commands from the "\@preamblecmds" list in order to allow +% "\DeclareMathOperator" to be used after the preamble (see +% \url{http://tex.stackexchange.com/q/223421/18401}). +% \begin{macrocode} +\tl_remove_all:Nn \@preamblecmds { \do \DeclareMathOperator } +\tl_remove_all:Nn \@preamblecmds { \do \newacronym } +\tl_remove_all:Nn \@preamblecmds { \do \@declmathop } +\tl_remove_all:Nn \@preamblecmds { \do \usetikzlibrary } +% \end{macrocode} +% +% \section{Messages} +% +% In this section, some messages are declared for future use. +% \begin{macrocode} +\msg_new:nnnn{gzt}{issue-number-needed}{Option~`#1'~needed!} + {Please~specify~`#1=', + ~otherwise~`'~will~be~set~to + ~`\int_use:N\c_@@_first_issue_number_int'.} +\msg_new:nnnn{gzt}{unknown-choice}{Choice~`#3'~invalid!} + {Please~specify~#1=#2.} +% \end{macrocode} +% +% \section{Counters} +% +% In this section, we define some counters for future use. +% +% \begin{macro}{\g_@@_editors_in_chief_int} +% \begin{macro}{\g_@@_articles_int} +% \begin{macro}{\g_@@_questions_answers_int} +% +% The integer "\g_@@_editors_in_chief_int" will count the number of editors in +% chief in order to use singular or plural form of the corresponding string +% \enquote{Rédacteur(s) en chef}. +% \begin{macrocode} +\int_new:N \g_@@_editors_in_chief_int +% \end{macrocode} +% +% The integer "\g_@@_item_in_rubric_int" will count the number of item in +% a rubric in order to give a specific behavior of the first of them. +% \begin{macrocode} +\int_new:N \g_@@_item_in_rubric_int +% \end{macrocode} +% +% The integer "\g_@@_articles_int" will count the number of articles in order to +% provide for each of them a unique bibliographic key. +% \begin{macrocode} +\int_new:N \g_@@_articles_int +% \end{macrocode} +% +% The integer "\g_@@_question_int" will count the number of questions +% (and hence of answers) in order to provide distinguish between the first and +% the subsequent questions/answers of an interview, the former being likely to +% be typeset differently (e.g. the names of the interviewer and the interviewee +% may appear only in the first question/answer). +% \begin{macrocode} +\int_new:N \g_@@_question_int +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \section{Constants} +% +% In this section, we declared some constants for future use. +% +% \subsection{Integers} +% +% \subsubsection{Issue numbers} +% +% \begin{macro}{\c_@@_first_issue_number_int} +% \begin{macro}{\c_@@_first_issue_year_int} +% \begin{macro}{\c_@@_first_issue_month_int} +% \begin{macro}{\c_@@_interval_in_months_int} +% The first issue number, month and year, and the interval (in months) between +% two consecutive issues, are declared. +% \begin{macrocode} +\int_const:Nn \c_@@_first_issue_number_int { 143 } +\int_const:Nn \c_@@_first_issue_year_int { 2015 } +\int_const:Nn \c_@@_first_issue_month_int { 1 } +\int_const:Nn \c_@@_interval_in_months_int { 3 } +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macrocode} +% +% \end{macrocode} +% +% \begin{macrocode} +%<*class|class-article> +% \end{macrocode} +% +% \subsection{Strings and keywords} +% +% We now declare some private string constants. +% +% \begin{macro}{\c_@@_journal_short_title_string_tl} +% \begin{macro}{\c_@@_journal_title_string_tl} +% \begin{macro}{\c_@@_editors_in_chief_string_tl} +% \begin{macro}{\c_@@_editors_string_tl} +% \begin{macro}{\c_@@_editorial_board_string_tl} +% \begin{macro}{\c_@@_editorial_secretariat_string_tl} +% \begin{macro}{\c_@@_phone_string_tl} +% \begin{macro}{\c_@@_fax_string_tl} +% \begin{macro}{\c_@@_informations_string_tl} +% \begin{macro}{\c_@@_publishingdirector_string_tl} +% \begin{macro}{\c_@@_issn_string_tl} +% \begin{macro}{\c_@@_isbn_string_tl} +% \begin{macro}{\c_@@_latexclass_string_tl} +% \begin{macro}{\c_@@_font_string_tl} +% \begin{macro}{\c_@@_configuration_file_string_tl} +% \begin{macro}{\c_@@_cover_string_tl} +% \begin{macro}{\c_@@_artistic_director_string_tl} +% \begin{macro}{\c_@@_editorial_string_tl} +% \begin{macro}{\c_@@_toc_string_tl} +% \begin{macro}{\c_@@_message_string_tl} +% \begin{macro}{\c_@@_president_signatory_string_tl} +% \begin{macro}{\c_@@_editorinchief_signatory_string_tl} +% \begin{macro}{\c_@@_issue_bib_file_tl} +% \begin{macro}{\c_@@_about_frontcover_string_tl} +% \begin{macro}{\c_@@_credit_frontcover_string_tl} +% \begin{macro}{\c_@@_authors_instructions_string_tl} +% For the journal's short and long titles. +% \begin{macrocode} +\tl_const:Nn \c_@@_journal_short_title_string_tl {Gazette} +\tl_const:Nn \c_@@_journal_title_string_tl { + \c_@@_journal_short_title_string_tl{}~des~Math\'ematiciens% +} +% \end{macrocode} +% +% For the names of the underlying classes. +% \begin{macrocode} +\tl_const:Nn \c_@@_gzt_class_name_tl {gzt} +\tl_const:Nn \c_@@_gztarticle_class_name_tl {gztarticle} +% \end{macrocode} +% +% For the editor(s) in chief. +% \begin{macrocode} +\tl_const:Nn \c_@@_editors_in_chief_string_tl +{ + \int_compare:nNnTF { \g_@@_editors_in_chief_int } > { 1 } + { \c_@@_editorsinchief_string_tl } + { \c_@@_editorinchief_string_tl } +} +% \end{macrocode} +% For the editor in chief. +% \begin{macrocode} +\tl_const:Nn \c_@@_editorinchief_string_tl {R\'edacteur~en~chef } +% \end{macrocode} +% For the editors in chief (plural form of the previous one). +% \begin{macrocode} +\tl_const:Nn \c_@@_editorsinchief_string_tl {R\'edacteurs~en~chef } +% \end{macrocode} +% For the editors. +% \begin{macrocode} +\tl_const:Nn \c_@@_editors_string_tl {R\'edacteurs } +% \end{macrocode} +% For the editorial board. +% \begin{macrocode} +\tl_const:Nn \c_@@_editorial_board_string_tl {Comit\'e~de~r\'edaction} +% \end{macrocode} +% For the editorial_secretariat. +% \begin{macrocode} +\tl_const:Nn \c_@@_editorial_secretariat_string_tl {Secr\'etariat~de~r\'edaction} +% \end{macrocode} +% For the phone. +% \begin{macrocode} +\tl_const:Nn \c_@@_phone_string_tl {T\'el.} +% \end{macrocode} +% For the fax. +% \begin{macrocode} +\tl_const:Nn \c_@@_fax_string_tl {Fax} +% \end{macrocode} +% For the informations. +% \begin{macrocode} +\tl_const:Nn \c_@@_informations_string_tl {Renseignements} +% \end{macrocode} +% For the publishing director. +% \begin{macrocode} +\tl_const:Nn \c_@@_publishingdirector_string_tl {Directeur~de~la~publication} +% \end{macrocode} +% For the \textsc{issn}. +% \begin{macrocode} +\tl_const:Nn \c_@@_issn_string_tl {\textsc{issn}} +% \end{macrocode} +% For the \textsc{isbn}. +% \begin{macrocode} +\tl_const:Nn \c_@@_isbn_string_tl {\textsc{isbn}} +% \end{macrocode} +% For "\LaTeX Class". +% \begin{macrocode} +\tl_const:Nn \c_@@_latexclass_string_tl {Classe~\LaTeX{}} +% \end{macrocode} +% For "Impression". +% \begin{macrocode} +\tl_const:Nn \c_@@_printer_string_tl {Impression} +% \end{macrocode} +% For configuration file. +% \begin{macrocode} +\tl_const:Nn \c_@@_configuration_file_string_tl {gzt.cfg} +% \end{macrocode} +% For the artistic director. +% \begin{macrocode} +\tl_const:Nn \c_@@_artistic_director_string_tl {Conception~graphique} +% \end{macrocode} +% For the editorial. +% \begin{macrocode} +\tl_const:Nn \c_@@_editorial_string_tl {\'Editorial} +% \end{macrocode} +% For the editor in chief. +% \begin{macrocode} +\tl_const:Nn \c_@@_editorinchief_signatory_string_tl {\c_@@_editorinchief_string_tl~de~la~\c_@@_journal_title_string_tl} +% \end{macrocode} +% For the table of contents. +% \begin{macrocode} +\tl_const:Nn \c_@@_toc_string_tl {Sommaire} +% \end{macrocode} +% For the president message. +% \begin{macrocode} +\tl_const:Nn \c_@@_president_message_string_tl {Mot~du~pr\'esident} +% \end{macrocode} +% For the president. +% \begin{macrocode} +\tl_const:Nn \c_@@_president_signatory_string_tl {pr\'esident~de~la~\l_@@_smf_short_string_tl} +% \end{macrocode} +% For the date of the editor in chief's message. +% \begin{macrocode} +\tl_const:Nn \c_@@_editorinchief_message_date_string_tl {Le~\displaydate{@@_editorinchief_message_date}} +% \end{macrocode} +% For the date of the president's message. +% \begin{macrocode} +\tl_const:Nn \c_@@_president_message_date_string_tl {Le~} +% \end{macrocode} +% For the front cover header text. +% \begin{macrocode} +\tl_const:Nn \c_@@_frontcover_header_string_tl { + \l_@@_uppercased_date_format\displaydate{@@_date} + \space + \textendash{} + \space + \No\int_use:N\g_@@_issue_number_int% +} +% \end{macrocode} +% For the name of the directory containing the editorial and the president message. +% \begin{macrocode} +\tl_const:Nn \c_@@_frontmatter_directory_string_tl {frontmatter} +% \end{macrocode} +% For the name of the directory containing the 3rd and 4th cover pages. +% \begin{macrocode} +\tl_const:Nn \c_@@_backmatter_directory_string_tl {backmatter} +% \end{macrocode} +% For the name of the file containing the editorial. +% \begin{macrocode} +\tl_const:Nn \c_@@_editorial_file_string_tl {\c_@@_frontmatter_directory_string_tl/editorial} +% \end{macrocode} +% For the name of the file containing the president message. +% \begin{macrocode} +\tl_const:Nn \c_@@_president_message_file_string_tl {\c_@@_frontmatter_directory_string_tl/presidentmessage} +% \end{macrocode} +% For the path to the current issue's directory. +% \begin{macrocode} +\tl_const:Nn \c_@@_issue_path_string_tl {\int_use:N \g_@@_issue_number_int} +% \end{macrocode} +% For the name and path of the images directory. +% \begin{macrocode} +\tl_const:Nn \c_@@_images_directory_string_tl {images} +\tl_const:Nn \c_@@_issue_images_path_string_tl {% \c_@@_issue_path_string_tl/ + \c_@@_images_directory_string_tl} +% \end{macrocode} +% For the name of the file containing the image of the current issue's front cover. +% \begin{macrocode} +\tl_const:Nn \c_@@_issue_frontcover_image_file_string_tl {frontcover} +\tl_const:Nn \c_@@_issue_frontcover_image_path_string_tl {\c_@@_issue_images_path_string_tl/\c_@@_issue_frontcover_image_file_string_tl} +% \end{macrocode} +% For the name of the file containing the text of the current issue's back cover. +% \begin{macrocode} +\tl_const:Nn \c_@@_issue_backcover_text_file_string_tl {backcover} +\tl_const:Nn \c_@@_backcover_page_file_string_tl {\c_@@_backmatter_directory_string_tl/\c_@@_issue_backcover_text_file_string_tl} +% \end{macrocode} +% For authors' instructions file. +% \begin{macrocode} +\tl_const:Nn \c_@@_authors_instructions_file_extension_tl {ain} +\tl_const:Nn \c_@@_authors_instructions_file_tl {\c_job_name_tl.\c_@@_authors_instructions_file_extension_tl} +% \end{macrocode} +% For the few words about the front cover. +% \begin{macrocode} +\tl_const:Nn \c_@@_about_frontcover_string_tl {\`A~propos~de~la~couverture.} +% \end{macrocode} +% For the credit of the front cover. +% \begin{macrocode} +\tl_const:Nn \c_@@_credit_frontcover_string_tl {cr\'edit} +% \end{macrocode} +% For the authors instructions. +% \begin{macrocode} +\tl_const:Nn \c_@@_authors_instructions_string_tl {Instructions~aux~auteurs} +% \end{macrocode} +% For the preliminary versions sent to authors for checking. +% \begin{macrocode} +\tl_const:Nn \c_@@_preliminary_version_string_tl {% + Ce~document~est~une~{\'e}preuve~vous~permettant~de~contr{\^o}ler~l'int{\'e}grit{\'e}~du~ + texte~d'origine~(et~de~la~bibliographie~s'il~y~en~a~une)~de~votre~article~ + {\`a}~para{\^\i}tre~dans~le~prochain~num{\'e}ro~de~la~\gzt*{}.~La~mise~en~page~ + actuelle~n'est~pas~d{\'e}finitive\,:~votre~article~pourra~en~particulier~ne~pas~ + d{\'e}buter~en~haut~d'une~page.% +} +% \end{macrocode} +% For the string that preceeds the title in the \enquote{Tell me} rubric. +% \begin{macrocode} +\tl_const:Nn \c_@@_tellme_extra_title_string_tl {...\space} +% \end{macrocode} +% For the separator between a rubric and an article's title in the minitoc. +% \begin{macrocode} +\tl_const:Nn \c_@@_minitoc_rubric_title_separator_string_tl {\space\textendash} +% \end{macrocode} +% For the miscellaneous rubrics. +% \begin{macrocode} +\tl_const:Nn \c_@@_mathematics_rubric_string_tl {Math\'ematiques} +\tl_const:Nn \c_@@_dossier_rubric_string_tl {Dossier} +\tl_const:Nn \c_@@_community_rubric_string_tl {Vie~de~la~communaut\'e} +\tl_const:Nn \c_@@_interview_rubric_string_tl {Entretien} +\tl_const:Nn \c_@@_teaching_rubric_string_tl {Diffusion~des~savoirs} +\tl_const:Nn \c_@@_parity_rubric_string_tl {Parit\'e} +\tl_const:Nn \c_@@_tellme_rubric_string_tl {Raconte-moi} +\tl_const:Nn \c_@@_information_rubric_string_tl {Information} +\tl_const:Nn \c_@@_rearviewmirror_rubric_string_tl {R\'etroviseur} +\tl_const:Nn \c_@@_tribute_rubric_string_tl {Carnet} +% \tl_const:Nn \c_@@_books_rubric_string_tl {Recension} +\tl_const:Nn \c_@@_books_rubric_string_tl {Livres} +\tl_const:Nn \c_@@_latex_rubric_string_tl {Astuces~\LaTeX{}} +\tl_const:Nn \c_@@_published_with_help_of_string_tl {Publi\'e~avec~le~concours~de~:} +\tl_const:Nn \c_@@_advertisement_directory_string_tl {advertisement/} +\tl_const:Nn \c_@@_advertisement_string_tl {Publicit\'e} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% For the long and short forms of \textsc{smf}. +% \begin{macrocode} +\tl_const:Nn \c_@@_smf_short_string_tl {\textsc{smf}} +\tl_const:Nn \c_@@_smf_short_pdf_string_tl {SMF} +\tl_const:Nn \c_@@_smf_string_tl {Soci\'et\'e~Math\'ematique~de~France} +% \end{macrocode} +% For the long and short forms of \enquote{c'est-à-dire} and +% \enquote{C'est-à-dire} (\enquote{that is} and \enquote{That is}). +% \begin{macrocode} +\tl_const:Nn \c_@@_cad_short_string_tl {c.-\`a-d.} +\tl_const:Nn \c_@@_cad_string_tl {c'est-\`a-dire} +\tl_const:Nn \c_@@_Cad_short_string_tl {C.-\`a-d.} +\tl_const:Nn \c_@@_Cad_string_tl {C'est-\`a-dire} +% \end{macrocode} +% For the footer text. +% \begin{macrocode} +\tl_const:Nn \c_@@_footer_string_tl { + \c_@@_footer_size_font_tl + \textcolor{@@_smf_number_color}{\c_@@_smf_short_string_tl} + \space + \textcolor{@@_date_color}{ + \textendash{}\space + \MakeTextUppercase{\c_@@_journal_short_title_string_tl} +% \bool_if:nF { \g_@@_inside_frontcover_bool || \g_@@_backmatter_bool } +% { +% \space\textendash{}\space +% \l_@@_uppercased_date_format\displaydate{@@_date} +% \space +% \textendash{}\space +% \textcolor{@@_smf_number_color}{\No\int_use:N\g_@@_issue_number_int} +% } + } +} +% \end{macrocode} +% For the name of the file containing the \textsc{smf} logo. +% \begin{macrocode} +\tl_const:Nn \c_@@_smf_logo_file_string_tl {logo_SMF} +% \end{macrocode} +% For the name of the file containing the bibliography of the current issue. +% \begin{macrocode} +% \tl_const:Nn \c_@@_issue_bib_file_string_tl {issue-\c_job_name_tl.bib} +\tl_const:Nn \c_@@_issue_bib_file_suffix_string_tl {@@} +\tl_const:Nn \c_@@_issue_bib_file_string_tl {\c_job_name_tl\c_@@_issue_bib_file_suffix_string_tl.bib} +\tl_const:Nn \c_@@_issue_bib_path_string_tl {\c_@@_issue_bib_file_string_tl} +% \end{macrocode} +% For the prefix of the bibliographic key of each article. +% \begin{macrocode} +\tl_const:Nn \c_@@_issue_bib_key_tl {\int_use:N \g_@@_issue_number_int} +% \end{macrocode} +% For the interview title. +% \begin{macrocode} +\tl_const:Nn \c_@@_interview_title_string_tl {En~apart\'e~avec~} +% \end{macrocode} +% For the asides opening and eventuelly closing punctuation marks. +% \begin{macrocode} +\tl_const:Nn \c_@@_aside_string_tl {--} +% \end{macrocode} +% For the draft watermark. +% \begin{macrocode} +\tl_const:Nn \c_@@_draftwatermark_string_tl {draft} +% \end{macrocode} +% +% % \begin{macro}{smf} +% % \begin{macro}{issn} +% % \begin{macro}{isbn} +% % \begin{macro}{cv} +% % \begin{macrocode} +% \newacronym{smf}{smf}{\c_@@_smf_string_tl}% +% \newacronym{issn}{issn}{International Standard Serial Number}% +% \newacronym{isbn}{isbn}{International Standard Book Number}% +% \newacronym{cv}{cv}{curriculum vit\ae}% +% \end{macrocode} +% % \end{macro} +% % \end{macro} +% % \end{macro} +% % \end{macro} +% +% \subsection{Booleans} +% +% We now declare the booleans that will be used. +% +% \begin{macro}{\g_@@_frontcover_bool} +% \begin{macro}{\g_@@_inside_frontcover_bool} +% \begin{macro}{\g_@@_inside_backcover_bool} +% \begin{macro}{\g_@@_frontmatter_bool} +% \begin{macro}{\g_@@_rubric_bool} +% \begin{macro}{\g_@@_interview_rubric_bool} +% \begin{macro}{\g_@@_mainmatter_bool} +% \begin{macro}{\g_@@_backmatter_bool} +% \begin{macro}{\g_@@_backcover_bool} +% The following booleans will be used to test wheter we are respectively in the +% front cover, in the inside front cover, in the frontmatter, in (first page +% of) a rubric, in the mainmatter. +% \begin{macrocode} +\bool_new:N \g_@@_frontcover_bool +\bool_new:N \g_@@_inside_frontcover_bool +\bool_new:N \g_@@_inside_backcover_bool +\bool_new:N \g_@@_frontmatter_bool +\bool_new:N \g_@@_rubric_bool +\bool_new:N \g_@@_interview_rubric_bool +\bool_new:N \g_@@_tellme_rubric_bool +\bool_new:N \g_@@_rearviewmirror_rubric_bool +\bool_new:N \g_@@_books_rubric_bool +\bool_new:N \g_@@_mainmatter_bool +\bool_new:N \g_@@_backmatter_bool +\bool_new:N \g_@@_backcover_bool +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\g_@@_previous_article_with_bibliography_or_minibio_bool} +% The following boolean will be used to test, for a given (not first) article +% of a rubric, whether the previous article ends with a bibliography or +% a minibio, in order to adjust the vertical space before its \enquote{bullet +% and rule}. +% \begin{macrocode} +\bool_new:N \g_@@_previous_article_with_bibliography_or_minibio_bool +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\g_@@_advertisement_bool} +% The following boolean will be used to test wheter we are inside +% an advertisement page. +% \begin{macrocode} +\bool_new:N \g_@@_advertisement_bool +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\g_@@_multicols_bool} +% The following boolean will be used to test wheter we are inside +% a \pkg{multicol}'s "multicols" environment. +% \begin{macrocode} +\bool_new:N \g_@@_multicols_bool +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\g_@@_refsection_bool} +% The following boolean will be used to test wheter we are inside +% a \pkg{biblatex}'s "refsection" environment. +% \begin{macrocode} +\bool_new:N \g_@@_refsection_bool +% \end{macrocode} +% \end{macro} +% +% \subsection{Dimensions} +% +% \subsubsection{Geometry of the page} +% +% \begin{macro}{\c_@@_rubrics_abstract_width_dim} +% \begin{macro}{\c_@@_rubrics_head_text_abstract_width_dim} +% \begin{macro}{\c_@@_rubrics_head_text_no_abstract_width_dim} +% \begin{macro}{\l_@@_rubrics_head_text_width_dim} +% We declare the constant (default) dimensions of the boxes containing the +% abstract and head text rubrics. +% \begin{macrocode} +\dim_const:Nn \c_@@_rubrics_abstract_width_dim { 85mm} +\dim_const:Nn \c_@@_rubrics_head_text_abstract_width_dim { 50mm} +\dim_const:Nn \c_@@_rubrics_head_text_no_abstract_width_dim +{ \c_@@_rubrics_abstract_width_dim + \c_@@_rubrics_head_text_abstract_width_dim} +\dim_new:N \l_@@_rubrics_head_text_width_dim +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\c_@@_offset_dim} +% \begin{macro}{\c_@@_paperheight_dim} +% \begin{macro}{\c_@@_paperwidth_dim} +% \begin{macro}{\c_@@_topmargin_dim} +% \begin{macro}{\c_@@_headsep_dim} +% \begin{macro}{\c_@@_botmargin_dim} +% \begin{macro}{\c_@@_innermargin_dim} +% \begin{macro}{\c_@@_outermargin_dim} +% \begin{macro}{\c_@@_footskip_dim} +% \begin{macro}{\c_@@_header_line_width_dim} +% \begin{macro}{\c_@@_header_line_yshift_dim} +% We declare the default page layout constant dimensions. +% \begin{macrocode} +\dim_const:Nn \c_@@_layoutheight_dim { 270mm} +\dim_const:Nn \c_@@_layoutwidth_dim { 210mm} +\dim_const:Nn \c_@@_future_layoutoffset_dim { 5mm} +\bool_if:NTF {\g_@@_for_printer_bool} { + \dim_const:Nn \c_@@_layoutoffset_dim { \c_@@_future_layoutoffset_dim} +}{ + \dim_const:Nn \c_@@_layoutoffset_dim {\c_zero_dim} +} +% \end{macrocode} +% +% The binding's thickness, that depends on the total pages number, is store in +% "\c_@@_bindingoffset_dim". +% +% Moreover, the inner and outer margins are repectively increase and decrease by +% a dimension "\c_@@_adjustmargin_dim" which is non-zero if (and only if) the +% total pages number is greater or equal than 72 (thresold for an adhesive +% square-back binding). +% +% In order to know the total pages number (store in +% "\g_@@_total_page_number_int"), we need first to specify the external document +% whom \File{.aux} will be read. +% \begin{macrocode} +\zexternaldocument[self]{\jobname}% +% +\int_new:N \g_@@_total_page_number_int% +\int_gset:Nn \g_@@_total_page_number_int { \zref@extractdefault{selfLastPage}{abspage}{0} } +\int_compare:nNnTF {\g_@@_total_page_number_int-4}<{68} +{ + \dim_const:Nn \c_@@_future_bindingoffset_dim { \c_zero_dim } +}{ + \int_compare:nNnTF {\g_@@_total_page_number_int-4}<{80} + { + \dim_const:Nn \c_@@_future_bindingoffset_dim { 3mm } + }{ + \int_compare:nNnTF {\g_@@_total_page_number_int-4}<{88} + { + \dim_const:Nn \c_@@_future_bindingoffset_dim { 3.5mm } + }{ + \int_compare:nNnTF {\g_@@_total_page_number_int-4}<{96} + { + \dim_const:Nn \c_@@_future_bindingoffset_dim { 3.9mm } + }{ + \int_compare:nNnTF {\g_@@_total_page_number_int-4}<{104} + { + \dim_const:Nn \c_@@_future_bindingoffset_dim { 4.1mm } + }{ + \int_compare:nNnTF {\g_@@_total_page_number_int-4}<{120} + { + \dim_const:Nn \c_@@_future_bindingoffset_dim { 4.5mm } + }{ + \dim_const:Nn \c_@@_future_bindingoffset_dim { 5mm } + } + } + } + } + } +} +\bool_if:NTF {\g_@@_cover_bool} { + \dim_const:Nn \c_@@_bindingoffset_dim { \c_@@_future_bindingoffset_dim } +}{ + \dim_const:Nn \c_@@_bindingoffset_dim {\c_zero_dim} +} +\dim_const:Nn \c_@@_paperheight_dim { \c_@@_layoutheight_dim+2\c_@@_layoutoffset_dim} +\bool_if:NTF {\g_@@_cover_bool} { + \dim_const:Nn \c_@@_paperwidth_dim { + \c_@@_layoutwidth_dim + + + \c_@@_layoutoffset_dim + +\c_@@_bindingoffset_dim + } +}{ + \dim_const:Nn \c_@@_paperwidth_dim { + \c_@@_layoutwidth_dim + + + 2 + \c_@@_layoutoffset_dim + +\c_@@_bindingoffset_dim + } +} +\dim_const:Nn \c_@@_frontcover_image_width_dim { + \c_@@_layoutwidth_dim + + + \c_@@_future_layoutoffset_dim +} +\dim_const:Nn \c_@@_topmargin_dim { 31mm} +\dim_const:Nn \c_@@_topmargin_frontcover_dim { + \c_@@_topmargin_dim + + 30mm +} +\dim_const:Nn \c_@@_topmargin_inside_cover_dim { + \c_@@_topmargin_dim + +10mm +} +\dim_const:Nn \c_@@_topmargin_front_matter_dim { + \c_@@_topmargin_inside_cover_dim +} +% \dim_const:Nn \c_@@_topmargin_backcover_dim { +% \c_@@_topmargin_frontcover_dim +% } +\dim_const:Nn \c_@@_headsep_dim { 24mm} +\dim_const:Nn \c_@@_headsep_frontcover_dim { + \c_@@_headsep_dim + +31mm + -\c_@@_layoutoffset_dim +} +\dim_const:Nn \c_@@_headsep_inside_frontcover_dim { + \c_@@_headsep_dim + +7mm +} +\dim_const:Nn \c_@@_headsep_front_matter_dim { + \c_@@_headsep_inside_frontcover_dim +} +\dim_const:Nn \c_@@_headheight_dim { \c_zero_dim } +\dim_const:Nn \c_@@_botmargin_dim { 30mm} +\dim_const:Nn \c_@@_footskip_dim { 26mm} +% \end{macrocode} +% +% Inner margins of the initial issue (\#~143) were too small. We make them +% definitively bigger as of \SI{5}{\milli\meter} (and make the outer margins +% smaller of the same dimension). +% \begin{macrocode} +\dim_const:Nn \c_@@_shift_margin_dim { 5mm } +\dim_const:Nn \c_@@_innermargin_dim { 15mm - \c_@@_bindingoffset_dim + \c_@@_shift_margin_dim} +\dim_const:Nn \c_@@_outermargin_dim { 30mm - \c_@@_shift_margin_dim } +\dim_const:Nn \c_@@_inside_cover_box_width_dim { 165mm }% +\dim_const:Nn \c_@@_innermargin_inside_cover_dim { + (\c_@@_layoutwidth_dim - \c_@@_inside_cover_box_width_dim)/2 + - \c_@@_bindingoffset_dim + % + \c_@@_adjustmargin_dim +} +\dim_const:Nn \c_@@_outermargin_inside_cover_dim { + (\c_@@_layoutwidth_dim - \c_@@_inside_cover_box_width_dim)/2 + % - \c_@@_adjustmargin_dim +} +\dim_const:Nn \c_@@_innermargin_backcover_dim { 10mm } +\dim_const:Nn \c_@@_outermargin_backcover_dim { \c_@@_innermargin_backcover_dim } +\dim_const:Nn \c_@@_topmargin_backcover_dim { \c_@@_innermargin_backcover_dim } +\dim_const:Nn \c_@@_bottommargin_backcover_dim { \c_@@_innermargin_backcover_dim } +\dim_const:Nn \c_@@_frontcover_image_height_dim { 160mm} +\dim_const:Nn \c_@@_radius_arc_dim { 85mm }% +\dim_const:Nn \c_@@_frontmatter_headtext_xshift_dim { 19mm }% +\dim_const:Nn \c_@@_frontmatter_headtext_o_xshift_dim { + -\c_@@_frontmatter_headtext_xshift_dim -\c_@@_layoutoffset_dim% +}% +\dim_const:Nn \c_@@_frontmatter_headtext_e_xshift_dim { + \c_@@_frontmatter_headtext_xshift_dim +\c_@@_layoutoffset_dim% +}% +\dim_const:Nn \c_@@_frontmatter_headtext_yshift_dim { -6.5mm-\c_@@_layoutoffset_dim }% +\dim_const:Nn \c_@@_header_line_width_dim { 0.25mm} +\dim_const:Nn \c_@@_header_line_yshift_dim { -1mm-\c_@@_header_line_width_dim}% +\dim_const:Nn \c_@@_footer_background_height_dim { 10mm + \c_@@_layoutoffset_dim } +\dim_const:Nn \c_@@_front_matter_extra_innermargin_dim { 28mm } +\dim_const:Nn \c_@@_front_matter_extra_outermargin_dim { 7mm } +\dim_const:Nn \c_@@_inside_cover_offset_dim { \c_zero_dim }% +% \dim_const:Nn \c_@@_inside_cover_offset_dim { 7.5mm }% +\dim_const:Nn \c_@@_pictogram_width_dim { 23mm }% +\dim_const:Nn \c_@@_header_xshift_dim { \c_@@_pictogram_width_dim-6mm }% +\dim_const:Nn \c_@@_header_yshift_dim { 5mm }% +\dim_const:Nn \c_@@_xshift_arccircle_A_dim { \c_@@_rubrics_abstract_width_dim+\c_@@_innermargin_dim+10mm+\c_@@_layoutoffset_dim }% +\dim_const:Nn \c_@@_yshift_arccircle_A_dim { -22mm-\c_@@_layoutoffset_dim }% +\dim_const:Nn \c_@@_xshift_arccircle_B_dim {% + (\c_@@_rubrics_abstract_width_dim+\c_@@_innermargin_dim)/2% + % \c_@@_innermargin_dim+(\c_@@_rubrics_abstract_width_dim/2)% + % \c_@@_xshift_arccircle_A_dim/2 +}% +\dim_const:Nn \c_@@_yshift_arccircle_B_dim { -\c_@@_layoutoffset_dim }% +\dim_const:Nn \c_@@_xshift_arccircle_C_dim { \c_@@_layoutoffset_dim-5mm }% +\dim_const:Nn \c_@@_yshift_arccircle_C_dim { -19.75mm-\c_@@_layoutoffset_dim }% +\dim_const:Nn \c_@@_book_review_frontcover_extend_dim { 12mm }% +\dim_const:Nn \c_@@_tcb_left_dim { 4mm }% +\dim_const:Nn \c_@@_tcb_boxsep_dim { 1mm }% +\dim_const:Nn \c_@@_tikz_dot_diameter_dim { 0.33mm }% +\dim_const:Nn \c_@@_tikz_dot_spacing_dim { 1.05mm }% +\dim_const:Nn \c_@@_rubric_extra_xoffset_dim { -\c_@@_innermargin_dim/2 }% +\dim_const:Nn \c_@@_rubric_xoffset_dim { 14.5mm }% +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\c_@@_boxed_issue_number_width_dim} +% \begin{macro}{\c_@@_boxed_issue_number_height_dim} +% We declare the constant dimensions of the box containing the issue number. +% \begin{macrocode} +\dim_const:Nn \c_@@_boxed_issue_number_width_dim { 30mm} +\dim_const:Nn \c_@@_boxed_issue_number_height_dim { 8mm} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\l_thumbnail_width_dim} +% We declare the width of the possible thumbnail glued to the box containing +% the issue number. +% \begin{macrocode} +\dim_new:N \l_@@_thumbnail_width_dim +\dim_set:Nn \l_@@_thumbnail_width_dim {30mm} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\g_@@_abstract_box_width_dim} +% \begin{macrocode} +\dim_new:N \g_@@_abstract_box_width_dim +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\c_@@_original_parindent_dim} +% \begin{macrocode} +\dim_new:N \c_@@_original_parindent_dim +\dim_set_eq:NN \c_@@_original_parindent_dim \parindent +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\l_@@_between_rubric_head_text_and_abstract_dim} +% \begin{macrocode} +\dim_new:N \l_@@_between_rubric_head_text_and_abstract_dim +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\g_@@_minitoc_circle_diameter_dim} +% \begin{macro}{\g_@@_minitoc_textwidth_dim} +% \begin{macro}{\g_@@_minitoc_xshift_dim} +% \begin{macro}{\g_@@_minitoc_yshift_dim} +% \begin{macro}{\c_@@_minitoc_from_circle_xshift_dim} +% \begin{macro}{\c_@@_minitoc_from_circle_yshift_dim} +% \begin{macrocode} +\dim_new:N \g_@@_minitoc_circle_diameter_dim +\dim_new:N \g_@@_minitoc_textwidth_dim +\dim_new:N \g_@@_minitoc_xshift_dim +\dim_new:N \g_@@_minitoc_yshift_dim +\dim_set:Nn \g_@@_minitoc_circle_diameter_dim {142mm} +\dim_set:Nn \g_@@_minitoc_textwidth_dim {65mm} +\dim_set:Nn \g_@@_minitoc_xshift_dim {-22mm} +\dim_set:Nn \g_@@_minitoc_yshift_dim {30mm} +\dim_const:Nn \c_@@_minitoc_from_circle_xshift_dim {-15mm} +\dim_const:Nn \c_@@_minitoc_from_circle_yshift_dim {-\c_@@_minitoc_from_circle_xshift_dim} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\c_@@_footer_height_font_dim} +% We declare the height of the font displayed in the footer. +% \begin{macrocode} +\dim_const:Nn \c_@@_footer_height_font_dim {3mm} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\c_@@_minitoc_list_labelsep_dim} +% \begin{macrocode} +\dim_const:Nn \c_@@_minitoc_list_labelsep_dim {1em} +% \end{macrocode} +% \end{macro} +% +% We set the default geometry of the page. +% \begin{macrocode} +\geometry{% + papersize={\c_@@_paperwidth_dim,\c_@@_paperheight_dim} +} +% \end{macrocode} +% +% We create a constant token list that contains the geometry of the front cover. +% \begin{macrocode} +\bool_if:NTF {\g_@@_cover_bool} { + \tl_const:Nn \c_@@_frontcover_geometry_tl {% + ,layoutsize={\c_@@_layoutwidth_dim,\c_@@_layoutheight_dim} + ,layoutvoffset=\c_@@_layoutoffset_dim + ,bindingoffset=\c_@@_bindingoffset_dim + ,top=\c_@@_topmargin_frontcover_dim + ,headsep=\c_@@_headsep_frontcover_dim + ,headheight=\c_@@_headheight_dim + ,bottom=\c_zero_dim + ,footskip=\c_zero_dim + ,outer=\c_zero_dim + ,inner=\c_@@_layoutoffset_dim + ,nomarginpar% + }% +}{ + \tl_const:Nn \c_@@_frontcover_geometry_tl {% + ,layoutsize={\c_@@_layoutwidth_dim,\c_@@_layoutheight_dim} + ,layoutoffset=\c_@@_layoutoffset_dim + ,bindingoffset=\c_@@_bindingoffset_dim + ,top=\c_@@_topmargin_frontcover_dim + ,headsep=\c_@@_headsep_frontcover_dim + ,headheight=\c_@@_headheight_dim + ,bottom=\c_zero_dim + ,footskip=\c_zero_dim + ,hmargin=\c_@@_layoutoffset_dim + ,nomarginpar% + }% +} +% \end{macrocode} +% +% We create a constant token list that contains the geometry of the inside front +% and back covers. +% \begin{macrocode} +\bool_if:NTF {\g_@@_cover_bool} { + \tl_const:Nn \c_@@_inside_cover_geometry_tl {% + ,layoutsize={\c_@@_layoutwidth_dim,\c_@@_layoutheight_dim} + ,layoutvoffset=\c_@@_layoutoffset_dim + ,bindingoffset=\c_@@_bindingoffset_dim + ,top=\c_@@_topmargin_inside_cover_dim + ,headheight=\c_@@_headheight_dim + ,headsep=\c_@@_headsep_inside_frontcover_dim + ,bottom=\c_@@_botmargin_dim + ,footskip=\c_@@_footskip_dim + ,inner=\c_@@_innermargin_inside_cover_dim-\c_@@_layoutoffset_dim + ,outer=\c_@@_outermargin_inside_cover_dim+\c_@@_layoutoffset_dim + ,nomarginpar% + }% +}{ + \tl_const:Nn \c_@@_inside_cover_geometry_tl {% + ,layoutsize={\c_@@_layoutwidth_dim,\c_@@_layoutheight_dim} + ,layoutoffset=\c_@@_layoutoffset_dim + ,bindingoffset=\c_@@_bindingoffset_dim + ,top=\c_@@_topmargin_inside_cover_dim + ,headheight=\c_@@_headheight_dim + ,headsep=\c_@@_headsep_inside_frontcover_dim + ,bottom=\c_@@_botmargin_dim + ,footskip=\c_@@_footskip_dim + ,inner=\c_@@_innermargin_inside_cover_dim + ,outer=\c_@@_outermargin_inside_cover_dim + ,nomarginpar% + }% +} +% \end{macrocode} +% +% We create a constant token list that contains the geometry of the front matter. +% \begin{macrocode} +\tl_const:Nn \c_@@_front_matter_geometry_tl {% + ,layoutsize={\c_@@_layoutwidth_dim,\c_@@_layoutheight_dim} + ,layoutoffset=\c_@@_layoutoffset_dim + % ,bindingoffset=\c_@@_bindingoffset_dim + ,top=\c_@@_topmargin_front_matter_dim% + ,headheight=\c_@@_headheight_dim + ,headsep=\c_@@_headsep_front_matter_dim + ,bottom=\c_@@_botmargin_dim + ,footskip=\c_@@_footskip_dim% + ,inner=\c_@@_innermargin_dim+\c_@@_front_matter_extra_innermargin_dim% + ,outer=\c_@@_outermargin_dim+\c_@@_front_matter_extra_outermargin_dim% + ,nomarginpar% +}% +% \end{macrocode} +% +% We create a constant token list that contains the geometry of the main pages. +% \begin{macrocode} +\tl_const:Nn \c_@@_main_geometry_tl {% + ,layoutsize={\c_@@_layoutwidth_dim,\c_@@_layoutheight_dim} + ,layoutoffset=\c_@@_layoutoffset_dim + % ,bindingoffset=\c_@@_bindingoffset_dim + ,top=\c_@@_topmargin_dim-15mm% + ,headheight=\c_@@_headheight_dim + ,headsep=\c_@@_headsep_dim-18mm + ,bottom=\c_@@_botmargin_dim + ,footskip=\c_@@_footskip_dim + ,inner=\c_@@_innermargin_dim + ,outer=\c_@@_outermargin_dim +}% +% \end{macrocode} +% +% We create a constant token list that contains the geometry of the back cover. +% \begin{macrocode} +\tl_const:Nn \c_@@_backcover_geometry_tl {% + ,layoutsize={\c_@@_layoutwidth_dim,\c_@@_layoutheight_dim} + ,layoutoffset=\c_@@_layoutoffset_dim + % ,bindingoffset=\c_@@_bindingoffset_dim + ,top=\c_@@_topmargin_backcover_dim% + % ,top=\c_@@_topmargin_dim-15mm% + % ,headheight=\c_@@_headheight_dim + % ,headsep=\c_@@_headsep_dim-18mm + ,bottom=\c_@@_bottommargin_backcover_dim + % ,footskip=\c_@@_footskip_dim + ,inner=\c_@@_innermargin_backcover_dim + ,outer=\c_@@_outermargin_backcover_dim +} +% \end{macrocode} +% +% \subsection{Skips} +% +% \begin{macrocode} +\skip_const:Nn \c_@@_editorial_presidentmessage_parskip_skip { 12pt plus 2pt minus .8pt }% +\skip_const:Nn \c_@@_mainmatter_parskip_skip { 2pt plus .5pt minus .2pt }% +% \end{macrocode} +% +% \section{Options} +% +% In this section, options used by some of the document commands defined by the +% class are treated. +% +% \subsection{Issues options} +% +% \begin{macro}{\g_@@_issue_number_int} +% \begin{macro}{\g_@@_issue_month_int} +% \begin{macro}{\g_@@_issue_year_int} +% Some variables which are involved in options are created. +% \begin{macrocode} +\int_new:N \g_@@_issue_number_int +\int_new:N \g_@@_issue_month_int +\int_new:N \g_@@_issue_year_int +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{number} +% \begin{macro}{month} +% \begin{macro}{year} +% The keys options are created. +% \begin{macrocode} +\keys_define:nn { gzt/issuesetup } +{ + number .int_gset:N = \g_@@_issue_number_int, + month .int_gset:N = \g_@@_issue_month_int, + year .int_gset:N = \g_@@_issue_year_int, +% \end{macrocode} +% +% All these options, when used, must receive a value. +% \begin{macrocode} + number .value_required:, + month .value_required:, + year .value_required:, +% \end{macrocode} +% +% If "number" option is not used, its initial value is set to $0$. +% number. +% \begin{macrocode} + number .initial:n = 0 +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \subsection{Journal options} +% +% \begin{macro}{\l_@@_journal_publisher_tl} +% \begin{macro}{\l_@@_journal_address_tl} +% \begin{macro}{\l_@@_journal_phone_tl} +% \begin{macro}{\l_@@_journal_fax_tl} +% \begin{macro}{\l_@@_journal_email_tl} +% \begin{macro}{\l_@@_journal_url_tl} +% \begin{macro}{\l_@@_journal_issn_tl} +% \begin{macro}{\l_@@_journal_isbn_tl} +% Some variables which are involved in options are created. +% \begin{macrocode} +\tl_new:N \l_@@_journal_publisher_tl +\tl_new:N \l_@@_journal_address_tl +\tl_new:N \l_@@_journal_phone_tl +\tl_new:N \l_@@_journal_fax_tl +\tl_new:N \l_@@_journal_email_tl +\tl_new:N \l_@@_journal_url_tl +\tl_new:N \l_@@_journal_issn_tl +\tl_new:N \l_@@_journal_isbn_tl +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{publisher} +% \begin{macro}{address} +% \begin{macro}{phone} +% \begin{macro}{fax} +% \begin{macro}{email} +% \begin{macro}{url} +% \begin{macro}{issn} +% \begin{macro}{isbn} +% The keys options are created. +% \begin{macrocode} +\keys_define:nn { gzt/journalsetup } +{ + publisher .tl_set:N = \l_@@_journal_publisher_tl, + address .tl_set:N = \l_@@_journal_address_tl, + phone .tl_set:N = \l_@@_journal_phone_tl, + fax .tl_set:N = \l_@@_journal_fax_tl, + email .tl_set:N = \l_@@_journal_email_tl, + url .tl_set:N = \l_@@_journal_url_tl, + issn .tl_set:N = \l_@@_journal_issn_tl, + isbn .tl_set:N = \l_@@_journal_isbn_tl, +% \end{macrocode} +% +% All these options, when used, must receive a value. +% \begin{macrocode} + publisher .value_required:, + address .value_required:, + phone .value_required:, + fax .value_required:, + email .value_required:, + url .value_required:, + issn .value_required:, + isbn .value_required:, +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \subsection{Titles options} +% +% \begin{macro}{shorttitle} +% \begin{macro}{minishorttitle} +% \begin{macro}{notintoc} +% Some keys options for article's title are created: +% \begin{itemize} +% \item "shorttitle" for the possible alternative title to appear in the table +% of contents and in the headers, +% \item "minishorttitle" for the possible alternative title to appear in the +% mini table of contents of the front cover, +% \item "notintoc", a flag that, if true, prevents the title to appear in the +% table of contents. +% \end{itemize} +% +% \begin{macrocode} +\keys_define:nn { gzt/title } +{ + short .tl_gset:N = \g_@@_short_title_tl, + minishort .tl_gset:N = \g_@@_mini_short_title_tl, + notintoc .bool_gset:N = \g_@@_title_not_in_toc_bool, +% \end{macrocode} +% +% The following options, when used, must receive a value. +% \begin{macrocode} + short .value_required:, + minishort .value_required:, +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \subsection{Subtitles options} +% +% \begin{macro}{shortsubtitle} +% \begin{macro}{minishortsubtitle} +% \begin{macro}{notintoc} +% Some keys options for article's title are created: +% \begin{itemize} +% \item "shorttitle" for the possible alternative title to appear in the table +% of contents and in the headers, +% \item "minishorttitle" for the possible alternative title to appear in the +% mini table of contents of the front cover, +% \item "notintoc", a flag that, if true, prevents the title to appear in the +% table of contents. +% \end{itemize} +% +% \begin{macrocode} +\keys_define:nn { gzt/subtitle } +{ + short .tl_gset:N = \g_@@_short_subtitle_tl, + minishort .tl_gset:N = \g_@@_mini_short_subtitle_tl, + notintoc .bool_gset:N = \g_@@_subtitle_not_in_toc_bool, +% \end{macrocode} +% +% The following options, when used, must receive a value. +% \begin{macrocode} + short .value_required:, + minishort .value_required:, +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \subsection{Rubrics options} +% +% \begin{macrocode} +\keys_define:nn { gzt/rubric } +{ + abstract .tl_gset:N = \g_@@_rubric_abstract_tl, + title .tl_gset:N = \g_@@_rubric_title_tl, + pictogram .tl_gset:N = \g_@@_rubric_pictofile_tl, +% \end{macrocode} +% +% The following options, when used, must receive a value. +% \begin{macrocode} + abstract .value_required:, + title .value_required:, + pictogram .value_required:, +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \subsection{Minitoc options} +% +% \begin{macro}{list} +% A "list" (boolean) key option for "minitoc" environment is created: if true, +% "minitoc" should contains "\item" just as a list and the resulting list will be +% typeset in a special way. +% +% \begin{macrocode} +\keys_define:nn { gzt/minitoc } +{ + list .bool_gset:N = \g_@@_minitoc_list_bool, + help .bool_gset:N = \g_@@_minitoc_help_bool, + diameter .dim_gset:N = \g_@@_minitoc_circle_diameter_dim, + textwidth .dim_gset:N = \g_@@_minitoc_textwidth_dim, + xshift .dim_gset:N = \g_@@_minitoc_xshift_dim, + yshift .dim_gset:N = \g_@@_minitoc_yshift_dim, +% \end{macrocode} +% +% The following options, when used, must receive a value. +% \begin{macrocode} + diameter .value_required:, + textwidth .value_required:, + xshift .value_required:, + yshift .value_required:, +} +% \end{macrocode} +% \end{macro} +% +% \subsection{Authors options} +% +% \begin{macro}{affiliation} +% \begin{macro}{email} +% \begin{macro}{minibio} +% \begin{macro}{photo} +% \begin{macro}{webpage} +% The keys options are created. +% \begin{macrocode} +\keys_define:nn { gzt/authors } +{ + affiliation .tl_gset:N = \g_@@_people_affiliation_tl, + email .tl_gset:N = \g_@@_people_email_tl, + minibio .tl_gset:N = \g_@@_people_minibio_tl, + photo .tl_gset:N = \g_@@_people_photo_tl, + webpage .tl_gset:N = \g_@@_people_webpage_tl, +% \end{macrocode} +% +% All these options, when used, must receive a value. +% \begin{macrocode} + affiliation .value_required:, + email .value_required:, + minibio .value_required:, + photo .value_required:, + webpage .value_required:, +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \subsection{Interviewee options} +% +% \begin{macro}{\g_@@_interviewee_minibio_tl} +% \begin{macro}{\g_@@_interviewee_photo_tl} +% \begin{macro}{\g_@@_interviewee_first_last_name_tl} +% Some variables which are involved in options are created. +% \begin{macrocode} +\tl_new:N \g_@@_interviewee_minibio_tl +\tl_new:N \g_@@_interviewee_photo_tl +\tl_new:N \g_@@_interviewee_first_last_name_tl +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{minibio} +% \begin{macro}{photo} +% The keys options are created. +% \begin{macrocode} +\keys_define:nn { gzt/interviewees } +{ + minibio .tl_gset:N = \g_@@_interviewee_minibio_tl, + photo .tl_gset:N = \g_@@_interviewee_photo_tl, +% \end{macrocode} +% +% All these options, when used, must receive a value. +% \begin{macrocode} + minibio .value_required:, + photo .value_required:, +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \subsection{Book review options} +% +% \begin{macro}{\g_@@_bookreview_frontcover_tl} +% \begin{macro}{\g_@@_bookreview_bibkey_tl} +% Some variables which are involved in books reviews are created. +% \begin{macrocode} +\tl_new:N \g_@@_bookreview_frontcover_tl +\tl_new:N \g_@@_bookreview_bibkey_tl +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{frontcover} +% \begin{macro}{bibkey} +% The keys options are created. +% \begin{macrocode} +\keys_define:nn { gzt/bookreview } +{ + frontcover .tl_gset:N = \g_@@_bookreview_frontcover_tl, + bibkey .tl_gset:N = \g_@@_bookreview_bibkey_tl, +% \end{macrocode} +% +% All these options, when used, must receive a value. +% \begin{macrocode} + frontcover .value_required:, + bibkey .value_required:, +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \subsection{Book advertisement options} +% +% \begin{macro}{\g_@@_bookadvertisement_frontcover_tl} +% \begin{macro}{\g_@@_bookadvertisement_bibkey_tl} +% Some variables which are involved in books advertisements are created. +% \begin{macrocode} +\tl_new:N \g_@@_bookadvertisement_frontcover_tl +\tl_new:N \g_@@_bookadvertisement_bibkey_tl +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{frontcover} +% \begin{macro}{bibkey} +% The keys options are created. +% \begin{macrocode} +\keys_define:nn { gzt/bookadvertisement } +{ + frontcover .tl_gset:N = \g_@@_bookadvertisement_frontcover_tl, + bibkey .tl_gset:N = \g_@@_bookadvertisement_bibkey_tl, +% \end{macrocode} +% +% All these options, when used, must receive a value. +% \begin{macrocode} + frontcover .value_required:, + bibkey .value_required:, +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \subsection{New theorem options} +% +% \begin{macrocode} +\tl_new:N \l_@@_newtheorem_style_tl +\keys_define:nn { gzt/newtheorem } +{ + frenchtitle .tl_set:N = \l_@@_newtheorem_frenchtitle_tl, + englishtitle .tl_set:N = \l_@@_newtheorem_englishtitle_tl, + frenchtitle .value_required:, + englishtitle .value_required:, + % + style .choice:, + style / theorem .code:n = {\tl_set:Nn \l_@@_newtheorem_style_tl {theorem}}, + style / definition .code:n = {\tl_set:Nn \l_@@_newtheorem_style_tl {definition}}, + style / proof .code:n = {\tl_set:Nn \l_@@_newtheorem_style_tl {proof}}, + style / unknown .code:n = + \msg_error:nnxxx { gzt } { unknown-choice } + { style } % Name of choice key + { theorem~or~definition~or~proof } % Valid choices + { \exp_not:n {#1} } % Invalid choice given +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \section{Colors} +% +% In this section, we define the colors that will be used by the class and by +% the source file of the logo. +% +% \begin{macrocode} +% +% \end{macrocode} +% +% \begin{macrocode} +%<*class|class-article|class-logo> +% \end{macrocode} +% +% \begin{macrocode} +\definecolorset{cmyk}{@@_}{_color}{ + generic_dark,1,.60,.10,0; % kind of blue (!) + light_generic_dark,1,.35,0,0 % kind of blue (!), light +} +\colorlet{@@_generic_light_color}{black!50} +\colorlet{@@_dark_generic_light_color}{black!60} +\colorlet{@@_description_label_light_color}{@@_dark_generic_light_color} +\colorlet{@@_cover_itemize_label_color}{@@_light_generic_dark_color} +\colorlet{@@_default_text_color}{black} +\colorlet{@@_rubric_head_text_color}{black!65} +\colorlet{@@_bibliography_minibios_acknowledgments_bg_color}{black!10} +\colorlet{@@_headrule_color}{@@_generic_light_color!65} +\colorlet{@@_circlerule_color}{@@_generic_dark_color!65} +\colorlet{@@_frontmatter_text_color}{black!75} +\colorlet{@@_people_color}{@@_generic_dark_color} +\colorlet{@@_arrayrule_color}{@@_generic_dark_color} +\colorlet{@@_acknowledgements_color}{@@_generic_dark_color} +\colorlet{@@_question_color}{@@_generic_dark_color} +\colorlet{@@_boxed_issue_number_bg_color}{@@_generic_dark_color} +\colorlet{@@_rule_in_toc_color}{@@_generic_dark_color} +\colorlet{@@_rubric_in_toc_color}{@@_generic_dark_color} +\colorlet{@@_article_in_toc_color}{@@_generic_light_color} +\colorlet{@@_rubric_title_color}{@@_generic_light_color} +\colorlet{@@_article_title_color}{@@_generic_dark_color} +\colorlet{@@_section_color}{@@_generic_dark_color} +\colorlet{@@_subsection_color}{@@_generic_dark_color!90} +\colorlet{@@_subsubsection_color}{@@_generic_dark_color!80} +\colorlet{@@_rubric_abstract_color}{@@_generic_dark_color} +\colorlet{@@_article_abstract_color}{@@_generic_light_color} +\colorlet{@@_dotfill_color}{@@_generic_dark_color} +\colorlet{@@_about_frontcover_title_color}{@@_generic_dark_color} +\colorlet{@@_reflected_text_color}{@@_generic_dark_color} +\colorlet{@@_inside_frontcover_frame_bg_color}{@@_generic_dark_color!8} +\colorlet{@@_inside_frontcover_frame_title_color}{@@_generic_dark_color} +\colorlet{@@_footer_bg_color}{black!10} +\colorlet{@@_float_title_color}{@@_generic_dark_color} +\colorlet{@@_float_title_bg_color}{@@_generic_dark_color!10} +\colorlet{@@_float_frame_color}{@@_generic_dark_color!20} +\colorlet{@@_chapter_color}{@@_generic_dark_color} +\colorlet{@@_smf_number_color}{@@_generic_dark_color} +\colorlet{@@_date_color}{@@_generic_light_color} +\colorlet{@@_table_head_color}{@@_generic_dark_color!25} +\colorlet{@@_book_review_frame_bg_color}{@@_generic_dark_color!8} +\colorlet{@@_book_advertisement_bg_color}{white} +\colorlet{@@_book_advertisement_frame_color}{@@_generic_dark_color} +% \end{macrocode} +% +% \begin{macrocode} +% +% \end{macrocode} +% +% \begin{macrocode} +%<*class|class-article> +% \end{macrocode} +% +% \section{Miscellaneous patches} +% +% We patch the \pkg{biblatex}'s "refsection" environment definition by adding +% a flag hat will be used to test wheter we are inside such an environment or +% not. +% \begin{macrocode} +\AtBeginEnvironment{multicols}{ + \bool_gset_true:N \g_@@_multicols_bool +} +\AtEndEnvironment{multicols}{ + \bool_gset_false:N \g_@@_multicols_bool +} +\AtBeginEnvironment{refsection}{ + \bool_gset_true:N \g_@@_refsection_bool +} +\AtEndEnvironment{refsection}{ + \bool_gset_false:N \g_@@_refsection_bool +} +% \end{macrocode} +% +% \section{Miscellaneous token lists} +% +% We define a token list that will display the font of footer at the right size. +% \begin{macrocode} +\tl_const:Nn \c_@@_footer_size_font_tl { + \fontsize{\c_@@_footer_height_font_dim}{\c_zero_dim}\selectfont% +} +% \end{macrocode} +% +% We define some token lists for the long and short forms of \textsc{smf}. +% \begin{macrocode} +\tl_new:N \l_@@_smf_short_string_tl +\tl_new:N \l_@@_smf_string_tl +\tl_set:Nn \l_@@_smf_short_string_tl { + % \cs_if_exist:cTF {texorpdfstring} + % { + \texorpdfstring{\c_@@_smf_short_string_tl}{\c_@@_smf_short_pdf_string_tl} + % }{% + % \c_@@_smf_short_pdf_string_tl + % }% +} +\tl_set:Nn \l_@@_smf_string_tl { + % \cs_if_exist:cTF {texorpdfstring} + % { + % \texorpdfstring{Soci\'et\'e~Math\'ematique~de~France}{\c_@@_smf_string_tl} + \c_@@_smf_string_tl + % }{% + % \acrlong*{smf} + % }% +} +% \end{macrocode} +% +% We define some token lists for the long and short forms of \gzt. +% \begin{macrocode} +\tl_new:N \l_@@_gzt_short_string_tl +\tl_new:N \l_@@_gzt_string_tl +\tl_set:Nn \l_@@_gzt_short_string_tl { + \cs_if_exist:cTF {texorpdfstring} + { + \texorpdfstring{\emph{\c_@@_journal_short_title_string_tl}}{\c_@@_journal_short_title_string_tl} + }{% + \emph{\c_@@_journal_short_title_string_tl} + }% +} +\tl_set:Nn \l_@@_gzt_string_tl { + \cs_if_exist:cTF {texorpdfstring} + { + \texorpdfstring{\emph{\c_@@_journal_title_string_tl}}{\c_@@_journal_title_string_tl} + }{% + \emph{\c_@@_journal_title_string_tl} + }% +} +% \end{macrocode} +% +% We fix some strings for the PDF's metadata . +% \begin{macrocode} +\tl_new:N \l_@@_pdftitle_string_tl +\tl_new:N \l_@@_pdfauthor_string_tl +\tl_set:Nn \l_@@_pdftile_string_tl { + \c_@@_journal_title_string_tl\space--\space{}N°\int_use:N\g_@@_issue_number_int +} +\tl_set:Nn \l_@@_pdfauthor_string_tl { + \l_@@_smf_string_tl +} +% \end{macrocode} +% +% \section{Database for the articles' authors} +% +% For this, and thanks to \Pkg{datatool}, we create a database of +% \enquote{authors} of articles. +% \begin{macrocode} +\DTLnewdb{_@@_authors} +% \end{macrocode} +% +% Then we create the internal "\_@@_authors" function that let us populate the +% "_@@_authors" database. Each people will be identified by some identifiers: +% \begin{itemize} +% \item firstname and lastname, that should be at the biblatex name format +% (\enquote{lastname, firstname}), +% \item affiliation, +% \item email, +% \item minibio, +% \item photo. +% \end{itemize} +% +% \begin{macrocode} +\cs_new_protected:Nn \_@@_authors:nnnnnn + { + \DTLnewrow{_@@_authors}% + \DTLnewdbentry{_@@_authors}{first-last-name}{#1}% + \DTLnewdbentry{_@@_authors}{affiliation}{#2}% + \DTLnewdbentry{_@@_authors}{email}{#3}% + \DTLnewdbentry{_@@_authors}{minibio}{#4}% + \DTLnewdbentry{_@@_authors}{photo}{#5}% + \DTLnewdbentry{_@@_authors}{webpage}{#6}% + } +% \end{macrocode} +% +% \begin{macrocode} +\cs_new_protected:Nn \_@@_email:n + { + \href{mailto:#1}{\nolinkurl{#1}}% + } +% \end{macrocode} +% +% We create a variant of this control sequence that passes the \emph{values} of the +% variables involved (see \url{http://tex.stackexchange.com/a/214284/18401}). +% \begin{macrocode} +\cs_generate_variant:Nn \_@@_authors:nnnnnn { nVVVVV } +% \end{macrocode} +% +% We create a function that displays the author(s) of an article with +% a peticular layout. +% \begin{macrocode} +\cs_new_protected:Nn \@@_display_author:nnnnn +{ + \begin{tabular}[t]{p{18mm}p{0.75\linewidth}} + \tl_if_empty:nF {#5} + {% + \begin{adjustbox}{valign=t} + \includegraphics[width=16mm]{#5} + \end{adjustbox}% + } + & + \begin{description}[leftmargin=1em,style=nextline,nosep] + \item[\textcolor{@@_people_color}{\DeclareNameAlias{labelname}{default}\citeauthor{#1}}] + \tl_if_empty:nF {#2} + {% + #2% + \par% + \smallskip% + } + \tl_if_empty:nF {#3} + {% + \href{mailto:#3}{\nolinkurl{#3}}% + \par% + \smallskip% + } + \tl_if_empty:nF {#4} + {% + #4 + } + \end{description} + \end{tabular} +} +% \end{macrocode} +% +% We create a variant of this control sequence that passes the \emph{values} of the +% variables involved (see \url{http://tex.stackexchange.com/a/214284/18401}). +% \begin{macrocode} +\cs_generate_variant:Nn \@@_display_author:nnnnn { VVVVV } +% \end{macrocode} +% +% \section{Database for the interviewees} +% +% For this, and thanks to \Pkg{datatool}, we create a database of +% \enquote{interviewees} of articles. +% \begin{macrocode} +\DTLnewdb{_@@_interviewees} +% \end{macrocode} +% +% Then we create the internal "\_@@_interviewees" function that let us populate the +% "_@@_interviewees" database. Each people will be identified by some identifiers: +% \begin{itemize} +% \item firstname and lastname, that should be at the biblatex name format +% (\enquote{lastname, firstname}), +% \item minibio, +% \item photo. +% \end{itemize} +% +% \begin{macrocode} +\cs_new_protected:Nn \_@@_interviewees:nnn + { + \DTLnewrow{_@@_interviewees}% + \DTLnewdbentry{_@@_interviewees}{first-last-name}{#1}% + \DTLnewdbentry{_@@_interviewees}{minibio}{#2}% + \DTLnewdbentry{_@@_interviewees}{photo}{#3}% + } +% \end{macrocode} +% +% We create a variant of this control sequence that passes the \emph{values} of the +% variables involved (see \url{http://tex.stackexchange.com/a/214284/18401}). +% \begin{macrocode} +\cs_generate_variant:Nn \_@@_interviewees:nnn { nVV } +% \end{macrocode} +% +% \section{Functions for specifiying the people involved in the journal} +% +% For this, and thanks to \Pkg{datatool}, we create a database of +% \enquote{people} involved in the journal. +% \begin{macrocode} +\DTLnewdb{people} +% \end{macrocode} +% +% Then we create the internal "\_@@_people" function that let us populate the +% "_@@_people" database. Each people will be identified by some identifiers: +% speciality (optional), firstname, lastname, affiliation, email, role. +% \begin{macrocode} +\tl_new:N \l_@@_crossref_tl +\cs_new_protected:Nn \_@@_people:nnnnnnnn +{ + \DTLnewrow{people}% + \DTLnewdbentry{people}{first-last-name}{#1}% + \DTLnewdbentry{people}{affiliation}{#2}% + \DTLnewdbentry{people}{email}{#3}% + \DTLnewdbentry{people}{minibio}{#4}% + \DTLnewdbentry{people}{photo}{#5}% + \DTLnewdbentry{people}{speciality}{#6}% + \DTLnewdbentry{people}{role}{#7}% + \DTLnewdbentry{people}{webpage}{#8}% +% \end{macrocode} +% +% \begin{macrocode} + \int_if_exist:cF {g_@@_#7_int} + { + \int_new:c {g_@@_#7_int} + } + \int_incr:c {g_@@_#7_int} + \tl_if_in:nnTF { #7 } { author } { + \tl_set:Nn \l_@@_crossref_tl {\c_@@_issue_bib_key_tl -art-\int_use:N \g_@@_articles_int} + } { + \tl_set:Nn \l_@@_crossref_tl {\c_@@_issue_bib_key_tl} + } + \tl_set:Nn \l_@@_people_first_last_name_tl {#1} + \iow_now:Nx \g_@@_bib_out_iow {% + @article{ + \c_@@_issue_bib_key_tl -#7- \int_use:c {g_@@_#7_int}, + \iow_newline: + author={\exp_not:V\l_@@_people_first_last_name_tl}, + \iow_newline: + options={skipbib}, + \iow_newline: + crossref = {\l_@@_crossref_tl} + \iow_newline: + } + \iow_newline: + }% +} +% \end{macrocode} +% +% We create a variant of this control sequence that passes the \emph{values} of +% the variables involved (see +% \url{http://tex.stackexchange.com/a/214284/18401}). +% \begin{macrocode} +\cs_generate_variant:Nn \_@@_people:nnnnnnnn { nVVVVnxV } +% \end{macrocode} +% +% \section{Functions for displaying \enquote{academic} signatures of articles +% without \enquote{real} author(s)} +% +% We create a function that displays an \enquote{academic} signature for articles +% without \enquote{real} author(s). +% \begin{macrocode} +\cs_new_protected:Nn \@@_display_academic_signature:n +{ + \bigskip + #1 +} +% \end{macrocode} +% +% \section{Functions for displaying people involved in the journal by role} +% +% We create the function that displays firstname and lastname of people involved +% in the journal by role. +% \begin{macrocode} +\cs_new_protected:Nn \@@_display_people_by_role:n +{ + \DTLforeach*[\DTLiseq{\l_@@_people_role_tl}{#1}]{people}{% + \l_@@_firstlastname=first-last-name% + ,\l_@@_people_affiliation_tl=affiliation% + ,\l_@@_people_email_tl=email% + ,\l_@@_people_minibio_tl=minibio% + ,\l_@@_people_photo_tl=photo% + ,\l_@@_people_speciality=speciality% + ,\l_@@_people_role_tl=role% + ,\l_@@_people_webpage_tl=webpage% + }{% + \tl_if_in:NnTF \l_@@_people_role_tl { editor } { + \item[ + \textcolor{@@_people_color}{% + \_@@_citeauthor_no_firstinits:n {\c_@@_issue_bib_key_tl -#1- \exp_not:V\DTLcurrentindex}% + } + \tl_if_in:NnF \l_@@_people_speciality { NoValue } { ~(\l_@@_people_speciality) } + ] + \l_@@_people_affiliation_tl% + \newline% + \href{mailto:\l_@@_people_email_tl}{\nolinkurl{\l_@@_people_email_tl}}% + \DTLiflastrow{% + }{% + \medskip% + } + }{ + \tl_if_in:NnTF \l_@@_people_role_tl { author } { + \footnotesize% + \noindent% + \tl_if_empty:NF \l_@@_people_photo_tl + {% + \begin{adjustbox}{valign=t,minipage=18mm} + \includegraphics[width=16mm]{\l_@@_people_photo_tl} + \end{adjustbox}% + } + \quad% + \begin{adjustbox}{valign=t,minipage=\linewidth-18mm-1em} + \begin{description}[leftmargin=1em,style=nextline] + \item[% + \textcolor{@@_people_color}{% + \_@@_citeauthor_no_firstinits:n {\c_@@_issue_bib_key_tl -#1- \exp_not:V\DTLcurrentindex}% + }% + ] + \tl_if_empty:NF \l_@@_people_affiliation_tl + {% + \mbox{}% + \par% + \vspace{-2ex}% + \l_@@_people_affiliation_tl% + } + \tl_if_empty:NF \l_@@_people_email_tl + {% + \par% + \href{mailto:\l_@@_people_email_tl}{\nolinkurl{\l_@@_people_email_tl}}% + } + \tl_if_empty:NF \l_@@_people_webpage_tl + {% + \par% + \url{\l_@@_people_webpage_tl}% + } + \tl_if_empty:NF \l_@@_people_minibio_tl + {% + \par% + \smallskip% + \l_@@_people_minibio_tl + } + \end{description} + \end{adjustbox} + \DTLiflastrow{% + }{ + \DTLpar% + \medskip% + } + }{ + \_@@_citeauthor_no_firstinits:n {\c_@@_issue_bib_key_tl -#1- + \exp_not:V\DTLcurrentindex}% + \tl_if_empty:NF \l_@@_people_email_tl + { + \space(\href{mailto:\l_@@_people_email_tl}{\nolinkurl{\l_@@_people_email_tl}}) + } + } + } + } +} +% \end{macrocode} +% +% \section{Function for displaying a reflected text} +% +% We create the function that displays a reflected text. +% \begin{macrocode} +\cs_new_protected:Nn \@@_reflected_text:n +{ + \begin{tikzpicture} + \tikzset{@@_reflect_node/.style={% + anchor=base,% + inner~sep=0,% + line~width=0,% + font=\Huge, + color=@@_reflected_text_color% + }% + }% + \node[@@_reflect_node]{#1}; + \node[scope~fading=south,opacity=0.2,yscale=-1,@@_reflect_node]{#1}; + \end{tikzpicture} +} +% \end{macrocode} +% +% \section{Displaying the front cover} +% +% We create the variable that displays the front cover. +% \begin{macrocode} +\tl_new:N \g_@@_display_frontcover_tl% +\tl_gset:Nn \g_@@_display_frontcover_tl {% + \bool_gset_true:N \g_@@_frontcover_bool + \pagenumbering{roman}% + \pagestyle{@@_frontcover_ps}% + \exp_after:wN\newgeometry\exp_after:wN{\c_@@_frontcover_geometry_tl}% + \noindent% + \bool_if:NTF {\g_@@_cover_bool} { + \hspace*{-\c_@@_layoutoffset_dim} + }{ + \hspace*{-2\c_@@_layoutoffset_dim} + } + \includegraphics[ + width=\c_@@_frontcover_image_width_dim + % min~width=\paperwidth + % width=\c_@@_layoutwidth_dim + 2\c_@@_layoutoffset_dim + % min~size={\paperwidth}{\c_@@_frontcover_image_height_dim+\c_@@_layoutoffset_dim}, + % max~size={\paperwidth}{\c_@@_frontcover_image_height_dim+\c_@@_layoutoffset_dim}, + % Clip*=0mm~40mm~211mm~160mm + % Clip*=0mm~{\height-\c_@@_frontcover_image_height_dim}~{\paperwidth}~{\height} + ]{\c_@@_issue_frontcover_image_path_string_tl} + \begin{tikzpicture}[remember~picture, overlay] + \coordinate (@@_circle_minitoc_center) at + ([xshift=\g_@@_minitoc_xshift_dim-\c_@@_layoutoffset_dim,yshift=\g_@@_minitoc_yshift_dim+\c_@@_layoutoffset_dim]current~page.south~east) ; + \node[name=@@_circle_minitoc,shape=circle,inner~sep=\c_zero_dim,fill=white,text~width=\g_@@_minitoc_circle_diameter_dim] at + (@@_circle_minitoc_center) {}; + \node[text~width=\g_@@_minitoc_textwidth_dim,anchor=north~west] at + ([xshift=\c_@@_minitoc_from_circle_xshift_dim,yshift=\c_@@_minitoc_from_circle_yshift_dim]$ (@@_circle_minitoc.north)!.5!(@@_circle_minitoc.west) $) + { + \large + \color{@@_dark_generic_light_color} + \bool_if:NF {\g_@@_frontcover_minitoc_tl} { + \g_@@_frontcover_minitoc_tl + } + }; + \bool_if:NT {\g_@@_minitoc_help_bool} { + \fill[red] (@@_circle_minitoc_center) circle (2pt); + } + \end{tikzpicture} + \bool_if:NT {\g_@@_cover_bool} { + \small + \begin{tikzpicture}[remember~picture, overlay] + \node[name=@@_binding_sw,inner~sep=\c_zero_dim,fill=white,rotate=90,anchor=west] at + ([xshift=0.45\c_@@_bindingoffset_dim,yshift=15mm+\c_@@_layoutoffset_dim]current~page.south~west) { + \No\int_use:N\g_@@_issue_number_int + }; + \node[name=@@_binding_w,inner~sep=\c_zero_dim,fill=white,rotate=90] at + ([xshift=0.45\c_@@_bindingoffset_dim]current~page.west) { + \MakeUppercase{\c_@@_journal_title_string_tl} + }; + \node[name=@@_binding_nw,inner~sep=\c_zero_dim,fill=white,rotate=90,anchor=east] at + ([xshift=0.45\c_@@_bindingoffset_dim,yshift=-15mm-\c_@@_layoutoffset_dim]current~page.north~west) { + \l_@@_uppercased_date_format\displaydate{@@_date} + }; + \end{tikzpicture} + } + \vfill% + \noindent% + \hspace*{10mm}% + \hspace*{-\c_@@_layoutoffset_dim} + \includegraphics[height=22.5mm]{\c_@@_smf_logo_file_string_tl}% + \vfill% + \clearpage% + \bool_gset_false:N \g_@@_frontcover_bool +} +% \end{macrocode} +% +% \section{Displaying the inside front cover} +% +% We create the variable that displays the inside front cover. +% \begin{macrocode} +\tl_new:N \g_@@_display_inside_frontcover_tl% +\tl_gset:Nn \g_@@_display_inside_frontcover_tl {% + \bool_gset_true:N \g_@@_inside_frontcover_bool% + \pagestyle{@@_inside_frontcover_ps}% + \exp_after:wN\newgeometry\exp_after:wN{\c_@@_inside_cover_geometry_tl}% + \small% + \setlength{\columnseprule}{2pt} + \renewcommand{\columnseprulecolor}{\color{white}} + \begin{_@@_inside_cover_tcb}[_@@_tcb_inside_frontcover_style] + \begin{multicols}{2} + \setlength{\columnsep}{1mm} + \begin{description}[leftmargin=1em] + \item[\c_@@_editors_in_chief_string_tl] \ + \begin{description}[leftmargin=1em,style=nextline] + \@@_display_people_by_role:n {editorinchief} + \end{description} + \bigskip + \par + \item[\c_@@_editors_string_tl] \ + \begin{description}[leftmargin=1em,style=nextline] + \@@_display_people_by_role:n {editor} + \end{description} + \end{description} + \end{multicols} + \setlength{\columnseprule}{1pt} + \tcblower + \begin{tabular}{@{}m{.75\c_@@_inside_cover_box_width_dim}@{}m{.2\c_@@_inside_cover_box_width_dim-2\tabcolsep}@{}} + \begin{description}[leftmargin=1em] + \item[\c_@@_editorial_secretariat_string_tl{}~:] \ \par% + \l_@@_journal_publisher_tl% + % \par% + \space\textendash{}\space% + \@@_display_people_by_role:n { secretary }\par + \l_@@_journal_address_tl\par% + \c_@@_phone_string_tl{}~:~\l_@@_journal_phone_tl{} \space\textendash{}\space + \c_@@_fax_string_tl{}~:~\l_@@_journal_fax_tl\par% + \href{mailto:\l_@@_journal_email_tl}{\nolinkurl{\l_@@_journal_email_tl}}% + % \newline% + \space\textendash{}\space + \url{\l_@@_journal_url_tl} + \item[\c_@@_publishingdirector_string_tl{}~:] + \@@_display_people_by_role:n { president } + \item[\c_@@_issn_string_tl{}~:] \l_@@_journal_issn_tl + \tl_if_empty:NF \l_@@_journal_isbn_tl + {% + \item[\c_@@_isbn_string_tl{}~:] \l_@@_journal_isbn_tl + } + \bool_if:NT {\g_@@_no_inside_backcover_bool} { + \item[\c_@@_latexclass_string_tl{}~:] + \@@_display_people_by_role:n { classdesigner } + \item[\c_@@_artistic_director_string_tl{}~:] + \@@_display_people_by_role:n { graphicdesigner } + \item[\c_@@_printer_string_tl{}~:] \g_@@_printer_text_tl + } + \end{description} + \bool_if:NT {\g_@@_no_inside_backcover_bool} { + \g_@@_font_designer_text_tl + } + & + \hspace*{\fill}% + \includegraphics[height=20mm]{\c_@@_smf_logo_file_string_tl}% + \end{tabular} + % \\ + % \c_@@_font_string_tl + \bigskip + \tl_if_empty:NF \g_@@_about_frontcover_tl + {% + \\ + \begin{adjustbox}{valign=t,minipage=.75\c_@@_inside_cover_box_width_dim+.2\c_@@_inside_cover_box_width_dim-2\tabcolsep} + \begin{description}[leftmargin=1em,font=\color{@@_about_frontcover_title_color}] + \item[\g_@@_about_frontcover_string_tl] \g_@@_about_frontcover_tl + \bool_if:NT {\g_@@_credit_frontcover_bool} { + \space(\c_@@_credit_frontcover_string_tl{}~:~% + \DTLforeach*[\DTLiseq{\l_@@_people_role_tl}{frontcovercredit}]{people}{% + \l_@@_firstlastname=first-last-name% + ,\l_@@_people_role_tl=role% + }{% + \_@@_citeauthor_no_firstinits:n + {\c_@@_issue_bib_key_tl -frontcovercredit- \exp_not:V\DTLcurrentindex}% + }% + ).% + } + \end{description} + \end{adjustbox} + } + \end{_@@_inside_cover_tcb} + \clearpage% + \pagenumbering{arabic}% + \bool_gset_false:N \g_@@_inside_frontcover_bool +} +% \end{macrocode} +% +% \section{Displaying the inside back cover} +% +% We create the variable that displays the inside back cover. +% \begin{macrocode} +\tl_new:N \g_@@_display_inside_backcover_tl% +\tl_gset:Nn \g_@@_display_inside_backcover_tl {% + \bool_gset_true:N \g_@@_inside_backcover_bool% + \pagestyle{@@_inside_backcover_ps}% + \exp_after:wN\newgeometry\exp_after:wN{\c_@@_inside_cover_geometry_tl}% + % \file_if_exist:nT { \c_@@_authors_instructions_file_tl } {% + \bool_if:NTF {\g_@@_no_inside_backcover_bool} { + \hbox{} + }{% + \small% + \begin{_@@_inside_cover_tcb}[_@@_tcb_inside_backcover_style] + % \small% + % Page~ + % \ifoddpage% + % im + % \fi + % paire.\par{} + \file_if_exist:nT { \c_@@_authors_instructions_file_tl } {% + % \begin{multicols}{2} + % \setlength{\columnsep}{1mm} + \file_input:n {\c_@@_authors_instructions_file_tl} + % \end{multicols} + % \setlength{\columnseprule}{1pt} + \tcblower + } + \begin{description}[leftmargin=1em] + \item[\c_@@_latexclass_string_tl{}~:] + \@@_display_people_by_role:n { classdesigner } + \item[\c_@@_artistic_director_string_tl{}~:] + \@@_display_people_by_role:n { graphicdesigner } + \item[\c_@@_printer_string_tl{}~:] \g_@@_printer_text_tl + \end{description} + \g_@@_font_designer_text_tl + \end{_@@_inside_cover_tcb} + } + % }{% + % \hbox{} + % } + \bool_gset_false:N \g_@@_inside_backcover_bool +} +% \end{macrocode} +% +% \section{Displaying the back cover} +% +% We create the variable that displays the back cover. +% \begin{macrocode} +\tl_new:N \g_@@_display_backcover_tl% +\tl_gset:Nn \g_@@_display_backcover_tl {% + \bool_gset_true:N \g_@@_backcover_bool + \pagestyle{@@_backcover_ps}% + \exp_after:wN\newgeometry\exp_after:wN{\c_@@_backcover_geometry_tl}% + \file_if_exist:nTF { \c_@@_backcover_page_file_string_tl } {% + \file_input:n {\c_@@_backcover_page_file_string_tl} + }{% + \hbox{} + } +} +% \end{macrocode} +% +% \section{User level commands} +% +% Here, we gather all the user level (public) commands. +% +% \subsection{Populating the people involved in the journal} +% +% \begin{macro}{\editorinchief} +% \begin{macro}{\editor} +% \begin{macro}{\president} +% \begin{macro}{\classdesigner} +% \begin{macro}{\fontdesigner} +% \begin{macro}{\classmaintainer} +% \begin{macro}{\graphicdesigner} +% We define some document-level commands that let the user specify +% respectively the editor(s) in chief, the editors, the (\textsc{smf}) +% president, the class designer and maintainer(s), and the graphic designer. +% +% For the editor(s) in chief, we increment the "\g_@@_editors_in_chief_int" +% counter in order to use singular or plural form of the corresponding string +% \enquote{Rédacteur(s) en chef}. +% \begin{macrocode} +\NewDocumentCommand \editorinchief {ommm} +{ + \int_incr:N \g_@@_editors_in_chief_int + \_@@_people:nnnnnnnn {#2}{#3}{#4}{}{}{#1}{editorinchief}{} +} +\NewDocumentCommand \editor {ommm} +{ + \_@@_people:nnnnnnnn {#2}{#3}{#4}{}{}{#1}{editor}{} +} + +\NewDocumentCommand \president {ommm} +{ + \_@@_people:nnnnnnnn {#2}{#3}{#4}{}{}{#1}{president}{} +} +\NewDocumentCommand \classdesigner {ommm} +{ + \_@@_people:nnnnnnnn {#2}{#3}{#4}{}{}{#1}{classdesigner}{} +} +\NewDocumentCommand \classmaintainer {ommm} +{ + \_@@_people:nnnnnnnn {#2}{#3}{#4}{}{}{#1}{classmaintainer}{} +} +\NewDocumentCommand \fontdesigner {ommm} +{ + \_@@_people:nnnnnnnn {#2}{#3}{#4}{}{}{#1}{fontdesigner}{} +} +\NewDocumentCommand \graphicdesigner {ommm} +{ + \_@@_people:nnnnnnnn {#2}{#3}{#4}{}{}{#1}{graphicdesigner}{} +} +\NewDocumentCommand \secretary {ommm} +{ + \_@@_people:nnnnnnnn {#2}{#3}{#4}{}{}{#1}{secretary}{} +} +% \NewDocumentCommand \frontcovercredit {om} +% { +% \_@@_people:nnnnnnnn {#2}{}{}{}{}{#1}{frontcovercredit}{} +% } +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \subsection{Issue setup} +% +% \begin{macro}{\issuesetup} +% We define the command that lets the user specify the issue setup. +% \begin{macrocode} +\NewDocumentCommand \issuesetup { m } { +% \end{macrocode} +% +% Its keys are set (only "number", "month" and "year" are relevant here). +% \begin{macrocode} + \keys_set:nn { gzt/issuesetup } { #1 } +% \end{macrocode} +% +% We fix some of the PDF's metadata . +% \begin{macrocode} +\hypersetup{pdftitle=\l_@@_pdftitle_string_tl} +\hypersetup{pdfauthor=\l_@@_pdfauthor_string_tl} +% \end{macrocode} +% +% We use here the fact that, if the "number", "month" or "year" options are not +% used, their corresponding "\g_@@_issue_number_int", "\g_@@_issue_month_int" or +% "\g_@@_issue_year_int" variables are equal to $0$ ($<1$). +% +% First, if "number" is not used, its "\g_@@_issue_number_int" variable is set +% to "\c_@@_first_issue_number_int"\footnote{The number of the first Gazette's +% issue using the present class.} and a warning is emitted. +% \begin{macrocode} + \int_compare:nNnT {\g_@@_issue_number_int}<{1} + { + \int_set:Nn \g_@@_issue_number_int { \c_@@_first_issue_number_int } + \msg_warning:nnn{gzt}{issue-number-needed}{number} + } +% \end{macrocode} +% +% If not specified as \refCom{issuesetup}'s key-value options, issue's month and +% year are computed from issue number (which defaults to +% "\c_@@_first_issue_month_int"). +% +% \begin{macro}{\c_@@_issue_age_in_months_int} +% First, if "month" or "year" option is not used (one of the previous +% variables is $0$ hence their product is $0$ ($<1$)), we compute the issue +% age in months, useful for both month and year computation. +% \begin{macrocode} + \int_compare:nNnT {\g_@@_issue_month_int * \g_@@_issue_year_int}<{1} + { + \int_new:N \g_@@_issue_age_in_months_int% + \int_gset:Nn \g_@@_issue_age_in_months_int + { + \c_@@_first_issue_month_int + + \c_@@_interval_in_months_int + * ( \int_use:N \g_@@_issue_number_int - \c_@@_first_issue_number_int ) + } + } +% \end{macrocode} +% \end{macro} +% +% If the "month" is not used, we replace "\g_@@_issue_month_int" ($=0$) by its +% computed value from the issue number. +% \begin{macrocode} + \int_compare:nNnT {\g_@@_issue_month_int}<{1} + { + \int_gset:Nn \g_@@_issue_month_int + { + \int_mod:nn { \g_@@_issue_age_in_months_int } { 12 } + } + } +% \end{macrocode} +% +% If the "year" is not used, we replace "\g_@@_issue_year_int" ($=0$) by its +% computed value from the issue number. +% \begin{macrocode} + \int_compare:nNnT {\g_@@_issue_year_int}<{1} + { + \int_new:N \g_@@_issue_age_in_years_int% + \int_gset:Nn \g_@@_issue_age_in_years_int + {% + \int_div_truncate:nn { \g_@@_issue_age_in_months_int } { 12 } + }% + \int_gset:Nn \g_@@_issue_year_int + { + \g_@@_issue_age_in_years_int + \c_@@_first_issue_year_int + } + }% +} +% \end{macrocode} +% \end{macro} +% +% \subsection{Journal setup} +% +% \begin{macro}{\journalsetup} +% We define the command that lets the user specify the +% journal setup. This setup is likely to be rarely changed. +% \begin{macrocode} +\NewDocumentCommand \journalsetup { m } { +% \end{macrocode} +% +% Its keys are set (only "publisher", "address", "phone", "fax", "email", "url" +% and "issn" are relevant here). +% \begin{macrocode} + \keys_set:nn { gzt/journalsetup } { #1 } +} +% \end{macrocode} +% \end{macro} +% +% \subsection{Date of the president's message} +% +% \begin{macro}{\date} +% We redefine the "\date" for the date of the president's message. It takes +% 3 arguments, each of them being a number: the day, the month and the year. +% \begin{macrocode} +\RenewDocumentCommand \date { mmm } { + \newdate{@@_president_message_date}{#1}{#2}{#3}% +} +% \end{macrocode} +% \end{macro} +% +% \subsection{Interviews} +% +% \begin{macro}{\interviewee} +% \begin{macrocode} +% \NewDocumentCommand\interviewer { o m } { +% } +\NewDocumentCommand \interviewee { om } { + \tl_if_empty:nT \g_@@_title_tl { + \tl_gset:Nn \g_@@_title_tl { + \c_@@_interview_title_string_tl + \DeclareNameAlias{labelname}{default}\citeauthor{\c_@@_issue_bib_key_tl -art-\int_use:N + \g_@@_articles_int} + } + } + \IfNoValueF {#1} + { + \keys_set:nn { gzt/authors } { #1 } + } + \tl_set:Nn \l_@@_people_first_last_name_tl {#2} + \_@@_people:nVVVVnxV + {#2} + {\g_@@_people_affiliation_tl} + {\g_@@_people_email_tl} + {\g_@@_people_minibio_tl} + {\g_@@_people_photo_tl} + {} + {interviewee-art-\int_use:N \g_@@_articles_int} + {} + \maketitle +} +% \end{macrocode} +% \end{macro} +% +% \subsection{Miscellaneous} +% +% \begin{macro}{\academicsignature} +% \begin{macrocode} +\NewDocumentCommand \academicsignature { m } { + \@@_display_academic_signature:n {#1} +} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +% +% \end{macrocode} +% +% \begin{macrocode} +%<*class> +% \end{macrocode} +% +% \section{Definition of the footer of the pages} +% +% \begin{macro}{@@_date} +% \begin{macro}{\l_@@_uppercased_date_format} +% Thanks to \Pkg{datetime}, we create the new date "@@_date" and define the +% date format to be used in the journal. As this date has to be displayed +% uppercased, we first define a function that displays uppercased months. +% \begin{macrocode} +\cs_new_protected:Nn \_@@_uppercased_monthname_french:n +{ + \@orgargctr=#1\relax + \ifcase\@orgargctr + \PackageError{datetime}{Invalid~month~number~\the\@orgargctr}{% + Month~numbers~should~go~from~1~(janvier)~to~12~(decembre)}% + \or JANVIER% + \or F\'EVRIER% + \or MARS% + \or AVRIL% + \or MAI% + \or JUIN% + \or JUILLET% + \or AO\^UT% + \or SEPTEMBRE% + \or OCTOBRE% + \or NOVEMBRE% + \or D\'ECEMBRE% + \else + \PackageError{datetime}{Invalid~month~number~\the\@orgargctr}{% + Month~numbers~should~go~from~1~(janvier)~to~12~(decembre)}% + \fi +} +\newdate{@@_date} + {1} + {\int_use:N \g_@@_issue_month_int} + {\int_use:N \g_@@_issue_year_int} +\newdateformat{l_@@_uppercased_date_format}{ + \_@@_uppercased_monthname_french:n {\THEMONTH}~\THEYEAR +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macrocode} +% +% \end{macrocode} +% +% \begin{macrocode} +%<*class|class-article> +% \end{macrocode} +% +% \section{(Re)Definition of document commands that identify the article} +% +% The names of the authors of the different articles will appear at several +% places, and notably in the table of contents where first and middle names have to +% be rendered as initials. Because automatically rendering initials is a complex task +% already provided by \Pkg{biblatex}, we will create a \file{.bib} file +% containing "article" entries for each article of the \gzt{} journal. +% +% This can be done only at the beginning of the document, in order to know the +% characteristics of the current issue. +% \begin{macrocode} +\AtBeginDocument{% +% \end{macrocode} +% +% We first create a token list containing the date of the current issue formated +% as required by \pkg{biblatex} (the month issue needs a leading zero if it is +% $<10$). +% \begin{macrocode} +\tl_new:N \g_@@_bib_issue_date_tl +\tl_gset:Nn \g_@@_bib_issue_date_tl { + \int_use:N \g_@@_issue_year_int- + \int_compare:nNnT {\g_@@_issue_month_int}<{10} + { + 0 + } + \int_use:N \g_@@_issue_month_int +} +% \end{macrocode} +% +% We will populate the bibiliographic file of the current issue with the current +% issue (as "@periodical" entry type). +% \begin{macrocode} + \iow_now:Nx \g_@@_bib_out_iow {% + @periodical{\c_@@_issue_bib_key_tl,\iow_newline: + issuetitle = {\exp_not:f\c_@@_journal_title_string_tl},\iow_newline: + date = {\g_@@_bib_issue_date_tl},\iow_newline: + number = \int_use:N \g_@@_issue_number_int,\iow_newline: + % issn = {\l_@@_journal_issn_tl},\iow_newline: + options = {skipbib}\iow_newline: + } + \iow_newline: + }% +} +% \end{macrocode} +% +% \begin{macro}{\title} +% \begin{macro}{\g_@@_title_tl} +% The command for article's title is redefined: the full \enquote{article's +% title} is store in "\g_@@_title_tl" for later use. +% \begin{macrocode} +\tl_new:N \g_@@_title_tl +\RenewDocumentCommand \title { o m } { +% \end{macrocode} +% We increment the "\g_@@_articles_int" integer that counts the number of +% articles in order to provide for each of them a unique bibliographic key. +% \begin{macrocode} + \int_gincr:N \g_@@_articles_int + \tl_gclear:N \g_@@_short_title_tl + \tl_gclear:N \g_@@_short_subtitle_tl + \bool_gset_false:N \g_@@_title_not_in_toc_bool + % + \IfNoValueF {#1} + { + \keys_set:nn { gzt/title } { #1 } + } + \tl_gset:Nn \g_@@_title_tl {#2} + \bool_if:nT \g_@@_tellme_rubric_bool + { + \tl_put_left:Nx \g_@@_title_tl {\c_@@_tellme_extra_title_string_tl} + } + \tl_if_empty:NT \g_@@_short_title_tl {% + \tl_gset_eq:NN \g_@@_short_title_tl \g_@@_title_tl + } +% \hypersetup{pdftitle=\g_@@_short_title_tl} +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\subtitle} +% \begin{macro}{\g_@@_subtitle_tl} +% The command for article's subtitle is redefined: the full and short +% \enquote{article's subtitles} are store in "\g_@@_subtitle_tl" and +% "\g_@@_short_subtitle_tl" for later use. +% \begin{macrocode} +\tl_new:N \g_@@_subtitle_tl +\NewDocumentCommand \subtitle { o m } { + \bool_gset_false:N \g_@@_subtitle_not_in_toc_bool + % + \IfNoValueF {#1} + { + \keys_set:nn { gzt/subtitle } { #1 } + } + \tl_gset:Nn \g_@@_subtitle_tl {#2} + \tl_if_empty:NT \g_@@_short_subtitle_tl {% + \tl_gset_eq:NN \g_@@_short_subtitle_tl \g_@@_subtitle_tl + } +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\author} +% The command for article's author (including its affiliation) is redefined. +% \begin{macrocode} +\RenewDocumentCommand \author { o m } { + \IfNoValueF {#1} + { + \keys_set:nn { gzt/authors } { #1 } + } + \tl_gset:Nn \l_@@_people_first_last_name_tl {#2} + \_@@_people:nVVVVnxV + {#2} + {\g_@@_people_affiliation_tl} + {\g_@@_people_email_tl} + {\g_@@_people_minibio_tl} + {\g_@@_people_photo_tl} + {} + {author-art-\int_use:N \g_@@_articles_int} + {\g_@@_people_webpage_tl} +} +% \end{macrocode} +% \end{macro} +% +% We create a stream in order to write a bibliographic file +% \begin{macrocode} +\iow_new:N \g_@@_bib_out_iow +\ior_new:N \g_@@_bib_out_ior +\tl_new:N \g_@@_bib_out_tl +\file_if_exist:nTF { \c_@@_issue_bib_path_string_tl } +{ + \ior_open:Nn \g_@@_bib_out_ior { \c_@@_issue_bib_path_string_tl } + \ior_str_map_inline:Nn \g_@@_bib_out_ior + { \tl_gput_right:Nn \g_@@_bib_out_tl {#1 \par } } + \ior_close:N \g_@@_bib_out_ior +}{ + \typeout{no file! rerun} +} +\iow_open:Nn \g_@@_bib_out_iow { \c_@@_issue_bib_path_string_tl } +% \end{macrocode} +% +% \begin{environment}{abstract} +% The environment for article's abstract or, more precisely, for its lead +% paragraph (\enquote{chapô} in French typography) is (re)defined. +% \begin{macrocode} +\tl_new:N \g_@@_abstract_body_tl +\NewDocumentEnvironment{abstract}{ } + {\CollectAbstract} + {\endCollectAbstract} +\NewEnviron{CollectAbstract} + { + \tl_gset_eq:NN \g_@@_abstract_body_tl \BODY + } +% \end{macrocode} +% \end{environment} +% +% \section{Definition of a private main matter switch} +% +% A private "\_@@_mainmatter_switch_tl" switch is defined in order to automatically insert +% some settings. +% \begin{macrocode} +\tl_new:N \g_@@_mainmatter_switch_tl% +\tl_gset:Nn \g_@@_mainmatter_switch_tl { + \bool_gset_false:N \g_@@_frontmatter_bool + \bool_gset_true:N \g_@@_mainmatter_bool + \SetParskip{\c_@@_mainmatter_parskip_skip} + \pagestyle{@@_mainmatter_ps}% +} +% \end{macrocode} +% +% \begin{macrocode} +\tl_new:N \g_@@_article_acknowledgements_tl% +\cs_new_protected:Nn \@@_article_acknowledgements:n +{ + \tl_gset:Nn \g_@@_article_acknowledgements_tl { #1 } +} +% \end{macrocode} +% +% \begin{macrocode} +% +% \end{macrocode} +% +% \begin{macrocode} +%<*class> +% \end{macrocode} +% +% \begin{macro}{\_@@_about_frontcover} +% We define the internal function than let us tell a few words about the front +% cover. +% \begin{macrocode} +\tl_new:N \g_@@_about_frontcover_tl% +\bool_new:N \g_@@_credit_frontcover_bool% +\tl_new:N \g_@@_about_frontcover_string_tl% +\cs_new_protected:Nn \_@@_about_frontcover:nnn +{ + \tl_if_empty:nF {#1}{% + \bool_gset_true:N \g_@@_credit_frontcover_bool + \_@@_people:nnnnnnnn {#1}{}{}{}{}{}{frontcovercredit}{} + } + \tl_gset:Nn \g_@@_about_frontcover_string_tl { #2 } + \tl_gset:Nn \g_@@_about_frontcover_tl { #3 } +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\_@@_rubric} +% We define the internal function than defines and sets the layouts of rubrics. +% \begin{macrocode} +% \tl_new:N \g_@@_rubric_title_tl% +% \tl_new:N \g_@@_rubric_pictofile_tl% +% \tl_new:N \g_@@_rubric_abstract_tl% +\tl_new:N \g_@@_rubric_abstract_box_tl% +\tl_new:N \l_@@_rubric_head_text_box_tl% +% +\cs_new_protected:Nn \_@@_rubric:nnn +{ + \newpage% + \tl_gclear:N \g_@@_rubric_abstract_tl + \tl_gset:Nn \g_@@_rubric_title_tl {#2} + \tl_gset:Nn \g_@@_rubric_pictofile_tl {#3} + \IfNoValueF {#1} + { + \keys_set:nn { gzt/rubric } { #1 } + } + \g_@@_mainmatter_switch_tl + \bool_gset_true:N \g_@@_mainmatter_bool + \clearpage +% \end{macrocode} +% +% We reinitialize the items counter in this new rubric. +% \begin{macrocode} + \bool_gset_true:N \g_@@_rubric_bool% + \bool_gset_false:N \g_@@_interview_rubric_bool + \bool_gset_false:N \g_@@_tellme_rubric_bool + \bool_gset_false:N \g_@@_rearviewmirror_rubric_bool + \bool_gset_false:N \g_@@_books_rubric_bool + \bool_gset_false:N \g_@@_previous_article_with_bibliography_or_minibio_bool + \bool_if:nF { \g_@@_for_authors_bool } { + \int_zero:N \g_@@_item_in_rubric_int + \phantomsection + \par + \addcontentsline{toc}{part}{\g_@@_rubric_title_tl} + \thispagestyle{@@_rubric_ps} + \exp_after:wN\newgeometry\exp_after:wN{\c_@@_main_geometry_tl}% + \tl_if_empty:NTF \g_@@_rubric_abstract_tl + { + \dim_set:Nn \l_@@_rubrics_head_text_width_dim { \c_@@_rubrics_head_text_no_abstract_width_dim } + } + { + \dim_set:Nn \l_@@_rubrics_head_text_width_dim { \c_@@_rubrics_head_text_abstract_width_dim } + \tl_gset:Nn \g_@@_rubric_abstract_box_tl { + \begin{adjustbox}{valign=t,minipage=\c_@@_rubrics_abstract_width_dim} + \raggedright% + \large% + \color{@@_rubric_abstract_color}% + \g_@@_rubric_abstract_tl% + \end{adjustbox} + } + } + \tl_set:Nn \l_@@_rubric_head_text_box_tl { + \begin{adjustbox}{valign=t,minipage=\l_@@_rubrics_head_text_width_dim} + \mbox{}% + \checkoddpage% + \ifoddpage% + \raggedleft% + \else + \raggedright% + \fi% + \color{@@_rubric_title_color}% + \fontsize{20}{20}\fontseries{bx}\fontshape{sc}\selectfont% + \g_@@_rubric_title_tl% + \end{adjustbox} + } + \noindent% + \mbox{}% + \checkoddpage% + \ifoddpage% + \hspace*{\c_@@_rubric_extra_xoffset_dim} + \tl_if_empty:NF \g_@@_rubric_abstract_tl + { + \g_@@_rubric_abstract_box_tl + } + \hfill% + \l_@@_rubric_head_text_box_tl + \hspace*{\c_@@_rubric_xoffset_dim}% + \else% + \hspace*{\c_@@_rubric_xoffset_dim}% + \l_@@_rubric_head_text_box_tl + \tl_if_empty:NF \g_@@_rubric_abstract_tl + { + \hfill% + \g_@@_rubric_abstract_box_tl + \hspace*{\c_@@_rubric_extra_xoffset_dim} + } + \fi% + } + \afterpage{% + \bool_gset_false:N \g_@@_rubric_bool% + } +% \end{macrocode} +% We suppress any spurious space in case of lack of "%" at the end of the +% public macros built on "\_@@_rubric": +% \begin{macrocode} + \ignorespaces +% \end{macrocode} +% End of the definition of the private command "\_@@_rubric": +% \begin{macrocode} +} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +% +% \end{macrocode} +% +% \begin{macrocode} +%<*class|class-article> +% \end{macrocode} +% +% We create two token lists that will contain: +% \begin{enumerate} +% \item the unique bibliographic key, +% \item the "author" value of the bibliographic entry, +% \end{enumerate} +% of the current article. +% \begin{macrocode} +\tl_new:N \g_@@_article_bib_key_tl% +\tl_new:N \l_@@_people_first_last_names_tl +\tl_new:N \g_@@_authors_first_last_names_tl% +\tl_new:N \l_@@_interviewees_first_last_names_tl% +\tl_new:N \g__@@_citeauthor_no_firstinits% +\tl_new:N \g_@@_citeauthor_tl% +\tl_new:N \g_@@_citeinterviewee_tl% +% +\cs_new_protected:Nn \_@@_citeauthor_no_firstinits:n {% + \tl_gset:Nn \g_@@_citeauthor_tl {% + \DeclareNameAlias{labelname}{default}% + \group_begin: + \togglefalse{blx@firstinits}% + \citeauthor{#1} + \group_end: + }% + \cs_if_exist:cTF {texorpdfstring} + { + \texorpdfstring{\g_@@_citeauthor_tl}{} + }{% + \g_@@_citeauthor_tl + }% +} +% \@ifpackageloaded{hyperref}{% +% \tl_gset:No \g_@@_citeauthor_tl {% +% \texorpdfstring{\citeauthor{\g_@@_article_bib_key_tl}}{} +% } +% }{% +% \tl_gset:Nn \g_@@_citeauthor_tl {% +% \citeauthor{\g_@@_article_bib_key_tl} +% }% +% }% +% \@ifpackageloaded{hyperref}{% +% \tl_gset:No \g_@@_citeinterviewee_tl {% +% \texorpdfstring{\citeauthor{\g_@@_article_bib_key_tl}}{} +% } +% }{% +% \tl_gset:Nn \g_@@_citeinterviewee_tl {% +% \citeinterviewee{\g_@@_article_bib_key_tl} +% }% +% }% +% \end{macrocode} +% +% In the following "\maketitle" document level macro, we will need to display +% the list the authors of the current article, not as a comma separated list +% (default "\citeauthor" \pkg{biblatex}'s macro behavior), but as an itemized +% list. For this, we create the "\_@@_itemized_citeauthor" internal function +% that will make use of "\citeauthor" where "\multinamedelim" and +% "\finalnamedelim" will be patched into "\item". As we don't want to globally +% alter the behavior of these macros, we first store their original meanings in +% some private control sequence: +% \begin{macrocode} +\cs_set_eq:NN \_@@_orig_multinamedelim \multinamedelim +\cs_set_eq:NN \_@@_orig_finalnamedelim \finalnamedelim +\cs_new_protected:Nn \_@@_itemized_citeauthor:n +{ + \cs_set_eq:NN \multinamedelim \item + \cs_set_eq:NN \finalnamedelim \multinamedelim + \AtNextCitekey{\defcounter{maxnames}{100}} + \begin{itemize}[label=\textbullet,noitemsep] + \item \citeauthor{#1} + \end{itemize} + \cs_set_eq:NN \multinamedelim \_@@_orig_multinamedelim + \cs_set_eq:NN \finalnamedelim \_@@_orig_finalnamedelim +} +% \end{macrocode} +% +% We declare two token list which will used in the next (re)definition. +% \begin{macrocode} +\tl_new:N \l_@@_bullet_and_rule_tl +\tl_new:N \l_@@_authors_box_tl +\tl_new:N \l_@@_abstract_box_tl +\tl_new:N \l_@@_bullet_and_rule_odd_tl +\tl_new:N \l_@@_bullet_and_rule_even_tl +\tl_new:N \l_@@_title_box_tl +% +% \end{macrocode} +% +% \begin{macro}{\_@@_maketitle} +% The command that \enquote{makes} the title is redefined. +% \begin{macrocode} +\RenewDocumentCommand \maketitle { s } { +% \end{macrocode} +% +% We force all the previous floats to be processed before a new article starts +% (this is already done in "bibliography_minibiographies_acknowledgments" +% environment but is repeated here if what is before provides floats but neither +% bibliography, \textsc{cv} nor acknowledgments). +% \begin{macrocode} + \FloatBarrier% +% \end{macrocode} +% +% We increment the item number in the current rubric. +% \begin{macrocode} +\int_gincr:N \g_@@_item_in_rubric_int +% \end{macrocode} +% +% We restore the original length for "\parindent" that has been set to zero in +% a possible previous \enquote{Interview} rubric. +% \begin{macrocode} +\dim_set_eq:NN \parindent \c_@@_original_parindent_dim +% \end{macrocode} +% +% We reset to zero some counters at each new article. +% \begin{macrocode} +\setcounter{section}{0} +\setcounter{figure}{0} +\setcounter{table}{0} +\setcounter{footnote}{0} +% +\setcounter{equation}{0} +% +\setcounter{theorem}{0} +% \setcounter{theoreme}{0} +\setcounter{corollary}{0} +% \setcounter{corollaire}{0} +\setcounter{conjecture}{0} +\setcounter{proposition}{0} +\setcounter{lemma}{0} +% \setcounter{lemme}{0} +\setcounter{axiom}{0} +% \setcounter{axiome}{0} +% +\setcounter{definition}{0} +\setcounter{remark}{0} +% \setcounter{remarque}{0} +\setcounter{example}{0} +% \setcounter{exemple}{0} +\setcounter{notation}{0} +% \end{macrocode} +% +% We store the unique bibliographic key of the current article in the +% "\g_@@_article_bib_key_tl" token list. +% \begin{macrocode} +\tl_gset:Nn \g_@@_article_bib_key_tl {% + \c_@@_issue_bib_key_tl + -art- + \int_use:N \g_@@_articles_int +} +% \end{macrocode} +% +% We will populate the bibiliographic file of the current issue with the current +% article (title, author(s) and a fixed part giving by the issue number, journal +% title and date). +% +% Then, we iterate through each row of the authors database in order to get +% a token list containing the (list of the) author(s) of the current article +% formated as required by \pkg{biblatex} (\enquote{Last1, First1 [and Last2, +% First2 [and ...]]}). +% \begin{macrocode} +\DTLforeach*[\DTLiseq{\l_@@_people_role_tl}{author-art-\int_use:N \g_@@_articles_int}]{people}{% + \l_@@_people_first_last_name_tl=first-last-name% + ,\l_@@_people_role_tl=role% +}{% + \tl_if_in:NnT \l_@@_people_role_tl { author } { + \DTLiffirstrow{% + \tl_put_right:Nx + \l_@@_people_first_last_names_tl + {\exp_not:V\l_@@_people_first_last_name_tl} + }{ + \tl_put_right:Nx + \l_@@_people_first_last_names_tl + {~and~\exp_not:V\l_@@_people_first_last_name_tl} + } + } +} +% \end{macrocode} +% +% We now populate the bibiliographic file. +% \begin{macrocode} +\tl_if_empty:NF \g_@@_title_tl {% + \iow_now:Nx \g_@@_bib_out_iow {% + @article{ + \g_@@_article_bib_key_tl, + \iow_newline: + title={\exp_not:V\g_@@_title_tl}, + \iow_newline: + \tl_if_empty:NF \g_@@_subtitle_tl {% + subtitle={\exp_not:V\g_@@_subtitle_tl}, + \iow_newline: + } + \tl_if_eq:NNF { \g_@@_short_title_tl } { \g_@@_title_tl } {% + shorttitle={\exp_not:V\g_@@_short_title_tl}, + \iow_newline: + }% + \tl_if_empty:NF \l_@@_people_first_last_names_tl + { + author={\exp_not:V\l_@@_people_first_last_names_tl}, + \iow_newline: + } + options={skipbib}, + \iow_newline: + crossref = {\c_@@_issue_bib_key_tl} + } + \iow_newline: + }% +}% +% +\tl_set:Nn \l_@@_bullet_and_rule_odd_tl +{% + \begin{tikzpicture}[remember~picture,overlay] + \draw[fill=@@_circlerule_color,draw=@@_circlerule_color,line~width=0.7mm] + ([xshift=-\c_@@_innermargin_dim-\c_@@_layoutoffset_dim]0,0 -| current~page.west) -- (\linewidth,0);% + \fill[@@_circlerule_color] (\linewidth-2\pgflinewidth,0) circle [radius=2.75mm]; + \end{tikzpicture}% +}% +\tl_set:Nn \l_@@_bullet_and_rule_even_tl +{% + \begin{tikzpicture}[remember~picture,overlay] + \draw[fill=@@_circlerule_color,draw=@@_circlerule_color,line~width=0.7mm] + (0,0 -| current~page.east) -- (0,0);% + \fill[@@_circlerule_color] (0,0) circle [radius=2.75mm]; + \end{tikzpicture}% +}% +\tl_set:Nn \l_@@_title_box_tl +{% + \noindent% + \hspace*{18mm}% + \begin{adjustbox}{minipage=\linewidth-18mm,valign=t} + \raggedright% + \color{@@_article_title_color}% + \fontsize{20}{25}\selectfont% + \bfseries% + \g_@@_title_tl + \tl_if_empty:NF \g_@@_subtitle_tl {% + \par% + \g_@@_subtitle_tl + } + \phantomsection + \par% + \bool_if:NTF {\g_@@_title_not_in_toc_bool} { + \bookmark[page=\thepage,level=chapter]{\g_@@_short_title_tl} + }{ + \addcontentsline{toc}{chapter}{% + \tl_if_empty:NTF \g_@@_short_title_tl {% + \g_@@_title_tl% + }{ + \g_@@_short_title_tl% + } + \bool_if:nF { \tl_if_empty_p:N \g_@@_short_subtitle_tl || \g_@@_interview_rubric_bool || \g_@@_rearviewmirror_rubric_bool } + { + \space\textendash{}\space\g_@@_short_subtitle_tl + } + \bool_if:nF { \tl_if_empty_p:N \l_@@_people_first_last_names_tl || \g_@@_interview_rubric_bool || \g_@@_rearviewmirror_rubric_bool } + { + \textsl{ + \cs_if_exist:cTF {texorpdfstring} + { + \texorpdfstring{% + \space\textendash{}\space\citeauthor{\g_@@_article_bib_key_tl} + }{} + }{% + \space\textendash{}\space\citeauthor{\g_@@_article_bib_key_tl} + }% + } + } + } +% \hypersetup{pdfauthor=\l_@@_people_first_last_names_tl} + } + \end{adjustbox} +} + \dim_gset:Nn \g_@@_abstract_box_width_dim {0.75\linewidth} + % \bool_if:nT { \tl_if_empty_p:N \l_@@_people_first_last_names_tl } + % { + % \dim_gset:Nn \g_@@_abstract_box_width_dim {\linewidth} + % } + \tl_set:Nn \l_@@_abstract_box_tl + {% + \begin{adjustbox}{minipage=\g_@@_abstract_box_width_dim,max~width=\g_@@_abstract_box_width_dim,valign=t} + \mbox{} + \tl_if_exist:NTF \g_@@_abstract_body_tl + {% + \raggedright% + \bfseries% + \color{@@_article_abstract_color}% + \g_@@_abstract_body_tl + } + {% + }% + \end{adjustbox} + }% + \tl_set:Nn \l_@@_authors_box_tl + {% + \begin{adjustbox}{minipage=0.3\linewidth,min~width=0.3\linewidth,valign=t} + \bool_if:nTF { \tl_if_empty_p:N \l_@@_people_first_last_names_tl || \g_@@_interview_rubric_bool } + { + \mbox{} + } + { + \color{@@_people_color}% + \_@@_itemized_citeauthor:n {\g_@@_article_bib_key_tl} + } + \end{adjustbox} + } + \bool_if:nTF { + \int_compare_p:nNn { \g_@@_item_in_rubric_int } = { 1 } + } + { + \mbox{} + \par + \bool_if:nTF { + \tl_if_empty_p:N \g_@@_rubric_abstract_tl + }{ + \xleaders\vbox { + \bigskip% + }% + \vskip\bigskipamount% + }{ + \xleaders\vbox { + \smallskip% + }% + \vskip\smallskipamount% + } + } + { + \bool_if:NTF {\g_@@_previous_article_with_bibliography_or_minibio_bool} + { + \xleaders\vbox { + \mbox{} + \par + \medskip% + }% + \vskip\medskipamount% + } + { + \xleaders\vbox { + \mbox{} + \par + \smallskip% + }% + \vskip\smallskipamount% + } + } + \bool_gset_false:N \g_@@_previous_article_with_bibliography_or_minibio_bool +% \end{macrocode} +% +% \begin{macrocode} +% +% \end{macrocode} +% +% \begin{macrocode} +%<*class> +% \end{macrocode} +% +% Here, we put the \pkg{TikZ}'s picture of the \enquote{bullet and rule} +% (contained in the "\l_@@_bullet_and_rule_tl" token list) in a "\vbox" that +% follows a "\cleaders" that makes the whole vanishes at pages boundaries +% (cf. \url{http://tex.stackexchange.com/a/31615/18401}). +% \begin{macrocode} + \bool_if:nF { \g_@@_for_authors_bool } { + % \xleaders\vbox { + % \bigskip% + % }% + % \vskip\bigskipamount% + \noindent% + \checkoddpage% + \ifoddpage% + \l_@@_bullet_and_rule_odd_tl + \else% + \l_@@_bullet_and_rule_even_tl + \fi% + \bigskip% + }% + \par + \nopagebreak[4] +% \end{macrocode} +% +% \begin{macrocode} +% +% \end{macrocode} +% +% \begin{macrocode} +%<*class|class-article> +% \end{macrocode} +% +% \begin{macrocode} + \l_@@_title_box_tl + \normalsize% + \nopagebreak[3] + \bool_if:nF { \tl_if_empty_p:N \g_@@_abstract_body_tl && (\tl_if_empty_p:N \l_@@_people_first_last_names_tl || \g_@@_interview_rubric_bool || \g_@@_rearviewmirror_rubric_bool)} + {% + \par% + \bigskip + \bigskip + \large% + \mbox{}% + \checkoddpage% + \ifoddpage% + \l_@@_abstract_box_tl + \hspace*{11mm}% + \l_@@_authors_box_tl + \else% + \hspace*{-.85\c_@@_outermargin_dim}% + \l_@@_authors_box_tl + \hspace*{11mm}% + \l_@@_abstract_box_tl + \fi% + } + \tl_gclear:N \g_@@_title_tl + \tl_gclear:N \g_@@_subtitle_tl + \tl_gclear:N \g_@@_abstract_body_tl + \normalsize% + \bigskip + \tl_if_empty:NF \g_@@_abstract_body_tl + % {% + % \tl_if_empty:NF \l_@@_people_first_last_names_tl + % {% + % \bigskip + % } + % } + { + \bigskip + } + \bool_if:nT \g_@@_interview_rubric_bool + { +% \end{macrocode} +% +% We set "\parindent" to zero in \enquote{Interview} rubric. +% \begin{macrocode} + \dim_zero:N \parindent + \tl_if_empty:NF \g_@@_people_photo_tl + { + \begin{adjustbox}{center} + \includegraphics[height=50mm]{\g_@@_people_photo_tl} + \end{adjustbox} + } + } + \color{@@_default_text_color}% + \IfBooleanF {#1}% + { + \bool_if:nF { \g_@@_multicols_bool || \g_@@_rearviewmirror_rubric_bool} + { + \begin{multicols}{2}% + } + } +} +% \end{macrocode} +% \end{macro} +% +% We load the configuration file, which has to be located in the \TeX{} search +% path: at least one such a file is provided by the class and located in the +% same directory as the class file. This file is loaded at the end of preamble +% instead of begin of the document in order some settings needed in preamble are +% taken in account. +% \begin{macrocode} +\AtEndPreamble{\file_input:n {\c_@@_configuration_file_string_tl}} +% \end{macrocode} +% +% We make use of \pkg{etoc} to perform the special layout of the table of +% contents. For convenience, it is included in a (long)table (from +% \Pkg{longtable}) and the following code mainly comes from the \pkg{etoc}'s +% documentation. +% \begin{macrocode} +\@ifpackageloaded{etoc}{% + \newif\ifShowPartPageInToc % used before \part{Livres} +% cf etoc manual section Typesetting the TOC as a table +% we use "\unexpanded" rather than more cumbersome but Knuthian "\toks" registers + \newtoks\toctabletok + \newcommand*\appendtotok[2]{% #1=toks variable, #2=macro, expands only once #2 + #1\expandafter\expandafter\expandafter {\expandafter\the\expandafter #1#2}} + \newcommand*\PreparePart{% + \edef\toctablepiece {% + \ExceptFirstPart {\noexpand\\[-1.5mm]}% + \unexpanded{% + \color{@@_rubric_in_toc_color}\scshape\fontseries{bx}\selectfont% + }% + \unexpanded\expandafter{\etocthelinkedname}& + % \ifShowPartPageInToc + \unexpanded{\bfseries\color{@@_rubric_in_toc_color}}% + \unexpanded\expandafter{\etocthelinkedpage}% + % \fi + \noexpand\\}% + \gdef\ExceptFirstPart ##1{##1}% + } + \newcommand*\PrepareChapter{% + \edef\toctablepiece {% + \unexpanded{\color{@@_article_in_toc_color}\small}% + \unexpanded\expandafter{\etocthelinkedname}& + \unexpanded{\color{@@_article_in_toc_color}\small} + \unexpanded\expandafter{\etocthelinkedpage}% + \noexpand\\[1mm]}% + } + \etocsetstyle{part}{}{} + {\PreparePart \appendtotok\toctabletok\toctablepiece} + {} + \etocsetstyle{chapter}{}{} + {\PrepareChapter \appendtotok\toctabletok\toctablepiece} + {} + \etocsettocstyle + {% + \setlength\LTleft{\c_zero_dim} + \setlength\LTright{\c_zero_dim} + \gdef\ExceptFirstPart ##1{}% + \toctabletok {%\hypersetup{hidelinks}% + \begin{longtable}{@{\extracolsep{\fill}}p{115mm}@{\quad}!{\color{@@_rule_in_toc_color}\vrule width 0.2mm}@{}r@{}}}% + } + {\global\toctabletok\expandafter{% + \the\toctabletok\end{longtable} + } + } + }{} +% \end{macrocode} +% +% \section{Special tools common to the editorial, the table of contents and the +% president message} +% +% We create an internal function that displays the box containing the issue +% number, with possible image on its left, followed below by an arbitrary text +% with a reflection effect. +% \begin{macrocode} +\tl_new:N \g_@@_boxed_issue_number_tl% +\tl_gset:Nn \g_@@_boxed_issue_number_tl {% + \tcbox{\Large\No\g_@@_issue_number_int} +} +\cs_new_protected:Nn \@@_boxed_issue_number:nn +{ + \noindent% + \raisebox{\baselineskip}{% + \tl_if_empty:nF {#1} {% + \makebox[\c_zero_dim][r]{% + % \hspace*{\l_@@_thumbnail_width_dim}% + \begin{adjustbox}{valign=t} + \includegraphics[width=\l_@@_thumbnail_width_dim]{#1}% + \end{adjustbox}% + }% + }% + \begin{adjustbox}{valign=t} + \begin{tcolorbox}[% + enhanced,% + title=\No\int_use:N \g_@@_issue_number_int,% + fonttitle=\Large,% + colback=white,% + sharp~corners=all,% + height=33mm,% + boxrule=\c_zero_dim,% + % frame~hidden,% + attach~boxed~title~to~top~left,% + tikznode~boxed~title={minimum~width=\c_@@_boxed_issue_number_width_dim},% + boxed~title~style={% + size=minimal,% + height=\c_@@_boxed_issue_number_height_dim,% + center~upper,% + before={},% + colback=@@_boxed_issue_number_bg_color,% + sharp~corners=all,% + frame~hidden,% + valign=center,% + }% + ] + \@@_reflected_text:n { #2 }% + \end{tcolorbox} + \end{adjustbox}% + }% + \par% +} +% \end{macrocode} +% +% \begin{macrocode} +\cs_new_protected:Nn \_@@_before_frontmatter_stuff: +{ + \bool_gset_true:N \g_@@_frontmatter_bool% + \pagestyle{@@_frontmatter_ps}% + \exp_after:wN\newgeometry\exp_after:wN{\c_@@_front_matter_geometry_tl}% +} +\cs_new_protected:Nn \_@@_after_frontmatter_stuff: +{ + \color{@@_default_text_color} + \normalsize% + \clearpage% + \bool_gset_false:N \g_@@_frontmatter_bool% +} +% \end{macrocode} +% +% \begin{macrocode} +\cs_new_protected:Nn \_@@_before_editorial_presidentmessage:nn +{ + \_@@_before_frontmatter_stuff: {} + \@@_boxed_issue_number:nn {#1}{#2} + \color{@@_frontmatter_text_color}% + \fontsize{11}{13.6}\selectfont + \RaggedRight +} +\cs_new_protected:Nn \_@@_after_editorial_presidentmessage: +{ + \justifying + \bigskip + \par +} +% \end{macrocode} +% +% \section{Displaying the editorial} +% +% We create an internal function that displays the editorial. +% \begin{macrocode} +\cs_new_protected:Nn \_@@_before_display_editorial: +{ + \_@@_before_editorial_presidentmessage:nn {}{\c_@@_editorial_string_tl} +} +\cs_new_protected:Nn \_@@_after_display_editorial: +{ + \_@@_after_editorial_presidentmessage: {} + \hspace*{\fill}% + \DTLforeach*[\DTLiseq{\l_@@_people_role_tl}{editorinchief}]{people}{% + \l_@@_firstlastname=first-last-name% + ,\l_@@_people_role_tl=role% + }{% + \_@@_citeauthor_no_firstinits:n {\c_@@_issue_bib_key_tl -editorinchief- \exp_not:V\DTLcurrentindex}% + } + % + \_@@_after_frontmatter_stuff: {} +} +\cs_new_protected:Nn \_@@_display_editorial: +{ + \_@@_before_display_editorial: {} + \file_input:n {\c_@@_editorial_file_string_tl} + \_@@_after_display_editorial: {} +} +\NewDocumentCommand \editorial {} +{ + \bool_if:NF {\g_@@_for_authors_bool} { + \_@@_display_editorial: {} + } +} +% \end{macrocode} +% +% \section{Displaying the table of contents} +% +% We create an internal function that displays the table of contents. +% \begin{macrocode} +\cs_new_protected:Nn \_@@_display_toc: +{ + \_@@_before_frontmatter_stuff: {} + \@@_boxed_issue_number:nn {\c_@@_issue_frontcover_image_path_string_tl}{\c_@@_toc_string_tl} + \phantomsection + \hypertarget{@@_toc}{} + \bookmark[dest=@@_toc,level=part]{\c_@@_toc_string_tl} + \etocsettocdepth.toc{chapter}% + \tableofcontents + \the\toctabletok + \_@@_after_frontmatter_stuff: {} +} +\NewDocumentCommand \gzttableofcontents {} +{ + \bool_if:NF {\g_@@_for_authors_bool} { + \_@@_display_toc: {} + } +} +% \end{macrocode} +% +% \section{Displaying the mini table of contents of the front cover} +% +% We create an internal function that displays the president's message. +% \begin{macrocode} +\tl_new:N \g_@@_frontcover_minitoc_tl% +\tl_new:N \l_@@_minitoc_label_tl% +\cs_new_protected:Nn \_@@_frontcover_minitoc:n +{ + \tl_gset:Nn \g_@@_frontcover_minitoc_tl {#1} +} +\NewDocumentCommand \minitoc { O{} m } +{ + \keys_set:nn { gzt/minitoc } { #1 } + \_@@_frontcover_minitoc:n {#2} +} +% +\newlist{@@_minitoc_list}{itemize}{1} +\setlist[@@_minitoc_list]{itemsep=2ex,label=\textcolor{@@_cover_itemize_label_color}\textbullet} +% +\NewDocumentEnvironment{minitoclist}{ } +{% + \cs_set_eq:NN \_@@_orig_item \item + \RenewDocumentCommand \item { s O{} }{% + \tl_set:Nn \l_@@_minitoc_label_tl {##2} + \_@@_orig_item\textbf{##2} + \IfBooleanT {##1} + { + \c_@@_minitoc_rubric_title_separator_string_tl + } + } + \begin{@@_minitoc_list} +}{ + \end{@@_minitoc_list} + \cs_set_eq:NN \item \_@@_orig_item +} +% \end{macrocode} +% +% \section{Displaying the president's message} +% +% We create an internal function that displays the president's message. +% \begin{macrocode} +\cs_new_protected:Nn \_@@_before_display_presidentmessage: +{ + \_@@_before_editorial_presidentmessage:nn {\c_@@_smf_logo_file_string_tl}{\c_@@_president_message_string_tl} + \phantomsection + \par% + \addcontentsline{toc}{part}{\l_@@_smf_short_string_tl}% + \addcontentsline{toc}{chapter}{\c_@@_president_message_string_tl}% +} +\cs_new_protected:Nn \_@@_after_display_presidentmessage: +{ + \_@@_after_editorial_presidentmessage: {} + % + \hspace*{\fill}% + \c_@@_president_message_date_string_tl% + \displaydate{@@_president_message_date}% + \\[1.5mm] + \hspace*{\fill}% + \@@_display_people_by_role:n { president }% + ,\space + \c_@@_president_signatory_string_tl + % + \_@@_after_frontmatter_stuff: {} +} +\cs_new_protected:Nn \_@@_display_president_message: +{ + \_@@_before_display_presidentmessage: {} + \file_input:n {\c_@@_president_message_file_string_tl} + \_@@_after_display_presidentmessage: {} +} +\NewDocumentCommand \presidentmessage {} +{ + \bool_if:NF {\g_@@_for_authors_bool} { + \_@@_display_president_message: {} + } +} +% \end{macrocode} +% +% \section{Chapter, sections, etc. customization} +% +% Thanks to \Pkg{titlesec}, the chapter, section, subsection and subsubsection +% formats are customized. +% +% \begin{description} +% \item[Chapter] has a \enquote{block} shape, is typeset in huge and bold face, +% without any number, with a null distance between the (missing) number and +% the title, with a title in enforced lower case but small caps. +% \begin{macrocode} +\titleformat{\chapter}% +[block] +{\Huge\bfseries} +{} +{\c_zero_dim} +{\scshape}% +% \end{macrocode} +% +% \item[Section] has a \enquote{frame} shape, is typeset in bold face, left +% justified and in color, with number typeset in huge, with a negative +% distance between the number and the title, with a title in 12.5pt. +% \begin{macrocode} +\titleformat{\section} +{% + \raggedright% + \bfseries% + \color{@@_section_color} +} +{\fontsize{20}{15}\selectfont\thesection.\enspace} +{-3pt} +{\fontsize{13}{15}\selectfont} +% \end{macrocode} +% +% \item[Subsection:] +% \begin{macrocode} +\titleformat{\subsection} +% [frame] +{% + \fontsize{11}{16}\selectfont% + \bfseries% + \color{@@_subsection_color}% +} +{\thesubsection\ \textendash{}\ } +{\c_zero_dim} +{} +% \end{macrocode} +% +% \item[Subsubsection:] +% \begin{macrocode} +\titleformat{\subsubsection} +% [frame] +{% + \fontsize{11}{16}\selectfont% + \bfseries% + \color{@@_subsubsection_color}% +} +{} +{\c_zero_dim} +{} +% \end{macrocode} +% \end{description} +% +% \section{First pages} +% +% At begin of the document, we automatically : +% \begin{itemize} +% \item set the graphic path, +% \item set the page grid if the corresponding option has been passed, +% \item display of the front cover and the inside front cover. +% \end{itemize} +% +% \begin{macrocode} +\AtBeginDocument{% + % \graphicspath{{\c_@@_issue_images_path_string_tl//}} + % \glsdisablehyper + \g_@@_mainmatter_switch_tl + % \bool_gset_false:N \g_@@_frontmatter_bool + % \bool_gset_true:N \g_@@_mainmatter_bool + % \SetParskip{\c_@@_mainmatter_parskip_skip} + % \pagestyle{@@_mainmatter_ps}% + \exp_after:wN\newgeometry\exp_after:wN{\c_@@_main_geometry_tl}% +} +% \end{macrocode} +% +% \begin{macrocode} +% +% \end{macrocode} +% +% \begin{macrocode} +%<*class> +% \end{macrocode} +% +% \begin{macrocode} +\AtBeginDocument{% + \dim_if_exist:NTF \g_@@_pagegrid_dim {% + \pagegridsetup{% + enable,% + step=\g_@@_pagegrid_dim% + } + }{% + \pagegridsetup{% + disable% + } + } + \bool_if:NTF {\g_@@_for_authors_bool} { + \thispagestyle{empty} + \includegraphics{gzt-logo} + \hfill + \includegraphics[height=22.5mm]{\c_@@_smf_logo_file_string_tl}% + \par + \vfill + \begin{adjustbox}{valign=c,minipage=\linewidth} + \Large% + \c_@@_preliminary_version_string_tl% + \end{adjustbox} + \vfill + \newpage + }{ + \bool_if:NF {\g_@@_inside_pages_bool} { + \g_@@_display_frontcover_tl + \g_@@_display_inside_frontcover_tl + } + \bool_if:NT {\g_@@_cover_bool} { + % \end{document} + } + } +} +% \end{macrocode} +% +% \begin{macrocode} +% +% \end{macrocode} +% +% \begin{macrocode} +%<*class|class-article> +% \end{macrocode} +% +% \section{Page styles} +% +% Thanks to \Pkg{titleps} loaded by \pkg{titlesec}'s "pagestyles" option, we define +% some page styles. +% +% \subsection{Common tools} +% +% Here, we define some tools shared by sevral pages styles. +% +% The background footer: +% \begin{macrocode} +\tl_new:N \g_@@_background_footer_tl +\tl_gset:Nn \g_@@_background_footer_tl {% + \draw [@@_footer_bg_color,fill] + (current~page.south~west) + rectangle ([yshift=\c_@@_footer_background_height_dim]current~page.south~east) + ; +} +% \end{macrocode} +% +% The frontmatter head text: +% \begin{macrocode} +\tl_new:N \l_@@_frontmatter_head_text_tl +\tl_set:Nn \l_@@_frontmatter_head_text_tl {% + \includegraphics{gzt-logo} +} +% \end{macrocode} +% +% The rubric head text: +% \begin{macrocode} +% \tl_new:N \l_@@_rubric_head_text_tl +% \tl_set:Nn \l_@@_rubric_head_text_tl {% +% \color{@@_rubric_head_text_color}% +% \fontsize{20}{20}\fontseries{bx}\fontshape{sc}\selectfont% +% \g_@@_rubric_title_tl% +% } +% \end{macrocode} +% +% The frontmatter page head rule: +% \begin{macrocode} +\tl_new:N \g_@@_frontmatter_page_headrule_tl +\tl_gset:Nn \g_@@_frontmatter_page_headrule_tl {% + \draw [@@_headrule_color,line~width=\c_@@_header_line_width_dim] + ([yshift=\c_@@_header_line_yshift_dim]current~page~header~area.south~west -| current~page.north~west) + -- + ([yshift=\c_@@_header_line_yshift_dim]current~page~header~area.south~east -| current~page.north~east) + ;% +} +% \end{macrocode} +% +% The frontmatter page head text: +% \begin{macrocode} +\tl_new:N \g_@@_frontmatter_headtext_tl +\tl_gset:Nn \g_@@_frontmatter_headtext_tl {% + \mbox{}% + \checkoddpage% + \ifoddpage% + \node[ + anchor=north~east,% + align=center,% + fill=white,% + inner~xsep=3.5mm,% + outer~sep=\c_zero_dim,% + ] at + ([% + xshift=\c_@@_frontmatter_headtext_o_xshift_dim,% + yshift=\c_@@_frontmatter_headtext_yshift_dim% + ]current~page.north~east) {% + \l_@@_frontmatter_head_text_tl + }% + ; + \else% + \node[% + anchor=north~west,% + align=center,% + fill=white,% + inner~xsep=3.5mm,% + outer~sep=\c_zero_dim,% + ] at + ([% + xshift=\c_@@_frontmatter_headtext_e_xshift_dim,% + yshift=\c_@@_frontmatter_headtext_yshift_dim% + ]current~page.north~west) {% + \l_@@_frontmatter_head_text_tl + }% + ; + \fi% +} +% \end{macrocode} +% +% The mainmatter odd page head rule: +% \begin{macrocode} +\tl_new:N \g_@@_mainmatter_oddpage_headrule_tl +\tl_gset:Nn \g_@@_mainmatter_oddpage_headrule_tl {% + \draw [@@_headrule_color,line~width=\c_@@_header_line_width_dim] + ([yshift=\c_@@_header_line_yshift_dim]current~page~header~area.south~east) + -- + ([yshift=\c_@@_header_line_yshift_dim]current~page~header~area.south~west -| current~page.north~west) + ; +} +% \end{macrocode} +% +% The mainmatter even page head rule: +% \begin{macrocode} +\tl_new:N \g_@@_mainmatter_evenpage_headrule_tl +\tl_gset:Nn \g_@@_mainmatter_evenpage_headrule_tl {% + \draw [@@_headrule_color,line~width=\c_@@_header_line_width_dim] + ([yshift=\c_@@_header_line_yshift_dim]current~page~header~area.south~west) + -- + ([yshift=\c_@@_header_line_yshift_dim]current~page~header~area.south~east -| current~page.north~east) + ; +} +% \end{macrocode} +% +% We momentarily switch to a \enquote{normal} category code régime in which the +% colon (:) is treated as \enquote{letter}, which is necessary where (here +% \pkg{TikZ} and \pkg{tcolorbox}) code makes use of colon. +% \begin{macrocode} +\ExplSyntaxOff +\tcbuselibrary{breakable,skins,hooks,xparse,theorems,listingsutf8} +\usetikzlibrary{babel,fadings,positioning,calc} +% \end{macrocode} +% +% We create a \pkg{tcolorbox}' skin, in order to apply (drop lifted) shadow only +% to the last part of a breakable "tcolorbox" (see +% \url{http://tex.stackexchange.com/a/223625/18401}): +% The following is a temporary hack in order \pkg{tcolorbox}'s separator +% sign for "blend into=..." floats is a dash. +% \begin{macrocode} +\tcbset{% + new/blend into/tables/.style={% + use counter*=table,% + list inside=lot, + /tcb/code={\appto\tcb@new@colopt{,before title={\fnum@table\space\textendash{}\space}}}},% + new/blend into/figures/.style={% + use counter*=figure,% + list inside=lof, + /tcb/code={\appto\tcb@new@colopt{,before title={\fnum@figure\space\textendash{}\space}}}},% +} +% \end{macrocode} +% +% \begin{macrocode} +% +% \end{macrocode} +% +% \begin{macrocode} +%<*class> +% \end{macrocode} +% +% \begin{macrocode} +\newcommand\gzt@arcthroughthreepoints[4][]% +{ + % \NoAutoSpacing% + \coordinate (middle1) at ($(#2)!.5!(#3)$); + \coordinate (middle2) at ($(#3)!.5!(#4)$); + \coordinate (aux1) at ($(middle1)!1!90:(#3)$); + \coordinate (aux2) at ($(middle2)!1!90:(#4)$); + \coordinate (center) at ($(intersection of middle1--aux1 and middle2--aux2)$); + \filldraw[fill=white,draw=@@_headrule_color,line width=0.25mm,#1] + let \p1=($(#2)-(center)$), + \p2=($(#4)-(center)$), + \n0={veclen(\p1)}, % Radius + \n1={atan2(\y1,\x1)}, % angles + \n2={atan2(\y2,\x2)}, + \n3={\n2>\n1?\n2:\n2+360} + in (#2) arc(\n1:\n3:\n0); + % \foreach \p in {#2,#3,#4,center} + % \fill[red] (\p) circle(2pt); +} +% \end{macrocode} +% +% \begin{macrocode} +% +% \end{macrocode} +% +% \begin{macrocode} +%<*class|class-article> +% \end{macrocode} +% +% \begin{macrocode} +\ExplSyntaxOn +% \end{macrocode} +% +% \begin{macrocode} +% +% \end{macrocode} +% +% \begin{macrocode} +%<*class> +% \end{macrocode} +% +% The rubric page head rule: +% \begin{macrocode} +\tl_new:N \g_@@_rubric_page_head_tl +\tl_gset:Nn \g_@@_rubric_page_head_tl {% + \bool_if:nF { \g_@@_for_authors_bool } { + \tikz[remember~picture,overlay] { + \path (current~page.north~west |- current~page~header~area.south~west) coordinate (_@@_pwest); + \path (current~page.north~east |- current~page~header~area.south~east) coordinate (_@@_peast); + \draw [@@_headrule_color,line~width=\c_@@_header_line_width_dim] + ([yshift=\c_@@_header_line_yshift_dim]_@@_pwest) + -- + ([yshift=\c_@@_header_line_yshift_dim]_@@_peast) + ;% + \tl_if_empty:NF \g_@@_rubric_abstract_tl {% + \mbox{}% + \checkoddpage% + \ifoddpage% + \coordinate (@@_A) at ([xshift=\c_@@_xshift_arccircle_A_dim,yshift=\c_@@_yshift_arccircle_A_dim]current~page.north~west); + \coordinate (@@_B) at ([xshift=\c_@@_xshift_arccircle_B_dim,yshift=\c_@@_yshift_arccircle_B_dim]current~page.north~west) ; + \coordinate (@@_C) at ([xshift=\c_@@_xshift_arccircle_C_dim,yshift=\c_@@_yshift_arccircle_C_dim]current~page.north~west) ; + \gzt@arcthroughthreepoints{@@_A}{@@_B}{@@_C}; + \else% + \coordinate (@@_A) at ([xshift=-\c_@@_xshift_arccircle_A_dim,yshift=\c_@@_yshift_arccircle_A_dim]current~page.north~east); + \coordinate (@@_B) at ([xshift=-\c_@@_xshift_arccircle_B_dim,yshift=\c_@@_yshift_arccircle_B_dim]current~page.north~east) ; + \coordinate (@@_C) at ([xshift=-\c_@@_xshift_arccircle_C_dim,yshift=\c_@@_yshift_arccircle_C_dim]current~page.north~east) ; + \gzt@arcthroughthreepoints{@@_C}{@@_B}{@@_A}; + \fi% + } + } + } +} +% \end{macrocode} +% +% \begin{macrocode} +% +% \end{macrocode} +% +% \begin{macrocode} +%<*class|class-article> +% \end{macrocode} +% +% \subsection{Front cover page style} +% +% \begin{macrocode} +\newpagestyle{@@_frontcover_ps}[]{% + \sethead + {}% + {% + \adjustbox{stack=c}{ + {\Large + \c_@@_frontcover_header_string_tl + }\\[7mm] + \adjustbox{scale=2.08}{ + \l_@@_frontmatter_head_text_tl + }% + }% + }% + {}% + % + \setfoot% + {}% + {}% + {}% +}% +% \end{macrocode} +% +% \subsection{Inside front cover page style} +% +% \begin{macrocode} +\newpagestyle{@@_inside_frontcover_ps}[]{% + \sethead% + [ + \tikz[remember~picture,overlay] {% + \g_@@_frontmatter_page_headrule_tl% + \g_@@_frontmatter_headtext_tl% + }% + ]% + []% + []% + {}% + { + \tikz[remember~picture,overlay] {% + \g_@@_frontmatter_page_headrule_tl% + \g_@@_frontmatter_headtext_tl% + }% + }% + {}% + % + \setfoot% + []% + [% + \uppercase{\c_@@_footer_string_tl} + ]% + []% + {}% + {% + \uppercase{\c_@@_footer_string_tl}% + }% + {}% +}% +% \end{macrocode} +% +% \subsection{Front matter page style} +% +% \begin{macrocode} +\newpagestyle{@@_frontmatter_ps}[]{% + \widenhead*{\c_@@_front_matter_extra_innermargin_dim}{\c_@@_front_matter_extra_outermargin_dim} + \sethead% + [ + \tikz[remember~picture,overlay] {% + \g_@@_frontmatter_page_headrule_tl% + \g_@@_frontmatter_headtext_tl% + }% + ]% + []% + []% + {}% + { + \tikz[remember~picture,overlay] {% + \g_@@_frontmatter_page_headrule_tl% + \g_@@_frontmatter_headtext_tl% + }% + }% + {}% + % + \setfoot% + [\c_@@_footer_size_font_tl\thepage]% + [% + \uppercase{\c_@@_footer_string_tl} + ]% + []% + {}% + {% + \uppercase{\c_@@_footer_string_tl}% + }% + {\c_@@_footer_size_font_tl\thepage}% +}% +% \end{macrocode} +% +% \subsection{Rubric first page style} +% +% \begin{macrocode} +\newpagestyle{@@_rubric_ps}[]{% + \widenhead{\c_zero_dim}{\c_zero_dim} + \sethead% + [ + ]% + [ + ]% + [ + \g_@@_rubric_page_head_tl% + \bool_if:nF { \g_@@_for_authors_bool } { + \adjustbox{raise={\c_@@_header_yshift_dim}{\height},lap=-\c_@@_header_xshift_dim-\linewidth}{% + \includegraphics[width=\c_@@_pictogram_width_dim]{\g_@@_rubric_pictofile_tl}% + }% + }% + ]% + { + \g_@@_rubric_page_head_tl% + }% + {}% + {% + \bool_if:nF { \g_@@_for_authors_bool } { + \adjustbox{raise={\c_@@_header_yshift_dim}{\height},lap=\c_@@_header_xshift_dim}{% + \includegraphics[width=\c_@@_pictogram_width_dim]{\g_@@_rubric_pictofile_tl}% + }% + }% + }% + % + \setfoot% + [\c_@@_footer_size_font_tl\thepage]% + [% + \uppercase{\c_@@_footer_string_tl} + ]% + []% + {}% + {% + \uppercase{\c_@@_footer_string_tl}% + }% + {\c_@@_footer_size_font_tl\thepage}% +}% +% \end{macrocode} +% +% \subsection{Advertisement page style} +% +% \begin{macrocode} +\newpagestyle{@@_advertisement_ps}[]{% + \widenhead{\c_zero_dim}{\c_zero_dim} + \sethead% + [ + \tikz[remember~picture,overlay] {\g_@@_mainmatter_evenpage_headrule_tl} + ]% + [% + \adjustbox{raise={\c_@@_header_yshift_dim}{\height}}{% + \large\bfseries\scshape\c_@@_advertisement_string_tl% + }% + ]% + []% + {}% + {% + \adjustbox{raise={\c_@@_header_yshift_dim}{\height}}{% + \large\bfseries\scshape\c_@@_advertisement_string_tl% + } + }% + { + \tikz[remember~picture,overlay] {\g_@@_mainmatter_oddpage_headrule_tl} + }% + % + \setfoot% + [\c_@@_footer_size_font_tl\thepage]% + [% + \uppercase{\c_@@_footer_string_tl} + ]% + []% + {}% + {% + \uppercase{\c_@@_footer_string_tl}% + }% + {\c_@@_footer_size_font_tl\thepage}% +} +% \end{macrocode} +% +% \subsection{Inside back cover page style} +% +% \begin{macrocode} +\newpagestyle{@@_inside_backcover_ps}[]{% + \sethead% + [ + \tikz[remember~picture,overlay] {% + \g_@@_frontmatter_page_headrule_tl% + \g_@@_frontmatter_headtext_tl% + }% + ]% + []% + []% + {}% + { + \tikz[remember~picture,overlay] {% + \g_@@_frontmatter_page_headrule_tl% + \g_@@_frontmatter_headtext_tl% + }% + }% + {}% + % + \setfoot% + []% + [% + \uppercase{\c_@@_footer_string_tl} + ]% + []% + {}% + {% + \uppercase{\c_@@_footer_string_tl}% + }% + {}% +}% +% \end{macrocode} +% +% \subsection{Back cover page style} +% +% \begin{macrocode} +\newpagestyle{@@_backcover_ps}[]{% + \sethead + {}% + {}% + {}% + % + \setfoot% + {}% + {}% + {}% +}% +% \end{macrocode} +% +% We define crop marks. +% \begin{macrocode} +% \bool_if:NT {\g_@@_for_printer_bool} {% +% \AddEverypageHook{% +% \tikz[remember~picture,overlay] {% +% \draw ([yshift=\c_@@_layoutoffset_dim]current~page.south~west) -- +(0.25,0); +% \draw ([xshift=\c_@@_layoutoffset_dim]current~page.south~west) -- +(0,0.25); +% %% lower right +% \draw ([yshift=\c_@@_layoutoffset_dim]current~page.south~east) -- +(-0.25,0); +% \draw ([xshift=-\c_@@_layoutoffset_dim-\c_@@_bindingoffset_dim]current~page.south~east) -- +(0,0.25); +% %% upper left +% \draw ([yshift=-\c_@@_layoutoffset_dim]current~page.north~west) -- +(0.25,0); +% \draw ([xshift=\c_@@_layoutoffset_dim]current~page.north~west) -- +(0,-0.25); +% %% upper right +% \draw ([yshift=-\c_@@_layoutoffset_dim]current~page.north~east) -- +(-0.25,0); +% \draw ([xshift=-\c_@@_layoutoffset_dim-\c_@@_bindingoffset_dim]current~page.north~east) -- +(0,-0.25); +% }% +% }% +% } +% \end{macrocode} +% +% We draw a gray background at the bottom of each page, but the first one. +% \begin{macrocode} +\AddEverypageHook{% +% \bool_if:nF { \g_@@_frontcover_bool || \g_@@_backcover_bool }{ + \bool_if:NF {\g_@@_advertisement_bool} { + \tikz[remember~picture,overlay] { \g_@@_background_footer_tl }% + }% +% }% +} +% \end{macrocode} +% +% \subsection{Main matter page style} +% +% \begin{macrocode} +\newpagestyle{@@_mainmatter_ps}[]{% + \widenhead{\c_zero_dim}{\c_zero_dim} + \sethead% + [ + \tikz[remember~picture,overlay] {\g_@@_mainmatter_evenpage_headrule_tl} + ]% + [% + \adjustbox{raise={\c_@@_header_yshift_dim}{\height}}{% + \large\bfseries\scshape\color{@@_rubric_head_text_color}\g_@@_rubric_title_tl% + }% + ]% + []% + {}% + {% + \bool_if:nF { + \g_@@_rearviewmirror_rubric_bool || \g_@@_books_rubric_bool + }{ + \adjustbox{raise={\c_@@_header_yshift_dim}{\height}}{% + \bfseries\color{@@_rubric_head_text_color}\g_@@_short_title_tl% + } + } + }% + { + \tikz[remember~picture,overlay] {\g_@@_mainmatter_oddpage_headrule_tl} + }% + % + \setfoot% + [\c_@@_footer_size_font_tl\thepage]% + [% + \uppercase{\c_@@_footer_string_tl} + ]% + []% + {}% + {% + \uppercase{\c_@@_footer_string_tl}% + }% + {\c_@@_footer_size_font_tl\thepage}% +} +% \end{macrocode} +% +% We define a public macro for possible acknowledgements to be used by author(s) +% of articles. +% \begin{macrocode} +\NewDocumentCommand \acknowledgements { m } { + \@@_article_acknowledgements:n {#1}% +} +% \end{macrocode} +% +% \begin{macro}{\printminibios} +% \begin{macro}{\printauthorsdetails} +% We define the public command which displays +% \begin{itemize} +% \item the affiliation(s), email(s) and minibiographie(s) of the authors, +% \item the acknowledgements if not empty. +% \end{itemize} +% \begin{macrocode} +\NewDocumentCommand \printminibios { } { + \bool_if:NT {\g_@@_multicols_bool} { + \end{multicols}% + } +% \end{macrocode} +% We force all the previous floats to be processed no later on the page +% following the beginning of the bibliography, \textsc{cv} or +% acknowledgments. +% \begin{macrocode} + \FloatBarrier% + \begin{_@@_minibiographies_acknowledgments_tcbox} + \@@_display_people_by_role:n { author-art-\int_use:N \g_@@_articles_int } + \tl_if_empty:NF \g_@@_article_acknowledgements_tl + {% + \par% + \bigskip% + \begin{adjustbox}{valign=t,minipage=\linewidth} + \color{@@_acknowledgements_color}% + \g_@@_article_acknowledgements_tl + \end{adjustbox} + } + \end{_@@_minibiographies_acknowledgments_tcbox} + \bool_gset_true:N \g_@@_previous_article_with_bibliography_or_minibio_bool + % + \tl_gclear:N \g_@@_people_affiliation_tl + \tl_gclear:N \g_@@_people_email_tl + \tl_gclear:N \g_@@_people_minibio_tl + \tl_gclear:N \g_@@_people_photo_tl + \tl_gclear:N \g_@@_people_webpage_tl + \tl_gclear:N \g_@@_article_acknowledgements_tl +% \end{macrocode} +% +% We clear the authors database for this new article (XXX: to be moved to the +% authors' minibiographies area). +% \begin{macrocode} + \DTLgcleardb{_@@_authors} + \DTLgcleardb{_@@_interviewees} +} +% \end{macrocode} +% \end{macro} +% We define "\printauthorsdetails" as an alias of "\printminibios". +% \begin{macrocode} +\let\printauthorsdetails\printminibios +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\printbibliography} +% The command for bibliography printing production is redefined in order to let +% it silently: +% \begin{itemize} +% \item beforehand quit the multicolumn environment and enter in the +% "_@@_bibliography_tcbox" environment (which gives a special layout to +% bibliographies, \textsc{cv} and acknowledgements), +% \item afterwards quit the "bibliography_minibiographies_acknowledgments" environment and enter in +% the multicolumn environment. +% \end{itemize} +% \begin{macrocode} +\cs_set_eq:NN \_@@_printbibliography \printbibliography +\RenewDocumentCommand \printbibliography { O{} } { + \bool_if:NT {\g_@@_multicols_bool} { + \end{multicols}% + } +% \end{macrocode} +% We force all the previous floats to be processed no later on the page +% following the beginning of the bibliography, \textsc{cv} or +% acknowledgments. +% \begin{macrocode} +% \afterpage{% + \FloatBarrier% +% }% + \begin{_@@_bibliography_tcbox} + \_@@_printbibliography[heading=subbibliography,resetnumbers,#1] + \end{_@@_bibliography_tcbox} + % + \nopagebreak[0] + \printauthorsdetails +} +% \end{macrocode} +% \end{macro} +% +% \section{Miscellaneous private commands specific to the journal} +% +% We create miscellaneous private commands specific to the journal. +% +% Command for centuries. +% \begin{macrocode} +\deftranslation[to=French]{_@@_century}{si\`ecle}% +\deftranslation[to=English]{_@@_century}{century}% +\deftranslation[to=French]{_@@_first}{\ier}% +\deftranslation[to=English]{_@@_first}{\up{st}\xspace}% +\deftranslation[to=French]{_@@_nth}{\ieme}% +\deftranslation[to=English]{_@@_nth}{\up{th}\xspace}% +\deftranslation[to=French]{_@@_bc}{avant~J.-C.}% +\deftranslation[to=English]{_@@_bc}{BC}% +\cs_new_protected:Nn \_@@_century:n +{ + \textsc{ + \int_to_roman:n {\int_abs:n {#1}} + }% + \int_compare:nNnTF { \int_abs:n {#1} } > { 1 }{\translate{_@@_nth}}{\translate{_@@_first}} + \translate{_@@_century}% + \space + \int_compare:nNnT { #1 } < { 0 }{\translate{_@@_bc}} +} +% \end{macrocode} +% +% \begin{macrocode} +% +% \end{macrocode} +% +% \begin{macrocode} +%<*class> +% \end{macrocode} +% +% \section{Miscellaneous public commands specific to the journal} +% +% We create miscellaneous public commands specific to the journal. +% \begin{macro}{\aboutfrontcover} +% For a few words about the front cover. +% \begin{macrocode} +\NewDocumentCommand \aboutfrontcover { O{} O{\c_@@_about_frontcover_string_tl} m } +{ + \_@@_about_frontcover:nnn {#1}{#2}{#3}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +\cs_new_protected:Nn \_@@_prepare_rubric:nnn {% + \newpage% + \tl_gclear:N \g_@@_rubric_abstract_tl + \tl_gset:Nn \g_@@_rubric_title_tl {#2} + \tl_gset:Nn \g_@@_rubric_pictofile_tl {#3} + \IfNoValueF {#1} + { + \keys_set:nn { gzt/rubric } { #1 } + } + \_@@_rubric:nnn + {\g_@@_rubric_abstract_tl}{\g_@@_rubric_title_tl}{\g_@@_rubric_pictofile_tl}% +} +% \end{macrocode} +% +% \begin{macro}{\rubric} +% For a \enquote{free} rubric. +% \begin{macrocode} +\NewDocumentCommand \rubric {O{}mm} +{ + \_@@_rubric:nnn {#1}{#2}{#3}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +\NewDocumentCommand \mathematics {O{}} +{ + \_@@_rubric:nnn {#1}{\c_@@_mathematics_rubric_string_tl}{picto-mathematics} +} +\NewDocumentCommand \dossier {O{}} +{ + \_@@_rubric:nnn {#1}{\c_@@_dossier_rubric_string_tl}{picto-dossier} +} +\NewDocumentCommand \community {O{}} +{ + \_@@_rubric:nnn {#1}{\c_@@_community_rubric_string_tl}{picto-hands} +} +\NewDocumentCommand \interview {O{}} +{ + \_@@_rubric:nnn {#1}{\c_@@_interview_rubric_string_tl}{picto-interview} + \bool_gset_true:N \g_@@_interview_rubric_bool +} +\NewDocumentCommand \teaching {O{}} +{ + \_@@_rubric:nnn {#1}{\c_@@_teaching_rubric_string_tl}{picto-teaching} +} +\NewDocumentCommand \parity {O{}} +{ + \_@@_rubric:nnn {#1}{\c_@@_parity_rubric_string_tl}{picto-parity} +} +\NewDocumentCommand \tellme {O{}} +{ + \_@@_rubric:nnn {#1}{\c_@@_tellme_rubric_string_tl}{picto-tellme} + \bool_gset_true:N \g_@@_tellme_rubric_bool +} +\NewDocumentCommand \information {O{}} +{ + \_@@_rubric:nnn {#1}{\c_@@_information_rubric_string_tl}{picto-information} +} +\NewDocumentCommand \rearviewmirror {O{}} +{ + \_@@_rubric:nnn {#1}{\c_@@_rearviewmirror_rubric_string_tl}{picto-rearviewmirror} + \bool_gset_true:N \g_@@_rearviewmirror_rubric_bool +} +\NewDocumentCommand \tribute {O{}} +{ + \_@@_rubric:nnn {#1}{\c_@@_tribute_rubric_string_tl}{picto-tribute} +} +\NewDocumentCommand \books {O{}} +{ + \_@@_rubric:nnn {#1}{\c_@@_books_rubric_string_tl}{picto-books} + \bool_gset_true:N \g_@@_books_rubric_bool + \vspace{1.5\c_@@_book_review_frontcover_extend_dim} +} +\NewDocumentCommand \latextips {O{}} +{ + \_@@_rubric:nnn {#1}{\c_@@_latex_rubric_string_tl}{} +} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +% +% \end{macrocode} +% +% \begin{macrocode} +%<*class|class-article> +% \end{macrocode} +% +% \begin{macro}{\email} +% \begin{macrocode} +\DeclareCiteCommand{\citeinterviewee}{}{% + \printnames{interviewee}% +} +{}{} +\DeclareCiteCommand{\citereviewer}{}{% + \togglefalse{blx@firstinits}% + \printnames{reviewer}% +} +{}{} +\DeclareCiteCommand{\citereviewerinstitution}{}{% + \printlist{reviewerinstitution}% +} +{}{} +\DeclareCiteCommand{\_@@_cite_public_price}{}{% + \printfield{publicprice}% +} +{}{} +\DeclareCiteCommand{\_@@_cite_smf_price}{}{% + \printfield{smfprice}% +} +{}{} +\DeclareCiteCommand{\citecopublisher}{}{% + \printlist{copublisher}% +} +{}{} +\DeclareCiteCommand{\citefrenchabstract}{}{% + \printfield{frenchabstract}% +} +{}{} +\DeclareCiteCommand{\_@@_cite_englishabstract}{}{% + \printfield{englishabstract}% +} +{}{} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\email} +% For typesetting an email. +% \begin{macrocode} +\NewDocumentCommand \email {m} +{ + \_@@_email:n {#1}% +} +% \end{macro} +% +% \begin{macro}{\question} +% We define a private function for the questions/answers of interviews. +% \begin{macrocode} +\cs_new_protected:Nn \_@@_question:n +{ + \int_incr:N \g_@@_question_int + {% + \par% + \bigskip% + \color{@@_question_color} + #1% + \par% + }% +} +\NewDocumentCommand \question {m} +{ + \_@@_question:n {#1}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\smf} +% \begin{macrocode} +\NewDocumentCommand \smf { s } { + \IfBooleanTF {#1} + { + \l_@@_smf_string_tl + } + { + \l_@@_smf_short_string_tl + } + \xspace +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\surname} +% \begin{macrocode} +\DeclareExpandableDocumentCommand \surname { m } { + \textsc{#1} +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\cad} +% \begin{macro}{\Cad} +% \begin{macrocode} +\NewDocumentCommand \cad { s } { + \IfBooleanTF {#1} + { + \c_@@_cad_string_tl + } + { + \c_@@_cad_short_string_tl + } + \xspace +} +\NewDocumentCommand \Cad { s } { + \IfBooleanTF {#1} + { + \c_@@_Cad_string_tl + } + { + \c_@@_Cad_short_string_tl + } + \xspace +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\gzt} +% \begin{macrocode} +\NewDocumentCommand \gzt { s } { + \IfBooleanTF {#1} + { + \l_@@_gzt_string_tl + } + { + \l_@@_gzt_short_string_tl + } + \xspace +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\gztcl} +% \begin{macro}{\gztarticle} +% \begin{macrocode} +\NewDocumentCommand \gztcl { } +{% + \textsl{\texttt{\c_@@_gzt_class_name_tl}} + \xspace +} +\NewDocumentCommand \gztarticlecl { } +{% + \textsl{\texttt{\c_@@_gztarticle_class_name_tl}} + \xspace +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\century} +% \begin{macrocode} +\NewDocumentCommand \century { m } {% + \_@@_century:n {#1}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\aside} +% \begin{macrocode} +\NewDocumentCommand \aside { s m } {% + \IfBooleanTF {#1} + { + \c_@@_aside_string_tl{}~#2 + } + { + \c_@@_aside_string_tl{}~#2~\c_@@_aside_string_tl + } +} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +\tl_new:N \g_@@_font_designer_text_tl% +\cs_new_protected:Nn \@@_font_designer_text:n +{ + \tl_gset:Nn \g_@@_font_designer_text_tl { #1 } +} +\NewDocumentCommand \fontdesignertext {m} +{ + \_@@_font_designer_text:n {#1}% +} +% \end{macrocode} +% +% \begin{macrocode} +\tl_new:N \g_@@_printer_text_tl% +\cs_new_protected:Nn \@@_printer_text:n +{ + \tl_gset:Nn \g_@@_printer_text_tl { #1 } +} +\NewDocumentCommand \printertext {m} +{ + \_@@_printer_text:n {#1}% +} +% \end{macrocode} +% +% Command for epigraphs. +% \begin{macrocode} +\renewcommand{\textflush}{flushepinormal} +\cs_set_eq:NN \_@@_orig_epigraph \epigraph +\cs_new_protected:Nn \_@@_epigraph:nn +{ + \bool_if:nTF { \tl_if_empty_p:n {#2} } + { + \setlength{\epigraphrule}{\c_zero_dim} + } + { + \setlength{\epigraphrule}{.4\p@} + } + \_@@_orig_epigraph{% + \emph{% + \enquote{% + #1% + }% + }% + }% + {% + #2 + } +} +\RenewDocumentCommand \epigraph { m m } +{ + \_@@_epigraph:nn {#1}{#2}% +} +% \end{macrocode} +% +% \begin{macrocode} +\NewDocumentEnvironment{authorsinstructions}{ } +{% + \begingroup + \tcbverbatimwrite{\c_@@_authors_instructions_file_tl} +}% +{ + \endtcbverbatimwrite + \endgroup +} +% \end{macrocode} +% +% We provide some public commands and environments to be used for displaying +% (mainly \LaTeX{}) code. +% \begin{macrocode} +\lstdefinestyle{@@_lst_style}{% + escapechar=+, + language=[LaTeX]TeX, + texcsstyle=*\bfseries, + breaklines=true, + basicstyle=\normalfont\ttfamily, + columns=flexible, + inputencoding=utf8/latin1 +}% +\DeclareTotalTCBox{\gztverb}{ v }{verbatim,blank,fuzzy~halo=0pt~with~@@_light_generic_dark_color!8}{#1} +\NewTCBListing{gztcode}{ O{} }{% + listing~style=@@_lst_style, + listing~only, + enlarge~top~by=\medskipamount, + breakable, + #1% +} +% \end{macrocode} +% +% We provide two public environments "gztfigure" and "gzttable" for the usual +% floats. Their layout is based upon \pkg{tcolorbox} features. +% \begin{macrocode} +\DeclareTColorBox[blend~into=figures]{gztfigure}{ O{} } +{ + #1% + % ,title={#2}% + ,width=\linewidth% + ,_@@_tcb_floats_style% +} +\DeclareTColorBox[blend~into=figures]{gztfigure*}{ O{} } +{ + #1% + ,float* + % ,title={#2}% + ,width=\textwidth% + ,_@@_tcb_floats_style% +} +\DeclareTColorBox[blend~into=tables]{gzttable}{ O{} } +{ + #1% + % ,title={#2}% + ,width=\linewidth% + ,_@@_tcb_floats_style% +} +\DeclareTColorBox[blend~into=tables]{gzttable*}{ O{} } +{ + #1% + ,float* + % ,title={#2}% + ,width=\textwidth% + ,_@@_tcb_floats_style% +} +\DeclareTColorBox{gztscan}{ O{} } +{ + #1% + % ,title={#2}% + ,width=\textwidth% + ,_@@_tcb_floats_style% + ,size=tight% +} +\DeclareTColorBox{_@@_book_review}{ O{} } +{ + overlay~unbroken~and~first={% + \node at (frame.north~west) { + { + \makebox[\c_zero_dim][l]{% + \adjustbox{raise={-2\height+\c_@@_book_review_frontcover_extend_dim}{\c_zero_dim}}{% + \includegraphics[width=20mm]{\g_@@_bookreview_frontcover_tl}% + }% + } + } + }; + }, + _@@_tcb_book_review_box_style, + #1 +} +\DeclareTColorBox{_@@_bibliography_tcbox}{ O{} } +{ + _@@_tcb_bibliography_style, + #1 +} +\DeclareTColorBox{_@@_minibiographies_acknowledgments_tcbox}{ O{} } +{ + _@@_tcb_minibiographies_acknowledgments_style, + #1 +} +% \end{macrocode} +% +% We create a "bookreview" environment for the book reviews. +% \begin{macrocode} +\NewDocumentEnvironment{bookreview}{ O{} m } +{ + \keys_set:nn { gzt/bookreview } { #2 } + \begin{_@@_book_review}[#1] + \xpatchfieldformat{title}{mkbibemph}{textbf}{}{}% + \xpretonameformat{author}{\color{@@_people_color}}{}{}% + \togglefalse{blx@firstinits}% + \noindent\fullcite{\g_@@_bookreview_bibkey_tl} + \vspace{10mm} + \tcblower +}{ + \begin{flushright} + % \g_@@_reviewer_tl + \bigskip + \citereviewer{\g_@@_bookreview_bibkey_tl}\\ + \citereviewerinstitution{\g_@@_bookreview_bibkey_tl} + \end{flushright} + % \vspace*{10mm} + \mbox{} + \end{_@@_book_review} +} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareTColorBox{_@@_book_advertisement}{ O{} } +{ + _@@_tcb_book_advertisement_box_style, + #1 +} +\DeclareTColorBox{_@@_inside_cover_tcb}{ O{} } +{ + #1 +} +% \end{macrocode} +% +% We create a "bookadvertisement" environment for the book advertisements. +% \begin{macrocode} +\NewDocumentEnvironment{bookadvertisement}{ O{} m } +{% + \keys_set:nn { gzt/bookadvertisement } { #2 }% + \newpage{} + \mbox{} + \vfill + \begin{_@@_book_advertisement}[#1] + \begin{tcolorbox}[ + lefthand~width=47.5mm + ,sidebyside + ,colback=@@_book_advertisement_bg_color + % ,sharp~corners=all + ,fontlower=\large + ,flushleft~lower + ,boxrule=\c_zero_dim + ,frame~hidden% + ,leftright~skip=\c_zero_dim + ,before~skip=\c_zero_dim + ,lower~separated=false + ] + \adjustbox{frame}{\includegraphics[width=45mm]{\g_@@_bookadvertisement_frontcover_tl}}% + \tcblower + \xpatchfieldformat{title}{mkbibemph}{textbf}{}{}% + \def\abx@str{abx@lstr}% + \noindent\fullcite{\g_@@_bookadvertisement_bibkey_tl} + \def\abx@str{abx@sstr}% + \end{tcolorbox} + \bigskip + \c_@@_published_with_help_of_string_tl~\citecopublisher{\g_@@_bookadvertisement_bibkey_tl}. + \par + \bigskip + \citefrenchabstract{\g_@@_bookadvertisement_bibkey_tl} + \par + \medskip + % + \begin{center} + Prix~public~:\space + \EUR{\_@@_cite_public_price{\g_@@_bookadvertisement_bibkey_tl}} + \space\textendash\space Prix~membre~\smf{}~:\space + \EUR{\_@@_cite_smf_price{\g_@@_bookadvertisement_bibkey_tl}} + \space\textendash\space Frais~de~port~non~compris + \end{center} + % + \par + \bigskip + \begin{otherlanguage}{english} + \itshape + \_@@_cite_englishabstract{\g_@@_bookadvertisement_bibkey_tl} + % + \par + \medskip + % + \begin{center} + Public~price:\space + \EUR{\_@@_cite_public_price{\g_@@_bookadvertisement_bibkey_tl}} + \space\textendash\space \smf{}~member~price:\space + \EUR{\_@@_cite_smf_price{\g_@@_bookadvertisement_bibkey_tl}} + \space\textendash\space Shipping~costs~not~included + \end{center} + \end{otherlanguage} + \par + \bigskip + }{ + \tcblower + \includegraphics[height=22.5mm]{\c_@@_smf_logo_file_string_tl}% + % \newline + % \smallskip + % % \begin{adjustbox}{valign=t,minipage=60mm} + % \l_@@_journal_address_tl + % % \end{adjustbox} + % \newline + \par{} + \smallskip% + \url{\l_@@_journal_url_tl} + \end{_@@_book_advertisement} + \vfill + \newpage + \bool_gset_false:N \g_@@_advertisement_bool + \bool_gset_true:N \g_@@_mainmatter_bool +} +% \end{macrocode} +% +% \begin{macrocode} +% +% \end{macrocode} +% +% \begin{macrocode} +%<*class> +% \end{macrocode} +% +% We create a variant of the "\input" macro which cleans the local +% customizations if any and, if necessary open and close the "refsection" and +% "multicols" environments. +% \begin{macrocode} +\cs_generate_variant:Nn \tl_if_eq:nnT { NnT } +\NewDocumentCommand \gztinput { m m } {% + \startcustomization% + \bool_if:NF {\g_@@_refsection_bool} { + \begin{refsection} + } + \tl_if_in:NnT + { \c_@@_advertisement_directory_string_tl } { #1 } {% + \newpage + \thispagestyle{@@_advertisement_ps} + } + \inputfrom{#1}{#2} + \bool_if:NT {\g_@@_multicols_bool} { + \end{multicols}% + } + \bool_if:NT {\g_@@_refsection_bool} { + \end{refsection} + } + \cleancustomization% +} +% \end{macrocode} +% +% We automatically include the inside back cover and back cover pages at the end +% of the document, the former containing some condensed instructions to +% authors. But, this cannot be done within "\AtEndDocument" and +% "\preto\@enddocumenthook" should be used instead (see +% \url{http://tex.stackexchange.com/q/240318/18401}). +% \begin{macrocode} +\bool_if:NF {\g_@@_inside_pages_bool} { + \preto\@enddocumenthook{ + \clearpage +% \end{macrocode} +% +% The inside front cover and front cover pages are numbered \enquote{i} and +% \enquote{ii} hence the inside back cover and back cover pages are numbered +% \enquote{iii} and \enquote{iv}. +% \begin{macrocode} + \pagenumbering{roman}% + \addtocounter{page}{2} + \ifoddpage% + \hbox{} + \fi + \newpage + \bool_gset_true:N \g_@@_backmatter_bool + \g_@@_display_inside_backcover_tl + \newpage + \g_@@_display_backcover_tl + }% +}% +% \end{macrocode} +% +% \begin{macrocode} +% +% \end{macrocode} +% +% \begin{macrocode} +%<*class-article> +% \end{macrocode} +% +% \begin{macrocode} +\keys_define:nn { gztarticle } +{ + editorial .code:n = {% + \AtBeginDocument{% + \_@@_before_display_editorial: {}% + } + \AtEndDocument{% + \_@@_after_display_editorial: {}% + } + },% + presidentmessage .code:n = {% + \AtBeginDocument{% + \_@@_before_display_presidentmessage: {}% + } + \AtEndDocument{% + \_@@_after_display_presidentmessage: {}% + } + },% +}% +% +\ProcessKeysOptions { gztarticle } +% \end{macrocode} +% +% \begin{macrocode} +\AtEndDocument{% + \bool_if:NT {\g_@@_multicols_bool} { + \end{multicols}% + } + \bool_if:NT {\g_@@_refsection_bool} { + \end{refsection} + } +} +% \end{macrocode} +% +% \begin{macrocode} +% +% \end{macrocode} +% +% \begin{macrocode} +%<*class|class-article> +% \end{macrocode} +% +% \section{Miscellaneous settings} +% +% We gather here miscellaneous settings. +% +% \subsection{Related to \Pkg{pgfplots}} +% +% (French) Numbers format: +% \begin{macrocode} +\pgfplotsset{% + /pgf/number~format/.cd, + use~comma, + 1000~sep={\,}, + min~exponent~for~1000~sep=4 +}% +% \end{macrocode} +% +% \subsection{Related to \Pkg{biblatex}} +% +% \begin{macrocode} +\defbibheading{bibassection}[\bibname]{\section*{#1}}% +\renewcommand{\bibfont}{\normalfont\footnotesize} +% \end{macrocode} +% +% As bibiliographic resource, we add the file of the current issue. +% \begin{macrocode} +\exp_after:wN\addbibresource\exp_after:wN{\c_@@_issue_bib_path_string_tl} +% \end{macrocode} +% +% We create a name format that prints the initial(s) of the first name(s) before +% last name of a cited author. +% \begin{macrocode} +\DeclareNameFormat{firstinits-last}{% + \usebibmacro{name:first-last}{#1}{#4}{#5}{#7}% + \usebibmacro{name:andothers}% +} +\DeclareNameAlias{labelname}{firstinits-last} +% \end{macrocode} +% +% We ensure the space between initial(s) and last name is unbreakable. +% \begin{macrocode} +\renewcommand*\bibnamedelimc{\addnbspace} +\renewcommand*\bibnamedelimd{\addnbspace} +% \end{macrocode} +% +% \begin{macrocode} +\renewbibmacro{in:}{% + \ifentrytype{article}{}{\printtext{\bibstring{in}\intitlepunct}}} +\renewbibmacro*{journal}{% + \iffieldundef{shortjournal}% + {% + \iffieldundef{journaltitle} + {} + {% + \printtext[journaltitle]% + {% + \printfield[titlecase]{journaltitle}% + \setunit{\subtitlepunct}% + \printfield[titlecase]{journalsubtitle}% + }% + }% + }% + {\printtext[journaltitle]{\printfield[titlecase]{shortjournal}}}% +} +\renewbibmacro*{volume+number+eid}{% + \printfield{volume}% + \setunit{\addcomma\space}% + \printfield{number}% + \setunit{\addcomma\space}% + \printfield{eid}} +\DeclareFieldFormat[article]{volume}{\mkbibbold{#1}} +\DeclareFieldFormat[book]{volume}{\mkbibbold{#1}} +\DeclareFieldFormat[article]{number}{\bibstring{number}#1} +\DeclareLanguageMapping{french}{gzt}% use the new abbreviations +% \end{macrocode} +% +% \subsection{Related to \Pkg{kpfonts}} +% +% We robustify the "\itshape" redefinition (in case of "easyscsl" option), that +% is not robust in \pkg{kpfonts} code +% (cf. \url{https://groups.google.com/d/msg/fr.comp.text.tex/hIi97ipK5qA/WJoPwvH-p1UJ}). +% \begin{macrocode} +\ifkp@easyscsl +\DeclareRobustCommand{\itshape}{\not@math@alphabet\itshape\mathit% + \ifthenelse{\equal{\f@shape}{\scdefault}}{\fontshape{scsl}}{% + \fontshape\itdefault}\selectfont} +\fi +% \end{macrocode} +% +% We replace the \pkg{kpfonts}' \enquote{mathfrak} by the one from +% \enquote{eufrak}, as the former doesn't provide Euler Fraktur digits. +% \begin{macrocode} +\DeclareMathAlphabet\mathfrak{U}{euf}{m}{n} +\SetMathAlphabet\mathfrak{bold}{U}{euf}{b}{n} +% \end{macrocode} +% +% \subsection{Related to \Pkg{draftwatermark}} +% +% \begin{macrocode} +\@ifpackageloaded{draftwatermark}{% + \SetWatermarkColor{gray!10}% + \SetWatermarkFontSize{30mm}% + \SetWatermarkText{\MakeUppercase{\c_@@_draftwatermark_string_tl}}% +}{% +} +% \end{macrocode} +% +% \subsection{Related to \Pkg{TikZ}} +% +% \begin{macrocode} +\tikzset{ + _@@_dots/.style={ + line~width=\c_@@_tikz_dot_diameter_dim, + line~cap=round, + dash~pattern=on~0pt~off~\c_@@_tikz_dot_spacing_dim + }, + _@@_tcb_segmentation_style/.style={ + _@@_dots, + draw=@@_dotfill_color, + shorten~>=~\c_@@_tcb_left_dim+\c_@@_tcb_boxsep_dim, + shorten~<=~\c_@@_tcb_left_dim+\c_@@_tcb_boxsep_dim, + } +} +% \end{macrocode} +% +% \subsection{Related to \Pkg{tcolorbox}} +% +% We set some styles for +% \begin{itemize} +% \item the two public environments "gztfigure(*)" and "gzttable(*)" for the +% usual floats, +% \item the book reviews, +% \item the book advertisements, +% \item the inside frontcover, +% \end{itemize} +% whom layout is based upon \pkg{tcolorbox} features. +% \begin{macrocode} +\tcbset{ + copyright/.style={overlay={\node[rotate=90,anchor=south~west,font=\tiny] + at (frame.south~east) {\copyright{}~#1};}} +} +\tcbset{% + _@@_tcb_floats_style/.style={% + enhanced% + ,every~float=\centering% + ,coltitle=@@_generic_dark_color% + ,colbacktitle=@@_float_title_bg_color% + ,colback=white% + ,colframe=@@_float_frame_color% + ,center~upper% + ,sharp~corners=all% + ,boxrule=0.3mm% + ,separator~sign~dash + % ,attach~boxed~title~to~bottom~center + % ,minipage~boxed~title*=-6mm + % ,boxed~title~style={ + % enhanced + % ,boxrule=0mm% + % ,sharp~corners=all% + }% +} +\tcbset{% + _@@_tcb_book_review_box_style/.style={% + enhanced,% + colback=@@_book_review_frame_bg_color,% + breakable,% + height=50mm,% + boxrule=\c_zero_dim, + sharp~corners=all,% + skin=enhancedlast, + leftupper=25mm, + enlarge~bottom~finally~by=-1mm, + middle=4mm, + segmentation~style={_@@_tcb_segmentation_style}% + } +} +\tcbset{% + _@@_tcb_book_advertisement_box_style/.style={% + enhanced,% + colframe=@@_book_advertisement_frame_color,% + colback=@@_book_advertisement_bg_color,% + center~lower, + sharp~corners=all,% + % skin=enhancedlast, + % middle=4mm, + lower~separated=false, + % segmentation~style={_@@_tcb_segmentation_style}% + } +} +\tcbset{% + _@@_tcb_inside_cover_style/.style={% + % split=0.6,% + colback=@@_inside_frontcover_frame_bg_color,% + colbacktitle=@@_inside_frontcover_frame_bg_color,% + sharp~corners=all,% + center~title,% + coltitle=@@_inside_frontcover_frame_title_color,% + fonttitle=\bfseries\large,% + boxrule=\c_zero_dim,% + toptitle=3mm,% + bottomtitle=4mm,% + frame~hidden,% + enhanced,% + height=\c_@@_layoutheight_dim-\c_@@_topmargin_inside_cover_dim-\c_@@_botmargin_dim, + width=\c_@@_inside_cover_box_width_dim, + middle=4mm, + segmentation~style={_@@_tcb_segmentation_style}% + }, + _@@_tcb_inside_frontcover_style/.style={% + _@@_tcb_inside_cover_style, + enlarge~left~by=-\c_@@_inside_cover_offset_dim, + title=\c_@@_editorial_board_string_tl + }, + _@@_tcb_inside_backcover_style/.style={% + _@@_tcb_inside_cover_style, + enlarge~left~by=\c_@@_inside_cover_offset_dim, + title=\file_if_exist:nT { \c_@@_authors_instructions_file_tl } {% + \c_@@_authors_instructions_string_tl + } + } +} +\tcbset{% + _@@_tcb_bibliography_style/.style={% + colback=@@_bibliography_minibios_acknowledgments_bg_color, + breakable, + boxrule=\c_zero_dim, + sharp~corners=all,% + enhanced + } +} +\tcbset{% + _@@_tcb_minibiographies_acknowledgments_style/.style={% + colback=@@_bibliography_minibios_acknowledgments_bg_color, + breakable, + boxrule=\c_zero_dim, + drop~lifted~shadow=black, + sharp~corners=all,% + skin=enhancedlast, + skin~first~is~subskin~of={enhancedmiddle}{no~shadow}, + skin~middle~is~subskin~of={enhancedmiddle}{no~shadow}, + skin~last~is~subskin~of={enhancedlast}{drop~lifted~shadow} + } +} +\tcbset{% + enlargepage~flexible=\baselineskip, + left=\c_@@_tcb_left_dim, + boxsep=\c_@@_tcb_boxsep_dim, +} +% \end{macrocode} +% +% \subsection{Lists} +% +% We now set the lists layout in order to benefit from \Pkg{enumitem}'s features +% and preserve the layout from \pkg{frenchb}. +% \begin{macrocode} +\setlist[1]{labelindent=\parindent} +\setlist[itemize]{label=\textendash{}, nosep} +\setlist{% + labelwidth=\widthof{\textendash}, + itemsep=0.4ex plus 0.2ex minus 0.2ex, + parsep=0.4ex plus 0.2ex minus 0.2ex, + topsep=0.8ex plus 0.4ex minus 0.4ex, + partopsep=0.4ex plus 0.2ex minus 0.2ex, + leftmargin=!% +} +% \end{macrocode} +% +% \begin{macrocode} +\setlist[description]{ + font= + \bool_if:nTF { \g_@@_books_rubric_bool || \g_@@_inside_frontcover_bool || \g_@@_inside_backcover_bool } + { + \color{black} + }{ + \color{@@_description_label_light_color} + } + \bfseries +} +% \end{macrocode} +% +% \subsection{Miscellaneous} +% +% We fix the \pkg{csquotes}' quotes for PDF strings. +% \begin{macrocode} +\DeclarePlainStyle{«~}{~»}{`}{'} +% \end{macrocode} +% +% We change the default settings of the floats placement. +% \begin{macrocode} +\setcounter{topnumber}{3} +\renewcommand{\topfraction}{0.8} +% \end{macrocode} +% +% We change the default vertical space between text and footnotes. +% \begin{macrocode} +\addtolength{\skip\footins}{.25\baselineskip} +% \end{macrocode} +% +% We change the default horizontal space between coloumns in multicolumn mode. +% \begin{macrocode} +\setlength{\columnsep}{7mm}% +% \end{macrocode} +% +% We change the way the section counter is displayed (the chapter should not appear). +% \begin{macrocode} +\renewcommand{\thesection}{\arabic{section}}% +% \end{macrocode} +% +% In case \Pkg{siunitx} is loaded, we make it follow the French rules. +% \begin{macrocode} +\@ifpackageloaded{siunitx}{% + \sisetup{locale=FR} +} +% \end{macrocode} +% +% We change the color of the table rules. +% \begin{macrocode} +\arrayrulecolor{@@_arrayrule_color}% +% \end{macrocode} +% +% We change the floating table name (as translated by the \pkg{frenchb} +% module from \Pkg{babel}) from \enquote{Table} to \enquote{Tableau}. +% \begin{macrocode} +\addto\captionsfrench{\def\tablename{{\scshape Tableau}}}% +% \end{macrocode} +% +% \section{Miscellaneous (re)definitions} +% +% We gather here miscellaneous redefinitions. +% +% \subsection{Vectors} +% +% Vectors, even written with "\vec", are typeset with \pkg{esvect}'s "\vv": +% \begin{macrocode} +\RenewDocumentCommand \vec { m } { + \vv{#1} +} +% \end{macrocode} +% +% \begin{macro}{\usetikzlibrary} +% The "\usetikzlibrary" switch is redefined in order to get rid of the bug +% reported here: \url{https://sourceforge.net/p/pgf/bugs/353/}. +% \begin{macrocode} +\cs_set_eq:NN \_@@_orig_usetikzlibrary \usetikzlibrary +\RenewDocumentCommand \usetikzlibrary { m } { + \shorthandoff{:}% + \_@@_orig_usetikzlibrary{#1} + \shorthandon{:}% + % \begingroup + % \NoAutoSpacing + % \_@@_orig_usetikzlibrary{#1} + % \endgroup +} +% \end{macrocode} +% \end{macro} +% +% \subsection{Usual theorems and the like} +% +% Some usual theorems and the like are defined, thanks to \Pkg{thmtools}. First, +% we define a private function "\_@@_new_theorem" that defines: +% \begin{enumerate} +% \item a new (private, \pkg{thmtools}) theorem with 4 arguments: +% \begin{enumerate} +% \item possible additional options to the style "_@@_tcb_alltheorems_style" +% defined earlier for all \enquote{theorems}, +% \item name of the (private) \pkg{thmtools} theorem, +% \item French title for this theorem, +% \item English title for this theorem. +% \end{enumerate} +% \item a public environment based on this private theorem with a the usual +% syntax of \pkg{amsthm} theorems, except it has an optional argument for +% possible additional options to the default styles ("theorem" or +% "definition"). +% \end{enumerate} +% +% \begin{macro}{\bilingual} +% \begin{macrocode} +\cs_new_protected:Nn \_@@_bilingual:nnn +{ + \deftranslation[to=French]{#1}{#2}% + \deftranslation[to=English]{#1}{#3}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +\cs_new_protected:Nn \_@@_new_theorem:nnnn +{ + % \_@@_bilingual:nnn {#2}{#3}{#4} + \deftranslation[to=French]{#2}{#3}% + \deftranslation[to=English]{#2}{#4}% + \declaretheorem[% + #1,% + name=\translate{#2} + ]{#2} + \declaretheorem[% + #1,% + name=\translate{#2}, + numbered=no + ]{#2*} +} +\cs_generate_variant:Nn \_@@_new_theorem:nnnn { nnVV } +\declaretheoremstyle[spaceabove=3pt,notefont=\bfseries,bodyfont=\itshape]{theorem} +\declaretheoremstyle[spaceabove=3pt,notefont=\bfseries,bodyfont=\normalfont]{definition} +\declaretheoremstyle[spaceabove=3pt,bodyfont=\normalfont,qed=\ensuremath{\qedsymbol},headfont=\normalfont\itshape,numbered=no]{proof} +% \end{macrocode} +% +% Then, we define a public command, similar to "\newtheorem", based on +% "\_@@_new_theorem", that lets the user define his own theorems: +% \begin{macrocode} +\RenewDocumentCommand \newtheorem { O{} m } +{ + \tl_clear:N \l_@@_newtheorem_style_tl + \tl_clear:N \l_@@_newtheorem_frenchtitle_tl + \tl_clear:N \l_@@_newtheorem_englishtitle_tl + \tl_set:Nn \l_@@_newtheorem_englishtitle_tl { + \MakeUppercase #2 + } + \tl_set:Nf \l_@@_newtheorem_frenchtitle_tl { + \l_@@_newtheorem_englishtitle_tl + } + \tl_set:Nn \l_@@_newtheorem_style_tl { + theorem + } + \IfNoValueF {#1} + { + \keys_set:nn { gzt/newtheorem } { #1 } + } + % \tl_if_eq:VVF { \l_@@_newtheorem_englishtitle_tl } { \MakeUppercase #2 } + % {% + % \tl_show:N \l_@@_newtheorem_englishtitle_tl + % \tl_show:N \l_@@_newtheorem_frenchtitle_tl + % \tl_if_eq:NNF { \l_@@_newtheorem_frenchtitle_tl } { \l_@@_newtheorem_englishtitle_tl } + % {% + % \tl_set:Nf \l_@@_newtheorem_frenchtitle_tl { + % \l_@@_newtheorem_englishtitle_tl + % } + % } + % } + % \tl_show:N \l_@@_newtheorem_style_tl + % \tl_show:N \l_@@_newtheorem_frenchtitle_tl + % \tl_show:N \l_@@_newtheorem_englishtitle_tl + \_@@_new_theorem:nnVV {style=\l_@@_newtheorem_style_tl}{#2}{\l_@@_newtheorem_frenchtitle_tl}{\l_@@_newtheorem_englishtitle_tl} +} +% \end{macrocode} +% +% Finally, we define some usual theorems: +% \begin{macrocode} +\newtheorem[frenchtitle=Th\'eor\`eme]{theorem} +% \newtheorem[frenchtitle=Th\'eor\`eme,englishtitle=Theorem]{theoreme} +\newtheorem[frenchtitle=Corollaire]{corollary} +% \newtheorem[englishtitle=corollary]{corollaire} +\newtheorem{conjecture} +\newtheorem{proposition} +\newtheorem[frenchtitle=Lemme]{lemma} +% \newtheorem[englishtitle=Lemma]{lemme} +\newtheorem[frenchtitle=Axiome]{axiom} +% \newtheorem[englishtitle=Axiom]{axiome} +% +\newtheorem[style=definition,frenchtitle=D\'efinition]{definition} +\newtheorem[style=definition,frenchtitle=Remarque]{remark} +\newtheorem[style=definition,frenchtitle=Exemple]{example} +\newtheorem[style=definition]{notation} +% +\let\proof\relax +\newtheorem[style=proof,frenchtitle=Preuve]{proof} +% +\cs_new_protected:Nn \_@@_clone_theorem:nn +{ + \NewDocumentEnvironment{#1}{ } + { + \begin{#2} + } + { + \end{#2} + } + \NewDocumentEnvironment{#1*}{ } + { + \begin{#2*} + } + { + \end{#2*} + } +} +\_@@_clone_theorem:nn {theoreme} {theorem} +\_@@_clone_theorem:nn {corollaire}{corollary} +\_@@_clone_theorem:nn {lemme}{lemma} +\_@@_clone_theorem:nn {axiome}{axiom} +\_@@_clone_theorem:nn {remarque}{remark} +\_@@_clone_theorem:nn {exemple}{example} +\_@@_clone_theorem:nn {preuve}{proof} +% \end{macrocode} +% +% \subsection{(Reciprocal) Trigonometric and hyperbolic functions} +% +% Reciprocal trigonometric functions, even written with usual "\arccos", +% "\arcsin", "\arctan", etc. are typeset with an uppercase \enquote{A}: +% \begin{macrocode} +\DeclareMathOperator{\cotan}{cotan} +\DeclareMathOperator{\Arccos}{Arccos} +\DeclareMathOperator{\Arcsin}{Arcsin} +\DeclareMathOperator{\Arctan}{Arctan} +\DeclareMathOperator{\Argch}{Argch} +\DeclareMathOperator{\Argsh}{Argsh} +\DeclareMathOperator{\Argth}{Argth} +\cs_set_eq:NN \_@@_orig_arccos \arccos +\cs_set_eq:NN \_@@_orig_arcsin \arcsin +\cs_set_eq:NN \_@@_orig_arctan \arctan +\RenewDocumentCommand \arccos { } { + \IfLanguageName {french}{\Arccos}{\_@@_orig_arccos}% +} +\RenewDocumentCommand \arcsin { } { + \IfLanguageName {french}{\Arcsin}{\_@@_orig_arcsin}% +} +\RenewDocumentCommand \arctan { } { + \IfLanguageName {french}{\Arctan}{\_@@_orig_arctan}% +} +\DeclareMathOperator{\ch}{ch} +\DeclareMathOperator{\sh}{sh} +\cs_set_eq:NN \_@@_orig_tanh \tanh +\RenewDocumentCommand \tanh { } { + \IfLanguageName {french}{\operatorname{th}}{\_@@_orig_tanh}% +} +\cs_set_eq:NN \_@@_orig_log \log +\cs_set_eq:NN \_@@_orig_lg \lg +\RenewDocumentCommand \log { s } { + \IfBooleanTF {#1} + { + \_@@_orig_log + } + { + \ln + } +} +\RenewDocumentCommand \lg { s } { + \IfBooleanTF {#1} + { + \_@@_orig_lg + } + { + \ln + } +} +\cs_set_eq:NN \_@@_orig_leq \leq +\cs_set_eq:NN \_@@_orig_geq \geq +\RenewDocumentCommand \le { } {% + \IfLanguageName {french}{\leqslant}{\_@@_orig_leq}% +} +\RenewDocumentCommand \leq { } {% + \IfLanguageName {french}{\leqslant}{\_@@_orig_leq}% +} +\RenewDocumentCommand \ge { } {% + \IfLanguageName {french}{\geqslant}{\_@@_orig_geq}% +} +\RenewDocumentCommand \geq { } {% + \IfLanguageName {french}{\geqslant}{\_@@_orig_geq}% +} +\NewDocumentCommand \N { } {\mathbb{N}} +\NewDocumentCommand \Z { } {\mathbb{Z}} +\NewDocumentCommand \D { } {\mathbb{D}} +\NewDocumentCommand \Q { } {\mathbb{Q}} +\NewDocumentCommand \R { } {\mathbb{R}} +\NewDocumentCommand \C { } {\mathbb{C}} +\NewDocumentCommand \K { } {\mathbb{K}} +% \end{macrocode} +% +% We define a token list variable that contains the color of the description +% labels because it won't be constant but will be: +% \begin{itemize} +% \item black in the front matter and in the books rubric +% \end{itemize} +% +% We now leave the \LaTeX3{} programming environment. +% \begin{macrocode} +\ExplSyntaxOff +% \end{macrocode} +% +% \begin{macrocode} +% +% \end{macrocode} +% +% \section{Initial configuration file} +% Before the code of the \gztcl{} by itself, we give the initial configuration +% file. +% +% \begin{macrocode} +%<*configuration> +% \end{macrocode} +% +% First, we create the new entry type "interview" and the new field +% "interviewee". +% \begin{macrocode} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Journal data +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\journalsetup{% + publisher = \smf, + address = Institut Henri Poincar\'e\newline + 11 rue Pierre et Marie Curie\newline + 75231 Paris cedex 05, + phone = 01 44 27 67 96, + fax = 01 40 46 90 96, + email = gazette@dma.ens.fr, + url = http://smf.emath.fr, + issn = 0224-8999 +} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% SMF President +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\president{Peigné, Marc}{}{} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Editor in chief +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\editorinchief{Adamczewski, Boris}{Institut de Mathématiques de Marseille}{boris.adamczewski@math.cnrs.fr} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Editors +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\editor{Colin, Vincent}{Université de Nantes}{vincent.colin@math.univ-nantes.fr} +\editor{Ehrhardt, Caroline}{Université Vincennes Saint-Denis}{caroline.ehrhardt@inrp.fr} +\editor{Gayet, Damien}{Institut Fourier, Grenoble}{damien.gayet@ujf-grenoble.fr} +\editor{Gouëzel, Sébastien}{Université Rennes 1}{sebastien.gouezel@univ-rennes1.fr} +\editor{Helffer, Bernard}{Université Paris-Sud}{bernard.helffer@math.u-psud.fr} +\editor{Loidreau, Pierre}{Université Rennes 1}{pierre.loidreau@univ-rennes1.fr} +\editor{Planchon, Fabrice}{Université de Nice}{fab@unice.fr} +\editor{Queffélec, Martine}{Université Lille 1}{Martine.Queffelec@univ-lille1.fr} +\editor{Seuret, Stéphane}{Université Paris Est Créteil}{seuret@u-pec.fr} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Graphic designer +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\graphicdesigner{Lozanne, Nathalie}{}{n.lozanne@free.fr} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Secretary +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\secretary{Ropartz, Claire}{}{} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% LaTeX class designer (and maintainer(s)) +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\classdesigner{Bitouzé, Denis}{Université du Littoral Côte d'Opale}{denis.bitouze@lmpa.univ-littoral.fr} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Font designer text +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\fontdesignertext{Nous utilisons la police \href{http://ctan.org/pkg/kpfonts}{Kp-Fonts} créée par Christophe \textsc{Caignaert}.} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Printer text +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\printertext{Jouve \aside*{1 rue du docteur Sauvé 53100 Mayenne}} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Authors instructions +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{authorsinstructions} + \begin{description} + \item[Objectifs de la \gzt*{}.] Bulletin interne de la \smf{}, la \gzt{} est + un support privilégié d'expression au sein de la communauté + mathématique. À ce titre, elle informe de l'actualité des mathématiques, de + leur enseignement, de leur histoire, de leur relations avec d'autres + sciences (physique, informatique, biologie, etc.). + + On y trouve donc des articles scientifiques de présentation, ainsi que des + récensions de parutions mathématiques récentes. Elle contient aussi des + informations sur tout ce qui concerne la vie professionnelle d'un + mathématicien (recrutements, conditions de travail, publications + scientifiques, etc.) et aussi des témoignages ou des tribunes libres. + + La \gzt{} paraît à raison de quatre numéros par an avec, optionnellement, un + numéro spécial consacré à un sujet particulier de mathématiques ou bien à un + grand mathématicien. + + Elle est envoyée gratuitement à chaque adhérent. Les numéros actuel et + anciens sont disponibles en ligne + (\url{http://smf4.emath.fr/Publications/Gazette/}). + + \item[Soumission d'article.] Les articles doivent être envoyés au secrétariat, + de préférence par courrier électronique (\email{gazette@dma.ens.fr}), pour + être examinés par le comité de rédaction. Si un article est accepté, son + fichier source doit alors être fourni, de préférence sous forme d'un fichier + \TeX{} ou, à l'extrême rigueur, LibreOffice, OpenOffice ou + Word\textregistered{} ; une saisie de manuscrits est cependant possible pour + des textes courts. + + Les fichiers \TeX{} doivent : + \begin{itemize} + \item de préférence recourir au format \LaTeXe{} : éviter les commandes des + autres formats (tels que plain \TeX{}) ; + \item être si possible \enquote{encodés} en \texttt{UTF-8} ; + \item être le plus \enquote{pur} possible : éviter les macros + \enquote{exotiques} ainsi que les insertions manuelles d'espacements + horizontaux ou verticaux (\gztverb{\hspace}, \gztverb{\hskip}, + \gztverb{\vspace}, \gztverb{\vskip}, \gztverb{\enlargethispage}, etc.). + \end{itemize} + Les illustrations qui ne sont pas directement codées en \TeX{} doivent être + fournies aux formats \texttt{.pdf} (à privilégier) ou, avec un bonne + définition (300~\textsc{dpi} minimum), \texttt{.png} ou \texttt{.jpg}. Le + format \texttt{.eps}, quoique indirectement supporté, est déconseillé. + + Pour faciliter la composition de textes destinés à la \gzt{}, la \smf{} + propose la classe \LaTeX{} \gztarticlecl{} fournie par les distributions + \TeX{} courantes (\TeX{} Live et Mac\TeX{} \aside{à partir de leur version + 2015} ainsi que MiK\TeX{}), et sinon téléchargeable depuis la page + \url{http://ctan.org/pkg/gzt}. Sa documentation détaillée se trouve à la + page \url{http://mirrors.ctan.org/macros/latex/contrib/gzt/doc/gzt.pdf}. On + prendra garde au fait que l'usage de cette classe nécessite une distribution + \TeX{} à jour. + + Pour plus de détails, consulter la page + \url{http://smf.emath.fr/content/la-gazette-des-mathematiciens}. + % + % \item[Rubrique \enquote{Mathématiques}] La \gzt{} publie des articles de + % mathématiques et d'interactions ou applications des mathématiques, + % chargés + % de présenter un résultat, exposer une notion ou de commenter une + % actualité. + % + % Ils s'adressent à un public étendu. Les textes privilégiés sont courts, + % pédagogiques et illustrés par des exemples. + % + % La bibliographie ne vise pas à l'exhaustivité et se concentre sur les + % textes + % introductifs et de référence. + % + % Les articles d'histoire des mathématiques ou contenant des vues + % historiques + % ou épistémologiques sont également bienvenus et doivent être conçus dans + % le + % même esprit. + % + % \item[Rubrique \enquote{Livres}] La rubrique \enquote{Livres} publie des + % recensions s'attachant à présenter des ouvrages de mathématiques et des + % ouvrages sur les mathématiques (leur histoire, leur philosophie, et plus + % généralement tout ce qui a trait aux mathématiques et aux + % mathématiciens). + % + % Quelques recommendations : + % \begin{itemize} + % \item Commencez la recension en donnant quelques informations sur le + % livre + % (titre, nom l'auteur, collection à laquelle il appartient, nom de + % l'éditeur, ville de la maison d'édition, année de la publication, + % nombre + % de pages, \textsc{isbn} et prix en euros ou en dollars). + % \item Précisez à quel public (de quel niveau) s'adresse le livre. + % \item Vous êtes libre de dire ce que vous pensez (dans les limites de la + % politesse et de la correction). Le comité de rédaction se réserve la + % décision finale de publication après relecture de votre recension. + % \item Les recensions doivent être brèves (une ou deux pages, trois au + % maximum) et synthétiser l'apport original d'un ouvrage. Dans le cas + % des + % ouvrages de mathématiques, elles n'ont pas pour objectif de rendre + % compte + % d'une théorie et d'en donner un exposé ; la recension proprement dite + % peut + % toutefois être précédée, à titre d'introduction à l'analyse de + % l'ouvrage, + % d'un bref exposé panoramique et historique des idées générales du + % domaine. + % \item N'insérez pas de bibliographie. + % \item Signez de vos nom et prénom et indiquez les noms de + % l'établissement et + % de la ville où vous exercez. + % \end{itemize} + \end{description} +\end{authorsinstructions} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Font designer +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\fontdesigner{Caignaert, Christophe}{}{} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Réglages divers +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\pgfplotsset{compat=1.12}% +% \end{macrocode} +% +% \begin{macrocode} +% +% \end{macrocode} +% +% We now give the rest of the code of the source file of the Gazette's logo. +% \begin{macrocode} +%<*class-logo> +% \end{macrocode} +% +% \begin{macrocode} +\ExplSyntaxOff +% +\begin{document} +\frontmatterheadtext +\end{document} +% \end{macrocode} +% +% \begin{macrocode} +% +% \end{macrocode} +% +% \subsection{Local language definitions for \Package{listings}} +% +% Now, we create some \file{lstlang0.sty} files where are extended +% some (or defined new) languages. +% +% \subsubsection{Extension of the \enquote{LaTeX} TeX dialect} +% +% \begin{macrocode} +%<*class-lstlang0> +% \end{macrocode} +% +% \begin{macrocode} +\lst@definelanguage[extLaTeX]{TeX}[LaTeX]{TeX}{% + moretexcs={% + footnotesize,huge,Huge,large,Large,LARGE,large,Large,scriptsize,tiny,% + includegraphics,cite,ttwplink,vref,LTXtable,tableofcontents,frontmatter,mainmatter,% + part,chapter,section,subsection,subsubsection,paragraph,subparagraph,RequirePackage,% + listoftables,listoffigures,lstlistingname,si,SI,ohm,num,space,shorthandon,shorthandoff,% + abstractname,appendixname,contentsname,listfigurename,listtablename,indexname,% + figurename,tablename,chaptername,pagename,seename,alsoname,proofname,bibname,glossaryname,% + addto,captionsenglish,captionsfrench,lipsum,href,url,partname,refname,renewcommand*,% + appendix,lstlistoflistings,graphicpath,loadglsentries,hypersetup,detect-all,SetWatermarkColor,% + @pnumwidth,bookmarksetup,DeclareTextCommand% + },% + morekeywords=[1]{% Environments' names + tabular,tabulary,math% + },% + morekeywords=[2]{% Keys of key-value lists and packages' names + bookmarksdepth,see,babel,colorlinks,linktoc% + },% + morekeywords=[3]{% Values of key-value lists + german,ngerman,french,english,spanish% + }, + alsoletter={-*@1234560}% +}% +% \end{macrocode} +% +% \subsubsection{Definition of the \enquote{gzt} \TeX{} dialect} +% +% \begin{macrocode} +\lst@definelanguage[gzt]{TeX}[LaTeX]{TeX}{% + % yathesis% TODO : à mettre ailleurs + moretexcs={% Control sequences' names + author,title,subtitle,acknowledgements,% + },% + % Environments' names + morekeywords={% + },% + morekeywords=[1]{% Environments' names + abstract,dedicationspage,epigraphspage,epigraphs,% + glossaries,otherlanguage% + },% + morekeywords=[2]{% Keys of key-value lists + short,affiliation,photo,email,webpage,minibio% + },% + morekeywords=[3]{% Values of key-value lists + % + },% + morekeywords=[4]{% Class and packages options + % + },% + morekeywords=[5]{% Translation labels + % + },% + alsoletter={!-*1234560}% +}% +\lst@definelanguage[glossaries]{TeX}[LaTeX]{TeX}% +{% + % Séquences de contrôles (communément appelées commandes ou macros) + moretexcs={% + makeglossaries,printglossaries,printglossary,newglossaryentry,gls,Gls,GLS,glspl,Glspl,GLSpl,newacronym,% + glsuseri,glsuserii,glsuseriii,glsuseriv,glsuserv,glsuservi,glsshortpluralkey,glslongpluralkey,loadglsentries,% + glsadd,glstextformat,glsnamefont,glossarypreamble,glossarypostamble,acrshort,acrshort*,acrlong,acrfull,% + Acrshort,ACRshort,Acrlong,ACRlong,Acrfull,ACRfull,acrshortpl,Acrshortpl,acrlongpl,Acrlongpl,acrfullpl,Acrfullpl,% + Acrlong*,acronymtype,printacronyms,printsymbols% + },% + % Environments' names + morekeywords={% + },% + % Mots-clés de niveau 2 : arguments obligatoires et environnements + morekeywords=[2]{% + first,firstplural,plural,sort,nonumberlist,name,acronym,acronyms,symbols,% + user1,user2,user3,user4,user5,user6,hyper,style,xindy,toc,% + useri,userii,useriii,useriv,userv,uservi% + },% + % Mots-clés de niveau 3 : arguments optionnels valeurs de clés dans clé=valeur + morekeywords=[3]{% + listgroup,listhypergroup,% + % textrm,textit,textsf,textsl,texttt,textup,textbf,textsc,textmd,emph,% + hyperrm,hyperit,hypersf,hypersl,hypertt,hyperup,hyperbf,hypersc,hypermd,hyperemph% + },% + sensitive% +}[keywords,tex,comments]% +% +\lst@definelanguage[biblatex]{TeX}[LaTeX]{TeX}% +{% + % Séquences de contrôles (communément appelées commandes ou macros) + moretexcs={% + printbibliography,SetCiteCommand,autocite% + },% + % Mots-clés de niveau 1 : arguments optionnels + morekeywords={% + },% + % Mots-clés de niveau 2 : arguments obligatoires et environnements + morekeywords=[2]{% + heading% + },% + % Mots-clés de niveau 3 : arguments optionnels valeurs de clés dans clé=valeur + morekeywords=[3]{% + bibintoc% + },% + sensitive% +}[keywords,tex,comments]% +% +\lst@definelanguage[tcolorbox]{TeX}[LaTeX]{TeX}% +{% + % Séquences de contrôles (communément appelées commandes ou macros) + moretexcs={% + tcbset,tcbuselibrary% + },% + % Mots-clés de niveau 1 : arguments optionnels + morekeywords={% + },% + % Mots-clés de niveau 2 : arguments obligatoires et environnements + morekeywords=[2]{% + colback,beamer,skins% + },% + % Mots-clés de niveau 3 : arguments optionnels valeurs de clés dans clé=valeur + morekeywords=[3]{% + lightgray,red!50!white% + },% + sensitive,% +}[keywords,tex,comments]% +% \end{macrocode} +% +% \begin{macrocode} +% +% \end{macrocode} +% +% \begin{macrocode} +%<*class-latexmkrc> +% \end{macrocode} +% +% \begin{macrocode} +$pdf_mode = 1; + +$bibtex_use = 1; +$bibtex = 'biber %O %B'; + +add_cus_dep('glo', 'gls', 0, 'makeindex'); +add_cus_dep('glo2', 'gls2', 0, 'makeglossaries'); +add_cus_dep('acn', 'acr', 0, 'makeglossaries'); +add_cus_dep('slo', 'sls', 0, 'makeglossaries'); +sub makeglossaries{ + system( "makeglossaries \"$_[0]\"" ); +} +sub makeindex{ + system( "makeindex -s gglo.ist -o \"$_[0].gls\" \"$_[0].glo\"" ); +} + +$makeindex = 'texindy -L french'; + +add_cus_dep('idx', 'ind', 0, 'texindy'); +sub texindy{ + system("texindy -L french \"$_[0].idx\""); +} + +@generated_exts = qw(aux idx ind lo* out toc acn acr alg bbl bcf fls gl* ist +run.xml sbl* sl* sym* xdy unq synctex.gz mw *~ + +$clean_ext = 'synctex.gz synctex.gz(busy) run.xml tex.bak bbl bcf fdb_latexmk run tdo listing' +db* listing tcbtemp ins drv +); +$postscript_mode = $dvi_mode = 0; +$quote_filenames = 0; +% \end{macrocode} +% +% \begin{macrocode} +% +% \end{macrocode} +% +% \endinput + +% Local Variables: +% mode: doctex +% ispell-local-dictionary: "english" +% TeX-command-default: "TeX" +% TeX-master: t +% End: diff --git a/Master/texmf-dist/source/latex/gzt/gzt.ins b/Master/texmf-dist/source/latex/gzt/gzt.ins new file mode 100644 index 00000000000..8105aa983b4 --- /dev/null +++ b/Master/texmf-dist/source/latex/gzt/gzt.ins @@ -0,0 +1,95 @@ +%% +%% This is file `gzt.ins', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% gzt.dtx (with options: `install') +%% ----------------------------------------------------------------------------- +%% gzt --- SMF bundle of classes for the French journal "La Gazette des +%% Math'ematiciens", version 0.9 +%% +%% E-mail: denis.bitouze@lmpa.univ-littoral.fr +%% Released under the LaTeX Project Public License v1.3c or later +%% See http://www.latex-project.org/lppl.txt +%% ----------------------------------------------------------------------------- +\input l3docstrip.tex +\Msg{********************************************************} +\Msg{* Installation} +\Msg{* Class: gzt 2015/05/02 v0.9} +\Msg{* for the French journal} +\Msg{* "La Gazette des Math'ematiciens" (DB)} +\Msg{********************************************************} +\keepsilent +\askforoverwritefalse +\preamble +----------------------------------------------------------------------------- +gzt --- SMF bundle of classes for the French journal "La Gazette des + Math'ematiciens", version 0.9 + +E-mail: denis.bitouze@lmpa.univ-littoral.fr +Released under the LaTeX Project Public License v1.3c or later +See http://www.latex-project.org/lppl.txt +----------------------------------------------------------------------------- +\endpreamble +\postamble +---------------------------------------------------------------------------- +This work may be distributed and/or modified under the +conditions of the LaTeX Project Public License, either version 1.3 +of this license or (at your option) any later version. +The latest version of this license is in + http://www.latex-project.org/lppl.txt +and version 1.3 or later is part of all distributions of LaTeX +version 2005/12/01 or later. + +This work has the LPPL maintenance status `maintained'. + +The Current Maintainer of this work is Denis Bitouz'e. + +This work consists of the file gzt.dtx + and the derived files gzt.cls, + gztarticle.cls, + gzt.ins, + gzt.pdf, + and a number of configuration files. +\endpostamble +\def\GZT@classname{\jobname} +\def\GZT@logo{\GZT@classname-logo} +\def\GZT@addons{addons} +\usedir{/} +\generate{ + \nopreamble\nopostamble + \file{README}{\from{\jobname.dtx}{readme}} +}% +\usedir{tex/latex/\GZT@classname} +\generate{% + \file{\GZT@classname.cls}{\from{\jobname.dtx}{class}} + \file{\GZT@classname article.cls}{\from{\jobname.dtx}{class-article}} + \file{\GZT@classname.dbx}{\from{\jobname.dtx}{datamodel}} + \file{\GZT@classname.lbx}{\from{\jobname.dtx}{languagemodel}} + \nopreamble\nopostamble + \file{\GZT@classname.cfg}{\from{\jobname.dtx}{configuration}} +}% +\endbatchfile + +%% ---------------------------------------------------------------------------- +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.3 +%% of this license or (at your option) any later version. +%% The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.3 or later is part of all distributions of LaTeX +%% version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status `maintained'. +%% +%% The Current Maintainer of this work is Denis Bitouz'e. +%% +%% This work consists of the file gzt.dtx +%% and the derived files gzt.cls, +%% gztarticle.cls, +%% gzt.ins, +%% gzt.pdf, +%% and a number of configuration files. +%% +%% End of file `gzt.ins'. diff --git a/Master/texmf-dist/tex/latex/gzt/gzt.cfg b/Master/texmf-dist/tex/latex/gzt/gzt.cfg new file mode 100644 index 00000000000..4ba6681720e --- /dev/null +++ b/Master/texmf-dist/tex/latex/gzt/gzt.cfg @@ -0,0 +1,178 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Journal data +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\journalsetup{% + publisher = \smf, + address = Institut Henri Poincar\'e\newline + 11 rue Pierre et Marie Curie\newline + 75231 Paris cedex 05, + phone = 01 44 27 67 96, + fax = 01 40 46 90 96, + email = gazette@dma.ens.fr, + url = http://smf.emath.fr, + issn = 0224-8999 +} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% SMF President +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\president{Peigné, Marc}{}{} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Editor in chief +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\editorinchief{Adamczewski, Boris}{Institut de Mathématiques de Marseille}{boris.adamczewski@math.cnrs.fr} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Editors +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\editor{Colin, Vincent}{Université de Nantes}{vincent.colin@math.univ-nantes.fr} +\editor{Ehrhardt, Caroline}{Université Vincennes Saint-Denis}{caroline.ehrhardt@inrp.fr} +\editor{Gayet, Damien}{Institut Fourier, Grenoble}{damien.gayet@ujf-grenoble.fr} +\editor{Gouëzel, Sébastien}{Université Rennes 1}{sebastien.gouezel@univ-rennes1.fr} +\editor{Helffer, Bernard}{Université Paris-Sud}{bernard.helffer@math.u-psud.fr} +\editor{Loidreau, Pierre}{Université Rennes 1}{pierre.loidreau@univ-rennes1.fr} +\editor{Planchon, Fabrice}{Université de Nice}{fab@unice.fr} +\editor{Queffélec, Martine}{Université Lille 1}{Martine.Queffelec@univ-lille1.fr} +\editor{Seuret, Stéphane}{Université Paris Est Créteil}{seuret@u-pec.fr} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Graphic designer +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\graphicdesigner{Lozanne, Nathalie}{}{n.lozanne@free.fr} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Secretary +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\secretary{Ropartz, Claire}{}{} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% LaTeX class designer (and maintainer(s)) +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\classdesigner{Bitouzé, Denis}{Université du Littoral Côte d'Opale}{denis.bitouze@lmpa.univ-littoral.fr} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Font designer text +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\fontdesignertext{Nous utilisons la police \href{http://ctan.org/pkg/kpfonts}{Kp-Fonts} créée par Christophe \textsc{Caignaert}.} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Printer text +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\printertext{Jouve \aside*{1 rue du docteur Sauvé 53100 Mayenne}} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Authors instructions +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{authorsinstructions} + \begin{description} + \item[Objectifs de la \gzt*{}.] Bulletin interne de la \smf{}, la \gzt{} est + un support privilégié d'expression au sein de la communauté + mathématique. À ce titre, elle informe de l'actualité des mathématiques, de + leur enseignement, de leur histoire, de leur relations avec d'autres + sciences (physique, informatique, biologie, etc.). + + On y trouve donc des articles scientifiques de présentation, ainsi que des + récensions de parutions mathématiques récentes. Elle contient aussi des + informations sur tout ce qui concerne la vie professionnelle d'un + mathématicien (recrutements, conditions de travail, publications + scientifiques, etc.) et aussi des témoignages ou des tribunes libres. + + La \gzt{} paraît à raison de quatre numéros par an avec, optionnellement, un + numéro spécial consacré à un sujet particulier de mathématiques ou bien à un + grand mathématicien. + + Elle est envoyée gratuitement à chaque adhérent. Les numéros actuel et + anciens sont disponibles en ligne + (\url{http://smf4.emath.fr/Publications/Gazette/}). + + \item[Soumission d'article.] Les articles doivent être envoyés au secrétariat, + de préférence par courrier électronique (\email{gazette@dma.ens.fr}), pour + être examinés par le comité de rédaction. Si un article est accepté, son + fichier source doit alors être fourni, de préférence sous forme d'un fichier + \TeX{} ou, à l'extrême rigueur, LibreOffice, OpenOffice ou + Word\textregistered{} ; une saisie de manuscrits est cependant possible pour + des textes courts. + + Les fichiers \TeX{} doivent : + \begin{itemize} + \item de préférence recourir au format \LaTeXe{} : éviter les commandes des + autres formats (tels que plain \TeX{}) ; + \item être si possible \enquote{encodés} en \texttt{UTF-8} ; + \item être le plus \enquote{pur} possible : éviter les macros + \enquote{exotiques} ainsi que les insertions manuelles d'espacements + horizontaux ou verticaux (\gztverb{\hspace}, \gztverb{\hskip}, + \gztverb{\vspace}, \gztverb{\vskip}, \gztverb{\enlargethispage}, etc.). + \end{itemize} + Les illustrations qui ne sont pas directement codées en \TeX{} doivent être + fournies aux formats \texttt{.pdf} (à privilégier) ou, avec un bonne + définition (300~\textsc{dpi} minimum), \texttt{.png} ou \texttt{.jpg}. Le + format \texttt{.eps}, quoique indirectement supporté, est déconseillé. + + Pour faciliter la composition de textes destinés à la \gzt{}, la \smf{} + propose la classe \LaTeX{} \gztarticlecl{} fournie par les distributions + \TeX{} courantes (\TeX{} Live et Mac\TeX{} \aside{à partir de leur version + 2015} ainsi que MiK\TeX{}), et sinon téléchargeable depuis la page + \url{http://ctan.org/pkg/gzt}. Sa documentation détaillée se trouve à la + page \url{http://mirrors.ctan.org/macros/latex/contrib/gzt/doc/gzt.pdf}. On + prendra garde au fait que l'usage de cette classe nécessite une distribution + \TeX{} à jour. + + Pour plus de détails, consulter la page + \url{http://smf.emath.fr/content/la-gazette-des-mathematiciens}. + % + % \item[Rubrique \enquote{Mathématiques}] La \gzt{} publie des articles de + % mathématiques et d'interactions ou applications des mathématiques, + % chargés + % de présenter un résultat, exposer une notion ou de commenter une + % actualité. + % + % Ils s'adressent à un public étendu. Les textes privilégiés sont courts, + % pédagogiques et illustrés par des exemples. + % + % La bibliographie ne vise pas à l'exhaustivité et se concentre sur les + % textes + % introductifs et de référence. + % + % Les articles d'histoire des mathématiques ou contenant des vues + % historiques + % ou épistémologiques sont également bienvenus et doivent être conçus dans + % le + % même esprit. + % + % \item[Rubrique \enquote{Livres}] La rubrique \enquote{Livres} publie des + % recensions s'attachant à présenter des ouvrages de mathématiques et des + % ouvrages sur les mathématiques (leur histoire, leur philosophie, et plus + % généralement tout ce qui a trait aux mathématiques et aux + % mathématiciens). + % + % Quelques recommendations : + % \begin{itemize} + % \item Commencez la recension en donnant quelques informations sur le + % livre + % (titre, nom l'auteur, collection à laquelle il appartient, nom de + % l'éditeur, ville de la maison d'édition, année de la publication, + % nombre + % de pages, \textsc{isbn} et prix en euros ou en dollars). + % \item Précisez à quel public (de quel niveau) s'adresse le livre. + % \item Vous êtes libre de dire ce que vous pensez (dans les limites de la + % politesse et de la correction). Le comité de rédaction se réserve la + % décision finale de publication après relecture de votre recension. + % \item Les recensions doivent être brèves (une ou deux pages, trois au + % maximum) et synthétiser l'apport original d'un ouvrage. Dans le cas + % des + % ouvrages de mathématiques, elles n'ont pas pour objectif de rendre + % compte + % d'une théorie et d'en donner un exposé ; la recension proprement dite + % peut + % toutefois être précédée, à titre d'introduction à l'analyse de + % l'ouvrage, + % d'un bref exposé panoramique et historique des idées générales du + % domaine. + % \item N'insérez pas de bibliographie. + % \item Signez de vos nom et prénom et indiquez les noms de + % l'établissement et + % de la ville où vous exercez. + % \end{itemize} + \end{description} +\end{authorsinstructions} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Font designer +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\fontdesigner{Caignaert, Christophe}{}{} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Réglages divers +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\pgfplotsset{compat=1.12}% + diff --git a/Master/texmf-dist/tex/latex/gzt/gzt.cls b/Master/texmf-dist/tex/latex/gzt/gzt.cls new file mode 100644 index 00000000000..c5918d975f4 --- /dev/null +++ b/Master/texmf-dist/tex/latex/gzt/gzt.cls @@ -0,0 +1,3529 @@ +%% +%% This is file `gzt.cls', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% gzt.dtx (with options: `class') +%% ----------------------------------------------------------------------------- +%% gzt --- SMF bundle of classes for the French journal "La Gazette des +%% Math'ematiciens", version 0.9 +%% +%% E-mail: denis.bitouze@lmpa.univ-littoral.fr +%% Released under the LaTeX Project Public License v1.3c or later +%% See http://www.latex-project.org/lppl.txt +%% ----------------------------------------------------------------------------- +\def\sectioncommandslist{}% +\let\saved@ifdefinable\@ifdefinable% +\let\saved@@ifdefinable\@@ifdefinable% +\newcommand{\startcustomization}{% + % Redefine \@ifdefinable + \renewcommand{\@ifdefinable}[2]{% + \listadd\sectioncommandslist##1% + \saved@ifdefinable{##1}{##2}% + }% + \renewcommand{\@@ifdefinable}[2]{% + \listadd\sectioncommandslist##1% + \saved@@ifdefinable{##1}{##2}% + }% +}% +\newcommand{\cleancustomization}{% + \forlistloop{\undef}{\sectioncommandslist}% + \def\sectioncommandslist{}% + \let\@ifdefinable\saved@ifdefinable% + \let\@@ifdefinable\saved@@ifdefinable% +}% +\RequirePackage{silence}% +\WarningFilter{kpfonts}{With 'easyscsl' option} +\RequirePackage{xpatch}% +\patchcmd% + {\use@@tikzlibrary}% + {% + \pgfutil@InputIfFileExists{tikzlibrary\pgf@temp.code.tex}{}{ + \pgfutil@IfFileExists{pgflibrary\pgf@temp.code.tex}{% + \expandafter\usepgflibrary\expandafter{\pgf@temp}% + }{% + \tikzerror{I did not find the tikz library + '\pgf@temp'. I looked for files named + tikzlibrary\pgf@temp.code.tex and + pgflibrary\pgf@temp.code.tex, but neither + could be found in the current texmf trees.} + }}% + }% + {% + \@pushfilename + \pgfutil@InputIfFileExists{tikzlibrary\pgf@temp.code.tex}{}{ + \pgfutil@IfFileExists{pgflibrary\pgf@temp.code.tex}{% + \expandafter\usepgflibrary\expandafter{\pgf@temp}% + }{% + \tikzerror{I did not find the tikz library + '\pgf@temp'. I looked for files named + tikzlibrary\pgf@temp.code.tex and + pgflibrary\pgf@temp.code.tex, but neither + could be found in the current texmf trees.} + }}% + \@popfilename + }% + {}{}% +\patchcmd + {\tcb@input@library@in} + {% + \input\tcbpkgprefix#1\relax% + } + {% + \@pushfilename + \input\tcbpkgprefix#1\relax% + \@popfilename + } + {}{} +\RequirePackage{l3keys2e} +\RequirePackage{xparse} +\ExplSyntaxOn +\ProvidesExplClass + {gzt} + {2015/05/02} + {0.9} + { + SMF class for the French journal^^J + "La Gazette des Math'ematiciens". + } +\NeedsTeXFormat{LaTeX2e} +\dim_const:Nn \c__gzt_pagegrid_dim { 1mm} +\keys_define:nn { gzt } +{ + pagegrid .dim_gset:N = \g__gzt_pagegrid_dim, + pagegrid .default:n = {\c__gzt_pagegrid_dim}, + forprinter .bool_gset:N = \g__gzt_for_printer_bool, + insidepages .bool_gset:N = \g__gzt_inside_pages_bool, + noinsidebackcover .bool_gset:N = \g__gzt_no_inside_backcover_bool, + cover .code:n = {% + \bool_gset_true:N \g__gzt_for_printer_bool% + \bool_gset_true:N \g__gzt_cover_bool% + },% + forauthors .bool_gset:N = \g__gzt_for_authors_bool,% +}% +\ProcessKeysOptions { gzt } +\PassOptionsToClass{openany,english,french}{book} +\LoadClassWithOptions { book } +\PassOptionsToPackage{table,cmyk}{xcolor}% +\PassOptionsToPackage{export}{adjustbox}% +\PassOptionsToPackage{english,french}{translator} +\PassOptionsToPackage{english,french}{babel} +\PassOptionsToPackage{english,french}{varioref} +\PassOptionsToPackage{english,french}{cleveref} +\RequirePackage[group=false]{standalone}% +\RequirePackage{xpatch}% +\RequirePackage{datatool}% +\pdftex_if_engine:TF + { + \RequirePackage[T1]{fontenc} + \RequirePackage[utf8]{inputenc} + }{ + \RequirePackage{fontspec} + } +\RequirePackage[sfmath,easyscsl,noDcommand]{kpfonts} +\RequirePackage[pagestyles]{titlesec}% +\RequirePackage{multicol}% +\RequirePackage{graphicx}% +\RequirePackage{import}% +\RequirePackage{longtable}% +\bool_if:nT { \g__gzt_for_authors_bool } { + \RequirePackage{draftwatermark}[2006/06/30]% +} +\RequirePackage{adjustbox}% +\RequirePackage{zref-totpages} +\RequirePackage{zref-xr}% +\RequirePackage{ragged2e}% +\RequirePackage{xspace}% +\RequirePackage{textcase}% +\RequirePackage{epigraph}% +\RequirePackage[autostyle]{csquotes}% +\RequirePackage[datamodel=gzt,backend=biber,defernumbers=true,firstinits,autolang=other]{biblatex}% +\RequirePackage{array} +\RequirePackage{booktabs} +\RequirePackage{tabularx} +\RequirePackage{nccparskip} +\RequirePackage{multirow} +\RequirePackage{varioref} +\RequirePackage{mathtools} +\RequirePackage{mathrsfs} +\RequirePackage{esvect} +\RequirePackage{everypage} +\RequirePackage{translator}% +\RequirePackage{geometry} +\RequirePackage{babel}% +\RequirePackage{eurosym}% +\RequirePackage{iflang}[2007/11/11]% +\RequirePackage{tableof}% +\RequirePackage{etoc}% +\RequirePackage[babel=true]{microtype}% +\RequirePackage[nodayofweek]{datetime}% +\RequirePackage[inline]{enumitem}% +\RequirePackage{fixltx2e}% +\RequirePackage{afterpage} +\RequirePackage{xcolor}% +\cs_set_eq:NN \__gzt_orig_preamblecmds \@preamblecmds +\RequirePackage{tikz} +\RequirePackage{pgfplots} +\RequirePackage{tcolorbox} +\RequirePackage{tikzpagenodes} +\RequirePackage{tkz-euclide} +\RequirePackage[foreground]{pagegrid}% +\RequirePackage{amsthm} +\RequirePackage{thmtools} +\cs_set_eq:NN \@preamblecmds \__gzt_orig_preamblecmds +\RequirePackage{placeins}% +\RequirePackage[hidelinks,hypertexnames=false]{hyperref}% +\RequirePackage[numbered]{bookmark}% +\RequirePackage{cleveref}% +\pdftex_if_engine:T + { + \renewcommand\familydefault{\sfdefault} + \renewcommand{\ttdefault}{lmtt} + } +\tl_remove_all:Nn \@preamblecmds { \do \DeclareMathOperator } +\tl_remove_all:Nn \@preamblecmds { \do \newacronym } +\tl_remove_all:Nn \@preamblecmds { \do \@declmathop } +\tl_remove_all:Nn \@preamblecmds { \do \usetikzlibrary } +\msg_new:nnnn{gzt}{issue-number-needed}{Option~`#1'~needed!} + {Please~specify~`#1=', + ~otherwise~`'~will~be~set~to + ~`\int_use:N\c__gzt_first_issue_number_int'.} +\msg_new:nnnn{gzt}{unknown-choice}{Choice~`#3'~invalid!} + {Please~specify~#1=#2.} +\int_new:N \g__gzt_editors_in_chief_int +\int_new:N \g__gzt_item_in_rubric_int +\int_new:N \g__gzt_articles_int +\int_new:N \g__gzt_question_int +\int_const:Nn \c__gzt_first_issue_number_int { 143 } +\int_const:Nn \c__gzt_first_issue_year_int { 2015 } +\int_const:Nn \c__gzt_first_issue_month_int { 1 } +\int_const:Nn \c__gzt_interval_in_months_int { 3 } +\tl_const:Nn \c__gzt_journal_short_title_string_tl {Gazette} +\tl_const:Nn \c__gzt_journal_title_string_tl { + \c__gzt_journal_short_title_string_tl{}~des~Math\'ematiciens% +} +\tl_const:Nn \c__gzt_gzt_class_name_tl {gzt} +\tl_const:Nn \c__gzt_gztarticle_class_name_tl {gztarticle} +\tl_const:Nn \c__gzt_editors_in_chief_string_tl +{ + \int_compare:nNnTF { \g__gzt_editors_in_chief_int } > { 1 } + { \c__gzt_editorsinchief_string_tl } + { \c__gzt_editorinchief_string_tl } +} +\tl_const:Nn \c__gzt_editorinchief_string_tl {R\'edacteur~en~chef } +\tl_const:Nn \c__gzt_editorsinchief_string_tl {R\'edacteurs~en~chef } +\tl_const:Nn \c__gzt_editors_string_tl {R\'edacteurs } +\tl_const:Nn \c__gzt_editorial_board_string_tl {Comit\'e~de~r\'edaction} +\tl_const:Nn \c__gzt_editorial_secretariat_string_tl {Secr\'etariat~de~r\'edaction} +\tl_const:Nn \c__gzt_phone_string_tl {T\'el.} +\tl_const:Nn \c__gzt_fax_string_tl {Fax} +\tl_const:Nn \c__gzt_informations_string_tl {Renseignements} +\tl_const:Nn \c__gzt_publishingdirector_string_tl {Directeur~de~la~publication} +\tl_const:Nn \c__gzt_issn_string_tl {\textsc{issn}} +\tl_const:Nn \c__gzt_isbn_string_tl {\textsc{isbn}} +\tl_const:Nn \c__gzt_latexclass_string_tl {Classe~\LaTeX{}} +\tl_const:Nn \c__gzt_printer_string_tl {Impression} +\tl_const:Nn \c__gzt_configuration_file_string_tl {gzt.cfg} +\tl_const:Nn \c__gzt_artistic_director_string_tl {Conception~graphique} +\tl_const:Nn \c__gzt_editorial_string_tl {\'Editorial} +\tl_const:Nn \c__gzt_editorinchief_signatory_string_tl {\c__gzt_editorinchief_string_tl~de~la~\c__gzt_journal_title_string_tl} +\tl_const:Nn \c__gzt_toc_string_tl {Sommaire} +\tl_const:Nn \c__gzt_president_message_string_tl {Mot~du~pr\'esident} +\tl_const:Nn \c__gzt_president_signatory_string_tl {pr\'esident~de~la~\l__gzt_smf_short_string_tl} +\tl_const:Nn \c__gzt_editorinchief_message_date_string_tl {Le~\displaydate{__gzt_editorinchief_message_date}} +\tl_const:Nn \c__gzt_president_message_date_string_tl {Le~} +\tl_const:Nn \c__gzt_frontcover_header_string_tl { + \l__gzt_uppercased_date_format\displaydate{__gzt_date} + \space + \textendash{} + \space + \No\int_use:N\g__gzt_issue_number_int% +} +\tl_const:Nn \c__gzt_frontmatter_directory_string_tl {frontmatter} +\tl_const:Nn \c__gzt_backmatter_directory_string_tl {backmatter} +\tl_const:Nn \c__gzt_editorial_file_string_tl {\c__gzt_frontmatter_directory_string_tl/editorial} +\tl_const:Nn \c__gzt_president_message_file_string_tl {\c__gzt_frontmatter_directory_string_tl/presidentmessage} +\tl_const:Nn \c__gzt_issue_path_string_tl {\int_use:N \g__gzt_issue_number_int} +\tl_const:Nn \c__gzt_images_directory_string_tl {images} +\tl_const:Nn \c__gzt_issue_images_path_string_tl {% \c__gzt_issue_path_string_tl/ + \c__gzt_images_directory_string_tl} +\tl_const:Nn \c__gzt_issue_frontcover_image_file_string_tl {frontcover} +\tl_const:Nn \c__gzt_issue_frontcover_image_path_string_tl {\c__gzt_issue_images_path_string_tl/\c__gzt_issue_frontcover_image_file_string_tl} +\tl_const:Nn \c__gzt_issue_backcover_text_file_string_tl {backcover} +\tl_const:Nn \c__gzt_backcover_page_file_string_tl {\c__gzt_backmatter_directory_string_tl/\c__gzt_issue_backcover_text_file_string_tl} +\tl_const:Nn \c__gzt_authors_instructions_file_extension_tl {ain} +\tl_const:Nn \c__gzt_authors_instructions_file_tl {\c_job_name_tl.\c__gzt_authors_instructions_file_extension_tl} +\tl_const:Nn \c__gzt_about_frontcover_string_tl {\`A~propos~de~la~couverture.} +\tl_const:Nn \c__gzt_credit_frontcover_string_tl {cr\'edit} +\tl_const:Nn \c__gzt_authors_instructions_string_tl {Instructions~aux~auteurs} +\tl_const:Nn \c__gzt_preliminary_version_string_tl {% + Ce~document~est~une~{\'e}preuve~vous~permettant~de~contr{\^o}ler~l'int{\'e}grit{\'e}~du~ + texte~d'origine~(et~de~la~bibliographie~s'il~y~en~a~une)~de~votre~article~ + {\`a}~para{\^\i}tre~dans~le~prochain~num{\'e}ro~de~la~\gzt*{}.~La~mise~en~page~ + actuelle~n'est~pas~d{\'e}finitive\,:~votre~article~pourra~en~particulier~ne~pas~ + d{\'e}buter~en~haut~d'une~page.% +} +\tl_const:Nn \c__gzt_tellme_extra_title_string_tl {...\space} +\tl_const:Nn \c__gzt_minitoc_rubric_title_separator_string_tl {\space\textendash} +\tl_const:Nn \c__gzt_mathematics_rubric_string_tl {Math\'ematiques} +\tl_const:Nn \c__gzt_dossier_rubric_string_tl {Dossier} +\tl_const:Nn \c__gzt_community_rubric_string_tl {Vie~de~la~communaut\'e} +\tl_const:Nn \c__gzt_interview_rubric_string_tl {Entretien} +\tl_const:Nn \c__gzt_teaching_rubric_string_tl {Diffusion~des~savoirs} +\tl_const:Nn \c__gzt_parity_rubric_string_tl {Parit\'e} +\tl_const:Nn \c__gzt_tellme_rubric_string_tl {Raconte-moi} +\tl_const:Nn \c__gzt_information_rubric_string_tl {Information} +\tl_const:Nn \c__gzt_rearviewmirror_rubric_string_tl {R\'etroviseur} +\tl_const:Nn \c__gzt_tribute_rubric_string_tl {Carnet} +\tl_const:Nn \c__gzt_books_rubric_string_tl {Livres} +\tl_const:Nn \c__gzt_latex_rubric_string_tl {Astuces~\LaTeX{}} +\tl_const:Nn \c__gzt_published_with_help_of_string_tl {Publi\'e~avec~le~concours~de~:} +\tl_const:Nn \c__gzt_advertisement_directory_string_tl {advertisement/} +\tl_const:Nn \c__gzt_advertisement_string_tl {Publicit\'e} +\tl_const:Nn \c__gzt_smf_short_string_tl {\textsc{smf}} +\tl_const:Nn \c__gzt_smf_short_pdf_string_tl {SMF} +\tl_const:Nn \c__gzt_smf_string_tl {Soci\'et\'e~Math\'ematique~de~France} +\tl_const:Nn \c__gzt_cad_short_string_tl {c.-\`a-d.} +\tl_const:Nn \c__gzt_cad_string_tl {c'est-\`a-dire} +\tl_const:Nn \c__gzt_Cad_short_string_tl {C.-\`a-d.} +\tl_const:Nn \c__gzt_Cad_string_tl {C'est-\`a-dire} +\tl_const:Nn \c__gzt_footer_string_tl { + \c__gzt_footer_size_font_tl + \textcolor{__gzt_smf_number_color}{\c__gzt_smf_short_string_tl} + \space + \textcolor{__gzt_date_color}{ + \textendash{}\space + \MakeTextUppercase{\c__gzt_journal_short_title_string_tl} + \bool_if:nF { \g__gzt_inside_frontcover_bool || \g__gzt_backmatter_bool } + { + \space\textendash{}\space + \l__gzt_uppercased_date_format\displaydate{__gzt_date} + \space + \textendash{}\space + \textcolor{__gzt_smf_number_color}{\No\int_use:N\g__gzt_issue_number_int} + } + } +} +\tl_const:Nn \c__gzt_smf_logo_file_string_tl {logo_SMF} +\tl_const:Nn \c__gzt_issue_bib_file_suffix_string_tl {__gzt} +\tl_const:Nn \c__gzt_issue_bib_file_string_tl {\c_job_name_tl\c__gzt_issue_bib_file_suffix_string_tl.bib} +\tl_const:Nn \c__gzt_issue_bib_path_string_tl {\c__gzt_issue_bib_file_string_tl} +\tl_const:Nn \c__gzt_issue_bib_key_tl {\int_use:N \g__gzt_issue_number_int} +\tl_const:Nn \c__gzt_interview_title_string_tl {En~apart\'e~avec~} +\tl_const:Nn \c__gzt_aside_string_tl {--} +\tl_const:Nn \c__gzt_draftwatermark_string_tl {draft} +\bool_new:N \g__gzt_frontcover_bool +\bool_new:N \g__gzt_inside_frontcover_bool +\bool_new:N \g__gzt_inside_backcover_bool +\bool_new:N \g__gzt_frontmatter_bool +\bool_new:N \g__gzt_rubric_bool +\bool_new:N \g__gzt_interview_rubric_bool +\bool_new:N \g__gzt_tellme_rubric_bool +\bool_new:N \g__gzt_rearviewmirror_rubric_bool +\bool_new:N \g__gzt_books_rubric_bool +\bool_new:N \g__gzt_mainmatter_bool +\bool_new:N \g__gzt_backmatter_bool +\bool_new:N \g__gzt_backcover_bool +\bool_new:N \g__gzt_previous_article_with_bibliography_or_minibio_bool +\bool_new:N \g__gzt_advertisement_bool +\bool_new:N \g__gzt_multicols_bool +\bool_new:N \g__gzt_refsection_bool +\dim_const:Nn \c__gzt_rubrics_abstract_width_dim { 85mm} +\dim_const:Nn \c__gzt_rubrics_head_text_abstract_width_dim { 50mm} +\dim_const:Nn \c__gzt_rubrics_head_text_no_abstract_width_dim +{ \c__gzt_rubrics_abstract_width_dim + \c__gzt_rubrics_head_text_abstract_width_dim} +\dim_new:N \l__gzt_rubrics_head_text_width_dim +\dim_const:Nn \c__gzt_layoutheight_dim { 270mm} +\dim_const:Nn \c__gzt_layoutwidth_dim { 210mm} +\dim_const:Nn \c__gzt_future_layoutoffset_dim { 5mm} +\bool_if:NTF {\g__gzt_for_printer_bool} { + \dim_const:Nn \c__gzt_layoutoffset_dim { \c__gzt_future_layoutoffset_dim} +}{ + \dim_const:Nn \c__gzt_layoutoffset_dim {\c_zero_dim} +} +\zexternaldocument[self]{\jobname}% +\int_new:N \g__gzt_total_page_number_int% +\int_gset:Nn \g__gzt_total_page_number_int { \zref@extractdefault{selfLastPage}{abspage}{0} } +\int_compare:nNnTF {\g__gzt_total_page_number_int-4}<{68} +{ + \dim_const:Nn \c__gzt_future_bindingoffset_dim { \c_zero_dim } +}{ + \int_compare:nNnTF {\g__gzt_total_page_number_int-4}<{80} + { + \dim_const:Nn \c__gzt_future_bindingoffset_dim { 3mm } + }{ + \int_compare:nNnTF {\g__gzt_total_page_number_int-4}<{88} + { + \dim_const:Nn \c__gzt_future_bindingoffset_dim { 3.5mm } + }{ + \int_compare:nNnTF {\g__gzt_total_page_number_int-4}<{96} + { + \dim_const:Nn \c__gzt_future_bindingoffset_dim { 3.9mm } + }{ + \int_compare:nNnTF {\g__gzt_total_page_number_int-4}<{104} + { + \dim_const:Nn \c__gzt_future_bindingoffset_dim { 4.1mm } + }{ + \int_compare:nNnTF {\g__gzt_total_page_number_int-4}<{120} + { + \dim_const:Nn \c__gzt_future_bindingoffset_dim { 4.5mm } + }{ + \dim_const:Nn \c__gzt_future_bindingoffset_dim { 5mm } + } + } + } + } + } +} +\bool_if:NTF {\g__gzt_cover_bool} { + \dim_const:Nn \c__gzt_bindingoffset_dim { \c__gzt_future_bindingoffset_dim } +}{ + \dim_const:Nn \c__gzt_bindingoffset_dim {\c_zero_dim} +} +\dim_const:Nn \c__gzt_paperheight_dim { \c__gzt_layoutheight_dim+2\c__gzt_layoutoffset_dim} +\bool_if:NTF {\g__gzt_cover_bool} { + \dim_const:Nn \c__gzt_paperwidth_dim { + \c__gzt_layoutwidth_dim + + + \c__gzt_layoutoffset_dim + +\c__gzt_bindingoffset_dim + } +}{ + \dim_const:Nn \c__gzt_paperwidth_dim { + \c__gzt_layoutwidth_dim + + + 2 + \c__gzt_layoutoffset_dim + +\c__gzt_bindingoffset_dim + } +} +\dim_const:Nn \c__gzt_frontcover_image_width_dim { + \c__gzt_layoutwidth_dim + + + \c__gzt_future_layoutoffset_dim +} +\dim_const:Nn \c__gzt_topmargin_dim { 31mm} +\dim_const:Nn \c__gzt_topmargin_frontcover_dim { + \c__gzt_topmargin_dim + + 30mm +} +\dim_const:Nn \c__gzt_topmargin_inside_cover_dim { + \c__gzt_topmargin_dim + +10mm +} +\dim_const:Nn \c__gzt_topmargin_front_matter_dim { + \c__gzt_topmargin_inside_cover_dim +} +\dim_const:Nn \c__gzt_headsep_dim { 24mm} +\dim_const:Nn \c__gzt_headsep_frontcover_dim { + \c__gzt_headsep_dim + +31mm + -\c__gzt_layoutoffset_dim +} +\dim_const:Nn \c__gzt_headsep_inside_frontcover_dim { + \c__gzt_headsep_dim + +7mm +} +\dim_const:Nn \c__gzt_headsep_front_matter_dim { + \c__gzt_headsep_inside_frontcover_dim +} +\dim_const:Nn \c__gzt_headheight_dim { \c_zero_dim } +\dim_const:Nn \c__gzt_botmargin_dim { 30mm} +\dim_const:Nn \c__gzt_footskip_dim { 26mm} +\dim_const:Nn \c__gzt_shift_margin_dim { 5mm } +\dim_const:Nn \c__gzt_innermargin_dim { 15mm - \c__gzt_bindingoffset_dim + \c__gzt_shift_margin_dim} +\dim_const:Nn \c__gzt_outermargin_dim { 30mm - \c__gzt_shift_margin_dim } +\dim_const:Nn \c__gzt_inside_cover_box_width_dim { 165mm }% +\dim_const:Nn \c__gzt_innermargin_inside_cover_dim { + (\c__gzt_layoutwidth_dim - \c__gzt_inside_cover_box_width_dim)/2 + - \c__gzt_bindingoffset_dim + % + \c__gzt_adjustmargin_dim +} +\dim_const:Nn \c__gzt_outermargin_inside_cover_dim { + (\c__gzt_layoutwidth_dim - \c__gzt_inside_cover_box_width_dim)/2 + % - \c__gzt_adjustmargin_dim +} +\dim_const:Nn \c__gzt_innermargin_backcover_dim { 10mm } +\dim_const:Nn \c__gzt_outermargin_backcover_dim { \c__gzt_innermargin_backcover_dim } +\dim_const:Nn \c__gzt_topmargin_backcover_dim { \c__gzt_innermargin_backcover_dim } +\dim_const:Nn \c__gzt_bottommargin_backcover_dim { \c__gzt_innermargin_backcover_dim } +\dim_const:Nn \c__gzt_frontcover_image_height_dim { 160mm} +\dim_const:Nn \c__gzt_radius_arc_dim { 85mm }% +\dim_const:Nn \c__gzt_frontmatter_headtext_xshift_dim { 19mm }% +\dim_const:Nn \c__gzt_frontmatter_headtext_o_xshift_dim { + -\c__gzt_frontmatter_headtext_xshift_dim -\c__gzt_layoutoffset_dim% +}% +\dim_const:Nn \c__gzt_frontmatter_headtext_e_xshift_dim { + \c__gzt_frontmatter_headtext_xshift_dim +\c__gzt_layoutoffset_dim% +}% +\dim_const:Nn \c__gzt_frontmatter_headtext_yshift_dim { -6.5mm-\c__gzt_layoutoffset_dim }% +\dim_const:Nn \c__gzt_header_line_width_dim { 0.25mm} +\dim_const:Nn \c__gzt_header_line_yshift_dim { -1mm-\c__gzt_header_line_width_dim}% +\dim_const:Nn \c__gzt_footer_background_height_dim { 10mm + \c__gzt_layoutoffset_dim } +\dim_const:Nn \c__gzt_front_matter_extra_innermargin_dim { 28mm } +\dim_const:Nn \c__gzt_front_matter_extra_outermargin_dim { 7mm } +\dim_const:Nn \c__gzt_inside_cover_offset_dim { \c_zero_dim }% +\dim_const:Nn \c__gzt_pictogram_width_dim { 23mm }% +\dim_const:Nn \c__gzt_header_xshift_dim { \c__gzt_pictogram_width_dim-6mm }% +\dim_const:Nn \c__gzt_header_yshift_dim { 5mm }% +\dim_const:Nn \c__gzt_xshift_arccircle_A_dim { \c__gzt_rubrics_abstract_width_dim+\c__gzt_innermargin_dim+10mm+\c__gzt_layoutoffset_dim }% +\dim_const:Nn \c__gzt_yshift_arccircle_A_dim { -22mm-\c__gzt_layoutoffset_dim }% +\dim_const:Nn \c__gzt_xshift_arccircle_B_dim {% + (\c__gzt_rubrics_abstract_width_dim+\c__gzt_innermargin_dim)/2% + % \c__gzt_innermargin_dim+(\c__gzt_rubrics_abstract_width_dim/2)% + % \c__gzt_xshift_arccircle_A_dim/2 +}% +\dim_const:Nn \c__gzt_yshift_arccircle_B_dim { -\c__gzt_layoutoffset_dim }% +\dim_const:Nn \c__gzt_xshift_arccircle_C_dim { \c__gzt_layoutoffset_dim-5mm }% +\dim_const:Nn \c__gzt_yshift_arccircle_C_dim { -19.75mm-\c__gzt_layoutoffset_dim }% +\dim_const:Nn \c__gzt_book_review_frontcover_extend_dim { 12mm }% +\dim_const:Nn \c__gzt_tcb_left_dim { 4mm }% +\dim_const:Nn \c__gzt_tcb_boxsep_dim { 1mm }% +\dim_const:Nn \c__gzt_tikz_dot_diameter_dim { 0.33mm }% +\dim_const:Nn \c__gzt_tikz_dot_spacing_dim { 1.05mm }% +\dim_const:Nn \c__gzt_rubric_extra_xoffset_dim { -\c__gzt_innermargin_dim/2 }% +\dim_const:Nn \c__gzt_rubric_xoffset_dim { 14.5mm }% +\dim_const:Nn \c__gzt_boxed_issue_number_width_dim { 30mm} +\dim_const:Nn \c__gzt_boxed_issue_number_height_dim { 8mm} +\dim_new:N \l__gzt_thumbnail_width_dim +\dim_set:Nn \l__gzt_thumbnail_width_dim {30mm} +\dim_new:N \g__gzt_abstract_box_width_dim +\dim_new:N \c__gzt_original_parindent_dim +\dim_set_eq:NN \c__gzt_original_parindent_dim \parindent +\dim_new:N \l__gzt_between_rubric_head_text_and_abstract_dim +\dim_new:N \g__gzt_minitoc_circle_diameter_dim +\dim_new:N \g__gzt_minitoc_textwidth_dim +\dim_new:N \g__gzt_minitoc_xshift_dim +\dim_new:N \g__gzt_minitoc_yshift_dim +\dim_set:Nn \g__gzt_minitoc_circle_diameter_dim {142mm} +\dim_set:Nn \g__gzt_minitoc_textwidth_dim {65mm} +\dim_set:Nn \g__gzt_minitoc_xshift_dim {-22mm} +\dim_set:Nn \g__gzt_minitoc_yshift_dim {30mm} +\dim_const:Nn \c__gzt_minitoc_from_circle_xshift_dim {-15mm} +\dim_const:Nn \c__gzt_minitoc_from_circle_yshift_dim {-\c__gzt_minitoc_from_circle_xshift_dim} +\dim_const:Nn \c__gzt_footer_height_font_dim {3mm} +\dim_const:Nn \c__gzt_minitoc_list_labelsep_dim {1em} +\geometry{% + papersize={\c__gzt_paperwidth_dim,\c__gzt_paperheight_dim} +} +\bool_if:NTF {\g__gzt_cover_bool} { + \tl_const:Nn \c__gzt_frontcover_geometry_tl {% + ,layoutsize={\c__gzt_layoutwidth_dim,\c__gzt_layoutheight_dim} + ,layoutvoffset=\c__gzt_layoutoffset_dim + ,bindingoffset=\c__gzt_bindingoffset_dim + ,top=\c__gzt_topmargin_frontcover_dim + ,headsep=\c__gzt_headsep_frontcover_dim + ,headheight=\c__gzt_headheight_dim + ,bottom=\c_zero_dim + ,footskip=\c_zero_dim + ,outer=\c_zero_dim + ,inner=\c__gzt_layoutoffset_dim + ,nomarginpar% + }% +}{ + \tl_const:Nn \c__gzt_frontcover_geometry_tl {% + ,layoutsize={\c__gzt_layoutwidth_dim,\c__gzt_layoutheight_dim} + ,layoutoffset=\c__gzt_layoutoffset_dim + ,bindingoffset=\c__gzt_bindingoffset_dim + ,top=\c__gzt_topmargin_frontcover_dim + ,headsep=\c__gzt_headsep_frontcover_dim + ,headheight=\c__gzt_headheight_dim + ,bottom=\c_zero_dim + ,footskip=\c_zero_dim + ,hmargin=\c__gzt_layoutoffset_dim + ,nomarginpar% + }% +} +\bool_if:NTF {\g__gzt_cover_bool} { + \tl_const:Nn \c__gzt_inside_cover_geometry_tl {% + ,layoutsize={\c__gzt_layoutwidth_dim,\c__gzt_layoutheight_dim} + ,layoutvoffset=\c__gzt_layoutoffset_dim + ,bindingoffset=\c__gzt_bindingoffset_dim + ,top=\c__gzt_topmargin_inside_cover_dim + ,headheight=\c__gzt_headheight_dim + ,headsep=\c__gzt_headsep_inside_frontcover_dim + ,bottom=\c__gzt_botmargin_dim + ,footskip=\c__gzt_footskip_dim + ,inner=\c__gzt_innermargin_inside_cover_dim-\c__gzt_layoutoffset_dim + ,outer=\c__gzt_outermargin_inside_cover_dim+\c__gzt_layoutoffset_dim + ,nomarginpar% + }% +}{ + \tl_const:Nn \c__gzt_inside_cover_geometry_tl {% + ,layoutsize={\c__gzt_layoutwidth_dim,\c__gzt_layoutheight_dim} + ,layoutoffset=\c__gzt_layoutoffset_dim + ,bindingoffset=\c__gzt_bindingoffset_dim + ,top=\c__gzt_topmargin_inside_cover_dim + ,headheight=\c__gzt_headheight_dim + ,headsep=\c__gzt_headsep_inside_frontcover_dim + ,bottom=\c__gzt_botmargin_dim + ,footskip=\c__gzt_footskip_dim + ,inner=\c__gzt_innermargin_inside_cover_dim + ,outer=\c__gzt_outermargin_inside_cover_dim + ,nomarginpar% + }% +} +\tl_const:Nn \c__gzt_front_matter_geometry_tl {% + ,layoutsize={\c__gzt_layoutwidth_dim,\c__gzt_layoutheight_dim} + ,layoutoffset=\c__gzt_layoutoffset_dim + % ,bindingoffset=\c__gzt_bindingoffset_dim + ,top=\c__gzt_topmargin_front_matter_dim% + ,headheight=\c__gzt_headheight_dim + ,headsep=\c__gzt_headsep_front_matter_dim + ,bottom=\c__gzt_botmargin_dim + ,footskip=\c__gzt_footskip_dim% + ,inner=\c__gzt_innermargin_dim+\c__gzt_front_matter_extra_innermargin_dim% + ,outer=\c__gzt_outermargin_dim+\c__gzt_front_matter_extra_outermargin_dim% + ,nomarginpar% +}% +\tl_const:Nn \c__gzt_main_geometry_tl {% + ,layoutsize={\c__gzt_layoutwidth_dim,\c__gzt_layoutheight_dim} + ,layoutoffset=\c__gzt_layoutoffset_dim + % ,bindingoffset=\c__gzt_bindingoffset_dim + ,top=\c__gzt_topmargin_dim-15mm% + ,headheight=\c__gzt_headheight_dim + ,headsep=\c__gzt_headsep_dim-18mm + ,bottom=\c__gzt_botmargin_dim + ,footskip=\c__gzt_footskip_dim + ,inner=\c__gzt_innermargin_dim + ,outer=\c__gzt_outermargin_dim +}% +\tl_const:Nn \c__gzt_backcover_geometry_tl {% + ,layoutsize={\c__gzt_layoutwidth_dim,\c__gzt_layoutheight_dim} + ,layoutoffset=\c__gzt_layoutoffset_dim + % ,bindingoffset=\c__gzt_bindingoffset_dim + ,top=\c__gzt_topmargin_backcover_dim% + % ,top=\c__gzt_topmargin_dim-15mm% + % ,headheight=\c__gzt_headheight_dim + % ,headsep=\c__gzt_headsep_dim-18mm + ,bottom=\c__gzt_bottommargin_backcover_dim + % ,footskip=\c__gzt_footskip_dim + ,inner=\c__gzt_innermargin_backcover_dim + ,outer=\c__gzt_outermargin_backcover_dim +} +\skip_const:Nn \c__gzt_editorial_presidentmessage_parskip_skip { 12pt plus 2pt minus .8pt }% +\skip_const:Nn \c__gzt_mainmatter_parskip_skip { 2pt plus .5pt minus .2pt }% +\int_new:N \g__gzt_issue_number_int +\int_new:N \g__gzt_issue_month_int +\int_new:N \g__gzt_issue_year_int +\keys_define:nn { gzt/issuesetup } +{ + number .int_gset:N = \g__gzt_issue_number_int, + month .int_gset:N = \g__gzt_issue_month_int, + year .int_gset:N = \g__gzt_issue_year_int, + number .value_required:, + month .value_required:, + year .value_required:, + number .initial:n = 0 +} +\tl_new:N \l__gzt_journal_publisher_tl +\tl_new:N \l__gzt_journal_address_tl +\tl_new:N \l__gzt_journal_phone_tl +\tl_new:N \l__gzt_journal_fax_tl +\tl_new:N \l__gzt_journal_email_tl +\tl_new:N \l__gzt_journal_url_tl +\tl_new:N \l__gzt_journal_issn_tl +\tl_new:N \l__gzt_journal_isbn_tl +\keys_define:nn { gzt/journalsetup } +{ + publisher .tl_set:N = \l__gzt_journal_publisher_tl, + address .tl_set:N = \l__gzt_journal_address_tl, + phone .tl_set:N = \l__gzt_journal_phone_tl, + fax .tl_set:N = \l__gzt_journal_fax_tl, + email .tl_set:N = \l__gzt_journal_email_tl, + url .tl_set:N = \l__gzt_journal_url_tl, + issn .tl_set:N = \l__gzt_journal_issn_tl, + isbn .tl_set:N = \l__gzt_journal_isbn_tl, + publisher .value_required:, + address .value_required:, + phone .value_required:, + fax .value_required:, + email .value_required:, + url .value_required:, + issn .value_required:, + isbn .value_required:, +} +\keys_define:nn { gzt/title } +{ + short .tl_gset:N = \g__gzt_short_title_tl, + minishort .tl_gset:N = \g__gzt_mini_short_title_tl, + notintoc .bool_gset:N = \g__gzt_title_not_in_toc_bool, + short .value_required:, + minishort .value_required:, +} +\keys_define:nn { gzt/subtitle } +{ + short .tl_gset:N = \g__gzt_short_subtitle_tl, + minishort .tl_gset:N = \g__gzt_mini_short_subtitle_tl, + notintoc .bool_gset:N = \g__gzt_subtitle_not_in_toc_bool, + short .value_required:, + minishort .value_required:, +} +\keys_define:nn { gzt/rubric } +{ + abstract .tl_gset:N = \g__gzt_rubric_abstract_tl, + title .tl_gset:N = \g__gzt_rubric_title_tl, + pictogram .tl_gset:N = \g__gzt_rubric_pictofile_tl, + abstract .value_required:, + title .value_required:, + pictogram .value_required:, +} +\keys_define:nn { gzt/minitoc } +{ + list .bool_gset:N = \g__gzt_minitoc_list_bool, + help .bool_gset:N = \g__gzt_minitoc_help_bool, + diameter .dim_gset:N = \g__gzt_minitoc_circle_diameter_dim, + textwidth .dim_gset:N = \g__gzt_minitoc_textwidth_dim, + xshift .dim_gset:N = \g__gzt_minitoc_xshift_dim, + yshift .dim_gset:N = \g__gzt_minitoc_yshift_dim, + diameter .value_required:, + textwidth .value_required:, + xshift .value_required:, + yshift .value_required:, +} +\keys_define:nn { gzt/authors } +{ + affiliation .tl_gset:N = \g__gzt_people_affiliation_tl, + email .tl_gset:N = \g__gzt_people_email_tl, + minibio .tl_gset:N = \g__gzt_people_minibio_tl, + photo .tl_gset:N = \g__gzt_people_photo_tl, + webpage .tl_gset:N = \g__gzt_people_webpage_tl, + affiliation .value_required:, + email .value_required:, + minibio .value_required:, + photo .value_required:, + webpage .value_required:, +} +\tl_new:N \g__gzt_interviewee_minibio_tl +\tl_new:N \g__gzt_interviewee_photo_tl +\tl_new:N \g__gzt_interviewee_first_last_name_tl +\keys_define:nn { gzt/interviewees } +{ + minibio .tl_gset:N = \g__gzt_interviewee_minibio_tl, + photo .tl_gset:N = \g__gzt_interviewee_photo_tl, + minibio .value_required:, + photo .value_required:, +} +\tl_new:N \g__gzt_bookreview_frontcover_tl +\tl_new:N \g__gzt_bookreview_bibkey_tl +\keys_define:nn { gzt/bookreview } +{ + frontcover .tl_gset:N = \g__gzt_bookreview_frontcover_tl, + bibkey .tl_gset:N = \g__gzt_bookreview_bibkey_tl, + frontcover .value_required:, + bibkey .value_required:, +} +\tl_new:N \g__gzt_bookadvertisement_frontcover_tl +\tl_new:N \g__gzt_bookadvertisement_bibkey_tl +\keys_define:nn { gzt/bookadvertisement } +{ + frontcover .tl_gset:N = \g__gzt_bookadvertisement_frontcover_tl, + bibkey .tl_gset:N = \g__gzt_bookadvertisement_bibkey_tl, + frontcover .value_required:, + bibkey .value_required:, +} +\tl_new:N \l__gzt_newtheorem_style_tl +\keys_define:nn { gzt/newtheorem } +{ + frenchtitle .tl_set:N = \l__gzt_newtheorem_frenchtitle_tl, + englishtitle .tl_set:N = \l__gzt_newtheorem_englishtitle_tl, + frenchtitle .value_required:, + englishtitle .value_required:, + % + style .choice:, + style / theorem .code:n = {\tl_set:Nn \l__gzt_newtheorem_style_tl {theorem}}, + style / definition .code:n = {\tl_set:Nn \l__gzt_newtheorem_style_tl {definition}}, + style / proof .code:n = {\tl_set:Nn \l__gzt_newtheorem_style_tl {proof}}, + style / unknown .code:n = + \msg_error:nnxxx { gzt } { unknown-choice } + { style } % Name of choice key + { theorem~or~definition~or~proof } % Valid choices + { \exp_not:n {#1} } % Invalid choice given +} +\definecolorset{cmyk}{__gzt_}{_color}{ + generic_dark,1,.60,.10,0; % kind of blue (!) + light_generic_dark,1,.35,0,0 % kind of blue (!), light +} +\colorlet{__gzt_generic_light_color}{black!50} +\colorlet{__gzt_dark_generic_light_color}{black!60} +\colorlet{__gzt_description_label_light_color}{__gzt_dark_generic_light_color} +\colorlet{__gzt_cover_itemize_label_color}{__gzt_light_generic_dark_color} +\colorlet{__gzt_default_text_color}{black} +\colorlet{__gzt_rubric_head_text_color}{black!65} +\colorlet{__gzt_bibliography_minibios_acknowledgments_bg_color}{black!10} +\colorlet{__gzt_headrule_color}{__gzt_generic_light_color!65} +\colorlet{__gzt_circlerule_color}{__gzt_generic_dark_color!65} +\colorlet{__gzt_frontmatter_text_color}{black!75} +\colorlet{__gzt_people_color}{__gzt_generic_dark_color} +\colorlet{__gzt_arrayrule_color}{__gzt_generic_dark_color} +\colorlet{__gzt_acknowledgements_color}{__gzt_generic_dark_color} +\colorlet{__gzt_question_color}{__gzt_generic_dark_color} +\colorlet{__gzt_boxed_issue_number_bg_color}{__gzt_generic_dark_color} +\colorlet{__gzt_rule_in_toc_color}{__gzt_generic_dark_color} +\colorlet{__gzt_rubric_in_toc_color}{__gzt_generic_dark_color} +\colorlet{__gzt_article_in_toc_color}{__gzt_generic_light_color} +\colorlet{__gzt_rubric_title_color}{__gzt_generic_light_color} +\colorlet{__gzt_article_title_color}{__gzt_generic_dark_color} +\colorlet{__gzt_section_color}{__gzt_generic_dark_color} +\colorlet{__gzt_subsection_color}{__gzt_generic_dark_color!90} +\colorlet{__gzt_subsubsection_color}{__gzt_generic_dark_color!80} +\colorlet{__gzt_rubric_abstract_color}{__gzt_generic_dark_color} +\colorlet{__gzt_article_abstract_color}{__gzt_generic_light_color} +\colorlet{__gzt_dotfill_color}{__gzt_generic_dark_color} +\colorlet{__gzt_about_frontcover_title_color}{__gzt_generic_dark_color} +\colorlet{__gzt_reflected_text_color}{__gzt_generic_dark_color} +\colorlet{__gzt_inside_frontcover_frame_bg_color}{__gzt_generic_dark_color!8} +\colorlet{__gzt_inside_frontcover_frame_title_color}{__gzt_generic_dark_color} +\colorlet{__gzt_footer_bg_color}{black!10} +\colorlet{__gzt_float_title_color}{__gzt_generic_dark_color} +\colorlet{__gzt_float_title_bg_color}{__gzt_generic_dark_color!10} +\colorlet{__gzt_float_frame_color}{__gzt_generic_dark_color!20} +\colorlet{__gzt_chapter_color}{__gzt_generic_dark_color} +\colorlet{__gzt_smf_number_color}{__gzt_generic_dark_color} +\colorlet{__gzt_date_color}{__gzt_generic_light_color} +\colorlet{__gzt_table_head_color}{__gzt_generic_dark_color!25} +\colorlet{__gzt_book_review_frame_bg_color}{__gzt_generic_dark_color!8} +\colorlet{__gzt_book_advertisement_bg_color}{white} +\colorlet{__gzt_book_advertisement_frame_color}{__gzt_generic_dark_color} +\AtBeginEnvironment{multicols}{ + \bool_gset_true:N \g__gzt_multicols_bool +} +\AtEndEnvironment{multicols}{ + \bool_gset_false:N \g__gzt_multicols_bool +} +\AtBeginEnvironment{refsection}{ + \bool_gset_true:N \g__gzt_refsection_bool +} +\AtEndEnvironment{refsection}{ + \bool_gset_false:N \g__gzt_refsection_bool +} +\tl_const:Nn \c__gzt_footer_size_font_tl { + \fontsize{\c__gzt_footer_height_font_dim}{\c_zero_dim}\selectfont% +} +\tl_new:N \l__gzt_smf_short_string_tl +\tl_new:N \l__gzt_smf_string_tl +\tl_set:Nn \l__gzt_smf_short_string_tl { + % \cs_if_exist:cTF {texorpdfstring} + % { + \texorpdfstring{\c__gzt_smf_short_string_tl}{\c__gzt_smf_short_pdf_string_tl} + % }{% + % \c__gzt_smf_short_pdf_string_tl + % }% +} +\tl_set:Nn \l__gzt_smf_string_tl { + % \cs_if_exist:cTF {texorpdfstring} + % { + % \texorpdfstring{Soci\'et\'e~Math\'ematique~de~France}{\c__gzt_smf_string_tl} + \c__gzt_smf_string_tl + % }{% + % \acrlong*{smf} + % }% +} +\tl_new:N \l__gzt_gzt_short_string_tl +\tl_new:N \l__gzt_gzt_string_tl +\tl_set:Nn \l__gzt_gzt_short_string_tl { + \cs_if_exist:cTF {texorpdfstring} + { + \texorpdfstring{\emph{\c__gzt_journal_short_title_string_tl}}{\c__gzt_journal_short_title_string_tl} + }{% + \emph{\c__gzt_journal_short_title_string_tl} + }% +} +\tl_set:Nn \l__gzt_gzt_string_tl { + \cs_if_exist:cTF {texorpdfstring} + { + \texorpdfstring{\emph{\c__gzt_journal_title_string_tl}}{\c__gzt_journal_title_string_tl} + }{% + \emph{\c__gzt_journal_title_string_tl} + }% +} +\tl_new:N \l__gzt_pdftitle_string_tl +\tl_new:N \l__gzt_pdfauthor_string_tl +\tl_set:Nn \l__gzt_pdftile_string_tl { + \c__gzt_journal_title_string_tl\space--\space{}N°\int_use:N\g__gzt_issue_number_int +} +\tl_set:Nn \l__gzt_pdfauthor_string_tl { + \l__gzt_smf_string_tl +} +\DTLnewdb{__gzt_authors} +\cs_new_protected:Nn \__gzt_authors:nnnnnn + { + \DTLnewrow{__gzt_authors}% + \DTLnewdbentry{__gzt_authors}{first-last-name}{#1}% + \DTLnewdbentry{__gzt_authors}{affiliation}{#2}% + \DTLnewdbentry{__gzt_authors}{email}{#3}% + \DTLnewdbentry{__gzt_authors}{minibio}{#4}% + \DTLnewdbentry{__gzt_authors}{photo}{#5}% + \DTLnewdbentry{__gzt_authors}{webpage}{#6}% + } +\cs_new_protected:Nn \__gzt_email:n + { + \href{mailto:#1}{\nolinkurl{#1}}% + } +\cs_generate_variant:Nn \__gzt_authors:nnnnnn { nVVVVV } +\cs_new_protected:Nn \__gzt_display_author:nnnnn +{ + \begin{tabular}[t]{p{18mm}p{0.75\linewidth}} + \tl_if_empty:nF {#5} + {% + \begin{adjustbox}{valign=t} + \includegraphics[width=16mm]{#5} + \end{adjustbox}% + } + & + \begin{description}[leftmargin=1em,style=nextline,nosep] + \item[\textcolor{__gzt_people_color}{\DeclareNameAlias{labelname}{default}\citeauthor{#1}}] + \tl_if_empty:nF {#2} + {% + #2% + \par% + \smallskip% + } + \tl_if_empty:nF {#3} + {% + \href{mailto:#3}{\nolinkurl{#3}}% + \par% + \smallskip% + } + \tl_if_empty:nF {#4} + {% + #4 + } + \end{description} + \end{tabular} +} +\cs_generate_variant:Nn \__gzt_display_author:nnnnn { VVVVV } +\DTLnewdb{__gzt_interviewees} +\cs_new_protected:Nn \__gzt_interviewees:nnn + { + \DTLnewrow{__gzt_interviewees}% + \DTLnewdbentry{__gzt_interviewees}{first-last-name}{#1}% + \DTLnewdbentry{__gzt_interviewees}{minibio}{#2}% + \DTLnewdbentry{__gzt_interviewees}{photo}{#3}% + } +\cs_generate_variant:Nn \__gzt_interviewees:nnn { nVV } +\DTLnewdb{people} +\tl_new:N \l__gzt_crossref_tl +\cs_new_protected:Nn \__gzt_people:nnnnnnnn +{ + \DTLnewrow{people}% + \DTLnewdbentry{people}{first-last-name}{#1}% + \DTLnewdbentry{people}{affiliation}{#2}% + \DTLnewdbentry{people}{email}{#3}% + \DTLnewdbentry{people}{minibio}{#4}% + \DTLnewdbentry{people}{photo}{#5}% + \DTLnewdbentry{people}{speciality}{#6}% + \DTLnewdbentry{people}{role}{#7}% + \DTLnewdbentry{people}{webpage}{#8}% + \int_if_exist:cF {g__gzt_#7_int} + { + \int_new:c {g__gzt_#7_int} + } + \int_incr:c {g__gzt_#7_int} + \tl_if_in:nnTF { #7 } { author } { + \tl_set:Nn \l__gzt_crossref_tl {\c__gzt_issue_bib_key_tl -art-\int_use:N \g__gzt_articles_int} + } { + \tl_set:Nn \l__gzt_crossref_tl {\c__gzt_issue_bib_key_tl} + } + \tl_set:Nn \l__gzt_people_first_last_name_tl {#1} + \iow_now:Nx \g__gzt_bib_out_iow {% + @article{ + \c__gzt_issue_bib_key_tl -#7- \int_use:c {g__gzt_#7_int}, + \iow_newline: + author={\exp_not:V\l__gzt_people_first_last_name_tl}, + \iow_newline: + options={skipbib}, + \iow_newline: + crossref = {\l__gzt_crossref_tl} + \iow_newline: + } + \iow_newline: + }% +} +\cs_generate_variant:Nn \__gzt_people:nnnnnnnn { nVVVVnxV } +\cs_new_protected:Nn \__gzt_display_academic_signature:n +{ + \bigskip + #1 +} +\cs_new_protected:Nn \__gzt_display_people_by_role:n +{ + \DTLforeach*[\DTLiseq{\l__gzt_people_role_tl}{#1}]{people}{% + \l__gzt_firstlastname=first-last-name% + ,\l__gzt_people_affiliation_tl=affiliation% + ,\l__gzt_people_email_tl=email% + ,\l__gzt_people_minibio_tl=minibio% + ,\l__gzt_people_photo_tl=photo% + ,\l__gzt_people_speciality=speciality% + ,\l__gzt_people_role_tl=role% + ,\l__gzt_people_webpage_tl=webpage% + }{% + \tl_if_in:NnTF \l__gzt_people_role_tl { editor } { + \item[ + \textcolor{__gzt_people_color}{% + \__gzt_citeauthor_no_firstinits:n {\c__gzt_issue_bib_key_tl -#1- \exp_not:V\DTLcurrentindex}% + } + \tl_if_in:NnF \l__gzt_people_speciality { NoValue } { ~(\l__gzt_people_speciality) } + ] + \l__gzt_people_affiliation_tl% + \newline% + \href{mailto:\l__gzt_people_email_tl}{\nolinkurl{\l__gzt_people_email_tl}}% + \DTLiflastrow{% + }{% + \medskip% + } + }{ + \tl_if_in:NnTF \l__gzt_people_role_tl { author } { + \footnotesize% + \noindent% + \tl_if_empty:NF \l__gzt_people_photo_tl + {% + \begin{adjustbox}{valign=t,minipage=18mm} + \includegraphics[width=16mm]{\l__gzt_people_photo_tl} + \end{adjustbox}% + } + \quad% + \begin{adjustbox}{valign=t,minipage=\linewidth-18mm-1em} + \begin{description}[leftmargin=1em,style=nextline] + \item[% + \textcolor{__gzt_people_color}{% + \__gzt_citeauthor_no_firstinits:n {\c__gzt_issue_bib_key_tl -#1- \exp_not:V\DTLcurrentindex}% + }% + ] + \tl_if_empty:NF \l__gzt_people_affiliation_tl + {% + \mbox{}% + \par% + \vspace{-2ex}% + \l__gzt_people_affiliation_tl% + } + \tl_if_empty:NF \l__gzt_people_email_tl + {% + \par% + \href{mailto:\l__gzt_people_email_tl}{\nolinkurl{\l__gzt_people_email_tl}}% + } + \tl_if_empty:NF \l__gzt_people_webpage_tl + {% + \par% + \url{\l__gzt_people_webpage_tl}% + } + \tl_if_empty:NF \l__gzt_people_minibio_tl + {% + \par% + \smallskip% + \l__gzt_people_minibio_tl + } + \end{description} + \end{adjustbox} + \DTLiflastrow{% + }{ + \DTLpar% + \medskip% + } + }{ + \__gzt_citeauthor_no_firstinits:n {\c__gzt_issue_bib_key_tl -#1- + \exp_not:V\DTLcurrentindex}% + \tl_if_empty:NF \l__gzt_people_email_tl + { + \space(\href{mailto:\l__gzt_people_email_tl}{\nolinkurl{\l__gzt_people_email_tl}}) + } + } + } + } +} +\cs_new_protected:Nn \__gzt_reflected_text:n +{ + \begin{tikzpicture} + \tikzset{__gzt_reflect_node/.style={% + anchor=base,% + inner~sep=0,% + line~width=0,% + font=\Huge, + color=__gzt_reflected_text_color% + }% + }% + \node[__gzt_reflect_node]{#1}; + \node[scope~fading=south,opacity=0.2,yscale=-1,__gzt_reflect_node]{#1}; + \end{tikzpicture} +} +\tl_new:N \g__gzt_display_frontcover_tl% +\tl_gset:Nn \g__gzt_display_frontcover_tl {% + \bool_gset_true:N \g__gzt_frontcover_bool + \pagenumbering{roman}% + \pagestyle{__gzt_frontcover_ps}% + \exp_after:wN\newgeometry\exp_after:wN{\c__gzt_frontcover_geometry_tl}% + \noindent% + \bool_if:NTF {\g__gzt_cover_bool} { + \hspace*{-\c__gzt_layoutoffset_dim} + }{ + \hspace*{-2\c__gzt_layoutoffset_dim} + } + \includegraphics[ + width=\c__gzt_frontcover_image_width_dim + % min~width=\paperwidth + % width=\c__gzt_layoutwidth_dim + 2\c__gzt_layoutoffset_dim + % min~size={\paperwidth}{\c__gzt_frontcover_image_height_dim+\c__gzt_layoutoffset_dim}, + % max~size={\paperwidth}{\c__gzt_frontcover_image_height_dim+\c__gzt_layoutoffset_dim}, + % Clip*=0mm~40mm~211mm~160mm + % Clip*=0mm~{\height-\c__gzt_frontcover_image_height_dim}~{\paperwidth}~{\height} + ]{\c__gzt_issue_frontcover_image_path_string_tl} + \begin{tikzpicture}[remember~picture, overlay] + \coordinate (__gzt_circle_minitoc_center) at + ([xshift=\g__gzt_minitoc_xshift_dim-\c__gzt_layoutoffset_dim,yshift=\g__gzt_minitoc_yshift_dim+\c__gzt_layoutoffset_dim]current~page.south~east) ; + \node[name=__gzt_circle_minitoc,shape=circle,inner~sep=\c_zero_dim,fill=white,text~width=\g__gzt_minitoc_circle_diameter_dim] at + (__gzt_circle_minitoc_center) {}; + \node[text~width=\g__gzt_minitoc_textwidth_dim,anchor=north~west] at + ([xshift=\c__gzt_minitoc_from_circle_xshift_dim,yshift=\c__gzt_minitoc_from_circle_yshift_dim]$ (__gzt_circle_minitoc.north)!.5!(__gzt_circle_minitoc.west) $) + { + \large + \color{__gzt_dark_generic_light_color} + \bool_if:NF {\g__gzt_frontcover_minitoc_tl} { + \g__gzt_frontcover_minitoc_tl + } + }; + \bool_if:NT {\g__gzt_minitoc_help_bool} { + \fill[red] (__gzt_circle_minitoc_center) circle (2pt); + } + \end{tikzpicture} + \bool_if:NT {\g__gzt_cover_bool} { + \small + \begin{tikzpicture}[remember~picture, overlay] + \node[name=__gzt_binding_sw,inner~sep=\c_zero_dim,fill=white,rotate=90,anchor=west] at + ([xshift=0.45\c__gzt_bindingoffset_dim,yshift=15mm+\c__gzt_layoutoffset_dim]current~page.south~west) { + \No\int_use:N\g__gzt_issue_number_int + }; + \node[name=__gzt_binding_w,inner~sep=\c_zero_dim,fill=white,rotate=90] at + ([xshift=0.45\c__gzt_bindingoffset_dim]current~page.west) { + \MakeUppercase{\c__gzt_journal_title_string_tl} + }; + \node[name=__gzt_binding_nw,inner~sep=\c_zero_dim,fill=white,rotate=90,anchor=east] at + ([xshift=0.45\c__gzt_bindingoffset_dim,yshift=-15mm-\c__gzt_layoutoffset_dim]current~page.north~west) { + \l__gzt_uppercased_date_format\displaydate{__gzt_date} + }; + \end{tikzpicture} + } + \vfill% + \noindent% + \hspace*{10mm}% + \hspace*{-\c__gzt_layoutoffset_dim} + \includegraphics[height=22.5mm]{\c__gzt_smf_logo_file_string_tl}% + \vfill% + \clearpage% + \bool_gset_false:N \g__gzt_frontcover_bool +} +\tl_new:N \g__gzt_display_inside_frontcover_tl% +\tl_gset:Nn \g__gzt_display_inside_frontcover_tl {% + \bool_gset_true:N \g__gzt_inside_frontcover_bool% + \pagestyle{__gzt_inside_frontcover_ps}% + \exp_after:wN\newgeometry\exp_after:wN{\c__gzt_inside_cover_geometry_tl}% + \small% + \setlength{\columnseprule}{2pt} + \renewcommand{\columnseprulecolor}{\color{white}} + \begin{__gzt_inside_cover_tcb}[__gzt_tcb_inside_frontcover_style] + \begin{multicols}{2} + \setlength{\columnsep}{1mm} + \begin{description}[leftmargin=1em] + \item[\c__gzt_editors_in_chief_string_tl] \ + \begin{description}[leftmargin=1em,style=nextline] + \__gzt_display_people_by_role:n {editorinchief} + \end{description} + \bigskip + \par + \item[\c__gzt_editors_string_tl] \ + \begin{description}[leftmargin=1em,style=nextline] + \__gzt_display_people_by_role:n {editor} + \end{description} + \end{description} + \end{multicols} + \setlength{\columnseprule}{1pt} + \tcblower + \begin{tabular}{@{}m{.75\c__gzt_inside_cover_box_width_dim}@{}m{.2\c__gzt_inside_cover_box_width_dim-2\tabcolsep}@{}} + \begin{description}[leftmargin=1em] + \item[\c__gzt_editorial_secretariat_string_tl{}~:] \ \par% + \l__gzt_journal_publisher_tl% + % \par% + \space\textendash{}\space% + \__gzt_display_people_by_role:n { secretary }\par + \l__gzt_journal_address_tl\par% + \c__gzt_phone_string_tl{}~:~\l__gzt_journal_phone_tl{} \space\textendash{}\space + \c__gzt_fax_string_tl{}~:~\l__gzt_journal_fax_tl\par% + \href{mailto:\l__gzt_journal_email_tl}{\nolinkurl{\l__gzt_journal_email_tl}}% + % \newline% + \space\textendash{}\space + \url{\l__gzt_journal_url_tl} + \item[\c__gzt_publishingdirector_string_tl{}~:] + \__gzt_display_people_by_role:n { president } + \item[\c__gzt_issn_string_tl{}~:] \l__gzt_journal_issn_tl + \tl_if_empty:NF \l__gzt_journal_isbn_tl + {% + \item[\c__gzt_isbn_string_tl{}~:] \l__gzt_journal_isbn_tl + } + \bool_if:NT {\g__gzt_no_inside_backcover_bool} { + \item[\c__gzt_latexclass_string_tl{}~:] + \__gzt_display_people_by_role:n { classdesigner } + \item[\c__gzt_artistic_director_string_tl{}~:] + \__gzt_display_people_by_role:n { graphicdesigner } + \item[\c__gzt_printer_string_tl{}~:] \g__gzt_printer_text_tl + } + \end{description} + \bool_if:NT {\g__gzt_no_inside_backcover_bool} { + \g__gzt_font_designer_text_tl + } + & + \hspace*{\fill}% + \includegraphics[height=20mm]{\c__gzt_smf_logo_file_string_tl}% + \end{tabular} + % \\ + % \c__gzt_font_string_tl + \bigskip + \tl_if_empty:NF \g__gzt_about_frontcover_tl + {% + \\ + \begin{adjustbox}{valign=t,minipage=.75\c__gzt_inside_cover_box_width_dim+.2\c__gzt_inside_cover_box_width_dim-2\tabcolsep} + \begin{description}[leftmargin=1em,font=\color{__gzt_about_frontcover_title_color}] + \item[\g__gzt_about_frontcover_string_tl] \g__gzt_about_frontcover_tl + \bool_if:NT {\g__gzt_credit_frontcover_bool} { + \space(\c__gzt_credit_frontcover_string_tl{}~:~% + \DTLforeach*[\DTLiseq{\l__gzt_people_role_tl}{frontcovercredit}]{people}{% + \l__gzt_firstlastname=first-last-name% + ,\l__gzt_people_role_tl=role% + }{% + \__gzt_citeauthor_no_firstinits:n + {\c__gzt_issue_bib_key_tl -frontcovercredit- \exp_not:V\DTLcurrentindex}% + }% + ).% + } + \end{description} + \end{adjustbox} + } + \end{__gzt_inside_cover_tcb} + \clearpage% + \pagenumbering{arabic}% + \bool_gset_false:N \g__gzt_inside_frontcover_bool +} +\tl_new:N \g__gzt_display_inside_backcover_tl% +\tl_gset:Nn \g__gzt_display_inside_backcover_tl {% + \bool_gset_true:N \g__gzt_inside_backcover_bool% + \pagestyle{__gzt_inside_backcover_ps}% + \exp_after:wN\newgeometry\exp_after:wN{\c__gzt_inside_cover_geometry_tl}% + % \file_if_exist:nT { \c__gzt_authors_instructions_file_tl } {% + \bool_if:NTF {\g__gzt_no_inside_backcover_bool} { + \hbox{} + }{% + \small% + \begin{__gzt_inside_cover_tcb}[__gzt_tcb_inside_backcover_style] + % \small% + % Page~ + % \ifoddpage% + % im + % \fi + % paire.\par{} + \file_if_exist:nT { \c__gzt_authors_instructions_file_tl } {% + % \begin{multicols}{2} + % \setlength{\columnsep}{1mm} + \file_input:n {\c__gzt_authors_instructions_file_tl} + % \end{multicols} + % \setlength{\columnseprule}{1pt} + \tcblower + } + \begin{description}[leftmargin=1em] + \item[\c__gzt_latexclass_string_tl{}~:] + \__gzt_display_people_by_role:n { classdesigner } + \item[\c__gzt_artistic_director_string_tl{}~:] + \__gzt_display_people_by_role:n { graphicdesigner } + \item[\c__gzt_printer_string_tl{}~:] \g__gzt_printer_text_tl + \end{description} + \g__gzt_font_designer_text_tl + \end{__gzt_inside_cover_tcb} + } + % }{% + % \hbox{} + % } + \bool_gset_false:N \g__gzt_inside_backcover_bool +} +\tl_new:N \g__gzt_display_backcover_tl% +\tl_gset:Nn \g__gzt_display_backcover_tl {% + \bool_gset_true:N \g__gzt_backcover_bool + \pagestyle{__gzt_backcover_ps}% + \exp_after:wN\newgeometry\exp_after:wN{\c__gzt_backcover_geometry_tl}% + \file_if_exist:nTF { \c__gzt_backcover_page_file_string_tl } {% + \file_input:n {\c__gzt_backcover_page_file_string_tl} + }{% + \hbox{} + } +} +\NewDocumentCommand \editorinchief {ommm} +{ + \int_incr:N \g__gzt_editors_in_chief_int + \__gzt_people:nnnnnnnn {#2}{#3}{#4}{}{}{#1}{editorinchief}{} +} +\NewDocumentCommand \editor {ommm} +{ + \__gzt_people:nnnnnnnn {#2}{#3}{#4}{}{}{#1}{editor}{} +} + +\NewDocumentCommand \president {ommm} +{ + \__gzt_people:nnnnnnnn {#2}{#3}{#4}{}{}{#1}{president}{} +} +\NewDocumentCommand \classdesigner {ommm} +{ + \__gzt_people:nnnnnnnn {#2}{#3}{#4}{}{}{#1}{classdesigner}{} +} +\NewDocumentCommand \classmaintainer {ommm} +{ + \__gzt_people:nnnnnnnn {#2}{#3}{#4}{}{}{#1}{classmaintainer}{} +} +\NewDocumentCommand \fontdesigner {ommm} +{ + \__gzt_people:nnnnnnnn {#2}{#3}{#4}{}{}{#1}{fontdesigner}{} +} +\NewDocumentCommand \graphicdesigner {ommm} +{ + \__gzt_people:nnnnnnnn {#2}{#3}{#4}{}{}{#1}{graphicdesigner}{} +} +\NewDocumentCommand \secretary {ommm} +{ + \__gzt_people:nnnnnnnn {#2}{#3}{#4}{}{}{#1}{secretary}{} +} +\NewDocumentCommand \issuesetup { m } { + \keys_set:nn { gzt/issuesetup } { #1 } +\hypersetup{pdftitle=\l__gzt_pdftitle_string_tl} +\hypersetup{pdfauthor=\l__gzt_pdfauthor_string_tl} + \int_compare:nNnT {\g__gzt_issue_number_int}<{1} + { + \int_set:Nn \g__gzt_issue_number_int { \c__gzt_first_issue_number_int } + \msg_warning:nnn{gzt}{issue-number-needed}{number} + } + \int_compare:nNnT {\g__gzt_issue_month_int * \g__gzt_issue_year_int}<{1} + { + \int_new:N \g__gzt_issue_age_in_months_int% + \int_gset:Nn \g__gzt_issue_age_in_months_int + { + \c__gzt_first_issue_month_int + + \c__gzt_interval_in_months_int + * ( \int_use:N \g__gzt_issue_number_int - \c__gzt_first_issue_number_int ) + } + } + \int_compare:nNnT {\g__gzt_issue_month_int}<{1} + { + \int_gset:Nn \g__gzt_issue_month_int + { + \int_mod:nn { \g__gzt_issue_age_in_months_int } { 12 } + } + } + \int_compare:nNnT {\g__gzt_issue_year_int}<{1} + { + \int_new:N \g__gzt_issue_age_in_years_int% + \int_gset:Nn \g__gzt_issue_age_in_years_int + {% + \int_div_truncate:nn { \g__gzt_issue_age_in_months_int } { 12 } + }% + \int_gset:Nn \g__gzt_issue_year_int + { + \g__gzt_issue_age_in_years_int + \c__gzt_first_issue_year_int + } + }% +} +\NewDocumentCommand \journalsetup { m } { + \keys_set:nn { gzt/journalsetup } { #1 } +} +\RenewDocumentCommand \date { mmm } { + \newdate{__gzt_president_message_date}{#1}{#2}{#3}% +} +\NewDocumentCommand \interviewee { om } { + \tl_if_empty:nT \g__gzt_title_tl { + \tl_gset:Nn \g__gzt_title_tl { + \c__gzt_interview_title_string_tl + \DeclareNameAlias{labelname}{default}\citeauthor{\c__gzt_issue_bib_key_tl -art-\int_use:N + \g__gzt_articles_int} + } + } + \IfNoValueF {#1} + { + \keys_set:nn { gzt/authors } { #1 } + } + \tl_set:Nn \l__gzt_people_first_last_name_tl {#2} + \__gzt_people:nVVVVnxV + {#2} + {\g__gzt_people_affiliation_tl} + {\g__gzt_people_email_tl} + {\g__gzt_people_minibio_tl} + {\g__gzt_people_photo_tl} + {} + {interviewee-art-\int_use:N \g__gzt_articles_int} + {} + \maketitle +} +\NewDocumentCommand \academicsignature { m } { + \__gzt_display_academic_signature:n {#1} +} +\cs_new_protected:Nn \__gzt_uppercased_monthname_french:n +{ + \@orgargctr=#1\relax + \ifcase\@orgargctr + \PackageError{datetime}{Invalid~month~number~\the\@orgargctr}{% + Month~numbers~should~go~from~1~(janvier)~to~12~(decembre)}% + \or JANVIER% + \or F\'EVRIER% + \or MARS% + \or AVRIL% + \or MAI% + \or JUIN% + \or JUILLET% + \or AO\^UT% + \or SEPTEMBRE% + \or OCTOBRE% + \or NOVEMBRE% + \or D\'ECEMBRE% + \else + \PackageError{datetime}{Invalid~month~number~\the\@orgargctr}{% + Month~numbers~should~go~from~1~(janvier)~to~12~(decembre)}% + \fi +} +\newdate{__gzt_date} + {1} + {\int_use:N \g__gzt_issue_month_int} + {\int_use:N \g__gzt_issue_year_int} +\newdateformat{l__gzt_uppercased_date_format}{ + \__gzt_uppercased_monthname_french:n {\THEMONTH}~\THEYEAR +} +\AtBeginDocument{% +\tl_new:N \g__gzt_bib_issue_date_tl +\tl_gset:Nn \g__gzt_bib_issue_date_tl { + \int_use:N \g__gzt_issue_year_int- + \int_compare:nNnT {\g__gzt_issue_month_int}<{10} + { + 0 + } + \int_use:N \g__gzt_issue_month_int +} + \iow_now:Nx \g__gzt_bib_out_iow {% + @periodical{\c__gzt_issue_bib_key_tl,\iow_newline: + issuetitle = {\exp_not:f\c__gzt_journal_title_string_tl},\iow_newline: + date = {\g__gzt_bib_issue_date_tl},\iow_newline: + number = \int_use:N \g__gzt_issue_number_int,\iow_newline: + % issn = {\l__gzt_journal_issn_tl},\iow_newline: + options = {skipbib}\iow_newline: + } + \iow_newline: + }% +} +\tl_new:N \g__gzt_title_tl +\RenewDocumentCommand \title { o m } { + \int_gincr:N \g__gzt_articles_int + \tl_gclear:N \g__gzt_short_title_tl + \tl_gclear:N \g__gzt_short_subtitle_tl + \bool_gset_false:N \g__gzt_title_not_in_toc_bool + % + \IfNoValueF {#1} + { + \keys_set:nn { gzt/title } { #1 } + } + \tl_gset:Nn \g__gzt_title_tl {#2} + \bool_if:nT \g__gzt_tellme_rubric_bool + { + \tl_put_left:Nx \g__gzt_title_tl {\c__gzt_tellme_extra_title_string_tl} + } + \tl_if_empty:NT \g__gzt_short_title_tl {% + \tl_gset_eq:NN \g__gzt_short_title_tl \g__gzt_title_tl + } +} +\tl_new:N \g__gzt_subtitle_tl +\NewDocumentCommand \subtitle { o m } { + \bool_gset_false:N \g__gzt_subtitle_not_in_toc_bool + % + \IfNoValueF {#1} + { + \keys_set:nn { gzt/subtitle } { #1 } + } + \tl_gset:Nn \g__gzt_subtitle_tl {#2} + \tl_if_empty:NT \g__gzt_short_subtitle_tl {% + \tl_gset_eq:NN \g__gzt_short_subtitle_tl \g__gzt_subtitle_tl + } +} +\RenewDocumentCommand \author { o m } { + \IfNoValueF {#1} + { + \keys_set:nn { gzt/authors } { #1 } + } + \tl_gset:Nn \l__gzt_people_first_last_name_tl {#2} + \__gzt_people:nVVVVnxV + {#2} + {\g__gzt_people_affiliation_tl} + {\g__gzt_people_email_tl} + {\g__gzt_people_minibio_tl} + {\g__gzt_people_photo_tl} + {} + {author-art-\int_use:N \g__gzt_articles_int} + {\g__gzt_people_webpage_tl} +} +\iow_new:N \g__gzt_bib_out_iow +\ior_new:N \g__gzt_bib_out_ior +\tl_new:N \g__gzt_bib_out_tl +\file_if_exist:nTF { \c__gzt_issue_bib_path_string_tl } +{ + \ior_open:Nn \g__gzt_bib_out_ior { \c__gzt_issue_bib_path_string_tl } + \ior_str_map_inline:Nn \g__gzt_bib_out_ior + { \tl_gput_right:Nn \g__gzt_bib_out_tl {#1 \par } } + \ior_close:N \g__gzt_bib_out_ior +}{ + \typeout{no file! rerun} +} +\iow_open:Nn \g__gzt_bib_out_iow { \c__gzt_issue_bib_path_string_tl } +\tl_new:N \g__gzt_abstract_body_tl +\NewDocumentEnvironment{abstract}{ } + {\CollectAbstract} + {\endCollectAbstract} +\NewEnviron{CollectAbstract} + { + \tl_gset_eq:NN \g__gzt_abstract_body_tl \BODY + } +\tl_new:N \g__gzt_mainmatter_switch_tl% +\tl_gset:Nn \g__gzt_mainmatter_switch_tl { + \bool_gset_false:N \g__gzt_frontmatter_bool + \bool_gset_true:N \g__gzt_mainmatter_bool + \SetParskip{\c__gzt_mainmatter_parskip_skip} + \pagestyle{__gzt_mainmatter_ps}% +} +\tl_new:N \g__gzt_article_acknowledgements_tl% +\cs_new_protected:Nn \__gzt_article_acknowledgements:n +{ + \tl_gset:Nn \g__gzt_article_acknowledgements_tl { #1 } +} +\tl_new:N \g__gzt_about_frontcover_tl% +\bool_new:N \g__gzt_credit_frontcover_bool% +\tl_new:N \g__gzt_about_frontcover_string_tl% +\cs_new_protected:Nn \__gzt_about_frontcover:nnn +{ + \tl_if_empty:nF {#1}{% + \bool_gset_true:N \g__gzt_credit_frontcover_bool + \__gzt_people:nnnnnnnn {#1}{}{}{}{}{}{frontcovercredit}{} + } + \tl_gset:Nn \g__gzt_about_frontcover_string_tl { #2 } + \tl_gset:Nn \g__gzt_about_frontcover_tl { #3 } +} +\tl_new:N \g__gzt_rubric_abstract_box_tl% +\tl_new:N \l__gzt_rubric_head_text_box_tl% +\cs_new_protected:Nn \__gzt_rubric:nnn +{ + \newpage% + \tl_gclear:N \g__gzt_rubric_abstract_tl + \tl_gset:Nn \g__gzt_rubric_title_tl {#2} + \tl_gset:Nn \g__gzt_rubric_pictofile_tl {#3} + \IfNoValueF {#1} + { + \keys_set:nn { gzt/rubric } { #1 } + } + \g__gzt_mainmatter_switch_tl + \bool_gset_true:N \g__gzt_mainmatter_bool + \clearpage + \bool_gset_true:N \g__gzt_rubric_bool% + \bool_gset_false:N \g__gzt_interview_rubric_bool + \bool_gset_false:N \g__gzt_tellme_rubric_bool + \bool_gset_false:N \g__gzt_rearviewmirror_rubric_bool + \bool_gset_false:N \g__gzt_books_rubric_bool + \bool_gset_false:N \g__gzt_previous_article_with_bibliography_or_minibio_bool + \bool_if:nF { \g__gzt_for_authors_bool } { + \int_zero:N \g__gzt_item_in_rubric_int + \phantomsection + \par + \addcontentsline{toc}{part}{\g__gzt_rubric_title_tl} + \thispagestyle{__gzt_rubric_ps} + \exp_after:wN\newgeometry\exp_after:wN{\c__gzt_main_geometry_tl}% + \tl_if_empty:NTF \g__gzt_rubric_abstract_tl + { + \dim_set:Nn \l__gzt_rubrics_head_text_width_dim { \c__gzt_rubrics_head_text_no_abstract_width_dim } + } + { + \dim_set:Nn \l__gzt_rubrics_head_text_width_dim { \c__gzt_rubrics_head_text_abstract_width_dim } + \tl_gset:Nn \g__gzt_rubric_abstract_box_tl { + \begin{adjustbox}{valign=t,minipage=\c__gzt_rubrics_abstract_width_dim} + \raggedright% + \large% + \color{__gzt_rubric_abstract_color}% + \g__gzt_rubric_abstract_tl% + \end{adjustbox} + } + } + \tl_set:Nn \l__gzt_rubric_head_text_box_tl { + \begin{adjustbox}{valign=t,minipage=\l__gzt_rubrics_head_text_width_dim} + \mbox{}% + \checkoddpage% + \ifoddpage% + \raggedleft% + \else + \raggedright% + \fi% + \color{__gzt_rubric_title_color}% + \fontsize{20}{20}\fontseries{bx}\fontshape{sc}\selectfont% + \g__gzt_rubric_title_tl% + \end{adjustbox} + } + \noindent% + \mbox{}% + \checkoddpage% + \ifoddpage% + \hspace*{\c__gzt_rubric_extra_xoffset_dim} + \tl_if_empty:NF \g__gzt_rubric_abstract_tl + { + \g__gzt_rubric_abstract_box_tl + } + \hfill% + \l__gzt_rubric_head_text_box_tl + \hspace*{\c__gzt_rubric_xoffset_dim}% + \else% + \hspace*{\c__gzt_rubric_xoffset_dim}% + \l__gzt_rubric_head_text_box_tl + \tl_if_empty:NF \g__gzt_rubric_abstract_tl + { + \hfill% + \g__gzt_rubric_abstract_box_tl + \hspace*{\c__gzt_rubric_extra_xoffset_dim} + } + \fi% + } + \afterpage{% + \bool_gset_false:N \g__gzt_rubric_bool% + } + \ignorespaces +} +\tl_new:N \g__gzt_article_bib_key_tl% +\tl_new:N \l__gzt_people_first_last_names_tl +\tl_new:N \g__gzt_authors_first_last_names_tl% +\tl_new:N \l__gzt_interviewees_first_last_names_tl% +\tl_new:N \g__gzt_citeauthor_no_firstinits% +\tl_new:N \g__gzt_citeauthor_tl% +\tl_new:N \g__gzt_citeinterviewee_tl% +\cs_new_protected:Nn \__gzt_citeauthor_no_firstinits:n {% + \tl_gset:Nn \g__gzt_citeauthor_tl {% + \DeclareNameAlias{labelname}{default}% + \group_begin: + \togglefalse{blx@firstinits}% + \citeauthor{#1} + \group_end: + }% + \cs_if_exist:cTF {texorpdfstring} + { + \texorpdfstring{\g__gzt_citeauthor_tl}{} + }{% + \g__gzt_citeauthor_tl + }% +} +\cs_set_eq:NN \__gzt_orig_multinamedelim \multinamedelim +\cs_set_eq:NN \__gzt_orig_finalnamedelim \finalnamedelim +\cs_new_protected:Nn \__gzt_itemized_citeauthor:n +{ + \cs_set_eq:NN \multinamedelim \item + \cs_set_eq:NN \finalnamedelim \multinamedelim + \AtNextCitekey{\defcounter{maxnames}{100}} + \begin{itemize}[label=\textbullet,noitemsep] + \item \citeauthor{#1} + \end{itemize} + \cs_set_eq:NN \multinamedelim \__gzt_orig_multinamedelim + \cs_set_eq:NN \finalnamedelim \__gzt_orig_finalnamedelim +} +\tl_new:N \l__gzt_bullet_and_rule_tl +\tl_new:N \l__gzt_authors_box_tl +\tl_new:N \l__gzt_abstract_box_tl +\tl_new:N \l__gzt_bullet_and_rule_odd_tl +\tl_new:N \l__gzt_bullet_and_rule_even_tl +\tl_new:N \l__gzt_title_box_tl +\RenewDocumentCommand \maketitle { s } { + \FloatBarrier% +\int_gincr:N \g__gzt_item_in_rubric_int +\dim_set_eq:NN \parindent \c__gzt_original_parindent_dim +\setcounter{section}{0} +\setcounter{figure}{0} +\setcounter{table}{0} +\setcounter{footnote}{0} +\setcounter{equation}{0} +\setcounter{theorem}{0} +\setcounter{corollary}{0} +\setcounter{conjecture}{0} +\setcounter{proposition}{0} +\setcounter{lemma}{0} +\setcounter{axiom}{0} +\setcounter{definition}{0} +\setcounter{remark}{0} +\setcounter{example}{0} +\setcounter{notation}{0} +\tl_gset:Nn \g__gzt_article_bib_key_tl {% + \c__gzt_issue_bib_key_tl + -art- + \int_use:N \g__gzt_articles_int +} +\DTLforeach*[\DTLiseq{\l__gzt_people_role_tl}{author-art-\int_use:N \g__gzt_articles_int}]{people}{% + \l__gzt_people_first_last_name_tl=first-last-name% + ,\l__gzt_people_role_tl=role% +}{% + \tl_if_in:NnT \l__gzt_people_role_tl { author } { + \DTLiffirstrow{% + \tl_put_right:Nx + \l__gzt_people_first_last_names_tl + {\exp_not:V\l__gzt_people_first_last_name_tl} + }{ + \tl_put_right:Nx + \l__gzt_people_first_last_names_tl + {~and~\exp_not:V\l__gzt_people_first_last_name_tl} + } + } +} +\tl_if_empty:NF \g__gzt_title_tl {% + \iow_now:Nx \g__gzt_bib_out_iow {% + @article{ + \g__gzt_article_bib_key_tl, + \iow_newline: + title={\exp_not:V\g__gzt_title_tl}, + \iow_newline: + \tl_if_empty:NF \g__gzt_subtitle_tl {% + subtitle={\exp_not:V\g__gzt_subtitle_tl}, + \iow_newline: + } + \tl_if_eq:NNF { \g__gzt_short_title_tl } { \g__gzt_title_tl } {% + shorttitle={\exp_not:V\g__gzt_short_title_tl}, + \iow_newline: + }% + \tl_if_empty:NF \l__gzt_people_first_last_names_tl + { + author={\exp_not:V\l__gzt_people_first_last_names_tl}, + \iow_newline: + } + options={skipbib}, + \iow_newline: + crossref = {\c__gzt_issue_bib_key_tl} + } + \iow_newline: + }% +}% +\tl_set:Nn \l__gzt_bullet_and_rule_odd_tl +{% + \begin{tikzpicture}[remember~picture,overlay] + \draw[fill=__gzt_circlerule_color,draw=__gzt_circlerule_color,line~width=0.7mm] + ([xshift=-\c__gzt_innermargin_dim-\c__gzt_layoutoffset_dim]0,0 -| current~page.west) -- (\linewidth,0);% + \fill[__gzt_circlerule_color] (\linewidth-2\pgflinewidth,0) circle [radius=2.75mm]; + \end{tikzpicture}% +}% +\tl_set:Nn \l__gzt_bullet_and_rule_even_tl +{% + \begin{tikzpicture}[remember~picture,overlay] + \draw[fill=__gzt_circlerule_color,draw=__gzt_circlerule_color,line~width=0.7mm] + (0,0 -| current~page.east) -- (0,0);% + \fill[__gzt_circlerule_color] (0,0) circle [radius=2.75mm]; + \end{tikzpicture}% +}% +\tl_set:Nn \l__gzt_title_box_tl +{% + \noindent% + \hspace*{18mm}% + \begin{adjustbox}{minipage=\linewidth-18mm,valign=t} + \raggedright% + \color{__gzt_article_title_color}% + \fontsize{20}{25}\selectfont% + \bfseries% + \g__gzt_title_tl + \tl_if_empty:NF \g__gzt_subtitle_tl {% + \par% + \g__gzt_subtitle_tl + } + \phantomsection + \par% + \bool_if:NTF {\g__gzt_title_not_in_toc_bool} { + \bookmark[page=\thepage,level=chapter]{\g__gzt_short_title_tl} + }{ + \addcontentsline{toc}{chapter}{% + \tl_if_empty:NTF \g__gzt_short_title_tl {% + \g__gzt_title_tl% + }{ + \g__gzt_short_title_tl% + } + \bool_if:nF { \tl_if_empty_p:N \g__gzt_short_subtitle_tl || \g__gzt_interview_rubric_bool || \g__gzt_rearviewmirror_rubric_bool } + { + \space\textendash{}\space\g__gzt_short_subtitle_tl + } + \bool_if:nF { \tl_if_empty_p:N \l__gzt_people_first_last_names_tl || \g__gzt_interview_rubric_bool || \g__gzt_rearviewmirror_rubric_bool } + { + \textsl{ + \cs_if_exist:cTF {texorpdfstring} + { + \texorpdfstring{% + \space\textendash{}\space\citeauthor{\g__gzt_article_bib_key_tl} + }{} + }{% + \space\textendash{}\space\citeauthor{\g__gzt_article_bib_key_tl} + }% + } + } + } + } + \end{adjustbox} +} + \dim_gset:Nn \g__gzt_abstract_box_width_dim {0.75\linewidth} + % \bool_if:nT { \tl_if_empty_p:N \l__gzt_people_first_last_names_tl } + % { + % \dim_gset:Nn \g__gzt_abstract_box_width_dim {\linewidth} + % } + \tl_set:Nn \l__gzt_abstract_box_tl + {% + \begin{adjustbox}{minipage=\g__gzt_abstract_box_width_dim,max~width=\g__gzt_abstract_box_width_dim,valign=t} + \mbox{} + \tl_if_exist:NTF \g__gzt_abstract_body_tl + {% + \raggedright% + \bfseries% + \color{__gzt_article_abstract_color}% + \g__gzt_abstract_body_tl + } + {% + }% + \end{adjustbox} + }% + \tl_set:Nn \l__gzt_authors_box_tl + {% + \begin{adjustbox}{minipage=0.3\linewidth,min~width=0.3\linewidth,valign=t} + \bool_if:nTF { \tl_if_empty_p:N \l__gzt_people_first_last_names_tl || \g__gzt_interview_rubric_bool } + { + \mbox{} + } + { + \color{__gzt_people_color}% + \__gzt_itemized_citeauthor:n {\g__gzt_article_bib_key_tl} + } + \end{adjustbox} + } + \bool_if:nTF { + \int_compare_p:nNn { \g__gzt_item_in_rubric_int } = { 1 } + } + { + \mbox{} + \par + \bool_if:nTF { + \tl_if_empty_p:N \g__gzt_rubric_abstract_tl + }{ + \xleaders\vbox { + \bigskip% + }% + \vskip\bigskipamount% + }{ + \xleaders\vbox { + \smallskip% + }% + \vskip\smallskipamount% + } + } + { + \bool_if:NTF {\g__gzt_previous_article_with_bibliography_or_minibio_bool} + { + \xleaders\vbox { + \mbox{} + \par + \medskip% + }% + \vskip\medskipamount% + } + { + \xleaders\vbox { + \mbox{} + \par + \smallskip% + }% + \vskip\smallskipamount% + } + } + \bool_gset_false:N \g__gzt_previous_article_with_bibliography_or_minibio_bool + \bool_if:nF { \g__gzt_for_authors_bool } { + % \xleaders\vbox { + % \bigskip% + % }% + % \vskip\bigskipamount% + \noindent% + \checkoddpage% + \ifoddpage% + \l__gzt_bullet_and_rule_odd_tl + \else% + \l__gzt_bullet_and_rule_even_tl + \fi% + \bigskip% + }% + \par + \nopagebreak[4] + \l__gzt_title_box_tl + \normalsize% + \nopagebreak[3] + \bool_if:nF { \tl_if_empty_p:N \g__gzt_abstract_body_tl && (\tl_if_empty_p:N \l__gzt_people_first_last_names_tl || \g__gzt_interview_rubric_bool || \g__gzt_rearviewmirror_rubric_bool)} + {% + \par% + \bigskip + \bigskip + \large% + \mbox{}% + \checkoddpage% + \ifoddpage% + \l__gzt_abstract_box_tl + \hspace*{11mm}% + \l__gzt_authors_box_tl + \else% + \hspace*{-.85\c__gzt_outermargin_dim}% + \l__gzt_authors_box_tl + \hspace*{11mm}% + \l__gzt_abstract_box_tl + \fi% + } + \tl_gclear:N \g__gzt_title_tl + \tl_gclear:N \g__gzt_subtitle_tl + \tl_gclear:N \g__gzt_abstract_body_tl + \normalsize% + \bigskip + \tl_if_empty:NF \g__gzt_abstract_body_tl + % {% + % \tl_if_empty:NF \l__gzt_people_first_last_names_tl + % {% + % \bigskip + % } + % } + { + \bigskip + } + \bool_if:nT \g__gzt_interview_rubric_bool + { + \dim_zero:N \parindent + \tl_if_empty:NF \g__gzt_people_photo_tl + { + \begin{adjustbox}{center} + \includegraphics[height=50mm]{\g__gzt_people_photo_tl} + \end{adjustbox} + } + } + \color{__gzt_default_text_color}% + \IfBooleanF {#1}% + { + \bool_if:nF { \g__gzt_multicols_bool || \g__gzt_rearviewmirror_rubric_bool} + { + \begin{multicols}{2}% + } + } +} +\AtEndPreamble{\file_input:n {\c__gzt_configuration_file_string_tl}} +\@ifpackageloaded{etoc}{% + \newif\ifShowPartPageInToc % used before \part{Livres} + \newtoks\toctabletok + \newcommand*\appendtotok[2]{% #1=toks variable, #2=macro, expands only once #2 + #1\expandafter\expandafter\expandafter {\expandafter\the\expandafter #1#2}} + \newcommand*\PreparePart{% + \edef\toctablepiece {% + \ExceptFirstPart {\noexpand\\[-1.5mm]}% + \unexpanded{% + \color{__gzt_rubric_in_toc_color}\scshape\fontseries{bx}\selectfont% + }% + \unexpanded\expandafter{\etocthelinkedname}& + % \ifShowPartPageInToc + \unexpanded{\bfseries\color{__gzt_rubric_in_toc_color}}% + \unexpanded\expandafter{\etocthelinkedpage}% + % \fi + \noexpand\\}% + \gdef\ExceptFirstPart ##1{##1}% + } + \newcommand*\PrepareChapter{% + \edef\toctablepiece {% + \unexpanded{\color{__gzt_article_in_toc_color}\small}% + \unexpanded\expandafter{\etocthelinkedname}& + \unexpanded{\color{__gzt_article_in_toc_color}\small} + \unexpanded\expandafter{\etocthelinkedpage}% + \noexpand\\[1mm]}% + } + \etocsetstyle{part}{}{} + {\PreparePart \appendtotok\toctabletok\toctablepiece} + {} + \etocsetstyle{chapter}{}{} + {\PrepareChapter \appendtotok\toctabletok\toctablepiece} + {} + \etocsettocstyle + {% + \setlength\LTleft{\c_zero_dim} + \setlength\LTright{\c_zero_dim} + \gdef\ExceptFirstPart ##1{}% + \toctabletok {%\hypersetup{hidelinks}% + \begin{longtable}{@{\extracolsep{\fill}}p{115mm}@{\quad}!{\color{__gzt_rule_in_toc_color}\vrule width 0.2mm}@{}r@{}}}% + } + {\global\toctabletok\expandafter{% + \the\toctabletok\end{longtable} + } + } + }{} +\tl_new:N \g__gzt_boxed_issue_number_tl% +\tl_gset:Nn \g__gzt_boxed_issue_number_tl {% + \tcbox{\Large\No\g__gzt_issue_number_int} +} +\cs_new_protected:Nn \__gzt_boxed_issue_number:nn +{ + \noindent% + \raisebox{\baselineskip}{% + \tl_if_empty:nF {#1} {% + \makebox[\c_zero_dim][r]{% + % \hspace*{\l__gzt_thumbnail_width_dim}% + \begin{adjustbox}{valign=t} + \includegraphics[width=\l__gzt_thumbnail_width_dim]{#1}% + \end{adjustbox}% + }% + }% + \begin{adjustbox}{valign=t} + \begin{tcolorbox}[% + enhanced,% + title=\No\int_use:N \g__gzt_issue_number_int,% + fonttitle=\Large,% + colback=white,% + sharp~corners=all,% + height=33mm,% + boxrule=\c_zero_dim,% + % frame~hidden,% + attach~boxed~title~to~top~left,% + tikznode~boxed~title={minimum~width=\c__gzt_boxed_issue_number_width_dim},% + boxed~title~style={% + size=minimal,% + height=\c__gzt_boxed_issue_number_height_dim,% + center~upper,% + before={},% + colback=__gzt_boxed_issue_number_bg_color,% + sharp~corners=all,% + frame~hidden,% + valign=center,% + }% + ] + \__gzt_reflected_text:n { #2 }% + \end{tcolorbox} + \end{adjustbox}% + }% + \par% +} +\cs_new_protected:Nn \__gzt_before_frontmatter_stuff: +{ + \bool_gset_true:N \g__gzt_frontmatter_bool% + \pagestyle{__gzt_frontmatter_ps}% + \exp_after:wN\newgeometry\exp_after:wN{\c__gzt_front_matter_geometry_tl}% +} +\cs_new_protected:Nn \__gzt_after_frontmatter_stuff: +{ + \color{__gzt_default_text_color} + \normalsize% + \clearpage% + \bool_gset_false:N \g__gzt_frontmatter_bool% +} +\cs_new_protected:Nn \__gzt_before_editorial_presidentmessage:nn +{ + \__gzt_before_frontmatter_stuff: {} + \__gzt_boxed_issue_number:nn {#1}{#2} + \color{__gzt_frontmatter_text_color}% + \fontsize{11}{13.6}\selectfont + \RaggedRight +} +\cs_new_protected:Nn \__gzt_after_editorial_presidentmessage: +{ + \justifying + \bigskip + \par +} +\cs_new_protected:Nn \__gzt_before_display_editorial: +{ + \__gzt_before_editorial_presidentmessage:nn {}{\c__gzt_editorial_string_tl} +} +\cs_new_protected:Nn \__gzt_after_display_editorial: +{ + \__gzt_after_editorial_presidentmessage: {} + \hspace*{\fill}% + \DTLforeach*[\DTLiseq{\l__gzt_people_role_tl}{editorinchief}]{people}{% + \l__gzt_firstlastname=first-last-name% + ,\l__gzt_people_role_tl=role% + }{% + \__gzt_citeauthor_no_firstinits:n {\c__gzt_issue_bib_key_tl -editorinchief- \exp_not:V\DTLcurrentindex}% + } + % + \__gzt_after_frontmatter_stuff: {} +} +\cs_new_protected:Nn \__gzt_display_editorial: +{ + \__gzt_before_display_editorial: {} + \file_input:n {\c__gzt_editorial_file_string_tl} + \__gzt_after_display_editorial: {} +} +\NewDocumentCommand \editorial {} +{ + \bool_if:NF {\g__gzt_for_authors_bool} { + \__gzt_display_editorial: {} + } +} +\cs_new_protected:Nn \__gzt_display_toc: +{ + \__gzt_before_frontmatter_stuff: {} + \__gzt_boxed_issue_number:nn {\c__gzt_issue_frontcover_image_path_string_tl}{\c__gzt_toc_string_tl} + \phantomsection + \hypertarget{__gzt_toc}{} + \bookmark[dest=__gzt_toc,level=part]{\c__gzt_toc_string_tl} + \etocsettocdepth.toc{chapter}% + \tableofcontents + \the\toctabletok + \__gzt_after_frontmatter_stuff: {} +} +\NewDocumentCommand \gzttableofcontents {} +{ + \bool_if:NF {\g__gzt_for_authors_bool} { + \__gzt_display_toc: {} + } +} +\tl_new:N \g__gzt_frontcover_minitoc_tl% +\tl_new:N \l__gzt_minitoc_label_tl% +\cs_new_protected:Nn \__gzt_frontcover_minitoc:n +{ + \tl_gset:Nn \g__gzt_frontcover_minitoc_tl {#1} +} +\NewDocumentCommand \minitoc { O{} m } +{ + \keys_set:nn { gzt/minitoc } { #1 } + \__gzt_frontcover_minitoc:n {#2} +} +\newlist{__gzt_minitoc_list}{itemize}{1} +\setlist[__gzt_minitoc_list]{itemsep=2ex,label=\textcolor{__gzt_cover_itemize_label_color}\textbullet} +\NewDocumentEnvironment{minitoclist}{ } +{% + \cs_set_eq:NN \__gzt_orig_item \item + \RenewDocumentCommand \item { s O{} }{% + \tl_set:Nn \l__gzt_minitoc_label_tl {##2} + \__gzt_orig_item\textbf{##2} + \IfBooleanT {##1} + { + \c__gzt_minitoc_rubric_title_separator_string_tl + } + } + \begin{__gzt_minitoc_list} +}{ + \end{__gzt_minitoc_list} + \cs_set_eq:NN \item \__gzt_orig_item +} +\cs_new_protected:Nn \__gzt_before_display_presidentmessage: +{ + \__gzt_before_editorial_presidentmessage:nn {\c__gzt_smf_logo_file_string_tl}{\c__gzt_president_message_string_tl} + \phantomsection + \par% + \addcontentsline{toc}{part}{\l__gzt_smf_short_string_tl}% + \addcontentsline{toc}{chapter}{\c__gzt_president_message_string_tl}% +} +\cs_new_protected:Nn \__gzt_after_display_presidentmessage: +{ + \__gzt_after_editorial_presidentmessage: {} + % + \hspace*{\fill}% + \c__gzt_president_message_date_string_tl% + \displaydate{__gzt_president_message_date}% + \\[1.5mm] + \hspace*{\fill}% + \__gzt_display_people_by_role:n { president }% + ,\space + \c__gzt_president_signatory_string_tl + % + \__gzt_after_frontmatter_stuff: {} +} +\cs_new_protected:Nn \__gzt_display_president_message: +{ + \__gzt_before_display_presidentmessage: {} + \file_input:n {\c__gzt_president_message_file_string_tl} + \__gzt_after_display_presidentmessage: {} +} +\NewDocumentCommand \presidentmessage {} +{ + \bool_if:NF {\g__gzt_for_authors_bool} { + \__gzt_display_president_message: {} + } +} +\titleformat{\chapter}% +[block] +{\Huge\bfseries} +{} +{\c_zero_dim} +{\scshape}% +\titleformat{\section} +{% + \raggedright% + \bfseries% + \color{__gzt_section_color} +} +{\fontsize{20}{15}\selectfont\thesection.\enspace} +{-3pt} +{\fontsize{13}{15}\selectfont} +\titleformat{\subsection} +{% + \fontsize{11}{16}\selectfont% + \bfseries% + \color{__gzt_subsection_color}% +} +{\thesubsection\ \textendash{}\ } +{\c_zero_dim} +{} +\titleformat{\subsubsection} +{% + \fontsize{11}{16}\selectfont% + \bfseries% + \color{__gzt_subsubsection_color}% +} +{} +{\c_zero_dim} +{} +\AtBeginDocument{% + % \graphicspath{{\c__gzt_issue_images_path_string_tl//}} + % \glsdisablehyper + \g__gzt_mainmatter_switch_tl + % \bool_gset_false:N \g__gzt_frontmatter_bool + % \bool_gset_true:N \g__gzt_mainmatter_bool + % \SetParskip{\c__gzt_mainmatter_parskip_skip} + % \pagestyle{__gzt_mainmatter_ps}% + \exp_after:wN\newgeometry\exp_after:wN{\c__gzt_main_geometry_tl}% +} +\AtBeginDocument{% + \dim_if_exist:NTF \g__gzt_pagegrid_dim {% + \pagegridsetup{% + enable,% + step=\g__gzt_pagegrid_dim% + } + }{% + \pagegridsetup{% + disable% + } + } + \bool_if:NTF {\g__gzt_for_authors_bool} { + \thispagestyle{empty} + \includegraphics{gzt-logo} + \hfill + \includegraphics[height=22.5mm]{\c__gzt_smf_logo_file_string_tl}% + \par + \vfill + \begin{adjustbox}{valign=c,minipage=\linewidth} + \Large% + \c__gzt_preliminary_version_string_tl% + \end{adjustbox} + \vfill + \newpage + }{ + \bool_if:NF {\g__gzt_inside_pages_bool} { + \g__gzt_display_frontcover_tl + \g__gzt_display_inside_frontcover_tl + } + \bool_if:NT {\g__gzt_cover_bool} { + % \end{document} + } + } +} +\tl_new:N \g__gzt_background_footer_tl +\tl_gset:Nn \g__gzt_background_footer_tl {% + \draw [__gzt_footer_bg_color,fill] + (current~page.south~west) + rectangle ([yshift=\c__gzt_footer_background_height_dim]current~page.south~east) + ; +} +\tl_new:N \l__gzt_frontmatter_head_text_tl +\tl_set:Nn \l__gzt_frontmatter_head_text_tl {% + \includegraphics{gzt-logo} +} +\tl_new:N \g__gzt_frontmatter_page_headrule_tl +\tl_gset:Nn \g__gzt_frontmatter_page_headrule_tl {% + \draw [__gzt_headrule_color,line~width=\c__gzt_header_line_width_dim] + ([yshift=\c__gzt_header_line_yshift_dim]current~page~header~area.south~west -| current~page.north~west) + -- + ([yshift=\c__gzt_header_line_yshift_dim]current~page~header~area.south~east -| current~page.north~east) + ;% +} +\tl_new:N \g__gzt_frontmatter_headtext_tl +\tl_gset:Nn \g__gzt_frontmatter_headtext_tl {% + \mbox{}% + \checkoddpage% + \ifoddpage% + \node[ + anchor=north~east,% + align=center,% + fill=white,% + inner~xsep=3.5mm,% + outer~sep=\c_zero_dim,% + ] at + ([% + xshift=\c__gzt_frontmatter_headtext_o_xshift_dim,% + yshift=\c__gzt_frontmatter_headtext_yshift_dim% + ]current~page.north~east) {% + \l__gzt_frontmatter_head_text_tl + }% + ; + \else% + \node[% + anchor=north~west,% + align=center,% + fill=white,% + inner~xsep=3.5mm,% + outer~sep=\c_zero_dim,% + ] at + ([% + xshift=\c__gzt_frontmatter_headtext_e_xshift_dim,% + yshift=\c__gzt_frontmatter_headtext_yshift_dim% + ]current~page.north~west) {% + \l__gzt_frontmatter_head_text_tl + }% + ; + \fi% +} +\tl_new:N \g__gzt_mainmatter_oddpage_headrule_tl +\tl_gset:Nn \g__gzt_mainmatter_oddpage_headrule_tl {% + \draw [__gzt_headrule_color,line~width=\c__gzt_header_line_width_dim] + ([yshift=\c__gzt_header_line_yshift_dim]current~page~header~area.south~east) + -- + ([yshift=\c__gzt_header_line_yshift_dim]current~page~header~area.south~west -| current~page.north~west) + ; +} +\tl_new:N \g__gzt_mainmatter_evenpage_headrule_tl +\tl_gset:Nn \g__gzt_mainmatter_evenpage_headrule_tl {% + \draw [__gzt_headrule_color,line~width=\c__gzt_header_line_width_dim] + ([yshift=\c__gzt_header_line_yshift_dim]current~page~header~area.south~west) + -- + ([yshift=\c__gzt_header_line_yshift_dim]current~page~header~area.south~east -| current~page.north~east) + ; +} +\ExplSyntaxOff +\tcbuselibrary{breakable,skins,hooks,xparse,theorems,listingsutf8} +\usetikzlibrary{babel,fadings,positioning,calc} +\tcbset{% + new/blend into/tables/.style={% + use counter*=table,% + list inside=lot, + /tcb/code={\appto\tcb@new@colopt{,before title={\fnum@table\space\textendash{}\space}}}},% + new/blend into/figures/.style={% + use counter*=figure,% + list inside=lof, + /tcb/code={\appto\tcb@new@colopt{,before title={\fnum@figure\space\textendash{}\space}}}},% +} +\newcommand\gzt@arcthroughthreepoints[4][]% +{ + % \NoAutoSpacing% + \coordinate (middle1) at ($(#2)!.5!(#3)$); + \coordinate (middle2) at ($(#3)!.5!(#4)$); + \coordinate (aux1) at ($(middle1)!1!90:(#3)$); + \coordinate (aux2) at ($(middle2)!1!90:(#4)$); + \coordinate (center) at ($(intersection of middle1--aux1 and middle2--aux2)$); + \filldraw[fill=white,draw=__gzt_headrule_color,line width=0.25mm,#1] + let \p1=($(#2)-(center)$), + \p2=($(#4)-(center)$), + \n0={veclen(\p1)}, % Radius + \n1={atan2(\y1,\x1)}, % angles + \n2={atan2(\y2,\x2)}, + \n3={\n2>\n1?\n2:\n2+360} + in (#2) arc(\n1:\n3:\n0); + % \foreach \p in {#2,#3,#4,center} + % \fill[red] (\p) circle(2pt); +} +\ExplSyntaxOn +\tl_new:N \g__gzt_rubric_page_head_tl +\tl_gset:Nn \g__gzt_rubric_page_head_tl {% + \bool_if:nF { \g__gzt_for_authors_bool } { + \tikz[remember~picture,overlay] { + \path (current~page.north~west |- current~page~header~area.south~west) coordinate (__gzt_pwest); + \path (current~page.north~east |- current~page~header~area.south~east) coordinate (__gzt_peast); + \draw [__gzt_headrule_color,line~width=\c__gzt_header_line_width_dim] + ([yshift=\c__gzt_header_line_yshift_dim]__gzt_pwest) + -- + ([yshift=\c__gzt_header_line_yshift_dim]__gzt_peast) + ;% + \tl_if_empty:NF \g__gzt_rubric_abstract_tl {% + \mbox{}% + \checkoddpage% + \ifoddpage% + \coordinate (__gzt_A) at ([xshift=\c__gzt_xshift_arccircle_A_dim,yshift=\c__gzt_yshift_arccircle_A_dim]current~page.north~west); + \coordinate (__gzt_B) at ([xshift=\c__gzt_xshift_arccircle_B_dim,yshift=\c__gzt_yshift_arccircle_B_dim]current~page.north~west) ; + \coordinate (__gzt_C) at ([xshift=\c__gzt_xshift_arccircle_C_dim,yshift=\c__gzt_yshift_arccircle_C_dim]current~page.north~west) ; + \gzt@arcthroughthreepoints{__gzt_A}{__gzt_B}{__gzt_C}; + \else% + \coordinate (__gzt_A) at ([xshift=-\c__gzt_xshift_arccircle_A_dim,yshift=\c__gzt_yshift_arccircle_A_dim]current~page.north~east); + \coordinate (__gzt_B) at ([xshift=-\c__gzt_xshift_arccircle_B_dim,yshift=\c__gzt_yshift_arccircle_B_dim]current~page.north~east) ; + \coordinate (__gzt_C) at ([xshift=-\c__gzt_xshift_arccircle_C_dim,yshift=\c__gzt_yshift_arccircle_C_dim]current~page.north~east) ; + \gzt@arcthroughthreepoints{__gzt_C}{__gzt_B}{__gzt_A}; + \fi% + } + } + } +} +\newpagestyle{__gzt_frontcover_ps}[]{% + \sethead + {}% + {% + \adjustbox{stack=c}{ + {\Large + \c__gzt_frontcover_header_string_tl + }\\[7mm] + \adjustbox{scale=2.08}{ + \l__gzt_frontmatter_head_text_tl + }% + }% + }% + {}% + % + \setfoot% + {}% + {}% + {}% +}% +\newpagestyle{__gzt_inside_frontcover_ps}[]{% + \sethead% + [ + \tikz[remember~picture,overlay] {% + \g__gzt_frontmatter_page_headrule_tl% + \g__gzt_frontmatter_headtext_tl% + }% + ]% + []% + []% + {}% + { + \tikz[remember~picture,overlay] {% + \g__gzt_frontmatter_page_headrule_tl% + \g__gzt_frontmatter_headtext_tl% + }% + }% + {}% + % + \setfoot% + []% + [% + \uppercase{\c__gzt_footer_string_tl} + ]% + []% + {}% + {% + \uppercase{\c__gzt_footer_string_tl}% + }% + {}% +}% +\newpagestyle{__gzt_frontmatter_ps}[]{% + \widenhead*{\c__gzt_front_matter_extra_innermargin_dim}{\c__gzt_front_matter_extra_outermargin_dim} + \sethead% + [ + \tikz[remember~picture,overlay] {% + \g__gzt_frontmatter_page_headrule_tl% + \g__gzt_frontmatter_headtext_tl% + }% + ]% + []% + []% + {}% + { + \tikz[remember~picture,overlay] {% + \g__gzt_frontmatter_page_headrule_tl% + \g__gzt_frontmatter_headtext_tl% + }% + }% + {}% + % + \setfoot% + [\c__gzt_footer_size_font_tl\thepage]% + [% + \uppercase{\c__gzt_footer_string_tl} + ]% + []% + {}% + {% + \uppercase{\c__gzt_footer_string_tl}% + }% + {\c__gzt_footer_size_font_tl\thepage}% +}% +\newpagestyle{__gzt_rubric_ps}[]{% + \widenhead{\c_zero_dim}{\c_zero_dim} + \sethead% + [ + ]% + [ + ]% + [ + \g__gzt_rubric_page_head_tl% + \bool_if:nF { \g__gzt_for_authors_bool } { + \adjustbox{raise={\c__gzt_header_yshift_dim}{\height},lap=-\c__gzt_header_xshift_dim-\linewidth}{% + \includegraphics[width=\c__gzt_pictogram_width_dim]{\g__gzt_rubric_pictofile_tl}% + }% + }% + ]% + { + \g__gzt_rubric_page_head_tl% + }% + {}% + {% + \bool_if:nF { \g__gzt_for_authors_bool } { + \adjustbox{raise={\c__gzt_header_yshift_dim}{\height},lap=\c__gzt_header_xshift_dim}{% + \includegraphics[width=\c__gzt_pictogram_width_dim]{\g__gzt_rubric_pictofile_tl}% + }% + }% + }% + % + \setfoot% + [\c__gzt_footer_size_font_tl\thepage]% + [% + \uppercase{\c__gzt_footer_string_tl} + ]% + []% + {}% + {% + \uppercase{\c__gzt_footer_string_tl}% + }% + {\c__gzt_footer_size_font_tl\thepage}% +}% +\newpagestyle{__gzt_advertisement_ps}[]{% + \widenhead{\c_zero_dim}{\c_zero_dim} + \sethead% + [ + \tikz[remember~picture,overlay] {\g__gzt_mainmatter_evenpage_headrule_tl} + ]% + [% + \adjustbox{raise={\c__gzt_header_yshift_dim}{\height}}{% + \large\bfseries\scshape\c__gzt_advertisement_string_tl% + }% + ]% + []% + {}% + {% + \adjustbox{raise={\c__gzt_header_yshift_dim}{\height}}{% + \large\bfseries\scshape\c__gzt_advertisement_string_tl% + } + }% + { + \tikz[remember~picture,overlay] {\g__gzt_mainmatter_oddpage_headrule_tl} + }% + % + \setfoot% + [\c__gzt_footer_size_font_tl\thepage]% + [% + \uppercase{\c__gzt_footer_string_tl} + ]% + []% + {}% + {% + \uppercase{\c__gzt_footer_string_tl}% + }% + {\c__gzt_footer_size_font_tl\thepage}% +} +\newpagestyle{__gzt_inside_backcover_ps}[]{% + \sethead% + [ + \tikz[remember~picture,overlay] {% + \g__gzt_frontmatter_page_headrule_tl% + \g__gzt_frontmatter_headtext_tl% + }% + ]% + []% + []% + {}% + { + \tikz[remember~picture,overlay] {% + \g__gzt_frontmatter_page_headrule_tl% + \g__gzt_frontmatter_headtext_tl% + }% + }% + {}% + % + \setfoot% + []% + [% + \uppercase{\c__gzt_footer_string_tl} + ]% + []% + {}% + {% + \uppercase{\c__gzt_footer_string_tl}% + }% + {}% +}% +\newpagestyle{__gzt_backcover_ps}[]{% + \sethead + {}% + {}% + {}% + % + \setfoot% + {}% + {}% + {}% +}% +\AddEverypageHook{% + \bool_if:nF { \g__gzt_frontcover_bool || \g__gzt_backcover_bool }{ + \bool_if:NF {\g__gzt_advertisement_bool} { + \tikz[remember~picture,overlay] { \g__gzt_background_footer_tl }% + }% + }% +} +\newpagestyle{__gzt_mainmatter_ps}[]{% + \widenhead{\c_zero_dim}{\c_zero_dim} + \sethead% + [ + \tikz[remember~picture,overlay] {\g__gzt_mainmatter_evenpage_headrule_tl} + ]% + [% + \adjustbox{raise={\c__gzt_header_yshift_dim}{\height}}{% + \large\bfseries\scshape\color{__gzt_rubric_head_text_color}\g__gzt_rubric_title_tl% + }% + ]% + []% + {}% + {% + \bool_if:nF { + \g__gzt_rearviewmirror_rubric_bool || \g__gzt_books_rubric_bool + }{ + \adjustbox{raise={\c__gzt_header_yshift_dim}{\height}}{% + \bfseries\color{__gzt_rubric_head_text_color}\g__gzt_short_title_tl% + } + } + }% + { + \tikz[remember~picture,overlay] {\g__gzt_mainmatter_oddpage_headrule_tl} + }% + % + \setfoot% + [\c__gzt_footer_size_font_tl\thepage]% + [% + \uppercase{\c__gzt_footer_string_tl} + ]% + []% + {}% + {% + \uppercase{\c__gzt_footer_string_tl}% + }% + {\c__gzt_footer_size_font_tl\thepage}% +} +\NewDocumentCommand \acknowledgements { m } { + \__gzt_article_acknowledgements:n {#1}% +} +\NewDocumentCommand \printminibios { } { + \bool_if:NT {\g__gzt_multicols_bool} { + \end{multicols}% + } + \FloatBarrier% + \begin{__gzt_minibiographies_acknowledgments_tcbox} + \__gzt_display_people_by_role:n { author-art-\int_use:N \g__gzt_articles_int } + \tl_if_empty:NF \g__gzt_article_acknowledgements_tl + {% + \par% + \bigskip% + \begin{adjustbox}{valign=t,minipage=\linewidth} + \color{__gzt_acknowledgements_color}% + \g__gzt_article_acknowledgements_tl + \end{adjustbox} + } + \end{__gzt_minibiographies_acknowledgments_tcbox} + \bool_gset_true:N \g__gzt_previous_article_with_bibliography_or_minibio_bool + % + \tl_gclear:N \g__gzt_people_affiliation_tl + \tl_gclear:N \g__gzt_people_email_tl + \tl_gclear:N \g__gzt_people_minibio_tl + \tl_gclear:N \g__gzt_people_photo_tl + \tl_gclear:N \g__gzt_people_webpage_tl + \tl_gclear:N \g__gzt_article_acknowledgements_tl + \DTLgcleardb{__gzt_authors} + \DTLgcleardb{__gzt_interviewees} +} +\let\printauthorsdetails\printminibios +\cs_set_eq:NN \__gzt_printbibliography \printbibliography +\RenewDocumentCommand \printbibliography { O{} } { + \bool_if:NT {\g__gzt_multicols_bool} { + \end{multicols}% + } + \FloatBarrier% + \begin{__gzt_bibliography_tcbox} + \__gzt_printbibliography[heading=subbibliography,resetnumbers,#1] + \end{__gzt_bibliography_tcbox} + % + \nopagebreak[0] + \printauthorsdetails +} +\deftranslation[to=French]{__gzt_century}{si\`ecle}% +\deftranslation[to=English]{__gzt_century}{century}% +\deftranslation[to=French]{__gzt_first}{\ier}% +\deftranslation[to=English]{__gzt_first}{\up{st}\xspace}% +\deftranslation[to=French]{__gzt_nth}{\ieme}% +\deftranslation[to=English]{__gzt_nth}{\up{th}\xspace}% +\deftranslation[to=French]{__gzt_bc}{avant~J.-C.}% +\deftranslation[to=English]{__gzt_bc}{BC}% +\cs_new_protected:Nn \__gzt_century:n +{ + \textsc{ + \int_to_roman:n {\int_abs:n {#1}} + }% + \int_compare:nNnTF { \int_abs:n {#1} } > { 1 }{\translate{__gzt_nth}}{\translate{__gzt_first}} + \translate{__gzt_century}% + \space + \int_compare:nNnT { #1 } < { 0 }{\translate{__gzt_bc}} +} +\NewDocumentCommand \aboutfrontcover { O{} O{\c__gzt_about_frontcover_string_tl} m } +{ + \__gzt_about_frontcover:nnn {#1}{#2}{#3}% +} +\cs_new_protected:Nn \__gzt_prepare_rubric:nnn {% + \newpage% + \tl_gclear:N \g__gzt_rubric_abstract_tl + \tl_gset:Nn \g__gzt_rubric_title_tl {#2} + \tl_gset:Nn \g__gzt_rubric_pictofile_tl {#3} + \IfNoValueF {#1} + { + \keys_set:nn { gzt/rubric } { #1 } + } + \__gzt_rubric:nnn + {\g__gzt_rubric_abstract_tl}{\g__gzt_rubric_title_tl}{\g__gzt_rubric_pictofile_tl}% +} +\NewDocumentCommand \rubric {O{}mm} +{ + \__gzt_rubric:nnn {#1}{#2}{#3}% +} +\NewDocumentCommand \mathematics {O{}} +{ + \__gzt_rubric:nnn {#1}{\c__gzt_mathematics_rubric_string_tl}{picto-mathematics} +} +\NewDocumentCommand \dossier {O{}} +{ + \__gzt_rubric:nnn {#1}{\c__gzt_dossier_rubric_string_tl}{picto-dossier} +} +\NewDocumentCommand \community {O{}} +{ + \__gzt_rubric:nnn {#1}{\c__gzt_community_rubric_string_tl}{picto-hands} +} +\NewDocumentCommand \interview {O{}} +{ + \__gzt_rubric:nnn {#1}{\c__gzt_interview_rubric_string_tl}{picto-interview} + \bool_gset_true:N \g__gzt_interview_rubric_bool +} +\NewDocumentCommand \teaching {O{}} +{ + \__gzt_rubric:nnn {#1}{\c__gzt_teaching_rubric_string_tl}{picto-teaching} +} +\NewDocumentCommand \parity {O{}} +{ + \__gzt_rubric:nnn {#1}{\c__gzt_parity_rubric_string_tl}{picto-parity} +} +\NewDocumentCommand \tellme {O{}} +{ + \__gzt_rubric:nnn {#1}{\c__gzt_tellme_rubric_string_tl}{picto-tellme} + \bool_gset_true:N \g__gzt_tellme_rubric_bool +} +\NewDocumentCommand \information {O{}} +{ + \__gzt_rubric:nnn {#1}{\c__gzt_information_rubric_string_tl}{picto-information} +} +\NewDocumentCommand \rearviewmirror {O{}} +{ + \__gzt_rubric:nnn {#1}{\c__gzt_rearviewmirror_rubric_string_tl}{picto-rearviewmirror} + \bool_gset_true:N \g__gzt_rearviewmirror_rubric_bool +} +\NewDocumentCommand \tribute {O{}} +{ + \__gzt_rubric:nnn {#1}{\c__gzt_tribute_rubric_string_tl}{picto-tribute} +} +\NewDocumentCommand \books {O{}} +{ + \__gzt_rubric:nnn {#1}{\c__gzt_books_rubric_string_tl}{picto-books} + \bool_gset_true:N \g__gzt_books_rubric_bool + \vspace{1.5\c__gzt_book_review_frontcover_extend_dim} +} +\NewDocumentCommand \latextips {O{}} +{ + \__gzt_rubric:nnn {#1}{\c__gzt_latex_rubric_string_tl}{} +} +\DeclareCiteCommand{\citeinterviewee}{}{% + \printnames{interviewee}% +} +{}{} +\DeclareCiteCommand{\citereviewer}{}{% + \togglefalse{blx@firstinits}% + \printnames{reviewer}% +} +{}{} +\DeclareCiteCommand{\citereviewerinstitution}{}{% + \printlist{reviewerinstitution}% +} +{}{} +\DeclareCiteCommand{\__gzt_cite_public_price}{}{% + \printfield{publicprice}% +} +{}{} +\DeclareCiteCommand{\__gzt_cite_smf_price}{}{% + \printfield{smfprice}% +} +{}{} +\DeclareCiteCommand{\citecopublisher}{}{% + \printlist{copublisher}% +} +{}{} +\DeclareCiteCommand{\citefrenchabstract}{}{% + \printfield{frenchabstract}% +} +{}{} +\DeclareCiteCommand{\__gzt_cite_englishabstract}{}{% + \printfield{englishabstract}% +} +{}{} +\NewDocumentCommand \email {m} +{ + \__gzt_email:n {#1}% +} +\cs_new_protected:Nn \__gzt_question:n +{ + \int_incr:N \g__gzt_question_int + {% + \par% + \bigskip% + \color{__gzt_question_color} + #1% + \par% + }% +} +\NewDocumentCommand \question {m} +{ + \__gzt_question:n {#1}% +} +\NewDocumentCommand \smf { s } { + \IfBooleanTF {#1} + { + \l__gzt_smf_string_tl + } + { + \l__gzt_smf_short_string_tl + } + \xspace +} +\DeclareExpandableDocumentCommand \surname { m } { + \textsc{#1} +} +\NewDocumentCommand \cad { s } { + \IfBooleanTF {#1} + { + \c__gzt_cad_string_tl + } + { + \c__gzt_cad_short_string_tl + } + \xspace +} +\NewDocumentCommand \Cad { s } { + \IfBooleanTF {#1} + { + \c__gzt_Cad_string_tl + } + { + \c__gzt_Cad_short_string_tl + } + \xspace +} +\NewDocumentCommand \gzt { s } { + \IfBooleanTF {#1} + { + \l__gzt_gzt_string_tl + } + { + \l__gzt_gzt_short_string_tl + } + \xspace +} +\NewDocumentCommand \gztcl { } +{% + \textsl{\texttt{\c__gzt_gzt_class_name_tl}} + \xspace +} +\NewDocumentCommand \gztarticlecl { } +{% + \textsl{\texttt{\c__gzt_gztarticle_class_name_tl}} + \xspace +} +\NewDocumentCommand \century { m } {% + \__gzt_century:n {#1}% +} +\NewDocumentCommand \aside { s m } {% + \IfBooleanTF {#1} + { + \c__gzt_aside_string_tl{}~#2 + } + { + \c__gzt_aside_string_tl{}~#2~\c__gzt_aside_string_tl + } +} +\tl_new:N \g__gzt_font_designer_text_tl% +\cs_new_protected:Nn \__gzt_font_designer_text:n +{ + \tl_gset:Nn \g__gzt_font_designer_text_tl { #1 } +} +\NewDocumentCommand \fontdesignertext {m} +{ + \__gzt_font_designer_text:n {#1}% +} +\tl_new:N \g__gzt_printer_text_tl% +\cs_new_protected:Nn \__gzt_printer_text:n +{ + \tl_gset:Nn \g__gzt_printer_text_tl { #1 } +} +\NewDocumentCommand \printertext {m} +{ + \__gzt_printer_text:n {#1}% +} +\renewcommand{\textflush}{flushepinormal} +\cs_set_eq:NN \__gzt_orig_epigraph \epigraph +\cs_new_protected:Nn \__gzt_epigraph:nn +{ + \bool_if:nTF { \tl_if_empty_p:n {#2} } + { + \setlength{\epigraphrule}{\c_zero_dim} + } + { + \setlength{\epigraphrule}{.4\p@} + } + \__gzt_orig_epigraph{% + \emph{% + \enquote{% + #1% + }% + }% + }% + {% + #2 + } +} +\RenewDocumentCommand \epigraph { m m } +{ + \__gzt_epigraph:nn {#1}{#2}% +} +\NewDocumentEnvironment{authorsinstructions}{ } +{% + \begingroup + \tcbverbatimwrite{\c__gzt_authors_instructions_file_tl} +}% +{ + \endtcbverbatimwrite + \endgroup +} +\lstdefinestyle{__gzt_lst_style}{% + escapechar=+, + language=[LaTeX]TeX, + texcsstyle=*\bfseries, + breaklines=true, + basicstyle=\normalfont\ttfamily, + columns=flexible, + inputencoding=utf8/latin1 +}% +\DeclareTotalTCBox{\gztverb}{ v }{verbatim,blank,fuzzy~halo=0pt~with~__gzt_light_generic_dark_color!8}{#1} +\NewTCBListing{gztcode}{ O{} }{% + listing~style=__gzt_lst_style, + listing~only, + enlarge~top~by=\medskipamount, + breakable, + #1% +} +\DeclareTColorBox[blend~into=figures]{gztfigure}{ O{} } +{ + #1% + % ,title={#2}% + ,width=\linewidth% + ,__gzt_tcb_floats_style% +} +\DeclareTColorBox[blend~into=figures]{gztfigure*}{ O{} } +{ + #1% + ,float* + % ,title={#2}% + ,width=\textwidth% + ,__gzt_tcb_floats_style% +} +\DeclareTColorBox[blend~into=tables]{gzttable}{ O{} } +{ + #1% + % ,title={#2}% + ,width=\linewidth% + ,__gzt_tcb_floats_style% +} +\DeclareTColorBox[blend~into=tables]{gzttable*}{ O{} } +{ + #1% + ,float* + % ,title={#2}% + ,width=\textwidth% + ,__gzt_tcb_floats_style% +} +\DeclareTColorBox{gztscan}{ O{} } +{ + #1% + % ,title={#2}% + ,width=\textwidth% + ,__gzt_tcb_floats_style% + ,size=tight% +} +\DeclareTColorBox{__gzt_book_review}{ O{} } +{ + overlay~unbroken~and~first={% + \node at (frame.north~west) { + { + \makebox[\c_zero_dim][l]{% + \adjustbox{raise={-2\height+\c__gzt_book_review_frontcover_extend_dim}{\c_zero_dim}}{% + \includegraphics[width=20mm]{\g__gzt_bookreview_frontcover_tl}% + }% + } + } + }; + }, + __gzt_tcb_book_review_box_style, + #1 +} +\DeclareTColorBox{__gzt_bibliography_tcbox}{ O{} } +{ + __gzt_tcb_bibliography_style, + #1 +} +\DeclareTColorBox{__gzt_minibiographies_acknowledgments_tcbox}{ O{} } +{ + __gzt_tcb_minibiographies_acknowledgments_style, + #1 +} +\NewDocumentEnvironment{bookreview}{ O{} m } +{ + \keys_set:nn { gzt/bookreview } { #2 } + \begin{__gzt_book_review}[#1] + \xpatchfieldformat{title}{mkbibemph}{textbf}{}{}% + \xpretonameformat{author}{\color{__gzt_people_color}}{}{}% + \togglefalse{blx@firstinits}% + \noindent\fullcite{\g__gzt_bookreview_bibkey_tl} + \vspace{10mm} + \tcblower +}{ + \begin{flushright} + % \g__gzt_reviewer_tl + \bigskip + \citereviewer{\g__gzt_bookreview_bibkey_tl}\\ + \citereviewerinstitution{\g__gzt_bookreview_bibkey_tl} + \end{flushright} + % \vspace*{10mm} + \mbox{} + \end{__gzt_book_review} +} +\DeclareTColorBox{__gzt_book_advertisement}{ O{} } +{ + __gzt_tcb_book_advertisement_box_style, + #1 +} +\DeclareTColorBox{__gzt_inside_cover_tcb}{ O{} } +{ + #1 +} +\NewDocumentEnvironment{bookadvertisement}{ O{} m } +{% + \keys_set:nn { gzt/bookadvertisement } { #2 }% + \newpage{} + \mbox{} + \vfill + \begin{__gzt_book_advertisement}[#1] + \begin{tcolorbox}[ + lefthand~width=47.5mm + ,sidebyside + ,colback=__gzt_book_advertisement_bg_color + % ,sharp~corners=all + ,fontlower=\large + ,flushleft~lower + ,boxrule=\c_zero_dim + ,frame~hidden% + ,leftright~skip=\c_zero_dim + ,before~skip=\c_zero_dim + ,lower~separated=false + ] + \adjustbox{frame}{\includegraphics[width=45mm]{\g__gzt_bookadvertisement_frontcover_tl}}% + \tcblower + \xpatchfieldformat{title}{mkbibemph}{textbf}{}{}% + \def\abx@str{abx@lstr}% + \noindent\fullcite{\g__gzt_bookadvertisement_bibkey_tl} + \def\abx@str{abx@sstr}% + \end{tcolorbox} + \bigskip + \c__gzt_published_with_help_of_string_tl~\citecopublisher{\g__gzt_bookadvertisement_bibkey_tl}. + \par + \bigskip + \citefrenchabstract{\g__gzt_bookadvertisement_bibkey_tl} + \par + \medskip + % + \begin{center} + Prix~public~:\space + \EUR{\__gzt_cite_public_price{\g__gzt_bookadvertisement_bibkey_tl}} + \space\textendash\space Prix~membre~\smf{}~:\space + \EUR{\__gzt_cite_smf_price{\g__gzt_bookadvertisement_bibkey_tl}} + \space\textendash\space Frais~de~port~non~compris + \end{center} + % + \par + \bigskip + \begin{otherlanguage}{english} + \itshape + \__gzt_cite_englishabstract{\g__gzt_bookadvertisement_bibkey_tl} + % + \par + \medskip + % + \begin{center} + Public~price:\space + \EUR{\__gzt_cite_public_price{\g__gzt_bookadvertisement_bibkey_tl}} + \space\textendash\space \smf{}~member~price:\space + \EUR{\__gzt_cite_smf_price{\g__gzt_bookadvertisement_bibkey_tl}} + \space\textendash\space Shipping~costs~not~included + \end{center} + \end{otherlanguage} + \par + \bigskip + }{ + \tcblower + \includegraphics[height=22.5mm]{\c__gzt_smf_logo_file_string_tl}% + % \newline + % \smallskip + % % \begin{adjustbox}{valign=t,minipage=60mm} + % \l__gzt_journal_address_tl + % % \end{adjustbox} + % \newline + \par{} + \smallskip% + \url{\l__gzt_journal_url_tl} + \end{__gzt_book_advertisement} + \vfill + \newpage + \bool_gset_false:N \g__gzt_advertisement_bool + \bool_gset_true:N \g__gzt_mainmatter_bool +} +\cs_generate_variant:Nn \tl_if_eq:nnT { NnT } +\NewDocumentCommand \gztinput { m m } {% + \startcustomization% + \bool_if:NF {\g__gzt_refsection_bool} { + \begin{refsection} + } + \tl_if_in:NnT + { \c__gzt_advertisement_directory_string_tl } { #1 } {% + \newpage + \thispagestyle{__gzt_advertisement_ps} + } + \inputfrom{#1}{#2} + \bool_if:NT {\g__gzt_multicols_bool} { + \end{multicols}% + } + \bool_if:NT {\g__gzt_refsection_bool} { + \end{refsection} + } + \cleancustomization% +} +\bool_if:NF {\g__gzt_inside_pages_bool} { + \preto\@enddocumenthook{ + \clearpage + \pagenumbering{roman}% + \addtocounter{page}{2} + \ifoddpage% + \hbox{} + \fi + \newpage + \bool_gset_true:N \g__gzt_backmatter_bool + \g__gzt_display_inside_backcover_tl + \newpage + \g__gzt_display_backcover_tl + }% +}% +\pgfplotsset{% + /pgf/number~format/.cd, + use~comma, + 1000~sep={\,}, + min~exponent~for~1000~sep=4 +}% +\defbibheading{bibassection}[\bibname]{\section*{#1}}% +\renewcommand{\bibfont}{\normalfont\footnotesize} +\exp_after:wN\addbibresource\exp_after:wN{\c__gzt_issue_bib_path_string_tl} +\DeclareNameFormat{firstinits-last}{% + \usebibmacro{name:first-last}{#1}{#4}{#5}{#7}% + \usebibmacro{name:andothers}% +} +\DeclareNameAlias{labelname}{firstinits-last} +\renewcommand*\bibnamedelimc{\addnbspace} +\renewcommand*\bibnamedelimd{\addnbspace} +\renewbibmacro{in:}{% + \ifentrytype{article}{}{\printtext{\bibstring{in}\intitlepunct}}} +\renewbibmacro*{journal}{% + \iffieldundef{shortjournal}% + {% + \iffieldundef{journaltitle} + {} + {% + \printtext[journaltitle]% + {% + \printfield[titlecase]{journaltitle}% + \setunit{\subtitlepunct}% + \printfield[titlecase]{journalsubtitle}% + }% + }% + }% + {\printtext[journaltitle]{\printfield[titlecase]{shortjournal}}}% +} +\renewbibmacro*{volume+number+eid}{% + \printfield{volume}% + \setunit{\addcomma\space}% + \printfield{number}% + \setunit{\addcomma\space}% + \printfield{eid}} +\DeclareFieldFormat[article]{volume}{\mkbibbold{#1}} +\DeclareFieldFormat[book]{volume}{\mkbibbold{#1}} +\DeclareFieldFormat[article]{number}{\bibstring{number}#1} +\DeclareLanguageMapping{french}{gzt}% use the new abbreviations +\ifkp@easyscsl +\DeclareRobustCommand{\itshape}{\not@math@alphabet\itshape\mathit% + \ifthenelse{\equal{\f@shape}{\scdefault}}{\fontshape{scsl}}{% + \fontshape\itdefault}\selectfont} +\fi +\DeclareMathAlphabet\mathfrak{U}{euf}{m}{n} +\SetMathAlphabet\mathfrak{bold}{U}{euf}{b}{n} +\@ifpackageloaded{draftwatermark}{% + \SetWatermarkColor{gray!10}% + \SetWatermarkFontSize{30mm}% + \SetWatermarkText{\MakeUppercase{\c__gzt_draftwatermark_string_tl}}% +}{% +} +\tikzset{ + __gzt_dots/.style={ + line~width=\c__gzt_tikz_dot_diameter_dim, + line~cap=round, + dash~pattern=on~0pt~off~\c__gzt_tikz_dot_spacing_dim + }, + __gzt_tcb_segmentation_style/.style={ + __gzt_dots, + draw=__gzt_dotfill_color, + shorten~>=~\c__gzt_tcb_left_dim+\c__gzt_tcb_boxsep_dim, + shorten~<=~\c__gzt_tcb_left_dim+\c__gzt_tcb_boxsep_dim, + } +} +\tcbset{ + copyright/.style={overlay={\node[rotate=90,anchor=south~west,font=\tiny] + at (frame.south~east) {\copyright{}~#1};}} +} +\tcbset{% + __gzt_tcb_floats_style/.style={% + enhanced% + ,every~float=\centering% + ,coltitle=__gzt_generic_dark_color% + ,colbacktitle=__gzt_float_title_bg_color% + ,colback=white% + ,colframe=__gzt_float_frame_color% + ,center~upper% + ,sharp~corners=all% + ,boxrule=0.3mm% + ,separator~sign~dash + % ,attach~boxed~title~to~bottom~center + % ,minipage~boxed~title*=-6mm + % ,boxed~title~style={ + % enhanced + % ,boxrule=0mm% + % ,sharp~corners=all% + }% +} +\tcbset{% + __gzt_tcb_book_review_box_style/.style={% + enhanced,% + colback=__gzt_book_review_frame_bg_color,% + breakable,% + height=50mm,% + boxrule=\c_zero_dim, + sharp~corners=all,% + skin=enhancedlast, + leftupper=25mm, + enlarge~bottom~finally~by=-1mm, + middle=4mm, + segmentation~style={__gzt_tcb_segmentation_style}% + } +} +\tcbset{% + __gzt_tcb_book_advertisement_box_style/.style={% + enhanced,% + colframe=__gzt_book_advertisement_frame_color,% + colback=__gzt_book_advertisement_bg_color,% + center~lower, + sharp~corners=all,% + % skin=enhancedlast, + % middle=4mm, + lower~separated=false, + % segmentation~style={__gzt_tcb_segmentation_style}% + } +} +\tcbset{% + __gzt_tcb_inside_cover_style/.style={% + % split=0.6,% + colback=__gzt_inside_frontcover_frame_bg_color,% + colbacktitle=__gzt_inside_frontcover_frame_bg_color,% + sharp~corners=all,% + center~title,% + coltitle=__gzt_inside_frontcover_frame_title_color,% + fonttitle=\bfseries\large,% + boxrule=\c_zero_dim,% + toptitle=3mm,% + bottomtitle=4mm,% + frame~hidden,% + enhanced,% + height=\c__gzt_layoutheight_dim-\c__gzt_topmargin_inside_cover_dim-\c__gzt_botmargin_dim, + width=\c__gzt_inside_cover_box_width_dim, + middle=4mm, + segmentation~style={__gzt_tcb_segmentation_style}% + }, + __gzt_tcb_inside_frontcover_style/.style={% + __gzt_tcb_inside_cover_style, + enlarge~left~by=-\c__gzt_inside_cover_offset_dim, + title=\c__gzt_editorial_board_string_tl + }, + __gzt_tcb_inside_backcover_style/.style={% + __gzt_tcb_inside_cover_style, + enlarge~left~by=\c__gzt_inside_cover_offset_dim, + title=\file_if_exist:nT { \c__gzt_authors_instructions_file_tl } {% + \c__gzt_authors_instructions_string_tl + } + } +} +\tcbset{% + __gzt_tcb_bibliography_style/.style={% + colback=__gzt_bibliography_minibios_acknowledgments_bg_color, + breakable, + boxrule=\c_zero_dim, + sharp~corners=all,% + enhanced + } +} +\tcbset{% + __gzt_tcb_minibiographies_acknowledgments_style/.style={% + colback=__gzt_bibliography_minibios_acknowledgments_bg_color, + breakable, + boxrule=\c_zero_dim, + drop~lifted~shadow=black, + sharp~corners=all,% + skin=enhancedlast, + skin~first~is~subskin~of={enhancedmiddle}{no~shadow}, + skin~middle~is~subskin~of={enhancedmiddle}{no~shadow}, + skin~last~is~subskin~of={enhancedlast}{drop~lifted~shadow} + } +} +\tcbset{% + enlargepage~flexible=\baselineskip, + left=\c__gzt_tcb_left_dim, + boxsep=\c__gzt_tcb_boxsep_dim, +} +\setlist[1]{labelindent=\parindent} +\setlist[itemize]{label=\textendash{}, nosep} +\setlist{% + labelwidth=\widthof{\textendash}, + itemsep=0.4ex plus 0.2ex minus 0.2ex, + parsep=0.4ex plus 0.2ex minus 0.2ex, + topsep=0.8ex plus 0.4ex minus 0.4ex, + partopsep=0.4ex plus 0.2ex minus 0.2ex, + leftmargin=!% +} +\setlist[description]{ + font= + \bool_if:nTF { \g__gzt_books_rubric_bool || \g__gzt_inside_frontcover_bool || \g__gzt_inside_backcover_bool } + { + \color{black} + }{ + \color{__gzt_description_label_light_color} + } + \bfseries +} +\DeclarePlainStyle{«~}{~»}{`}{'} +\setcounter{topnumber}{3} +\renewcommand{\topfraction}{0.8} +\addtolength{\skip\footins}{.25\baselineskip} +\setlength{\columnsep}{7mm}% +\renewcommand{\thesection}{\arabic{section}}% +\@ifpackageloaded{siunitx}{% + \sisetup{locale=FR} +} +\arrayrulecolor{__gzt_arrayrule_color}% +\addto\captionsfrench{\def\tablename{{\scshape Tableau}}}% +\RenewDocumentCommand \vec { m } { + \vv{#1} +} +\cs_set_eq:NN \__gzt_orig_usetikzlibrary \usetikzlibrary +\RenewDocumentCommand \usetikzlibrary { m } { + \shorthandoff{:}% + \__gzt_orig_usetikzlibrary{#1} + \shorthandon{:}% + % \begingroup + % \NoAutoSpacing + % \__gzt_orig_usetikzlibrary{#1} + % \endgroup +} +\cs_new_protected:Nn \__gzt_bilingual:nnn +{ + \deftranslation[to=French]{#1}{#2}% + \deftranslation[to=English]{#1}{#3}% +} +\cs_new_protected:Nn \__gzt_new_theorem:nnnn +{ + % \__gzt_bilingual:nnn {#2}{#3}{#4} + \deftranslation[to=French]{#2}{#3}% + \deftranslation[to=English]{#2}{#4}% + \declaretheorem[% + #1,% + name=\translate{#2} + ]{#2} + \declaretheorem[% + #1,% + name=\translate{#2}, + numbered=no + ]{#2*} +} +\cs_generate_variant:Nn \__gzt_new_theorem:nnnn { nnVV } +\declaretheoremstyle[spaceabove=3pt,notefont=\bfseries,bodyfont=\itshape]{theorem} +\declaretheoremstyle[spaceabove=3pt,notefont=\bfseries,bodyfont=\normalfont]{definition} +\declaretheoremstyle[spaceabove=3pt,bodyfont=\normalfont,qed=\ensuremath{\qedsymbol},headfont=\normalfont\itshape,numbered=no]{proof} +\RenewDocumentCommand \newtheorem { O{} m } +{ + \tl_clear:N \l__gzt_newtheorem_style_tl + \tl_clear:N \l__gzt_newtheorem_frenchtitle_tl + \tl_clear:N \l__gzt_newtheorem_englishtitle_tl + \tl_set:Nn \l__gzt_newtheorem_englishtitle_tl { + \MakeUppercase #2 + } + \tl_set:Nf \l__gzt_newtheorem_frenchtitle_tl { + \l__gzt_newtheorem_englishtitle_tl + } + \tl_set:Nn \l__gzt_newtheorem_style_tl { + theorem + } + \IfNoValueF {#1} + { + \keys_set:nn { gzt/newtheorem } { #1 } + } + % \tl_if_eq:VVF { \l__gzt_newtheorem_englishtitle_tl } { \MakeUppercase #2 } + % {% + % \tl_show:N \l__gzt_newtheorem_englishtitle_tl + % \tl_show:N \l__gzt_newtheorem_frenchtitle_tl + % \tl_if_eq:NNF { \l__gzt_newtheorem_frenchtitle_tl } { \l__gzt_newtheorem_englishtitle_tl } + % {% + % \tl_set:Nf \l__gzt_newtheorem_frenchtitle_tl { + % \l__gzt_newtheorem_englishtitle_tl + % } + % } + % } + % \tl_show:N \l__gzt_newtheorem_style_tl + % \tl_show:N \l__gzt_newtheorem_frenchtitle_tl + % \tl_show:N \l__gzt_newtheorem_englishtitle_tl + \__gzt_new_theorem:nnVV {style=\l__gzt_newtheorem_style_tl}{#2}{\l__gzt_newtheorem_frenchtitle_tl}{\l__gzt_newtheorem_englishtitle_tl} +} +\newtheorem[frenchtitle=Th\'eor\`eme]{theorem} +\newtheorem[frenchtitle=Corollaire]{corollary} +\newtheorem{conjecture} +\newtheorem{proposition} +\newtheorem[frenchtitle=Lemme]{lemma} +\newtheorem[frenchtitle=Axiome]{axiom} +\newtheorem[style=definition,frenchtitle=D\'efinition]{definition} +\newtheorem[style=definition,frenchtitle=Remarque]{remark} +\newtheorem[style=definition,frenchtitle=Exemple]{example} +\newtheorem[style=definition]{notation} +\let\proof\relax +\newtheorem[style=proof,frenchtitle=Preuve]{proof} +\cs_new_protected:Nn \__gzt_clone_theorem:nn +{ + \NewDocumentEnvironment{#1}{ } + { + \begin{#2} + } + { + \end{#2} + } + \NewDocumentEnvironment{#1*}{ } + { + \begin{#2*} + } + { + \end{#2*} + } +} +\__gzt_clone_theorem:nn {theoreme} {theorem} +\__gzt_clone_theorem:nn {corollaire}{corollary} +\__gzt_clone_theorem:nn {lemme}{lemma} +\__gzt_clone_theorem:nn {axiome}{axiom} +\__gzt_clone_theorem:nn {remarque}{remark} +\__gzt_clone_theorem:nn {exemple}{example} +\__gzt_clone_theorem:nn {preuve}{proof} +\DeclareMathOperator{\cotan}{cotan} +\DeclareMathOperator{\Arccos}{Arccos} +\DeclareMathOperator{\Arcsin}{Arcsin} +\DeclareMathOperator{\Arctan}{Arctan} +\DeclareMathOperator{\Argch}{Argch} +\DeclareMathOperator{\Argsh}{Argsh} +\DeclareMathOperator{\Argth}{Argth} +\cs_set_eq:NN \__gzt_orig_arccos \arccos +\cs_set_eq:NN \__gzt_orig_arcsin \arcsin +\cs_set_eq:NN \__gzt_orig_arctan \arctan +\RenewDocumentCommand \arccos { } { + \IfLanguageName {french}{\Arccos}{\__gzt_orig_arccos}% +} +\RenewDocumentCommand \arcsin { } { + \IfLanguageName {french}{\Arcsin}{\__gzt_orig_arcsin}% +} +\RenewDocumentCommand \arctan { } { + \IfLanguageName {french}{\Arctan}{\__gzt_orig_arctan}% +} +\DeclareMathOperator{\ch}{ch} +\DeclareMathOperator{\sh}{sh} +\cs_set_eq:NN \__gzt_orig_tanh \tanh +\RenewDocumentCommand \tanh { } { + \IfLanguageName {french}{\operatorname{th}}{\__gzt_orig_tanh}% +} +\cs_set_eq:NN \__gzt_orig_log \log +\cs_set_eq:NN \__gzt_orig_lg \lg +\RenewDocumentCommand \log { s } { + \IfBooleanTF {#1} + { + \__gzt_orig_log + } + { + \ln + } +} +\RenewDocumentCommand \lg { s } { + \IfBooleanTF {#1} + { + \__gzt_orig_lg + } + { + \ln + } +} +\cs_set_eq:NN \__gzt_orig_leq \leq +\cs_set_eq:NN \__gzt_orig_geq \geq +\RenewDocumentCommand \le { } {% + \IfLanguageName {french}{\leqslant}{\__gzt_orig_leq}% +} +\RenewDocumentCommand \leq { } {% + \IfLanguageName {french}{\leqslant}{\__gzt_orig_leq}% +} +\RenewDocumentCommand \ge { } {% + \IfLanguageName {french}{\geqslant}{\__gzt_orig_geq}% +} +\RenewDocumentCommand \geq { } {% + \IfLanguageName {french}{\geqslant}{\__gzt_orig_geq}% +} +\NewDocumentCommand \N { } {\mathbb{N}} +\NewDocumentCommand \Z { } {\mathbb{Z}} +\NewDocumentCommand \D { } {\mathbb{D}} +\NewDocumentCommand \Q { } {\mathbb{Q}} +\NewDocumentCommand \R { } {\mathbb{R}} +\NewDocumentCommand \C { } {\mathbb{C}} +\NewDocumentCommand \K { } {\mathbb{K}} +\ExplSyntaxOff + +%% ---------------------------------------------------------------------------- +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.3 +%% of this license or (at your option) any later version. +%% The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.3 or later is part of all distributions of LaTeX +%% version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status `maintained'. +%% +%% The Current Maintainer of this work is Denis Bitouz'e. +%% +%% This work consists of the file gzt.dtx +%% and the derived files gzt.cls, +%% gztarticle.cls, +%% gzt.ins, +%% gzt.pdf, +%% and a number of configuration files. +%% +%% End of file `gzt.cls'. diff --git a/Master/texmf-dist/tex/latex/gzt/gzt.dbx b/Master/texmf-dist/tex/latex/gzt/gzt.dbx new file mode 100644 index 00000000000..ea34a7faf18 --- /dev/null +++ b/Master/texmf-dist/tex/latex/gzt/gzt.dbx @@ -0,0 +1,165 @@ +%% +%% This is file `gzt.dbx', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% gzt.dtx (with options: `datamodel') +%% ----------------------------------------------------------------------------- +%% gzt --- SMF bundle of classes for the French journal "La Gazette des +%% Math'ematiciens", version 0.9 +%% +%% E-mail: denis.bitouze@lmpa.univ-littoral.fr +%% Released under the LaTeX Project Public License v1.3c or later +%% See http://www.latex-project.org/lppl.txt +%% ----------------------------------------------------------------------------- +\DeclareDatamodelFields[type=list,datatype=name]{interviewee} +\DeclareDatamodelEntryfields[interview]{ + interviewee, + author +} +\DeclareBibliographyDriver{interview}{% + \printnames{author}~interviewent~\printnames{interviewee}% + \usebibmacro{finentry}% +} +\DeclareBibliographyDriver{bookreview}{% + \usebibmacro{bibindex}% + \usebibmacro{begentry}% + \usebibmacro{maintitle+title}% + \newline\nopunct\newblock + \usebibmacro{author/editor+others/translator+others}% + \setunit{\labelnamepunct} + \newline\nopunct\newblock + \usebibmacro{byauthor}% + \newunit\newblock + \usebibmacro{byeditor+others}% + \newunit\newblock + \printfield{edition}% + \newunit + \iffieldundef{maintitle} + {\printfield{volume}% + \printfield{part}} + {}% + \newunit + \printfield{volumes}% + \newunit\newblock + \usebibmacro{series+number}% + \newunit\newblock + \printfield{note}% + \newunit\newblock + \usebibmacro{publisher+location+date}% + \newunit\newblock + \usebibmacro{chapter+pages}% + \newunit + \printfield{pagetotal}% + \newunit\newblock + \printlist{language}% + \newunit\newblock + \iftoggle{bbx:isbn} + {\printfield{isbn}} + {}% + \newunit\newblock + \usebibmacro{doi+eprint+url}% + \newunit\newblock + \usebibmacro{addendum+pubstate}% + \setunit{\bibpagerefpunct}\newblock + \usebibmacro{pageref}% + \newunit\newblock + \iftoggle{bbx:related} + {\usebibmacro{related:init}% + \usebibmacro{related}} + {}% + \usebibmacro{finentry}} +\DeclareDatamodelFields[type=list,datatype=name]{reviewer} +\DeclareDatamodelFields[type=list,datatype=literal]{reviewerinstitution} +\DeclareDatamodelEntryfields[bookreview]{ + reviewer, + reviewerinstitution +} +\DeclareBibliographyDriver{bookadvertisement}{% + \usebibmacro{bibindex}% + \usebibmacro{begentry}% + \textbf{\printfield{series}}% + % \usebibmacro{series+number}% + \bigskip\newline\nopunct\newblock + {% + \Large% + \printfield{title}% + \newunit\newblock + }% + \iffieldundef{volume} + {}% + {\textbf{\printfield{volume}}} + \newline\nopunct\newblock + \textbf{\printfield{titleaddon}}% + \newline\nopunct\newblock + \printfield{subtitle}% + \newline\nopunct\newblock + \usebibmacro{author/editor+others/translator+others}% + \setunit{\labelnamepunct} + \newline\nopunct\newblock + \usebibmacro{byauthor}% + \newunit\newblock + \usebibmacro{byeditor+others}% + \newunit\newblock + \printfield{edition}% + \newunit\newblock + \printfield{note}% + \newunit\newblock + \usebibmacro{publisher+location+date}% + \newunit\newblock + \usebibmacro{chapter+pages}% + \newunit + \printfield{pagetotal}% + \newunit\newblock + \printlist{language}% + \newline\nopunct\newblock + \iftoggle{bbx:isbn} + {\printfield{isbn}} + {}% + \newunit\newblock + \usebibmacro{doi+eprint+url}% + \newunit\newblock + \usebibmacro{addendum+pubstate}% + \setunit{\bibpagerefpunct}\newblock + \usebibmacro{pageref}% + \newunit\newblock + \iftoggle{bbx:related} + {\usebibmacro{related:init}% + \usebibmacro{related}} + {}% + \usebibmacro{finentry}} +\DeclareDatamodelFields[type=field,datatype=literal]{publicprice} +\DeclareDatamodelFields[type=field,datatype=literal]{smfprice} +\DeclareDatamodelFields[type=field,datatype=literal]{frenchabstract} +\DeclareDatamodelFields[type=field,datatype=literal]{englishabstract} +\DeclareDatamodelFields[type=list,datatype=literal]{copublisher} +\DeclareDatamodelEntryfields[bookadvertisement]{ + publicprice, + smfprice, + frenchabstract, + englishabstract, + copublisher +} + +%% ---------------------------------------------------------------------------- +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.3 +%% of this license or (at your option) any later version. +%% The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.3 or later is part of all distributions of LaTeX +%% version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status `maintained'. +%% +%% The Current Maintainer of this work is Denis Bitouz'e. +%% +%% This work consists of the file gzt.dtx +%% and the derived files gzt.cls, +%% gztarticle.cls, +%% gzt.ins, +%% gzt.pdf, +%% and a number of configuration files. +%% +%% End of file `gzt.dbx'. diff --git a/Master/texmf-dist/tex/latex/gzt/gzt.lbx b/Master/texmf-dist/tex/latex/gzt/gzt.lbx new file mode 100644 index 00000000000..e1dfc58a994 --- /dev/null +++ b/Master/texmf-dist/tex/latex/gzt/gzt.lbx @@ -0,0 +1,45 @@ +%% +%% This is file `gzt.lbx', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% gzt.dtx (with options: `languagemodel') +%% ----------------------------------------------------------------------------- +%% gzt --- SMF bundle of classes for the French journal "La Gazette des +%% Math'ematiciens", version 0.9 +%% +%% E-mail: denis.bitouze@lmpa.univ-littoral.fr +%% Released under the LaTeX Project Public License v1.3c or later +%% See http://www.latex-project.org/lppl.txt +%% ----------------------------------------------------------------------------- + \ProvidesFile{gzt.lbx} + \InheritBibliographyExtras{french}% extras are inherited from French... + \DeclareBibliographyStrings{% + inherit = {french},% .... as well as all the keys + number = {{\no}{\no}}, + volume = {{volume}{vol\adddot}}, + volumes = {{volumes}{vol\adddot}}, + } + +%% ---------------------------------------------------------------------------- +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.3 +%% of this license or (at your option) any later version. +%% The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.3 or later is part of all distributions of LaTeX +%% version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status `maintained'. +%% +%% The Current Maintainer of this work is Denis Bitouz'e. +%% +%% This work consists of the file gzt.dtx +%% and the derived files gzt.cls, +%% gztarticle.cls, +%% gzt.ins, +%% gzt.pdf, +%% and a number of configuration files. +%% +%% End of file `gzt.lbx'. diff --git a/Master/texmf-dist/tex/latex/gzt/gztarticle.cls b/Master/texmf-dist/tex/latex/gzt/gztarticle.cls new file mode 100644 index 00000000000..0f63ca469a0 --- /dev/null +++ b/Master/texmf-dist/tex/latex/gzt/gztarticle.cls @@ -0,0 +1,3175 @@ +%% +%% This is file `gztarticle.cls', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% gzt.dtx (with options: `class-article') +%% ----------------------------------------------------------------------------- +%% gzt --- SMF bundle of classes for the French journal "La Gazette des +%% Math'ematiciens", version 0.9 +%% +%% E-mail: denis.bitouze@lmpa.univ-littoral.fr +%% Released under the LaTeX Project Public License v1.3c or later +%% See http://www.latex-project.org/lppl.txt +%% ----------------------------------------------------------------------------- +\RequirePackage{silence}% +\WarningFilter{kpfonts}{With 'easyscsl' option} +\RequirePackage{xpatch}% +\patchcmd% + {\use@@tikzlibrary}% + {% + \pgfutil@InputIfFileExists{tikzlibrary\pgf@temp.code.tex}{}{ + \pgfutil@IfFileExists{pgflibrary\pgf@temp.code.tex}{% + \expandafter\usepgflibrary\expandafter{\pgf@temp}% + }{% + \tikzerror{I did not find the tikz library + '\pgf@temp'. I looked for files named + tikzlibrary\pgf@temp.code.tex and + pgflibrary\pgf@temp.code.tex, but neither + could be found in the current texmf trees.} + }}% + }% + {% + \@pushfilename + \pgfutil@InputIfFileExists{tikzlibrary\pgf@temp.code.tex}{}{ + \pgfutil@IfFileExists{pgflibrary\pgf@temp.code.tex}{% + \expandafter\usepgflibrary\expandafter{\pgf@temp}% + }{% + \tikzerror{I did not find the tikz library + '\pgf@temp'. I looked for files named + tikzlibrary\pgf@temp.code.tex and + pgflibrary\pgf@temp.code.tex, but neither + could be found in the current texmf trees.} + }}% + \@popfilename + }% + {}{}% +\patchcmd + {\tcb@input@library@in} + {% + \input\tcbpkgprefix#1\relax% + } + {% + \@pushfilename + \input\tcbpkgprefix#1\relax% + \@popfilename + } + {}{} +\RequirePackage{l3keys2e} +\RequirePackage{xparse} +\ExplSyntaxOn +\ProvidesExplClass + {gztarticle} + {2015/05/02} + {0.9} + { + SMF class for the French journal^^J + "La Gazette des Math'ematiciens". +^^J (Author version.) + } +\NeedsTeXFormat{LaTeX2e} +\PassOptionsToClass{openany,english,french}{book} +\LoadClassWithOptions { book } +\PassOptionsToPackage{table,cmyk}{xcolor}% +\PassOptionsToPackage{export}{adjustbox}% +\PassOptionsToPackage{english,french}{translator} +\PassOptionsToPackage{english,french}{babel} +\PassOptionsToPackage{english,french}{varioref} +\PassOptionsToPackage{english,french}{cleveref} +\RequirePackage[group=false]{standalone}% +\RequirePackage{xpatch}% +\RequirePackage{datatool}% +\pdftex_if_engine:TF + { + \RequirePackage[T1]{fontenc} + \RequirePackage[utf8]{inputenc} + }{ + \RequirePackage{fontspec} + } +\RequirePackage[sfmath,easyscsl,noDcommand]{kpfonts} +\RequirePackage[pagestyles]{titlesec}% +\RequirePackage{multicol}% +\RequirePackage{graphicx}% +\RequirePackage{longtable}% +\RequirePackage{adjustbox}% +\RequirePackage{zref-totpages} +\RequirePackage{zref-xr}% +\RequirePackage{ragged2e}% +\RequirePackage{xspace}% +\RequirePackage{textcase}% +\RequirePackage{epigraph}% +\RequirePackage[autostyle]{csquotes}% +\RequirePackage[datamodel=gzt,backend=biber,defernumbers=true,firstinits,autolang=other]{biblatex}% +\RequirePackage{array} +\RequirePackage{booktabs} +\RequirePackage{tabularx} +\RequirePackage{nccparskip} +\RequirePackage{multirow} +\RequirePackage{varioref} +\RequirePackage{mathtools} +\RequirePackage{mathrsfs} +\RequirePackage{esvect} +\RequirePackage{everypage} +\RequirePackage{translator}% +\RequirePackage{geometry} +\RequirePackage{babel}% +\RequirePackage{eurosym}% +\RequirePackage{iflang}[2007/11/11]% +\RequirePackage{etoc}% +\RequirePackage[babel=true]{microtype}% +\RequirePackage[nodayofweek]{datetime}% +\RequirePackage[inline]{enumitem}% +\RequirePackage{fixltx2e}% +\RequirePackage{afterpage} +\RequirePackage{xcolor}% +\cs_set_eq:NN \__gzt_orig_preamblecmds \@preamblecmds +\RequirePackage{tikz} +\RequirePackage{pgfplots} +\RequirePackage{tcolorbox} +\RequirePackage{tikzpagenodes} +\RequirePackage{amsthm} +\RequirePackage{thmtools} +\cs_set_eq:NN \@preamblecmds \__gzt_orig_preamblecmds +\RequirePackage{placeins}% +\RequirePackage[hidelinks,hypertexnames=false]{hyperref}% +\RequirePackage[numbered]{bookmark}% +\RequirePackage{cleveref}% +\pdftex_if_engine:T + { + \renewcommand\familydefault{\sfdefault} + \renewcommand{\ttdefault}{lmtt} + } +\tl_remove_all:Nn \@preamblecmds { \do \DeclareMathOperator } +\tl_remove_all:Nn \@preamblecmds { \do \newacronym } +\tl_remove_all:Nn \@preamblecmds { \do \@declmathop } +\tl_remove_all:Nn \@preamblecmds { \do \usetikzlibrary } +\msg_new:nnnn{gzt}{issue-number-needed}{Option~`#1'~needed!} + {Please~specify~`#1=', + ~otherwise~`'~will~be~set~to + ~`\int_use:N\c__gzt_first_issue_number_int'.} +\msg_new:nnnn{gzt}{unknown-choice}{Choice~`#3'~invalid!} + {Please~specify~#1=#2.} +\int_new:N \g__gzt_editors_in_chief_int +\int_new:N \g__gzt_item_in_rubric_int +\int_new:N \g__gzt_articles_int +\int_new:N \g__gzt_question_int +\int_const:Nn \c__gzt_first_issue_number_int { 143 } +\int_const:Nn \c__gzt_first_issue_year_int { 2015 } +\int_const:Nn \c__gzt_first_issue_month_int { 1 } +\int_const:Nn \c__gzt_interval_in_months_int { 3 } +\tl_const:Nn \c__gzt_journal_short_title_string_tl {Gazette} +\tl_const:Nn \c__gzt_journal_title_string_tl { + \c__gzt_journal_short_title_string_tl{}~des~Math\'ematiciens% +} +\tl_const:Nn \c__gzt_gzt_class_name_tl {gzt} +\tl_const:Nn \c__gzt_gztarticle_class_name_tl {gztarticle} +\tl_const:Nn \c__gzt_editors_in_chief_string_tl +{ + \int_compare:nNnTF { \g__gzt_editors_in_chief_int } > { 1 } + { \c__gzt_editorsinchief_string_tl } + { \c__gzt_editorinchief_string_tl } +} +\tl_const:Nn \c__gzt_editorinchief_string_tl {R\'edacteur~en~chef } +\tl_const:Nn \c__gzt_editorsinchief_string_tl {R\'edacteurs~en~chef } +\tl_const:Nn \c__gzt_editors_string_tl {R\'edacteurs } +\tl_const:Nn \c__gzt_editorial_board_string_tl {Comit\'e~de~r\'edaction} +\tl_const:Nn \c__gzt_editorial_secretariat_string_tl {Secr\'etariat~de~r\'edaction} +\tl_const:Nn \c__gzt_phone_string_tl {T\'el.} +\tl_const:Nn \c__gzt_fax_string_tl {Fax} +\tl_const:Nn \c__gzt_informations_string_tl {Renseignements} +\tl_const:Nn \c__gzt_publishingdirector_string_tl {Directeur~de~la~publication} +\tl_const:Nn \c__gzt_issn_string_tl {\textsc{issn}} +\tl_const:Nn \c__gzt_isbn_string_tl {\textsc{isbn}} +\tl_const:Nn \c__gzt_latexclass_string_tl {Classe~\LaTeX{}} +\tl_const:Nn \c__gzt_printer_string_tl {Impression} +\tl_const:Nn \c__gzt_configuration_file_string_tl {gzt.cfg} +\tl_const:Nn \c__gzt_artistic_director_string_tl {Conception~graphique} +\tl_const:Nn \c__gzt_editorial_string_tl {\'Editorial} +\tl_const:Nn \c__gzt_editorinchief_signatory_string_tl {\c__gzt_editorinchief_string_tl~de~la~\c__gzt_journal_title_string_tl} +\tl_const:Nn \c__gzt_toc_string_tl {Sommaire} +\tl_const:Nn \c__gzt_president_message_string_tl {Mot~du~pr\'esident} +\tl_const:Nn \c__gzt_president_signatory_string_tl {pr\'esident~de~la~\l__gzt_smf_short_string_tl} +\tl_const:Nn \c__gzt_editorinchief_message_date_string_tl {Le~\displaydate{__gzt_editorinchief_message_date}} +\tl_const:Nn \c__gzt_president_message_date_string_tl {Le~} +\tl_const:Nn \c__gzt_frontcover_header_string_tl { + \l__gzt_uppercased_date_format\displaydate{__gzt_date} + \space + \textendash{} + \space + \No\int_use:N\g__gzt_issue_number_int% +} +\tl_const:Nn \c__gzt_frontmatter_directory_string_tl {frontmatter} +\tl_const:Nn \c__gzt_backmatter_directory_string_tl {backmatter} +\tl_const:Nn \c__gzt_editorial_file_string_tl {\c__gzt_frontmatter_directory_string_tl/editorial} +\tl_const:Nn \c__gzt_president_message_file_string_tl {\c__gzt_frontmatter_directory_string_tl/presidentmessage} +\tl_const:Nn \c__gzt_issue_path_string_tl {\int_use:N \g__gzt_issue_number_int} +\tl_const:Nn \c__gzt_images_directory_string_tl {images} +\tl_const:Nn \c__gzt_issue_images_path_string_tl {% \c__gzt_issue_path_string_tl/ + \c__gzt_images_directory_string_tl} +\tl_const:Nn \c__gzt_issue_frontcover_image_file_string_tl {frontcover} +\tl_const:Nn \c__gzt_issue_frontcover_image_path_string_tl {\c__gzt_issue_images_path_string_tl/\c__gzt_issue_frontcover_image_file_string_tl} +\tl_const:Nn \c__gzt_issue_backcover_text_file_string_tl {backcover} +\tl_const:Nn \c__gzt_backcover_page_file_string_tl {\c__gzt_backmatter_directory_string_tl/\c__gzt_issue_backcover_text_file_string_tl} +\tl_const:Nn \c__gzt_authors_instructions_file_extension_tl {ain} +\tl_const:Nn \c__gzt_authors_instructions_file_tl {\c_job_name_tl.\c__gzt_authors_instructions_file_extension_tl} +\tl_const:Nn \c__gzt_about_frontcover_string_tl {\`A~propos~de~la~couverture.} +\tl_const:Nn \c__gzt_credit_frontcover_string_tl {cr\'edit} +\tl_const:Nn \c__gzt_authors_instructions_string_tl {Instructions~aux~auteurs} +\tl_const:Nn \c__gzt_preliminary_version_string_tl {% + Ce~document~est~une~{\'e}preuve~vous~permettant~de~contr{\^o}ler~l'int{\'e}grit{\'e}~du~ + texte~d'origine~(et~de~la~bibliographie~s'il~y~en~a~une)~de~votre~article~ + {\`a}~para{\^\i}tre~dans~le~prochain~num{\'e}ro~de~la~\gzt*{}.~La~mise~en~page~ + actuelle~n'est~pas~d{\'e}finitive\,:~votre~article~pourra~en~particulier~ne~pas~ + d{\'e}buter~en~haut~d'une~page.% +} +\tl_const:Nn \c__gzt_tellme_extra_title_string_tl {...\space} +\tl_const:Nn \c__gzt_minitoc_rubric_title_separator_string_tl {\space\textendash} +\tl_const:Nn \c__gzt_mathematics_rubric_string_tl {Math\'ematiques} +\tl_const:Nn \c__gzt_dossier_rubric_string_tl {Dossier} +\tl_const:Nn \c__gzt_community_rubric_string_tl {Vie~de~la~communaut\'e} +\tl_const:Nn \c__gzt_interview_rubric_string_tl {Entretien} +\tl_const:Nn \c__gzt_teaching_rubric_string_tl {Diffusion~des~savoirs} +\tl_const:Nn \c__gzt_parity_rubric_string_tl {Parit\'e} +\tl_const:Nn \c__gzt_tellme_rubric_string_tl {Raconte-moi} +\tl_const:Nn \c__gzt_information_rubric_string_tl {Information} +\tl_const:Nn \c__gzt_rearviewmirror_rubric_string_tl {R\'etroviseur} +\tl_const:Nn \c__gzt_tribute_rubric_string_tl {Carnet} +\tl_const:Nn \c__gzt_books_rubric_string_tl {Livres} +\tl_const:Nn \c__gzt_latex_rubric_string_tl {Astuces~\LaTeX{}} +\tl_const:Nn \c__gzt_published_with_help_of_string_tl {Publi\'e~avec~le~concours~de~:} +\tl_const:Nn \c__gzt_advertisement_directory_string_tl {advertisement/} +\tl_const:Nn \c__gzt_advertisement_string_tl {Publicit\'e} +\tl_const:Nn \c__gzt_smf_short_string_tl {\textsc{smf}} +\tl_const:Nn \c__gzt_smf_short_pdf_string_tl {SMF} +\tl_const:Nn \c__gzt_smf_string_tl {Soci\'et\'e~Math\'ematique~de~France} +\tl_const:Nn \c__gzt_cad_short_string_tl {c.-\`a-d.} +\tl_const:Nn \c__gzt_cad_string_tl {c'est-\`a-dire} +\tl_const:Nn \c__gzt_Cad_short_string_tl {C.-\`a-d.} +\tl_const:Nn \c__gzt_Cad_string_tl {C'est-\`a-dire} +\tl_const:Nn \c__gzt_footer_string_tl { + \c__gzt_footer_size_font_tl + \textcolor{__gzt_smf_number_color}{\c__gzt_smf_short_string_tl} + \space + \textcolor{__gzt_date_color}{ + \textendash{}\space + \MakeTextUppercase{\c__gzt_journal_short_title_string_tl} + } +} +\tl_const:Nn \c__gzt_smf_logo_file_string_tl {logo_SMF} +\tl_const:Nn \c__gzt_issue_bib_file_suffix_string_tl {__gzt} +\tl_const:Nn \c__gzt_issue_bib_file_string_tl {\c_job_name_tl\c__gzt_issue_bib_file_suffix_string_tl.bib} +\tl_const:Nn \c__gzt_issue_bib_path_string_tl {\c__gzt_issue_bib_file_string_tl} +\tl_const:Nn \c__gzt_issue_bib_key_tl {\int_use:N \g__gzt_issue_number_int} +\tl_const:Nn \c__gzt_interview_title_string_tl {En~apart\'e~avec~} +\tl_const:Nn \c__gzt_aside_string_tl {--} +\tl_const:Nn \c__gzt_draftwatermark_string_tl {draft} +\bool_new:N \g__gzt_frontcover_bool +\bool_new:N \g__gzt_inside_frontcover_bool +\bool_new:N \g__gzt_inside_backcover_bool +\bool_new:N \g__gzt_frontmatter_bool +\bool_new:N \g__gzt_rubric_bool +\bool_new:N \g__gzt_interview_rubric_bool +\bool_new:N \g__gzt_tellme_rubric_bool +\bool_new:N \g__gzt_rearviewmirror_rubric_bool +\bool_new:N \g__gzt_books_rubric_bool +\bool_new:N \g__gzt_mainmatter_bool +\bool_new:N \g__gzt_backmatter_bool +\bool_new:N \g__gzt_backcover_bool +\bool_new:N \g__gzt_previous_article_with_bibliography_or_minibio_bool +\bool_new:N \g__gzt_advertisement_bool +\bool_new:N \g__gzt_multicols_bool +\bool_new:N \g__gzt_refsection_bool +\dim_const:Nn \c__gzt_rubrics_abstract_width_dim { 85mm} +\dim_const:Nn \c__gzt_rubrics_head_text_abstract_width_dim { 50mm} +\dim_const:Nn \c__gzt_rubrics_head_text_no_abstract_width_dim +{ \c__gzt_rubrics_abstract_width_dim + \c__gzt_rubrics_head_text_abstract_width_dim} +\dim_new:N \l__gzt_rubrics_head_text_width_dim +\dim_const:Nn \c__gzt_layoutheight_dim { 270mm} +\dim_const:Nn \c__gzt_layoutwidth_dim { 210mm} +\dim_const:Nn \c__gzt_future_layoutoffset_dim { 5mm} +\bool_if:NTF {\g__gzt_for_printer_bool} { + \dim_const:Nn \c__gzt_layoutoffset_dim { \c__gzt_future_layoutoffset_dim} +}{ + \dim_const:Nn \c__gzt_layoutoffset_dim {\c_zero_dim} +} +\zexternaldocument[self]{\jobname}% +\int_new:N \g__gzt_total_page_number_int% +\int_gset:Nn \g__gzt_total_page_number_int { \zref@extractdefault{selfLastPage}{abspage}{0} } +\int_compare:nNnTF {\g__gzt_total_page_number_int-4}<{68} +{ + \dim_const:Nn \c__gzt_future_bindingoffset_dim { \c_zero_dim } +}{ + \int_compare:nNnTF {\g__gzt_total_page_number_int-4}<{80} + { + \dim_const:Nn \c__gzt_future_bindingoffset_dim { 3mm } + }{ + \int_compare:nNnTF {\g__gzt_total_page_number_int-4}<{88} + { + \dim_const:Nn \c__gzt_future_bindingoffset_dim { 3.5mm } + }{ + \int_compare:nNnTF {\g__gzt_total_page_number_int-4}<{96} + { + \dim_const:Nn \c__gzt_future_bindingoffset_dim { 3.9mm } + }{ + \int_compare:nNnTF {\g__gzt_total_page_number_int-4}<{104} + { + \dim_const:Nn \c__gzt_future_bindingoffset_dim { 4.1mm } + }{ + \int_compare:nNnTF {\g__gzt_total_page_number_int-4}<{120} + { + \dim_const:Nn \c__gzt_future_bindingoffset_dim { 4.5mm } + }{ + \dim_const:Nn \c__gzt_future_bindingoffset_dim { 5mm } + } + } + } + } + } +} +\bool_if:NTF {\g__gzt_cover_bool} { + \dim_const:Nn \c__gzt_bindingoffset_dim { \c__gzt_future_bindingoffset_dim } +}{ + \dim_const:Nn \c__gzt_bindingoffset_dim {\c_zero_dim} +} +\dim_const:Nn \c__gzt_paperheight_dim { \c__gzt_layoutheight_dim+2\c__gzt_layoutoffset_dim} +\bool_if:NTF {\g__gzt_cover_bool} { + \dim_const:Nn \c__gzt_paperwidth_dim { + \c__gzt_layoutwidth_dim + + + \c__gzt_layoutoffset_dim + +\c__gzt_bindingoffset_dim + } +}{ + \dim_const:Nn \c__gzt_paperwidth_dim { + \c__gzt_layoutwidth_dim + + + 2 + \c__gzt_layoutoffset_dim + +\c__gzt_bindingoffset_dim + } +} +\dim_const:Nn \c__gzt_frontcover_image_width_dim { + \c__gzt_layoutwidth_dim + + + \c__gzt_future_layoutoffset_dim +} +\dim_const:Nn \c__gzt_topmargin_dim { 31mm} +\dim_const:Nn \c__gzt_topmargin_frontcover_dim { + \c__gzt_topmargin_dim + + 30mm +} +\dim_const:Nn \c__gzt_topmargin_inside_cover_dim { + \c__gzt_topmargin_dim + +10mm +} +\dim_const:Nn \c__gzt_topmargin_front_matter_dim { + \c__gzt_topmargin_inside_cover_dim +} +\dim_const:Nn \c__gzt_headsep_dim { 24mm} +\dim_const:Nn \c__gzt_headsep_frontcover_dim { + \c__gzt_headsep_dim + +31mm + -\c__gzt_layoutoffset_dim +} +\dim_const:Nn \c__gzt_headsep_inside_frontcover_dim { + \c__gzt_headsep_dim + +7mm +} +\dim_const:Nn \c__gzt_headsep_front_matter_dim { + \c__gzt_headsep_inside_frontcover_dim +} +\dim_const:Nn \c__gzt_headheight_dim { \c_zero_dim } +\dim_const:Nn \c__gzt_botmargin_dim { 30mm} +\dim_const:Nn \c__gzt_footskip_dim { 26mm} +\dim_const:Nn \c__gzt_shift_margin_dim { 5mm } +\dim_const:Nn \c__gzt_innermargin_dim { 15mm - \c__gzt_bindingoffset_dim + \c__gzt_shift_margin_dim} +\dim_const:Nn \c__gzt_outermargin_dim { 30mm - \c__gzt_shift_margin_dim } +\dim_const:Nn \c__gzt_inside_cover_box_width_dim { 165mm }% +\dim_const:Nn \c__gzt_innermargin_inside_cover_dim { + (\c__gzt_layoutwidth_dim - \c__gzt_inside_cover_box_width_dim)/2 + - \c__gzt_bindingoffset_dim + % + \c__gzt_adjustmargin_dim +} +\dim_const:Nn \c__gzt_outermargin_inside_cover_dim { + (\c__gzt_layoutwidth_dim - \c__gzt_inside_cover_box_width_dim)/2 + % - \c__gzt_adjustmargin_dim +} +\dim_const:Nn \c__gzt_innermargin_backcover_dim { 10mm } +\dim_const:Nn \c__gzt_outermargin_backcover_dim { \c__gzt_innermargin_backcover_dim } +\dim_const:Nn \c__gzt_topmargin_backcover_dim { \c__gzt_innermargin_backcover_dim } +\dim_const:Nn \c__gzt_bottommargin_backcover_dim { \c__gzt_innermargin_backcover_dim } +\dim_const:Nn \c__gzt_frontcover_image_height_dim { 160mm} +\dim_const:Nn \c__gzt_radius_arc_dim { 85mm }% +\dim_const:Nn \c__gzt_frontmatter_headtext_xshift_dim { 19mm }% +\dim_const:Nn \c__gzt_frontmatter_headtext_o_xshift_dim { + -\c__gzt_frontmatter_headtext_xshift_dim -\c__gzt_layoutoffset_dim% +}% +\dim_const:Nn \c__gzt_frontmatter_headtext_e_xshift_dim { + \c__gzt_frontmatter_headtext_xshift_dim +\c__gzt_layoutoffset_dim% +}% +\dim_const:Nn \c__gzt_frontmatter_headtext_yshift_dim { -6.5mm-\c__gzt_layoutoffset_dim }% +\dim_const:Nn \c__gzt_header_line_width_dim { 0.25mm} +\dim_const:Nn \c__gzt_header_line_yshift_dim { -1mm-\c__gzt_header_line_width_dim}% +\dim_const:Nn \c__gzt_footer_background_height_dim { 10mm + \c__gzt_layoutoffset_dim } +\dim_const:Nn \c__gzt_front_matter_extra_innermargin_dim { 28mm } +\dim_const:Nn \c__gzt_front_matter_extra_outermargin_dim { 7mm } +\dim_const:Nn \c__gzt_inside_cover_offset_dim { \c_zero_dim }% +\dim_const:Nn \c__gzt_pictogram_width_dim { 23mm }% +\dim_const:Nn \c__gzt_header_xshift_dim { \c__gzt_pictogram_width_dim-6mm }% +\dim_const:Nn \c__gzt_header_yshift_dim { 5mm }% +\dim_const:Nn \c__gzt_xshift_arccircle_A_dim { \c__gzt_rubrics_abstract_width_dim+\c__gzt_innermargin_dim+10mm+\c__gzt_layoutoffset_dim }% +\dim_const:Nn \c__gzt_yshift_arccircle_A_dim { -22mm-\c__gzt_layoutoffset_dim }% +\dim_const:Nn \c__gzt_xshift_arccircle_B_dim {% + (\c__gzt_rubrics_abstract_width_dim+\c__gzt_innermargin_dim)/2% + % \c__gzt_innermargin_dim+(\c__gzt_rubrics_abstract_width_dim/2)% + % \c__gzt_xshift_arccircle_A_dim/2 +}% +\dim_const:Nn \c__gzt_yshift_arccircle_B_dim { -\c__gzt_layoutoffset_dim }% +\dim_const:Nn \c__gzt_xshift_arccircle_C_dim { \c__gzt_layoutoffset_dim-5mm }% +\dim_const:Nn \c__gzt_yshift_arccircle_C_dim { -19.75mm-\c__gzt_layoutoffset_dim }% +\dim_const:Nn \c__gzt_book_review_frontcover_extend_dim { 12mm }% +\dim_const:Nn \c__gzt_tcb_left_dim { 4mm }% +\dim_const:Nn \c__gzt_tcb_boxsep_dim { 1mm }% +\dim_const:Nn \c__gzt_tikz_dot_diameter_dim { 0.33mm }% +\dim_const:Nn \c__gzt_tikz_dot_spacing_dim { 1.05mm }% +\dim_const:Nn \c__gzt_rubric_extra_xoffset_dim { -\c__gzt_innermargin_dim/2 }% +\dim_const:Nn \c__gzt_rubric_xoffset_dim { 14.5mm }% +\dim_const:Nn \c__gzt_boxed_issue_number_width_dim { 30mm} +\dim_const:Nn \c__gzt_boxed_issue_number_height_dim { 8mm} +\dim_new:N \l__gzt_thumbnail_width_dim +\dim_set:Nn \l__gzt_thumbnail_width_dim {30mm} +\dim_new:N \g__gzt_abstract_box_width_dim +\dim_new:N \c__gzt_original_parindent_dim +\dim_set_eq:NN \c__gzt_original_parindent_dim \parindent +\dim_new:N \l__gzt_between_rubric_head_text_and_abstract_dim +\dim_new:N \g__gzt_minitoc_circle_diameter_dim +\dim_new:N \g__gzt_minitoc_textwidth_dim +\dim_new:N \g__gzt_minitoc_xshift_dim +\dim_new:N \g__gzt_minitoc_yshift_dim +\dim_set:Nn \g__gzt_minitoc_circle_diameter_dim {142mm} +\dim_set:Nn \g__gzt_minitoc_textwidth_dim {65mm} +\dim_set:Nn \g__gzt_minitoc_xshift_dim {-22mm} +\dim_set:Nn \g__gzt_minitoc_yshift_dim {30mm} +\dim_const:Nn \c__gzt_minitoc_from_circle_xshift_dim {-15mm} +\dim_const:Nn \c__gzt_minitoc_from_circle_yshift_dim {-\c__gzt_minitoc_from_circle_xshift_dim} +\dim_const:Nn \c__gzt_footer_height_font_dim {3mm} +\dim_const:Nn \c__gzt_minitoc_list_labelsep_dim {1em} +\geometry{% + papersize={\c__gzt_paperwidth_dim,\c__gzt_paperheight_dim} +} +\bool_if:NTF {\g__gzt_cover_bool} { + \tl_const:Nn \c__gzt_frontcover_geometry_tl {% + ,layoutsize={\c__gzt_layoutwidth_dim,\c__gzt_layoutheight_dim} + ,layoutvoffset=\c__gzt_layoutoffset_dim + ,bindingoffset=\c__gzt_bindingoffset_dim + ,top=\c__gzt_topmargin_frontcover_dim + ,headsep=\c__gzt_headsep_frontcover_dim + ,headheight=\c__gzt_headheight_dim + ,bottom=\c_zero_dim + ,footskip=\c_zero_dim + ,outer=\c_zero_dim + ,inner=\c__gzt_layoutoffset_dim + ,nomarginpar% + }% +}{ + \tl_const:Nn \c__gzt_frontcover_geometry_tl {% + ,layoutsize={\c__gzt_layoutwidth_dim,\c__gzt_layoutheight_dim} + ,layoutoffset=\c__gzt_layoutoffset_dim + ,bindingoffset=\c__gzt_bindingoffset_dim + ,top=\c__gzt_topmargin_frontcover_dim + ,headsep=\c__gzt_headsep_frontcover_dim + ,headheight=\c__gzt_headheight_dim + ,bottom=\c_zero_dim + ,footskip=\c_zero_dim + ,hmargin=\c__gzt_layoutoffset_dim + ,nomarginpar% + }% +} +\bool_if:NTF {\g__gzt_cover_bool} { + \tl_const:Nn \c__gzt_inside_cover_geometry_tl {% + ,layoutsize={\c__gzt_layoutwidth_dim,\c__gzt_layoutheight_dim} + ,layoutvoffset=\c__gzt_layoutoffset_dim + ,bindingoffset=\c__gzt_bindingoffset_dim + ,top=\c__gzt_topmargin_inside_cover_dim + ,headheight=\c__gzt_headheight_dim + ,headsep=\c__gzt_headsep_inside_frontcover_dim + ,bottom=\c__gzt_botmargin_dim + ,footskip=\c__gzt_footskip_dim + ,inner=\c__gzt_innermargin_inside_cover_dim-\c__gzt_layoutoffset_dim + ,outer=\c__gzt_outermargin_inside_cover_dim+\c__gzt_layoutoffset_dim + ,nomarginpar% + }% +}{ + \tl_const:Nn \c__gzt_inside_cover_geometry_tl {% + ,layoutsize={\c__gzt_layoutwidth_dim,\c__gzt_layoutheight_dim} + ,layoutoffset=\c__gzt_layoutoffset_dim + ,bindingoffset=\c__gzt_bindingoffset_dim + ,top=\c__gzt_topmargin_inside_cover_dim + ,headheight=\c__gzt_headheight_dim + ,headsep=\c__gzt_headsep_inside_frontcover_dim + ,bottom=\c__gzt_botmargin_dim + ,footskip=\c__gzt_footskip_dim + ,inner=\c__gzt_innermargin_inside_cover_dim + ,outer=\c__gzt_outermargin_inside_cover_dim + ,nomarginpar% + }% +} +\tl_const:Nn \c__gzt_front_matter_geometry_tl {% + ,layoutsize={\c__gzt_layoutwidth_dim,\c__gzt_layoutheight_dim} + ,layoutoffset=\c__gzt_layoutoffset_dim + % ,bindingoffset=\c__gzt_bindingoffset_dim + ,top=\c__gzt_topmargin_front_matter_dim% + ,headheight=\c__gzt_headheight_dim + ,headsep=\c__gzt_headsep_front_matter_dim + ,bottom=\c__gzt_botmargin_dim + ,footskip=\c__gzt_footskip_dim% + ,inner=\c__gzt_innermargin_dim+\c__gzt_front_matter_extra_innermargin_dim% + ,outer=\c__gzt_outermargin_dim+\c__gzt_front_matter_extra_outermargin_dim% + ,nomarginpar% +}% +\tl_const:Nn \c__gzt_main_geometry_tl {% + ,layoutsize={\c__gzt_layoutwidth_dim,\c__gzt_layoutheight_dim} + ,layoutoffset=\c__gzt_layoutoffset_dim + % ,bindingoffset=\c__gzt_bindingoffset_dim + ,top=\c__gzt_topmargin_dim-15mm% + ,headheight=\c__gzt_headheight_dim + ,headsep=\c__gzt_headsep_dim-18mm + ,bottom=\c__gzt_botmargin_dim + ,footskip=\c__gzt_footskip_dim + ,inner=\c__gzt_innermargin_dim + ,outer=\c__gzt_outermargin_dim +}% +\tl_const:Nn \c__gzt_backcover_geometry_tl {% + ,layoutsize={\c__gzt_layoutwidth_dim,\c__gzt_layoutheight_dim} + ,layoutoffset=\c__gzt_layoutoffset_dim + % ,bindingoffset=\c__gzt_bindingoffset_dim + ,top=\c__gzt_topmargin_backcover_dim% + % ,top=\c__gzt_topmargin_dim-15mm% + % ,headheight=\c__gzt_headheight_dim + % ,headsep=\c__gzt_headsep_dim-18mm + ,bottom=\c__gzt_bottommargin_backcover_dim + % ,footskip=\c__gzt_footskip_dim + ,inner=\c__gzt_innermargin_backcover_dim + ,outer=\c__gzt_outermargin_backcover_dim +} +\skip_const:Nn \c__gzt_editorial_presidentmessage_parskip_skip { 12pt plus 2pt minus .8pt }% +\skip_const:Nn \c__gzt_mainmatter_parskip_skip { 2pt plus .5pt minus .2pt }% +\int_new:N \g__gzt_issue_number_int +\int_new:N \g__gzt_issue_month_int +\int_new:N \g__gzt_issue_year_int +\keys_define:nn { gzt/issuesetup } +{ + number .int_gset:N = \g__gzt_issue_number_int, + month .int_gset:N = \g__gzt_issue_month_int, + year .int_gset:N = \g__gzt_issue_year_int, + number .value_required:, + month .value_required:, + year .value_required:, + number .initial:n = 0 +} +\tl_new:N \l__gzt_journal_publisher_tl +\tl_new:N \l__gzt_journal_address_tl +\tl_new:N \l__gzt_journal_phone_tl +\tl_new:N \l__gzt_journal_fax_tl +\tl_new:N \l__gzt_journal_email_tl +\tl_new:N \l__gzt_journal_url_tl +\tl_new:N \l__gzt_journal_issn_tl +\tl_new:N \l__gzt_journal_isbn_tl +\keys_define:nn { gzt/journalsetup } +{ + publisher .tl_set:N = \l__gzt_journal_publisher_tl, + address .tl_set:N = \l__gzt_journal_address_tl, + phone .tl_set:N = \l__gzt_journal_phone_tl, + fax .tl_set:N = \l__gzt_journal_fax_tl, + email .tl_set:N = \l__gzt_journal_email_tl, + url .tl_set:N = \l__gzt_journal_url_tl, + issn .tl_set:N = \l__gzt_journal_issn_tl, + isbn .tl_set:N = \l__gzt_journal_isbn_tl, + publisher .value_required:, + address .value_required:, + phone .value_required:, + fax .value_required:, + email .value_required:, + url .value_required:, + issn .value_required:, + isbn .value_required:, +} +\keys_define:nn { gzt/title } +{ + short .tl_gset:N = \g__gzt_short_title_tl, + minishort .tl_gset:N = \g__gzt_mini_short_title_tl, + notintoc .bool_gset:N = \g__gzt_title_not_in_toc_bool, + short .value_required:, + minishort .value_required:, +} +\keys_define:nn { gzt/subtitle } +{ + short .tl_gset:N = \g__gzt_short_subtitle_tl, + minishort .tl_gset:N = \g__gzt_mini_short_subtitle_tl, + notintoc .bool_gset:N = \g__gzt_subtitle_not_in_toc_bool, + short .value_required:, + minishort .value_required:, +} +\keys_define:nn { gzt/rubric } +{ + abstract .tl_gset:N = \g__gzt_rubric_abstract_tl, + title .tl_gset:N = \g__gzt_rubric_title_tl, + pictogram .tl_gset:N = \g__gzt_rubric_pictofile_tl, + abstract .value_required:, + title .value_required:, + pictogram .value_required:, +} +\keys_define:nn { gzt/minitoc } +{ + list .bool_gset:N = \g__gzt_minitoc_list_bool, + help .bool_gset:N = \g__gzt_minitoc_help_bool, + diameter .dim_gset:N = \g__gzt_minitoc_circle_diameter_dim, + textwidth .dim_gset:N = \g__gzt_minitoc_textwidth_dim, + xshift .dim_gset:N = \g__gzt_minitoc_xshift_dim, + yshift .dim_gset:N = \g__gzt_minitoc_yshift_dim, + diameter .value_required:, + textwidth .value_required:, + xshift .value_required:, + yshift .value_required:, +} +\keys_define:nn { gzt/authors } +{ + affiliation .tl_gset:N = \g__gzt_people_affiliation_tl, + email .tl_gset:N = \g__gzt_people_email_tl, + minibio .tl_gset:N = \g__gzt_people_minibio_tl, + photo .tl_gset:N = \g__gzt_people_photo_tl, + webpage .tl_gset:N = \g__gzt_people_webpage_tl, + affiliation .value_required:, + email .value_required:, + minibio .value_required:, + photo .value_required:, + webpage .value_required:, +} +\tl_new:N \g__gzt_interviewee_minibio_tl +\tl_new:N \g__gzt_interviewee_photo_tl +\tl_new:N \g__gzt_interviewee_first_last_name_tl +\keys_define:nn { gzt/interviewees } +{ + minibio .tl_gset:N = \g__gzt_interviewee_minibio_tl, + photo .tl_gset:N = \g__gzt_interviewee_photo_tl, + minibio .value_required:, + photo .value_required:, +} +\tl_new:N \g__gzt_bookreview_frontcover_tl +\tl_new:N \g__gzt_bookreview_bibkey_tl +\keys_define:nn { gzt/bookreview } +{ + frontcover .tl_gset:N = \g__gzt_bookreview_frontcover_tl, + bibkey .tl_gset:N = \g__gzt_bookreview_bibkey_tl, + frontcover .value_required:, + bibkey .value_required:, +} +\tl_new:N \g__gzt_bookadvertisement_frontcover_tl +\tl_new:N \g__gzt_bookadvertisement_bibkey_tl +\keys_define:nn { gzt/bookadvertisement } +{ + frontcover .tl_gset:N = \g__gzt_bookadvertisement_frontcover_tl, + bibkey .tl_gset:N = \g__gzt_bookadvertisement_bibkey_tl, + frontcover .value_required:, + bibkey .value_required:, +} +\tl_new:N \l__gzt_newtheorem_style_tl +\keys_define:nn { gzt/newtheorem } +{ + frenchtitle .tl_set:N = \l__gzt_newtheorem_frenchtitle_tl, + englishtitle .tl_set:N = \l__gzt_newtheorem_englishtitle_tl, + frenchtitle .value_required:, + englishtitle .value_required:, + % + style .choice:, + style / theorem .code:n = {\tl_set:Nn \l__gzt_newtheorem_style_tl {theorem}}, + style / definition .code:n = {\tl_set:Nn \l__gzt_newtheorem_style_tl {definition}}, + style / proof .code:n = {\tl_set:Nn \l__gzt_newtheorem_style_tl {proof}}, + style / unknown .code:n = + \msg_error:nnxxx { gzt } { unknown-choice } + { style } % Name of choice key + { theorem~or~definition~or~proof } % Valid choices + { \exp_not:n {#1} } % Invalid choice given +} +\definecolorset{cmyk}{__gzt_}{_color}{ + generic_dark,1,.60,.10,0; % kind of blue (!) + light_generic_dark,1,.35,0,0 % kind of blue (!), light +} +\colorlet{__gzt_generic_light_color}{black!50} +\colorlet{__gzt_dark_generic_light_color}{black!60} +\colorlet{__gzt_description_label_light_color}{__gzt_dark_generic_light_color} +\colorlet{__gzt_cover_itemize_label_color}{__gzt_light_generic_dark_color} +\colorlet{__gzt_default_text_color}{black} +\colorlet{__gzt_rubric_head_text_color}{black!65} +\colorlet{__gzt_bibliography_minibios_acknowledgments_bg_color}{black!10} +\colorlet{__gzt_headrule_color}{__gzt_generic_light_color!65} +\colorlet{__gzt_circlerule_color}{__gzt_generic_dark_color!65} +\colorlet{__gzt_frontmatter_text_color}{black!75} +\colorlet{__gzt_people_color}{__gzt_generic_dark_color} +\colorlet{__gzt_arrayrule_color}{__gzt_generic_dark_color} +\colorlet{__gzt_acknowledgements_color}{__gzt_generic_dark_color} +\colorlet{__gzt_question_color}{__gzt_generic_dark_color} +\colorlet{__gzt_boxed_issue_number_bg_color}{__gzt_generic_dark_color} +\colorlet{__gzt_rule_in_toc_color}{__gzt_generic_dark_color} +\colorlet{__gzt_rubric_in_toc_color}{__gzt_generic_dark_color} +\colorlet{__gzt_article_in_toc_color}{__gzt_generic_light_color} +\colorlet{__gzt_rubric_title_color}{__gzt_generic_light_color} +\colorlet{__gzt_article_title_color}{__gzt_generic_dark_color} +\colorlet{__gzt_section_color}{__gzt_generic_dark_color} +\colorlet{__gzt_subsection_color}{__gzt_generic_dark_color!90} +\colorlet{__gzt_subsubsection_color}{__gzt_generic_dark_color!80} +\colorlet{__gzt_rubric_abstract_color}{__gzt_generic_dark_color} +\colorlet{__gzt_article_abstract_color}{__gzt_generic_light_color} +\colorlet{__gzt_dotfill_color}{__gzt_generic_dark_color} +\colorlet{__gzt_about_frontcover_title_color}{__gzt_generic_dark_color} +\colorlet{__gzt_reflected_text_color}{__gzt_generic_dark_color} +\colorlet{__gzt_inside_frontcover_frame_bg_color}{__gzt_generic_dark_color!8} +\colorlet{__gzt_inside_frontcover_frame_title_color}{__gzt_generic_dark_color} +\colorlet{__gzt_footer_bg_color}{black!10} +\colorlet{__gzt_float_title_color}{__gzt_generic_dark_color} +\colorlet{__gzt_float_title_bg_color}{__gzt_generic_dark_color!10} +\colorlet{__gzt_float_frame_color}{__gzt_generic_dark_color!20} +\colorlet{__gzt_chapter_color}{__gzt_generic_dark_color} +\colorlet{__gzt_smf_number_color}{__gzt_generic_dark_color} +\colorlet{__gzt_date_color}{__gzt_generic_light_color} +\colorlet{__gzt_table_head_color}{__gzt_generic_dark_color!25} +\colorlet{__gzt_book_review_frame_bg_color}{__gzt_generic_dark_color!8} +\colorlet{__gzt_book_advertisement_bg_color}{white} +\colorlet{__gzt_book_advertisement_frame_color}{__gzt_generic_dark_color} +\AtBeginEnvironment{multicols}{ + \bool_gset_true:N \g__gzt_multicols_bool +} +\AtEndEnvironment{multicols}{ + \bool_gset_false:N \g__gzt_multicols_bool +} +\AtBeginEnvironment{refsection}{ + \bool_gset_true:N \g__gzt_refsection_bool +} +\AtEndEnvironment{refsection}{ + \bool_gset_false:N \g__gzt_refsection_bool +} +\tl_const:Nn \c__gzt_footer_size_font_tl { + \fontsize{\c__gzt_footer_height_font_dim}{\c_zero_dim}\selectfont% +} +\tl_new:N \l__gzt_smf_short_string_tl +\tl_new:N \l__gzt_smf_string_tl +\tl_set:Nn \l__gzt_smf_short_string_tl { + % \cs_if_exist:cTF {texorpdfstring} + % { + \texorpdfstring{\c__gzt_smf_short_string_tl}{\c__gzt_smf_short_pdf_string_tl} + % }{% + % \c__gzt_smf_short_pdf_string_tl + % }% +} +\tl_set:Nn \l__gzt_smf_string_tl { + % \cs_if_exist:cTF {texorpdfstring} + % { + % \texorpdfstring{Soci\'et\'e~Math\'ematique~de~France}{\c__gzt_smf_string_tl} + \c__gzt_smf_string_tl + % }{% + % \acrlong*{smf} + % }% +} +\tl_new:N \l__gzt_gzt_short_string_tl +\tl_new:N \l__gzt_gzt_string_tl +\tl_set:Nn \l__gzt_gzt_short_string_tl { + \cs_if_exist:cTF {texorpdfstring} + { + \texorpdfstring{\emph{\c__gzt_journal_short_title_string_tl}}{\c__gzt_journal_short_title_string_tl} + }{% + \emph{\c__gzt_journal_short_title_string_tl} + }% +} +\tl_set:Nn \l__gzt_gzt_string_tl { + \cs_if_exist:cTF {texorpdfstring} + { + \texorpdfstring{\emph{\c__gzt_journal_title_string_tl}}{\c__gzt_journal_title_string_tl} + }{% + \emph{\c__gzt_journal_title_string_tl} + }% +} +\tl_new:N \l__gzt_pdftitle_string_tl +\tl_new:N \l__gzt_pdfauthor_string_tl +\tl_set:Nn \l__gzt_pdftile_string_tl { + \c__gzt_journal_title_string_tl\space--\space{}N°\int_use:N\g__gzt_issue_number_int +} +\tl_set:Nn \l__gzt_pdfauthor_string_tl { + \l__gzt_smf_string_tl +} +\DTLnewdb{__gzt_authors} +\cs_new_protected:Nn \__gzt_authors:nnnnnn + { + \DTLnewrow{__gzt_authors}% + \DTLnewdbentry{__gzt_authors}{first-last-name}{#1}% + \DTLnewdbentry{__gzt_authors}{affiliation}{#2}% + \DTLnewdbentry{__gzt_authors}{email}{#3}% + \DTLnewdbentry{__gzt_authors}{minibio}{#4}% + \DTLnewdbentry{__gzt_authors}{photo}{#5}% + \DTLnewdbentry{__gzt_authors}{webpage}{#6}% + } +\cs_new_protected:Nn \__gzt_email:n + { + \href{mailto:#1}{\nolinkurl{#1}}% + } +\cs_generate_variant:Nn \__gzt_authors:nnnnnn { nVVVVV } +\cs_new_protected:Nn \__gzt_display_author:nnnnn +{ + \begin{tabular}[t]{p{18mm}p{0.75\linewidth}} + \tl_if_empty:nF {#5} + {% + \begin{adjustbox}{valign=t} + \includegraphics[width=16mm]{#5} + \end{adjustbox}% + } + & + \begin{description}[leftmargin=1em,style=nextline,nosep] + \item[\textcolor{__gzt_people_color}{\DeclareNameAlias{labelname}{default}\citeauthor{#1}}] + \tl_if_empty:nF {#2} + {% + #2% + \par% + \smallskip% + } + \tl_if_empty:nF {#3} + {% + \href{mailto:#3}{\nolinkurl{#3}}% + \par% + \smallskip% + } + \tl_if_empty:nF {#4} + {% + #4 + } + \end{description} + \end{tabular} +} +\cs_generate_variant:Nn \__gzt_display_author:nnnnn { VVVVV } +\DTLnewdb{__gzt_interviewees} +\cs_new_protected:Nn \__gzt_interviewees:nnn + { + \DTLnewrow{__gzt_interviewees}% + \DTLnewdbentry{__gzt_interviewees}{first-last-name}{#1}% + \DTLnewdbentry{__gzt_interviewees}{minibio}{#2}% + \DTLnewdbentry{__gzt_interviewees}{photo}{#3}% + } +\cs_generate_variant:Nn \__gzt_interviewees:nnn { nVV } +\DTLnewdb{people} +\tl_new:N \l__gzt_crossref_tl +\cs_new_protected:Nn \__gzt_people:nnnnnnnn +{ + \DTLnewrow{people}% + \DTLnewdbentry{people}{first-last-name}{#1}% + \DTLnewdbentry{people}{affiliation}{#2}% + \DTLnewdbentry{people}{email}{#3}% + \DTLnewdbentry{people}{minibio}{#4}% + \DTLnewdbentry{people}{photo}{#5}% + \DTLnewdbentry{people}{speciality}{#6}% + \DTLnewdbentry{people}{role}{#7}% + \DTLnewdbentry{people}{webpage}{#8}% + \int_if_exist:cF {g__gzt_#7_int} + { + \int_new:c {g__gzt_#7_int} + } + \int_incr:c {g__gzt_#7_int} + \tl_if_in:nnTF { #7 } { author } { + \tl_set:Nn \l__gzt_crossref_tl {\c__gzt_issue_bib_key_tl -art-\int_use:N \g__gzt_articles_int} + } { + \tl_set:Nn \l__gzt_crossref_tl {\c__gzt_issue_bib_key_tl} + } + \tl_set:Nn \l__gzt_people_first_last_name_tl {#1} + \iow_now:Nx \g__gzt_bib_out_iow {% + @article{ + \c__gzt_issue_bib_key_tl -#7- \int_use:c {g__gzt_#7_int}, + \iow_newline: + author={\exp_not:V\l__gzt_people_first_last_name_tl}, + \iow_newline: + options={skipbib}, + \iow_newline: + crossref = {\l__gzt_crossref_tl} + \iow_newline: + } + \iow_newline: + }% +} +\cs_generate_variant:Nn \__gzt_people:nnnnnnnn { nVVVVnxV } +\cs_new_protected:Nn \__gzt_display_academic_signature:n +{ + \bigskip + #1 +} +\cs_new_protected:Nn \__gzt_display_people_by_role:n +{ + \DTLforeach*[\DTLiseq{\l__gzt_people_role_tl}{#1}]{people}{% + \l__gzt_firstlastname=first-last-name% + ,\l__gzt_people_affiliation_tl=affiliation% + ,\l__gzt_people_email_tl=email% + ,\l__gzt_people_minibio_tl=minibio% + ,\l__gzt_people_photo_tl=photo% + ,\l__gzt_people_speciality=speciality% + ,\l__gzt_people_role_tl=role% + ,\l__gzt_people_webpage_tl=webpage% + }{% + \tl_if_in:NnTF \l__gzt_people_role_tl { editor } { + \item[ + \textcolor{__gzt_people_color}{% + \__gzt_citeauthor_no_firstinits:n {\c__gzt_issue_bib_key_tl -#1- \exp_not:V\DTLcurrentindex}% + } + \tl_if_in:NnF \l__gzt_people_speciality { NoValue } { ~(\l__gzt_people_speciality) } + ] + \l__gzt_people_affiliation_tl% + \newline% + \href{mailto:\l__gzt_people_email_tl}{\nolinkurl{\l__gzt_people_email_tl}}% + \DTLiflastrow{% + }{% + \medskip% + } + }{ + \tl_if_in:NnTF \l__gzt_people_role_tl { author } { + \footnotesize% + \noindent% + \tl_if_empty:NF \l__gzt_people_photo_tl + {% + \begin{adjustbox}{valign=t,minipage=18mm} + \includegraphics[width=16mm]{\l__gzt_people_photo_tl} + \end{adjustbox}% + } + \quad% + \begin{adjustbox}{valign=t,minipage=\linewidth-18mm-1em} + \begin{description}[leftmargin=1em,style=nextline] + \item[% + \textcolor{__gzt_people_color}{% + \__gzt_citeauthor_no_firstinits:n {\c__gzt_issue_bib_key_tl -#1- \exp_not:V\DTLcurrentindex}% + }% + ] + \tl_if_empty:NF \l__gzt_people_affiliation_tl + {% + \mbox{}% + \par% + \vspace{-2ex}% + \l__gzt_people_affiliation_tl% + } + \tl_if_empty:NF \l__gzt_people_email_tl + {% + \par% + \href{mailto:\l__gzt_people_email_tl}{\nolinkurl{\l__gzt_people_email_tl}}% + } + \tl_if_empty:NF \l__gzt_people_webpage_tl + {% + \par% + \url{\l__gzt_people_webpage_tl}% + } + \tl_if_empty:NF \l__gzt_people_minibio_tl + {% + \par% + \smallskip% + \l__gzt_people_minibio_tl + } + \end{description} + \end{adjustbox} + \DTLiflastrow{% + }{ + \DTLpar% + \medskip% + } + }{ + \__gzt_citeauthor_no_firstinits:n {\c__gzt_issue_bib_key_tl -#1- + \exp_not:V\DTLcurrentindex}% + \tl_if_empty:NF \l__gzt_people_email_tl + { + \space(\href{mailto:\l__gzt_people_email_tl}{\nolinkurl{\l__gzt_people_email_tl}}) + } + } + } + } +} +\cs_new_protected:Nn \__gzt_reflected_text:n +{ + \begin{tikzpicture} + \tikzset{__gzt_reflect_node/.style={% + anchor=base,% + inner~sep=0,% + line~width=0,% + font=\Huge, + color=__gzt_reflected_text_color% + }% + }% + \node[__gzt_reflect_node]{#1}; + \node[scope~fading=south,opacity=0.2,yscale=-1,__gzt_reflect_node]{#1}; + \end{tikzpicture} +} +\tl_new:N \g__gzt_display_frontcover_tl% +\tl_gset:Nn \g__gzt_display_frontcover_tl {% + \bool_gset_true:N \g__gzt_frontcover_bool + \pagenumbering{roman}% + \pagestyle{__gzt_frontcover_ps}% + \exp_after:wN\newgeometry\exp_after:wN{\c__gzt_frontcover_geometry_tl}% + \noindent% + \bool_if:NTF {\g__gzt_cover_bool} { + \hspace*{-\c__gzt_layoutoffset_dim} + }{ + \hspace*{-2\c__gzt_layoutoffset_dim} + } + \includegraphics[ + width=\c__gzt_frontcover_image_width_dim + % min~width=\paperwidth + % width=\c__gzt_layoutwidth_dim + 2\c__gzt_layoutoffset_dim + % min~size={\paperwidth}{\c__gzt_frontcover_image_height_dim+\c__gzt_layoutoffset_dim}, + % max~size={\paperwidth}{\c__gzt_frontcover_image_height_dim+\c__gzt_layoutoffset_dim}, + % Clip*=0mm~40mm~211mm~160mm + % Clip*=0mm~{\height-\c__gzt_frontcover_image_height_dim}~{\paperwidth}~{\height} + ]{\c__gzt_issue_frontcover_image_path_string_tl} + \begin{tikzpicture}[remember~picture, overlay] + \coordinate (__gzt_circle_minitoc_center) at + ([xshift=\g__gzt_minitoc_xshift_dim-\c__gzt_layoutoffset_dim,yshift=\g__gzt_minitoc_yshift_dim+\c__gzt_layoutoffset_dim]current~page.south~east) ; + \node[name=__gzt_circle_minitoc,shape=circle,inner~sep=\c_zero_dim,fill=white,text~width=\g__gzt_minitoc_circle_diameter_dim] at + (__gzt_circle_minitoc_center) {}; + \node[text~width=\g__gzt_minitoc_textwidth_dim,anchor=north~west] at + ([xshift=\c__gzt_minitoc_from_circle_xshift_dim,yshift=\c__gzt_minitoc_from_circle_yshift_dim]$ (__gzt_circle_minitoc.north)!.5!(__gzt_circle_minitoc.west) $) + { + \large + \color{__gzt_dark_generic_light_color} + \bool_if:NF {\g__gzt_frontcover_minitoc_tl} { + \g__gzt_frontcover_minitoc_tl + } + }; + \bool_if:NT {\g__gzt_minitoc_help_bool} { + \fill[red] (__gzt_circle_minitoc_center) circle (2pt); + } + \end{tikzpicture} + \bool_if:NT {\g__gzt_cover_bool} { + \small + \begin{tikzpicture}[remember~picture, overlay] + \node[name=__gzt_binding_sw,inner~sep=\c_zero_dim,fill=white,rotate=90,anchor=west] at + ([xshift=0.45\c__gzt_bindingoffset_dim,yshift=15mm+\c__gzt_layoutoffset_dim]current~page.south~west) { + \No\int_use:N\g__gzt_issue_number_int + }; + \node[name=__gzt_binding_w,inner~sep=\c_zero_dim,fill=white,rotate=90] at + ([xshift=0.45\c__gzt_bindingoffset_dim]current~page.west) { + \MakeUppercase{\c__gzt_journal_title_string_tl} + }; + \node[name=__gzt_binding_nw,inner~sep=\c_zero_dim,fill=white,rotate=90,anchor=east] at + ([xshift=0.45\c__gzt_bindingoffset_dim,yshift=-15mm-\c__gzt_layoutoffset_dim]current~page.north~west) { + \l__gzt_uppercased_date_format\displaydate{__gzt_date} + }; + \end{tikzpicture} + } + \vfill% + \noindent% + \hspace*{10mm}% + \hspace*{-\c__gzt_layoutoffset_dim} + \includegraphics[height=22.5mm]{\c__gzt_smf_logo_file_string_tl}% + \vfill% + \clearpage% + \bool_gset_false:N \g__gzt_frontcover_bool +} +\tl_new:N \g__gzt_display_inside_frontcover_tl% +\tl_gset:Nn \g__gzt_display_inside_frontcover_tl {% + \bool_gset_true:N \g__gzt_inside_frontcover_bool% + \pagestyle{__gzt_inside_frontcover_ps}% + \exp_after:wN\newgeometry\exp_after:wN{\c__gzt_inside_cover_geometry_tl}% + \small% + \setlength{\columnseprule}{2pt} + \renewcommand{\columnseprulecolor}{\color{white}} + \begin{__gzt_inside_cover_tcb}[__gzt_tcb_inside_frontcover_style] + \begin{multicols}{2} + \setlength{\columnsep}{1mm} + \begin{description}[leftmargin=1em] + \item[\c__gzt_editors_in_chief_string_tl] \ + \begin{description}[leftmargin=1em,style=nextline] + \__gzt_display_people_by_role:n {editorinchief} + \end{description} + \bigskip + \par + \item[\c__gzt_editors_string_tl] \ + \begin{description}[leftmargin=1em,style=nextline] + \__gzt_display_people_by_role:n {editor} + \end{description} + \end{description} + \end{multicols} + \setlength{\columnseprule}{1pt} + \tcblower + \begin{tabular}{@{}m{.75\c__gzt_inside_cover_box_width_dim}@{}m{.2\c__gzt_inside_cover_box_width_dim-2\tabcolsep}@{}} + \begin{description}[leftmargin=1em] + \item[\c__gzt_editorial_secretariat_string_tl{}~:] \ \par% + \l__gzt_journal_publisher_tl% + % \par% + \space\textendash{}\space% + \__gzt_display_people_by_role:n { secretary }\par + \l__gzt_journal_address_tl\par% + \c__gzt_phone_string_tl{}~:~\l__gzt_journal_phone_tl{} \space\textendash{}\space + \c__gzt_fax_string_tl{}~:~\l__gzt_journal_fax_tl\par% + \href{mailto:\l__gzt_journal_email_tl}{\nolinkurl{\l__gzt_journal_email_tl}}% + % \newline% + \space\textendash{}\space + \url{\l__gzt_journal_url_tl} + \item[\c__gzt_publishingdirector_string_tl{}~:] + \__gzt_display_people_by_role:n { president } + \item[\c__gzt_issn_string_tl{}~:] \l__gzt_journal_issn_tl + \tl_if_empty:NF \l__gzt_journal_isbn_tl + {% + \item[\c__gzt_isbn_string_tl{}~:] \l__gzt_journal_isbn_tl + } + \bool_if:NT {\g__gzt_no_inside_backcover_bool} { + \item[\c__gzt_latexclass_string_tl{}~:] + \__gzt_display_people_by_role:n { classdesigner } + \item[\c__gzt_artistic_director_string_tl{}~:] + \__gzt_display_people_by_role:n { graphicdesigner } + \item[\c__gzt_printer_string_tl{}~:] \g__gzt_printer_text_tl + } + \end{description} + \bool_if:NT {\g__gzt_no_inside_backcover_bool} { + \g__gzt_font_designer_text_tl + } + & + \hspace*{\fill}% + \includegraphics[height=20mm]{\c__gzt_smf_logo_file_string_tl}% + \end{tabular} + % \\ + % \c__gzt_font_string_tl + \bigskip + \tl_if_empty:NF \g__gzt_about_frontcover_tl + {% + \\ + \begin{adjustbox}{valign=t,minipage=.75\c__gzt_inside_cover_box_width_dim+.2\c__gzt_inside_cover_box_width_dim-2\tabcolsep} + \begin{description}[leftmargin=1em,font=\color{__gzt_about_frontcover_title_color}] + \item[\g__gzt_about_frontcover_string_tl] \g__gzt_about_frontcover_tl + \bool_if:NT {\g__gzt_credit_frontcover_bool} { + \space(\c__gzt_credit_frontcover_string_tl{}~:~% + \DTLforeach*[\DTLiseq{\l__gzt_people_role_tl}{frontcovercredit}]{people}{% + \l__gzt_firstlastname=first-last-name% + ,\l__gzt_people_role_tl=role% + }{% + \__gzt_citeauthor_no_firstinits:n + {\c__gzt_issue_bib_key_tl -frontcovercredit- \exp_not:V\DTLcurrentindex}% + }% + ).% + } + \end{description} + \end{adjustbox} + } + \end{__gzt_inside_cover_tcb} + \clearpage% + \pagenumbering{arabic}% + \bool_gset_false:N \g__gzt_inside_frontcover_bool +} +\tl_new:N \g__gzt_display_inside_backcover_tl% +\tl_gset:Nn \g__gzt_display_inside_backcover_tl {% + \bool_gset_true:N \g__gzt_inside_backcover_bool% + \pagestyle{__gzt_inside_backcover_ps}% + \exp_after:wN\newgeometry\exp_after:wN{\c__gzt_inside_cover_geometry_tl}% + % \file_if_exist:nT { \c__gzt_authors_instructions_file_tl } {% + \bool_if:NTF {\g__gzt_no_inside_backcover_bool} { + \hbox{} + }{% + \small% + \begin{__gzt_inside_cover_tcb}[__gzt_tcb_inside_backcover_style] + % \small% + % Page~ + % \ifoddpage% + % im + % \fi + % paire.\par{} + \file_if_exist:nT { \c__gzt_authors_instructions_file_tl } {% + % \begin{multicols}{2} + % \setlength{\columnsep}{1mm} + \file_input:n {\c__gzt_authors_instructions_file_tl} + % \end{multicols} + % \setlength{\columnseprule}{1pt} + \tcblower + } + \begin{description}[leftmargin=1em] + \item[\c__gzt_latexclass_string_tl{}~:] + \__gzt_display_people_by_role:n { classdesigner } + \item[\c__gzt_artistic_director_string_tl{}~:] + \__gzt_display_people_by_role:n { graphicdesigner } + \item[\c__gzt_printer_string_tl{}~:] \g__gzt_printer_text_tl + \end{description} + \g__gzt_font_designer_text_tl + \end{__gzt_inside_cover_tcb} + } + % }{% + % \hbox{} + % } + \bool_gset_false:N \g__gzt_inside_backcover_bool +} +\tl_new:N \g__gzt_display_backcover_tl% +\tl_gset:Nn \g__gzt_display_backcover_tl {% + \bool_gset_true:N \g__gzt_backcover_bool + \pagestyle{__gzt_backcover_ps}% + \exp_after:wN\newgeometry\exp_after:wN{\c__gzt_backcover_geometry_tl}% + \file_if_exist:nTF { \c__gzt_backcover_page_file_string_tl } {% + \file_input:n {\c__gzt_backcover_page_file_string_tl} + }{% + \hbox{} + } +} +\NewDocumentCommand \editorinchief {ommm} +{ + \int_incr:N \g__gzt_editors_in_chief_int + \__gzt_people:nnnnnnnn {#2}{#3}{#4}{}{}{#1}{editorinchief}{} +} +\NewDocumentCommand \editor {ommm} +{ + \__gzt_people:nnnnnnnn {#2}{#3}{#4}{}{}{#1}{editor}{} +} + +\NewDocumentCommand \president {ommm} +{ + \__gzt_people:nnnnnnnn {#2}{#3}{#4}{}{}{#1}{president}{} +} +\NewDocumentCommand \classdesigner {ommm} +{ + \__gzt_people:nnnnnnnn {#2}{#3}{#4}{}{}{#1}{classdesigner}{} +} +\NewDocumentCommand \classmaintainer {ommm} +{ + \__gzt_people:nnnnnnnn {#2}{#3}{#4}{}{}{#1}{classmaintainer}{} +} +\NewDocumentCommand \fontdesigner {ommm} +{ + \__gzt_people:nnnnnnnn {#2}{#3}{#4}{}{}{#1}{fontdesigner}{} +} +\NewDocumentCommand \graphicdesigner {ommm} +{ + \__gzt_people:nnnnnnnn {#2}{#3}{#4}{}{}{#1}{graphicdesigner}{} +} +\NewDocumentCommand \secretary {ommm} +{ + \__gzt_people:nnnnnnnn {#2}{#3}{#4}{}{}{#1}{secretary}{} +} +\NewDocumentCommand \issuesetup { m } { + \keys_set:nn { gzt/issuesetup } { #1 } +\hypersetup{pdftitle=\l__gzt_pdftitle_string_tl} +\hypersetup{pdfauthor=\l__gzt_pdfauthor_string_tl} + \int_compare:nNnT {\g__gzt_issue_number_int}<{1} + { + \int_set:Nn \g__gzt_issue_number_int { \c__gzt_first_issue_number_int } + \msg_warning:nnn{gzt}{issue-number-needed}{number} + } + \int_compare:nNnT {\g__gzt_issue_month_int * \g__gzt_issue_year_int}<{1} + { + \int_new:N \g__gzt_issue_age_in_months_int% + \int_gset:Nn \g__gzt_issue_age_in_months_int + { + \c__gzt_first_issue_month_int + + \c__gzt_interval_in_months_int + * ( \int_use:N \g__gzt_issue_number_int - \c__gzt_first_issue_number_int ) + } + } + \int_compare:nNnT {\g__gzt_issue_month_int}<{1} + { + \int_gset:Nn \g__gzt_issue_month_int + { + \int_mod:nn { \g__gzt_issue_age_in_months_int } { 12 } + } + } + \int_compare:nNnT {\g__gzt_issue_year_int}<{1} + { + \int_new:N \g__gzt_issue_age_in_years_int% + \int_gset:Nn \g__gzt_issue_age_in_years_int + {% + \int_div_truncate:nn { \g__gzt_issue_age_in_months_int } { 12 } + }% + \int_gset:Nn \g__gzt_issue_year_int + { + \g__gzt_issue_age_in_years_int + \c__gzt_first_issue_year_int + } + }% +} +\NewDocumentCommand \journalsetup { m } { + \keys_set:nn { gzt/journalsetup } { #1 } +} +\RenewDocumentCommand \date { mmm } { + \newdate{__gzt_president_message_date}{#1}{#2}{#3}% +} +\NewDocumentCommand \interviewee { om } { + \tl_if_empty:nT \g__gzt_title_tl { + \tl_gset:Nn \g__gzt_title_tl { + \c__gzt_interview_title_string_tl + \DeclareNameAlias{labelname}{default}\citeauthor{\c__gzt_issue_bib_key_tl -art-\int_use:N + \g__gzt_articles_int} + } + } + \IfNoValueF {#1} + { + \keys_set:nn { gzt/authors } { #1 } + } + \tl_set:Nn \l__gzt_people_first_last_name_tl {#2} + \__gzt_people:nVVVVnxV + {#2} + {\g__gzt_people_affiliation_tl} + {\g__gzt_people_email_tl} + {\g__gzt_people_minibio_tl} + {\g__gzt_people_photo_tl} + {} + {interviewee-art-\int_use:N \g__gzt_articles_int} + {} + \maketitle +} +\NewDocumentCommand \academicsignature { m } { + \__gzt_display_academic_signature:n {#1} +} +\AtBeginDocument{% +\tl_new:N \g__gzt_bib_issue_date_tl +\tl_gset:Nn \g__gzt_bib_issue_date_tl { + \int_use:N \g__gzt_issue_year_int- + \int_compare:nNnT {\g__gzt_issue_month_int}<{10} + { + 0 + } + \int_use:N \g__gzt_issue_month_int +} + \iow_now:Nx \g__gzt_bib_out_iow {% + @periodical{\c__gzt_issue_bib_key_tl,\iow_newline: + issuetitle = {\exp_not:f\c__gzt_journal_title_string_tl},\iow_newline: + date = {\g__gzt_bib_issue_date_tl},\iow_newline: + number = \int_use:N \g__gzt_issue_number_int,\iow_newline: + % issn = {\l__gzt_journal_issn_tl},\iow_newline: + options = {skipbib}\iow_newline: + } + \iow_newline: + }% +} +\tl_new:N \g__gzt_title_tl +\RenewDocumentCommand \title { o m } { + \int_gincr:N \g__gzt_articles_int + \tl_gclear:N \g__gzt_short_title_tl + \tl_gclear:N \g__gzt_short_subtitle_tl + \bool_gset_false:N \g__gzt_title_not_in_toc_bool + % + \IfNoValueF {#1} + { + \keys_set:nn { gzt/title } { #1 } + } + \tl_gset:Nn \g__gzt_title_tl {#2} + \bool_if:nT \g__gzt_tellme_rubric_bool + { + \tl_put_left:Nx \g__gzt_title_tl {\c__gzt_tellme_extra_title_string_tl} + } + \tl_if_empty:NT \g__gzt_short_title_tl {% + \tl_gset_eq:NN \g__gzt_short_title_tl \g__gzt_title_tl + } + \hypersetup{pdftitle=\g__gzt_short_title_tl} +} +\tl_new:N \g__gzt_subtitle_tl +\NewDocumentCommand \subtitle { o m } { + \bool_gset_false:N \g__gzt_subtitle_not_in_toc_bool + % + \IfNoValueF {#1} + { + \keys_set:nn { gzt/subtitle } { #1 } + } + \tl_gset:Nn \g__gzt_subtitle_tl {#2} + \tl_if_empty:NT \g__gzt_short_subtitle_tl {% + \tl_gset_eq:NN \g__gzt_short_subtitle_tl \g__gzt_subtitle_tl + } +} +\RenewDocumentCommand \author { o m } { + \IfNoValueF {#1} + { + \keys_set:nn { gzt/authors } { #1 } + } + \tl_gset:Nn \l__gzt_people_first_last_name_tl {#2} + \__gzt_people:nVVVVnxV + {#2} + {\g__gzt_people_affiliation_tl} + {\g__gzt_people_email_tl} + {\g__gzt_people_minibio_tl} + {\g__gzt_people_photo_tl} + {} + {author-art-\int_use:N \g__gzt_articles_int} + {\g__gzt_people_webpage_tl} +} +\iow_new:N \g__gzt_bib_out_iow +\ior_new:N \g__gzt_bib_out_ior +\tl_new:N \g__gzt_bib_out_tl +\file_if_exist:nTF { \c__gzt_issue_bib_path_string_tl } +{ + \ior_open:Nn \g__gzt_bib_out_ior { \c__gzt_issue_bib_path_string_tl } + \ior_str_map_inline:Nn \g__gzt_bib_out_ior + { \tl_gput_right:Nn \g__gzt_bib_out_tl {#1 \par } } + \ior_close:N \g__gzt_bib_out_ior +}{ + \typeout{no file! rerun} +} +\iow_open:Nn \g__gzt_bib_out_iow { \c__gzt_issue_bib_path_string_tl } +\tl_new:N \g__gzt_abstract_body_tl +\NewDocumentEnvironment{abstract}{ } + {\CollectAbstract} + {\endCollectAbstract} +\NewEnviron{CollectAbstract} + { + \tl_gset_eq:NN \g__gzt_abstract_body_tl \BODY + } +\tl_new:N \g__gzt_mainmatter_switch_tl% +\tl_gset:Nn \g__gzt_mainmatter_switch_tl { + \bool_gset_false:N \g__gzt_frontmatter_bool + \bool_gset_true:N \g__gzt_mainmatter_bool + \SetParskip{\c__gzt_mainmatter_parskip_skip} + \pagestyle{__gzt_mainmatter_ps}% +} +\tl_new:N \g__gzt_article_acknowledgements_tl% +\cs_new_protected:Nn \__gzt_article_acknowledgements:n +{ + \tl_gset:Nn \g__gzt_article_acknowledgements_tl { #1 } +} +\tl_new:N \g__gzt_article_bib_key_tl% +\tl_new:N \l__gzt_people_first_last_names_tl +\tl_new:N \g__gzt_authors_first_last_names_tl% +\tl_new:N \l__gzt_interviewees_first_last_names_tl% +\tl_new:N \g__gzt_citeauthor_no_firstinits% +\tl_new:N \g__gzt_citeauthor_tl% +\tl_new:N \g__gzt_citeinterviewee_tl% +\cs_new_protected:Nn \__gzt_citeauthor_no_firstinits:n {% + \tl_gset:Nn \g__gzt_citeauthor_tl {% + \DeclareNameAlias{labelname}{default}% + \group_begin: + \togglefalse{blx@firstinits}% + \citeauthor{#1} + \group_end: + }% + \cs_if_exist:cTF {texorpdfstring} + { + \texorpdfstring{\g__gzt_citeauthor_tl}{} + }{% + \g__gzt_citeauthor_tl + }% +} +\cs_set_eq:NN \__gzt_orig_multinamedelim \multinamedelim +\cs_set_eq:NN \__gzt_orig_finalnamedelim \finalnamedelim +\cs_new_protected:Nn \__gzt_itemized_citeauthor:n +{ + \cs_set_eq:NN \multinamedelim \item + \cs_set_eq:NN \finalnamedelim \multinamedelim + \AtNextCitekey{\defcounter{maxnames}{100}} + \begin{itemize}[label=\textbullet,noitemsep] + \item \citeauthor{#1} + \end{itemize} + \cs_set_eq:NN \multinamedelim \__gzt_orig_multinamedelim + \cs_set_eq:NN \finalnamedelim \__gzt_orig_finalnamedelim +} +\tl_new:N \l__gzt_bullet_and_rule_tl +\tl_new:N \l__gzt_authors_box_tl +\tl_new:N \l__gzt_abstract_box_tl +\tl_new:N \l__gzt_bullet_and_rule_odd_tl +\tl_new:N \l__gzt_bullet_and_rule_even_tl +\tl_new:N \l__gzt_title_box_tl +\RenewDocumentCommand \maketitle { s } { + \FloatBarrier% +\int_gincr:N \g__gzt_item_in_rubric_int +\dim_set_eq:NN \parindent \c__gzt_original_parindent_dim +\setcounter{section}{0} +\setcounter{figure}{0} +\setcounter{table}{0} +\setcounter{footnote}{0} +\setcounter{equation}{0} +\setcounter{theorem}{0} +\setcounter{corollary}{0} +\setcounter{conjecture}{0} +\setcounter{proposition}{0} +\setcounter{lemma}{0} +\setcounter{axiom}{0} +\setcounter{definition}{0} +\setcounter{remark}{0} +\setcounter{example}{0} +\setcounter{notation}{0} +\tl_gset:Nn \g__gzt_article_bib_key_tl {% + \c__gzt_issue_bib_key_tl + -art- + \int_use:N \g__gzt_articles_int +} +\DTLforeach*[\DTLiseq{\l__gzt_people_role_tl}{author-art-\int_use:N \g__gzt_articles_int}]{people}{% + \l__gzt_people_first_last_name_tl=first-last-name% + ,\l__gzt_people_role_tl=role% +}{% + \tl_if_in:NnT \l__gzt_people_role_tl { author } { + \DTLiffirstrow{% + \tl_put_right:Nx + \l__gzt_people_first_last_names_tl + {\exp_not:V\l__gzt_people_first_last_name_tl} + }{ + \tl_put_right:Nx + \l__gzt_people_first_last_names_tl + {~and~\exp_not:V\l__gzt_people_first_last_name_tl} + } + } +} +\tl_if_empty:NF \g__gzt_title_tl {% + \iow_now:Nx \g__gzt_bib_out_iow {% + @article{ + \g__gzt_article_bib_key_tl, + \iow_newline: + title={\exp_not:V\g__gzt_title_tl}, + \iow_newline: + \tl_if_empty:NF \g__gzt_subtitle_tl {% + subtitle={\exp_not:V\g__gzt_subtitle_tl}, + \iow_newline: + } + \tl_if_eq:NNF { \g__gzt_short_title_tl } { \g__gzt_title_tl } {% + shorttitle={\exp_not:V\g__gzt_short_title_tl}, + \iow_newline: + }% + \tl_if_empty:NF \l__gzt_people_first_last_names_tl + { + author={\exp_not:V\l__gzt_people_first_last_names_tl}, + \iow_newline: + } + options={skipbib}, + \iow_newline: + crossref = {\c__gzt_issue_bib_key_tl} + } + \iow_newline: + }% +}% +\tl_set:Nn \l__gzt_bullet_and_rule_odd_tl +{% + \begin{tikzpicture}[remember~picture,overlay] + \draw[fill=__gzt_circlerule_color,draw=__gzt_circlerule_color,line~width=0.7mm] + ([xshift=-\c__gzt_innermargin_dim-\c__gzt_layoutoffset_dim]0,0 -| current~page.west) -- (\linewidth,0);% + \fill[__gzt_circlerule_color] (\linewidth-2\pgflinewidth,0) circle [radius=2.75mm]; + \end{tikzpicture}% +}% +\tl_set:Nn \l__gzt_bullet_and_rule_even_tl +{% + \begin{tikzpicture}[remember~picture,overlay] + \draw[fill=__gzt_circlerule_color,draw=__gzt_circlerule_color,line~width=0.7mm] + (0,0 -| current~page.east) -- (0,0);% + \fill[__gzt_circlerule_color] (0,0) circle [radius=2.75mm]; + \end{tikzpicture}% +}% +\tl_set:Nn \l__gzt_title_box_tl +{% + \noindent% + \hspace*{18mm}% + \begin{adjustbox}{minipage=\linewidth-18mm,valign=t} + \raggedright% + \color{__gzt_article_title_color}% + \fontsize{20}{25}\selectfont% + \bfseries% + \g__gzt_title_tl + \tl_if_empty:NF \g__gzt_subtitle_tl {% + \par% + \g__gzt_subtitle_tl + } + \phantomsection + \par% + \bool_if:NTF {\g__gzt_title_not_in_toc_bool} { + \bookmark[page=\thepage,level=chapter]{\g__gzt_short_title_tl} + }{ + \addcontentsline{toc}{chapter}{% + \tl_if_empty:NTF \g__gzt_short_title_tl {% + \g__gzt_title_tl% + }{ + \g__gzt_short_title_tl% + } + \bool_if:nF { \tl_if_empty_p:N \g__gzt_short_subtitle_tl || \g__gzt_interview_rubric_bool || \g__gzt_rearviewmirror_rubric_bool } + { + \space\textendash{}\space\g__gzt_short_subtitle_tl + } + \bool_if:nF { \tl_if_empty_p:N \l__gzt_people_first_last_names_tl || \g__gzt_interview_rubric_bool || \g__gzt_rearviewmirror_rubric_bool } + { + \textsl{ + \cs_if_exist:cTF {texorpdfstring} + { + \texorpdfstring{% + \space\textendash{}\space\citeauthor{\g__gzt_article_bib_key_tl} + }{} + }{% + \space\textendash{}\space\citeauthor{\g__gzt_article_bib_key_tl} + }% + } + } + } + \hypersetup{pdfauthor=\l__gzt_people_first_last_names_tl} + } + \end{adjustbox} +} + \dim_gset:Nn \g__gzt_abstract_box_width_dim {0.75\linewidth} + % \bool_if:nT { \tl_if_empty_p:N \l__gzt_people_first_last_names_tl } + % { + % \dim_gset:Nn \g__gzt_abstract_box_width_dim {\linewidth} + % } + \tl_set:Nn \l__gzt_abstract_box_tl + {% + \begin{adjustbox}{minipage=\g__gzt_abstract_box_width_dim,max~width=\g__gzt_abstract_box_width_dim,valign=t} + \mbox{} + \tl_if_exist:NTF \g__gzt_abstract_body_tl + {% + \raggedright% + \bfseries% + \color{__gzt_article_abstract_color}% + \g__gzt_abstract_body_tl + } + {% + }% + \end{adjustbox} + }% + \tl_set:Nn \l__gzt_authors_box_tl + {% + \begin{adjustbox}{minipage=0.3\linewidth,min~width=0.3\linewidth,valign=t} + \bool_if:nTF { \tl_if_empty_p:N \l__gzt_people_first_last_names_tl || \g__gzt_interview_rubric_bool } + { + \mbox{} + } + { + \color{__gzt_people_color}% + \__gzt_itemized_citeauthor:n {\g__gzt_article_bib_key_tl} + } + \end{adjustbox} + } + \bool_if:nTF { + \int_compare_p:nNn { \g__gzt_item_in_rubric_int } = { 1 } + } + { + \mbox{} + \par + \bool_if:nTF { + \tl_if_empty_p:N \g__gzt_rubric_abstract_tl + }{ + \xleaders\vbox { + \bigskip% + }% + \vskip\bigskipamount% + }{ + \xleaders\vbox { + \smallskip% + }% + \vskip\smallskipamount% + } + } + { + \bool_if:NTF {\g__gzt_previous_article_with_bibliography_or_minibio_bool} + { + \xleaders\vbox { + \mbox{} + \par + \medskip% + }% + \vskip\medskipamount% + } + { + \xleaders\vbox { + \mbox{} + \par + \smallskip% + }% + \vskip\smallskipamount% + } + } + \bool_gset_false:N \g__gzt_previous_article_with_bibliography_or_minibio_bool + \l__gzt_title_box_tl + \normalsize% + \nopagebreak[3] + \bool_if:nF { \tl_if_empty_p:N \g__gzt_abstract_body_tl && (\tl_if_empty_p:N \l__gzt_people_first_last_names_tl || \g__gzt_interview_rubric_bool || \g__gzt_rearviewmirror_rubric_bool)} + {% + \par% + \bigskip + \bigskip + \large% + \mbox{}% + \checkoddpage% + \ifoddpage% + \l__gzt_abstract_box_tl + \hspace*{11mm}% + \l__gzt_authors_box_tl + \else% + \hspace*{-.85\c__gzt_outermargin_dim}% + \l__gzt_authors_box_tl + \hspace*{11mm}% + \l__gzt_abstract_box_tl + \fi% + } + \tl_gclear:N \g__gzt_title_tl + \tl_gclear:N \g__gzt_subtitle_tl + \tl_gclear:N \g__gzt_abstract_body_tl + \normalsize% + \bigskip + \tl_if_empty:NF \g__gzt_abstract_body_tl + % {% + % \tl_if_empty:NF \l__gzt_people_first_last_names_tl + % {% + % \bigskip + % } + % } + { + \bigskip + } + \bool_if:nT \g__gzt_interview_rubric_bool + { + \dim_zero:N \parindent + \tl_if_empty:NF \g__gzt_people_photo_tl + { + \begin{adjustbox}{center} + \includegraphics[height=50mm]{\g__gzt_people_photo_tl} + \end{adjustbox} + } + } + \color{__gzt_default_text_color}% + \IfBooleanF {#1}% + { + \bool_if:nF { \g__gzt_multicols_bool || \g__gzt_rearviewmirror_rubric_bool} + { + \begin{multicols}{2}% + } + } +} +\AtEndPreamble{\file_input:n {\c__gzt_configuration_file_string_tl}} +\@ifpackageloaded{etoc}{% + \newif\ifShowPartPageInToc % used before \part{Livres} + \newtoks\toctabletok + \newcommand*\appendtotok[2]{% #1=toks variable, #2=macro, expands only once #2 + #1\expandafter\expandafter\expandafter {\expandafter\the\expandafter #1#2}} + \newcommand*\PreparePart{% + \edef\toctablepiece {% + \ExceptFirstPart {\noexpand\\[-1.5mm]}% + \unexpanded{% + \color{__gzt_rubric_in_toc_color}\scshape\fontseries{bx}\selectfont% + }% + \unexpanded\expandafter{\etocthelinkedname}& + % \ifShowPartPageInToc + \unexpanded{\bfseries\color{__gzt_rubric_in_toc_color}}% + \unexpanded\expandafter{\etocthelinkedpage}% + % \fi + \noexpand\\}% + \gdef\ExceptFirstPart ##1{##1}% + } + \newcommand*\PrepareChapter{% + \edef\toctablepiece {% + \unexpanded{\color{__gzt_article_in_toc_color}\small}% + \unexpanded\expandafter{\etocthelinkedname}& + \unexpanded{\color{__gzt_article_in_toc_color}\small} + \unexpanded\expandafter{\etocthelinkedpage}% + \noexpand\\[1mm]}% + } + \etocsetstyle{part}{}{} + {\PreparePart \appendtotok\toctabletok\toctablepiece} + {} + \etocsetstyle{chapter}{}{} + {\PrepareChapter \appendtotok\toctabletok\toctablepiece} + {} + \etocsettocstyle + {% + \setlength\LTleft{\c_zero_dim} + \setlength\LTright{\c_zero_dim} + \gdef\ExceptFirstPart ##1{}% + \toctabletok {%\hypersetup{hidelinks}% + \begin{longtable}{@{\extracolsep{\fill}}p{115mm}@{\quad}!{\color{__gzt_rule_in_toc_color}\vrule width 0.2mm}@{}r@{}}}% + } + {\global\toctabletok\expandafter{% + \the\toctabletok\end{longtable} + } + } + }{} +\tl_new:N \g__gzt_boxed_issue_number_tl% +\tl_gset:Nn \g__gzt_boxed_issue_number_tl {% + \tcbox{\Large\No\g__gzt_issue_number_int} +} +\cs_new_protected:Nn \__gzt_boxed_issue_number:nn +{ + \noindent% + \raisebox{\baselineskip}{% + \tl_if_empty:nF {#1} {% + \makebox[\c_zero_dim][r]{% + % \hspace*{\l__gzt_thumbnail_width_dim}% + \begin{adjustbox}{valign=t} + \includegraphics[width=\l__gzt_thumbnail_width_dim]{#1}% + \end{adjustbox}% + }% + }% + \begin{adjustbox}{valign=t} + \begin{tcolorbox}[% + enhanced,% + title=\No\int_use:N \g__gzt_issue_number_int,% + fonttitle=\Large,% + colback=white,% + sharp~corners=all,% + height=33mm,% + boxrule=\c_zero_dim,% + % frame~hidden,% + attach~boxed~title~to~top~left,% + tikznode~boxed~title={minimum~width=\c__gzt_boxed_issue_number_width_dim},% + boxed~title~style={% + size=minimal,% + height=\c__gzt_boxed_issue_number_height_dim,% + center~upper,% + before={},% + colback=__gzt_boxed_issue_number_bg_color,% + sharp~corners=all,% + frame~hidden,% + valign=center,% + }% + ] + \__gzt_reflected_text:n { #2 }% + \end{tcolorbox} + \end{adjustbox}% + }% + \par% +} +\cs_new_protected:Nn \__gzt_before_frontmatter_stuff: +{ + \bool_gset_true:N \g__gzt_frontmatter_bool% + \pagestyle{__gzt_frontmatter_ps}% + \exp_after:wN\newgeometry\exp_after:wN{\c__gzt_front_matter_geometry_tl}% +} +\cs_new_protected:Nn \__gzt_after_frontmatter_stuff: +{ + \color{__gzt_default_text_color} + \normalsize% + \clearpage% + \bool_gset_false:N \g__gzt_frontmatter_bool% +} +\cs_new_protected:Nn \__gzt_before_editorial_presidentmessage:nn +{ + \__gzt_before_frontmatter_stuff: {} + \__gzt_boxed_issue_number:nn {#1}{#2} + \color{__gzt_frontmatter_text_color}% + \fontsize{11}{13.6}\selectfont + \RaggedRight +} +\cs_new_protected:Nn \__gzt_after_editorial_presidentmessage: +{ + \justifying + \bigskip + \par +} +\cs_new_protected:Nn \__gzt_before_display_editorial: +{ + \__gzt_before_editorial_presidentmessage:nn {}{\c__gzt_editorial_string_tl} +} +\cs_new_protected:Nn \__gzt_after_display_editorial: +{ + \__gzt_after_editorial_presidentmessage: {} + \hspace*{\fill}% + \DTLforeach*[\DTLiseq{\l__gzt_people_role_tl}{editorinchief}]{people}{% + \l__gzt_firstlastname=first-last-name% + ,\l__gzt_people_role_tl=role% + }{% + \__gzt_citeauthor_no_firstinits:n {\c__gzt_issue_bib_key_tl -editorinchief- \exp_not:V\DTLcurrentindex}% + } + % + \__gzt_after_frontmatter_stuff: {} +} +\cs_new_protected:Nn \__gzt_display_editorial: +{ + \__gzt_before_display_editorial: {} + \file_input:n {\c__gzt_editorial_file_string_tl} + \__gzt_after_display_editorial: {} +} +\NewDocumentCommand \editorial {} +{ + \bool_if:NF {\g__gzt_for_authors_bool} { + \__gzt_display_editorial: {} + } +} +\cs_new_protected:Nn \__gzt_display_toc: +{ + \__gzt_before_frontmatter_stuff: {} + \__gzt_boxed_issue_number:nn {\c__gzt_issue_frontcover_image_path_string_tl}{\c__gzt_toc_string_tl} + \phantomsection + \hypertarget{__gzt_toc}{} + \bookmark[dest=__gzt_toc,level=part]{\c__gzt_toc_string_tl} + \etocsettocdepth.toc{chapter}% + \tableofcontents + \the\toctabletok + \__gzt_after_frontmatter_stuff: {} +} +\NewDocumentCommand \gzttableofcontents {} +{ + \bool_if:NF {\g__gzt_for_authors_bool} { + \__gzt_display_toc: {} + } +} +\tl_new:N \g__gzt_frontcover_minitoc_tl% +\tl_new:N \l__gzt_minitoc_label_tl% +\cs_new_protected:Nn \__gzt_frontcover_minitoc:n +{ + \tl_gset:Nn \g__gzt_frontcover_minitoc_tl {#1} +} +\NewDocumentCommand \minitoc { O{} m } +{ + \keys_set:nn { gzt/minitoc } { #1 } + \__gzt_frontcover_minitoc:n {#2} +} +\newlist{__gzt_minitoc_list}{itemize}{1} +\setlist[__gzt_minitoc_list]{itemsep=2ex,label=\textcolor{__gzt_cover_itemize_label_color}\textbullet} +\NewDocumentEnvironment{minitoclist}{ } +{% + \cs_set_eq:NN \__gzt_orig_item \item + \RenewDocumentCommand \item { s O{} }{% + \tl_set:Nn \l__gzt_minitoc_label_tl {##2} + \__gzt_orig_item\textbf{##2} + \IfBooleanT {##1} + { + \c__gzt_minitoc_rubric_title_separator_string_tl + } + } + \begin{__gzt_minitoc_list} +}{ + \end{__gzt_minitoc_list} + \cs_set_eq:NN \item \__gzt_orig_item +} +\cs_new_protected:Nn \__gzt_before_display_presidentmessage: +{ + \__gzt_before_editorial_presidentmessage:nn {\c__gzt_smf_logo_file_string_tl}{\c__gzt_president_message_string_tl} + \phantomsection + \par% + \addcontentsline{toc}{part}{\l__gzt_smf_short_string_tl}% + \addcontentsline{toc}{chapter}{\c__gzt_president_message_string_tl}% +} +\cs_new_protected:Nn \__gzt_after_display_presidentmessage: +{ + \__gzt_after_editorial_presidentmessage: {} + % + \hspace*{\fill}% + \c__gzt_president_message_date_string_tl% + \displaydate{__gzt_president_message_date}% + \\[1.5mm] + \hspace*{\fill}% + \__gzt_display_people_by_role:n { president }% + ,\space + \c__gzt_president_signatory_string_tl + % + \__gzt_after_frontmatter_stuff: {} +} +\cs_new_protected:Nn \__gzt_display_president_message: +{ + \__gzt_before_display_presidentmessage: {} + \file_input:n {\c__gzt_president_message_file_string_tl} + \__gzt_after_display_presidentmessage: {} +} +\NewDocumentCommand \presidentmessage {} +{ + \bool_if:NF {\g__gzt_for_authors_bool} { + \__gzt_display_president_message: {} + } +} +\titleformat{\chapter}% +[block] +{\Huge\bfseries} +{} +{\c_zero_dim} +{\scshape}% +\titleformat{\section} +{% + \raggedright% + \bfseries% + \color{__gzt_section_color} +} +{\fontsize{20}{15}\selectfont\thesection.\enspace} +{-3pt} +{\fontsize{13}{15}\selectfont} +\titleformat{\subsection} +{% + \fontsize{11}{16}\selectfont% + \bfseries% + \color{__gzt_subsection_color}% +} +{\thesubsection\ \textendash{}\ } +{\c_zero_dim} +{} +\titleformat{\subsubsection} +{% + \fontsize{11}{16}\selectfont% + \bfseries% + \color{__gzt_subsubsection_color}% +} +{} +{\c_zero_dim} +{} +\AtBeginDocument{% + % \graphicspath{{\c__gzt_issue_images_path_string_tl//}} + % \glsdisablehyper + \g__gzt_mainmatter_switch_tl + % \bool_gset_false:N \g__gzt_frontmatter_bool + % \bool_gset_true:N \g__gzt_mainmatter_bool + % \SetParskip{\c__gzt_mainmatter_parskip_skip} + % \pagestyle{__gzt_mainmatter_ps}% + \exp_after:wN\newgeometry\exp_after:wN{\c__gzt_main_geometry_tl}% +} +\tl_new:N \g__gzt_background_footer_tl +\tl_gset:Nn \g__gzt_background_footer_tl {% + \draw [__gzt_footer_bg_color,fill] + (current~page.south~west) + rectangle ([yshift=\c__gzt_footer_background_height_dim]current~page.south~east) + ; +} +\tl_new:N \l__gzt_frontmatter_head_text_tl +\tl_set:Nn \l__gzt_frontmatter_head_text_tl {% + \includegraphics{gzt-logo} +} +\tl_new:N \g__gzt_frontmatter_page_headrule_tl +\tl_gset:Nn \g__gzt_frontmatter_page_headrule_tl {% + \draw [__gzt_headrule_color,line~width=\c__gzt_header_line_width_dim] + ([yshift=\c__gzt_header_line_yshift_dim]current~page~header~area.south~west -| current~page.north~west) + -- + ([yshift=\c__gzt_header_line_yshift_dim]current~page~header~area.south~east -| current~page.north~east) + ;% +} +\tl_new:N \g__gzt_frontmatter_headtext_tl +\tl_gset:Nn \g__gzt_frontmatter_headtext_tl {% + \mbox{}% + \checkoddpage% + \ifoddpage% + \node[ + anchor=north~east,% + align=center,% + fill=white,% + inner~xsep=3.5mm,% + outer~sep=\c_zero_dim,% + ] at + ([% + xshift=\c__gzt_frontmatter_headtext_o_xshift_dim,% + yshift=\c__gzt_frontmatter_headtext_yshift_dim% + ]current~page.north~east) {% + \l__gzt_frontmatter_head_text_tl + }% + ; + \else% + \node[% + anchor=north~west,% + align=center,% + fill=white,% + inner~xsep=3.5mm,% + outer~sep=\c_zero_dim,% + ] at + ([% + xshift=\c__gzt_frontmatter_headtext_e_xshift_dim,% + yshift=\c__gzt_frontmatter_headtext_yshift_dim% + ]current~page.north~west) {% + \l__gzt_frontmatter_head_text_tl + }% + ; + \fi% +} +\tl_new:N \g__gzt_mainmatter_oddpage_headrule_tl +\tl_gset:Nn \g__gzt_mainmatter_oddpage_headrule_tl {% + \draw [__gzt_headrule_color,line~width=\c__gzt_header_line_width_dim] + ([yshift=\c__gzt_header_line_yshift_dim]current~page~header~area.south~east) + -- + ([yshift=\c__gzt_header_line_yshift_dim]current~page~header~area.south~west -| current~page.north~west) + ; +} +\tl_new:N \g__gzt_mainmatter_evenpage_headrule_tl +\tl_gset:Nn \g__gzt_mainmatter_evenpage_headrule_tl {% + \draw [__gzt_headrule_color,line~width=\c__gzt_header_line_width_dim] + ([yshift=\c__gzt_header_line_yshift_dim]current~page~header~area.south~west) + -- + ([yshift=\c__gzt_header_line_yshift_dim]current~page~header~area.south~east -| current~page.north~east) + ; +} +\ExplSyntaxOff +\tcbuselibrary{breakable,skins,hooks,xparse,theorems,listingsutf8} +\usetikzlibrary{babel,fadings,positioning,calc} +\tcbset{% + new/blend into/tables/.style={% + use counter*=table,% + list inside=lot, + /tcb/code={\appto\tcb@new@colopt{,before title={\fnum@table\space\textendash{}\space}}}},% + new/blend into/figures/.style={% + use counter*=figure,% + list inside=lof, + /tcb/code={\appto\tcb@new@colopt{,before title={\fnum@figure\space\textendash{}\space}}}},% +} +\ExplSyntaxOn +\newpagestyle{__gzt_frontcover_ps}[]{% + \sethead + {}% + {% + \adjustbox{stack=c}{ + {\Large + \c__gzt_frontcover_header_string_tl + }\\[7mm] + \adjustbox{scale=2.08}{ + \l__gzt_frontmatter_head_text_tl + }% + }% + }% + {}% + % + \setfoot% + {}% + {}% + {}% +}% +\newpagestyle{__gzt_inside_frontcover_ps}[]{% + \sethead% + [ + \tikz[remember~picture,overlay] {% + \g__gzt_frontmatter_page_headrule_tl% + \g__gzt_frontmatter_headtext_tl% + }% + ]% + []% + []% + {}% + { + \tikz[remember~picture,overlay] {% + \g__gzt_frontmatter_page_headrule_tl% + \g__gzt_frontmatter_headtext_tl% + }% + }% + {}% + % + \setfoot% + []% + [% + \uppercase{\c__gzt_footer_string_tl} + ]% + []% + {}% + {% + \uppercase{\c__gzt_footer_string_tl}% + }% + {}% +}% +\newpagestyle{__gzt_frontmatter_ps}[]{% + \widenhead*{\c__gzt_front_matter_extra_innermargin_dim}{\c__gzt_front_matter_extra_outermargin_dim} + \sethead% + [ + \tikz[remember~picture,overlay] {% + \g__gzt_frontmatter_page_headrule_tl% + \g__gzt_frontmatter_headtext_tl% + }% + ]% + []% + []% + {}% + { + \tikz[remember~picture,overlay] {% + \g__gzt_frontmatter_page_headrule_tl% + \g__gzt_frontmatter_headtext_tl% + }% + }% + {}% + % + \setfoot% + [\c__gzt_footer_size_font_tl\thepage]% + [% + \uppercase{\c__gzt_footer_string_tl} + ]% + []% + {}% + {% + \uppercase{\c__gzt_footer_string_tl}% + }% + {\c__gzt_footer_size_font_tl\thepage}% +}% +\newpagestyle{__gzt_rubric_ps}[]{% + \widenhead{\c_zero_dim}{\c_zero_dim} + \sethead% + [ + ]% + [ + ]% + [ + \g__gzt_rubric_page_head_tl% + \bool_if:nF { \g__gzt_for_authors_bool } { + \adjustbox{raise={\c__gzt_header_yshift_dim}{\height},lap=-\c__gzt_header_xshift_dim-\linewidth}{% + \includegraphics[width=\c__gzt_pictogram_width_dim]{\g__gzt_rubric_pictofile_tl}% + }% + }% + ]% + { + \g__gzt_rubric_page_head_tl% + }% + {}% + {% + \bool_if:nF { \g__gzt_for_authors_bool } { + \adjustbox{raise={\c__gzt_header_yshift_dim}{\height},lap=\c__gzt_header_xshift_dim}{% + \includegraphics[width=\c__gzt_pictogram_width_dim]{\g__gzt_rubric_pictofile_tl}% + }% + }% + }% + % + \setfoot% + [\c__gzt_footer_size_font_tl\thepage]% + [% + \uppercase{\c__gzt_footer_string_tl} + ]% + []% + {}% + {% + \uppercase{\c__gzt_footer_string_tl}% + }% + {\c__gzt_footer_size_font_tl\thepage}% +}% +\newpagestyle{__gzt_advertisement_ps}[]{% + \widenhead{\c_zero_dim}{\c_zero_dim} + \sethead% + [ + \tikz[remember~picture,overlay] {\g__gzt_mainmatter_evenpage_headrule_tl} + ]% + [% + \adjustbox{raise={\c__gzt_header_yshift_dim}{\height}}{% + \large\bfseries\scshape\c__gzt_advertisement_string_tl% + }% + ]% + []% + {}% + {% + \adjustbox{raise={\c__gzt_header_yshift_dim}{\height}}{% + \large\bfseries\scshape\c__gzt_advertisement_string_tl% + } + }% + { + \tikz[remember~picture,overlay] {\g__gzt_mainmatter_oddpage_headrule_tl} + }% + % + \setfoot% + [\c__gzt_footer_size_font_tl\thepage]% + [% + \uppercase{\c__gzt_footer_string_tl} + ]% + []% + {}% + {% + \uppercase{\c__gzt_footer_string_tl}% + }% + {\c__gzt_footer_size_font_tl\thepage}% +} +\newpagestyle{__gzt_inside_backcover_ps}[]{% + \sethead% + [ + \tikz[remember~picture,overlay] {% + \g__gzt_frontmatter_page_headrule_tl% + \g__gzt_frontmatter_headtext_tl% + }% + ]% + []% + []% + {}% + { + \tikz[remember~picture,overlay] {% + \g__gzt_frontmatter_page_headrule_tl% + \g__gzt_frontmatter_headtext_tl% + }% + }% + {}% + % + \setfoot% + []% + [% + \uppercase{\c__gzt_footer_string_tl} + ]% + []% + {}% + {% + \uppercase{\c__gzt_footer_string_tl}% + }% + {}% +}% +\newpagestyle{__gzt_backcover_ps}[]{% + \sethead + {}% + {}% + {}% + % + \setfoot% + {}% + {}% + {}% +}% +\AddEverypageHook{% + \bool_if:NF {\g__gzt_advertisement_bool} { + \tikz[remember~picture,overlay] { \g__gzt_background_footer_tl }% + }% +} +\newpagestyle{__gzt_mainmatter_ps}[]{% + \widenhead{\c_zero_dim}{\c_zero_dim} + \sethead% + [ + \tikz[remember~picture,overlay] {\g__gzt_mainmatter_evenpage_headrule_tl} + ]% + [% + \adjustbox{raise={\c__gzt_header_yshift_dim}{\height}}{% + \large\bfseries\scshape\color{__gzt_rubric_head_text_color}\g__gzt_rubric_title_tl% + }% + ]% + []% + {}% + {% + \bool_if:nF { + \g__gzt_rearviewmirror_rubric_bool || \g__gzt_books_rubric_bool + }{ + \adjustbox{raise={\c__gzt_header_yshift_dim}{\height}}{% + \bfseries\color{__gzt_rubric_head_text_color}\g__gzt_short_title_tl% + } + } + }% + { + \tikz[remember~picture,overlay] {\g__gzt_mainmatter_oddpage_headrule_tl} + }% + % + \setfoot% + [\c__gzt_footer_size_font_tl\thepage]% + [% + \uppercase{\c__gzt_footer_string_tl} + ]% + []% + {}% + {% + \uppercase{\c__gzt_footer_string_tl}% + }% + {\c__gzt_footer_size_font_tl\thepage}% +} +\NewDocumentCommand \acknowledgements { m } { + \__gzt_article_acknowledgements:n {#1}% +} +\NewDocumentCommand \printminibios { } { + \bool_if:NT {\g__gzt_multicols_bool} { + \end{multicols}% + } + \FloatBarrier% + \begin{__gzt_minibiographies_acknowledgments_tcbox} + \__gzt_display_people_by_role:n { author-art-\int_use:N \g__gzt_articles_int } + \tl_if_empty:NF \g__gzt_article_acknowledgements_tl + {% + \par% + \bigskip% + \begin{adjustbox}{valign=t,minipage=\linewidth} + \color{__gzt_acknowledgements_color}% + \g__gzt_article_acknowledgements_tl + \end{adjustbox} + } + \end{__gzt_minibiographies_acknowledgments_tcbox} + \bool_gset_true:N \g__gzt_previous_article_with_bibliography_or_minibio_bool + % + \tl_gclear:N \g__gzt_people_affiliation_tl + \tl_gclear:N \g__gzt_people_email_tl + \tl_gclear:N \g__gzt_people_minibio_tl + \tl_gclear:N \g__gzt_people_photo_tl + \tl_gclear:N \g__gzt_people_webpage_tl + \tl_gclear:N \g__gzt_article_acknowledgements_tl + \DTLgcleardb{__gzt_authors} + \DTLgcleardb{__gzt_interviewees} +} +\let\printauthorsdetails\printminibios +\cs_set_eq:NN \__gzt_printbibliography \printbibliography +\RenewDocumentCommand \printbibliography { O{} } { + \bool_if:NT {\g__gzt_multicols_bool} { + \end{multicols}% + } + \FloatBarrier% + \begin{__gzt_bibliography_tcbox} + \__gzt_printbibliography[heading=subbibliography,resetnumbers,#1] + \end{__gzt_bibliography_tcbox} + % + \nopagebreak[0] + \printauthorsdetails +} +\deftranslation[to=French]{__gzt_century}{si\`ecle}% +\deftranslation[to=English]{__gzt_century}{century}% +\deftranslation[to=French]{__gzt_first}{\ier}% +\deftranslation[to=English]{__gzt_first}{\up{st}\xspace}% +\deftranslation[to=French]{__gzt_nth}{\ieme}% +\deftranslation[to=English]{__gzt_nth}{\up{th}\xspace}% +\deftranslation[to=French]{__gzt_bc}{avant~J.-C.}% +\deftranslation[to=English]{__gzt_bc}{BC}% +\cs_new_protected:Nn \__gzt_century:n +{ + \textsc{ + \int_to_roman:n {\int_abs:n {#1}} + }% + \int_compare:nNnTF { \int_abs:n {#1} } > { 1 }{\translate{__gzt_nth}}{\translate{__gzt_first}} + \translate{__gzt_century}% + \space + \int_compare:nNnT { #1 } < { 0 }{\translate{__gzt_bc}} +} +\DeclareCiteCommand{\citeinterviewee}{}{% + \printnames{interviewee}% +} +{}{} +\DeclareCiteCommand{\citereviewer}{}{% + \togglefalse{blx@firstinits}% + \printnames{reviewer}% +} +{}{} +\DeclareCiteCommand{\citereviewerinstitution}{}{% + \printlist{reviewerinstitution}% +} +{}{} +\DeclareCiteCommand{\__gzt_cite_public_price}{}{% + \printfield{publicprice}% +} +{}{} +\DeclareCiteCommand{\__gzt_cite_smf_price}{}{% + \printfield{smfprice}% +} +{}{} +\DeclareCiteCommand{\citecopublisher}{}{% + \printlist{copublisher}% +} +{}{} +\DeclareCiteCommand{\citefrenchabstract}{}{% + \printfield{frenchabstract}% +} +{}{} +\DeclareCiteCommand{\__gzt_cite_englishabstract}{}{% + \printfield{englishabstract}% +} +{}{} +\NewDocumentCommand \email {m} +{ + \__gzt_email:n {#1}% +} +\cs_new_protected:Nn \__gzt_question:n +{ + \int_incr:N \g__gzt_question_int + {% + \par% + \bigskip% + \color{__gzt_question_color} + #1% + \par% + }% +} +\NewDocumentCommand \question {m} +{ + \__gzt_question:n {#1}% +} +\NewDocumentCommand \smf { s } { + \IfBooleanTF {#1} + { + \l__gzt_smf_string_tl + } + { + \l__gzt_smf_short_string_tl + } + \xspace +} +\DeclareExpandableDocumentCommand \surname { m } { + \textsc{#1} +} +\NewDocumentCommand \cad { s } { + \IfBooleanTF {#1} + { + \c__gzt_cad_string_tl + } + { + \c__gzt_cad_short_string_tl + } + \xspace +} +\NewDocumentCommand \Cad { s } { + \IfBooleanTF {#1} + { + \c__gzt_Cad_string_tl + } + { + \c__gzt_Cad_short_string_tl + } + \xspace +} +\NewDocumentCommand \gzt { s } { + \IfBooleanTF {#1} + { + \l__gzt_gzt_string_tl + } + { + \l__gzt_gzt_short_string_tl + } + \xspace +} +\NewDocumentCommand \gztcl { } +{% + \textsl{\texttt{\c__gzt_gzt_class_name_tl}} + \xspace +} +\NewDocumentCommand \gztarticlecl { } +{% + \textsl{\texttt{\c__gzt_gztarticle_class_name_tl}} + \xspace +} +\NewDocumentCommand \century { m } {% + \__gzt_century:n {#1}% +} +\NewDocumentCommand \aside { s m } {% + \IfBooleanTF {#1} + { + \c__gzt_aside_string_tl{}~#2 + } + { + \c__gzt_aside_string_tl{}~#2~\c__gzt_aside_string_tl + } +} +\tl_new:N \g__gzt_font_designer_text_tl% +\cs_new_protected:Nn \__gzt_font_designer_text:n +{ + \tl_gset:Nn \g__gzt_font_designer_text_tl { #1 } +} +\NewDocumentCommand \fontdesignertext {m} +{ + \__gzt_font_designer_text:n {#1}% +} +\tl_new:N \g__gzt_printer_text_tl% +\cs_new_protected:Nn \__gzt_printer_text:n +{ + \tl_gset:Nn \g__gzt_printer_text_tl { #1 } +} +\NewDocumentCommand \printertext {m} +{ + \__gzt_printer_text:n {#1}% +} +\renewcommand{\textflush}{flushepinormal} +\cs_set_eq:NN \__gzt_orig_epigraph \epigraph +\cs_new_protected:Nn \__gzt_epigraph:nn +{ + \bool_if:nTF { \tl_if_empty_p:n {#2} } + { + \setlength{\epigraphrule}{\c_zero_dim} + } + { + \setlength{\epigraphrule}{.4\p@} + } + \__gzt_orig_epigraph{% + \emph{% + \enquote{% + #1% + }% + }% + }% + {% + #2 + } +} +\RenewDocumentCommand \epigraph { m m } +{ + \__gzt_epigraph:nn {#1}{#2}% +} +\NewDocumentEnvironment{authorsinstructions}{ } +{% + \begingroup + \tcbverbatimwrite{\c__gzt_authors_instructions_file_tl} +}% +{ + \endtcbverbatimwrite + \endgroup +} +\lstdefinestyle{__gzt_lst_style}{% + escapechar=+, + language=[LaTeX]TeX, + texcsstyle=*\bfseries, + breaklines=true, + basicstyle=\normalfont\ttfamily, + columns=flexible, + inputencoding=utf8/latin1 +}% +\DeclareTotalTCBox{\gztverb}{ v }{verbatim,blank,fuzzy~halo=0pt~with~__gzt_light_generic_dark_color!8}{#1} +\NewTCBListing{gztcode}{ O{} }{% + listing~style=__gzt_lst_style, + listing~only, + enlarge~top~by=\medskipamount, + breakable, + #1% +} +\DeclareTColorBox[blend~into=figures]{gztfigure}{ O{} } +{ + #1% + % ,title={#2}% + ,width=\linewidth% + ,__gzt_tcb_floats_style% +} +\DeclareTColorBox[blend~into=figures]{gztfigure*}{ O{} } +{ + #1% + ,float* + % ,title={#2}% + ,width=\textwidth% + ,__gzt_tcb_floats_style% +} +\DeclareTColorBox[blend~into=tables]{gzttable}{ O{} } +{ + #1% + % ,title={#2}% + ,width=\linewidth% + ,__gzt_tcb_floats_style% +} +\DeclareTColorBox[blend~into=tables]{gzttable*}{ O{} } +{ + #1% + ,float* + % ,title={#2}% + ,width=\textwidth% + ,__gzt_tcb_floats_style% +} +\DeclareTColorBox{gztscan}{ O{} } +{ + #1% + % ,title={#2}% + ,width=\textwidth% + ,__gzt_tcb_floats_style% + ,size=tight% +} +\DeclareTColorBox{__gzt_book_review}{ O{} } +{ + overlay~unbroken~and~first={% + \node at (frame.north~west) { + { + \makebox[\c_zero_dim][l]{% + \adjustbox{raise={-2\height+\c__gzt_book_review_frontcover_extend_dim}{\c_zero_dim}}{% + \includegraphics[width=20mm]{\g__gzt_bookreview_frontcover_tl}% + }% + } + } + }; + }, + __gzt_tcb_book_review_box_style, + #1 +} +\DeclareTColorBox{__gzt_bibliography_tcbox}{ O{} } +{ + __gzt_tcb_bibliography_style, + #1 +} +\DeclareTColorBox{__gzt_minibiographies_acknowledgments_tcbox}{ O{} } +{ + __gzt_tcb_minibiographies_acknowledgments_style, + #1 +} +\NewDocumentEnvironment{bookreview}{ O{} m } +{ + \keys_set:nn { gzt/bookreview } { #2 } + \begin{__gzt_book_review}[#1] + \xpatchfieldformat{title}{mkbibemph}{textbf}{}{}% + \xpretonameformat{author}{\color{__gzt_people_color}}{}{}% + \togglefalse{blx@firstinits}% + \noindent\fullcite{\g__gzt_bookreview_bibkey_tl} + \vspace{10mm} + \tcblower +}{ + \begin{flushright} + % \g__gzt_reviewer_tl + \bigskip + \citereviewer{\g__gzt_bookreview_bibkey_tl}\\ + \citereviewerinstitution{\g__gzt_bookreview_bibkey_tl} + \end{flushright} + % \vspace*{10mm} + \mbox{} + \end{__gzt_book_review} +} +\DeclareTColorBox{__gzt_book_advertisement}{ O{} } +{ + __gzt_tcb_book_advertisement_box_style, + #1 +} +\DeclareTColorBox{__gzt_inside_cover_tcb}{ O{} } +{ + #1 +} +\NewDocumentEnvironment{bookadvertisement}{ O{} m } +{% + \keys_set:nn { gzt/bookadvertisement } { #2 }% + \newpage{} + \mbox{} + \vfill + \begin{__gzt_book_advertisement}[#1] + \begin{tcolorbox}[ + lefthand~width=47.5mm + ,sidebyside + ,colback=__gzt_book_advertisement_bg_color + % ,sharp~corners=all + ,fontlower=\large + ,flushleft~lower + ,boxrule=\c_zero_dim + ,frame~hidden% + ,leftright~skip=\c_zero_dim + ,before~skip=\c_zero_dim + ,lower~separated=false + ] + \adjustbox{frame}{\includegraphics[width=45mm]{\g__gzt_bookadvertisement_frontcover_tl}}% + \tcblower + \xpatchfieldformat{title}{mkbibemph}{textbf}{}{}% + \def\abx@str{abx@lstr}% + \noindent\fullcite{\g__gzt_bookadvertisement_bibkey_tl} + \def\abx@str{abx@sstr}% + \end{tcolorbox} + \bigskip + \c__gzt_published_with_help_of_string_tl~\citecopublisher{\g__gzt_bookadvertisement_bibkey_tl}. + \par + \bigskip + \citefrenchabstract{\g__gzt_bookadvertisement_bibkey_tl} + \par + \medskip + % + \begin{center} + Prix~public~:\space + \EUR{\__gzt_cite_public_price{\g__gzt_bookadvertisement_bibkey_tl}} + \space\textendash\space Prix~membre~\smf{}~:\space + \EUR{\__gzt_cite_smf_price{\g__gzt_bookadvertisement_bibkey_tl}} + \space\textendash\space Frais~de~port~non~compris + \end{center} + % + \par + \bigskip + \begin{otherlanguage}{english} + \itshape + \__gzt_cite_englishabstract{\g__gzt_bookadvertisement_bibkey_tl} + % + \par + \medskip + % + \begin{center} + Public~price:\space + \EUR{\__gzt_cite_public_price{\g__gzt_bookadvertisement_bibkey_tl}} + \space\textendash\space \smf{}~member~price:\space + \EUR{\__gzt_cite_smf_price{\g__gzt_bookadvertisement_bibkey_tl}} + \space\textendash\space Shipping~costs~not~included + \end{center} + \end{otherlanguage} + \par + \bigskip + }{ + \tcblower + \includegraphics[height=22.5mm]{\c__gzt_smf_logo_file_string_tl}% + % \newline + % \smallskip + % % \begin{adjustbox}{valign=t,minipage=60mm} + % \l__gzt_journal_address_tl + % % \end{adjustbox} + % \newline + \par{} + \smallskip% + \url{\l__gzt_journal_url_tl} + \end{__gzt_book_advertisement} + \vfill + \newpage + \bool_gset_false:N \g__gzt_advertisement_bool + \bool_gset_true:N \g__gzt_mainmatter_bool +} +\keys_define:nn { gztarticle } +{ + editorial .code:n = {% + \AtBeginDocument{% + \__gzt_before_display_editorial: {}% + } + \AtEndDocument{% + \__gzt_after_display_editorial: {}% + } + },% + presidentmessage .code:n = {% + \AtBeginDocument{% + \__gzt_before_display_presidentmessage: {}% + } + \AtEndDocument{% + \__gzt_after_display_presidentmessage: {}% + } + },% +}% +\ProcessKeysOptions { gztarticle } +\AtEndDocument{% + \bool_if:NT {\g__gzt_multicols_bool} { + \end{multicols}% + } + \bool_if:NT {\g__gzt_refsection_bool} { + \end{refsection} + } +} +\pgfplotsset{% + /pgf/number~format/.cd, + use~comma, + 1000~sep={\,}, + min~exponent~for~1000~sep=4 +}% +\defbibheading{bibassection}[\bibname]{\section*{#1}}% +\renewcommand{\bibfont}{\normalfont\footnotesize} +\exp_after:wN\addbibresource\exp_after:wN{\c__gzt_issue_bib_path_string_tl} +\DeclareNameFormat{firstinits-last}{% + \usebibmacro{name:first-last}{#1}{#4}{#5}{#7}% + \usebibmacro{name:andothers}% +} +\DeclareNameAlias{labelname}{firstinits-last} +\renewcommand*\bibnamedelimc{\addnbspace} +\renewcommand*\bibnamedelimd{\addnbspace} +\renewbibmacro{in:}{% + \ifentrytype{article}{}{\printtext{\bibstring{in}\intitlepunct}}} +\renewbibmacro*{journal}{% + \iffieldundef{shortjournal}% + {% + \iffieldundef{journaltitle} + {} + {% + \printtext[journaltitle]% + {% + \printfield[titlecase]{journaltitle}% + \setunit{\subtitlepunct}% + \printfield[titlecase]{journalsubtitle}% + }% + }% + }% + {\printtext[journaltitle]{\printfield[titlecase]{shortjournal}}}% +} +\renewbibmacro*{volume+number+eid}{% + \printfield{volume}% + \setunit{\addcomma\space}% + \printfield{number}% + \setunit{\addcomma\space}% + \printfield{eid}} +\DeclareFieldFormat[article]{volume}{\mkbibbold{#1}} +\DeclareFieldFormat[book]{volume}{\mkbibbold{#1}} +\DeclareFieldFormat[article]{number}{\bibstring{number}#1} +\DeclareLanguageMapping{french}{gzt}% use the new abbreviations +\ifkp@easyscsl +\DeclareRobustCommand{\itshape}{\not@math@alphabet\itshape\mathit% + \ifthenelse{\equal{\f@shape}{\scdefault}}{\fontshape{scsl}}{% + \fontshape\itdefault}\selectfont} +\fi +\DeclareMathAlphabet\mathfrak{U}{euf}{m}{n} +\SetMathAlphabet\mathfrak{bold}{U}{euf}{b}{n} +\@ifpackageloaded{draftwatermark}{% + \SetWatermarkColor{gray!10}% + \SetWatermarkFontSize{30mm}% + \SetWatermarkText{\MakeUppercase{\c__gzt_draftwatermark_string_tl}}% +}{% +} +\tikzset{ + __gzt_dots/.style={ + line~width=\c__gzt_tikz_dot_diameter_dim, + line~cap=round, + dash~pattern=on~0pt~off~\c__gzt_tikz_dot_spacing_dim + }, + __gzt_tcb_segmentation_style/.style={ + __gzt_dots, + draw=__gzt_dotfill_color, + shorten~>=~\c__gzt_tcb_left_dim+\c__gzt_tcb_boxsep_dim, + shorten~<=~\c__gzt_tcb_left_dim+\c__gzt_tcb_boxsep_dim, + } +} +\tcbset{ + copyright/.style={overlay={\node[rotate=90,anchor=south~west,font=\tiny] + at (frame.south~east) {\copyright{}~#1};}} +} +\tcbset{% + __gzt_tcb_floats_style/.style={% + enhanced% + ,every~float=\centering% + ,coltitle=__gzt_generic_dark_color% + ,colbacktitle=__gzt_float_title_bg_color% + ,colback=white% + ,colframe=__gzt_float_frame_color% + ,center~upper% + ,sharp~corners=all% + ,boxrule=0.3mm% + ,separator~sign~dash + % ,attach~boxed~title~to~bottom~center + % ,minipage~boxed~title*=-6mm + % ,boxed~title~style={ + % enhanced + % ,boxrule=0mm% + % ,sharp~corners=all% + }% +} +\tcbset{% + __gzt_tcb_book_review_box_style/.style={% + enhanced,% + colback=__gzt_book_review_frame_bg_color,% + breakable,% + height=50mm,% + boxrule=\c_zero_dim, + sharp~corners=all,% + skin=enhancedlast, + leftupper=25mm, + enlarge~bottom~finally~by=-1mm, + middle=4mm, + segmentation~style={__gzt_tcb_segmentation_style}% + } +} +\tcbset{% + __gzt_tcb_book_advertisement_box_style/.style={% + enhanced,% + colframe=__gzt_book_advertisement_frame_color,% + colback=__gzt_book_advertisement_bg_color,% + center~lower, + sharp~corners=all,% + % skin=enhancedlast, + % middle=4mm, + lower~separated=false, + % segmentation~style={__gzt_tcb_segmentation_style}% + } +} +\tcbset{% + __gzt_tcb_inside_cover_style/.style={% + % split=0.6,% + colback=__gzt_inside_frontcover_frame_bg_color,% + colbacktitle=__gzt_inside_frontcover_frame_bg_color,% + sharp~corners=all,% + center~title,% + coltitle=__gzt_inside_frontcover_frame_title_color,% + fonttitle=\bfseries\large,% + boxrule=\c_zero_dim,% + toptitle=3mm,% + bottomtitle=4mm,% + frame~hidden,% + enhanced,% + height=\c__gzt_layoutheight_dim-\c__gzt_topmargin_inside_cover_dim-\c__gzt_botmargin_dim, + width=\c__gzt_inside_cover_box_width_dim, + middle=4mm, + segmentation~style={__gzt_tcb_segmentation_style}% + }, + __gzt_tcb_inside_frontcover_style/.style={% + __gzt_tcb_inside_cover_style, + enlarge~left~by=-\c__gzt_inside_cover_offset_dim, + title=\c__gzt_editorial_board_string_tl + }, + __gzt_tcb_inside_backcover_style/.style={% + __gzt_tcb_inside_cover_style, + enlarge~left~by=\c__gzt_inside_cover_offset_dim, + title=\file_if_exist:nT { \c__gzt_authors_instructions_file_tl } {% + \c__gzt_authors_instructions_string_tl + } + } +} +\tcbset{% + __gzt_tcb_bibliography_style/.style={% + colback=__gzt_bibliography_minibios_acknowledgments_bg_color, + breakable, + boxrule=\c_zero_dim, + sharp~corners=all,% + enhanced + } +} +\tcbset{% + __gzt_tcb_minibiographies_acknowledgments_style/.style={% + colback=__gzt_bibliography_minibios_acknowledgments_bg_color, + breakable, + boxrule=\c_zero_dim, + drop~lifted~shadow=black, + sharp~corners=all,% + skin=enhancedlast, + skin~first~is~subskin~of={enhancedmiddle}{no~shadow}, + skin~middle~is~subskin~of={enhancedmiddle}{no~shadow}, + skin~last~is~subskin~of={enhancedlast}{drop~lifted~shadow} + } +} +\tcbset{% + enlargepage~flexible=\baselineskip, + left=\c__gzt_tcb_left_dim, + boxsep=\c__gzt_tcb_boxsep_dim, +} +\setlist[1]{labelindent=\parindent} +\setlist[itemize]{label=\textendash{}, nosep} +\setlist{% + labelwidth=\widthof{\textendash}, + itemsep=0.4ex plus 0.2ex minus 0.2ex, + parsep=0.4ex plus 0.2ex minus 0.2ex, + topsep=0.8ex plus 0.4ex minus 0.4ex, + partopsep=0.4ex plus 0.2ex minus 0.2ex, + leftmargin=!% +} +\setlist[description]{ + font= + \bool_if:nTF { \g__gzt_books_rubric_bool || \g__gzt_inside_frontcover_bool || \g__gzt_inside_backcover_bool } + { + \color{black} + }{ + \color{__gzt_description_label_light_color} + } + \bfseries +} +\DeclarePlainStyle{«~}{~»}{`}{'} +\setcounter{topnumber}{3} +\renewcommand{\topfraction}{0.8} +\addtolength{\skip\footins}{.25\baselineskip} +\setlength{\columnsep}{7mm}% +\renewcommand{\thesection}{\arabic{section}}% +\@ifpackageloaded{siunitx}{% + \sisetup{locale=FR} +} +\arrayrulecolor{__gzt_arrayrule_color}% +\addto\captionsfrench{\def\tablename{{\scshape Tableau}}}% +\RenewDocumentCommand \vec { m } { + \vv{#1} +} +\cs_set_eq:NN \__gzt_orig_usetikzlibrary \usetikzlibrary +\RenewDocumentCommand \usetikzlibrary { m } { + \shorthandoff{:}% + \__gzt_orig_usetikzlibrary{#1} + \shorthandon{:}% + % \begingroup + % \NoAutoSpacing + % \__gzt_orig_usetikzlibrary{#1} + % \endgroup +} +\cs_new_protected:Nn \__gzt_bilingual:nnn +{ + \deftranslation[to=French]{#1}{#2}% + \deftranslation[to=English]{#1}{#3}% +} +\cs_new_protected:Nn \__gzt_new_theorem:nnnn +{ + % \__gzt_bilingual:nnn {#2}{#3}{#4} + \deftranslation[to=French]{#2}{#3}% + \deftranslation[to=English]{#2}{#4}% + \declaretheorem[% + #1,% + name=\translate{#2} + ]{#2} + \declaretheorem[% + #1,% + name=\translate{#2}, + numbered=no + ]{#2*} +} +\cs_generate_variant:Nn \__gzt_new_theorem:nnnn { nnVV } +\declaretheoremstyle[spaceabove=3pt,notefont=\bfseries,bodyfont=\itshape]{theorem} +\declaretheoremstyle[spaceabove=3pt,notefont=\bfseries,bodyfont=\normalfont]{definition} +\declaretheoremstyle[spaceabove=3pt,bodyfont=\normalfont,qed=\ensuremath{\qedsymbol},headfont=\normalfont\itshape,numbered=no]{proof} +\RenewDocumentCommand \newtheorem { O{} m } +{ + \tl_clear:N \l__gzt_newtheorem_style_tl + \tl_clear:N \l__gzt_newtheorem_frenchtitle_tl + \tl_clear:N \l__gzt_newtheorem_englishtitle_tl + \tl_set:Nn \l__gzt_newtheorem_englishtitle_tl { + \MakeUppercase #2 + } + \tl_set:Nf \l__gzt_newtheorem_frenchtitle_tl { + \l__gzt_newtheorem_englishtitle_tl + } + \tl_set:Nn \l__gzt_newtheorem_style_tl { + theorem + } + \IfNoValueF {#1} + { + \keys_set:nn { gzt/newtheorem } { #1 } + } + % \tl_if_eq:VVF { \l__gzt_newtheorem_englishtitle_tl } { \MakeUppercase #2 } + % {% + % \tl_show:N \l__gzt_newtheorem_englishtitle_tl + % \tl_show:N \l__gzt_newtheorem_frenchtitle_tl + % \tl_if_eq:NNF { \l__gzt_newtheorem_frenchtitle_tl } { \l__gzt_newtheorem_englishtitle_tl } + % {% + % \tl_set:Nf \l__gzt_newtheorem_frenchtitle_tl { + % \l__gzt_newtheorem_englishtitle_tl + % } + % } + % } + % \tl_show:N \l__gzt_newtheorem_style_tl + % \tl_show:N \l__gzt_newtheorem_frenchtitle_tl + % \tl_show:N \l__gzt_newtheorem_englishtitle_tl + \__gzt_new_theorem:nnVV {style=\l__gzt_newtheorem_style_tl}{#2}{\l__gzt_newtheorem_frenchtitle_tl}{\l__gzt_newtheorem_englishtitle_tl} +} +\newtheorem[frenchtitle=Th\'eor\`eme]{theorem} +\newtheorem[frenchtitle=Corollaire]{corollary} +\newtheorem{conjecture} +\newtheorem{proposition} +\newtheorem[frenchtitle=Lemme]{lemma} +\newtheorem[frenchtitle=Axiome]{axiom} +\newtheorem[style=definition,frenchtitle=D\'efinition]{definition} +\newtheorem[style=definition,frenchtitle=Remarque]{remark} +\newtheorem[style=definition,frenchtitle=Exemple]{example} +\newtheorem[style=definition]{notation} +\let\proof\relax +\newtheorem[style=proof,frenchtitle=Preuve]{proof} +\cs_new_protected:Nn \__gzt_clone_theorem:nn +{ + \NewDocumentEnvironment{#1}{ } + { + \begin{#2} + } + { + \end{#2} + } + \NewDocumentEnvironment{#1*}{ } + { + \begin{#2*} + } + { + \end{#2*} + } +} +\__gzt_clone_theorem:nn {theoreme} {theorem} +\__gzt_clone_theorem:nn {corollaire}{corollary} +\__gzt_clone_theorem:nn {lemme}{lemma} +\__gzt_clone_theorem:nn {axiome}{axiom} +\__gzt_clone_theorem:nn {remarque}{remark} +\__gzt_clone_theorem:nn {exemple}{example} +\__gzt_clone_theorem:nn {preuve}{proof} +\DeclareMathOperator{\cotan}{cotan} +\DeclareMathOperator{\Arccos}{Arccos} +\DeclareMathOperator{\Arcsin}{Arcsin} +\DeclareMathOperator{\Arctan}{Arctan} +\DeclareMathOperator{\Argch}{Argch} +\DeclareMathOperator{\Argsh}{Argsh} +\DeclareMathOperator{\Argth}{Argth} +\cs_set_eq:NN \__gzt_orig_arccos \arccos +\cs_set_eq:NN \__gzt_orig_arcsin \arcsin +\cs_set_eq:NN \__gzt_orig_arctan \arctan +\RenewDocumentCommand \arccos { } { + \IfLanguageName {french}{\Arccos}{\__gzt_orig_arccos}% +} +\RenewDocumentCommand \arcsin { } { + \IfLanguageName {french}{\Arcsin}{\__gzt_orig_arcsin}% +} +\RenewDocumentCommand \arctan { } { + \IfLanguageName {french}{\Arctan}{\__gzt_orig_arctan}% +} +\DeclareMathOperator{\ch}{ch} +\DeclareMathOperator{\sh}{sh} +\cs_set_eq:NN \__gzt_orig_tanh \tanh +\RenewDocumentCommand \tanh { } { + \IfLanguageName {french}{\operatorname{th}}{\__gzt_orig_tanh}% +} +\cs_set_eq:NN \__gzt_orig_log \log +\cs_set_eq:NN \__gzt_orig_lg \lg +\RenewDocumentCommand \log { s } { + \IfBooleanTF {#1} + { + \__gzt_orig_log + } + { + \ln + } +} +\RenewDocumentCommand \lg { s } { + \IfBooleanTF {#1} + { + \__gzt_orig_lg + } + { + \ln + } +} +\cs_set_eq:NN \__gzt_orig_leq \leq +\cs_set_eq:NN \__gzt_orig_geq \geq +\RenewDocumentCommand \le { } {% + \IfLanguageName {french}{\leqslant}{\__gzt_orig_leq}% +} +\RenewDocumentCommand \leq { } {% + \IfLanguageName {french}{\leqslant}{\__gzt_orig_leq}% +} +\RenewDocumentCommand \ge { } {% + \IfLanguageName {french}{\geqslant}{\__gzt_orig_geq}% +} +\RenewDocumentCommand \geq { } {% + \IfLanguageName {french}{\geqslant}{\__gzt_orig_geq}% +} +\NewDocumentCommand \N { } {\mathbb{N}} +\NewDocumentCommand \Z { } {\mathbb{Z}} +\NewDocumentCommand \D { } {\mathbb{D}} +\NewDocumentCommand \Q { } {\mathbb{Q}} +\NewDocumentCommand \R { } {\mathbb{R}} +\NewDocumentCommand \C { } {\mathbb{C}} +\NewDocumentCommand \K { } {\mathbb{K}} +\ExplSyntaxOff + +%% ---------------------------------------------------------------------------- +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.3 +%% of this license or (at your option) any later version. +%% The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.3 or later is part of all distributions of LaTeX +%% version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status `maintained'. +%% +%% The Current Maintainer of this work is Denis Bitouz'e. +%% +%% This work consists of the file gzt.dtx +%% and the derived files gzt.cls, +%% gztarticle.cls, +%% gzt.ins, +%% gzt.pdf, +%% and a number of configuration files. +%% +%% End of file `gztarticle.cls'. -- cgit v1.2.3