summaryrefslogtreecommitdiff
path: root/Master/texmf-dist
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2021-02-16 22:12:37 +0000
committerKarl Berry <karl@freefriends.org>2021-02-16 22:12:37 +0000
commit4ffe448c72373378e2a6320248f24d613eefc3bc (patch)
treed7000bf8df3c17014c88900c545121aba6ee08dc /Master/texmf-dist
parent36a155c5782a22bcb5bd256ba9f77cbc2103e9dc (diff)
gzt (16feb21)
git-svn-id: svn://tug.org/texlive/trunk@57765 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist')
-rw-r--r--Master/texmf-dist/doc/latex/gzt/CHANGELOG.md19
-rw-r--r--Master/texmf-dist/doc/latex/gzt/french/gzt-fr.bib8
-rw-r--r--Master/texmf-dist/doc/latex/gzt/french/gzt-fr.pdfbin530283 -> 528662 bytes
-rw-r--r--Master/texmf-dist/doc/latex/gzt/french/gzt-fr.tex28
-rw-r--r--Master/texmf-dist/doc/latex/gzt/french/latexmkrc5
-rw-r--r--Master/texmf-dist/doc/latex/gzt/french/sections/gztarticle.tex267
-rw-r--r--Master/texmf-dist/source/latex/gzt/gzt.dtx504
-rw-r--r--Master/texmf-dist/tex/latex/gzt/gzt.cls258
-rw-r--r--Master/texmf-dist/tex/latex/gzt/gzt.dbx2
-rw-r--r--Master/texmf-dist/tex/latex/gzt/gzt.lbx2
-rw-r--r--Master/texmf-dist/tex/latex/gzt/gztarticle.cls284
11 files changed, 792 insertions, 585 deletions
diff --git a/Master/texmf-dist/doc/latex/gzt/CHANGELOG.md b/Master/texmf-dist/doc/latex/gzt/CHANGELOG.md
index 9359e8f3766..0f36ea2a830 100644
--- a/Master/texmf-dist/doc/latex/gzt/CHANGELOG.md
+++ b/Master/texmf-dist/doc/latex/gzt/CHANGELOG.md
@@ -1,5 +1,22 @@
# [Unreleased]
+# [1.0.1] - 2021-02-14
+
+## Added
+- Option to create moral reports (`gzt` class only).
+- Local (to a given article) table of contents
+
+## Changed
+- The class now relies on the new LaTeX core hooks.
+- Documentation revised.
+- Various improvements.
+
+## Fixed
+- Superflous uppercases removed (cont.).
+- `gztcode` environments partially gobble their content under certain
+ conditions.
+- Various other small bugs.
+
# [1.0.0] - 2020-03-17
## Added
@@ -8,7 +25,7 @@
## Changed
- Compilation date displayed only if the issue number is not specified
- (`gztarticle` classonly).
+ (`gztarticle` class only).
- Prevent column breaks within items of "Comité de rédaction" (at the price of
unbalanced columns).
diff --git a/Master/texmf-dist/doc/latex/gzt/french/gzt-fr.bib b/Master/texmf-dist/doc/latex/gzt/french/gzt-fr.bib
index 893e4fb2b83..40b8198d46f 100644
--- a/Master/texmf-dist/doc/latex/gzt/french/gzt-fr.bib
+++ b/Master/texmf-dist/doc/latex/gzt/french/gzt-fr.bib
@@ -4,8 +4,8 @@
@Online{Bitouze,
Title = {Conférence \LaTeX{} \no6},
Author = {Bitouzé, Denis},
- Date = {2016-06-08},
- Url = {http://gte.univ-littoral.fr/members/dbitouze/pub/latex/diapositives-cours-d/conference-n-6/downloadFile/file/en-ligne6.pdf},
+ Date = {2020-11-25},
+ Url = {https://frama.link/en-ligne6},
Language = {french},
Organization = {Université du Littoral Côte d'Opale},
Subtitle = {Bibliographie (biber/biblatex), citations d’extraits},
@@ -14,8 +14,8 @@
@Online{Bitouze7,
Title = {Conférence \LaTeX{} \no7},
Author = {Bitouzé, Denis},
- Date = {2016-05-23},
- Url = {http://gte.univ-littoral.fr/members/dbitouze/pub/latex/diapositives-cours-d/conference-n-7/downloadFile/file/en-ligne7.pdf},
+ Date = {2020-11-25},
+ Url = {https://frama.link/en-ligne7},
Language = {french},
Organization = {Université du Littoral Côte d'Opale},
Subtitle = {Glossaires et (liste d’)acronymes, index},
diff --git a/Master/texmf-dist/doc/latex/gzt/french/gzt-fr.pdf b/Master/texmf-dist/doc/latex/gzt/french/gzt-fr.pdf
index 54796958100..9f253543c49 100644
--- a/Master/texmf-dist/doc/latex/gzt/french/gzt-fr.pdf
+++ b/Master/texmf-dist/doc/latex/gzt/french/gzt-fr.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/gzt/french/gzt-fr.tex b/Master/texmf-dist/doc/latex/gzt/french/gzt-fr.tex
index 0b8aaf38d8e..52839b4fec7 100644
--- a/Master/texmf-dist/doc/latex/gzt/french/gzt-fr.tex
+++ b/Master/texmf-dist/doc/latex/gzt/french/gzt-fr.tex
@@ -1,11 +1,12 @@
\documentclass{gztarticle}
%
-\newdate{release-date}{17}{03}{2020}
-\newcommand{\releaseversion}{1.0.0}
-%
-\usepackage{denisbdoc}
+\usepackage[gzt]{denisbdoc}
\usepackage[firstpage]{draftwatermark}
%
+\lstset{%
+ alsolanguage=[varioref]TeX,%
+}
+%
\indexsetup{level=\section*,toclevel=section,noclearpage,firstpagestyle=__gzt_mainmatter_ps}
\makeindex[columns=3]
\tcbset{index format=off}
@@ -70,37 +71,38 @@
}
\ExplSyntaxOff
%
-\lstMakeShortInline[style=dbtex]|
-%
\SetWatermarkColor{gray!10}%
\SetWatermarkFontSize{30mm}%
\SetWatermarkText{\MakeUppercase{travail en cours}}%
%
\addbibresource{gzt-fr.bib}
%
+\input{sections/fixed-footnotes}
+%
+\DTMsavedate{filedate}{\gztfiledate}
+%
\begin{document}
\title[short=Documentation de la classe de la \emph{Gazette} destinée aux
auteurs]{Documentation de la classe \LaTeX{} de la \gzt*{} destinée aux
auteurs}
-\subtitle[short=Version \releaseversion{}
-(\displaydate{release-date})]{\bigskip\Large Version \releaseversion{} en date du
- \displaydate{release-date}}%
+\subtitle[short=Version \gztfileversion{}
+(\DTMusedate{filedate})]{\bigskip\Large Version \gztfileversion{} en date du
+ \DTMusedate{filedate}}%
%
\author[%
affiliation={%
Université du Littoral Côte d'Opale, Laboratoire de mathématiques pures et
appliquées%
},%
-photo=denis,%
-email=denis.bitouze@lmpa.univ-littoral.fr,%
-webpage=http://gte.univ-littoral.fr/members/dbitouze/pub/latex/,%
+photo=./denis,%
+email=denis.bitouze@univ-littoral.fr,%
+webpage=https://gte.univ-littoral.fr/Members/denis-bitouze/pub/latex,%
]{Bitouzé, Denis}
%
\maketitle*
%
\localtableofcontents
%
-\input{sections/fixed-footnotes}
\input{sections/gztarticle}
\input{sections/packages-charges}
\input{sections/notations}
diff --git a/Master/texmf-dist/doc/latex/gzt/french/latexmkrc b/Master/texmf-dist/doc/latex/gzt/french/latexmkrc
index 400046cd557..d324cb3be21 100644
--- a/Master/texmf-dist/doc/latex/gzt/french/latexmkrc
+++ b/Master/texmf-dist/doc/latex/gzt/french/latexmkrc
@@ -10,10 +10,7 @@ sub makeglossaries{
system( "makeglossaries \"$_[0]\"" );
}
-add_cus_dep('idx', 'ind', 0, 'texindy');
-sub texindy{
- system("texindy -L french \"$_[0].idx\"");
-}
+$makeindex = 'texindy -L french -C utf8';
push @generated_exts, 'acn', 'acr', 'alg', 'bcf', 'fls', 'gl*', 'sbl*', 'sl*', 'sym*' ;
diff --git a/Master/texmf-dist/doc/latex/gzt/french/sections/gztarticle.tex b/Master/texmf-dist/doc/latex/gzt/french/sections/gztarticle.tex
index ab8e9ffcd12..06bde597b7a 100644
--- a/Master/texmf-dist/doc/latex/gzt/french/sections/gztarticle.tex
+++ b/Master/texmf-dist/doc/latex/gzt/french/sections/gztarticle.tex
@@ -102,7 +102,7 @@ optionnel permettant de spécifier un (sous-)titre court au moyen de la clé
courant\footnote{En entête.}.
\end{docKey}
-\begin{bodycode}
+\begin{bodycode}[listing options={deletekeywords={[1]{exemple,title,label}}}]
\title[short=Les travaux de Martin \surname{Hairer}]{Martin \surname{Hairer},
l'équation de KPZ et les structures de régularité}
\end{bodycode}
@@ -116,7 +116,7 @@ optionnel permettant de spécifier un (sous-)titre court au moyen de la clé
\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
+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}}}
@@ -272,7 +272,7 @@ 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}
+\begin{bodycode}[listing options={deletekeywords={[2]{article}}}]
\title[short=Les travaux de Manjul \surname{Bhargava}]{Manjul \surname{Bhargava},
anneaux de petit rang et courbes elliptiques}
%
@@ -423,8 +423,17 @@ recueilli les propos peuvent être signalées dans le résumé (cf. environnemen
Cette section donne une liste exhaustive des outils (commandes et
environnements) fournis par la \gztauthorcl.
+\subsection{Table des matières locale}
+\label{sec:table-des-matieres}
+
+\begin{docCommand}{gztlocaltableofcontents}{}
+ Cette commande, facultative, permet de faire figurer une table des matières
+ locale à un article.
+\end{docCommand}
+
+Une telle table des matières n'affiche que les sections de l'article.
+
\subsection{Images, tableaux et cadres}
-\label{sec-images-tableaux}
La \gztauthorcl{} fournit des environnements :
\begin{itemize}
@@ -448,127 +457,131 @@ La \gztauthorcl{} fournit des environnements :
% La \gztauthorcl{} fournit en outre les environnements plus neutres
% \refEnv{gztframe} et \refEnv{gztframe*} qui permettent de placer du contenu dans
% des cadres.
+%
+% Tous ces environnements acceptent des options décrites \vref{sec-options-gzt}.
+
+\begin{docEnvironments}[
+ doclang/environment content=image,
+ doc parameter = \oarg{options}
+ ]{
+ {
+ doc name=gztfigure,
+ doclang/environment content=image,
+ },
+ {
+ doc name=gztfigure*,
+ doclang/environment content=image,
+ },
+ {
+ doc name=gzttable,
+ doclang/environment content=tableau,
+ },
+ {
+ doc name=gzttable*,
+ doclang/environment content=tableau,
+ },
+ {
+ doc name=gztframe,
+ doclang/environment content=contenu à encadrer,
+ },
+ {
+ doc name=gztframe*,
+ doclang/environment content=contenu à encadrer,
+ }
+ }
+ Ces environnements insèrent l'\meta{image}, le \meta{tableau} ou le
+ \meta{contenu à encadrer}\footnote{Mais sans être estampillé \enquote{Figure}
+ ou \enquote{Tableau}.} dans un cadre :
+ \begin{description}
+ \item[de largeur :]\leavevmode
+ \begin{description}
+ \item[versions non étoilées :] celle de la ligne courante, donc notamment
+ celle de la ligne d'une colonne en mode bi-colonne ;
+ \item[versions étoilées :] celle de l'empagement, donc
+ à cheval sur les deux colonnes en mode bi-colonne ;
+ \end{description}
+ \item[placé :]\leavevmode
+ \begin{description}
+ \item[versions non étoilées :] là où l'environnement a été
+ utilisé\footnote{Il s'agit d'un environnement \enquote{non flottant}.} ;
+ \item[versions étoilées :] si possible en haut de la page où l'environnement
+ a été utilisé\footnote{Il s'agit d'un environnement \phantom{non}
+ \enquote{flottant}.}.
+ \end{description}
+ \end{description}
+\end{docEnvironments}
+
+% \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{Cadres}
+% \label{sec-cadres}
+%
+% Le contenu
+% % \footnote{Notamment des images et, le cas échéant, des tableaux.}
+% devant être encadré mais sans être estampillé \enquote{Figure} ou
+% \enquote{Tableau} le sera au moyen de l'un des deux environnements
+% \refEnv{gztframe} et \refEnv{gztframe*} suivants.
+%
+% \begin{docEnvironment}[doclang/environment content=contenu à encadrer]{gztframe}{\oarg{option(s)}}
+% Cet environnement insère le \meta{contenu à encadrer} :
+% \begin{itemize}
+% \item \emph{à l'emplacement où il est utilisé} ;
+% \item dans un cadre
+% \begin{itemize}
+% \item de largeur la ligne courante, donc notamment de la largeur de la ligne
+% d'une colonne en mode bi-colonne ;
+% \item pourvu d'une zone de titre seulement si un titre est spécifié au moyen de
+% la clé \refKey{title}.
+% \end{itemize}
+% \end{itemize}
+% \end{docEnvironment}
+%
+% \begin{docEnvironment}[doclang/environment content=contenu à encadrer]{gztframe*}{\oarg{option(s)}}
+% Cet environnement insère le \meta{contenu à encadrer} :
+% \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 cadre
+% \enquote{flottant}) ;
+% \item dans un cadre :
+% \begin{itemize}
+% \item de largeur celle de l'empagement, donc à cheval sur les deux colonnes
+% en mode bi-colonne ;
+% \item pourvu d'une zone de titre seulement si un titre est spécifié au moyen de
+% la clé \refKey{title}.
+% \end{itemize}
+% \end{itemize}
+% \end{docEnvironment}
+%
+% \subsubsection{Options}
+% \label{sec-options-gzt}
-Tous ces environnements acceptent des options décrites \vref{sec-options-gzt}.
-
-\subsubsection{Images}
-\label{sec-images}
-
-Une image est incluse au moyen :
-\begin{itemize}
-\item soit de la commande standard \docAuxCommand{includegraphics}\footnote{Il
- est possible de passer à cette commande toutes ses options définies par le
- \Package{graphicx}.} ;
-\item soit de code \LaTeX{} de création de dessins\footnote{Cf. par exemple les
- packages \package{TikZ} et dérivés.} ;
-\end{itemize}
-à insérer dans l'un des deux environnements \refEnv{gztfigure} et
-\refEnv{gztfigure*} suivants.
-
-\begin{docEnvironment}[doclang/environment content=image]{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]{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{Cadres}
-\label{sec-cadres}
-
-Le contenu
-% \footnote{Notamment des images et, le cas échéant, des tableaux.}
-devant être encadré mais sans être estampillé \enquote{Figure} ou
-\enquote{Tableau} le sera au moyen de l'un des deux environnements
-\refEnv{gztframe} et \refEnv{gztframe*} suivants.
-
-\begin{docEnvironment}[doclang/environment content=contenu à encadrer]{gztframe}{\oarg{option(s)}}
- Cet environnement insère le \meta{contenu à encadrer} :
- \begin{itemize}
- \item \emph{à l'emplacement où il est utilisé} ;
- \item dans un cadre
- \begin{itemize}
- \item de largeur la ligne courante, donc notamment de la largeur de la ligne
- d'une colonne en mode bi-colonne ;
- \item pourvu d'une zone de titre seulement si un titre est spécifié au moyen de
- la clé \refKey{title}.
- \end{itemize}
- \end{itemize}
-\end{docEnvironment}
-
-\begin{docEnvironment}[doclang/environment content=contenu à encadrer]{gztframe*}{\oarg{option(s)}}
- Cet environnement insère le \meta{contenu à encadrer} :
- \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 cadre
- \enquote{flottant}) ;
- \item dans un cadre :
- \begin{itemize}
- \item de largeur celle de l'empagement, donc à cheval sur les deux colonnes
- en mode bi-colonne ;
- \item pourvu d'une zone de titre seulement si un titre est spécifié au moyen de
- la clé \refKey{title}.
- \end{itemize}
- \end{itemize}
-\end{docEnvironment}
-
-\subsubsection{Options}
-\label{sec-options-gzt}
-
-Les environnements
-\begin{itemize}
-\item \refEnv{gztfigure} et \refEnv{gztfigure*} ;
-\item \refEnv{gzttable} et \refEnv{gzttable*} ;
-\end{itemize}
-admettent en argument optionnel :
+Ces environnements admettent en \meta{options} :
\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).
+ Cette clé permet de spécifier l'éventuel \meta{titre} (au sens de
+ \enquote{légende} de flottant).
\end{docKey}
\begin{docKey}{label}{=\meta{label}}{pas de valeur par défaut, initialement
vide}
@@ -585,6 +598,24 @@ admettent en argument optionnel :
\end{docKey}
\end{itemize}
+\begin{dbremark}{Production des images et tableaux}{}
+ \begin{itemize}
+ \item Une \meta{image} est incluse au moyen :
+ \begin{itemize}
+ \item soit de la commande standard
+ \docAuxCommand{includegraphics}\footnote{Il est possible de passer à cette
+ commande toutes ses options définies par le \Package{graphicx}.} ;
+ \item soit de code \LaTeX{} de création de dessins\footnote{Cf. par exemple
+ les packages \package{TikZ} et dérivés (notamment \package{pgfplots}).}.
+ \end{itemize}
+ \item Un \meta{tableau} est créé au moyen de l'environnement standard
+ \docAuxEnvironment{tabular} ou
+ assimilé\footnote{P. ex. \docAuxEnvironment{tabularx} du package
+ éponyme.}. Il est recommandé de faire usage du \Package*{booktabs} pour
+ produire des tableaux plus lisibles.
+ \end{itemize}
+\end{dbremark}
+
Les exemples suivants illustrent les environnements et options qui viennent
d'être vus.
\begin{bodycode}[listing options={deletekeywords={[1]{exemple,title,label}},morekeywords={[2]{title,label}}}]
diff --git a/Master/texmf-dist/source/latex/gzt/gzt.dtx b/Master/texmf-dist/source/latex/gzt/gzt.dtx
index d2513ec9fe3..e490957478d 100644
--- a/Master/texmf-dist/source/latex/gzt/gzt.dtx
+++ b/Master/texmf-dist/source/latex/gzt/gzt.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% File: gzt.dtx Copyright (C) 2014-2020 by
+% File: gzt.dtx Copyright (C) 2014-2021 by
% Denis Bitouz'e <denis.bitouze@univ-littoral.fr>
%
% It may be distributed and/or modified under the conditions of the
@@ -39,21 +39,24 @@ Gazette des Mathématiciens”](https://smf.emath.fr/les-publications/la-gazette
\expandafter\begingroup
\fi
%</internal>
+%<*class|class-article|install>
+\def\gztfileversion{1.0.1}
+\def\gztfiledate{2021-02-14}
+%</class|class-article|install>
%<*install>
\input l3docstrip.tex
% \input docstrip.tex
-\Msg{********************************************************}
+\Msg{**************************************************************}
\Msg{* Installation}
-\Msg{* Class: gzt 2020-03-17 v1.0.0}
-\Msg{* for the French journal}
-\Msg{* "La Gazette des Math'ematiciens" (DB)}
-\Msg{********************************************************}
+\Msg{* Class: gzt \gztfiledate\space v\gztfileversion}
+\Msg{* for the French journal "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 1.0.0
+ Math'ematiciens"
E-mail: denis.bitouze@univ-littoral.fr
Released under the LaTeX Project Public License v1.3c or later
@@ -61,7 +64,7 @@ See http://www.latex-project.org/lppl.txt
-----------------------------------------------------------------------------
\endpreamble
\postamble
-% Copyright (C) 2014-2020 by Denis Bitouz'e <denis.bitouze@univ-littoral.fr>
+% Copyright (C) 2014-2021 by Denis Bitouz'e <denis.bitouze@univ-littoral.fr>
----------------------------------------------------------------------------
This work may be distributed and/or modified under the
conditions of the LaTeX Project Public License, either version 1.3c
@@ -115,6 +118,11 @@ This work consists of the file gzt.dtx
\nopreamble\nopostamble
\file{README.md}{\from{\jobname.dtx}{readme}}
}%
+\usedir{doc/latex/\GZT@classname}
+\generate{
+ \nopreamble\nopostamble
+ \file{CHANGELOG.md}{\from{\jobname.dtx}{changelog}}
+}%
\usedir{doc/latex/\GZT@classname/french}
\generate{
\nopreamble\nopostamble
@@ -141,6 +149,7 @@ This work consists of the file gzt.dtx
% \changes{v0.98}{2018/04/07}{Seventh CTAN version. Implementation of special
% editions.}%
% \changes{v1.0.0}{2020-03-17}{Eighth CTAN version.}%
+% \changes{v1.0.1}{2021-02-14}{Nineth CTAN version.}%
%
% \CheckSum{4413}
%
@@ -667,8 +676,8 @@ This work consists of the file gzt.dtx
\ProvidesExplClass
%<class> {gzt}
%<class-article> {gztarticle}
- {2020-03-17}
- {1.0.0}
+ {\gztfiledate}
+ {\gztfileversion}
{
SMF~class~for~the~French~journal^^J
"La~Gazette~des~Math'ematiciens".
@@ -684,6 +693,7 @@ This work consists of the file gzt.dtx
% \section{Class loading}
%
% \begin{macrocode}
+\bool_new:N \g_@@_moral_report_bool
\bool_new:N \g_@@_special_edition_bool
\bool_new:N \g_@@_for_authors_bool
\bool_new:N \g_@@_for_printer_bool
@@ -696,6 +706,19 @@ This work consists of the file gzt.dtx
%<class-article>\bool_gset_true:N \g_@@_inside_pages_bool%
% \end{macrocode}
%
+% We define some common code to the "moralreport" global option of "gzt" and
+% "gztarticle".
+% \begin{macrocode}
+\tl_gset:Nn \g_@@_moral_report_common_option_tl {%
+ \AddToHook{begindocument/before} {%
+ \bool_gset_true:N \g_@@_moral_report_bool
+ \bool_gset_true:N \g_@@_frontcover_without_minitoc_bool
+ \title[short={\bfseries\c_@@_moralreport_rubric_string_tl}]{}
+ \tl_gset:Nn \g_@@_rubric_title_tl {\c_@@_moralreport_rubric_string_tl}
+ }
+}
+% \end{macrocode}
+%
% \begin{macrocode}
%</class|class-article>
% \end{macrocode}
@@ -780,9 +803,63 @@ This work consists of the file gzt.dtx
specialedition / editorial~author .code:n = {%
\_@@_people:nnnnnnnn {#1}{}{}{}{}{}{editorinchief}{}
},%
+ moralreport .code:n = {
+ \g_@@_moral_report_common_option_tl
+ \AddToHook{begindocument/before} {%
+ \tl_gset:Nn \g_@@_pdftitle_string_tl {\c_@@_moralreport_rubric_string_tl}
+ }
+ },
+}%
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</class>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<*class-article>
+% \end{macrocode}
+%
+% \begin{macrocode}
+\keys_define:nn { gztarticle }
+{
+ editorial .code:n = {%
+ \AddToHook{begindocument}{%
+ \_@@_before_display_editorial:n {}%
+ }
+ \AddToHook{enddocument}{%
+ \_@@_after_display_editorial: {}%
+ }
+ },%
+ presidentmessage .code:n = {%
+ \AddToHook{begindocument}{%
+ \_@@_before_display_presidentmessage: {}%
+ }
+ \AddToHook{enddocument}{%
+ \_@@_after_display_presidentmessage: {}%
+ }
+ },%
+ moralreport .code:n = {
+ \g_@@_moral_report_common_option_tl
+ \keys_set:nn { gztarticle / moralreport } {#1}
+ },
+ moralreport / title .code:n = {%
+ \tl_gset:Nn \g_@@_moral_report_title_tl {#1}
+ },%
+ moralreport / short~title .code:n = {%
+ \tl_gset:Nn \g_@@_moral_report_short_title_tl {#1}
+ },%
}%
% \end{macrocode}
%
+% \begin{macrocode}
+%</class-article>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<*class>
+% \end{macrocode}
+%
% If we want to disable the inside backcover.
% \begin{macrocode}
% \bool_gset_true:N \g_@@_no_inside_backcover_bool
@@ -1005,7 +1082,7 @@ This work consists of the file gzt.dtx
%
% \item Hooks to do actions on every page or on the current page:
% \begin{macrocode}
-\RequirePackage{everypage}
+% \RequirePackage{everypage}
% \end{macrocode}
%
% \item For translating words in \LaTeX{}.
@@ -1370,7 +1447,7 @@ This work consists of the file gzt.dtx
% \end{macrocode}
% For the editorial.
% \begin{macrocode}
-\AtEndPreamble{
+\AddToHook{begindocument/before}{
\bool_if:NTF {\g_@@_special_edition_bool} {
\tl_const:Nn \c_@@_editorial_heading_string_tl {Avant-propos}
}{
@@ -1410,7 +1487,7 @@ This work consists of the file gzt.dtx
% \end{macrocode}
% For the front cover header text.
% \begin{macrocode}
-\AtEndPreamble{
+\AddToHook{begindocument/before}{
\tl_const:Nn \c_@@_frontcover_header_string_tl {
\bool_if:NT {\g_@@_special_edition_bool} {
\text_uppercase:n {\c_@@_long_special_edition_string_tl}
@@ -1436,21 +1513,25 @@ This work consists of the file gzt.dtx
% For the pdftitle text.
% \begin{macrocode}
\tl_const:Nn \c_@@_pdftitle_string_tl {
- \c_@@_journal_title_string_tl
- % \c_space_tl
- % \textendash{}
- % \c_space_tl
- % \l_@@_uppercased_date_format{\displaydate{@@_date}}
- \c_space_tl
- \textendash{}
- \c_space_tl
- N°
- \bool_if:NTF {\g_@@_special_edition_bool} {
- \c_@@_special_edition_string_tl
- \c_space_tl
- \g_@@_special_edition_title_tl
+ \bool_if:NTF {\g_@@_moral_report_bool} {
+ \c_@@_moralreport_rubric_string_tl
}{
- \int_use:N\g_@@_issue_number_int
+ \c_@@_journal_title_string_tl
+ % \c_space_tl
+ % \textendash{}
+ % \c_space_tl
+ % \l_@@_uppercased_date_format{\displaydate{@@_date}}
+ \c_space_tl
+ \textendash{}
+ \c_space_tl
+ N°
+ \bool_if:NTF {\g_@@_special_edition_bool} {
+ \c_@@_special_edition_string_tl
+ \c_space_tl
+ \g_@@_special_edition_title_tl
+ }{
+ \int_use:N\g_@@_issue_number_int
+ }
}
}
% \end{macrocode}
@@ -1620,15 +1701,19 @@ This work consists of the file gzt.dtx
\c_space_tl
\textcolor{@@_date_color}{
\textendash{}\c_space_tl
- \text_uppercase:n {\c_@@_journal_short_title_string_tl}
- \bool_if:nF { \g_@@_inside_frontcover_bool || \g_@@_backmatter_bool || {\int_compare_p:nNn {\g_@@_issue_number_int}={0}} }
- {
- \c_space_tl\textendash{}\c_space_tl
- \l_@@_uppercased_date_format\displaydate{@@_date}
- \bool_if:NF {\g_@@_special_edition_bool} {
- \c_space_tl
- \textendash{}\c_space_tl
- \textcolor{@@_smf_number_color}{\No\int_use:N\g_@@_issue_number_int}
+ \bool_if:NTF {\g_@@_moral_report_bool} {
+ \text_uppercase:n { \c_@@_moralreport_rubric_string_tl }
+ }{
+ \text_uppercase:n {\c_@@_journal_short_title_string_tl}
+ \bool_if:nF { \g_@@_inside_frontcover_bool || \g_@@_backmatter_bool || {\int_compare_p:nNn {\g_@@_issue_number_int}={0}} }
+ {
+ \c_space_tl\textendash{}\c_space_tl
+ \l_@@_uppercased_date_format\displaydate{@@_date}
+ \bool_if:NF {\g_@@_special_edition_bool} {
+ \c_space_tl
+ \textendash{}\c_space_tl
+ \textcolor{@@_smf_number_color}{\No\int_use:N\g_@@_issue_number_int}
+ }
}
}
}
@@ -1652,9 +1737,9 @@ This work consists of the file gzt.dtx
% For the prefix of the bibliographic key of each article.
% \begin{macrocode}
\bool_if:NTF {\g_@@_special_edition_bool} {
- \tl_const:Nn \c_@@_issue_bib_key_tl {\int_use:N \g_@@_issue_number_int}
-}{
\tl_const:Nn \c_@@_issue_bib_key_tl {special-edition}
+}{
+ \tl_const:Nn \c_@@_issue_bib_key_tl {\int_use:N \g_@@_issue_number_int}
}
% \end{macrocode}
% For the interview title.
@@ -2778,16 +2863,16 @@ This work consists of the file gzt.dtx
% a flag that will be used to test wheter we are inside such an environment or
% not.
% \begin{macrocode}
-\AtBeginEnvironment{multicols}{
+\AddToHook{env/multicols/begin}{
\bool_gset_true:N \g_@@_multicols_bool
}
-\AtEndEnvironment{multicols}{
+\AddToHook{env/multicols/end}{
\bool_gset_false:N \g_@@_multicols_bool
}
-\AtBeginEnvironment{refsection}{
+\AddToHook{env/refsection/begin}{
\bool_gset_true:N \g_@@_refsection_bool
}
-\AtEndEnvironment{refsection}{
+\AddToHook{env/refsection/end}{
\bool_gset_false:N \g_@@_refsection_bool
}
% \end{macrocode}
@@ -2856,7 +2941,7 @@ This work consists of the file gzt.dtx
\tl_gset:Nn \g_@@_pdfauthor_string_tl {
\g_@@_smf_string_tl
}
-\AtEndPreamble{%
+\AddToHook{begindocument/before}{%
\hypersetup{%
pdftitle=\g_@@_pdftitle_string_tl,
pdfauthor=\g_@@_pdfauthor_string_tl%
@@ -2864,38 +2949,6 @@ This work consists of the file gzt.dtx
}
% \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
{
@@ -2903,12 +2956,6 @@ This work consists of the file gzt.dtx
}
% \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}
@@ -2951,39 +2998,6 @@ This work consists of the file gzt.dtx
\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
@@ -3054,7 +3068,9 @@ This work consists of the file gzt.dtx
\cs_new_protected:Nn \@@_display_academic_signature:n
{
\bigskip
+ \begin{_@@_minibiographies_acknowledgements_tcbox}
#1
+ \end{_@@_minibiographies_acknowledgements_tcbox}
}
% \end{macrocode}
%
@@ -3066,7 +3082,7 @@ This work consists of the file gzt.dtx
\cs_new_protected:Nn \@@_display_people_by_role:n
{
\DTLforeach*[\DTLiseq{\l_@@_people_role_tl}{#1}]{people}{%
- \l_@@_firstlastname=first-last-name%
+ \l_@@_firstlastname_tl=first-last-name%
,\l_@@_people_affiliation_tl=affiliation%
,\l_@@_people_email_tl=email%
,\l_@@_people_minibio_tl=minibio%
@@ -3088,26 +3104,29 @@ This work consists of the file gzt.dtx
\newline%
\href{mailto:\l_@@_people_email_tl}{\nolinkurl{\l_@@_people_email_tl}}%
}
- \DTLiflastrow{%
- }{%
- \medskip%
- }
+ \medskip%
}{
\tl_if_in:NnTF \l_@@_people_role_tl { author } {
- \footnotesize%
- % \noindent%
- \dim_set:Nn \l_@@_minibio_width_dim {\linewidth-1em - \c_@@_authors_photos_box_width_dim}
- \tl_if_empty:NTF \l_@@_people_photo_tl
- {%
- \dim_add:Nn \l_@@_minibio_width_dim {\c_@@_authors_photos_box_width_dim}
- }{%
- \begin{adjustbox}{valign=t,minipage=\c_@@_authors_photos_box_width_dim}
- \includegraphics[width=\c_@@_authors_photos_width_dim]{\l_@@_people_photo_tl}
- \end{adjustbox}%
- \quad%
- }
- \begin{adjustbox}{valign=t,minipage=\l_@@_minibio_width_dim}
- \begin{description}[leftmargin=1em,style=nextline]
+ \tl_if_empty:NF \l_@@_firstlastname_tl {
+ \footnotesize%
+ % \noindent%
+ \DTLiffirstrow{%
+ }{
+ \DTLpar%
+ \medskip%
+ }
+ \dim_set:Nn \l_@@_minibio_width_dim {\linewidth-1em - \c_@@_authors_photos_box_width_dim}
+ \tl_if_empty:NTF \l_@@_people_photo_tl
+ {%
+ \dim_add:Nn \l_@@_minibio_width_dim {\c_@@_authors_photos_box_width_dim}
+ }{%
+ \begin{adjustbox}{valign=t,minipage=\c_@@_authors_photos_box_width_dim}
+ \includegraphics[width=\c_@@_authors_photos_width_dim]{\l_@@_people_photo_tl}
+ \end{adjustbox}%
+ \quad%
+ }
+ \begin{adjustbox}{valign=t,minipage=\l_@@_minibio_width_dim}
+ \begin{description}[leftmargin=1em,style=nextline]
\item[%
\textcolor{@@_people_color}{%
\_@@_citeauthor_no_firstinits:n {\c_@@_issue_bib_key_tl -#1- \exp_not:V\DTLcurrentindex}%
@@ -3138,10 +3157,6 @@ This work consists of the file gzt.dtx
}
\end{description}
\end{adjustbox}
- \DTLiflastrow{%
- }{
- \DTLpar%
- \medskip%
}
}{
\_@@_citeauthor_no_firstinits:n {\c_@@_issue_bib_key_tl -#1-
@@ -3344,7 +3359,7 @@ This work consists of the file gzt.dtx
\bool_if:NT {\g_@@_credit_frontcover_bool} {
\c_space_tl(\c_@@_credit_frontcover_string_tl{}~:~%
\DTLforeach*[\DTLiseq{\l_@@_people_role_tl}{frontcovercredit}]{people}{%
- \l_@@_firstlastname=first-last-name%
+ \l_@@_firstlastname_tl=first-last-name%
,\l_@@_people_role_tl=role%
}{%
\_@@_citeauthor_no_firstinits:n
@@ -3610,6 +3625,18 @@ This work consists of the file gzt.dtx
}
% \end{macrocode}
%
+% \subsection{Moral report setup}
+%
+% \begin{macro}{\moralreportsetup}
+% We define the command that lets the user specify the moral report setup.
+% \begin{macrocode}
+\NewDocumentCommand \moralreportsetup { m } {
+ \bool_gset_true:N \g_@@_moral_report_bool
+ \bool_gset_true:N \g_@@_frontcover_without_minitoc_bool
+ \keys_set:nn { gzt/moralreport } {#1}
+}
+% \end{macrocode}
+%
% \subsection{Journal setup}
%
% \begin{macro}{\journalsetup}
@@ -3735,7 +3762,7 @@ This work consists of the file gzt.dtx
% This can be done only at the beginning of the document, in order to know the
% characteristics of the current issue.
% \begin{macrocode}
-\AtBeginDocument{%
+\AddToHook{begindocument}{%
% \end{macrocode}
%
% We first create a token list containing the date of the current issue formated
@@ -3894,10 +3921,10 @@ This work consists of the file gzt.dtx
% \end{macrocode}
%
% \begin{macrocode}
-\tl_new:N \g_@@_article_acknowledgements_tl%
+\tl_new:N \l_@@_article_acknowledgements_tl%
\cs_new_protected:Nn \@@_article_acknowledgements:n
{
- \tl_gset:Nn \g_@@_article_acknowledgements_tl { #1 }
+ \tl_set:Nn \l_@@_article_acknowledgements_tl { #1 }
}
% \end{macrocode}
%
@@ -4048,6 +4075,30 @@ This work consists of the file gzt.dtx
%<*class|class-article>
% \end{macrocode}
%
+% We create a command for local (to a given article) tables of contents
+% \begin{macrocode}
+\cs_new_protected:Nn \_@@_display_localtoc:
+{
+ \etocsettocstyle{\section*{\contentsname}}{}%
+ \etocsetstyle {section}
+ {}
+ {\leavevmode\leftskip 0cm\relax}
+ {\bfseries\normalsize\makebox[.6cm][l]{\etocnumber}%
+ \etocname\nobreak\hfill\nobreak%
+ \makebox[.5cm][r]{%
+ \etocpage%
+ }%
+ \par%
+ }
+ {\medskip}
+ \localtableofcontentswithrelativedepth{+1}
+}
+\NewDocumentCommand \gztlocaltableofcontents {}
+{
+ \_@@_display_localtoc: {}
+}
+% \end{macrocode}
+%
% We create two token lists that will contain:
% \begin{enumerate}
% \item the unique bibliographic key,
@@ -4544,7 +4595,7 @@ This work consists of the file gzt.dtx
% We load the file where acronyms are defined.
% \begin{macrocode}
\file_if_exist:nT { \c_@@_acronyms_file_string_tl } {%
- \AtEndPreamble{\loadglsentries{\c_@@_acronyms_file_string_tl}}
+ \AddToHook{begindocument/before}{\loadglsentries{\c_@@_acronyms_file_string_tl}}
}
% \end{macrocode}
%
@@ -4563,7 +4614,7 @@ This work consists of the file gzt.dtx
% \begin{macrocode}
\bool_if:nT { \g_@@_for_authors_bool }
{
- \AtEndDocument{%
+ \AddToHook{enddocument}{%
\bool_if:NT {\g_@@_multicols_bool} {
\end{multicols}%
}
@@ -4577,7 +4628,7 @@ This work consists of the file gzt.dtx
% 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{
+\AddToHook{begindocument/before}{
\file_if_exist_input:nF {\c_@@_configuration_file_string_tl}
{
\msg_error:nn { gzt } { configuration-file-missing }
@@ -4757,7 +4808,7 @@ This work consists of the file gzt.dtx
\_@@_citeauthor_no_firstinits:n {\c_@@_issue_bib_key_tl -editorinchief- 1}
}{
\DTLforeach*[\DTLiseq{\l_@@_people_role_tl}{editorinchief}]{people}{%
- \l_@@_firstlastname=first-last-name%
+ \l_@@_firstlastname_tl=first-last-name%
,\l_@@_people_role_tl=role%
}{%
\_@@_citeauthor_no_firstinits:n {\c_@@_issue_bib_key_tl -editorinchief- \exp_not:V\DTLcurrentindex}%
@@ -4775,7 +4826,7 @@ This work consists of the file gzt.dtx
}
\_@@_after_display_editorial: {}
}
-\AtEndPreamble{%
+\AddToHook{begindocument/before}{%
\tl_set_eq:NN \g_@@_editorial_heading_tl \c_@@_editorial_heading_string_tl
\bool_if:NT {\g_@@_special_edition_bool} {
\tl_if_empty:NF \g_@@_special_edition_editorial_heading_tl {%
@@ -4985,7 +5036,7 @@ This work consists of the file gzt.dtx
% \end{itemize}
%
% \begin{macrocode}
-\AtBeginDocument{%
+\AddToHook{begindocument}{%
\graphicspath{{\c_@@_issue_images_path_string_tl//}{../\c_@@_issue_images_path_string_tl//}}
% \glsdisablehyper
\g_@@_mainmatter_switch_tl
@@ -5006,7 +5057,7 @@ This work consists of the file gzt.dtx
% \end{macrocode}
%
% \begin{macrocode}
-\AtBeginDocument{%
+\AddToHook{begindocument}{%
\dim_if_exist:NTF \g_@@_pagegrid_dim {%
\pagegridsetup{%
enable,%
@@ -5040,7 +5091,7 @@ This work consists of the file gzt.dtx
\bool_if:NF {\g_@@_inside_pages_bool} {
\g_@@_display_frontcover_tl
\bool_if:NTF {\g_@@_coverpage_bool} {
- \AfterEndPreamble{\end{document}}
+ \AddToHook{begindocument/end}{\end{document}}
}{
\g_@@_display_inside_frontcover_tl
}
@@ -5603,7 +5654,7 @@ This work consists of the file gzt.dtx
%
% We draw a gray background at the bottom of each page, but the first one.
% \begin{macrocode}
-\AddEverypageHook{%
+\AddToHook{shipout/background}{
%<class> \bool_if:nF { \g_@@_frontcover_bool || \g_@@_backcover_bool }{
\bool_if:NF {\g_@@_advertisement_bool} {
\tikz[remember~picture,overlay] { \g_@@_background_footer_tl }%
@@ -5697,31 +5748,23 @@ This work consists of the file gzt.dtx
\FloatBarrier%
\begin{_@@_minibiographies_acknowledgements_tcbox}
\@@_display_people_by_role:n { author-art-\int_use:N \g_@@_articles_int }
- \tl_if_empty:NF \g_@@_article_acknowledgements_tl
+ \DTLsavelastrowcount{\_@@_authors_number}
+ \tl_if_empty:NF \l_@@_article_acknowledgements_tl
{%
- \par%
- \bigskip%
+ \footnotesize
+ \int_compare:nNnT {\_@@_authors_number}>{0}
+ {
+ \par%
+ \bigskip%
+ }
\begin{adjustbox}{valign=t,minipage=\linewidth}
\color{@@_acknowledgements_color}%
- \g_@@_article_acknowledgements_tl
+ \setlength{\parskip}{\c_@@_mainmatter_parskip_skip}
+ \l_@@_article_acknowledgements_tl
\end{adjustbox}
- }
+ }
+ \bool_gset_true:N \g_@@_previous_article_with_bibliography_or_minibio_bool
\end{_@@_minibiographies_acknowledgements_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}
@@ -6240,7 +6283,12 @@ This work consists of the file gzt.dtx
inputencoding=utf8/latin1
}%
\DeclareTotalTCBox{\gztverb}{ v }{verbatim,blank,fuzzy~halo=0pt~with~@@_light_generic_dark_color!8}{#1}
-\NewTCBListing{gztcode}{ O{} }{%
+% \end{macrocode}
+%
+% The optional argument declaration must be prefixed with an "!" (see
+% \url{https://github.com/T-F-S/tcolorbox/issues/43}).
+% \begin{macrocode}
+\NewTCBListing{gztcode}{ !O{} }{%
listing~style=@@_lst_style,
listing~only,
enlarge~top~by=\medskipamount,
@@ -6420,6 +6468,12 @@ This work consists of the file gzt.dtx
% "multicols" environments.
% \begin{macrocode}
\NewDocumentCommand \gztinput { m m } {%
+ \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_clear:N \l_@@_article_acknowledgements_tl
\startcustomization%
\bool_if:NF {\g_@@_refsection_bool} {
\begin{refsection}
@@ -6445,12 +6499,13 @@ This work consists of the file gzt.dtx
% If we don't ask the cover page (only), the inside back cover and back cover
% pages are automatically included 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}).
+% within "\AddToHook{enddocument}" and "\preto\@enddocumenthook" should be used instead
+% (see \url{http://tex.stackexchange.com/q/240318/18401}). (Update (2021-02-14):
+% we now rely on the new ×\AddToHook{env/document/end}×.)
% \begin{macrocode}
\bool_if:NF {\g_@@_coverpage_bool} {
\bool_if:NF {\g_@@_inside_pages_bool} {
- \preto\@enddocumenthook{
+ \AddToHook{enddocument/end}{
\bool_gset_true:N \g_@@_backmatter_bool
\g_@@_display_inside_backcover_tl
\newpage
@@ -6468,7 +6523,7 @@ This work consists of the file gzt.dtx
\bool_if:NF {\g_@@_coverpage_bool} {
\bool_if:nF { \g_@@_for_authors_bool } {
\bool_if:nT { \g_@@_inside_pages_bool } {
- \AtEndDocument{%
+ \AddToHook{enddocument}{%
\prg_replicate:nn
{ \int_mod:nn { 4 - \int_mod:nn { \getpagerefnumber{LastPage} } { 4 } } { 4 } }
{ \thispagestyle{@@_blank_pages_ps}\null\clearpage }
@@ -6487,33 +6542,11 @@ This work consists of the file gzt.dtx
% \end{macrocode}
%
% \begin{macrocode}
-\keys_define:nn { gztarticle }
-{
- editorial .code:n = {%
- \AtBeginDocument{%
- \_@@_before_display_editorial:n {}%
- }
- \AtEndDocument{%
- \_@@_after_display_editorial: {}%
- }
- },%
- presidentmessage .code:n = {%
- \AtBeginDocument{%
- \_@@_before_display_presidentmessage: {}%
- }
- \AtEndDocument{%
- \_@@_after_display_presidentmessage: {}%
- }
- },%
-}%
-% \end{macrocode}
-%
-% \begin{macrocode}
\ProcessKeysOptions { gztarticle }
% \end{macrocode}
%
% \begin{macrocode}
-\AtEndDocument{%
+\AddToHook{enddocument}{%
\bool_if:NT {\g_@@_multicols_bool} {
\end{multicols}%
}
@@ -6765,7 +6798,7 @@ This work consists of the file gzt.dtx
enlarge~left~by=\c_@@_inside_cover_offset_dim,
}
}
-\AtEndPreamble{%
+\AddToHook{begindocument/before}{%
\bool_if:NTF {\g_@@_special_edition_bool} {
\tcbset{
_@@_tcb_inside_frontcover_style/.append~style={%
@@ -6981,7 +7014,7 @@ This work consists of the file gzt.dtx
\tl_clear:N \l_@@_newtheorem_frenchtitle_tl
\tl_clear:N \l_@@_newtheorem_englishtitle_tl
\tl_set:Nn \l_@@_newtheorem_englishtitle_tl {
- \text_uppercase:n {#2}
+ \text_titlecase:n {#2}
}
\tl_set:Nf \l_@@_newtheorem_frenchtitle_tl {
\l_@@_newtheorem_englishtitle_tl
@@ -7368,6 +7401,72 @@ class will be replace them by a dummy image (borrowed from the `mwe` package).
% \end{macrocode}
%
% \begin{macrocode}
+%<*changelog>
+% \end{macrocode}
+# [Unreleased]
+
+# [1.0.1] - 2021-02-14
+
+## Added
+- Option to create moral reports (`gzt` class only).
+- Local (to a given article) table of contents
+
+## Changed
+- The class now relies on the new LaTeX core hooks.
+- Documentation revised.
+- Various improvements.
+
+## Fixed
+- Superflous uppercases removed (cont.).
+- `gztcode` environments partially gobble their content under certain
+ conditions.
+- Various other small bugs.
+
+# [1.0.0] - 2020-03-17
+
+## Added
+- CHANGELOG file (following https://keepachangelog.com/en/1.0.0/).
+- Semantic versionning (following https://semver.org/).
+
+## Changed
+- Compilation date displayed only if the issue number is not specified
+ (`gztarticle` class only).
+- Prevent column breaks within items of "Comité de rédaction" (at the price of
+ unbalanced columns).
+
+## Fixed
+- Track changes in `expl3`.
+- Superflous uppercases removed.
+- Index directive in `latexmk` config file modernized.
+
+# [0.98] - 2018-04-09
+
+## Changed
+- Support for `biblatex` 3.8 changes.
+- Track changes in `expl3`.
+- Special editions implemented.
+
+## Fixed
+- Several bug fixes.
+
+# [0.96] - 2017-04-07
+
+## Changed
+- Figures and tables:
+ - with recurrent label and number but without any caption,
+ - with caption but without any recurrent label nor numbered,
+ implemented.
+- Frames without any label, number nor caption implemented.
+- Track changes in `expl3`.
+
+# [0.9] - 2015-05-02
+
+- Initial CTAN release of the `gzt` bundle.
+% \begin{macrocode}
+%</changelog>
+% \end{macrocode}
+%
+% \begin{macrocode}
%<*latexmkrc>
% \end{macrocode}
%
@@ -7384,7 +7483,7 @@ sub makeglossaries{
system( "makeglossaries \"$_[0]\"" );
}
-$makeindex = 'texindy -L french;
+$makeindex = 'texindy -L french -C utf8';
push @generated_exts, 'acn', 'acr', 'alg', 'bcf', 'fls', 'gl*', 'sbl*', 'sl*', 'sym*' ;
@@ -7405,8 +7504,7 @@ $quote_filenames = 0;
% \Finale
%%% Local Variables:
-%%% mode: tex
-%%% eval: (doctex-mode)
+%%% mode: doctex
%%% ispell-local-dictionary: "english"
%%% TeX-command-default: "TeX"
%%% TeX-master: t
diff --git a/Master/texmf-dist/tex/latex/gzt/gzt.cls b/Master/texmf-dist/tex/latex/gzt/gzt.cls
index f0292631f35..7c43454ca06 100644
--- a/Master/texmf-dist/tex/latex/gzt/gzt.cls
+++ b/Master/texmf-dist/tex/latex/gzt/gzt.cls
@@ -7,12 +7,14 @@
%% gzt.dtx (with options: `class')
%% -----------------------------------------------------------------------------
%% gzt --- SMF bundle of classes for the French journal "La Gazette des
-%% Math'ematiciens", version 1.0.0
+%% Math'ematiciens"
%%
%% E-mail: denis.bitouze@univ-littoral.fr
%% Released under the LaTeX Project Public License v1.3c or later
%% See http://www.latex-project.org/lppl.txt
%% -----------------------------------------------------------------------------
+\def\gztfileversion{1.0.1}
+\def\gztfiledate{2021-02-14}
\def\sectioncommandslist{}%
\let\saved@ifdefinable\@ifdefinable%
\let\saved@@ifdefinable\@@ifdefinable%
@@ -81,13 +83,14 @@
\ExplSyntaxOn
\ProvidesExplClass
{gzt}
- {2020-03-17}
- {1.0.0}
+ {\gztfiledate}
+ {\gztfileversion}
{
SMF~class~for~the~French~journal^^J
"La~Gazette~des~Math'ematiciens".
}
\NeedsTeXFormat{LaTeX2e}
+\bool_new:N \g__gzt_moral_report_bool
\bool_new:N \g__gzt_special_edition_bool
\bool_new:N \g__gzt_for_authors_bool
\bool_new:N \g__gzt_for_printer_bool
@@ -95,6 +98,14 @@
\bool_new:N \g__gzt_coverpage_bool
\bool_new:N \g__gzt_inside_pages_bool
\bool_new:N \g__gzt_no_inside_backcover_bool
+\tl_gset:Nn \g__gzt_moral_report_common_option_tl {%
+ \AddToHook{begindocument/before} {%
+ \bool_gset_true:N \g__gzt_moral_report_bool
+ \bool_gset_true:N \g__gzt_frontcover_without_minitoc_bool
+ \title[short={\bfseries\c__gzt_moralreport_rubric_string_tl}]{}
+ \tl_gset:Nn \g__gzt_rubric_title_tl {\c__gzt_moralreport_rubric_string_tl}
+ }
+}
\dim_const:Nn \c__gzt_pagegrid_dim { 1mm}
\tl_gset:Nn \g__gzt_frontcover_image_file_tl {\c__gzt_issue_frontcover_default_image_file_tl}
\tl_gset:Nn \g__gzt_special_edition_color_tl {__gzt_default_cover_color}
@@ -156,6 +167,12 @@
specialedition / editorial~author .code:n = {%
\__gzt_people:nnnnnnnn {#1}{}{}{}{}{}{editorinchief}{}
},%
+ moralreport .code:n = {
+ \g__gzt_moral_report_common_option_tl
+ \AddToHook{begindocument/before} {%
+ \tl_gset:Nn \g__gzt_pdftitle_string_tl {\c__gzt_moralreport_rubric_string_tl}
+ }
+ },
}%
\ProcessKeysOptions { gzt }
\PassOptionsToClass{openany,english,french}{book}
@@ -209,7 +226,6 @@
\RequirePackage{mathtools}
\RequirePackage{rsfso}
\RequirePackage{esvect}
-\RequirePackage{everypage}
\RequirePackage{translator}%
\RequirePackage{geometry}
\RequirePackage{babel}%
@@ -294,7 +310,7 @@
\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}
-\AtEndPreamble{
+\AddToHook{begindocument/before}{
\bool_if:NTF {\g__gzt_special_edition_bool} {
\tl_const:Nn \c__gzt_editorial_heading_string_tl {Avant-propos}
}{
@@ -310,7 +326,7 @@
\tl_const:Nn \c__gzt_special_edition_string_tl {\c_space_tl{}sp{\'e}cial}
\tl_const:Nn \c__gzt_long_special_edition_string_tl {Numéro\c__gzt_special_edition_string_tl}%
\tl_const:Nn \c__gzt_short_special_edition_string_tl {\No{}\c__gzt_special_edition_string_tl}%
-\AtEndPreamble{
+\AddToHook{begindocument/before}{
\tl_const:Nn \c__gzt_frontcover_header_string_tl {
\bool_if:NT {\g__gzt_special_edition_bool} {
\text_uppercase:n {\c__gzt_long_special_edition_string_tl}
@@ -330,21 +346,25 @@
}
\clist_const:Nn \c__gzt__graphics_extensions_clist {png,PNG,jpg,JPG,jpeg,JPEG,pdf,PDF}
\tl_const:Nn \c__gzt_pdftitle_string_tl {
- \c__gzt_journal_title_string_tl
- % \c_space_tl
- % \textendash{}
- % \c_space_tl
- % \l__gzt_uppercased_date_format{\displaydate{__gzt_date}}
- \c_space_tl
- \textendash{}
- \c_space_tl
- N°
- \bool_if:NTF {\g__gzt_special_edition_bool} {
- \c__gzt_special_edition_string_tl
- \c_space_tl
- \g__gzt_special_edition_title_tl
+ \bool_if:NTF {\g__gzt_moral_report_bool} {
+ \c__gzt_moralreport_rubric_string_tl
}{
- \int_use:N\g__gzt_issue_number_int
+ \c__gzt_journal_title_string_tl
+ % \c_space_tl
+ % \textendash{}
+ % \c_space_tl
+ % \l__gzt_uppercased_date_format{\displaydate{__gzt_date}}
+ \c_space_tl
+ \textendash{}
+ \c_space_tl
+ N°
+ \bool_if:NTF {\g__gzt_special_edition_bool} {
+ \c__gzt_special_edition_string_tl
+ \c_space_tl
+ \g__gzt_special_edition_title_tl
+ }{
+ \int_use:N\g__gzt_issue_number_int
+ }
}
}
\tl_const:Nn \c__gzt_frontmatter_directory_string_tl {frontmatter}
@@ -419,15 +439,19 @@
\c_space_tl
\textcolor{__gzt_date_color}{
\textendash{}\c_space_tl
- \text_uppercase:n {\c__gzt_journal_short_title_string_tl}
- \bool_if:nF { \g__gzt_inside_frontcover_bool || \g__gzt_backmatter_bool || {\int_compare_p:nNn {\g__gzt_issue_number_int}={0}} }
- {
- \c_space_tl\textendash{}\c_space_tl
- \l__gzt_uppercased_date_format\displaydate{__gzt_date}
- \bool_if:NF {\g__gzt_special_edition_bool} {
- \c_space_tl
- \textendash{}\c_space_tl
- \textcolor{__gzt_smf_number_color}{\No\int_use:N\g__gzt_issue_number_int}
+ \bool_if:NTF {\g__gzt_moral_report_bool} {
+ \text_uppercase:n { \c__gzt_moralreport_rubric_string_tl }
+ }{
+ \text_uppercase:n {\c__gzt_journal_short_title_string_tl}
+ \bool_if:nF { \g__gzt_inside_frontcover_bool || \g__gzt_backmatter_bool || {\int_compare_p:nNn {\g__gzt_issue_number_int}={0}} }
+ {
+ \c_space_tl\textendash{}\c_space_tl
+ \l__gzt_uppercased_date_format\displaydate{__gzt_date}
+ \bool_if:NF {\g__gzt_special_edition_bool} {
+ \c_space_tl
+ \textendash{}\c_space_tl
+ \textcolor{__gzt_smf_number_color}{\No\int_use:N\g__gzt_issue_number_int}
+ }
}
}
}
@@ -441,9 +465,9 @@
\tl_const:Nn \c__gzt_issue_bib_file_string_tl {\c_sys_jobname_str\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}
\bool_if:NTF {\g__gzt_special_edition_bool} {
- \tl_const:Nn \c__gzt_issue_bib_key_tl {\int_use:N \g__gzt_issue_number_int}
-}{
\tl_const:Nn \c__gzt_issue_bib_key_tl {special-edition}
+}{
+ \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 {--}
@@ -961,16 +985,16 @@
\colorlet{__gzt_book_advertisement_bg_color}{white}
\colorlet{__gzt_book_advertisement_frame_color}{__gzt_generic_dark_color}
\colorlet{__gzt_default_cover_color}{white}
-\AtBeginEnvironment{multicols}{
+\AddToHook{env/multicols/begin}{
\bool_gset_true:N \g__gzt_multicols_bool
}
-\AtEndEnvironment{multicols}{
+\AddToHook{env/multicols/end}{
\bool_gset_false:N \g__gzt_multicols_bool
}
-\AtBeginEnvironment{refsection}{
+\AddToHook{env/refsection/begin}{
\bool_gset_true:N \g__gzt_refsection_bool
}
-\AtEndEnvironment{refsection}{
+\AddToHook{env/refsection/end}{
\bool_gset_false:N \g__gzt_refsection_bool
}
\tl_const:Nn \c__gzt_footer_size_font_tl {
@@ -1021,28 +1045,16 @@
\tl_gset:Nn \g__gzt_pdfauthor_string_tl {
\g__gzt_smf_string_tl
}
-\AtEndPreamble{%
+\AddToHook{begindocument/before}{%
\hypersetup{%
pdftitle=\g__gzt_pdftitle_string_tl,
pdfauthor=\g__gzt_pdfauthor_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{\c__gzt_authors_photos_box_width_dim}p{0.75\linewidth}}
@@ -1075,15 +1087,6 @@
\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
@@ -1126,12 +1129,14 @@
\cs_new_protected:Nn \__gzt_display_academic_signature:n
{
\bigskip
+ \begin{__gzt_minibiographies_acknowledgements_tcbox}
#1
+ \end{__gzt_minibiographies_acknowledgements_tcbox}
}
\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_firstlastname_tl=first-last-name%
,\l__gzt_people_affiliation_tl=affiliation%
,\l__gzt_people_email_tl=email%
,\l__gzt_people_minibio_tl=minibio%
@@ -1153,26 +1158,29 @@
\newline%
\href{mailto:\l__gzt_people_email_tl}{\nolinkurl{\l__gzt_people_email_tl}}%
}
- \DTLiflastrow{%
- }{%
- \medskip%
- }
+ \medskip%
}{
\tl_if_in:NnTF \l__gzt_people_role_tl { author } {
- \footnotesize%
- % \noindent%
- \dim_set:Nn \l__gzt_minibio_width_dim {\linewidth-1em - \c__gzt_authors_photos_box_width_dim}
- \tl_if_empty:NTF \l__gzt_people_photo_tl
- {%
- \dim_add:Nn \l__gzt_minibio_width_dim {\c__gzt_authors_photos_box_width_dim}
- }{%
- \begin{adjustbox}{valign=t,minipage=\c__gzt_authors_photos_box_width_dim}
- \includegraphics[width=\c__gzt_authors_photos_width_dim]{\l__gzt_people_photo_tl}
- \end{adjustbox}%
- \quad%
- }
- \begin{adjustbox}{valign=t,minipage=\l__gzt_minibio_width_dim}
- \begin{description}[leftmargin=1em,style=nextline]
+ \tl_if_empty:NF \l__gzt_firstlastname_tl {
+ \footnotesize%
+ % \noindent%
+ \DTLiffirstrow{%
+ }{
+ \DTLpar%
+ \medskip%
+ }
+ \dim_set:Nn \l__gzt_minibio_width_dim {\linewidth-1em - \c__gzt_authors_photos_box_width_dim}
+ \tl_if_empty:NTF \l__gzt_people_photo_tl
+ {%
+ \dim_add:Nn \l__gzt_minibio_width_dim {\c__gzt_authors_photos_box_width_dim}
+ }{%
+ \begin{adjustbox}{valign=t,minipage=\c__gzt_authors_photos_box_width_dim}
+ \includegraphics[width=\c__gzt_authors_photos_width_dim]{\l__gzt_people_photo_tl}
+ \end{adjustbox}%
+ \quad%
+ }
+ \begin{adjustbox}{valign=t,minipage=\l__gzt_minibio_width_dim}
+ \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}%
@@ -1203,10 +1211,6 @@
}
\end{description}
\end{adjustbox}
- \DTLiflastrow{%
- }{
- \DTLpar%
- \medskip%
}
}{
\__gzt_citeauthor_no_firstinits:n {\c__gzt_issue_bib_key_tl -#1-
@@ -1391,7 +1395,7 @@
\bool_if:NT {\g__gzt_credit_frontcover_bool} {
\c_space_tl(\c__gzt_credit_frontcover_string_tl{}~:~%
\DTLforeach*[\DTLiseq{\l__gzt_people_role_tl}{frontcovercredit}]{people}{%
- \l__gzt_firstlastname=first-last-name%
+ \l__gzt_firstlastname_tl=first-last-name%
,\l__gzt_people_role_tl=role%
}{%
\__gzt_citeauthor_no_firstinits:n
@@ -1559,6 +1563,11 @@
\bool_gset_true:N \g__gzt_frontcover_without_minitoc_bool
\keys_set:nn { gzt/specialedition } {#1}
}
+\NewDocumentCommand \moralreportsetup { m } {
+ \bool_gset_true:N \g__gzt_moral_report_bool
+ \bool_gset_true:N \g__gzt_frontcover_without_minitoc_bool
+ \keys_set:nn { gzt/moralreport } {#1}
+}
\NewDocumentCommand \journalsetup { m } {
\keys_set:nn { gzt/journalsetup } { #1 }
}
@@ -1622,7 +1631,7 @@
\newdateformat{l__gzt_uppercased_date_format}{
\__gzt_uppercased_monthname_french:n {\THEMONTH}~\THEYEAR
}
-\AtBeginDocument{%
+\AddToHook{begindocument}{%
\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-
@@ -1720,10 +1729,10 @@
\SetParskip{\c__gzt_mainmatter_parskip_skip}
\pagestyle{__gzt_mainmatter_ps}%
}
-\tl_new:N \g__gzt_article_acknowledgements_tl%
+\tl_new:N \l__gzt_article_acknowledgements_tl%
\cs_new_protected:Nn \__gzt_article_acknowledgements:n
{
- \tl_gset:Nn \g__gzt_article_acknowledgements_tl { #1 }
+ \tl_set:Nn \l__gzt_article_acknowledgements_tl { #1 }
}
\tl_new:N \g__gzt_about_frontcover_tl%
\bool_new:N \g__gzt_credit_frontcover_bool%
@@ -1828,6 +1837,26 @@
}
\ignorespaces
}
+\cs_new_protected:Nn \__gzt_display_localtoc:
+{
+ \etocsettocstyle{\section*{\contentsname}}{}%
+ \etocsetstyle {section}
+ {}
+ {\leavevmode\leftskip 0cm\relax}
+ {\bfseries\normalsize\makebox[.6cm][l]{\etocnumber}%
+ \etocname\nobreak\hfill\nobreak%
+ \makebox[.5cm][r]{%
+ \etocpage%
+ }%
+ \par%
+ }
+ {\medskip}
+ \localtableofcontentswithrelativedepth{+1}
+}
+\NewDocumentCommand \gztlocaltableofcontents {}
+{
+ \__gzt_display_localtoc: {}
+}
\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%
@@ -2179,17 +2208,17 @@
}
}
\file_if_exist:nT { \c__gzt_acronyms_file_string_tl } {%
- \AtEndPreamble{\loadglsentries{\c__gzt_acronyms_file_string_tl}}
+ \AddToHook{begindocument/before}{\loadglsentries{\c__gzt_acronyms_file_string_tl}}
}
\bool_if:nT { \g__gzt_for_authors_bool }
{
- \AtEndDocument{%
+ \AddToHook{enddocument}{%
\bool_if:NT {\g__gzt_multicols_bool} {
\end{multicols}%
}
}
}
-\AtEndPreamble{
+\AddToHook{begindocument/before}{
\file_if_exist_input:nF {\c__gzt_configuration_file_string_tl}
{
\msg_error:nn { gzt } { configuration-file-missing }
@@ -2331,7 +2360,7 @@
\__gzt_citeauthor_no_firstinits:n {\c__gzt_issue_bib_key_tl -editorinchief- 1}
}{
\DTLforeach*[\DTLiseq{\l__gzt_people_role_tl}{editorinchief}]{people}{%
- \l__gzt_firstlastname=first-last-name%
+ \l__gzt_firstlastname_tl=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}%
@@ -2349,7 +2378,7 @@
}
\__gzt_after_display_editorial: {}
}
-\AtEndPreamble{%
+\AddToHook{begindocument/before}{%
\tl_set_eq:NN \g__gzt_editorial_heading_tl \c__gzt_editorial_heading_string_tl
\bool_if:NT {\g__gzt_special_edition_bool} {
\tl_if_empty:NF \g__gzt_special_edition_editorial_heading_tl {%
@@ -2482,7 +2511,7 @@
{}
{\c_zero_dim}
{}
-\AtBeginDocument{%
+\AddToHook{begindocument}{%
\graphicspath{{\c__gzt_issue_images_path_string_tl//}{../\c__gzt_issue_images_path_string_tl//}}
% \glsdisablehyper
\g__gzt_mainmatter_switch_tl
@@ -2492,7 +2521,7 @@
% \pagestyle{__gzt_mainmatter_ps}%
\exp_after:wN\newgeometry\exp_after:wN{\c__gzt_main_geometry_tl}%
}
-\AtBeginDocument{%
+\AddToHook{begindocument}{%
\dim_if_exist:NTF \g__gzt_pagegrid_dim {%
\pagegridsetup{%
enable,%
@@ -2526,7 +2555,7 @@
\bool_if:NF {\g__gzt_inside_pages_bool} {
\g__gzt_display_frontcover_tl
\bool_if:NTF {\g__gzt_coverpage_bool} {
- \AfterEndPreamble{\end{document}}
+ \AddToHook{begindocument/end}{\end{document}}
}{
\g__gzt_display_inside_frontcover_tl
}
@@ -2900,7 +2929,7 @@
{}%
{}%
}%
-\AddEverypageHook{%
+\AddToHook{shipout/background}{
\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 }%
@@ -2969,26 +2998,23 @@
\FloatBarrier%
\begin{__gzt_minibiographies_acknowledgements_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
+ \DTLsavelastrowcount{\__gzt_authors_number}
+ \tl_if_empty:NF \l__gzt_article_acknowledgements_tl
{%
- \par%
- \bigskip%
+ \footnotesize
+ \int_compare:nNnT {\__gzt_authors_number}>{0}
+ {
+ \par%
+ \bigskip%
+ }
\begin{adjustbox}{valign=t,minipage=\linewidth}
\color{__gzt_acknowledgements_color}%
- \g__gzt_article_acknowledgements_tl
+ \setlength{\parskip}{\c__gzt_mainmatter_parskip_skip}
+ \l__gzt_article_acknowledgements_tl
\end{adjustbox}
- }
+ }
+ \bool_gset_true:N \g__gzt_previous_article_with_bibliography_or_minibio_bool
\end{__gzt_minibiographies_acknowledgements_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
@@ -3344,7 +3370,7 @@
inputencoding=utf8/latin1
}%
\DeclareTotalTCBox{\gztverb}{ v }{verbatim,blank,fuzzy~halo=0pt~with~__gzt_light_generic_dark_color!8}{#1}
-\NewTCBListing{gztcode}{ O{} }{%
+\NewTCBListing{gztcode}{ !O{} }{%
listing~style=__gzt_lst_style,
listing~only,
enlarge~top~by=\medskipamount,
@@ -3487,6 +3513,12 @@
\bool_gset_true:N \g__gzt_mainmatter_bool
}
\NewDocumentCommand \gztinput { m m } {%
+ \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_clear:N \l__gzt_article_acknowledgements_tl
\startcustomization%
\bool_if:NF {\g__gzt_refsection_bool} {
\begin{refsection}
@@ -3509,7 +3541,7 @@
}
\bool_if:NF {\g__gzt_coverpage_bool} {
\bool_if:NF {\g__gzt_inside_pages_bool} {
- \preto\@enddocumenthook{
+ \AddToHook{enddocument/end}{
\bool_gset_true:N \g__gzt_backmatter_bool
\g__gzt_display_inside_backcover_tl
\newpage
@@ -3520,7 +3552,7 @@
\bool_if:NF {\g__gzt_coverpage_bool} {
\bool_if:nF { \g__gzt_for_authors_bool } {
\bool_if:nT { \g__gzt_inside_pages_bool } {
- \AtEndDocument{%
+ \AddToHook{enddocument}{%
\prg_replicate:nn
{ \int_mod:nn { 4 - \int_mod:nn { \getpagerefnumber{LastPage} } { 4 } } { 4 } }
{ \thispagestyle{__gzt_blank_pages_ps}\null\clearpage }
@@ -3696,7 +3728,7 @@
enlarge~left~by=\c__gzt_inside_cover_offset_dim,
}
}
-\AtEndPreamble{%
+\AddToHook{begindocument/before}{%
\bool_if:NTF {\g__gzt_special_edition_bool} {
\tcbset{
__gzt_tcb_inside_frontcover_style/.append~style={%
@@ -3818,7 +3850,7 @@
\tl_clear:N \l__gzt_newtheorem_frenchtitle_tl
\tl_clear:N \l__gzt_newtheorem_englishtitle_tl
\tl_set:Nn \l__gzt_newtheorem_englishtitle_tl {
- \text_uppercase:n {#2}
+ \text_titlecase:n {#2}
}
\tl_set:Nf \l__gzt_newtheorem_frenchtitle_tl {
\l__gzt_newtheorem_englishtitle_tl
diff --git a/Master/texmf-dist/tex/latex/gzt/gzt.dbx b/Master/texmf-dist/tex/latex/gzt/gzt.dbx
index 44f875497c3..3850451c9e8 100644
--- a/Master/texmf-dist/tex/latex/gzt/gzt.dbx
+++ b/Master/texmf-dist/tex/latex/gzt/gzt.dbx
@@ -7,7 +7,7 @@
%% gzt.dtx (with options: `datamodel')
%% -----------------------------------------------------------------------------
%% gzt --- SMF bundle of classes for the French journal "La Gazette des
-%% Math'ematiciens", version 1.0.0
+%% Math'ematiciens"
%%
%% E-mail: denis.bitouze@univ-littoral.fr
%% Released under the LaTeX Project Public License v1.3c or later
diff --git a/Master/texmf-dist/tex/latex/gzt/gzt.lbx b/Master/texmf-dist/tex/latex/gzt/gzt.lbx
index d23410ea7fd..4ad100fa06a 100644
--- a/Master/texmf-dist/tex/latex/gzt/gzt.lbx
+++ b/Master/texmf-dist/tex/latex/gzt/gzt.lbx
@@ -7,7 +7,7 @@
%% gzt.dtx (with options: `languagemodel')
%% -----------------------------------------------------------------------------
%% gzt --- SMF bundle of classes for the French journal "La Gazette des
-%% Math'ematiciens", version 1.0.0
+%% Math'ematiciens"
%%
%% E-mail: denis.bitouze@univ-littoral.fr
%% Released under the LaTeX Project Public License v1.3c or later
diff --git a/Master/texmf-dist/tex/latex/gzt/gztarticle.cls b/Master/texmf-dist/tex/latex/gzt/gztarticle.cls
index 9ddb63cade8..78173f28dd8 100644
--- a/Master/texmf-dist/tex/latex/gzt/gztarticle.cls
+++ b/Master/texmf-dist/tex/latex/gzt/gztarticle.cls
@@ -7,12 +7,14 @@
%% gzt.dtx (with options: `class-article')
%% -----------------------------------------------------------------------------
%% gzt --- SMF bundle of classes for the French journal "La Gazette des
-%% Math'ematiciens", version 1.0.0
+%% Math'ematiciens"
%%
%% E-mail: denis.bitouze@univ-littoral.fr
%% Released under the LaTeX Project Public License v1.3c or later
%% See http://www.latex-project.org/lppl.txt
%% -----------------------------------------------------------------------------
+\def\gztfileversion{1.0.1}
+\def\gztfiledate{2021-02-14}
\RequirePackage{silence}%
\WarningFilter{kpfonts}{With 'easyscsl' option}
\RequirePackage{xpatch}%
@@ -61,14 +63,15 @@
\ExplSyntaxOn
\ProvidesExplClass
{gztarticle}
- {2020-03-17}
- {1.0.0}
+ {\gztfiledate}
+ {\gztfileversion}
{
SMF~class~for~the~French~journal^^J
"La~Gazette~des~Math'ematiciens".
~(Author~version.)
}
\NeedsTeXFormat{LaTeX2e}
+\bool_new:N \g__gzt_moral_report_bool
\bool_new:N \g__gzt_special_edition_bool
\bool_new:N \g__gzt_for_authors_bool
\bool_new:N \g__gzt_for_printer_bool
@@ -78,6 +81,43 @@
\bool_new:N \g__gzt_no_inside_backcover_bool
\bool_gset_true:N \g__gzt_for_authors_bool%
\bool_gset_true:N \g__gzt_inside_pages_bool%
+\tl_gset:Nn \g__gzt_moral_report_common_option_tl {%
+ \AddToHook{begindocument/before} {%
+ \bool_gset_true:N \g__gzt_moral_report_bool
+ \bool_gset_true:N \g__gzt_frontcover_without_minitoc_bool
+ \title[short={\bfseries\c__gzt_moralreport_rubric_string_tl}]{}
+ \tl_gset:Nn \g__gzt_rubric_title_tl {\c__gzt_moralreport_rubric_string_tl}
+ }
+}
+\keys_define:nn { gztarticle }
+{
+ editorial .code:n = {%
+ \AddToHook{begindocument}{%
+ \__gzt_before_display_editorial:n {}%
+ }
+ \AddToHook{enddocument}{%
+ \__gzt_after_display_editorial: {}%
+ }
+ },%
+ presidentmessage .code:n = {%
+ \AddToHook{begindocument}{%
+ \__gzt_before_display_presidentmessage: {}%
+ }
+ \AddToHook{enddocument}{%
+ \__gzt_after_display_presidentmessage: {}%
+ }
+ },%
+ moralreport .code:n = {
+ \g__gzt_moral_report_common_option_tl
+ \keys_set:nn { gztarticle / moralreport } {#1}
+ },
+ moralreport / title .code:n = {%
+ \tl_gset:Nn \g__gzt_moral_report_title_tl {#1}
+ },%
+ moralreport / short~title .code:n = {%
+ \tl_gset:Nn \g__gzt_moral_report_short_title_tl {#1}
+ },%
+}%
\PassOptionsToClass{openany,english,french}{book}
\LoadClass { book }
\PassOptionsToPackage{table,cmyk}{xcolor}%
@@ -124,7 +164,6 @@
\RequirePackage{mathtools}
\RequirePackage{rsfso}
\RequirePackage{esvect}
-\RequirePackage{everypage}
\RequirePackage{translator}%
\RequirePackage{geometry}
\RequirePackage{babel}%
@@ -203,7 +242,7 @@
\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}
-\AtEndPreamble{
+\AddToHook{begindocument/before}{
\bool_if:NTF {\g__gzt_special_edition_bool} {
\tl_const:Nn \c__gzt_editorial_heading_string_tl {Avant-propos}
}{
@@ -219,7 +258,7 @@
\tl_const:Nn \c__gzt_special_edition_string_tl {\c_space_tl{}sp{\'e}cial}
\tl_const:Nn \c__gzt_long_special_edition_string_tl {Numéro\c__gzt_special_edition_string_tl}%
\tl_const:Nn \c__gzt_short_special_edition_string_tl {\No{}\c__gzt_special_edition_string_tl}%
-\AtEndPreamble{
+\AddToHook{begindocument/before}{
\tl_const:Nn \c__gzt_frontcover_header_string_tl {
\bool_if:NT {\g__gzt_special_edition_bool} {
\text_uppercase:n {\c__gzt_long_special_edition_string_tl}
@@ -239,21 +278,25 @@
}
\clist_const:Nn \c__gzt__graphics_extensions_clist {png,PNG,jpg,JPG,jpeg,JPEG,pdf,PDF}
\tl_const:Nn \c__gzt_pdftitle_string_tl {
- \c__gzt_journal_title_string_tl
- % \c_space_tl
- % \textendash{}
- % \c_space_tl
- % \l__gzt_uppercased_date_format{\displaydate{__gzt_date}}
- \c_space_tl
- \textendash{}
- \c_space_tl
- N°
- \bool_if:NTF {\g__gzt_special_edition_bool} {
- \c__gzt_special_edition_string_tl
- \c_space_tl
- \g__gzt_special_edition_title_tl
+ \bool_if:NTF {\g__gzt_moral_report_bool} {
+ \c__gzt_moralreport_rubric_string_tl
}{
- \int_use:N\g__gzt_issue_number_int
+ \c__gzt_journal_title_string_tl
+ % \c_space_tl
+ % \textendash{}
+ % \c_space_tl
+ % \l__gzt_uppercased_date_format{\displaydate{__gzt_date}}
+ \c_space_tl
+ \textendash{}
+ \c_space_tl
+ N°
+ \bool_if:NTF {\g__gzt_special_edition_bool} {
+ \c__gzt_special_edition_string_tl
+ \c_space_tl
+ \g__gzt_special_edition_title_tl
+ }{
+ \int_use:N\g__gzt_issue_number_int
+ }
}
}
\tl_const:Nn \c__gzt_frontmatter_directory_string_tl {frontmatter}
@@ -328,15 +371,19 @@
\c_space_tl
\textcolor{__gzt_date_color}{
\textendash{}\c_space_tl
- \text_uppercase:n {\c__gzt_journal_short_title_string_tl}
- \bool_if:nF { \g__gzt_inside_frontcover_bool || \g__gzt_backmatter_bool || {\int_compare_p:nNn {\g__gzt_issue_number_int}={0}} }
- {
- \c_space_tl\textendash{}\c_space_tl
- \l__gzt_uppercased_date_format\displaydate{__gzt_date}
- \bool_if:NF {\g__gzt_special_edition_bool} {
- \c_space_tl
- \textendash{}\c_space_tl
- \textcolor{__gzt_smf_number_color}{\No\int_use:N\g__gzt_issue_number_int}
+ \bool_if:NTF {\g__gzt_moral_report_bool} {
+ \text_uppercase:n { \c__gzt_moralreport_rubric_string_tl }
+ }{
+ \text_uppercase:n {\c__gzt_journal_short_title_string_tl}
+ \bool_if:nF { \g__gzt_inside_frontcover_bool || \g__gzt_backmatter_bool || {\int_compare_p:nNn {\g__gzt_issue_number_int}={0}} }
+ {
+ \c_space_tl\textendash{}\c_space_tl
+ \l__gzt_uppercased_date_format\displaydate{__gzt_date}
+ \bool_if:NF {\g__gzt_special_edition_bool} {
+ \c_space_tl
+ \textendash{}\c_space_tl
+ \textcolor{__gzt_smf_number_color}{\No\int_use:N\g__gzt_issue_number_int}
+ }
}
}
}
@@ -350,9 +397,9 @@
\tl_const:Nn \c__gzt_issue_bib_file_string_tl {\c_sys_jobname_str\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}
\bool_if:NTF {\g__gzt_special_edition_bool} {
- \tl_const:Nn \c__gzt_issue_bib_key_tl {\int_use:N \g__gzt_issue_number_int}
-}{
\tl_const:Nn \c__gzt_issue_bib_key_tl {special-edition}
+}{
+ \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 {--}
@@ -870,16 +917,16 @@
\colorlet{__gzt_book_advertisement_bg_color}{white}
\colorlet{__gzt_book_advertisement_frame_color}{__gzt_generic_dark_color}
\colorlet{__gzt_default_cover_color}{white}
-\AtBeginEnvironment{multicols}{
+\AddToHook{env/multicols/begin}{
\bool_gset_true:N \g__gzt_multicols_bool
}
-\AtEndEnvironment{multicols}{
+\AddToHook{env/multicols/end}{
\bool_gset_false:N \g__gzt_multicols_bool
}
-\AtBeginEnvironment{refsection}{
+\AddToHook{env/refsection/begin}{
\bool_gset_true:N \g__gzt_refsection_bool
}
-\AtEndEnvironment{refsection}{
+\AddToHook{env/refsection/end}{
\bool_gset_false:N \g__gzt_refsection_bool
}
\tl_const:Nn \c__gzt_footer_size_font_tl {
@@ -930,28 +977,16 @@
\tl_gset:Nn \g__gzt_pdfauthor_string_tl {
\g__gzt_smf_string_tl
}
-\AtEndPreamble{%
+\AddToHook{begindocument/before}{%
\hypersetup{%
pdftitle=\g__gzt_pdftitle_string_tl,
pdfauthor=\g__gzt_pdfauthor_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{\c__gzt_authors_photos_box_width_dim}p{0.75\linewidth}}
@@ -984,15 +1019,6 @@
\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
@@ -1035,12 +1061,14 @@
\cs_new_protected:Nn \__gzt_display_academic_signature:n
{
\bigskip
+ \begin{__gzt_minibiographies_acknowledgements_tcbox}
#1
+ \end{__gzt_minibiographies_acknowledgements_tcbox}
}
\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_firstlastname_tl=first-last-name%
,\l__gzt_people_affiliation_tl=affiliation%
,\l__gzt_people_email_tl=email%
,\l__gzt_people_minibio_tl=minibio%
@@ -1062,26 +1090,29 @@
\newline%
\href{mailto:\l__gzt_people_email_tl}{\nolinkurl{\l__gzt_people_email_tl}}%
}
- \DTLiflastrow{%
- }{%
- \medskip%
- }
+ \medskip%
}{
\tl_if_in:NnTF \l__gzt_people_role_tl { author } {
- \footnotesize%
- % \noindent%
- \dim_set:Nn \l__gzt_minibio_width_dim {\linewidth-1em - \c__gzt_authors_photos_box_width_dim}
- \tl_if_empty:NTF \l__gzt_people_photo_tl
- {%
- \dim_add:Nn \l__gzt_minibio_width_dim {\c__gzt_authors_photos_box_width_dim}
- }{%
- \begin{adjustbox}{valign=t,minipage=\c__gzt_authors_photos_box_width_dim}
- \includegraphics[width=\c__gzt_authors_photos_width_dim]{\l__gzt_people_photo_tl}
- \end{adjustbox}%
- \quad%
- }
- \begin{adjustbox}{valign=t,minipage=\l__gzt_minibio_width_dim}
- \begin{description}[leftmargin=1em,style=nextline]
+ \tl_if_empty:NF \l__gzt_firstlastname_tl {
+ \footnotesize%
+ % \noindent%
+ \DTLiffirstrow{%
+ }{
+ \DTLpar%
+ \medskip%
+ }
+ \dim_set:Nn \l__gzt_minibio_width_dim {\linewidth-1em - \c__gzt_authors_photos_box_width_dim}
+ \tl_if_empty:NTF \l__gzt_people_photo_tl
+ {%
+ \dim_add:Nn \l__gzt_minibio_width_dim {\c__gzt_authors_photos_box_width_dim}
+ }{%
+ \begin{adjustbox}{valign=t,minipage=\c__gzt_authors_photos_box_width_dim}
+ \includegraphics[width=\c__gzt_authors_photos_width_dim]{\l__gzt_people_photo_tl}
+ \end{adjustbox}%
+ \quad%
+ }
+ \begin{adjustbox}{valign=t,minipage=\l__gzt_minibio_width_dim}
+ \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}%
@@ -1112,10 +1143,6 @@
}
\end{description}
\end{adjustbox}
- \DTLiflastrow{%
- }{
- \DTLpar%
- \medskip%
}
}{
\__gzt_citeauthor_no_firstinits:n {\c__gzt_issue_bib_key_tl -#1-
@@ -1300,7 +1327,7 @@
\bool_if:NT {\g__gzt_credit_frontcover_bool} {
\c_space_tl(\c__gzt_credit_frontcover_string_tl{}~:~%
\DTLforeach*[\DTLiseq{\l__gzt_people_role_tl}{frontcovercredit}]{people}{%
- \l__gzt_firstlastname=first-last-name%
+ \l__gzt_firstlastname_tl=first-last-name%
,\l__gzt_people_role_tl=role%
}{%
\__gzt_citeauthor_no_firstinits:n
@@ -1468,6 +1495,11 @@
\bool_gset_true:N \g__gzt_frontcover_without_minitoc_bool
\keys_set:nn { gzt/specialedition } {#1}
}
+\NewDocumentCommand \moralreportsetup { m } {
+ \bool_gset_true:N \g__gzt_moral_report_bool
+ \bool_gset_true:N \g__gzt_frontcover_without_minitoc_bool
+ \keys_set:nn { gzt/moralreport } {#1}
+}
\NewDocumentCommand \journalsetup { m } {
\keys_set:nn { gzt/journalsetup } { #1 }
}
@@ -1531,7 +1563,7 @@
\newdateformat{l__gzt_uppercased_date_format}{
\__gzt_uppercased_monthname_french:n {\THEMONTH}~\THEYEAR
}
-\AtBeginDocument{%
+\AddToHook{begindocument}{%
\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-
@@ -1629,10 +1661,30 @@
\SetParskip{\c__gzt_mainmatter_parskip_skip}
\pagestyle{__gzt_mainmatter_ps}%
}
-\tl_new:N \g__gzt_article_acknowledgements_tl%
+\tl_new:N \l__gzt_article_acknowledgements_tl%
\cs_new_protected:Nn \__gzt_article_acknowledgements:n
{
- \tl_gset:Nn \g__gzt_article_acknowledgements_tl { #1 }
+ \tl_set:Nn \l__gzt_article_acknowledgements_tl { #1 }
+}
+\cs_new_protected:Nn \__gzt_display_localtoc:
+{
+ \etocsettocstyle{\section*{\contentsname}}{}%
+ \etocsetstyle {section}
+ {}
+ {\leavevmode\leftskip 0cm\relax}
+ {\bfseries\normalsize\makebox[.6cm][l]{\etocnumber}%
+ \etocname\nobreak\hfill\nobreak%
+ \makebox[.5cm][r]{%
+ \etocpage%
+ }%
+ \par%
+ }
+ {\medskip}
+ \localtableofcontentswithrelativedepth{+1}
+}
+\NewDocumentCommand \gztlocaltableofcontents {}
+{
+ \__gzt_display_localtoc: {}
}
\tl_new:N \g__gzt_article_bib_key_tl%
\tl_new:N \l__gzt_people_first_last_names_tl
@@ -1964,7 +2016,7 @@
}
}
\file_if_exist:nT { \c__gzt_acronyms_file_string_tl } {%
- \AtEndPreamble{\loadglsentries{\c__gzt_acronyms_file_string_tl}}
+ \AddToHook{begindocument/before}{\loadglsentries{\c__gzt_acronyms_file_string_tl}}
}
\tl_new:N \g__gzt_boxed_issue_number_tl%
\tl_gset:Nn \g__gzt_boxed_issue_number_tl {%
@@ -2056,7 +2108,7 @@
\__gzt_citeauthor_no_firstinits:n {\c__gzt_issue_bib_key_tl -editorinchief- 1}
}{
\DTLforeach*[\DTLiseq{\l__gzt_people_role_tl}{editorinchief}]{people}{%
- \l__gzt_firstlastname=first-last-name%
+ \l__gzt_firstlastname_tl=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}%
@@ -2074,7 +2126,7 @@
}
\__gzt_after_display_editorial: {}
}
-\AtEndPreamble{%
+\AddToHook{begindocument/before}{%
\tl_set_eq:NN \g__gzt_editorial_heading_tl \c__gzt_editorial_heading_string_tl
\bool_if:NT {\g__gzt_special_edition_bool} {
\tl_if_empty:NF \g__gzt_special_edition_editorial_heading_tl {%
@@ -2156,7 +2208,7 @@
{}
{\c_zero_dim}
{}
-\AtBeginDocument{%
+\AddToHook{begindocument}{%
\graphicspath{{\c__gzt_issue_images_path_string_tl//}{../\c__gzt_issue_images_path_string_tl//}}
% \glsdisablehyper
\g__gzt_mainmatter_switch_tl
@@ -2299,7 +2351,7 @@
}%
{\c__gzt_footer_size_font_tl\thepage}%
}%
-\AddEverypageHook{%
+\AddToHook{shipout/background}{
\bool_if:NF {\g__gzt_advertisement_bool} {
\tikz[remember~picture,overlay] { \g__gzt_background_footer_tl }%
}%
@@ -2366,26 +2418,23 @@
\FloatBarrier%
\begin{__gzt_minibiographies_acknowledgements_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
+ \DTLsavelastrowcount{\__gzt_authors_number}
+ \tl_if_empty:NF \l__gzt_article_acknowledgements_tl
{%
- \par%
- \bigskip%
+ \footnotesize
+ \int_compare:nNnT {\__gzt_authors_number}>{0}
+ {
+ \par%
+ \bigskip%
+ }
\begin{adjustbox}{valign=t,minipage=\linewidth}
\color{__gzt_acknowledgements_color}%
- \g__gzt_article_acknowledgements_tl
+ \setlength{\parskip}{\c__gzt_mainmatter_parskip_skip}
+ \l__gzt_article_acknowledgements_tl
\end{adjustbox}
- }
+ }
+ \bool_gset_true:N \g__gzt_previous_article_with_bibliography_or_minibio_bool
\end{__gzt_minibiographies_acknowledgements_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
@@ -2624,7 +2673,7 @@
inputencoding=utf8/latin1
}%
\DeclareTotalTCBox{\gztverb}{ v }{verbatim,blank,fuzzy~halo=0pt~with~__gzt_light_generic_dark_color!8}{#1}
-\NewTCBListing{gztcode}{ O{} }{%
+\NewTCBListing{gztcode}{ !O{} }{%
listing~style=__gzt_lst_style,
listing~only,
enlarge~top~by=\medskipamount,
@@ -2766,27 +2815,8 @@
\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:n {}%
- }
- \AtEndDocument{%
- \__gzt_after_display_editorial: {}%
- }
- },%
- presidentmessage .code:n = {%
- \AtBeginDocument{%
- \__gzt_before_display_presidentmessage: {}%
- }
- \AtEndDocument{%
- \__gzt_after_display_presidentmessage: {}%
- }
- },%
-}%
\ProcessKeysOptions { gztarticle }
-\AtEndDocument{%
+\AddToHook{enddocument}{%
\bool_if:NT {\g__gzt_multicols_bool} {
\end{multicols}%
}
@@ -2962,7 +2992,7 @@
enlarge~left~by=\c__gzt_inside_cover_offset_dim,
}
}
-\AtEndPreamble{%
+\AddToHook{begindocument/before}{%
\bool_if:NTF {\g__gzt_special_edition_bool} {
\tcbset{
__gzt_tcb_inside_frontcover_style/.append~style={%
@@ -3084,7 +3114,7 @@
\tl_clear:N \l__gzt_newtheorem_frenchtitle_tl
\tl_clear:N \l__gzt_newtheorem_englishtitle_tl
\tl_set:Nn \l__gzt_newtheorem_englishtitle_tl {
- \text_uppercase:n {#2}
+ \text_titlecase:n {#2}
}
\tl_set:Nf \l__gzt_newtheorem_frenchtitle_tl {
\l__gzt_newtheorem_englishtitle_tl