summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/gzt
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/gzt
Initial commit
Diffstat (limited to 'macros/latex/contrib/gzt')
-rw-r--r--macros/latex/contrib/gzt/README.md81
-rw-r--r--macros/latex/contrib/gzt/doc/README-TRANSLATION.md4
-rw-r--r--macros/latex/contrib/gzt/doc/gzt-fr.pdfbin0 -> 524933 bytes
-rw-r--r--macros/latex/contrib/gzt/source/gzt.dtx7479
4 files changed, 7564 insertions, 0 deletions
diff --git a/macros/latex/contrib/gzt/README.md b/macros/latex/contrib/gzt/README.md
new file mode 100644
index 0000000000..ce09c745a2
--- /dev/null
+++ b/macros/latex/contrib/gzt/README.md
@@ -0,0 +1,81 @@
+# Overview
+
+The purpose of the current LaTeX bundle, `gzt`, is to provide two classes and
+`biblatex styles` for
+the French journal
+["La Gazette des Mathématiciens"](http://smf4.emath.fr/Publications/Gazette/):
+
+- `gzt` for the complete issues of the journal, aimed for the Gazette's team,
+- `gztarticle`, intended for the authors who wish to publish an article in the
+ Gazette. This class goal is to:
+ - faithfully reproduce the layout of the Gazette, thus enabling the authors
+ to be able to work their document in actual conditions,
+ - provide a number of tools (commands and environments) to facilitate the
+ drafting of documents, in particular those containing mathematical
+ formulas.
+
+# Copyright and Licence
+
+## Author
+
+Denis Bitouzé
+
+## Release
+
+2018/04/07 v0.98
+
+## Copyright
+
+Copyright 2014-2018 Denis Bitouzé
+
+## Licence
+
+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 the license is in http://www.latex-project.org/lppl.txt
+and version 1.3 or later is part of all distributions of LaTeX version
+2003/06/01 or later.
+
+This work has the LPPL maintenance status "maintained".
+
+#Installation
+
+- `gzt` is bundled with the main TeX distributions TeX Live (and its
+ variants) and MiKTeX.
+- `gzt` starts life on [Github](https://github.com/dbitouze/gzt) where
+ you can always find development releases.
+- The latest official release is put onto [CTAN](http://ctan.org/pkg/gzt)
+ but users can get the latest stable version by updating their TeX
+ distributions (upgrading if necessary for TeX Live).
+
+#Help
+
+## Documentation
+
+`gzt` is provided with an extensive documentation (in French) in the
+`doc/latex/gzt/french/` directory in the distribution, also
+available
+[on CTAN](http://mirrors.ctan.org/macros/latex/contrib/gzt/doc/gzt-fr.pdf).
+
+## Templates and samples
+
+`gzt` comes with a template attached to the documentation above.
+
+## Questions and answers
+
+Users can ask questions about `gzt` e.g. on Q & A sites:
+
+- [in French](http://texnique.fr/osqa/tags/gzt/)
+- [in English](http://tex.stackexchange.com/questions/tagged/gzt)
+
+# Debug and feature requests
+
+Suggestions and bug reports are welcome.
+
+- Go to the Github [issues page](https://github.com/dbitouze/gzt/issues/).
+- If not already reported, [open an issue](https://github.com/dbitouze/gzt/issues/new/).
+- Add
+ a [minimal working example](http://www.tex.ac.uk/cgi-bin/texfaq2html?label=minxampl) if
+ possible. This helps a great deal facilitate a swift response.
diff --git a/macros/latex/contrib/gzt/doc/README-TRANSLATION.md b/macros/latex/contrib/gzt/doc/README-TRANSLATION.md
new file mode 100644
index 0000000000..b8709820a3
--- /dev/null
+++ b/macros/latex/contrib/gzt/doc/README-TRANSLATION.md
@@ -0,0 +1,4 @@
+# Contributions welcome!
+
+Currently, the `gzt` documentation is not translated in English. In case you're
+interested, please contact the maintainer: `denis.bitouze@univ-littoral.fr`
diff --git a/macros/latex/contrib/gzt/doc/gzt-fr.pdf b/macros/latex/contrib/gzt/doc/gzt-fr.pdf
new file mode 100644
index 0000000000..d651976a7b
--- /dev/null
+++ b/macros/latex/contrib/gzt/doc/gzt-fr.pdf
Binary files differ
diff --git a/macros/latex/contrib/gzt/source/gzt.dtx b/macros/latex/contrib/gzt/source/gzt.dtx
new file mode 100644
index 0000000000..45df0e4da4
--- /dev/null
+++ b/macros/latex/contrib/gzt/source/gzt.dtx
@@ -0,0 +1,7479 @@
+% \iffalse meta-comment
+%
+% File: gzt.dtx Copyright (C) 2014-2018 by
+% Denis Bitouz'e <denis.bitouze@univ-littoral.fr>
+%
+% 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
+%</internal>
+%<*readme>
+# Overview
+
+The purpose of the current LaTeX bundle, `gzt`, is to provide two classes and
+`biblatex styles` for
+the French journal
+["La Gazette des Mathématiciens"](http://smf4.emath.fr/Publications/Gazette/):
+
+- `gzt` for the complete issues of the journal, aimed for the Gazette's team,
+- `gztarticle`, intended for the authors who wish to publish an article in the
+ Gazette. This class goal is to:
+ - faithfully reproduce the layout of the Gazette, thus enabling the authors
+ to be able to work their document in actual conditions,
+ - provide a number of tools (commands and environments) to facilitate the
+ drafting of documents, in particular those containing mathematical
+ formulas.
+
+# Copyright and Licence
+
+## Author
+
+Denis Bitouzé
+
+## Release
+
+2018/04/07 v0.98
+
+## Copyright
+
+Copyright 2014-2018 Denis Bitouzé
+
+## Licence
+
+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 the license is in http://www.latex-project.org/lppl.txt
+and version 1.3 or later is part of all distributions of LaTeX version
+2003/06/01 or later.
+
+This work has the LPPL maintenance status "maintained".
+
+#Installation
+
+- `gzt` is bundled with the main TeX distributions TeX Live (and its
+ variants) and MiKTeX.
+- `gzt` starts life on [Github](https://github.com/dbitouze/gzt) where
+ you can always find development releases.
+- The latest official release is put onto [CTAN](http://ctan.org/pkg/gzt)
+ but users can get the latest stable version by updating their TeX
+ distributions (upgrading if necessary for TeX Live).
+
+#Help
+
+## Documentation
+
+`gzt` is provided with an extensive documentation (in French) in the
+`doc/latex/gzt/french/` directory in the distribution, also
+available
+[on CTAN](http://mirrors.ctan.org/macros/latex/contrib/gzt/doc/gzt-fr.pdf).
+
+## Templates and samples
+
+`gzt` comes with a template attached to the documentation above.
+
+## Questions and answers
+
+Users can ask questions about `gzt` e.g. on Q & A sites:
+
+- [in French](http://texnique.fr/osqa/tags/gzt/)
+- [in English](http://tex.stackexchange.com/questions/tagged/gzt)
+
+# Debug and feature requests
+
+Suggestions and bug reports are welcome.
+
+- Go to the Github [issues page](https://github.com/dbitouze/gzt/issues/).
+- If not already reported, [open an issue](https://github.com/dbitouze/gzt/issues/new/).
+- Add
+ a [minimal working example](http://www.tex.ac.uk/cgi-bin/texfaq2html?label=minxampl) if
+ possible. This helps a great deal facilitate a swift response.
+%</readme>
+%<*internal>
+\fi
+\def\nameofplainTeX{plain}
+\ifx\fmtname\nameofplainTeX\else
+ \expandafter\begingroup
+\fi
+%</internal>
+%<*install>
+\input l3docstrip.tex
+% \input docstrip.tex
+\Msg{********************************************************}
+\Msg{* Installation}
+\Msg{* Class: gzt 2018/04/07 v0.98}
+\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.98
+
+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
+-----------------------------------------------------------------------------
+\endpreamble
+\postamble
+% Copyright (C) 2014-2017 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.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{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}}
+}%
+\usedir{tex/latex/\GZT@classname/images}
+\generate{%
+ \nopreamble\nopostamble
+ \file{README-PICTOGRAMS.md}{\from{\jobname.dtx}{readme-pictograms}}
+}%
+%</install>
+%<install>\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}}%
+}%
+\usedir{doc/latex/\GZT@classname}
+\generate{
+ \nopreamble\nopostamble
+ \file{README.md}{\from{\jobname.dtx}{readme}}
+}%
+\usedir{doc/latex/\GZT@classname/french}
+\generate{
+ \nopreamble\nopostamble
+ \file{latexmkrc}{\from{\jobname.dtx}{latexmkrc}}
+}%
+% \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
+%</internal>
+%
+% \changes{v0.9}{2015/05/02}{First CTAN version}%
+% \changes{v0.95}{2016/04/03}{Second CTAN version}%
+% \changes{v0.95a}{2016/10/24}{Third CTAN version}%
+% \changes{v0.95b}{2016/10/24}{Fourth CTAN version}%
+% \changes{v0.96}{2017/01/01}{Fifth CTAN version}%
+% \changes{v0.97}{2017/02/15}{Sixth CTAN version}%
+% \changes{v0.98}{2018/04/07}{Seventh CTAN version. Implementation of special
+% editions.}%
+%
+% \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}
+%</class-logo>
+% \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}
+%</languagemodel>
+% \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}
+%
+% We create some new fields 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}
+\DeclareDatamodelFields[type=field, datatype=verbatim]{thumbnail}
+\DeclareDatamodelEntryfields[bookadvertisement]{
+ publicprice,
+ smfprice,
+ frenchabstract,
+ englishabstract,
+ copublisher,
+ thumbnail
+}
+% \end{macrocode}
+%
+% Then, we create the new bibliography driver "bookadvertisement" (that seems to
+% create the corresponding new entry).
+% \begin{macrocode}
+\newcommand*{\insertbibimage}[1]{\includegraphics[width=45mm]{#1}}
+\DeclareBibliographyDriver{bookadvertisement}{%
+ \begin{tcolorbox}[
+ lefthand width=47.5mm
+ ,sidebyside
+ ,colback=white
+ ,fontlower=\large
+ ,flushleft lower
+ ,boxrule=0mm
+ ,frame hidden%
+ ,leftright skip=0mm
+ ,before skip=0mm
+ ,lower separated=false
+ ]
+ \iffieldundef{thumbnail}
+ {}
+ {
+ \usefield{\insertbibimage}{thumbnail}
+ }
+ \tcblower
+ \xpatchfieldformat{title}{mkbibemph}{textbf}{}{}%
+ \def\abx@str{abx@lstr}%
+ \noindent
+ \usebibmacro{bibindex}%
+ \usebibmacro{begentry}%
+ \textbf{\printfield{series}}%
+ % \usebibmacro{series+number}%
+ \bigskip\newline\nopunct\newblock
+ {%
+ \Large%
+ \printfield{title}%
+ \newunit\newblock
+ }%
+ \iffieldundef{volume}
+ {}%
+ {\textbf{\printfield{volume}}}
+ \iffieldundef{titleaddon}
+ {}%
+ {%
+ \newline\nopunct\newblock
+ \textbf{\printfield{titleaddon}}%
+ }
+ \iffieldundef{subtitle}
+ {}%
+ {%
+ \newline\nopunct\newblock
+ \printfield{subtitle}%
+ }
+ \newline\nopunct\newblock
+ \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}%
+ \iftoggle{bbx:isbn}
+ {%
+ \newline\nopunct\newblock
+ \printfield{isbn}
+ }
+ {}%
+ \newunit\newblock
+ \usebibmacro{doi+eprint+url}%
+ \newunit\newblock
+ \usebibmacro{addendum+pubstate}%
+ \setunit{\bibpagerefpunct}\newblock
+ \usebibmacro{pageref}%
+ \def\abx@str{abx@sstr}%
+ \end{tcolorbox}
+ \iflistundef{copublisher}
+ {}%
+ {%
+ \bigskip
+ % \newline\nopunct\newblock%
+ \normalsize
+ Publi\'e avec le concours de : \printlist{copublisher}%
+ \par
+ }
+ \iffieldundef{frenchabstract}
+ {}%
+ {%
+ \bigskip
+ \printfield{frenchabstract}%
+ \par
+ \medskip
+ %
+ \begin{center}
+ Prix~public~:\c_space_tl
+ \EUR{\printfield{publicprice}}
+ \c_space_tl\textendash\c_space_tl Prix~membre~\smf{}~:\c_space_tl
+ \EUR{\printfield{smfprice}}
+ \c_space_tl\textendash\c_space_tl Frais~de~port~non~compris
+ \end{center}
+ }
+ \iffieldundef{englishabstract}
+ {}%
+ {%
+ \par
+ \bigskip
+ \begin{otherlanguage}{english}
+ \itshape
+ \printfield{englishabstract}%
+ %
+ \par
+ \medskip
+ %
+ \begin{center}
+ Public~price:\c_space_tl
+ \EUR{\printfield{publicprice}}
+ \c_space_tl\textendash\c_space_tl \smf{}~member~price:\c_space_tl
+ \EUR{\printfield{smfprice}}
+ \c_space_tl\textendash\c_space_tl Shipping~costs~not~included
+ \end{center}
+ \end{otherlanguage}
+ }
+ \usebibmacro{finentry}
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</datamodel>
+% \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}
+%</class>
+% \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}
+%
+% 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}
+%
+% 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
+%<class> {gzt}
+%<class-article> {gztarticle}
+ {2018/04/07}
+ {0.98}
+ {
+ SMF~class~for~the~French~journal^^J
+ "La~Gazette~des~Math'ematiciens".
+%<class-article>~(Author~version.)
+ }
+% \end{macrocode}
+%
+% The needed \TeX{} format is specified.
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}
+% \end{macrocode}
+%
+% \section{Class loading}
+%
+% \begin{macrocode}
+\bool_new:N \g_@@_special_edition_bool
+\bool_new:N \g_@@_for_authors_bool
+\bool_new:N \g_@@_for_printer_bool
+\bool_new:N \g_@@_cover_bool
+\bool_new:N \g_@@_coverpage_bool
+\bool_new:N \g_@@_inside_pages_bool
+%
+\bool_new:N \g_@@_no_inside_backcover_bool
+%<class-article>\bool_gset_true:N \g_@@_for_authors_bool%
+%<class-article>\bool_gset_true:N \g_@@_inside_pages_bool%
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</class|class-article>
+% \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 (mostly for debugging purpose),
+% \item ...
+% \end{itemize}
+%
+% \begin{macrocode}
+\tl_gset:Nn \g_@@_frontcover_image_file_tl {\c_@@_issue_frontcover_default_image_file_tl}
+\tl_gset:Nn \g_@@_special_edition_color_tl {@@_default_cover_color}
+\clist_new:N \g_@@_special_edition_logos_clist
+%
+\keys_define:nn { gzt }
+{
+ pagegrid .dim_gset:N = \g_@@_pagegrid_dim,
+ pagegrid .default:n = {\c_@@_pagegrid_dim},
+ forauthors .code:n = {%
+ \bool_gset_true:N \g_@@_for_authors_bool%
+ \bool_gset_true:N \g_@@_inside_pages_bool%
+ },%
+ forprinter .bool_gset:N = \g_@@_for_printer_bool,
+ frontcoverimagefile .tl_gset:N = \g_@@_frontcover_image_file_tl,
+ frontcoverimagefile .default:n = {frontcover},
+ output .choice:,
+ output / frontcover .code:n = {%
+ \bool_gset_true:N \g_@@_for_printer_bool%
+ \bool_gset_true:N \g_@@_cover_bool%
+ },%
+ output / coverpage .code:n = {%
+ \bool_gset_true:N \g_@@_coverpage_bool%
+ },%
+ output / insidepages .code:n = {%
+ \bool_gset_true:N \g_@@_for_printer_bool%
+ \bool_gset_true:N \g_@@_inside_pages_bool%
+ },%
+ output / backcover .code:n = {%
+ \bool_gset_true:N \g_@@_for_printer_bool%
+ },%
+ output / web .code:n = {%
+ },%
+ specialedition .code:n = {
+ \bool_gset_true:N \g_@@_special_edition_bool
+ \bool_gset_true:N \g_@@_frontcover_without_minitoc_bool
+ \keys_set:nn { gzt / specialedition } {#1}
+ },
+ specialedition / color .code:n = {%
+ \tl_gset:Nn \g_@@_special_edition_color_tl {#1}
+ },%
+ specialedition / minitoc .code:n = {%
+ \bool_gset_false:N \g_@@_frontcover_without_minitoc_bool
+ },%
+ specialedition / logos .code:n = {%
+ \clist_gset:Nn \g_@@_special_edition_logos_clist {#1}
+ },%
+ specialedition / backcover~image .code:n = {%
+ \tl_gset:Nn \g_@@_special_edition_backcover_image_tl {#1}
+ },%
+ specialedition / title .code:n = {%
+ \tl_gset:Nn \g_@@_special_edition_title_tl {#1}
+ },%
+ specialedition / short~title .code:n = {%
+ \tl_gset:Nn \g_@@_special_edition_short_title_tl {#1}
+ },%
+ specialedition / editorial~heading .code:n = {%
+ \tl_gset:Nn \g_@@_special_edition_editorial_heading_tl {#1}
+ },%
+ specialedition / editorial~author .code:n = {%
+ \_@@_people:nnnnnnnn {#1}{}{}{}{}{}{editorinchief}{}
+ },%
+}%
+% \end{macrocode}
+%
+% If we want to disable the inside backcover.
+% \begin{macrocode}
+% \bool_gset_true:N \g_@@_no_inside_backcover_bool
+% \end{macrocode}
+%
+% \begin{macrocode}
+\ProcessKeysOptions { gzt }
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</class>
+% \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}
+\LoadClass { 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 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}
+\sys_if_engine_pdftex: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}
+%<class>\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}
+%<class>\bool_if:nT { \g_@@_for_authors_bool } {
+%<class> \RequirePackage{draftwatermark}[2006/06/30]%
+%<class>}
+% \end{macrocode}
+%
+% \item Graphics package-alike macros for \enquote{general} boxes:
+% \begin{macrocode}
+\RequirePackage{adjustbox}%
+% \end{macrocode}
+%
+% \item Packages and image files for MWEs (used in case of missing pictograms):
+% \begin{macrocode}
+\RequirePackage{mwe}
+% \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 Reference last page number (which is generally different from the total
+% number of pages in the document):
+% \begin{macrocode}
+%<class>\RequirePackage{lastpage}
+% \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[backend=biber,datamodel=gzt,defernumbers=true,autolang=other]{biblatex}%
+\@ifpackagelater{biblatex}{2016/01/01}{%
+ \ExecuteBibliographyOptions{giveninits}
+}{
+ \ExecuteBibliographyOptions{firstinits}
+}
+% \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{rsfso}
+% \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}
+%<class>\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 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}
+%<class|class-article>\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 Print page grid in background:
+% \begin{macrocode}
+%<class>\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}
+%<class|class-article>\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
+\setglossarystyle{indexhypergroup}
+\setacronymstyle{long-sc-short}
+% \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}
+\sys_if_engine_pdftex: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=<number>',
+ ~otherwise~`<number>'~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.}
+%<class>\msg_new:nnnn{gzt}{configuration-file-missing}{File~`\c_@@_configuration_file_string_tl'~missing!}
+%<class> {The~ whole~ issue~ may~ not~ be~ conform~ if~ `\c_@@_configuration_file_string_tl'~ is~ missing.}
+%<class>\msg_new:nnnn{gzt}{editorial-file-missing}{File~`\c_@@_editorial_file_string_tl'~missing!}
+%<class> {The~ whole~ issue~ requires~ the~ `\c_@@_editorial_file_string_tl'~ file.}
+% \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}
+%
+% \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_heading_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_@@_class_name_tl {gzt}
+\tl_const:Nn \c_@@_article_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 board of special_edition.
+% \begin{macrocode}
+\tl_const:Nn \c_@@_special_edition_editorial_board_string_tl {Num\'ero~sp\'ecial~de~la~Gazette~des~Math\'ematiciens~sous~la~direction~de~:}
+% \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}
+\AtEndPreamble{
+ \bool_if:NTF {\g_@@_special_edition_bool} {
+ \tl_const:Nn \c_@@_editorial_heading_string_tl {Avant-propos}
+ }{
+ \tl_const:Nn \c_@@_editorial_heading_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~\g_@@_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 special editions.
+% \begin{macrocode}
+\tl_const:Nn \c_@@_special_edition_string_tl {\c_space_tl{}sp{\'e}cial}
+\tl_const:Nn \c_@@_long_special_edition_string_tl {Numéro\c_@@_special_edition_string_tl}%
+\tl_const:Nn \c_@@_short_special_edition_string_tl {\No{}\c_@@_special_edition_string_tl}%
+% \end{macrocode}
+% For the front cover header text.
+% \begin{macrocode}
+\AtEndPreamble{
+ \tl_const:Nn \c_@@_frontcover_header_string_tl {
+ \bool_if:NT {\g_@@_special_edition_bool} {
+ \tl_upper_case:n {\c_@@_long_special_edition_string_tl}
+ \medskip
+ \par
+ \normalsize
+ }
+ \l_@@_uppercased_date_format\displaydate{@@_date}
+ \bool_if:NF {\g_@@_special_edition_bool} {
+ \c_space_tl
+ \textendash{}
+ \c_space_tl
+ \No
+ \int_use:N\g_@@_issue_number_int%
+ }
+ }
+}
+% \end{macrocode}
+% For the graphics extensions.
+% \begin{macrocode}
+\clist_const:Nn \c_@@__graphics_extensions_clist {png,PNG,jpg,JPG,jpeg,JPEG,pdf,PDF}
+% \end{macrocode}
+% 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
+ }{
+ \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_default_image_file_tl {frontcover}
+% \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 the name of the file containing the text of the special issue's abstract back cover.
+% \begin{macrocode}
+\tl_const:Nn \c_@@_special_edition_backcover_text_file_string_tl {abstract_backcover}
+\tl_const:Nn \c_@@_special_edition_backcover_page_file_string_tl {\c_@@_backmatter_directory_string_tl/\c_@@_special_edition_backcover_text_file_string_tl}
+% \end{macrocode}
+% For the name of the file of the special issue's picture back cover.
+% \begin{macrocode}
+\tl_const:Nn \c_@@_special_edition_backcover_picture_string_tl {picture_backcover}
+\tl_const:Nn \c_@@_special_edition_backcover_page_picture_string_tl {\c_@@_backmatter_directory_string_tl/\c_@@_special_edition_backcover_picture_string_tl}
+% \end{macrocode}
+% For the name of the file containing the acronyms.
+% \begin{macrocode}
+\tl_const:Nn \c_@@_acronyms_file_string_tl {\c_@@_class_name_tl acronyms}
+% \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_sys_jobname_str.\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 {...\c_space_tl}
+% \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 {\c_space_tl\textendash}
+% \end{macrocode}
+% Names of the pictogram files.
+% \begin{macrocode}
+\tl_const:Nn \c_@@_mathematics_pictogram_file_name_tl {picto-mathematics}
+\tl_const:Nn \c_@@_dossier_pictogram_file_name_tl {picto-dossier}
+\tl_const:Nn \c_@@_community_pictogram_file_name_tl {picto-hands}
+\tl_const:Nn \c_@@_interview_pictogram_file_name_tl {picto-interview}
+\tl_const:Nn \c_@@_teaching_pictogram_file_name_tl {picto-teaching}
+\tl_const:Nn \c_@@_parity_pictogram_file_name_tl {picto-parity}
+\tl_const:Nn \c_@@_tellme_pictogram_file_name_tl {picto-tellme}
+\tl_const:Nn \c_@@_information_pictogram_file_name_tl {picto-information}
+\tl_const:Nn \c_@@_rearviewmirror_pictogram_file_name_tl {picto-rearviewmirror}
+\tl_const:Nn \c_@@_tribute_pictogram_file_name_tl {picto-tribute}
+\tl_const:Nn \c_@@_books_pictogram_file_name_tl {picto-books}
+\tl_const:Nn \c_@@_forum_pictogram_file_name_tl {picto-forum}
+% \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_@@_forum_rubric_string_tl {Tribune~libre}
+\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}
+\tl_const:Nn \c_@@_moralreport_rubric_string_tl {Rapport~moral}
+% \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}{\MakeTextUppercase{\c_@@_smf_short_string_tl}}
+ \c_space_tl
+ \textcolor{@@_date_color}{
+ \textendash{}\c_space_tl
+ \MakeTextUppercase{\c_@@_journal_short_title_string_tl}
+%<class> \bool_if:nF { \g_@@_inside_frontcover_bool || \g_@@_backmatter_bool || \g_@@_for_authors_bool }
+%<class> {
+%<class> \c_space_tl\textendash{}\c_space_tl
+%<class> \l_@@_uppercased_date_format\displaydate{@@_date}
+%<class> \bool_if:NF {\g_@@_special_edition_bool} {
+%<class> \c_space_tl
+%<class> \textendash{}\c_space_tl
+%<class> \textcolor{@@_smf_number_color}{\No\int_use:N\g_@@_issue_number_int}
+%<class> }
+%<class> }
+ }
+}
+% \end{macrocode}
+% For the name of the file containing the \textsc{smf} logo.
+% \begin{macrocode}
+ \file_if_exist:nTF { logo_SMF.pdf }{%
+ \tl_const:Nn \c_@@_smf_logo_file_string_tl {logo_SMF}
+ }{
+ \tl_const:Nn \c_@@_smf_logo_file_string_tl {example-image}
+ }
+% \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_sys_jobname_str.bib}
+\tl_const:Nn \c_@@_issue_bib_file_suffix_string_tl {@@}
+\tl_const:Nn \c_@@_issue_bib_file_string_tl {\c_sys_jobname_str\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}
+\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}
+}
+% \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}
+% For the text accompagnying the date displayed in the footer of the authors' versions.
+% \begin{macrocode}
+\tl_const:Nn \c_@@_compiled_string_tl {
+ \IfLanguageName{french}{
+ Compil\'e~le~
+ }{
+ Compiled~on~
+ }
+}
+% \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
+\bool_new:N \g_@@_frontcover_without_minitoc_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 first declare the default page layout constant dimensions.
+% \begin{macrocode}
+\dim_const:Nn \c_@@_layoutheight_dim { 270mm}
+\dim_const:Nn \c_@@_layoutwidth_dim { 210mm}
+% \end{macrocode}
+%
+% We define a \enquote{printer} layout offset dimension
+% "\c_@@_printer_layoutoffset_dim", fixed by the printer to be \SI{5}{\mm}.
+% \begin{macrocode}
+\dim_const:Nn \c_@@_printer_layoutoffset_dim { 5mm}
+% \end{macrocode}
+%
+% We define a \enquote{potential} layout offset dimension which is non-zero (and
+% the equal to \enquote{printer} layout offset dimension) iff the output is
+% prepared for the printer ("\g_@@_for_printer_bool" flag equals true).
+% \begin{macrocode}
+\bool_if:NTF {\g_@@_for_printer_bool} {
+ \dim_const:Nn \c_@@_potential_layoutoffset_dim { \c_@@_printer_layoutoffset_dim}
+}{
+ \dim_const:Nn \c_@@_potential_layoutoffset_dim {\c_zero_dim}
+}
+% \end{macrocode}
+%
+% We define a \enquote{printer} binding dimension
+% "\c_@@_printer_bindingoffset_dim", fixed by the printer to have different
+% values depending on some total pages thresholds. If the binding dimension is
+% denoted by $b$ (and expressed in millimeters) and the total page number of the
+% document\footnote{Except cover pages, that is the \enquote{real} total page
+% number minus $4$.} is denoted by $N$, the thresholds are as follows:
+% \begin{equation}\label{binding}
+% b=
+% \begin{cases}
+% 0 & \text{ si } N < 68 \\
+% 3 & \text{ si } 68\leq N<80 \\
+% 3.5 & \text{ si } 80\leq N<88 \\
+% 3.9 & \text{ si } 88\leq N<96 \\
+% 4.1 & \text{ si } 96\leq N<104 \\
+% 4.5 & \text{ si } 104\leq N<120 \\
+% 5 & \text{ si } N\geq 120
+% \end{cases}
+% \end{equation}
+%
+% We define the thresholds:
+% \begin{macrocode}
+\int_const:Nn \c_@@_thresold_a_int {68}
+\int_const:Nn \c_@@_thresold_b_int {80}
+\int_const:Nn \c_@@_thresold_c_int {88}
+\int_const:Nn \c_@@_thresold_d_int {96}
+\int_const:Nn \c_@@_thresold_e_int {104}
+\int_const:Nn \c_@@_thresold_f_int {120}
+% \end{macrocode}
+% and the corresponding binding dimensions:
+% \begin{macrocode}
+\dim_const:Nn \c_@@_bindingoffset_a_dim {3mm}
+\dim_const:Nn \c_@@_bindingoffset_b_dim {3.5mm}
+\dim_const:Nn \c_@@_bindingoffset_c_dim {3.9mm}
+\dim_const:Nn \c_@@_bindingoffset_d_dim {4.1mm}
+\dim_const:Nn \c_@@_bindingoffset_e_dim {4.5mm}
+\dim_const:Nn \c_@@_bindingoffset_f_dim {5mm}
+% \end{macrocode}
+%
+% In order to know the total pages number of the document (store in
+% "\g_@@_total_page_number_int"), we need first to specify the
+% \enquote{external} document whom \File{.aux} will be read.
+% \begin{macrocode}
+\int_new:N \g_@@_total_pages_number_int%
+\int_new:N \g_@@_total_inside_pages_number_int%
+\zexternaldocument[self]{\jobname}%
+% \end{macrocode}
+%
+% We extract the total pages number thanks to "\zref@extractdefault" from
+% \Package{zref-totpages}.
+% \begin{macrocode}
+\int_gset:Nn \g_@@_total_pages_number_int { \zref@extractdefault{selfLastPage}{abspage}{0} }
+\int_gset:Nn \g_@@_total_inside_pages_number_int { \g_@@_total_pages_number_int - 4 }
+% \end{macrocode}
+%
+% The \enquote{printer} binding dimension is now store in
+% "\c_@@_printer_bindingoffset_dim" following \vref{binding}.
+%
+% \begin{macrocode}
+\int_compare:nNnTF {\g_@@_total_inside_pages_number_int}<{\c_@@_thresold_a_int}
+{
+ \dim_const:Nn \c_@@_printer_bindingoffset_dim { \c_zero_dim }
+}{
+ \int_compare:nNnTF {\g_@@_total_inside_pages_number_int}<{\c_@@_thresold_b_int}
+ {
+ \dim_const:Nn \c_@@_printer_bindingoffset_dim { \c_@@_bindingoffset_a_dim }
+ }{
+ \int_compare:nNnTF {\g_@@_total_inside_pages_number_int}<{\c_@@_thresold_c_int}
+ {
+ \dim_const:Nn \c_@@_printer_bindingoffset_dim { \c_@@_bindingoffset_b_dim }
+ }{
+ \int_compare:nNnTF {\g_@@_total_inside_pages_number_int}<{\c_@@_thresold_d_int}
+ {
+ \dim_const:Nn \c_@@_printer_bindingoffset_dim { \c_@@_bindingoffset_c_dim }
+ }{
+ \int_compare:nNnTF {\g_@@_total_inside_pages_number_int}<{\c_@@_thresold_e_int}
+ {
+ \dim_const:Nn \c_@@_printer_bindingoffset_dim { \c_@@_bindingoffset_d_dim }
+ }{
+ \int_compare:nNnTF {\g_@@_total_inside_pages_number_int}<{\c_@@_thresold_f_int}
+ {
+ \dim_const:Nn \c_@@_printer_bindingoffset_dim { \c_@@_bindingoffset_e_dim }
+ }{
+ \dim_const:Nn \c_@@_printer_bindingoffset_dim { \c_@@_bindingoffset_f_dim }
+ }
+ }
+ }
+ }
+ }
+}
+% \end{macrocode}
+%
+% The binding offset is applied iff the front cover is required ("frontcover"
+% option), which implies the output is prepared for the printer, with non-zero
+% offset ("\g_@@_for_printer_bool" flag equals true).
+% \begin{macrocode}
+\bool_if:NTF {\g_@@_cover_bool} {
+ \dim_const:Nn \c_@@_potential_bindingoffset_dim { \c_@@_printer_bindingoffset_dim }
+}{
+ \dim_const:Nn \c_@@_potential_bindingoffset_dim {\c_zero_dim}
+}
+% \end{macrocode}
+%
+% The paper height is rather simple: it is always the layout height dimension
+% plus 2 times (top and bottom) the layout offset dimension (which turns to be
+% non-zero iff the output is prepared for the printer).
+% \begin{macrocode}
+\dim_const:Nn \c_@@_paperheight_dim { \c_@@_layoutheight_dim+2\c_@@_potential_layoutoffset_dim}
+% \end{macrocode}
+%
+% The paper width is more complicated: it is the layout width dimension plus:
+% \begin{itemize}
+% \item the \enquote{potential} binding offset (which turns to be non-zero iff
+% only the cover page is output),
+% \item the layout offset dimension (which turns to be non-zero iff the output
+% is prepared for the printer):
+% \begin{description}
+% \item[if for the cover pages] just 1 time,
+% \item[if for the other pages] 2 times.
+% \end{description}
+% \end{itemize}
+% \begin{macrocode}
+\bool_if:NTF {\g_@@_cover_bool} {
+ \dim_const:Nn \c_@@_paperwidth_dim {
+ \c_@@_layoutwidth_dim
+ +
+ \c_@@_potential_layoutoffset_dim
+ +\c_@@_potential_bindingoffset_dim
+ }
+}{
+ \dim_const:Nn \c_@@_paperwidth_dim {
+ \c_@@_layoutwidth_dim
+ +
+ 2
+ \c_@@_potential_layoutoffset_dim
+ +\c_@@_potential_bindingoffset_dim
+ }
+}
+% \end{macrocode}
+%
+% The image width is the layout width plus the (non-zero) printer layout offset
+% dimension:
+% \begin{macrocode}
+\dim_const:Nn \c_@@_frontcover_image_width_dim {
+ \c_@@_layoutwidth_dim
+ +
+ \c_@@_printer_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_@@_potential_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} ("\c_@@_extra_margin_dim") and
+% make the outer margins smaller of the same dimension.
+% \begin{macrocode}
+\dim_const:Nn \c_@@_extra_margin_dim { 5mm }
+\dim_const:Nn \c_@@_innermargin_dim { 15mm - \c_@@_potential_bindingoffset_dim + \c_@@_extra_margin_dim}
+\dim_const:Nn \c_@@_outermargin_dim { 30mm - \c_@@_extra_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_@@_potential_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_@@_potential_layoutoffset_dim%
+}%
+\dim_const:Nn \c_@@_frontmatter_headtext_e_xshift_dim {
+ \c_@@_frontmatter_headtext_xshift_dim +\c_@@_potential_layoutoffset_dim%
+}%
+\dim_const:Nn \c_@@_frontmatter_headtext_yshift_dim { -6.5mm-\c_@@_potential_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_@@_potential_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_@@_potential_layoutoffset_dim }%
+\dim_const:Nn \c_@@_yshift_arccircle_A_dim { -22mm-\c_@@_potential_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_@@_potential_layoutoffset_dim }%
+\dim_const:Nn \c_@@_xshift_arccircle_C_dim { \c_@@_potential_layoutoffset_dim-5mm }%
+\dim_const:Nn \c_@@_yshift_arccircle_C_dim { -19.75mm-\c_@@_potential_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}
+%
+% \begin{macro}{\c_@@_authors_photos_width_dim}
+% \begin{macrocode}
+\dim_const:Nn \c_@@_authors_photos_width_dim {16mm}
+\dim_const:Nn \c_@@_authors_photos_box_width_dim {\c_@@_authors_photos_width_dim
+ + 2mm}
+\dim_new:N \l_@@_minibio_width_dim
+% \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_@@_potential_layoutoffset_dim
+ ,bindingoffset=\c_@@_potential_bindingoffset_dim
+ ,top=\c_@@_topmargin_frontcover_dim
+ ,headsep=\c_@@_headsep_frontcover_dim
+ ,headheight=\c_@@_headheight_dim
+ % ,bottom=\c_zero_dim
+ ,bottom=11mm
+ ,footskip=\c_zero_dim
+ ,outer=\c_zero_dim
+ ,inner=\c_@@_potential_layoutoffset_dim
+ ,nomarginpar%
+ }%
+}{
+ \tl_const:Nn \c_@@_frontcover_geometry_tl {%
+ ,layoutsize={\c_@@_layoutwidth_dim,\c_@@_layoutheight_dim}
+ ,layoutoffset=\c_@@_potential_layoutoffset_dim
+ ,bindingoffset=\c_@@_potential_bindingoffset_dim
+ ,top=\c_@@_topmargin_frontcover_dim
+ ,headsep=\c_@@_headsep_frontcover_dim
+ ,headheight=\c_@@_headheight_dim
+ % ,bottom=\c_zero_dim
+ ,bottom=11mm
+ ,footskip=\c_zero_dim
+ ,hmargin=\c_@@_potential_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_@@_potential_layoutoffset_dim
+ ,bindingoffset=\c_@@_potential_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_@@_potential_layoutoffset_dim
+ ,outer=\c_@@_outermargin_inside_cover_dim+\c_@@_potential_layoutoffset_dim
+ ,nomarginpar%
+ }%
+}{
+ \tl_const:Nn \c_@@_inside_cover_geometry_tl {%
+ ,layoutsize={\c_@@_layoutwidth_dim,\c_@@_layoutheight_dim}
+ ,layoutoffset=\c_@@_potential_layoutoffset_dim
+ ,bindingoffset=\c_@@_potential_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_@@_potential_layoutoffset_dim
+ % ,bindingoffset=\c_@@_potential_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_@@_potential_layoutoffset_dim
+ % ,bindingoffset=\c_@@_potential_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_@@_potential_layoutoffset_dim
+ % ,bindingoffset=\c_@@_potential_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
+ ,nomarginpar
+ ,hcentering
+ ,twoside=false
+}
+% \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
+\tl_new:N \g_@@_frontcover_image_options_tl
+% \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:n = true,
+ month .value_required:n = true,
+ year .value_required:n = true,
+% \end{macrocode}
+%
+% If "number" option is not used, its initial value is set to $0$.
+% number.
+% \begin{macrocode}
+ number .initial:n = 0,
+% \end{macrocode}
+%
+% The options of the front cover image could be set within "\issuesetup"'s
+% argument.
+% \begin{macrocode}
+ frontcoverimageoptions .tl_gset:N = \g_@@_frontcover_image_options_tl
+}
+% \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:n = true,
+ address .value_required:n = true,
+ phone .value_required:n = true,
+ fax .value_required:n = true,
+ email .value_required:n = true,
+ url .value_required:n = true,
+ issn .value_required:n = true,
+ isbn .value_required:n = true,
+}
+% \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:n = true,
+ minishort .value_required:n = true,
+}
+% \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:n = true,
+ minishort .value_required:n = true,
+}
+% \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:n = true,
+ title .value_required:n = true,
+ pictogram .value_required:n = true,
+}
+% \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:n = true,
+ textwidth .value_required:n = true,
+ xshift .value_required:n = true,
+ yshift .value_required:n = true,
+}
+% \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:n = true,
+ email .value_required:n = true,
+ minibio .value_required:n = true,
+ photo .value_required:n = true,
+ webpage .value_required:n = true,
+}
+% \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:n = true,
+ photo .value_required:n = true,
+}
+% \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:n = true,
+ bibkey .value_required:n = true,
+}
+% \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:n = true,
+ bibkey .value_required:n = true,
+}
+% \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:n = true,
+ englishtitle .value_required:n = true,
+ %
+ 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}
+%</class|class-article>
+% \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{@@_minitoc_color}{@@_generic_light_color}
+\colorlet{@@_cover_itemize_label_color}{@@_light_generic_dark_color}
+\colorlet{@@_default_text_color}{black}
+\colorlet{@@_head_text_color}{black!65}
+\colorlet{@@_rubric_head_text_color}{@@_head_text_color}
+\colorlet{@@_bibliography_minibios_acknowledgements_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}{@@_frontmatter_text_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}
+\colorlet{@@_default_cover_color}{white}
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</class|class-article|class-logo>
+% \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 that 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 \g_@@_smf_short_string_tl
+\tl_new:N \g_@@_smf_string_tl
+\tl_gset:Nn \g_@@_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_gset:Nn \g_@@_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 \g_@@_pdftitle_string_tl
+\tl_new:N \g_@@_pdfauthor_string_tl
+\tl_gset:Nn \g_@@_pdftitle_string_tl {
+ \c_@@_pdftitle_string_tl
+}
+\tl_gset:Nn \g_@@_pdfauthor_string_tl {
+ \g_@@_smf_string_tl
+}
+\AtEndPreamble{%
+ \hypersetup{%
+ pdftitle=\g_@@_pdftitle_string_tl,
+ pdfauthor=\g_@@_pdfauthor_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{\c_@@_authors_photos_box_width_dim}p{0.75\linewidth}}
+ \tl_if_empty:nF {#5}
+ {%
+ \begin{adjustbox}{valign=t}
+ \includegraphics[width=\c_@@_authors_photos_width_dim]{#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%
+ \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}%
+ }%
+ ]
+ \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
+ {
+ \c_space_tl(\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}%
+ \pagecolor{\g_@@_special_edition_color_tl}
+ \exp_after:wN\newgeometry\exp_after:wN{\c_@@_frontcover_geometry_tl}%
+ \noindent%
+ \bool_if:NTF {\g_@@_cover_bool} {
+ \hspace*{-\c_@@_potential_layoutoffset_dim}
+ }{
+ \hspace*{-2\c_@@_potential_layoutoffset_dim}
+ }
+ \exp_after:wN\includegraphics\exp_after:wN[\g_@@_frontcover_image_options_tl]{\g_@@_frontcover_image_file_tl}
+ \begin{tikzpicture}[remember~picture, overlay]
+ \coordinate (@@_circle_minitoc_center) at
+ ([xshift=\g_@@_minitoc_xshift_dim-\c_@@_potential_layoutoffset_dim,yshift=\g_@@_minitoc_yshift_dim+\c_@@_potential_layoutoffset_dim]current~page.south~east) ;
+ \node[name=@@_circle_minitoc,shape=circle,inner~sep=\c_zero_dim,fill=\g_@@_special_edition_color_tl,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) $)
+ {
+ \bool_if:NF {\g_@@_frontcover_without_minitoc_bool} {
+ \large
+ \color{@@_minitoc_color}
+ \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=\g_@@_special_edition_color_tl,rotate=90,anchor=west] at
+ ([xshift=0.45\c_@@_potential_bindingoffset_dim,yshift=15mm+\c_@@_potential_layoutoffset_dim]current~page.south~west) {
+ \No
+ \bool_if:NTF {\g_@@_special_edition_bool} {
+ \c_@@_special_edition_string_tl
+ }{
+ \int_use:N\g_@@_issue_number_int
+ }
+ };
+ \node[name=@@_binding_w,inner~sep=\c_zero_dim,fill=\g_@@_special_edition_color_tl,rotate=90] at
+ ([xshift=0.45\c_@@_potential_bindingoffset_dim]current~page.west) {
+ \bool_if:NTF {\g_@@_special_edition_bool} {
+ \tl_if_exist:NTF \g_@@_special_edition_short_title_tl {%
+ \g_@@_special_edition_short_title_tl
+ }{
+ \g_@@_special_edition_title_tl
+ }
+ }{
+ \MakeUppercase {\c_@@_journal_title_string_tl}
+ }
+ };
+ \node[name=@@_binding_nw,inner~sep=\c_zero_dim,fill=\g_@@_special_edition_color_tl,rotate=90,anchor=east] at
+ ([xshift=0.45\c_@@_potential_bindingoffset_dim,yshift=-15mm-\c_@@_potential_layoutoffset_dim]current~page.north~west) {
+ \l_@@_uppercased_date_format\displaydate{@@_date}
+ };
+ \end{tikzpicture}
+ }
+ \vfill%
+ \noindent%
+ \hspace*{10mm}%
+ \hspace*{-\c_@@_potential_layoutoffset_dim}
+ \includegraphics[height=22.5mm]{\c_@@_smf_logo_file_string_tl}%
+ \bool_if:NT {\g_@@_special_edition_bool} {
+ \hfill
+ \includegraphics[scale=1.2]{gzt-logo}
+ \hspace*{10mm}
+ }
+ % \vfill%
+ \clearpage%
+ \bool_gset_false:N \g_@@_frontcover_bool
+ \nopagecolor
+}
+% \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}
+ \bool_if:NTF {\g_@@_special_edition_bool} {
+ \begin{description}[leftmargin=1em,style=nextline]
+ \@@_display_people_by_role:n {editor}
+ \end{description}
+ }{%
+ \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%
+ \c_space_tl\textendash{}\c_space_tl%
+ \@@_display_people_by_role:n { secretary }\par
+ \l_@@_journal_address_tl\par%
+ \c_@@_phone_string_tl{}~:~\l_@@_journal_phone_tl{} \c_space_tl\textendash{}\c_space_tl
+ \c_@@_fax_string_tl{}~:~\l_@@_journal_fax_tl\par%
+ \href{mailto:\l_@@_journal_email_tl}{\nolinkurl{\l_@@_journal_email_tl}}%
+ % \newline%
+ \c_space_tl\textendash{}\c_space_tl
+ \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} {
+ \c_space_tl(\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%
+ \cleardoublepage%
+ \pagestyle{@@_inside_backcover_ps}%
+ \exp_after:wN\newgeometry\exp_after:wN{\c_@@_inside_cover_geometry_tl}%
+ \bool_if:NTF {\g_@@_no_inside_backcover_bool} {
+ \hbox{}
+ }{%
+ \small%
+ \begin{_@@_inside_cover_tcb}[_@@_tcb_inside_backcover_style]
+ \bool_if:NF {\g_@@_special_edition_bool} {
+ % \begin{multicols}{2}
+ % \setlength{\columnsep}{1mm}
+ \file_if_exist_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}
+ }
+ \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}%
+ \pagecolor{\g_@@_special_edition_color_tl}
+ \exp_after:wN\newgeometry\exp_after:wN{\c_@@_backcover_geometry_tl}%
+ \bool_if:NTF {\g_@@_special_edition_bool} {
+ \mbox{}
+ \vfill
+ \clist_map_inline:Nn \c_@@__graphics_extensions_clist{
+ \file_if_exist:nT {\c_@@_issue_images_path_string_tl/\g_@@_special_edition_backcover_image_tl.#1} {
+ \begin{center}
+ \includegraphics[width=.25\linewidth]{\g_@@_special_edition_backcover_image_tl}
+ \end{center}
+ \bigskip
+ \clist_map_break:
+ }
+ }
+ \group_begin:
+ \leftskip.125\linewidth
+ \rightskip\leftskip
+ \file_if_exist_input:nF {\c_@@_special_edition_backcover_page_file_string_tl}
+ {%
+ \c_empty_box
+ }
+ \par
+ \group_end:
+ \vfill
+ \clist_if_empty:NF \g_@@_special_edition_logos_clist {
+ \vfill
+ \noindent
+ \clist_map_inline:Nn \g_@@_special_edition_logos_clist {
+ \hfill
+ \includegraphics[height=2cm]{#1}
+ \hfill
+ }
+ \mbox{}
+ }
+ }{
+ \file_if_exist_input:nF {\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).
+ \keys_set:nn { gzt/issuesetup } {frontcoverimageoptions={width=\c_@@_frontcover_image_width_dim},#1}
+% \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{Special edition setup}
+%
+% \begin{macro}{\specialeditionsetup}
+% We define the command that lets the user specify the special edition setup.
+% \begin{macrocode}
+\NewDocumentCommand \specialeditionsetup { m } {
+ \bool_gset_true:N \g_@@_special_edition_bool
+ \bool_gset_true:N \g_@@_frontcover_without_minitoc_bool
+ \keys_set:nn { gzt/specialedition } {#1}
+}
+% \end{macrocode}
+%
+% \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/interviewees } { #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}
+%</class|class-article>
+% \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}
+%</class>
+% \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
+ }
+}
+% \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}
+%</class|class-article>
+% \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}
+ \file_if_exist:nTF { #3.pdf }{%
+ \tl_gset:Nn \g_@@_rubric_pictofile_tl {#3}
+ }{
+ \tl_gset:Nn \g_@@_rubric_pictofile_tl {example-image}
+ }
+ \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
+ \bool_if:NF {\g_@@_special_edition_bool} {
+ \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}
+%</class>
+% \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%
+%
+\tl_new:N \g_@@_blx_given_first_inits_tl%
+\@ifpackagelater{biblatex}{2016/01/01}{%
+ \tl_set:Nn \g_@@_blx_given_first_inits_false_tl
+ {%
+ \togglefalse{abx@bool@giveninits}%
+ }
+}{
+ \tl_set:Nn \g_@@_blx_given_first_inits_false_tl
+ {%
+ \togglefalse{blx@firstinits}%
+ }
+}
+%
+\cs_new_protected:Nn \_@@_citeauthor_no_firstinits:n {%
+ \tl_gset:Nn \g_@@_citeauthor_tl {%
+ \DeclareNameAlias{labelname}{default}%
+ \group_begin:
+ \g_@@_blx_given_first_inits_false_tl
+ \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_acknowledgements"
+% environment but is repeated here if what is before provides floats but neither
+% bibliography, \textsc{cv} nor acknowledgements).
+% \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 all acronyms entries.
+% \begin{macrocode}
+\glsresetall
+% \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}
+ }
+ }
+}
+\DTLforeach*[\DTLiseq{\l_@@_people_role_tl}{interviewee-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 { interviewee } {
+ \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_@@_potential_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 {\g_@@_subtitle_not_in_toc_bool} {
+ \bool_if:nF { \tl_if_empty_p:N \g_@@_short_subtitle_tl || \g_@@_interview_rubric_bool || \g_@@_rearviewmirror_rubric_bool }
+ {
+ \c_space_tl\textendash{}\c_space_tl\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{%
+ \c_space_tl\textendash{}\c_space_tl\citeauthor{\g_@@_article_bib_key_tl}
+ }{}
+ }{%
+ \c_space_tl\textendash{}\c_space_tl\citeauthor{\g_@@_article_bib_key_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:NT \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}
+%<class-article>\hypersetup{pdftitle=\g_@@_short_title_tl,pdfauthor=\l_@@_people_first_last_names_tl}
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</class|class-article>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<*class>
+% \end{macrocode}
+%
+% We fix some of the PDF's metadata .
+% \begin{macrocode}
+\bool_if:NT {\g_@@_for_authors_bool} {
+ \hypersetup{%
+ pdftitle=\g_@@_short_title_tl,
+ pdfauthor=\l_@@_people_first_last_names_tl
+ }
+}
+% \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}
+%</class>
+% \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 \l_@@_people_photo_tl
+ % {
+ % \begin{adjustbox}{center}
+ % \includegraphics[height=50mm]{\l_@@_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 file where acronyms are defined.
+% \begin{macrocode}
+\file_if_exist:nT { \c_@@_acronyms_file_string_tl } {%
+ \AtEndPreamble{\loadglsentries{\c_@@_acronyms_file_string_tl}}
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</class|class-article>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<*class>
+% \end{macrocode}
+%
+% In case of "forauthors" option, we close the "multicols" environment in case
+% it isn't closed (which happens if neither "\printbibliography" nor
+% "\printauthorsdetails" is used). This should fix issue
+% \url{https://github.com/dbitouze/gzt/issues/36}.
+% \begin{macrocode}
+\bool_if:nT { \g_@@_for_authors_bool }
+{
+ \AtEndDocument{%
+ \bool_if:NT {\g_@@_multicols_bool} {
+ \end{multicols}%
+ }
+ }
+}
+% \end{macrocode}
+%
+% We load the configuration file (only for the issue's class), 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_if_exist_input:nF {\c_@@_configuration_file_string_tl}
+ {
+ \msg_error:nn { gzt } { configuration-file-missing }
+ }
+}
+% \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}%
+ }%
+ }%
+ \bool_if:NTF {\g_@@_special_edition_bool} {
+ \tl_set:Nn \l_tmpa_tl {\c_@@_short_special_edition_string_tl}
+ }{
+ \tl_set:Nn \l_tmpa_tl {\No\int_use:N\g_@@_issue_number_int}
+ }
+ \begin{adjustbox}{valign=t}
+ \begin{tcolorbox}[%
+ enhanced,%
+ title=\l_tmpa_tl,%\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:n
+{
+ \_@@_before_editorial_presidentmessage:nn {}{#1}
+}
+\cs_new_protected:Nn \_@@_after_display_editorial:
+{
+ \_@@_after_editorial_presidentmessage: {}
+ \hspace*{\fill}%
+ \bool_if:NTF {\g_@@_special_edition_bool} {
+ \AtNextCitekey{\defcounter{maxnames}{100}}
+ \_@@_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_@@_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:n
+{
+ \_@@_before_display_editorial:n {#1}
+ \file_if_exist_input:nF {\c_@@_editorial_file_string_tl}
+ {%
+ \msg_error:nn { gzt } { editorial-file-missing }
+ }
+ \_@@_after_display_editorial: {}
+}
+\AtEndPreamble{%
+ \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 {%
+ \tl_set_eq:NN \g_@@_editorial_heading_tl \g_@@_special_edition_editorial_heading_tl
+ }
+ }
+ \NewDocumentCommand \editorial { O{\g_@@_editorial_heading_tl} }
+ {
+ \bool_if:NF {\g_@@_for_authors_bool} {
+ \_@@_display_editorial:n {#1}
+ }
+ }
+}
+% \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 {\g_@@_frontcover_image_file_tl}{\c_@@_toc_string_tl}
+ \phantomsection
+ \hypertarget{@@_toc}{}
+ \bool_if:NTF {\g_@@_special_edition_bool} {
+ \bookmark[dest=@@_toc,level=chapter]{\c_@@_toc_string_tl}
+ }{
+ \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}{\g_@@_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 }%
+ ,\c_space_tl
+ \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}
+%
+% \begin{macrocode}
+%</class>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<*class|class-article>
+% \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 the front cover and the inside front cover.
+% \end{itemize}
+%
+% \begin{macrocode}
+\AtBeginDocument{%
+ \graphicspath{{\c_@@_issue_images_path_string_tl//}{../\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}
+%</class|class-article>
+% \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:NF {\g_@@_for_authors_bool} {
+ \bool_if:NF {\g_@@_inside_pages_bool} {
+ \g_@@_display_frontcover_tl
+ \bool_if:NTF {\g_@@_coverpage_bool} {
+ \AfterEndPreamble{\end{document}}
+ }{
+ \g_@@_display_inside_frontcover_tl
+ }
+ }
+ }
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</class>
+% \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 {%
+ \bool_if:NTF {\g_@@_special_edition_bool} {
+ \g_@@_special_edition_title_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) {%
+ \Large
+ \bool_if:NT {\g_@@_special_edition_bool} {
+ \c_@@_short_special_edition_string_tl
+ \c_space_tl
+ }
+ \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) {%
+ \Large
+ \bool_if:NT {\g_@@_special_edition_bool} {
+ \c_@@_short_special_edition_string_tl
+ \c_space_tl
+ }
+ \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 \enquote{minus} version of each of the previous styles for floats
+% with number (and keywords) but without any caption: in such cases, the number
+% should not be followed by any separator.
+% \begin{macrocode}
+\tcbset{%
+ new/blend into/tables-/.style={%
+ use counter*=table,%
+ /tcb/code={\appto\tcb@new@colopt{,before title={\fnum@table}}}},%
+ new/blend into/figures-/.style={%
+ use counter*=figure,%
+ /tcb/code={\appto\tcb@new@colopt{,before title={\fnum@figure}}}},%
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</class|class-article>
+% \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}
+%</class>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<*class|class-article>
+% \end{macrocode}
+%
+% \begin{macrocode}
+\ExplSyntaxOn
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</class|class-article>
+% \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}
+%
+% \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}{
+ \huge
+ \bool_if:NT {\g_@@_special_edition_bool} {
+ \color{@@_generic_dark_color}
+ }
+ \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}
+%
+% \begin{macrocode}
+%</class>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<*class|class-article>
+% \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}
+ ]%
+ [
+%<class-article> \c_@@_footer_size_font_tl \c_@@_compiled_string_tl\today
+ ]%
+ {
+%<class-article> \c_@@_footer_size_font_tl \c_@@_compiled_string_tl\today
+ }%
+ {%
+ \uppercase{\c_@@_footer_string_tl}%
+ }%
+ {\c_@@_footer_size_font_tl\thepage}%
+}%
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</class|class-article>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<*class>
+% \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\color{@@_head_text_color}\c_@@_advertisement_string_tl%
+ }%
+ ]%
+ []%
+ {}%
+ {%
+ \adjustbox{raise={\c_@@_header_yshift_dim}{\height}}{%
+ \large\bfseries\scshape\color{@@_head_text_color}\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{For blank pages added in order to ensure document total page
+% numbers is a multiple of four}
+%
+% \begin{macrocode}
+\newpagestyle{@@_blank_pages_ps}[]{%
+ \sethead
+ {}%
+ {}%
+ {}%
+ %
+ \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_@@_potential_layoutoffset_dim]current~page.south~west) -- +(0.25,0);
+% \draw ([xshift=\c_@@_potential_layoutoffset_dim]current~page.south~west) -- +(0,0.25);
+% %% lower right
+% \draw ([yshift=\c_@@_potential_layoutoffset_dim]current~page.south~east) -- +(-0.25,0);
+% \draw ([xshift=-\c_@@_potential_layoutoffset_dim-\c_@@_potential_bindingoffset_dim]current~page.south~east) -- +(0,0.25);
+% %% upper left
+% \draw ([yshift=-\c_@@_potential_layoutoffset_dim]current~page.north~west) -- +(0.25,0);
+% \draw ([xshift=\c_@@_potential_layoutoffset_dim]current~page.north~west) -- +(0,-0.25);
+% %% upper right
+% \draw ([yshift=-\c_@@_potential_layoutoffset_dim]current~page.north~east) -- +(-0.25,0);
+% \draw ([xshift=-\c_@@_potential_layoutoffset_dim-\c_@@_potential_bindingoffset_dim]current~page.north~east) -- +(0,-0.25);
+% }%
+% }%
+% }
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</class>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<*class|class-article>
+% \end{macrocode}
+%
+% We draw a gray background at the bottom of each page, but the first one.
+% \begin{macrocode}
+\AddEverypageHook{%
+%<class> \bool_if:nF { \g_@@_frontcover_bool || \g_@@_backcover_bool }{
+ \bool_if:NF {\g_@@_advertisement_bool} {
+ \tikz[remember~picture,overlay] { \g_@@_background_footer_tl }%
+ }%
+%<class> }%
+}
+% \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{@@_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{@@_head_text_color}\g_@@_short_title_tl%
+ }
+ }
+ }%
+ {
+ \tikz[remember~picture,overlay] {\g_@@_mainmatter_oddpage_headrule_tl}
+ }%
+ %
+\bool_if:nTF { \g_@@_for_authors_bool } {
+ \setfoot%
+ [\c_@@_footer_size_font_tl\thepage]%
+ [%
+ \uppercase{\c_@@_footer_string_tl}
+ ]%
+ [\c_@@_footer_size_font_tl \c_@@_compiled_string_tl\today]%
+ {\c_@@_footer_size_font_tl \c_@@_compiled_string_tl\today}%
+ {%
+ \uppercase{\c_@@_footer_string_tl}%
+ }%
+ {\c_@@_footer_size_font_tl\thepage}%
+ }{
+ \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
+% acknowledgements.
+% \begin{macrocode}
+ \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
+ {%
+ \par%
+ \bigskip%
+ \begin{adjustbox}{valign=t,minipage=\linewidth}
+ \color{@@_acknowledgements_color}%
+ \g_@@_article_acknowledgements_tl
+ \end{adjustbox}
+ }
+ \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}
+% 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_acknowledgements" environment and enter in
+% the multicolumn environment.
+% \end{itemize}
+% \begin{macrocode}
+\cs_set_eq:NN \_@@_printbibliography \printbibliography
+\RenewDocumentCommand \printbibliography { s 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
+% acknowledgements.
+% \begin{macrocode}
+% \afterpage{%
+ \FloatBarrier%
+% }%
+ \begin{_@@_bibliography_tcbox}
+ \_@@_printbibliography[heading=subbibliography,resetnumbers,#2]
+ \end{_@@_bibliography_tcbox}
+ %
+ \IfBooleanF {#1}
+ {
+ \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}}
+}
+\cs_new_protected:Nn \_@@_century_suffix:n
+{
+ \translate{_@@_century}%
+ \int_compare:nNnT { #1 } < { 0 }{
+ \c_space_tl
+ \translate{_@@_bc}
+% \end{macrocode}
+% In case of French language, we add a period just after \enquote{avant~J.-C},
+% but only if the character following the "\century" macro is not a period
+% itself.
+% \begin{macrocode}
+ \IfLanguageName {french}{
+ \@ifnextchar.%
+ {
+ }{
+ .\xspace
+ }%
+ }
+ }{
+ }
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</class|class-article>
+% \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}{\advertisement}
+% For a (not full page) advertisement.
+% \begin{macrocode}
+\cs_new_protected:Nn \_@@_advertisement:nn
+ {
+ \vfill
+ \begin{center}
+ \dim_set:Nn \fboxsep {\c_zero_dim}
+ \fbox{%
+ \includegraphics[max~size={\linewidth}{\textheight},#1]{#2}
+ }
+ \end{center}
+ \vfill
+ }
+\NewDocumentCommand \advertisement { O{} m }
+ {
+ \_@@_advertisement:nn {#1}{#2}
+ }
+% \end{macro}
+%
+% \begin{macro}{\fullpageadvertisement}
+% For a full page advertisement.
+% \begin{macrocode}
+\cs_new_protected:Nn \_@@_fullpageadvertisement:nn
+ {
+ \newpage
+ \thispagestyle{@@_advertisement_ps}
+ \begin{minipage}[c][\textheight][c]{\textwidth}%
+ \centering\includegraphics[max~size={\linewidth}{\textheight},#1]{#2}%
+ \end{minipage}%
+ }
+\NewDocumentCommand \fullpageadvertisement { O{} m }
+{
+ \_@@_fullpageadvertisement:nn {#1}{#2}
+}
+% \end{macro}
+%
+% \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. In case of special edition, we set the rubric
+% title first as empty and then as the special edition's title plus a constant
+% string. Otherwise, this title is freely set.
+% \begin{macrocode}
+\NewDocumentCommand \rubric {O{}mm}
+{
+ \bool_if:NTF {\g_@@_special_edition_bool} {
+ \_@@_rubric:nnn {#1}{#2}{#3}%
+ \tl_gset:Nn \g_@@_rubric_title_tl {%
+ \c_@@_short_special_edition_string_tl
+ \c_space_tl
+ \g_@@_special_edition_title_tl
+ }
+ }{
+ \_@@_rubric:nnn {#1}{#2}{#3}%
+ }
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+\NewDocumentCommand \mathematics {O{}}
+{
+ \_@@_rubric:nnn {#1}{\c_@@_mathematics_rubric_string_tl}{\c_@@_mathematics_pictogram_file_name_tl}
+}
+\NewDocumentCommand \dossier {O{}}
+{
+ \_@@_rubric:nnn {#1}{\c_@@_dossier_rubric_string_tl}{\c_@@_dossier_pictogram_file_name_tl}
+}
+\NewDocumentCommand \community {O{}}
+{
+ \_@@_rubric:nnn {#1}{\c_@@_community_rubric_string_tl}{\c_@@_hands_pictogram_file_name_tl}
+}
+\NewDocumentCommand \interview {O{}}
+{
+ \_@@_rubric:nnn {#1}{\c_@@_interview_rubric_string_tl}{\c_@@_interview_pictogram_file_name_tl}
+ \bool_gset_true:N \g_@@_interview_rubric_bool
+}
+\NewDocumentCommand \teaching {O{}}
+{
+ \_@@_rubric:nnn {#1}{\c_@@_teaching_rubric_string_tl}{\c_@@_teaching_pictogram_file_name_tl}
+}
+\NewDocumentCommand \parity {O{}}
+{
+ \_@@_rubric:nnn {#1}{\c_@@_parity_rubric_string_tl}{\c_@@_parity_pictogram_file_name_tl}
+}
+\NewDocumentCommand \tellme {O{}}
+{
+ \_@@_rubric:nnn {#1}{\c_@@_tellme_rubric_string_tl}{\c_@@_tellme_pictogram_file_name_tl}
+ \bool_gset_true:N \g_@@_tellme_rubric_bool
+}
+\NewDocumentCommand \information {O{}}
+{
+ \_@@_rubric:nnn {#1}{\c_@@_information_rubric_string_tl}{\c_@@_information_pictogram_file_name_tl}
+}
+\NewDocumentCommand \rearviewmirror {O{}}
+{
+ \_@@_rubric:nnn {#1}{\c_@@_rearviewmirror_rubric_string_tl}{\c_@@_rearviewmirror_pictogram_file_name_tl}
+ \bool_gset_true:N \g_@@_rearviewmirror_rubric_bool
+}
+\NewDocumentCommand \tribute {O{}}
+{
+ \_@@_rubric:nnn {#1}{\c_@@_tribute_rubric_string_tl}{\c_@@_tribute_pictogram_file_name_tl}
+}
+\NewDocumentCommand \books {O{}}
+{
+ \_@@_rubric:nnn {#1}{\c_@@_books_rubric_string_tl}{\c_@@_books_pictogram_file_name_tl}
+ \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}{}
+}
+\NewDocumentCommand \forum {O{}}
+{
+ \_@@_rubric:nnn {#1}{\c_@@_forum_rubric_string_tl}{\c_@@_forum_pictogram_file_name_tl}
+}
+\NewDocumentCommand \moralreport {O{}}
+{
+ \_@@_rubric:nnn {#1}{\c_@@_moralreport_rubric_string_tl}{\c_@@_smf_logo_file_string_tl}
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+%</class>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<*class|class-article>
+% \end{macrocode}
+%
+% \begin{macro}{\email}
+% \begin{macrocode}
+\DeclareCiteCommand{\citeinterviewee}{}{%
+ \printnames{interviewee}%
+}
+{}{}
+\DeclareCiteCommand{\citereviewer}{}{%
+ \g_@@_blx_given_first_inits_false_tl
+ \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}
+ {
+ \g_@@_smf_string_tl
+ }
+ {
+ \g_@@_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_@@_class_name_tl}}
+ \xspace
+}
+\NewDocumentCommand \gztarticlecl {}
+{%
+ \textsl{\texttt{\c_@@_article_class_name_tl}}
+ \xspace
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\century}
+% \begin{macrocode}
+\NewDocumentCommand \century { s m } {%
+ \_@@_century:n {#2}%
+ \IfBooleanTF {#1}
+ {
+ \int_compare:nNnT { #2 } < { 0 }{
+ \_@@_century_suffix:n {#2}%
+ }
+ }
+ {
+ \_@@_century_suffix:n {#2}%
+ }
+}
+% \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 public environments "gztfigure" and "gzttable" (and friends) for
+% the usual floats. Their layout is based upon \pkg{tcolorbox} features.
+% \begin{macrocode}
+\DeclareTColorBox[blend~into=figures]{gztfigure}{ O{} }
+{
+ ,width=\linewidth%
+ ,blend~before~title=dash%
+ ,_@@_tcb_floats_style%
+ ,#1%
+ ,code={\ifdefempty{\kvtcb@title}{\tcbset{_@@_tcb_notitle}}{}}%
+}
+\DeclareTColorBox[blend~into=figures]{gztfigure*}{ O{} }
+{
+ ,float*
+ ,blend~before~title=dash%
+ ,width=\textwidth%
+ ,_@@_tcb_floats_style%
+ ,#1%
+ ,code={\ifdefempty{\kvtcb@title}{\tcbset{_@@_tcb_notitle}}{}}%
+}
+\DeclareTColorBox[blend~into=tables]{gzttable}{ O{} }
+{
+ ,width=\linewidth%
+ ,blend~before~title=dash%
+ ,_@@_tcb_floats_style%
+ ,#1%
+ ,code={\ifdefempty{\kvtcb@title}{\tcbset{_@@_tcb_notitle}}{}}%
+}
+\DeclareTColorBox[blend~into=tables]{gzttable*}{ O{} }
+{
+ ,float*
+ ,blend~before~title=dash%
+ ,width=\textwidth%
+ ,_@@_tcb_floats_style%
+ ,#1%
+ ,code={\ifdefempty{\kvtcb@title}{\tcbset{_@@_tcb_notitle}}{}}%
+}
+\DeclareTColorBox{gztframe}{ O{} }
+{
+ ,width=\linewidth%
+ ,_@@_tcb_floats_style%
+ ,#1%
+}
+\DeclareTColorBox{gztframe*}{ O{} }
+{
+ ,float*
+ ,width=\textwidth%
+ ,_@@_tcb_floats_style%
+ ,#1%
+}
+%
+\DeclareTColorBox{gztscan}{ O{} }
+{
+ #1%
+ ,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_acknowledgements_tcbox}{ O{} }
+{
+ _@@_tcb_minibiographies_acknowledgements_style,
+ #1
+}
+% \end{macrocode}
+%
+% We provide a public environment "inset" for insets that has the same layout as
+% minibiographies and acknowledgements. Its layout is based upon \pkg{tcolorbox}
+% features.
+% \begin{macrocode}
+\DeclareTColorBox{inset}{ O{} }
+{
+ _@@_tcb_minibiographies_acknowledgements_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}}{}{}%
+ \g_@@_blx_given_first_inits_false_tl
+ \noindent%
+ \parbox[][21.5mm][l]{\linewidth}{\fullcite{\g_@@_bookreview_bibkey_tl}}
+ \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}
+\NewDocumentCommand \bookadvertisement {O{} m}
+{
+ \newpage{}
+ \mbox{}
+ \vfill
+ \begin{_@@_book_advertisement}[#1]
+ \fullcite{#2}
+ \par
+ \bigskip
+ \tcblower
+ \includegraphics[height=22.5mm]{\c_@@_smf_logo_file_string_tl}%
+ \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}
+%</class|class-article>
+% \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}
+\NewDocumentCommand \gztinput { m m } {%
+ \startcustomization%
+ \bool_if:NF {\g_@@_refsection_bool} {
+ \begin{refsection}
+ }
+ \bool_if:NF { \g_@@_backcover_bool } {
+ \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}
+%
+% 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}).
+% \begin{macrocode}
+\bool_if:NF {\g_@@_coverpage_bool} {
+ \bool_if:NF {\g_@@_inside_pages_bool} {
+ \preto\@enddocumenthook{
+ \bool_gset_true:N \g_@@_backmatter_bool
+ \g_@@_display_inside_backcover_tl
+ \newpage
+ \g_@@_display_backcover_tl
+ }%
+ }%
+}%
+% \end{macrocode}
+%
+% If we don't ask the cover page (only), the document total page numbers should
+% be a multiple of four and we add the necessary and sufficient number of blank
+% pages if it isn't the case (code borrowed from
+% \url{http://tex.stackexchange.com/a/83498/18401}).
+% \begin{macrocode}
+\bool_if:NF {\g_@@_coverpage_bool} {
+ \bool_if:nF { \g_@@_for_authors_bool } {
+ \bool_if:nT { \g_@@_inside_pages_bool } {
+ \AtEndDocument{%
+ \prg_replicate:nn
+ { \int_mod:nn { 4 - \int_mod:nn { \getpagerefnumber{LastPage} } { 4 } } { 4 } }
+ { \thispagestyle{@@_blank_pages_ps}\null\clearpage }
+ }
+ }
+ }
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</class>
+% \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: {}%
+ }
+ },%
+}%
+% \end{macrocode}
+%
+% \begin{macrocode}
+\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}
+%</class-article>
+% \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}
+\@ifpackagelater{biblatex}{2016/01/01}{%
+ \DeclareNameFormat{giveninits-last}{%
+ \nameparts{#1}
+ \usebibmacro{name:given-family}
+ {\namepartfamily}
+ {\namepartgiveni}
+ {\namepartprefix}
+ {\namepartsuffix}%
+ \usebibmacro{name:andothers}%
+ }
+}{
+ \DeclareNameFormat{giveninits-last}{%
+ \usebibmacro{name:first-last}{#1}{#4}{#5}{#7}%
+ \usebibmacro{name:andothers}%
+ }
+}
+\DeclareNameAlias{labelname}{giveninits-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\c_space_tl}%
+ \printfield{number}%
+ \setunit{\addcomma\c_space_tl}%
+ \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) {%
+ \begin{minipage}[t]{\tcbtextheight}
+ \copyright{}~#1%
+ \end{minipage}
+ };%
+ }%
+ }%
+}
+\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%
+ }%
+}
+\tcbset{%
+ _@@_tcb_notitle/.style={%
+ blend~before~title~code={##1}
+ ,title={\c_space_tl}%
+ }%
+}
+\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,
+ },
+ _@@_tcb_inside_backcover_style/.style={%
+ _@@_tcb_inside_cover_style,
+ enlarge~left~by=\c_@@_inside_cover_offset_dim,
+ }
+}
+\AtEndPreamble{%
+ \bool_if:NTF {\g_@@_special_edition_bool} {
+ \tcbset{
+ _@@_tcb_inside_frontcover_style/.append~style={%
+ title=\c_@@_special_edition_editorial_board_string_tl
+ },
+ _@@_tcb_inside_backcover_style/.append~style={%
+ notitle
+ },
+ }
+ }{
+ \tcbset{
+ _@@_tcb_inside_frontcover_style/.append~style={%
+ title=\c_@@_editorial_board_string_tl
+ },
+ _@@_tcb_inside_backcover_style/.append~style={%
+ title=\file_if_exist:nT { \c_@@_authors_instructions_file_tl } {%
+ \c_@@_authors_instructions_string_tl
+ }
+ },
+ }
+ }
+}
+\tcbset{%
+ _@@_tcb_bibliography_style/.style={%
+ colback=@@_bibliography_minibios_acknowledgements_bg_color,
+ breakable,
+ boxrule=\c_zero_dim,
+ sharp~corners=all,%
+ enhanced
+ }
+}
+\tcbset{%
+ _@@_tcb_minibiographies_acknowledgements_style/.style={%
+ colback=@@_bibliography_minibios_acknowledgements_bg_color,
+ breakable,
+ boxrule=\c_zero_dim,
+ extras~unbroken~and~last={drop~lifted~shadow},
+ sharp~corners=all,%
+ skin=enhancedlast,
+ height~fixed~for=middle,
+ }
+}
+\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 columns 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_if_eq:NNF { \l_@@_newtheorem_frenchtitle_tl } { \l_@@_newtheorem_englishtitle_tl }
+ % {%
+ % \tl_set:Nf \l_@@_newtheorem_frenchtitle_tl {
+ % \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}
+%</class|class-article>
+% \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}
+%
+% \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{Seuret, Stéphane}{}{}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% 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@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-fr.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}
+%</configuration>
+% \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}
+%</class-logo>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<*readme-pictograms>
+% \end{macrocode}
+%
+% \begin{macrocode}
+# Pictograms possibly missing
+
+The current directory is supposed to contain the (files of the) logos and
+pictograms that illustrate the Gazette whole issues compiled by the SMF. As non
+free materials, they are likely to miss here and, in such a case, the `gzt`
+class will be replace them by a dummy image (borrowed from the `mwe` package).
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</readme-pictograms>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<*latexmkrc>
+% \end{macrocode}
+%
+% \begin{macrocode}
+$pdf_mode = 1;
+
+$bibtex_use = 1;
+$bibtex = 'biber %O %B';
+
+add_cus_dep('glo', 'gls', 0, 'makeglossaries');
+add_cus_dep('acn', 'acr', 0, 'makeglossaries');
+add_cus_dep('slo', 'sls', 0, 'makeglossaries');
+sub makeglossaries{
+ system( "makeglossaries \"$_[0]\"" );
+}
+
+add_cus_dep('idx', 'ind', 0, 'texindy');
+sub texindy{
+ system("texindy -L french \"$_[0].idx\"");
+}
+
+push @generated_exts, 'acn', 'acr', 'alg', 'bcf', 'fls', 'gl*', 'sbl*', 'sl*', 'sym*' ;
+
+$clean_ext .= 'synctex.gz* run.xml tex.bak ind idx out bbl bcf fdb_latexmk run
+ tdo listing *~ lo* unq mw tcbtemp ins drv atfi db* ain' ;
+
+$quote_filenames = 0;
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</latexmkrc>
+% \end{macrocode}
+%
+% \begin{macrocode}
+\endinput
+% \end{macrocode}
+%
+% \Finale
+
+%%% Local Variables:
+%%% mode: tex
+%%% eval: (doctex-mode)
+%%% ispell-local-dictionary: "english"
+%%% TeX-command-default: "TeX"
+%%% TeX-master: t
+%%% End: