summaryrefslogtreecommitdiff
path: root/macros/latex/contrib
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib')
-rw-r--r--macros/latex/contrib/easybook/easybook.dtx159
-rw-r--r--macros/latex/contrib/easybook/easybook.pdfbin583057 -> 583250 bytes
-rw-r--r--macros/latex/contrib/easybook/easybook.tex28
-rw-r--r--macros/latex/contrib/gzt/doc/latex/gzt/CHANGELOG.md59
-rw-r--r--macros/latex/contrib/gzt/doc/latex/gzt/README.md10
-rw-r--r--macros/latex/contrib/gzt/doc/latex/gzt/english/README-TRANSLATION.md4
-rw-r--r--macros/latex/contrib/gzt/doc/latex/gzt/french/denis.pngbin0 -> 88304 bytes
-rw-r--r--macros/latex/contrib/gzt/doc/latex/gzt/french/gzt-fr.bib36
-rw-r--r--macros/latex/contrib/gzt/doc/latex/gzt/french/gzt-fr.pdfbin0 -> 528662 bytes
-rw-r--r--macros/latex/contrib/gzt/doc/latex/gzt/french/gzt-fr.tex118
-rw-r--r--macros/latex/contrib/gzt/doc/latex/gzt/french/latexmkrc20
-rw-r--r--macros/latex/contrib/gzt/doc/latex/gzt/french/sections/fixed-footnotes.tex14
-rw-r--r--macros/latex/contrib/gzt/doc/latex/gzt/french/sections/gztarticle.tex1521
-rw-r--r--macros/latex/contrib/gzt/doc/latex/gzt/french/sections/notations.tex138
-rw-r--r--macros/latex/contrib/gzt/doc/latex/gzt/french/sections/packages-charges.tex38
-rw-r--r--macros/latex/contrib/gzt/doc/latex/gzt/french/sections/todo.tex15
-rw-r--r--macros/latex/contrib/gzt/source/latex/gzt/gzt.dtx7511
-rw-r--r--macros/latex/contrib/gzt/tex/latex/gzt/gzt.cfg177
-rw-r--r--macros/latex/contrib/gzt/tex/latex/gzt/gzt.cls3999
-rw-r--r--macros/latex/contrib/gzt/tex/latex/gzt/gzt.dbx243
-rw-r--r--macros/latex/contrib/gzt/tex/latex/gzt/gzt.lbx44
-rw-r--r--macros/latex/contrib/gzt/tex/latex/gzt/gztarticle.cls3263
-rw-r--r--macros/latex/contrib/gzt/tex/latex/gzt/images/README-PICTOGRAMS.md6
-rw-r--r--macros/latex/contrib/gzt/tex/latex/gzt/images/gzt-logo.pdfbin0 -> 7088 bytes
-rw-r--r--macros/latex/contrib/rbt-mathnotes/LICENSE.txt416
-rw-r--r--macros/latex/contrib/rbt-mathnotes/README.md16
-rw-r--r--macros/latex/contrib/rbt-mathnotes/examples/cheat-sheet.pdfbin0 -> 31176 bytes
-rw-r--r--macros/latex/contrib/rbt-mathnotes/examples/cheat-sheet.tex227
-rw-r--r--macros/latex/contrib/rbt-mathnotes/examples/multivar.pdfbin0 -> 68487 bytes
-rw-r--r--macros/latex/contrib/rbt-mathnotes/examples/multivar.tex507
-rw-r--r--macros/latex/contrib/rbt-mathnotes/examples/topology-hw-1.pdfbin0 -> 41673 bytes
-rw-r--r--macros/latex/contrib/rbt-mathnotes/examples/topology-hw-1.tex246
-rw-r--r--macros/latex/contrib/rbt-mathnotes/rbt-mathnotes-formula-sheet.cls150
-rw-r--r--macros/latex/contrib/rbt-mathnotes/rbt-mathnotes-hw.cls325
-rw-r--r--macros/latex/contrib/rbt-mathnotes/rbt-mathnotes-messages.sty76
-rw-r--r--macros/latex/contrib/rbt-mathnotes/rbt-mathnotes-util.sty180
-rw-r--r--macros/latex/contrib/rbt-mathnotes/rbt-mathnotes.cls202
-rw-r--r--macros/latex/contrib/rbt-mathnotes/rbt-mathnotes.pdfbin0 -> 55670 bytes
-rw-r--r--macros/latex/contrib/rbt-mathnotes/rbt-mathnotes.sty1122
-rw-r--r--macros/latex/contrib/rbt-mathnotes/rbt-mathnotes.tex475
40 files changed, 21256 insertions, 89 deletions
diff --git a/macros/latex/contrib/easybook/easybook.dtx b/macros/latex/contrib/easybook/easybook.dtx
index c4e52d8a91..18a9524c2c 100644
--- a/macros/latex/contrib/easybook/easybook.dtx
+++ b/macros/latex/contrib/easybook/easybook.dtx
@@ -15,12 +15,12 @@
%<*class>
\NeedsTeXFormat{LaTeX2e}[2020/10/01]
\RequirePackage{l3keys2e}
-\ProvidesExplClass{easybook}{2021/11/28}{1.41B}
+\ProvidesExplClass{easybook}{2021/11/29}{1.41C}
{Typeset Chinese theses or books}
\bool_set_false:N \l__eb_compile_draft_bool
\bool_set_false:N \l__eb_title_newline_bool
-\bool_set_true:N \l__eb_class_book_bool
+\bool_set_true:N \l__eb_class_mode_book_bool
\tl_new:N \g__eb_config_tl
\tl_new:N \l__eb_font_choice_tl
\clist_new:N \g__eb_options_clist
@@ -58,7 +58,7 @@
class/book .code:n = { },
class/article .code:n =
{
- \bool_set_false:N \l__eb_class_book_bool
+ \bool_set_false:N \l__eb_class_mode_book_bool
\eb_put_ctexbook:n { oneside }
},
book .meta:n = { class = book },
@@ -253,7 +253,7 @@
\ctex_set:n
{
secnumdepth = 3,
- tocdepth = \bool_if:NTF \l__eb_class_book_bool { 1 } { 2 },
+ tocdepth = \bool_if:NTF \l__eb_class_mode_book_bool { 1 } { 2 },
part =
{
pagestyle = empty,
@@ -325,7 +325,7 @@
%<*package>
\NeedsTeXFormat{LaTeX2e}[2020/10/01]
\RequirePackage{l3keys2e,etoolbox}
-\ProvidesExplPackage{easybase}{2021/11/28}{1.41B}
+\ProvidesExplPackage{easybase}{2021/11/29}{1.41C}
{Typeset Chinese theses or books}
\cs_generate_variant:Nn \dim_set:Nn { NV }
@@ -423,8 +423,8 @@
{ \BeforeBeginEnvironment{document} }
\cs_gset_eq:NN \PackageWarning \PackageInfo
-\bool_if_exist:NF \l__eb_class_book_bool
- { \bool_set_true:N \l__eb_class_book_bool }
+\bool_if_exist:NF \l__eb_class_mode_book_bool
+ { \bool_set_true:N \l__eb_class_mode_book_bool }
\bool_if_exist:NF \l__eb_compile_draft_bool
{ \bool_set_false:N \l__eb_compile_draft_bool }
\clist_new:N \g__eb_ctex_options_clist
@@ -446,7 +446,7 @@
class/book .code:n = { },
class/article .code:n =
{
- \bool_set_false:N \l__eb_class_book_bool
+ \bool_set_false:N \l__eb_class_mode_book_bool
\boolfalse{@twoside}
\boolfalse{@mparswitch}
},
@@ -491,21 +491,21 @@
\eb_clist_map_inline:nn
{ style,subfont,spread,bibset,thmset,hdrset,tocset }
{
- \msg_new:nnn { easybase } { ignore-#1 }
+ \msg_new:nnn { easybase } { abandon-#1 }
{
- ##1~is~an~unknown~option~of~#1. \\
- Please~check~the~user~manual~for~the~supported~options.
+ ##1~is~an~abandoned~option~of~#1~module. \\
+ Please~browse~the~user~manual~for~the~new~options.
}
}
-\cs_new:Npn \eb_msg_unknown_option:n #1
- { \msg_warning:nnx { easybase } { ignore-#1 } { \l_keys_key_str } }
+\cs_new:Npn \eb_msg_abandon_option:n #1
+ { \msg_warning:nnx { easybase } { abandon-#1 } { \l_keys_key_str } }
\cs_if_exist:NF \chapter
{
\newcounter{chapter}
- \bool_set_false:N \l__eb_class_book_bool
+ \bool_set_false:N \l__eb_class_mode_book_bool
\ctex_define:n { chapter/tocline .code:n = { } }
}
-\bool_if:NF \l__eb_class_book_bool
+\bool_if:NF \l__eb_class_mode_book_bool
{
\cs_undefine:N \chapter
\ctex_after_end_preamble:n
@@ -710,24 +710,21 @@
{ \eb_mark_nouppercase:n }
{ \use:c { eb_fancyhf_#1_mark:n } {#2} }
}
+\cs_set:Npn \markdouble #1 { \markboth{#1}{\ifbool{@twoside}{#1}{}} }
\cs_new:Npn \eb@level@markdouble #1#2
- {
- \markboth
- {\eb_mark_if_uppercase:nn {#1} {#2}}
- {\ifbool{@twoside}{\eb_mark_if_uppercase:nn {#1} {#2}}{}}
- }
+ { \markdouble{\eb_mark_if_uppercase:nn {#1} {#2}} }
\cs_new:Npn \eb@level@markright #1#2
{ \markright{\eb_mark_if_uppercase:nn {#1} {#2}} }
\cs_gset:Npn \chaptermark #1 { \eb@level@markdouble{chapter}{#1} }
\cs_gset:Npn \sectionmark #1
{
- \bool_if:NTF \l__eb_class_book_bool
+ \bool_if:NTF \l__eb_class_mode_book_bool
{ \eb@level@markright{section}{#1} }
{ \eb@level@markdouble{section}{#1} }
}
\cs_gset:Npn \subsectionmark #1
{
- \bool_if:NF \l__eb_class_book_bool
+ \bool_if:NF \l__eb_class_mode_book_bool
{ \eb@level@markright{subsection}{#1} }
}
\cs_gset_eq:NN \ps@plain \ps@empty
@@ -915,7 +912,7 @@
fntext-num/unknown .code:n = \eb_fnmate_short_label_set:nn {#1} { thefootnote },
fnmate-num .meta:n = { fntext-num = #1,fnmark-num = #1 },
fnmate-num .initial:n = plain,
- unknown .code:n = \eb_msg_unknown_option:n { hdrset }
+ unknown .code:n = \eb_msg_abandon_option:n { hdrset }
}
\eb_at_end_preamble:n
@@ -1287,26 +1284,29 @@
lolskip .skip_set:N = \eb@toc@lolskip,
lolskip .initial:n = 10pt,
main-voffset .skip_set:N = \l__eb_toc_main_voffset_skip,
- main-voffset .initial:n = \bool_if:NTF \l__eb_class_book_bool { 1pc } { 0.2pc },
+ main-voffset .initial:n = \bool_if:NTF \l__eb_class_mode_book_bool { 1pc } { 0.2pc },
dotalign .bool_set:N = \l__eb_toc_dot_align_bool,
dotalign .default:n = true,
dotalign .initial:n = true,
hang .bool_set:N = \eb@titletoc@hang@fix@bool,
hang .default:n = true,
hang .initial:n = false,
- unknown .code:n = \eb_msg_unknown_option:n { tocset }
+ unknown .code:n = \eb_msg_abandon_option:n { tocset }
}
-\NewDocumentCommand{\tocrule}{sO{0.7pc}D(){1.2}mO{}}
+\NewDocumentCommand{\tocrule}{st-O{0.7pc}D(){1.2}mO{}}
{
\normalsize\normalfont
- \titlerule*[#2]{\scalebox{#3}{#4}}#5
+ \titlerule*[#3]{\scalebox{#4}{#5}}#6
\bgroup
- \IfBooleanTF{#1}
- {\thecontentspage}
+ \IfBooleanF{#2}
{
- \bool_if:NTF \l__eb_toc_dot_align_bool
- { \contentspage }
- { \thecontentspage }
+ \IfBooleanTF{#1}
+ {\thecontentspage}
+ {
+ \bool_if:NTF \l__eb_toc_dot_align_bool
+ { \contentspage }
+ { \thecontentspage }
+ }
}
\egroup
}
@@ -1340,23 +1340,27 @@
chapter/tocindent = 0em,
chapter/tocrule = \tocrule{$\cdot$}[\bfseries],
chapter/tocline = \CTEXnumberline{#1}#2,
- section/tocformat = \addvspace{0.2pc}\bool_if:NF \l__eb_class_book_bool { \sffamily },
- section/tocindent = \bool_if:NTF \l__eb_class_book_bool { 1.5em } { 0em },
+ section/tocformat =
+ {
+ \addvspace{0.2pc}
+ \bool_if:NF \l__eb_class_mode_book_bool { \sffamily }
+ },
+ section/tocindent = \bool_if:NTF \l__eb_class_mode_book_bool { 1.5em } { 0em },
section/tocrule =
{
- \bool_if:NTF \l__eb_class_book_bool
+ \bool_if:NTF \l__eb_class_mode_book_bool
{ \tocrule{$\cdot$} }
{ \tocrule{$\cdot$}[\bfseries] }
},
section/tocline = \CTEXnumberline{#1}#2,
subsection/tocformat = \addvspace{0.2pc},
- subsection/tocindent = \bool_if:NTF \l__eb_class_book_bool { 3.8em } { 1.4em },
+ subsection/tocindent = \bool_if:NTF \l__eb_class_mode_book_bool { 3.8em } { 1.4em },
subsection/tocrule = \tocrule{$\cdot$},
subsection/tocline = \CTEXnumberline{#1}#2,
list/tocformat = \addvspace{0.2pc},
list/tocindent = 0em,
list/tocrule = \tocrule{$\cdot$},
- list/voffset = 0.2pc\bool_if:NT \l__eb_class_book_bool { + 10pt },
+ list/voffset = 0.2pc\bool_if:NT \l__eb_class_mode_book_bool { + 10pt },
table/tocline = \listnumberline{table},
figure/tocline = \listnumberline{figure},
lstlisting/tocline = \listnumberline{lstlisting}
@@ -1491,7 +1495,7 @@
listing-connect = #1,equation-connect = #1
},
connect-all .initial:n = { . },
- unknown .code:n = \eb_msg_unknown_option:n { style }
+ unknown .code:n = \eb_msg_abandon_option:n { style }
}
\eb_clist_map_inline:nn
{ figure,table,lstlisting,equation }
@@ -1507,14 +1511,14 @@
}
}
-\tl_set:Nx \l__eb_toc_type_tl
- { \bool_if:NTF \l__eb_class_book_bool { chapter } { section } }
+\tl_set:Nx \l__eb_toc_title_level_tl
+ { \bool_if:NTF \l__eb_class_mode_book_bool { chapter } { section } }
\tl_new:N \eb@bitoc@title
\keys_define:nn { eb/listoc }
{
- section .code:n = \tl_set:Nn \l__eb_toc_type_tl { section },
- chapter .code:n = \tl_set:Nn \l__eb_toc_type_tl { chapter },
- none .code:n = \tl_set:Nn \l__eb_toc_type_tl { none },
+ section .code:n = \tl_set:Nn \l__eb_toc_title_level_tl { section },
+ chapter .code:n = \tl_set:Nn \l__eb_toc_title_level_tl { chapter },
+ none .code:n = \tl_set:Nn \l__eb_toc_title_level_tl { none },
article .meta:n = section,
book .meta:n = chapter,
multoc .int_set:N = \l__eb_toc_columns_int,
@@ -1523,7 +1527,7 @@
columns .meta:n = { multoc = #1 },
title .code:n = \eb_assign_toc_title:n {#1}
}
-\bool_if:NTF \l__eb_class_book_bool
+\bool_if:NTF \l__eb_class_mode_book_bool
{ \keys_define:nn { } { eb/listoc .inherit:n = ctex/chapter } }
{ \keys_define:nn { } { eb/listoc .inherit:n = ctex/section } }
\NewDocumentCommand{\eb_assign_toc_title:n}
@@ -1537,17 +1541,17 @@
{ \tl_set:Nn \eb@bitoc@title {#2} }
}
-\cs_new_protected:Npn \eb_toc_type_section_initial:
+\cs_new_protected:Npn \eb_toc_title_level_initial:
{
- \bool_if:NF \l__eb_class_book_bool
+ \bool_if:NF \l__eb_class_mode_book_bool
{
- \tl_if_eq:NnT \l__eb_toc_type_tl { chapter }
- { \tl_set:Nn \l__eb_toc_type_tl { section } }
+ \tl_if_eq:NnT \l__eb_toc_title_level_tl { chapter }
+ { \tl_set:Nn \l__eb_toc_title_level_tl { section } }
}
}
\cs_new_protected:Npn \eb_title_mark_intoc:n #1
{
- \str_case:Vn \l__eb_toc_type_tl
+ \str_case:Vn \l__eb_toc_title_level_tl
{
{ chapter } { \bichapter*{#1}{\eb@bitoc@title} }
{ section } { \bisection*{#1}{\eb@bitoc@title} }
@@ -1555,7 +1559,7 @@
}
\cs_new_protected:Npn \eb_title_mark_notoc:n #1
{
- \str_case:Vn \l__eb_toc_type_tl
+ \str_case:Vn \l__eb_toc_title_level_tl
{
{ chapter } { \chapter*{\phantomsection #1}\chaptermark{#1} }
{ section } { \section*{\phantomsection #1}\sectionmark{#1} }
@@ -1563,10 +1567,10 @@
}
\cs_new_protected:Npn \eb_title_number_intoc_spec:nn #1#2
{
- \eb_toc_type_section_initial:
+ \eb_toc_title_level_initial:
\IfBooleanTF{#1}
{
- \str_case:Vn \l__eb_toc_type_tl
+ \str_case:Vn \l__eb_toc_title_level_tl
{
{ chapter } { \bichapter{\eb@toc@title}{\eb@bitoc@title} }
{ section } { \bisection{\eb@toc@title}{\eb@bitoc@title} }
@@ -1579,7 +1583,7 @@
}
\cs_new_protected:Npn \eb_biber_title_level_spec:n #1
{
- \bool_if:NTF \l__eb_class_book_bool
+ \bool_if:NTF \l__eb_class_mode_book_bool
{ \bichapter*{#1}{\l__eb_bib_en_bitoc_title_tl} }
{ \bisection*{#1}{\l__eb_bib_en_bitoc_title_tl} }
\sectionmark{#1}
@@ -1596,7 +1600,7 @@
}
\cs_new_protected:Npn \eb_toc_if_title_voffset:n #1
{
- \tl_if_eq:NnF \l__eb_toc_type_tl { none }
+ \tl_if_eq:NnF \l__eb_toc_title_level_tl { none }
{ \vspace*{-\dim_use:c { l__eb_toc_#1_voffset_skip }} }
}
\cs_new_protected:Npn \eb_toc_list_parse:nnnnn #1#2#3#4#5
@@ -1628,7 +1632,7 @@
\tl_set_eq:NN \eb@toc@title \contentsname
\tl_set:Nn \eb@bitoc@title { Contents }
\IfValueT{#2}{\keys_set:nn { eb/listoc } {#2}}
- \eb_toc_type_section_initial:
+ \eb_toc_title_level_initial:
\eb_title_mark_notoc:n { \eb@toc@title }
\eb_toc_if_title_voffset:n { main }
\eb_toc_start_multi_column_ext:n { toc }#3
@@ -1727,7 +1731,7 @@
footnote .initial:n = \rmfamily,
marginpar .tl_set:N = \marginfont,
marginpar .initial:n = \rmfamily\footnotesize,
- unknown .code:n = \eb_msg_unknown_option:n { subfont }
+ unknown .code:n = \eb_msg_abandon_option:n { subfont }
}
\fp_new:N \l__eb_spread_table_fp
@@ -1748,7 +1752,7 @@
footnote .fp_set:N = \l__eb_spread_footnote_fp,
footnote .initial:n = 1.2,
spread-all .meta:n = { line = #1,table = #1,math = #1,caption = #1,footnote = #1 },
- unknown .code:n = \eb_msg_unknown_option:n { spread }
+ unknown .code:n = \eb_msg_abandon_option:n { spread }
}
\DeclareCaptionLabelFormat{parens}{\bothIfFirst{#1}{~}(#2)}
@@ -1987,7 +1991,7 @@
thmbox .meta:n = { thmframe = #1 },
thmbox .default:n = true,
notebraces .tl_set:N = \l__eb_thm_notebraces_tl,
- unknown .code:n = \eb_msg_unknown_option:n { thmset }
+ unknown .code:n = \eb_msg_abandon_option:n { thmset }
}
\eb_patch_cmd:wnn \thmt@setheadstyle
{ \def\NAME{\the\thm@headfont ##1} }
@@ -2006,7 +2010,7 @@
headfont = \color{ctex@emph}\sffamily,
postheadspace = 1em,
notebraces = {(}{)},
- within = \bool_if:NT \l__eb_class_book_bool { chapter },
+ within = \bool_if:NT \l__eb_class_mode_book_bool { chapter },
headformat = \NAME\NUMBER\NOTE
}
\msg_new:nnn { easybase } { need-tcolorbox }
@@ -2108,7 +2112,7 @@
datafile .clist_set:N = \l__eb_bib_datafile_clist,
bitoc-title .tl_set:N = \l__eb_bib_en_bitoc_title_tl,
bitoc-title .initial:n = Reference,
- unknown .code:n = \eb_msg_unknown_option:n { bibset }
+ unknown .code:n = \eb_msg_abandon_option:n { bibset }
}
\cs_new_protected:Npn \eb_natbib_bibtex_set:
@@ -2366,7 +2370,8 @@
\ctex_define:n
{
lstlistlistingname .tl_set:N = \listlstlistingname,
- lstlistingname .tl_set:N = \lstlistingname
+ lstlistingname .tl_set:N = \lstlistingname,
+ exercisename .tl_set:N = \exercisename
}
\tl_if_eq:NnTF \l__ctex_scheme_tl { chinese }
{
@@ -2378,7 +2383,8 @@
listfigurename = 图片索引,
listtablename = 表格索引,
lstlistlistingname = 代码索引,
- lstlistingname = 代码
+ lstlistingname = 代码,
+ exercisename = 练习
}
\labelformat{equation}{式(#1)}
\labelformat{section}{节 #1}
@@ -2389,7 +2395,8 @@
{
abstractname = Abstract,
lstlistlistingname = List~of~Codes,
- lstlistingname = Code
+ lstlistingname = Code,
+ exercisename = Exercise
}
\labelformat{equation}{Equation~(#1)}
\labelformat{section}{Section~#1}
@@ -2397,17 +2404,18 @@
}
%</package>
%<*tcolorbox>
-\ProvidesExplFile{eb-tcolorbox.cfg}{2021/11/28}{1.41B}
+\ProvidesExplFile{eb-tcolorbox.cfg}{2021/11/29}{1.41C}
{Customization of tcolorbox for easybook}
\cs_set_protected:Npn \setexercise #1
{ \keys_set:nn { eb/exercise } {#1} }
\cs_set_protected:Npn \addtcbstyle #1#2
{ \tcbset{#1/.append~style = {#2}} }
-\cs_set_protected:Npn \newtcbstyle #1#2
+\cs_set_protected:Npn \deftcbstyle #1#2
{ \tcbset{#1/.style = {#2}} }
\cs_new_protected:Npn \tcbappstyle
- { \@ifstar{\newtcbstyle}{\addtcbstyle} }
+ { \@ifstar{\deftcbstyle}{\addtcbstyle} }
+\cs_set_eq:NN \newtcbstyle \deftcbstyle
\keys_define:nn { eb/exercise }
{
color .tl_set:N = \eb@tc@background@color,
@@ -2415,7 +2423,7 @@
number .tl_set:N = \eb@tc@list@number,
number .initial:n = 1.,
title .tl_set:N = \eb@tc@exercise@title,
- title .initial:n = \c__eb_name_exercise_tl,
+ title .initial:n = \exercisename,
numsep .dim_set:N = \eb@toc@exercise@numsep,
numsep .initial:n = 0.5em,
tocnumsep .dim_set:N = \eb@toc@exertoc@numsep,
@@ -2426,7 +2434,7 @@
}
\tl_gset:Nn \eb@tc@line@skip { 0.5\baselineskip }
-\newtcbstyle{tc-theorem}
+\deftcbstyle{tc-theorem}
{
enhanced~jigsaw,pad~at~break* = 3pt,
opacityback = 0,
@@ -2437,7 +2445,7 @@
top = \eb@tc@line@skip,bottom = \eb@tc@line@skip,
middle = \eb@tc@line@skip
}
-\newtcbstyle{tc-outline}
+\deftcbstyle{tc-outline}
{
enhanced,nofloat,
tikznode~boxed~title,
@@ -2450,14 +2458,14 @@
arc = 3pt,
left = 2pc,right = 2pc,top = 1.5pc,bottom = 1pc
}
-\newtcbstyle{tc-exercise}
+\deftcbstyle{tc-exercise}
{
blank,on~line,center,
sharpish~corners,
fontupper = \Large\sffamily,
beforeafter~skip = 3.75ex plus .2ex minus .1ex
}
-\newtcbstyle{tc-easybox}
+\deftcbstyle{tc-easybox}
{
enhanced~jigsaw,pad~at~break* = 3pt,
center~title,
@@ -2471,7 +2479,7 @@
titlerule = 0pt,
beforeafter~skip = 1.75ex plus .2ex minus .1ex
}
-\newtcbstyle{tc-ebparbox}
+\deftcbstyle{tc-ebparbox}
{
frame~hidden,
enhanced~jigsaw,pad~at~break* = 3pt,
@@ -2481,15 +2489,15 @@
middle = \eb@tc@line@skip,bottomtitle = \eb@tc@line@skip,
beforeafter~skip = 1.75ex plus .2ex minus .1ex
}
-\newtcbstyle{tc-ebemph}{on~line,blank}
-\newtcbstyle{tc-eblink}
+\deftcbstyle{tc-ebemph}{on~line,blank}
+\deftcbstyle{tc-eblink}
{
standard~jigsaw,on~line,
top = 1.5pt,bottom = 1.5pt,left = 1.5pt,right = 1.5pt,
boxrule = 0.5pt,arc = 1pt,
opacityback = 0.2
}
-\newtcbstyle{tc-ebfbox}
+\deftcbstyle{tc-ebfbox}
{
on~line,sharpish~corners,
top = 1.5pt,bottom = 1.5pt,left = 1pt,right = 1pt,
@@ -2511,7 +2519,6 @@
\tl_gset:Nn \eb@tc@exercise@ifnametrue {#1}
\tl_gset:Nn \eb@tc@exercise@ifnamefalse {#2}
}
-\eb_thm_name_set:nnn { exercise } { Exercise } { 练习 }
\tcphantomifname
{
\markright
diff --git a/macros/latex/contrib/easybook/easybook.pdf b/macros/latex/contrib/easybook/easybook.pdf
index 45d99e1141..c039368412 100644
--- a/macros/latex/contrib/easybook/easybook.pdf
+++ b/macros/latex/contrib/easybook/easybook.pdf
Binary files differ
diff --git a/macros/latex/contrib/easybook/easybook.tex b/macros/latex/contrib/easybook/easybook.tex
index 168e49d8e4..af55466e62 100644
--- a/macros/latex/contrib/easybook/easybook.tex
+++ b/macros/latex/contrib/easybook/easybook.tex
@@ -20,8 +20,8 @@
name = easybook,
color-scheme = blue,
title = EASYBOOK 使用手册,
- version = v1.41B,
- date = 2021/11/28,
+ version = v1.41C,
+ date = 2021/11/29,
authors = 瞿毅,
info = 排版简体中文学位论文和书籍,
email = q1jx@foxmail.com,
@@ -75,6 +75,7 @@
\newsplitarg{\splitmarg}{\{}{\}}
\newcommand{\spemmeta}{\splitmeta[\code{|}]}
\newsplitarg[\spemmeta]{\spemcoarg}{[}{]}
+\newcommand{\harg}{\textcolor{argument}{\code{-}}}
\NewDocumentCommand{\passto}{smm}
{\IfBooleanF{#1}{\color{Blue}}#3\ifblank{#2}{}{\ttfamily[#2]}}
\newcommand{\insertblr}[2]
@@ -591,7 +592,7 @@
\kvsplit*{notebraces}{\meta{左括号}\code{\}\{}\meta{右括号}}\Default{\Carg{(}\Carg{)}}
设置定理题注两边的括号,两个必选参数分别代表左括号和右括号。
\keyval-{headformat}{标题排列}\Default{\cs*{NAME}\cs*{NUMBER}\cs*{NOTE}}
- 定理标题各组成元素的位置排列和格式。定理标题由定理名、编号和题注组成,\meta{标题排列} 中参数 \cs*{NAME}、\cs*{NUMBER} 和 \cs*{NOTE} 分别代表定理名、编号和题注。
+ 定理标题各组成元素的位置排列和格式。定理标题由定理名、编号和题注组成,\meta{标题排列} 中命令 \cs*{NAME}、\cs*{NUMBER} 和 \cs*{NOTE} 分别代表定理名、编号和题注。
\end{options}
\subsubsection{新建定理环境}
@@ -619,7 +620,7 @@
\begin{itemize}
\item 中英文模式下标题不同,英文标题为可选项,默认为首字母大写的 \meta{环境名}。
\item 自动定义交叉引用的格式,引用标签前缀为相应定理名。
- \item 定理盒子选项 \option{thmframe} 仍然生效,\meta{盒子风格} 可以使用 \cs{newtcbstyle} 命令创建。
+ \item 定理盒子选项 \option{thmframe} 仍然生效,\meta{盒子风格} 可以使用 \cs{deftcbstyle} 命令创建。
\item 新建定理环境默认使用的 \meta{定理样式} 为 \code{easy-theorem},而不是 \pkg*{thmtools} 的默认样式。
\end{itemize}
@@ -697,9 +698,10 @@
\end{commands}
\begin{commands}\noitemsep
- \command*{markboth}[\marg{左页页眉内容}\marg{右页页眉内容}]\default{}
- \command*{markright}[\marg{右页页眉内容}]
- 命令 \cs*{markboth} 和 \cs*{markright} 用于手动设置当前页标题标记,一般紧随标题命令,特殊情况下可以使用它们得到需要的页眉标志。上述标记命令内容的选项便是基于这两个命令。如果是单面打印,则 \meta{左页页眉内容} 无效。
+ \command*{markboth}[\marg{左页标题标记}\marg{右页标题标记}]\default{}
+ \command*{markright}[\marg{右页标题标记}]\default{}
+ \command{markdouble}[\marg{双页标题标记}]
+ 这三个命令用于手动设置当前页标题标记,一般紧随标题命令,特殊情况下可以使用它们得到需要的页眉页脚内容。上述标记命令内容的选项便是基于这三个命令。其中 \cs{markdouble} 根据是否是双面打印设置相应标记。如果是单面打印,则 \meta{左页标题标记} 无效。
\end{commands}
\begin{commands}
@@ -801,8 +803,8 @@
\end{options}
\begin{commands}
- \command{tocrule}[\sarg\oarg{引导点间距}\darg{放大因子}\marg{引导点}\oarg{页码格式}]
- 目录命令 \cs{tocrule} 生成目录引导线,需要在引导线选项 \option{tocrule} 中使用。带有星号的命令会使当前级别的目录引导线右边与页码相连而不是对齐。\meta{引导点间距} 需带有长度单位,\meta{放大因子} 不带单位,为 \meta{引导点} 的放大倍数,\meta{引导点} 一般为英文句号或 \cs*{cdot} 中心点符号。\meta{页码格式} 的代码位于页码前面,可以设置页码字体和距离等,最后一个命令可以带有一个参数,这个参数为页码编号。
+ \command{tocrule}[\sarg\harg\oarg{引导点间距}\darg{放大因子}\marg{引导点}\oarg{页码格式}]
+ 目录命令 \cs{tocrule} 生成目录引导线,需要在引导线选项 \option{tocrule} 中使用。带有星号的命令会使当前级别的目录引导线右端与页码相连而不是对齐。带有 \harg{} 号的命令不添加引导线后的目录页码。\meta{引导点间距} 需带有长度单位,\meta{放大因子} 不带单位,为 \meta{引导点} 的放大倍数,\meta{引导点} 一般为英文句号或 \cs*{cdot} 中心点符号。\meta{页码格式} 的代码位于页码前面,可以设置页码字体和距离等,最后一个命令可以带有一个参数,这个参数为页码编号。
\command*{CTEXnumberline}[\marg{编号级别}]
目录命令 \cs*{CTEXnumberline} 用于在 C\TeX 文档类的 \option*{tocline} 选项中设置目录的标签,它已经被重新定义,使得目录标签后代码选项 \option{tocafter} 仍然有效。\meta{编号级别} 为 \code{chapter} 和 \code{section} 等,也可用参数 \code{\#1} 代替当前级别类型,标题名用参数 \code{\#2} 代替一般不变。
\begin{ctexexam}
@@ -829,7 +831,7 @@
\keyval-{main-voffset}{弹性长度}
文档主目录标题下方的间距补偿,一般为正值,用于抵消目录中首行的额外垂直间距。
\keybool{dotalign}\Default{true}
- 引导线选项 \option{dotalign} 可以使目录引导线右边对齐并与页码保持一定间隙,否则会与页码连接。
+ 引导线选项 \option{dotalign} 可以使目录引导线右端对齐并与页码保持一定间隙,否则会与页码连接。
\keyval-{tocafter-all}{距离命令}\Default{\cs*{hspace}\Carg{1em}}
统一设置所有级别在目录中标签与标题间的代码。
\keyval-{tocindent-all}{刚性长度}
@@ -995,7 +997,7 @@
\keyval-{color}{标题背景颜色名}\Default{DeepSkyBlue}
习题标题盒子背景颜色,可以使用 \pkg*{xcolor} 自定义颜色或使用色库。
\keyval-{title}{环境标题}
- 习题的标题,可以匹配中英文模式,习题环境使用 \parg{} 参数时无效。
+ 习题的标题,可以匹配中英文模式,习题环境使用 \parg{} 参数时无效。也可以使用 \option{exercisename} 选项设置习题环境标题的默认值。
\keyval-{number}{习题编号类型}\Default{1.}
标题编号输出选项 \option{number} 为短编号形式,应当包含 \code{A}、\code{a}、\code{I}、\code{i}、或 \code{1} 其中一个符号。
\keyval-{numsep}{编号与标题的间距}\Default{0.5em}
@@ -1021,12 +1023,12 @@
\label{subsec:box}
使用盒子以及小节 \ref{subsec:exercise} 中的 \env{exercise} 环境需要在导言区\textbf{手动载入} \pkg*{tcolorbox} 宏包,它们 \meta{配置选项} 的键值列表同样由 \pkg*{tcolorbox} 提供支持,具体选项可见宏包文档的 Option Keys 一节,可以进行边距、字体及背景颜色等各种个性化设置,一些配置会覆盖预设。
\begin{commands}
- \command{newtcbstyle}[\marg{盒子风格}\marg{键值列表}]
+ \command{deftcbstyle}[\marg{盒子风格}\marg{键值列表}]
新建或重置一个名称为 \meta{盒子风格} 的 \pkg*{tcolorbox} 宏包盒子风格,可以与 \cs{addtcbstyle} 命令联用。
\command{addtcbstyle}[\marg{盒子风格}\marg{键值列表}]
修改已存在的 \pkg*{tcolorbox} 宏包盒子风格。这个命令可以调整以下即将介绍的预置盒子风格,对于预置盒子来说参数 \meta{盒子风格} 即为它们对应的环境或命令名。
\begin{ctexexam}
- \newtcbstyle{mytcb} % 新建一个盒子风格mytcb
+ \deftcbstyle{mytcb} % 新建一个盒子风格mytcb
{
colback = Snow,colframe = LimeGreen,coltext = Coral,
fontupper = \bfseries,arc = 6pt,
diff --git a/macros/latex/contrib/gzt/doc/latex/gzt/CHANGELOG.md b/macros/latex/contrib/gzt/doc/latex/gzt/CHANGELOG.md
new file mode 100644
index 0000000000..0f36ea2a83
--- /dev/null
+++ b/macros/latex/contrib/gzt/doc/latex/gzt/CHANGELOG.md
@@ -0,0 +1,59 @@
+# [Unreleased]
+
+# [1.0.1] - 2021-02-14
+
+## Added
+- Option to create moral reports (`gzt` class only).
+- Local (to a given article) table of contents
+
+## Changed
+- The class now relies on the new LaTeX core hooks.
+- Documentation revised.
+- Various improvements.
+
+## Fixed
+- Superflous uppercases removed (cont.).
+- `gztcode` environments partially gobble their content under certain
+ conditions.
+- Various other small bugs.
+
+# [1.0.0] - 2020-03-17
+
+## Added
+- CHANGELOG file (following https://keepachangelog.com/en/1.0.0/).
+- Semantic versionning (following https://semver.org/).
+
+## Changed
+- Compilation date displayed only if the issue number is not specified
+ (`gztarticle` class only).
+- Prevent column breaks within items of "Comité de rédaction" (at the price of
+ unbalanced columns).
+
+## Fixed
+- Track changes in `expl3`.
+- Superflous uppercases removed.
+- Index directive in `latexmk` config file modernized.
+
+# [0.98] - 2018-04-09
+
+## Changed
+- Support for `biblatex` 3.8 changes.
+- Track changes in `expl3`.
+- Special editions implemented.
+
+## Fixed
+- Several bug fixes.
+
+# [0.96] - 2017-04-07
+
+## Changed
+- Figures and tables:
+ - with recurrent label and number but without any caption,
+ - with caption but without any recurrent label nor numbered,
+ implemented.
+- Frames without any label, number nor caption implemented.
+- Track changes in `expl3`.
+
+# [0.9] - 2015-05-02
+
+- Initial CTAN release of the `gzt` bundle.
diff --git a/macros/latex/contrib/gzt/doc/latex/gzt/README.md b/macros/latex/contrib/gzt/doc/latex/gzt/README.md
new file mode 100644
index 0000000000..63cb2cd7e1
--- /dev/null
+++ b/macros/latex/contrib/gzt/doc/latex/gzt/README.md
@@ -0,0 +1,10 @@
+This bundle provides two classes and BibLaTeX styles for the French journal [“La
+Gazette des Mathématiciens”](https://smf.emath.fr/les-publications/la-gazette):
+
+- `gzt` for the complete issues of the journal, aimed at the Gazette’s team,
+- `gztarticle`, intended for authors who wish to publish an article in the
+ Gazette. This class’s goals are to
+ - faithfully reproduce the layout of the Gazette, thus enabling the authors to
+ be able to work their document in actual conditions, and
+ - provide a number of tools (commands and environments) to facilitate the
+ drafting of documents, in particular those containing mathematical formulas.
diff --git a/macros/latex/contrib/gzt/doc/latex/gzt/english/README-TRANSLATION.md b/macros/latex/contrib/gzt/doc/latex/gzt/english/README-TRANSLATION.md
new file mode 100644
index 0000000000..b8709820a3
--- /dev/null
+++ b/macros/latex/contrib/gzt/doc/latex/gzt/english/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/latex/gzt/french/denis.png b/macros/latex/contrib/gzt/doc/latex/gzt/french/denis.png
new file mode 100644
index 0000000000..545b4a409e
--- /dev/null
+++ b/macros/latex/contrib/gzt/doc/latex/gzt/french/denis.png
Binary files differ
diff --git a/macros/latex/contrib/gzt/doc/latex/gzt/french/gzt-fr.bib b/macros/latex/contrib/gzt/doc/latex/gzt/french/gzt-fr.bib
new file mode 100644
index 0000000000..40b8198d46
--- /dev/null
+++ b/macros/latex/contrib/gzt/doc/latex/gzt/french/gzt-fr.bib
@@ -0,0 +1,36 @@
+% Encoding: UTF-8
+
+
+@Online{Bitouze,
+ Title = {Conférence \LaTeX{} \no6},
+ Author = {Bitouzé, Denis},
+ Date = {2020-11-25},
+ Url = {https://frama.link/en-ligne6},
+ Language = {french},
+ Organization = {Université du Littoral Côte d'Opale},
+ Subtitle = {Bibliographie (biber/biblatex), citations d’extraits},
+}
+
+@Online{Bitouze7,
+ Title = {Conférence \LaTeX{} \no7},
+ Author = {Bitouzé, Denis},
+ Date = {2020-11-25},
+ Url = {https://frama.link/en-ligne7},
+ Language = {french},
+ Organization = {Université du Littoral Côte d'Opale},
+ Subtitle = {Glossaires et (liste d’)acronymes, index},
+}
+
+@Manual{Ensenbach,
+ Title = {Liste des péchés des utilisateurs de \LaTeXe},
+ Author = {Ensenbach, Marc and Trettin, Mark and Alfonsi, Bernard},
+ Date = {2011-09-20},
+ Language = {french},
+ Subtitle = {Commandes et extensions obsolètes, et autres erreurs},
+ Url = {http://mirrors.ctan.org/info/l2tabu/french/l2tabufr.pdf},
+
+ Owner = {bitouze},
+ Timestamp = {2015.03.18}
+}
+
+@Comment{jabref-meta: databaseType:biblatex;}
diff --git a/macros/latex/contrib/gzt/doc/latex/gzt/french/gzt-fr.pdf b/macros/latex/contrib/gzt/doc/latex/gzt/french/gzt-fr.pdf
new file mode 100644
index 0000000000..9f253543c4
--- /dev/null
+++ b/macros/latex/contrib/gzt/doc/latex/gzt/french/gzt-fr.pdf
Binary files differ
diff --git a/macros/latex/contrib/gzt/doc/latex/gzt/french/gzt-fr.tex b/macros/latex/contrib/gzt/doc/latex/gzt/french/gzt-fr.tex
new file mode 100644
index 0000000000..52839b4fec
--- /dev/null
+++ b/macros/latex/contrib/gzt/doc/latex/gzt/french/gzt-fr.tex
@@ -0,0 +1,118 @@
+\documentclass{gztarticle}
+%
+\usepackage[gzt]{denisbdoc}
+\usepackage[firstpage]{draftwatermark}
+%
+\lstset{%
+ alsolanguage=[varioref]TeX,%
+}
+%
+\indexsetup{level=\section*,toclevel=section,noclearpage,firstpagestyle=__gzt_mainmatter_ps}
+\makeindex[columns=3]
+\tcbset{index format=off}
+%
+\etocsettocstyle{\section*{\contentsname}}{}%
+\etocsetstyle {section}
+{}
+{\leavevmode\leftskip 0cm\relax}
+{\bfseries\normalsize\makebox[.6cm][l]{\etocnumber}%
+ \etocname\nobreak\hfill\nobreak%
+ \makebox[.5cm][r]{%
+ \etocpage%
+ }%
+ \par%
+}
+{\medskip}
+\etocsetstyle {subsection}
+{}
+{\leavevmode\leftskip .6cm\relax }
+{\mdseries\normalsize\makebox[1cm][l]{\etocnumber}%
+ \etocname\nobreak\leaders\etoctoclineleaders\hfill\nobreak
+ \makebox[.5cm][r]{%
+ \etocpage%
+ }%
+ \par%
+}
+{}
+%
+\ExplSyntaxOn
+\renewpagestyle{__gzt_mainmatter_ps}[]{%
+ \widenhead{\c_zero_dim}{\c_zero_dim}
+ \sethead%
+ [
+ \tikz[remember~picture,overlay] {\g__gzt_mainmatter_evenpage_headrule_tl}
+ ]%
+ [%
+ \adjustbox{raise={\c__gzt_header_yshift_dim}{\height}}{%
+ \large\bfseries\scshape\color{__gzt_rubric_head_text_color}\g__gzt_short_title_tl%
+ }%
+ ]%
+ []%
+ {}%
+ {%
+ \adjustbox{raise={\c__gzt_header_yshift_dim}{\height}}{%
+ \bfseries\color{__gzt_rubric_head_text_color}\sectiontitle%
+ }
+ }%
+ {
+ \tikz[remember~picture,overlay] {\g__gzt_mainmatter_oddpage_headrule_tl}
+ }%
+ \setfoot%
+ [\c__gzt_footer_size_font_tl\thepage]%
+ [%
+ \uppercase{\c__gzt_footer_string_tl}
+ ]%
+ []%
+ {}%
+ {%
+ \uppercase{\c__gzt_footer_string_tl}%
+ }%
+ {\c__gzt_footer_size_font_tl\thepage}%
+}
+\ExplSyntaxOff
+%
+\SetWatermarkColor{gray!10}%
+\SetWatermarkFontSize{30mm}%
+\SetWatermarkText{\MakeUppercase{travail en cours}}%
+%
+\addbibresource{gzt-fr.bib}
+%
+\input{sections/fixed-footnotes}
+%
+\DTMsavedate{filedate}{\gztfiledate}
+%
+\begin{document}
+\title[short=Documentation de la classe de la \emph{Gazette} destinée aux
+auteurs]{Documentation de la classe \LaTeX{} de la \gzt*{} destinée aux
+ auteurs}
+\subtitle[short=Version \gztfileversion{}
+(\DTMusedate{filedate})]{\bigskip\Large Version \gztfileversion{} en date du
+ \DTMusedate{filedate}}%
+%
+\author[%
+affiliation={%
+ Université du Littoral Côte d'Opale, Laboratoire de mathématiques pures et
+ appliquées%
+},%
+photo=./denis,%
+email=denis.bitouze@univ-littoral.fr,%
+webpage=https://gte.univ-littoral.fr/Members/denis-bitouze/pub/latex,%
+]{Bitouzé, Denis}
+%
+\maketitle*
+%
+\localtableofcontents
+%
+\input{sections/gztarticle}
+\input{sections/packages-charges}
+\input{sections/notations}
+%
+\printindex
+%
+\printbibliography
+\end{document}
+
+%%% Local Variables:
+%%% mode: latex
+%%% TeX-master: t
+%%% End:
diff --git a/macros/latex/contrib/gzt/doc/latex/gzt/french/latexmkrc b/macros/latex/contrib/gzt/doc/latex/gzt/french/latexmkrc
new file mode 100644
index 0000000000..d324cb3be2
--- /dev/null
+++ b/macros/latex/contrib/gzt/doc/latex/gzt/french/latexmkrc
@@ -0,0 +1,20 @@
+$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]\"" );
+}
+
+$makeindex = 'texindy -L french -C utf8';
+
+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;
diff --git a/macros/latex/contrib/gzt/doc/latex/gzt/french/sections/fixed-footnotes.tex b/macros/latex/contrib/gzt/doc/latex/gzt/french/sections/fixed-footnotes.tex
new file mode 100644
index 0000000000..87986360db
--- /dev/null
+++ b/macros/latex/contrib/gzt/doc/latex/gzt/french/sections/fixed-footnotes.tex
@@ -0,0 +1,14 @@
+\DeclareFixedFootnote{\conseilslatex}{Et donne de façon subliminale quelques
+ conseils \LaTeX{}. On consultera \autocite{Ensenbach} pour un panorama plus
+ complet des commandes et extensions obsolètes (et autres erreurs).}
+\DeclareFixedFootnote{\suitecompilations}{Pour automatiser ces compilations, on
+ pourra recourir au \enquote{compilateur} \program{latexmk}, fourni par toute
+ distribution \TeX{} moderne, en s'aidant du fichier de configuration
+ \file{latexmkrc} joint à la présente classe.}
+
+%%% Local Variables:
+%%% mode: latex
+%%% eval: (latex-mode)
+%%% ispell-local-dictionary: "fr_FR"
+%%% TeX-master: "../gzt-fr.tex"
+%%% End:
diff --git a/macros/latex/contrib/gzt/doc/latex/gzt/french/sections/gztarticle.tex b/macros/latex/contrib/gzt/doc/latex/gzt/french/sections/gztarticle.tex
new file mode 100644
index 0000000000..06bde597b7
--- /dev/null
+++ b/macros/latex/contrib/gzt/doc/latex/gzt/french/sections/gztarticle.tex
@@ -0,0 +1,1521 @@
+\section{Introduction}
+\label{sec-introduction}
+
+\begin{dbremark}{Documentation : travail en cours}{}
+ La présente documentation est un travail en cours. Nous remercions d'avance
+ les lecteurs qui ont des remarques à formuler ou qui trouveront des erreurs de
+ nous les signaler à l'adresse courriel figurant en fin de document.
+\end{dbremark}
+
+La \smf fournit la classe \LaTeX{} \gztauthor{} destinée aux auteurs souhaitant
+publier un article dans la
+\href{http://smf4.emath.fr/Publications/Gazette/}{\gzt*{}}. Cette classe a pour
+but :
+\begin{enumerate}
+\item de reproduire fidèlement la maquette de la \gzt{}, permettant ainsi aux
+ auteurs de pouvoir travailler la mise en page de leur document dans des
+ conditions (quasi-)réelles ;
+\item de fournir un certain nombre d'outils (commandes et environnements)
+ destinés à faciliter la composition de documents, notamment ceux contenant des
+ formules de mathématiques.
+\end{enumerate}
+
+\section{Avertissements préliminaires}
+\label{sec-avert-prel}
+
+\begin{dbwarning}{Codage d'entrée \protect\lstinline+UTF-8+ obligatoire}{}
+ La \gztauthorcl{} de la \gzt{} repose de façon cruciale sur un codage
+ d'entrée en |UTF-8| :
+ \begin{itemize}
+ \item elle charge le \Package{inputenc}\footnote{%
+ Il convient donc de \emph{ne pas} charger ce package : on se reportera
+ à la \vref{sec-canevas-de-fichier} pour un canevas de fichier source
+ destiné à la \gzt{} et notamment pour un préambule typique.%
+ %
+ } avec l'option \docAuxKey{utf8} ;
+ \item elle suppose que les fichiers sources \file{.tex} sont effectivement
+ codés en |UTF-8| : on veillera donc à ce que l'éditeur utilisé soit réglé
+ sur ce codage d'entrée.
+ \end{itemize}
+\end{dbwarning}
+
+\begin{dbwarning}{Format et compilation \hologo{pdfLaTeX}}{}
+ La composition des numéros de la \gzt*{} met en œuvre :
+ \begin{itemize}
+ \item le format \hologo{LaTeX}\footnote{Sous sa version \hologo{LaTeXe}, la
+ plus courante de nos jours.}. On évitera donc les commandes des autres
+ formats tels que \hologo{plainTeX} ;
+ \item le compilateur \hologo{pdfLaTeX}. En particulier, le compilateur
+ \hologo{LaTeX} n'étant pas utilisé :
+ \begin{enumerate}
+ \item les formats d'images acceptés sont \format{jpg}, \format{png} et
+ \format{pdf}\footnote{Le format recommandé est \format{pdf} car il est
+ vectoriel si bien que la qualité des images n'est pas dégradée en cas de
+ redimensionnement.}. Le \Format{eps}, quoique indirectement
+ supporté, est déconseillé ;
+ \item le code \program{PostScript}, notamment via \program{PSTricks}, n'est
+ pas directement pris en charge. Bien qu'il soit accepté, il est à éviter
+ dans la mesure du possible.
+ \end{enumerate}
+ \end{itemize}
+\end{dbwarning}
+
+\begin{dbremark}{Composition par défaut en bi-colonne}{}
+ Sauf cas particuliers, tous les articles de la \gzt{} sont composés en mode
+ bi-colonne.
+\end{dbremark}
+
+\section{Article standard}
+\label{sec-article-standard}
+
+Nous commençons par décrire les éléments caractéristiques d'un article standard.
+
+\subsection{Préparation du \enquote{titre} de l'article}
+\label{sec-prep-de-lart}
+
+Cette section liste les commandes, options et environnement permettant de
+\emph{préparer} le \enquote{titre} de l'article ainsi que son éventuelle partie
+finale.
+
+\subsubsection{Titre, sous-titre}
+\label{sec-titre}
+
+\begin{docCommand}[doc description=\mandatory]{title}{\oarg{option}\marg{titre}}
+ Cette commande définit le \meta{titre} de l'article. Celui-ci apparaît alors
+ en début d'article et aussi comme métadonnée \enquote{Titre} du fichier
+ \textsc{pdf} correspondant.
+\end{docCommand}
+
+\begin{docCommand}{subtitle}{\oarg{option}\marg{sous-titre}}
+ Cette commande définit l'éventuel \meta{sous-titre} de l'article. Celui-ci
+ est automatiquement ajouté au titre.
+\end{docCommand}
+
+Les commandes \refCom{title} et \refCom{subtitle} admettent un argument
+optionnel permettant de spécifier un (sous-)titre court au moyen de la clé
+\refKey{short}.
+
+\begin{docKey}{short}{=\meta{(sous-)titre court}}{pas de valeur par défaut,
+ initialement vide}
+ Cette clé définit un (sous-)titre \enquote{court} de l'article qui figure
+ alors à la place du (sous-)titre \enquote{normal} dans le sommaire et en titre
+ courant\footnote{En entête.}.
+\end{docKey}
+
+\begin{bodycode}[listing options={deletekeywords={[1]{exemple,title,label}}}]
+\title[short=Les travaux de Martin \surname{Hairer}]{Martin \surname{Hairer},
+ l'équation de KPZ et les structures de régularité}
+\end{bodycode}
+
+\begin{dbremark}{Affichage des titre et sous-titre}{}
+ Pour que les titre et sous-titre soient affichés, il est nécessaire de
+ recourir à la commande habituelle \refCom{maketitle}.
+\end{dbremark}
+
+\subsubsection{Auteur(s)}
+\label{sec-auteurs}
+
+Un auteur d'article est spécifié au moyen de la commande \refCom{author}
+suivante. En cas d'auteurs multiples, il suffit de recourir à plusieurs
+occurrences de cette commande.
+
+\begin{docCommand}{author}{\oarg{options}\brackets{\meta{Nom}, \meta{Prénom}}}
+ Cette commande, facultative, définit un auteur d'article.
+\end{docCommand}
+%
+\begin{dbwarning}{Format des prénom et nom de l'auteur}{}
+ On veillera à ce que :
+ \begin{enumerate}
+ \item la saisie des prénom et nom de l'auteur soit conforme à la syntaxe
+ (identique à celle de \hologo{BibTeX} et \package{biblatex}) :
+ %
+\begin{bodycode}[listing options={showspaces}]
+"\meta{Nom}", "\meta{Prénom}"
+\end{bodycode}
+ %
+ \item les éventuels accents figurent dans les \meta{Prénom} et
+ \meta{Nom} ;
+ \item le \meta{Nom} \emph{ne} soit \emph{pas} saisi en capitales
+ (sauf pour la ou les majuscules) car il sera automatiquement
+ composé en petites capitales.
+ \end{enumerate}
+\end{dbwarning}
+
+\begin{dbwarning}{Affichage des prénoms et noms du ou des auteurs}{}
+ Pour que les prénoms et noms du ou des auteurs soient affichés, il est
+ nécessaire :
+ \begin{enumerate}
+ \item de recourir à la commande habituelle \refCom{maketitle} ;
+ \item de procéder à une suite de compilations\suitecompilations{} :
+ \begin{enumerate}
+ \item \hologo{pdfLaTeX} ;
+ \item \hologo{biber} ;
+ \item \hologo{pdfLaTeX}.
+ \end{enumerate}
+ \end{enumerate}
+\end{dbwarning}
+
+\subsubsection{Auteur(s) : détails}
+\label{sec-auteurs-details}
+
+La commande \refCom{author} admet un argument optionnel permettant, pour chaque
+auteur, de spécifier un certain nombre de détails complémentaires : son affiliation, sa
+photo, son email, sa page Web, sa biographie express au moyen des clés
+respectives % (à séparer par des virgules)
+\refKey{affiliation}, \refKey{photo}, \refKey{email}, \refKey{webpage} et
+\refKey{minibio} :
+\begin{bodycode}
+\author[%
+ affiliation="\marg{affiliation(s)}",%
+ photo="\meta{photo}",%
+ email="\meta{email}",%
+ webpage="\meta{page Web}",%
+ minibio="\marg{biographie express}"%
+]{"\meta{Nom}", "\meta{Prénom}"}
+\end{bodycode}
+
+\begin{docKey}{affiliation}{={\marg{affiliation(s)}}}{pas de valeur par défaut,
+ initialement vide}
+ Cette clé permet de spécifier une ou plusieurs affiliations. En cas
+ d'affiliations multiples, celles-ci peuvent être séparées par la commande
+ \docAuxCommand*{newline}.
+\end{docKey}
+
+\begin{docKey}{photo}{={\meta{photo}}}{pas de valeur par défaut,
+ initialement vide}
+ Cette clé permet de spécifier la photographie de l'auteur au moyen d'un
+ fichier image\footnote{Si ce fichier ne figure pas dans le dossier courant, il
+ faut faire figurer le chemin (relatif) y menant.}.
+\end{docKey}
+
+\begin{docKey}{email}{={\meta{email}}}{pas de valeur par défaut,
+ initialement vide}
+ Cette clé permet de spécifier l'adresse courriel de l'auteur.
+\end{docKey}
+
+\begin{docKey}{webpage}{={\meta{page Web}}}{pas de valeur par défaut,
+ initialement vide}
+ Cette clé permet de spécifier la page Web de l'auteur.
+\end{docKey}
+
+\begin{docKey}{minibio}{={\marg{biographie express}}}{pas de valeur par défaut,
+ initialement vide}
+ Cette clé permet de spécifier la biographie express de l'auteur.
+\end{docKey}
+
+\begin{dbwarning}{Paires d'accolades
+ % des clés \refKey{affiliation} et \refKey{minibio}
+ (relativement) obligatoires}{}
+ Au cas (probable) où les valeurs \meta{affiliation(s)} et \meta{biographie
+ express} des clés \refKey{affiliation} et \refKey{minibio} contiennent des
+ virgules, les paires d'accolades les entourant sont obligatoires.
+\end{dbwarning}
+
+\begin{dbwarning}{Courriels et pages Web à saisir tels quels}{}
+ Les valeurs \meta{email} et \meta{webpage} des clés \refKey{email} et
+ \refKey{webpage} doivent être saisies telles quelles, sans recours aucun aux
+ commandes \refCom{url}, \docAuxCommand{href} ou assimilées des packages
+ \package{url} ou \package{hyperref}.
+\end{dbwarning}
+
+\begin{dbremark}{Affichage des détails complémentaires sur les auteurs}{}
+ Pour que les détails complémentaires précédents soient affichés, il est
+ nécessaire de recourir aux commandes \refCom{printauthorsdetails} ou
+ \refCom{printbibliography}, destinées à être utilisées en fin d'article.
+
+ Ces commandes affichent également d'éventuels remerciements à spécifier au
+ moyen de la commande \refCom{acknowledgements} suivante.
+\end{dbremark}
+
+\begin{docCommand}{acknowledgements}{\marg{remerciements}}
+ Cette commande, facultative, permet de spécifier des \meta{remerciements} pour
+ un article.
+\begin{bodycode}
+\acknowledgements{%
+ L'auteur remercie Frédéric Patras, pour les nombreuses discussions qu'il
+ a eues avec lui sur le sujet. Il remercie également le relecteur anonyme,
+ qui a lu le texte avec un très grand soin, et dont les commentaires et
+ suggestions ont été très utiles.%
+}
+\end{bodycode}
+\end{docCommand}
+
+\subsubsection{Résumé}
+\label{sec-resume}
+
+\begin{docEnvironment}[doclang/environment content=résumé]{abstract}{}
+ Cet environnement, facultatif, est destiné à recevoir le \meta{résumé} de
+ l'article.
+\end{docEnvironment}
+
+\subsection{Production du titre de l'article}
+\label{sec-creation-du-titre}
+
+Le titre proprement dit de l'article, regroupant tous les éléments saisis à la
+\vref{sec-prep-de-lart}, est produit par la commande standard
+\refCom{maketitle}.
+
+\begin{docCommand}[doc description=\mandatory]{maketitle}{}
+ Cette commande \emph{produit} l'affichage du \enquote{titre} de l'article,
+ c'est-à-dire :
+ \begin{itemize}
+ \item son titre et son éventuel sous-titre (commandes \refCom{title} et
+ \refCom{subtitle}) ;
+ \item son ou ses éventuels auteurs, sous la forme de leurs noms et
+ prénoms\footnote{Les prénoms sont alors abrégés au moyen de leurs
+ initiales.} (commande(s) \refCom{author}) ;
+ \item son éventuel résumé (environnement \refEnv{abstract}).
+ \end{itemize}
+\end{docCommand}
+
+L'exemple suivant\footnote{Les commandes \refCom{surname} et \refCom{enquote}
+ qui y figurent sont documentées plus loin.} illustre la plupart des commandes
+et options vues jusqu'ici.
+
+\begin{bodycode}[listing options={deletekeywords={[2]{article}}}]
+\title[short=Les travaux de Manjul \surname{Bhargava}]{Manjul \surname{Bhargava},
+ anneaux de petit rang et courbes elliptiques}
+%
+\author[%
+ affiliation={%
+ Univ. Bordeaux, IMB, UMR 5251, F-33400 Talence, France\newline%
+ CNRS, IMB, UMR 5251, F-33400 Talence, France\newline%
+ INRIA, F-33400 Talence, France%
+ },%
+ photo=Belabas,%
+ email=Karim.Belabas@math.u-bordeaux.fr,%
+ minibio={%
+ Karim Belabas est professeur à l'université de Bordeaux. Ses centres
+ d'intérêts sont la théorie des nombres sous toutes ses formes et le calcul
+ formel. Il développe le système libre PARI/GP.%
+ }%
+]{Belabas, Karim}
+%
+\author[%
+ affiliation={%
+ Laboratoire de Mathématiques de Besançon, Facultés des sciences et techniques,
+ CNRS, UMR 6623, 16 route de Gray, 25030 Besançon, France%
+ },%
+ photo=Delaunay,%
+ email=Christophe.Delaunay@univ-fcomte.fr,%
+ minibio={%
+ Christophe Delaunay est professeur à l'université de Franche-Comté et membre
+ du laboratoire de mathématiques de Besançon. Il est spécialiste de théorie des
+ nombres.%
+ }%
+]{Delaunay, Christophe}
+%
+\begin{abstract}
+ Manjul Bhargava a reçu la médaille Fields au congrès international de Séoul
+ \enquote{pour avoir développé de nouvelles méthodes en géométrie des nombres,
+ qu'il a appliquées au comptage des anneaux de petit rang et pour borner le
+ rang moyen de courbes elliptiques}. Cet article est un survol d'une partie
+ de ses travaux.
+\end{abstract}
+%
+\maketitle
+\end{bodycode}
+
+\subsection{Affichage des détails complémentaires sur les auteurs}
+
+\begin{docCommand}{printauthorsdetails}{}
+ Cette commande, facultative, \emph{produit} l'affichage :
+ \begin{itemize}
+ \item des détails complémentaires sur les auteurs (options
+ \refKey{affiliation}, \refKey{photo}, \refKey{email}, \refKey{webpage} et
+ \refKey{minibio}) ;
+ \item des éventuels remerciements (commande \refCom{acknowledgements}) ;
+ \end{itemize}
+ tels que définis à la \vref{sec-auteurs-details}.
+\end{docCommand}
+
+\begin{dbwarning}{Commande \protect\docAuxCommand*{printauthorsdetails} inutile
+ en cas de bibliographie}{}
+ En cas de bibliographie (cf. commande \refCom{printbibliography}), l'usage de
+ la commande \refCom{printauthorsdetails} est inutile car l'affichage des
+ détails complémentaires sur les auteurs est alors automatique.
+\end{dbwarning}
+
+\section{Article sans auteur mais avec signature \enquote{académique}}
+\label{sec-article-sans-auteur}
+
+Les articles standard précédents sont écrits par une ou plusieurs personnes
+physiques clairement identifiées en tant qu'auteurs.
+
+D'autres types d'articles n'ont pas véritablement d'auteurs mais sont plutôt
+\enquote{signés} par, par exemple, un comité. Pour ce type d'article, on ne
+recourra pas à la commande \refCom{author}, mais plutôt à la commande
+\refCom{academicsignature} suivante.
+
+\begin{docCommand}{academicsignature}{\marg{signature}}
+ Cette commande permet de spécifier une \meta{signature} académique.
+\begin{bodycode}
+\academicsignature{%
+ Au nom du comité éditorial, Serge Nicaise (éditeur en chef) et Nicolas
+ Wicker (directeur technique).%
+}
+\end{bodycode}
+\end{docCommand}
+
+\begin{dbwarning}{Commande \protect\docAuxCommand*{academicsignature} à effet \enquote{immédiat}}{}
+ La commande \refCom{author} \enquote{prépare} un auteur qui n'est affiché que
+ là où est employée la commande \refCom{maketitle}. Au contraire, la commande
+ \refCom{academicsignature} affiche \enquote{immédiatement} la \meta{signature}
+ passée en argument.
+\end{dbwarning}
+
+\section{Articles de type \enquote{entretien}}
+\label{sec-entretiens}
+
+Les entretiens sont caractérisés par l'alternance de questions et de
+réponses. Les questions, qui doivent être composées de façon spécifique, sont
+à passer en argument de la commande \refCom{question} suivante.
+
+\begin{docCommand}{question}{\marg{question}}
+ Cette commande permet de spécifier une \meta{question}.
+\end{docCommand}
+
+\begin{dbremark}{Composition des réponses aux questions}{}
+ Les réponses aux questions ne nécessitant pas de mise en page particulière,
+ elles seront insérées telles quelles.
+\end{dbremark}
+
+\begin{bodycode}
+\question{Ton sujet principal est celui des systèmes dynamiques, mais quels
+ sont les autres thèmes qui t'intéressent ?}
+
+L'étude des systèmes dynamiques est un sujet qui peut être abordé de façon les
+plus diverses. Certains les considèrent d'un point de vue combinatoire,
+d'autres sont plus axés sur les probabilités ou encore sur l'analyse. [...]
+Mais si mes capacités d'analystes n'avaient pu se réaliser dans les systèmes
+dynamiques j'aurais fait autre chose.
+
+\question{Parmi ses lauréats de cette édition, on compte deux dynamiciens :
+ Maryam Mirzakhani et toi. Quelles sont les différences entre vos
+ approches ?}
+
+Ces travaux sont principalement concentrés sur un objet lié aux échanges
+d'intervalles : le flot de Teichmüller. [...]
+\end{bodycode}
+
+\begin{dbwarning}{Insertion manuelle d'espacements inutile}{}
+ On évitera de modifier l'agencement des questions et réponses en insérant
+ manuellement des espacements horizontaux ou verticaux
+ (\docAuxCommand*{hspace}, \docAuxCommand*{hskip}, \docAuxCommand*{vspace},
+ \docAuxCommand*{vskip}, etc.).
+\end{dbwarning}
+
+Les entretiens sont des articles en général sans auteur mais les personnes ayant
+recueilli les propos peuvent être signalées dans le résumé (cf. environnement
+\refEnv{abstract}), par exemple ainsi :
+
+\begin{bodycode}
+\title{Entretien avec Artur \surname{Avila}}
+\begin{abstract}
+ Propos recueillis à Séoul, pendant l'ICM, par Boris Adamczewski et Gaël Octavia.
+\end{abstract}
+\maketitle
+\end{bodycode}
+
+\section{Outils communs à tous types d'articles, fournis par \texorpdfstring{\gztauthor}{la classe}}
+\label{sec-outils-communs-tous}
+
+Cette section donne une liste exhaustive des outils (commandes et
+environnements) fournis par la \gztauthorcl.
+
+\subsection{Table des matières locale}
+\label{sec:table-des-matieres}
+
+\begin{docCommand}{gztlocaltableofcontents}{}
+ Cette commande, facultative, permet de faire figurer une table des matières
+ locale à un article.
+\end{docCommand}
+
+Une telle table des matières n'affiche que les sections de l'article.
+
+\subsection{Images, tableaux et cadres}
+
+La \gztauthorcl{} fournit des environnements :
+\begin{itemize}
+\item spécifiques aux images et tableaux, respectivement :
+ \begin{itemize}
+ \item \refEnv{gztfigure} et \refEnv{gztfigure*} ;
+ \item \refEnv{gzttable} et \refEnv{gzttable*} ;
+ \end{itemize}
+\item plus neutres permettant de placer du contenu dans des cadres :
+ \refEnv{gztframe} et \refEnv{gztframe*}.
+\end{itemize}
+
+% Les images et tableaux destinés à illustrer ou à synthétiser un article doivent
+% être insérés dans les environnements :
+% \begin{itemize}
+% \item \refEnv{gztfigure}, \refEnv{gztfigure*} ;
+% \item \refEnv{gzttable}, \refEnv{gzttable*} ;
+% \end{itemize}
+% analogues, décrits dans cette section.
+%
+% La \gztauthorcl{} fournit en outre les environnements plus neutres
+% \refEnv{gztframe} et \refEnv{gztframe*} qui permettent de placer du contenu dans
+% des cadres.
+%
+% Tous ces environnements acceptent des options décrites \vref{sec-options-gzt}.
+
+\begin{docEnvironments}[
+ doclang/environment content=image,
+ doc parameter = \oarg{options}
+ ]{
+ {
+ doc name=gztfigure,
+ doclang/environment content=image,
+ },
+ {
+ doc name=gztfigure*,
+ doclang/environment content=image,
+ },
+ {
+ doc name=gzttable,
+ doclang/environment content=tableau,
+ },
+ {
+ doc name=gzttable*,
+ doclang/environment content=tableau,
+ },
+ {
+ doc name=gztframe,
+ doclang/environment content=contenu à encadrer,
+ },
+ {
+ doc name=gztframe*,
+ doclang/environment content=contenu à encadrer,
+ }
+ }
+ Ces environnements insèrent l'\meta{image}, le \meta{tableau} ou le
+ \meta{contenu à encadrer}\footnote{Mais sans être estampillé \enquote{Figure}
+ ou \enquote{Tableau}.} dans un cadre :
+ \begin{description}
+ \item[de largeur :]\leavevmode
+ \begin{description}
+ \item[versions non étoilées :] celle de la ligne courante, donc notamment
+ celle de la ligne d'une colonne en mode bi-colonne ;
+ \item[versions étoilées :] celle de l'empagement, donc
+ à cheval sur les deux colonnes en mode bi-colonne ;
+ \end{description}
+ \item[placé :]\leavevmode
+ \begin{description}
+ \item[versions non étoilées :] là où l'environnement a été
+ utilisé\footnote{Il s'agit d'un environnement \enquote{non flottant}.} ;
+ \item[versions étoilées :] si possible en haut de la page où l'environnement
+ a été utilisé\footnote{Il s'agit d'un environnement \phantom{non}
+ \enquote{flottant}.}.
+ \end{description}
+ \end{description}
+\end{docEnvironments}
+
+% \begin{docEnvironment}[doclang/environment content=tableau créé avec \docAuxEnvironment{tabular}]{gzttable}{\oarg{option(s)}}
+% Cet environnement insère le tableau :
+% \begin{itemize}
+% \item \emph{à l'emplacement où il est utilisé} ;
+% \item dans un cadre de largeur la ligne courante, donc notamment de la largeur
+% de la ligne d'une colonne en mode bi-colonne.
+% \end{itemize}
+% \end{docEnvironment}
+%
+% \begin{docEnvironment}[doclang/environment content=tableau créé avec \docAuxEnvironment{tabular}]{gzttable*}{\oarg{option(s)}}
+% Cet environnement insère le tableau :
+% \begin{itemize}
+% \item en haut de la page où il a été employé, donc probablement \emph{pas}
+% à l'emplacement où il est utilisé (il s'agit d'un tableau
+% \enquote{flottant}) ;
+% \item dans un cadre de largeur celle de l'empagement, donc à cheval sur les
+% deux colonnes en mode bi-colonne.
+% \end{itemize}
+% \end{docEnvironment}
+%
+% \subsubsection{Cadres}
+% \label{sec-cadres}
+%
+% Le contenu
+% % \footnote{Notamment des images et, le cas échéant, des tableaux.}
+% devant être encadré mais sans être estampillé \enquote{Figure} ou
+% \enquote{Tableau} le sera au moyen de l'un des deux environnements
+% \refEnv{gztframe} et \refEnv{gztframe*} suivants.
+%
+% \begin{docEnvironment}[doclang/environment content=contenu à encadrer]{gztframe}{\oarg{option(s)}}
+% Cet environnement insère le \meta{contenu à encadrer} :
+% \begin{itemize}
+% \item \emph{à l'emplacement où il est utilisé} ;
+% \item dans un cadre
+% \begin{itemize}
+% \item de largeur la ligne courante, donc notamment de la largeur de la ligne
+% d'une colonne en mode bi-colonne ;
+% \item pourvu d'une zone de titre seulement si un titre est spécifié au moyen de
+% la clé \refKey{title}.
+% \end{itemize}
+% \end{itemize}
+% \end{docEnvironment}
+%
+% \begin{docEnvironment}[doclang/environment content=contenu à encadrer]{gztframe*}{\oarg{option(s)}}
+% Cet environnement insère le \meta{contenu à encadrer} :
+% \begin{itemize}
+% \item en haut de la page où il a été employé, donc probablement \emph{pas}
+% à l'emplacement où il est utilisé (il s'agit d'un cadre
+% \enquote{flottant}) ;
+% \item dans un cadre :
+% \begin{itemize}
+% \item de largeur celle de l'empagement, donc à cheval sur les deux colonnes
+% en mode bi-colonne ;
+% \item pourvu d'une zone de titre seulement si un titre est spécifié au moyen de
+% la clé \refKey{title}.
+% \end{itemize}
+% \end{itemize}
+% \end{docEnvironment}
+%
+% \subsubsection{Options}
+% \label{sec-options-gzt}
+
+Ces environnements admettent en \meta{options} :
+\begin{itemize}
+\item la plupart des (très nombreuses) options de l'environnement
+ \docAuxEnvironment{tcolorbox} du \Package*{tcolorbox}. On retiendra notamment
+ les options suivantes :
+\begin{docKey}{title}{=\meta{titre}}{pas de valeur par défaut,
+ initialement vide}
+ Cette clé permet de spécifier l'éventuel \meta{titre} (au sens de
+ \enquote{légende} de flottant).
+\end{docKey}
+\begin{docKey}{label}{=\meta{label}}{pas de valeur par défaut, initialement
+ vide}
+ Cette clé permet de spécifier l'éventuel \meta{label} de l'image ou du
+ tableau\footnote{Option sans objet pour les environnements
+ \protect\refEnv{gztframe} et \protect\refEnv{gztframe*}.} de sorte à y faire
+ référence, notamment au moyen de la commande \refCom{vref}.
+\end{docKey}
+\item la clé \refKey{copyright} suivante :
+ \begin{docKey}{copyright}{=\meta{titulaire}}{pas de valeur par défaut,
+ initialement vide}
+ Cette clé permet de spécifier un éventuel \meta{titulaire} de
+ \emph{copyright}.
+\end{docKey}
+\end{itemize}
+
+\begin{dbremark}{Production des images et tableaux}{}
+ \begin{itemize}
+ \item Une \meta{image} est incluse au moyen :
+ \begin{itemize}
+ \item soit de la commande standard
+ \docAuxCommand{includegraphics}\footnote{Il est possible de passer à cette
+ commande toutes ses options définies par le \Package{graphicx}.} ;
+ \item soit de code \LaTeX{} de création de dessins\footnote{Cf. par exemple
+ les packages \package{TikZ} et dérivés (notamment \package{pgfplots}).}.
+ \end{itemize}
+ \item Un \meta{tableau} est créé au moyen de l'environnement standard
+ \docAuxEnvironment{tabular} ou
+ assimilé\footnote{P. ex. \docAuxEnvironment{tabularx} du package
+ éponyme.}. Il est recommandé de faire usage du \Package*{booktabs} pour
+ produire des tableaux plus lisibles.
+ \end{itemize}
+\end{dbremark}
+
+Les exemples suivants illustrent les environnements et options qui viennent
+d'être vus.
+\begin{bodycode}[listing options={deletekeywords={[1]{exemple,title,label}},morekeywords={[2]{title,label}}}]
+L'exemple avec $a=-1$ et $b=0$ donne la courbe de la \vref{elliptique}.
+%
+\begin{gztfigure}[title=Courbe elliptique correspondant à l'équation
+ $y^2=x^3-x$,label=elliptique]
+ \includegraphics[width=\linewidth]{courbe-elliptique}
+\end{gztfigure}
+\end{bodycode}
+
+\begin{bodycode}[listing options={morekeywords={[2]title,label},deletekeywords={[3]section}}]
+En analysant les chiffres des \vref{recru-mc-25,recru-mc-26} correspondant au
+recrutement des maîtres de conférences, on voit que la proportion des femmes
+recrutées est [...]
+%
+\begin{gzttable*}[label=recru-mc-25,title=Recrutement des maîtres de
+ conférences section 25]
+ \begin{tabular}{|l|cccccc|}
+ \hline
+ & 2008 & 2009 & 2010 & 2011 & 2012 & 2013 \\ \hline
+ [...]
+ \end{tabular}
+\end{gzttable*}
+%
+\begin{gzttable*}[label=recru-mc-26,title=Recrutement des maîtres de
+ conférences section 26]
+ \begin{tabular}{|l|cccccc|}
+ \hline
+ & 2008 & 2009 & 2010 & 2011 & 2012 & 2013 \\ \hline
+ [...]
+ \end{tabular}
+\end{gzttable*}
+\end{bodycode}
+
+\begin{dbremark}{Zone de titre des figures, tableaux et cadres employés sans
+ option \refKey{title}}{}
+ Si l'option \refKey{title} n'est pas employée, la zone de titre :
+ \begin{itemize}
+ \item contient néanmoins le titre récurrent \enquote{Figure} ou
+ \enquote{Tableau} avec les environnements respectivement :
+ \begin{itemize}
+ \item \refEnv{gztfigure} et \refEnv{gztfigure*} ;
+ \item \refEnv{gzttable} et \refEnv{gzttable*} ;
+ \end{itemize}
+ \item est absente avec les environments \refEnv{gztframe} et \refEnv{gztframe*}
+ \end{itemize}
+\end{dbremark}
+
+\subsection{Bibliographie}
+\label{sec-bibliographie}
+
+Pour composer les bibliographies, la \gzt{} recourt aux outils modernes que sont
+le \Package*{biblatex} et le moteur \hologo{biber}. Leur usage est détaillé dans
+\autocite{Bitouze} et peut être brièvement résumé comme suit.
+\begin{enumerate}
+\item Construire, dans un \meta{fichier bibliographique}\footnote{De tels
+ fichiers sont d'extension \file{.bib}.}, une base bibliographique.
+
+ Nous conseillons pour ce faire de recourir à un logiciel dédié, par exemple
+ \href{http://jabref.sourceforge.net/}{\program{JabRef}}
+ à configurer\footnote{La version décrite ici est la 3.2.} en se rendant
+ dans le menu :
+ \begin{itemize}
+ \item \enquote{\menuentry{File}} et en sélectionnant \enquote{\menuentry{BibLaTeX mode}} ;
+ \item \enquote{\menuentry{Options>Preferences}} puis dans l'onglet \enquote{\menuentry{General}},
+ en choisissant \enquote{\menuentry{UTF8}} dans la liste déroulante \enquote{\menuentry{Default
+ encoding}}\footnote{On pourra en profiter pour changer la langue de
+ l'interface dans la liste déroulante \enquote{\menuentry{Language}}.}.
+ \end{itemize}
+
+ On n'oubliera pas de donner à chaque entrée bibliographique une \meta{clé}
+ permettant de l'identifier de façon unique dans la base
+ bibliographique\footnote{Sous \program{JabRef}, on pourra se faire aider pour
+ cela par l'icône en forme de \enquote{baguette magique}.}.
+\item Dans le fichier source \file{.tex} :
+ \begin{enumerate}
+ \item \emph{En préambule}, utiliser la commande \docAuxCommand{addbibresource}
+ pour indiquer le \meta{fichier bibliographique} à considérer :
+\begin{preamblecode}[listing options={moretexcs={addbibresource}}]
+\addbibresource{"\meta{fichier bibliographique}".bib}
+\end{preamblecode}
+ \item Dans le corps du document, utiliser la commande
+ \docAuxCommand{autocite}\footnote{De préférence à la commande
+ \docAuxCommand{cite}.} du \Package*{biblatex} pour citer les références
+ bibliographiques (pourvue d'une \meta{clé}) :
+\begin{bodycode}[listing options={moretexcs={autocite}}]
+\autocite{"\meta{clé}"}
+\end{bodycode}
+ \item À la fin du document, faire figurer la liste des références
+ bibliographiques au moyen de la commande \refCom{printbibliography}
+ suivante.
+ \end{enumerate}
+\item Procéder à une suite de compilations \hologo{pdfLaTeX}, \hologo{biber} et
+ \hologo{pdfLaTeX}\suitecompilations.
+\end{enumerate}
+
+\begin{docCommand}{printbibliography}{}
+ Cette commande produit la liste des références bibliographiques saisies selon
+ la syntaxe du \Package*{biblatex}.
+ Cette commande est fournie sous deux formes, non étoilée et étoilée :
+ \begin{description}
+ \item[sous sa forme non étoilée :] elle affiche, en sus des références bibliographiques,
+ les \hyperref[sec-auteurs-details]{détails complémentaires sur les auteurs}
+ (s'ils ont été renseignés) ;
+ \item[sous sa forme étoilée :] elle n'affiche que les références bibliographiques.
+ \end{description}
+\end{docCommand}
+
+\subsection{Commandes diverses}
+\label{sec-commandes-diverses}
+
+La \gztauthorcl{} fournit des commandes généralistes ou propres aux
+mathématiques destinées à faciliter la saisie d'un article à paraître dans la
+\gzt{}.
+
+\subsubsection{Commandes généralistes}
+\label{sec-comm-gener}
+
+\begin{docCommand}{smf}{}
+ Cette commande produit l'acronyme \textsc{smf} de la Société Mathématique de
+ France.
+\end{docCommand}
+
+\begin{docCommand}{gzt}{}
+ Cette commande :
+ \begin{description}
+ \item[sous sa forme non étoilée :] produit l'abréviation \enquote{\gzt}.
+ \item[sous sa forme étoilée :] produit la forme complète \enquote{\gzt*}.
+ \end{description}
+\end{docCommand}
+
+\begin{docCommand}{cad}{}
+ Cette commande :
+ \begin{description}
+ \item[sous sa forme non étoilée :] produit l'abréviation \enquote{c.-à-d.}.
+ \item[sous sa forme étoilée :] produit la forme complète
+ \enquote{c'est-à-dire}.
+ \end{description}
+\end{docCommand}
+
+\begin{docCommand}{Cad}{}
+ Cette commande :
+ \begin{description}
+ \item[sous sa forme non étoilée :] produit l'abréviation \enquote{C.-à-d.}.
+ \item[sous sa forme étoilée :] produit la forme complète
+ \enquote{C'est-à-dire}.
+ \end{description}
+\end{docCommand}
+
+\begin{docCommand}{surname}{\marg{nom de famille}}
+ Cette commande compose le \meta{nom de famille} en petites capitales.
+ \begin{dbwarning}{Petites capitales : à employer avec parcimonie}{}
+ \begin{itemize}
+ \item De manière générale, quand elles sont appliquées aux noms de
+ personnes, les petites capitales doivent ne s'appliquer qu'au nom de
+ famille, et notamment \emph{pas} aux prénoms.
+ \item Pour un article de la \gzt{}, on évitera d'appliquer systématiquement
+ les petites capitales (et donc la commande \refCom{surname}) à tous les
+ noms de famille : on les réservera aux noms d'auteurs, notamment à ceux
+ spécialement mis à l'honneur, par exemple s'ils figurent dans le titre
+ d'un article.
+ \end{itemize}
+ \end{dbwarning}
+\end{docCommand}
+
+\begin{docCommand}{century}{\marg{numéro}}
+ Cette commande affiche le \meta{numéro}\footnote{Ce numéro doit être un nombre
+ entier relatif non nul.} ordinal d'un siècle en chiffre romain composé en
+ petites capitales, suivi du suffixe constitué, selon que la langue en cours
+ est le français ou l'anglais :
+ \begin{itemize}
+ \item du mot \enquote{siècle} puis, si \meta{numéro} $<0$, de l'expression
+ \enquote{avant J.-C.}\footnote{Sauf si le caractère qui suit est un point,
+ auquel cas l'expression est \enquote{avant J.-C}.} ;
+ \item du mot \enquote{century} puis, si \meta{numéro} $<0$, de l'expression
+ \enquote{BC}.
+ \end{itemize}
+ Ainsi :
+\begin{bodycode}[listing and text]
+Au \century{8}, [...]. Auparavant, au \century{1}, [...]. Il en fût de même au
+\century{-3} et au \century{-2}.
+\end{bodycode}
+ Cette commande dispose également d'une version étoilée ne faisant figurer
+ le suffixe que si \meta{numéro} $<0$, à utiliser par exemple dans un cas tel
+ que le suivant :
+\begin{bodycode}[listing and text]
+Toute la poésie du \century*{19} mérite d'être lue.
+\end{bodycode}
+\end{docCommand}
+
+\begin{docCommand}{aside}{\marg{texte}}
+ Cette commande permet de composer du \meta{texte} entre tirets longs, pour une
+ \enquote{incise} (un peu à la manière de parenthèses).
+ \begin{description}
+ \item[Sous sa forme non étoilée,] elle insère le \meta{texte} entre deux
+ tirets longs.
+ \item[Sous sa forme étoilée,] elle fait (seulement) précéder le \meta{texte}
+ d'un tiret, ce qui est à utiliser en fin de phrase.
+ \end{description}
+ Ainsi :
+\begin{bodycode}[listing and text]
+Des expériences \aside{dans le monde \enquote{réel}} ont même été suscitées
+par des expériences numériques.
+\end{bodycode}
+ et :
+\begin{bodycode}[listing and text]
+On soupçonne que non \aside*{par exemple on s'attend à ce que $1/\pi$ ne
+soit pas une période}.
+\end{bodycode}
+\end{docCommand}
+
+% ^^A smf,cad,Cad,gzt,century,aside
+
+\subsubsection{Commandes propres aux mathématiques}
+\label{sec-comm-propr-aux}
+
+La \gztauthorcl{} :
+\begin{itemize}
+\item charge les packages :
+ \begin{itemize}
+ \item \package*{kpfonts} qui fournit tous les symboles standard, y compris
+ ceux du \Package{amssymb}, mais en propose également de nombreux autres ;
+ \item \package*{mathtools} qui lui-même charge \package*{amsmath} (mais en
+ l'étendant et en corrigeant certains de ses défauts), si bien que toutes les
+ commandes de ces deux packages sont disponibles ;
+ \item \package*{rsfso} qui fournit de jolies lettres calligraphiques (via
+ la commande \docAuxCommand{mathscr}) ;
+ \end{itemize}
+\item redéfinit certaines commandes et en fournit quelques nouvelles, listées
+ ci-dessous ;
+\item fournit (en s'appuyant sur les packages \package*{amsthm} et
+ \package*{thmtools}) des environnements de type \enquote{théorème} classiques,
+ listés ci-dessous.
+\end{itemize}
+
+\paragraph{Ensembles courants}
+
+\begin{docCommand}{N}{}
+ Cette commande affiche l'ensemble des nombres entiers positifs :
+ \enquote{$\mathbb{N}$}.
+\end{docCommand}
+
+\begin{docCommand}{Z}{}
+ Cette commande affiche l'ensemble des nombres entiers relatifs :
+ \enquote{$\mathbb{Z}$}.
+\end{docCommand}
+
+\begin{docCommand}{D}{}
+ Cette commande affiche l'ensemble des nombres décimaux :
+ \enquote{$\mathbb{D}$}.
+\end{docCommand}
+
+\begin{docCommand}{Q}{}
+ Cette commande affiche l'ensemble des nombres rationnels :
+ \enquote{$\mathbb{Q}$}.
+\end{docCommand}
+
+\begin{docCommand}{R}{}
+ Cette commande affiche l'ensemble des nombres réels : \enquote{$\mathbb{R}$}.
+\end{docCommand}
+
+\begin{docCommand}{C}{}
+ Cette commande affiche l'ensemble des nombres complexes :
+ \enquote{$\mathbb{C}$}.
+\end{docCommand}
+
+\begin{docCommand}{K}{}
+ Cette commande peut être utilisée pour dénoter un corps quelconque. Elle
+ affiche \enquote{$\mathbb{K}$}.
+\end{docCommand}
+
+\paragraph{Fonctions trigonométriques circulaires et hyperboliques, directes et
+ réciproques}
+
+\begin{docCommand}{cotan}{}
+ Cette commande affiche la cotangente : \enquote{$\cotan$}.
+\end{docCommand}
+
+\begin{docCommand}{arccos}{}
+ Cette commande affiche (la détermination principale de) l'arc cosinus :
+ \enquote{$\arccos$} ou
+ \enquote{\selectlanguage{english}$\arccos$\selectlanguage{french}} selon que
+ la langue en cours est le français ou l'anglais.
+\end{docCommand}
+
+\begin{docCommand}{arcsin}{}
+ Cette commande affiche (la détermination principale de) l'arc sinus :
+ \enquote{$\arcsin$} ou
+ \enquote{\selectlanguage{english}$\arcsin$\selectlanguage{french}} selon que
+ la langue en cours est le français ou l'anglais.
+\end{docCommand}
+
+\begin{docCommand}{arctan}{}
+ Cette commande affiche (la détermination principale de) l'arc tangente :
+ \enquote{$\arctan$} ou
+ \enquote{\selectlanguage{english}$\arctan$\selectlanguage{french}} selon que
+ la langue en cours est le français ou l'anglais.
+\end{docCommand}
+
+\begin{docCommand}{ch}{}
+ Cette commande affiche le cosinus hyperbolique : \enquote{$\ch$}.
+\end{docCommand}
+
+\begin{docCommand}{sh}{}
+ Cette commande affiche le sinus hyperbolique : \enquote{$\sh$}.
+\end{docCommand}
+
+\begin{docCommand}{tanh}{}
+ Cette commande affiche la tangente hyperbolique : \enquote{$\tanh$} ou
+ \enquote{\selectlanguage{english}$\tanh$\selectlanguage{french}} selon que la
+ langue en cours est le français ou l'anglais.
+ \begin{dbremark}{Pas de commande \protect\lstinline+\\th+ pour la tangente
+ hyperbolique}{}
+ La commande |\th| est déjà définie dans \LaTeX{} et ne peut donc pas être
+ utilisée pour la tangente hyperbolique.
+ \end{dbremark}
+\end{docCommand}
+
+\paragraph{Fonctions diverses}
+
+\begin{docCommand}{log}{}
+ Cette commande :
+ \begin{description}
+ \item[sous sa forme non étoilée :] produit \enquote{$\log$}.
+ \item[sous sa forme étoilée :] produit \enquote{$\log*$}.
+ \end{description}
+\end{docCommand}
+
+\begin{docCommand}{lg}{}
+ Cette commande :
+ \begin{description}
+ \item[sous sa forme non étoilée :] produit \enquote{$\lg$}.
+ \item[sous sa forme étoilée :] produit \enquote{$\lg*$}.
+ \end{description}
+\end{docCommand}
+
+\paragraph{Théorèmes et objets analogues}
+
+Pour faciliter la composition des théorèmes et objets analogues, la
+\gztauthorcl{} fournit des environnements prêts à l'emploi et permet d'en créer
+de nouveaux si besoin est (cf. commande \refCom{newtheorem}).
+
+Le \vref{env-theorems} liste les théorèmes et objets analogues disponibles
+%
+avec :
+\begin{description}
+\item[en colonne~1] le nom de l'environnement \LaTeX{} correspondant, et son
+ éventuel alias (utilisables indifféremment) ;
+\item[en colonne~2] les titres récurrents correspondants selon que la langue en
+ cours est le français ou l'anglais.
+\end{description}
+
+\begin{gzttable}[label=env-theorems,title=Environnements de type \enquote{théorème} fournis]
+ \begin{tabular}{llll}
+ \multicolumn{2}{c}{Environnement} & \multicolumn{2}{c}{Titre} \\
+ Nom & Alias & En français & En anglais \\\toprule
+ |theoreme| & |theorem| & Théorème & Theorem \\\midrule
+ |corollaire| & |corollary| & Corollaire & Corollary \\\midrule
+ \multicolumn{2}{c}{\lstinline+conjecture+} & \multicolumn{2}{c}{Conjecture} \\\midrule
+ \multicolumn{2}{c}{\lstinline+proposition+} & \multicolumn{2}{c}{Proposition} \\\midrule
+ |lemme| & |lemma| & Lemme & Lemma \\\midrule
+ |axiome| & |axiom| & Axiome & Axiom \\\midrule\midrule
+ \multicolumn{2}{c}{\lstinline+definition+} & Définition & Definition \\\midrule
+ |remarque| & |remark| & Remarque & Remark \\\midrule
+ |exemple| & |example| & Exemple & Example \\\midrule
+ \multicolumn{2}{c}{\lstinline+notation+} & \multicolumn{2}{c}{Notation} \\\midrule
+ |preuve| & |proof| & Preuve & Proof \\\bottomrule
+ \end{tabular}
+\end{gzttable}
+
+\begin{dbremark}{\enquote{Théorèmes} non numérotés : versions étoilées des
+ environnements}{}
+ Tous les environnements \LaTeX{} du \vref{env-theorems} admettent une version
+ étoilée produisant des occurrences \emph{non} numérotées du \enquote{théorème}
+ correspondant.
+\end{dbremark}
+
+Ces environnements s'emploient de façon classique, c'est-à-dire comme tout
+environnement \LaTeX{}. Ils disposent cependant d'un argument optionnel
+permettant de préciser le \enquote{théorème}, par exemple en spécifiant son
+auteur.
+
+\begin{bodycode}[listing and text]
+\begin{theorem}
+ Tout espace métrisable séquentiellement compact est compact.
+\end{theorem}
+\begin{definition}[congruence modulo $n$]
+ Soit $n$ un entier supérieur ou égal à $2$. Deux entiers $a$ et $b$
+ sont dits congruents modulo $n$ si $a - b \in n\Z$
+\end{definition}
+\begin{remark*}
+ \[
+ e^{i\pi}+1=0.
+ \]
+\end{remark*}
+\begin{proof}
+ Tout ce qui est rare est cher. Or un cheval bon marché est rare. Donc un
+ cheval bon marché est cher.
+\end{proof}
+\end{bodycode}
+
+On remarque dans l'exemple précédent que les \enquote{théorèmes} ont des mises
+en forme variables. La \gztauthorcl{} fournit effectivement trois styles de
+\enquote{théorèmes}, \docValue{theorem}, \docValue{definition} et
+\docValue{proof}, dont les caractéristiques sont indiquées au
+\vref{env-theorems-styles}.
+
+\begin{gzttable}[label=env-theorems-styles,title=Styles de \enquote{théorèmes} fournis]
+\begin{tabular}{lp{3cm}p{3cm}p{5.5cm}}
+Style & Titre récurrent & Contenu & Théorèmes concernés \\\toprule
+\docValue{theorem} & gras & italique
+ & théorèmes, corollaires, conjectures, propositions, lemmes, axiomes \\\midrule
+\docValue{definition} & gras & romain & définitions, remarques, exemples, notations \\\midrule
+\docValue{proof} & italique, non gras, non numéroté & romain, terminé par un carré blanc & preuves \\\bottomrule
+\end{tabular}
+\end{gzttable}
+
+% \begin{description}
+% \item[\docValue{theorem} :]\
+% \begin{enumerate}
+% \item le titre récurrent (et l'éventuelle précision) est en gras ;
+% \item le contenu est en italique.
+% \end{enumerate}
+% Ce style est appliqué aux environnements \enquote{de type théorème}, \cad*{}
+% les théorèmes, corollaires, conjectures, propositions, lemmes et axiomes.
+% \item[\docValue{definition} :]\
+% \begin{enumerate}
+% \item le titre récurrent (et l'éventuelle précision) est en gras ;
+% \item le contenu \emph{n'est pas} en italique.
+% \end{enumerate}
+% Ce style est appliqué aux environnements \enquote{de type définition}, \cad*{}
+% les définitions, remarques, exemples et notations.
+% \item[\docValue{proof} :]\
+% \begin{enumerate}
+% \item le titre récurrent (et l'éventuelle précision) \emph{n'est pas} en gras,
+% est en italique et n'est \emph{jamais} numéroté ;
+% \item le contenu \emph{n'est pas} en italique et se termine par un carré noir
+% en fin de ligne.
+% \end{enumerate}
+% Ce style est appliqué aux environnements \enquote{de type preuve},
+% \cad*{}... les preuves.
+% \end{description}
+
+Si les environnements de \enquote{théorème} fournis par la classe ne suffisent
+pas, la commande \refCom{newtheorem} permet d'en créer de nouveaux.
+
+\begin{docCommand}{newtheorem}{\oarg{option(s)}\marg{nom}}
+ Cette commande crée un nouvel environnement \LaTeX{}, \meta{nom}, destiné à la
+ composition d'un \enquote{théorème} dont, par défaut :
+ \begin{itemize}
+ \item le titre récurrent est \meta{Nom}\footnote{\Cad*{}, quelle que soit la
+ langue en cours, le \meta{nom} de l'environnement \LaTeX{} dont l'initiale
+ est en majuscule.} ;
+ \item le style est \docValue{theorem}.
+ \end{itemize}
+ Cette commande crée également l'environnement \meta{nom}* produisant des
+ occurrences \emph{non} numérotées de ce \enquote{théorème}.
+
+ Si les valeurs par défaut du titre récurrent (\meta{Nom}) ou du style
+ (\docValue{theorem}) ne conviennent pas, il suffit spécifier celles souhaitées
+ en \meta{option(s)} au moyen des clés \refKey{frenchtitle},
+ \refKey{englishtitle} et \refKey{style} suivantes.
+ \begin{docKey}{frenchtitle}{={\meta{titre récurrent en français}}}{pas de
+ valeur par défaut, initialement vide}
+ Cette clé permet de spécifier un \meta{titre récurrent en français}
+ différent de \meta{Nom}.
+ \end{docKey}
+ \begin{docKey}{englishtitle}{={\meta{titre récurrent en anglais}}}{pas de
+ valeur par défaut, initialement vide}
+ Cette clé permet de spécifier un \meta{titre récurrent en anglais} différent
+ de \meta{Nom}.
+ \end{docKey}
+ \begin{docKey}{style}{=\docValue{theorem}\textbar\docValue{definition}\textbar\docValue{proof}}{pas
+ de valeur par défaut, initialement \docValue{theorem}}
+ Cette clé permet de spécifier le style du \enquote{théorème} à créer, au
+ moyen des valeurs \docValue{theorem}, \docValue{definition} et
+ \docValue{proof}.
+ \end{docKey}
+
+\newtheorem{article}
+\newtheorem[frenchtitle=Fait,style=definition]{fact}
+\begin{preamblecode}[listing options={deletekeywords={[1]{definition}},morekeywords={[3]{definition}}}]
+\newtheorem{article}
+\newtheorem[frenchtitle=Fait,style=definition]{fact}
+\end{preamblecode}
+\begin{bodycode}[listing and text]
+\begin{article}[dit premier]
+Les hommes naissent et demeurent libres et égaux en droits\ldots{}
+\end{article}
+\begin{fact*}
+Tout ce qui est rare est cher.
+\end{fact*}
+\begin{fact}
+Un cheval bon marché est rare.
+\end{fact}
+\end{bodycode}
+\end{docCommand}
+
+\subsubsection{Code informatique}
+\label{sec-commande-pour-code}
+
+La \gztauthorcl{} fournit des outils permettant de faire aisément figurer du
+code informatique, notamment du code \LaTeX{} :
+\begin{itemize}
+\item l'environnement \refEnv{gztcode} pour des listings ;
+\item la commande \refCom{gztverb} pour de courts extraits, notamment amenés
+ à figurer dans des phrases.
+\end{itemize}
+
+\begin{docEnvironment}[doclang/environment content=listing]{gztcode}{\oarg{option(s)}}
+ Cet environnement permet de faire figurer un listing de code informatique dans
+ une boîte colorée.
+\begin{bodycode}[listing and text]
+Nous préconisons l'environnement \verb|align*| :
+\begin{gztcode}
+\begin{align*}
+ a & = a\\
+ b & = b
+\end{align*}
+\end{gztcode}
+\end{bodycode}
+\end{docEnvironment}
+
+L'environnement \refEnv{gztcode} admet en argument optionnel la plupart des
+(très nombreuses) options de l'environnement \docAuxEnvironment{tcblisting} du
+\Package*{tcolorbox}. On retiendra notamment les options suivantes.
+
+\begin{docKey}{title}{=\meta{titre}}{pas de valeur par défaut,
+ initialement vide}
+ Cette clé permet de donner un \meta{titre} au listing.
+\begin{bodycode}[listing and text,listing options={morekeywords={[2]title}}]
+Nous préconisons l'environnement \verb|align*| :
+\begin{gztcode}[title=Alignement d'équations]
+\begin{align*}
+ a & = a\\
+ b & = b
+\end{align*}
+\end{gztcode}
+\end{bodycode}
+\end{docKey}
+
+\begin{docKey}{listing and text}{}{}
+ Cette clé permet de, dans la boîte colorée, faire figurer en partie :
+ \begin{itemize}
+ \item haute, le listing ;
+ \item basse, son résultat compilé par \LaTeX{}.
+ \end{itemize}
+ % ^^A
+ \begin{dbwarning}{Option \protect\refKey*{listing and text} : seulement pour
+ du code \LaTeX{}}{}
+ L'option \refKey{listing and text} n'a de sens que pour un listing de code
+ \LaTeX{}.
+ \end{dbwarning}
+\begin{tcboutputlisting}
+\begin{gztcode}[listing and text]
+L'environnement \verb|eqnarray| est obsolète et nous préconisons plutôt
+\verb|align| :
+
+\begin{minipage}[t]{0.4\linewidth}
+ Avec l'environnement \verb|eqnarray*| :
+ \begin{eqnarray*}
+ a & = & a\\
+ b & = & b
+ \end{eqnarray*}
+\end{minipage}
+\hspace{1cm}
+\begin{minipage}[t]{0.4\linewidth}
+ Avec l'environnement \verb|align*| :
+ \begin{align*}
+ a & = a\\
+ b & = b
+ \end{align*}
+\end{minipage}
+\end{gztcode}
+\end{tcboutputlisting}
+L'exemple suivant illustre l'usage de cette option\conseilslatex{}. Le
+code :
+\tcbinputlisting{codes,listing only,listing options={deletekeywords={listing}}}
+donne :
+\input{\jobname.listing}
+\end{docKey}
+
+L'environnement \refEnv{gztcode} permet d'afficher du code informatique
+arbitraire. Mais, dans les listings précédents, on constate que certaines
+commandes \LaTeX{} sont mises en évidence, en l'occurrence en gras. Ceci
+provient du fait que l'environnement \refEnv{gztcode} est configuré pour, par
+défaut, colorer syntaxiquement le code \LaTeX{}. Mais d'autres langages sont
+pris en charge.
+
+\begin{dbremark}{Environnement \protect\refEnv*{gztcode} : pas seulement pour le
+ code \LaTeX{}}{}
+ L'environnement \refEnv{gztcode} permet de colorer syntaxiquement le code
+ informatique de tout langage connu du \Package*{listings}. Pour ce faire, il
+ suffit de le spécifier (selon la syntaxe de ce package) en argument de
+ l'option \refKey{listing options} suivante.
+\end{dbremark}
+
+\begin{docKey}{listing options}{}{}
+ Cette clé de l'environnement \refEnv{gztcode} permet de passer au listing
+ toute option connue du \Package*{listings}, notamment le langage sous-jacent
+ au moyen de l'option \docAuxKey{language}.
+\lstset{escapechar={},escapeinside={}}
+\begin{bodycode}[listing and text]
+\lstdefinestyle{mon-style}{%
+ language=Python,%
+ basicstyle=\ttfamily,%
+ keywordstyle=\color{magenta},%
+ commentstyle=\color{gray}\itshape,%
+ stringstyle=\color{cyan}%
+}
+%
+\begin{gztcode}[listing options={style=mon-style}]
+"""Calcul de la factorielle""" # En python
+def factorielle(x):
+ if x < 2:
+ return 1
+ else:
+ return x * factorielle(x-1)
+\end{gztcode}
+\end{bodycode}
+\lstset{escapechar="}
+\end{docKey}
+
+\begin{docCommand}{gztverb}{\marg{code}}
+ Cette commande permet d'afficher \emph{verbatim}\footnote{\Cad*{} tel quel,
+ sans être interprété par \LaTeX{}.} un (court) extrait de \meta{code} passé en
+ argument.
+
+ L'exemple suivant illustre l'usage de cette commande\conseilslatex.
+\begin{bodycode}[listing and text,colback=white,listing options={deletekeywords={listing},deletekeywords={[3]style}}]
+Dans le cas de \LaTeX, les commandes de style de caractères \gztverb{\bf},
+\gztverb{\it}, \gztverb{\sf}, \gztverb{\tt}, \gztverb{\sc}, \gztverb{\sl},
+\gztverb{\rm} sont désormais à proscrire. Elles doivent être remplacées par
+les commutateurs, respectivement \gztverb{\bfseries}, \gztverb{\itshape},
+\gztverb{\sffamily}, \gztverb{\ttfamily}, \gztverb{\scshape},
+\gztverb{\slshape}, \gztverb{\rmfamily}.
+\end{bodycode}
+\end{docCommand}
+
+\section{Autres outils communs à tous types d'articles}
+\label{sec-outils-communs-tous-1}
+
+Cette section donne une liste d'outils (commandes et environnements) fournis par
+des packages automatiquement chargés par la \gztauthorcl\footnote{La
+ \vref{sec-packages-charges-par} liste ceux dont les fonctionnalités peuvent
+ être utiles aux auteurs.}.
+
+\begin{dbwarning}{Liste des fonctionnalités des packages tiers non exhaustive}{}
+ Cette liste est \emph{non exhaustive} :
+ \begin{itemize}
+ \item seule une infime partie des packages existants est chargée par la
+ classe ;
+ \item seuls certains packages chargés par la classe sont cités ;
+ \item seules certaines fonctionnalités des packages cités sont décrites. Le
+ lecteur souhaitant en savoir davantage est invité à lire la documentation de
+ ces packages.
+ \end{itemize}
+\end{dbwarning}
+
+\subsection{Guillemets, citations}
+\label{sec-guillemets-citations}
+
+Le \Package*{csquotes} est dédié aux citations, formelles et informelles,
+d'extraits de textes. Il propose notamment la commande \refCom{enquote}
+suivante, simple d'emploi.
+
+\begin{docCommand}{enquote}{\marg{texte}}
+ Cette commande compose le \meta{texte} entre guillemets, automatiquement
+ adaptés :
+ \begin{itemize}
+ \item aux standards typographiques de la langue en cours. On pourra donc
+ l'utiliser dès que du texte est à mettre entre guillemets ;
+ \item au niveau (1 ou 2) de \enquote{citation} en cas d'emboîtement. On
+ pourra donc également l'utiliser dès que du texte est à citer de façon
+ informelle.
+ \end{itemize}
+\begin{bodycode}[listing and text]
+Il lui répondit: \enquote{Courteline disait: \enquote{Passer pour un idiot aux
+ yeux d'un imbécile est une volupté de fin gourmet.}}
+\end{bodycode}
+\end{docCommand}
+
+\begin{docCommand}{textelp}{\marg{texte}}
+ Cette commande est à employer pour signifier une omission, avec éventuel ajout
+ de \meta{texte}.
+
+ Cf. \vref{sec-epigraphes} pour un exemple d'utilisation de cette commande.
+\end{docCommand}
+
+(\textsc{À suivre...})
+
+\subsection{Adresses Web (\enquote{\textsc{url}})}
+\label{sec-url}
+
+Le \Package*{hyperref} fournit (entre autres) la commande \refCom{url} qui permet
+de facilement afficher des adresses Web (aussi appelées \enquote{\textsc{url}}),
+même si elles comportent des caractères spéciaux de \TeX{} (|#|, |_|, |~|,
+\lstinline[commentstyle={}]+%+, |&|, etc.).
+
+\begin{docCommand}{url}{\marg{adresse Web}}
+ Cette commande affiche l'\meta{adresse Web} saisie \emph{telle
+ quelle}\footnote{Notamment sans faire précéder les éventuels caractères
+ spéciaux qu'elle contient de la commande d'échappement
+ \protect\lstinline+\\+.} et fait d'elle un lien hypertexte.
+\begin{bodycode}[listing and text,listing options={deletekeywords={[2]{url}},deletekeywords={[1]{math}}}]
+Pour plus d'information, nous renvoyons à notre site Web
+\url{http://math.univ-lille1.fr/~nwejm/}.
+\end{bodycode}
+\begin{bodycode}[listing and text,listing options={deletekeywords={[2]{url}},deletekeywords={[1]{exemple}}}]
+Par exemple, \url{www.cnrs.fr/insmi/IMG/pdf/Parite_ReunionDU290312.pdf}.
+\end{bodycode}
+\end{docCommand}
+
+\subsection{Graphiques de très haute qualité}
+\label{sec-graphiques-de-tres}
+
+Le \Package*{pgfplots} permet de créer aisément des graphiques (de dimensions
+$2$ ou $3$) de très haute qualité, que ce soit pour représenter des fonctions ou
+des jeux de données.
+
+(\textsc{À suivre...})
+
+\subsection{Références croisées}
+\label{sec-references-croisees}
+
+Le \Package*{cleveref}, utilisé conjointement avec le \Package*{varioref}, rend la
+commande \refCom{vref} de ce dernier très puissante.
+
+\begin{docCommand}{vref}{\marg{label}}
+ Cette commande affiche le numéro de la référence labellisée par \meta{label}
+ et :
+ \begin{itemize}
+ \item affiche (ou pas selon le contexte) la page où se situe cette
+ référence\footnote{Fonctionnalité fournie par le \Package{varioref}.} ;
+ \item détecte automatiquement la nature de la référence (section, tableau,
+ figure, équation, théorème, etc.) et fait précéder le numéro de celle-ci du
+ mot clé correspondant\footnote{Fonctionnalité fournie par le
+ \Package{cleveref}.} ;
+ \item fait de la référence un lien hypertexte\footnote{Fonctionnalité fournie
+ par le \Package{hyperref}.}.
+ \end{itemize}
+\begin{bodycode}[listing and text,listing options={deletekeywords={[2]url,[1]math}}]
+[...] on se reportera à la \vref{sec-canevas-de-fichier} pour un canevas de
+fichier source [...]
+\end{bodycode}
+\end{docCommand}
+
+\subsection{Épigraphes}
+\label{sec-epigraphes}
+
+Le \Package*{epigraph} permet de composer des épigraphes au moyen de la commande
+\refCom{epigraph}.
+
+\begin{docCommand}{epigraph}{\marg{épigraphe}{\marg{source}}}
+ Cette commande\footnote{Légèrement redéfinie par la \gztauthorcl.} compose un
+ \meta{épigraphe} et sa \meta{source} (qui peut éventuellement être vide).
+\end{docCommand}
+
+\begin{bodycode}[listing and text]
+\epigraph{%
+ Parce qu'un secret, ce n'est pas quelque chose qui ne se raconte pas. \textelp{}%
+}{%
+ César\\M. \textsc{Pagnol}, \emph{César}. Livre de Poche~161, p.~115%
+}
+\end{bodycode}
+
+\begin{dbremark}{Source de l'épigraphe en entrée bibliographique}{}
+ La source de l'épigraphe pourra faire l'objet d'une entrée bibliographique en
+ vue d'être citée en 2\ieme{} argument de \refCom{epigraph} au moyen de la
+ commande \lstinline[moretexcs={fullcite}]+\fullcite+ du \Package*{biblatex}
+ (cf. \vref{sec-bibliographie}).%
+ \footnote{%
+ \lstset{deletekeywords={options},deletekeywords={[2]skipbib},morekeywords={[2]{options}},morekeywords={[3]skipbib}}%
+ Dans le fichier \hologo{BibTeX}, on ajoutera à cette entrée la ligne
+ %
+ \protect\lstinline+options = \{skipbib\}+
+ %
+ pour éviter que cette source figure dans la liste des
+ références bibliographiques.%
+ }
+\end{dbremark}
+
+% Dans le source \hologo{BibTeX} de l'exemple suivant, on notera la ligne
+% \lstinline|options = {skipbib}| permettant d'éviter que la source de l'épigraphe
+% ne figure dans la liste des références bibliographiques.
+% \begin{preamblecode}[title=Source \hologo{BibTeX}]
+% @book{pagnol,
+% title = {César},
+% author = {Pagnol, Marcel},
+% number = {161},
+% pages = {115},
+% series = {Livre de poche},
+% options = {skipbib}
+% }
+% \end{preamblecode}
+% \begin{bodycode}[listing and text,listing options={deletekeywords={options,[2]number}}]
+% \epigraph{Je ne peux pas vous le dire à tous à la fois, et si vite que ça. Parce
+% qu'un secret, ce n'est pas quelque chose qui ne se raconte pas. Mais c'est une
+% chose qu'on se raconte à voix basse, et séparément.}{César\\\fullcite{pagnol}}
+% \end{bodycode}
+
+
+\subsection{Listes en ligne}
+\label{sec-listes-en-ligne}
+
+Le lecteur est certainement familier des environnements
+\docAuxEnvironment{itemize}, \docAuxEnvironment{enumerate} et
+\docAuxEnvironment{description} permettant de créer des listes respectivement
+\enquote{à puces}, \enquote{numérotées} et \enquote{de description}. Le
+\Package*{enumitem} fournit des versions étoilées de ces environnements qui
+composent ces listes \enquote{en ligne}, \cad*{} au sein d'un même
+paragraphe\footnote{Le but premier de ce package est de personnaliser les listes
+ mais cela est déconseillé dans le cadre de la \gzt{} car cela pourrait
+ contrevenir à la marche typographique qu'elle a adoptée.}.
+
+\begin{docEnvironment}[doclang/environment content=liste]{itemize*}{}
+ Cet environnement compose une liste \enquote{à puces} en ligne.
+\end{docEnvironment}
+
+\begin{docEnvironment}[doclang/environment content=liste]{enumerate*}{}
+ Cet environnement compose une liste \enquote{numérotée} en ligne.
+\end{docEnvironment}
+
+\begin{docEnvironment}[doclang/environment content=liste]{description*}{}
+ Cet environnement compose une liste \enquote{de description} en ligne.
+\end{docEnvironment}
+
+\begin{bodycode}[listing and text,listing options={deletekeywords={[1]math,[2]url}}]
+\begin{enumerate}
+\item Les données que j'ai rassemblées [...]
+\item Les données que j'ai recueillies sont
+ \begin{enumerate*}
+ \item disponibles publiquement sur internet : [...] ;
+ \item accessibles par Wikipédia, [...] ;
+ \item pour 60 des conférenciers [...].
+ \end{enumerate*}
+\end{enumerate}
+\end{bodycode}
+
+\section{Canevas de fichier source typique}
+\label{sec-canevas-de-fichier}
+
+\newcommand{\attachfilename}{mon-article.tex}%
+\newcommand{\attachfiletextlink}{Canevas de fichier source typique}%
+\tcbset{listing file=\attachfilename}%
+\begin{tcboutputlisting}
+\documentclass{gztarticle}
+%
+% Indiquer le (chemin vers le) fichier .bib utilisé.
+\addbibresource{.bib}
+%
+\begin{document}
+\title{}
+% \subtitle[short=]{}
+%
+\author[%
+ affiliation={%
+ },%
+ photo=,%
+ email=,%
+ webpage=,%
+ minibio={%
+ }%
+]{}
+%
+% \acknowledgements{%
+% }
+%
+% \begin{abstract}
+% \end{abstract}
+%
+\maketitle
+%
+% Ici vient le contenu de l'article.
+
+%
+\printbibliography % ou \printauthorsdetails
+\end{document}
+\end{tcboutputlisting}
+%
+Pour le lecteur souhaitant écrire un article pour la \gzt*{}, un modèle typique
+d'article standard\footnote{Où les commandes et environnement moins fréquents
+ ont été mis en commentaire.} est :
+\begin{itemize}
+\item reproduit ci-dessous ;
+\item attaché à la version \format{pdf} du présent document et atteignable par
+ simple clic sur l'icône ci-dessous.
+\end{itemize}
+%
+\tcbinputlisting{%
+ codes,
+ listing only,%
+ listing options={moretexcs={addbibresource}},%
+ title={\attachfiletextlink\ \attachfile{\attachfilename}}%
+}
+
+%%% Local Variables:
+%%% mode: latex
+%%% eval: (latex-mode)
+%%% ispell-local-dictionary: "fr_FR"
+%%% TeX-master: "../gzt-fr.tex"
+%%% End:
diff --git a/macros/latex/contrib/gzt/doc/latex/gzt/french/sections/notations.tex b/macros/latex/contrib/gzt/doc/latex/gzt/french/sections/notations.tex
new file mode 100644
index 0000000000..666d6059a9
--- /dev/null
+++ b/macros/latex/contrib/gzt/doc/latex/gzt/french/sections/notations.tex
@@ -0,0 +1,138 @@
+\etocsettocdepth.toc{section}%
+%
+\section{Notations, syntaxe, terminologie et codes couleurs}\label{sec-synt-term-notat}
+
+Ce chapitre précise les notations, syntaxe, terminologie et codes couleurs de
+la présente documentation.
+
+
+\subsection{Commandes, environnements, clés, valeurs}\label{sec-comm-envir-cles}
+
+Les commandes, environnements, clés et valeurs de clés sont systématiquement
+composés en fonte à chasse fixe. En outre, pour plus facilement les
+distinguer, ils figurent avec des couleurs propres :
+\begin{itemize}
+\item les commandes en bleu : \docAuxCommand*{commande} ;
+\item les environnements en \enquote{sarcelle} :
+ \docAuxEnvironment*{environnement} ;
+\item les clés en pourpre : \docAuxKey*{clé} ;
+\item les valeurs des clés en violet : \docValue*{valeur}.
+\end{itemize}
+
+\subsection{Arguments génériques}
+\label{sec-arguments-generiques}
+
+Pour expliquer le rôle d'une commande, il est parfois nécessaire d'indiquer
+à quoi celle-ci s'applique, autrement dit quel en est l'argument générique.
+Un tel argument est composé :
+\begin{itemize}
+\item en fonte à chasse fixe ;
+\item en italique ;
+\item entre chevrons simples ;
+\end{itemize}
+le tout en marron, ainsi : \meta{argument générique}.
+
+\subsection{Liens hypertextes}
+\label{sec-liens-hypertextes}
+
+Les liens hypertextes figurent en couleur, ainsi :
+\href{http://gte.univ-littoral.fr/members/dbitouze/pub/latex}{lien hypertexte}.
+La plupart des références aux commandes, environnements et clés définis dans la
+présente documentation, sont des liens hypertextes, surmontés du numéro de page
+où se trouve la cible correspondante (sauf si elle se situe sur la même page) :
+\begin{itemize}
+\item \refCom{author} ;
+\item \refEnv{abstract}.
+\end{itemize}
+
+
+\subsection{Éléments \enquote{obligatoires}}
+\label{sec-comm-oblig}
+
+L'icône \mandatory{}, figurant en regard de certains éléments (commandes ou
+environnements), indique que ceux-ci sont \enquote{obligatoires}.
+
+\subsection{Codes sources}
+\label{sec-codes-sources}
+
+Les exemples qui illustrent la présente documentation sont constitués de codes
+sources et, le cas échéant, des \enquote{copies d'écran} correspondantes.
+% Ceux-ci proviennent le plus souvent du spécimen de document composé avec la
+% \yatcl, fourni avec l'ensemble de la classe
+% (cf. \vref{sec-specimen-arborescence}).
+
+Ces codes sources figurent dans des cadres de couleur bleu :
+\begin{itemize}
+\item non ombrés s'ils doivent être saisis dans le corps du document ;
+\item ombrés s'ils doivent être saisis en préambule du fichier (maître).
+\end{itemize}
+Ces cadres pourront en outre comporter d'éventuels titres :
+\begin{multicols}{2}
+\begin{bodycode}
+"\meta{code source}"
+\end{bodycode}
+\begin{bodycode}[title=\meta{titre}]
+"\meta{code source}"
+\end{bodycode}
+\begin{preamblecode}
+"\meta{code source à insérer en préambule}"
+\end{preamblecode}
+\begin{preamblecode}[title=\meta{titre}]
+"\meta{code source à insérer en préambule}"
+\end{preamblecode}
+\end{multicols}
+
+\subsection{Espaces dans les codes sources}
+\label{sec-espaces-dans-les}
+
+Pour éviter certaines confusions, les espaces dans les codes sources devant
+être saisis au clavier sont parfois matérialisés au moyen de la marque
+\lstinline[showspaces]+ +.
+
+\subsection{Options}
+\label{sec-options}
+
+La présente classe, ainsi que certaines de ses commandes et certains de ses
+environnements, peuvent être modulés au moyen d'options, ou listes d'options
+(séparées par des virgules). Ces options se présentent sous la forme
+\meta{clé}|=|\meta{valeur} et la \meta{valeur} passée à une \meta{clé} peut
+être :
+%^^A \begin{description}
+%^^A \item[ne prennent pas de valeur.] Une telle option, par exemple nommée
+%^^A \refKey{option}, est alors documentée selon la syntaxe suivante:
+%^^A \begin{docKey*}{option}{}{\meta{valeurs par défaut et initiale}}
+%^^A \meta{Description de \refKey{option}}
+%^^A \end{docKey*}
+%^^A \item[prennent des valeurs.] Une telle option se présente alors sous la forme
+%^^A \meta{clé}"="\meta{valeur}. Les valeurs passées à une clé peuvent être :
+\begin{description}
+\item[libre.] Si une telle \meta{clé} est (pour l'exemple) nommée
+ \refKey{freekey}, elle est alors documentée selon la syntaxe suivante :
+ \begin{docKey*}{freekey}{=\meta{valeur}}{\meta{valeurs par défaut et initiale}}
+ \meta{Description de \refKey{freekey}}
+ \end{docKey*}
+\item[imposée] (parmi une liste de valeurs possibles). Si une telle \meta{clé} est
+ (pour l'exemple) nommée \refKey{choicekey} et de valeurs imposées
+ \docValue*{valeur1}, \docValue*{valeur2}, ..., \docValue*{valeurN}, elle est alors
+ documentée selon la syntaxe suivante\footnote{Comme souvent en informatique,
+ la barre verticale séparant les valeurs possibles signifie \enquote{ou}.} :
+ \begin{docKey*}{choicekey}{=\docValue*{valeur1}\textbar\docValue*{valeur2}\textbar...\textbar\docValue*{valeurN}}{\meta{valeurs par défaut et initiale}}
+ \meta{Description de \refKey{choicekey} et de ses valeurs possibles}
+ \end{docKey*}
+\end{description}
+%^^A \end{description}
+
+Les \meta{valeurs par défaut et initiale} d'une clé sont souvent précisées
+(entre parenthèses en fin de ligne). Elles indiquent ce que la clé vaut :
+\begin{description}
+\item[par défaut] c'est-à-dire lorsque la clé \emph{est} employée, mais
+ \emph{seule} c'est-à-dire sans qu'une valeur explicite lui soit passée ;
+\item[initialement] c'est-à-dire lorsque la clé \emph{n'est pas} employée.
+\end{description}
+
+%%% Local Variables:
+%%% mode: latex
+%%% eval: (latex-mode)
+%%% ispell-local-dictionary: "fr_FR"
+%%% TeX-master: "../gzt-fr.tex"
+%%% End:
diff --git a/macros/latex/contrib/gzt/doc/latex/gzt/french/sections/packages-charges.tex b/macros/latex/contrib/gzt/doc/latex/gzt/french/sections/packages-charges.tex
new file mode 100644
index 0000000000..d51dbb840b
--- /dev/null
+++ b/macros/latex/contrib/gzt/doc/latex/gzt/french/sections/packages-charges.tex
@@ -0,0 +1,38 @@
+\section{Packages chargés par la classe}\label{sec-packages-charges-par}
+
+On a vu que, pour plusieurs de ses fonctionnalités, la \gztauthorcl{} s'appuie
+sur des packages qu'elle charge automatiquement. Ceux dont les fonctionnalités
+peuvent être utiles aux auteurs sont répertoriés dans la liste suivante qui
+indique leur fonction et le cas échéant :
+\begin{itemize}
+\item la ou les options avec lesquelles ils sont chargés ;
+\item les options de la \gztauthorcl{} ou leurs commandes propres permettant de les
+ personnaliser.
+\end{itemize}
+En sus des outils propres à la \gztauthorcl, tous ceux fournis par ces
+différents packages sont donc à disposition des auteurs de la \gzt{}.
+
+\begin{description}
+\item[\package{xcolor} :] couleurs ;
+ \begin{description}
+ \item[option par défaut :] \docAuxKey{table} et \docAuxKey{cmyk} ;
+ \end{description}
+\item[\package{kpfonts} :] police principale du document ;
+ \begin{description}
+ \item[option par défaut :] \docAuxKey{sfmath}, \docAuxKey{easyscsl},
+ \docAuxKey{noDcommand} ;
+ \end{description}
+\item[\package*{graphicx} :] inclusion d'images ;
+\item[\package*{csquotes} :] citations formelles et informelles ;
+ \begin{description}
+ \item[option par défaut :] \docAuxKey{autostyle} ;
+ \end{description}
+\item[...] (à suivre).
+\end{description}
+
+%%% Local Variables:
+%%% mode: latex
+%%% eval: (latex-mode)
+%%% ispell-local-dictionary: "fr_FR"
+%%% TeX-master: "../gzt-fr.tex"
+%%% End:
diff --git a/macros/latex/contrib/gzt/doc/latex/gzt/french/sections/todo.tex b/macros/latex/contrib/gzt/doc/latex/gzt/french/sections/todo.tex
new file mode 100644
index 0000000000..0a266c3d2b
--- /dev/null
+++ b/macros/latex/contrib/gzt/doc/latex/gzt/french/sections/todo.tex
@@ -0,0 +1,15 @@
+\chapter{To do}
+\label{cha:do}
+
+% \begin{enumerate}
+% \item Revoir les pointillés de la 2\ieme{} de couverture avec le \Pkg{TikZ} (au
+% moyen de quelque chose comme :
+% \verb|\tikz \draw[dotted] (0pt,0pt) -- (50pt,0pt);|).
+% \end{enumerate}
+
+%%% Local Variables:
+%%% mode: latex
+%%% eval: (latex-mode)
+%%% ispell-local-dictionary: "fr_FR"
+%%% TeX-master: "../gzt-fr.tex"
+%%% End:
diff --git a/macros/latex/contrib/gzt/source/latex/gzt/gzt.dtx b/macros/latex/contrib/gzt/source/latex/gzt/gzt.dtx
new file mode 100644
index 0000000000..e490957478
--- /dev/null
+++ b/macros/latex/contrib/gzt/source/latex/gzt/gzt.dtx
@@ -0,0 +1,7511 @@
+% \iffalse meta-comment
+%
+% File: gzt.dtx Copyright (C) 2014-2021 by
+% Denis Bitouz'e <denis.bitouze@univ-littoral.fr>
+%
+% It may be distributed and/or modified under the conditions of the
+% 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>
+This bundle provides two classes and BibLaTeX styles for the French journal [“La
+Gazette des Mathématiciens”](https://smf.emath.fr/les-publications/la-gazette):
+
+- `gzt` for the complete issues of the journal, aimed at the Gazette’s team,
+- `gztarticle`, intended for authors who wish to publish an article in the
+ Gazette. This class’s goals are to
+ - faithfully reproduce the layout of the Gazette, thus enabling the authors to
+ be able to work their document in actual conditions, and
+ - provide a number of tools (commands and environments) to facilitate the
+ drafting of documents, in particular those containing mathematical formulas.
+%</readme>
+%<*internal>
+\fi
+\def\nameofplainTeX{plain}
+\ifx\fmtname\nameofplainTeX\else
+ \expandafter\begingroup
+\fi
+%</internal>
+%<*class|class-article|install>
+\def\gztfileversion{1.0.1}
+\def\gztfiledate{2021-02-14}
+%</class|class-article|install>
+%<*install>
+\input l3docstrip.tex
+% \input docstrip.tex
+\Msg{**************************************************************}
+\Msg{* Installation}
+\Msg{* Class: gzt \gztfiledate\space v\gztfileversion}
+\Msg{* for the French journal "La Gazette des Math'ematiciens" (DB)}
+\Msg{**************************************************************}
+\keepsilent
+\askforoverwritefalse
+\preamble
+-----------------------------------------------------------------------------
+gzt --- SMF bundle of classes for the French journal "La Gazette des
+ Math'ematiciens"
+
+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-2021 by Denis Bitouz'e <denis.bitouze@univ-littoral.fr>
+----------------------------------------------------------------------------
+This work may be distributed and/or modified under the
+conditions of the LaTeX Project Public License, either version 1.3c
+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.3c 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}
+\generate{
+ \nopreamble\nopostamble
+ \file{CHANGELOG.md}{\from{\jobname.dtx}{changelog}}
+}%
+\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.}%
+% \changes{v1.0.0}{2020-03-17}{Eighth CTAN version.}%
+% \changes{v1.0.1}{2021-02-14}{Nineth CTAN version.}%
+%
+% \CheckSum{4413}
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \StopEventually{}
+%
+% \selectlanguage{english}
+% \chapter{Auxiliary files}
+%
+% \section{Gazette's logo}
+% \label{sec:gzts-logo}
+% Before the code of the \gztcl{} by itself, we give the begining of the
+% code of the source file of the Gazette's logo (to be compiled with "xelatex").
+% \begin{macrocode}
+%<*class-logo>
+% \end{macrocode}
+%
+% \begin{macrocode}
+\documentclass{standalone}
+\usepackage{fontspec}
+\usepackage[export]{adjustbox}
+\usepackage[cmyk]{xcolor}
+\usepackage{xparse}
+%
+\setmainfont{HelveticaNeueLTStd-ThEx}
+\newfontfamily\des{HelveticaNeueLTStd-Th}
+\newfontfamily\mathematiciens{HelveticaNeueLTStd-Lt}
+%
+\ExplSyntaxOn
+\tl_new:N \l__gzt_frontmatter_head_text_tl
+\tl_set:Nn \l__gzt_frontmatter_head_text_tl {%
+ \adjustbox{stack=r}
+ {%
+ \addfontfeature{LetterSpace=10}
+ \textcolor{__gzt_generic_light_color}{%
+ \fontsize{21}{0}\selectfont%
+ la\hspace{5mm}%
+ \fontsize{45}{0}\selectfont%
+ Gazette%
+ }%
+ \\[1.7mm]%
+ \fontsize{15}{0}\selectfont%
+ \textcolor{__gzt_generic_light_color}{%
+ \des%
+ \addfontfeature{LetterSpace=6}%
+ des%
+ }%
+ \hspace{2.5mm}%
+ \textcolor{__gzt_generic_dark_color}{%
+ \mathematiciens%
+ \addfontfeature{LetterSpace=6}%
+ Math\'ematiciens%
+ }%
+ }%
+}
+%
+\NewDocumentCommand \frontmatterheadtext {} {
+ \l__gzt_frontmatter_head_text_tl
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</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}
+ {\gztfiledate}
+ {\gztfileversion}
+ {
+ 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_@@_moral_report_bool
+\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}
+%
+% We define some common code to the "moralreport" global option of "gzt" and
+% "gztarticle".
+% \begin{macrocode}
+\tl_gset:Nn \g_@@_moral_report_common_option_tl {%
+ \AddToHook{begindocument/before} {%
+ \bool_gset_true:N \g_@@_moral_report_bool
+ \bool_gset_true:N \g_@@_frontcover_without_minitoc_bool
+ \title[short={\bfseries\c_@@_moralreport_rubric_string_tl}]{}
+ \tl_gset:Nn \g_@@_rubric_title_tl {\c_@@_moralreport_rubric_string_tl}
+ }
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</class|class-article>
+% \end{macrocode}
+%
+% \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}{}
+ },%
+ moralreport .code:n = {
+ \g_@@_moral_report_common_option_tl
+ \AddToHook{begindocument/before} {%
+ \tl_gset:Nn \g_@@_pdftitle_string_tl {\c_@@_moralreport_rubric_string_tl}
+ }
+ },
+}%
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</class>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<*class-article>
+% \end{macrocode}
+%
+% \begin{macrocode}
+\keys_define:nn { gztarticle }
+{
+ editorial .code:n = {%
+ \AddToHook{begindocument}{%
+ \_@@_before_display_editorial:n {}%
+ }
+ \AddToHook{enddocument}{%
+ \_@@_after_display_editorial: {}%
+ }
+ },%
+ presidentmessage .code:n = {%
+ \AddToHook{begindocument}{%
+ \_@@_before_display_presidentmessage: {}%
+ }
+ \AddToHook{enddocument}{%
+ \_@@_after_display_presidentmessage: {}%
+ }
+ },%
+ moralreport .code:n = {
+ \g_@@_moral_report_common_option_tl
+ \keys_set:nn { gztarticle / moralreport } {#1}
+ },
+ moralreport / title .code:n = {%
+ \tl_gset:Nn \g_@@_moral_report_title_tl {#1}
+ },%
+ moralreport / short~title .code:n = {%
+ \tl_gset:Nn \g_@@_moral_report_short_title_tl {#1}
+ },%
+}%
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</class-article>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<*class>
+% \end{macrocode}
+%
+% If we want to disable the inside backcover.
+% \begin{macrocode}
+% \bool_gset_true:N \g_@@_no_inside_backcover_bool
+% \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}
+\AddToHook{begindocument/before}{
+ \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}
+\AddToHook{begindocument/before}{
+ \tl_const:Nn \c_@@_frontcover_header_string_tl {
+ \bool_if:NT {\g_@@_special_edition_bool} {
+ \text_uppercase:n {\c_@@_long_special_edition_string_tl}
+ \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 {
+ \bool_if:NTF {\g_@@_moral_report_bool} {
+ \c_@@_moralreport_rubric_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}{\text_uppercase:n {\c_@@_smf_short_string_tl}}
+ \c_space_tl
+ \textcolor{@@_date_color}{
+ \textendash{}\c_space_tl
+ \bool_if:NTF {\g_@@_moral_report_bool} {
+ \text_uppercase:n { \c_@@_moralreport_rubric_string_tl }
+ }{
+ \text_uppercase:n {\c_@@_journal_short_title_string_tl}
+ \bool_if:nF { \g_@@_inside_frontcover_bool || \g_@@_backmatter_bool || {\int_compare_p:nNn {\g_@@_issue_number_int}={0}} }
+ {
+ \c_space_tl\textendash{}\c_space_tl
+ \l_@@_uppercased_date_format\displaydate{@@_date}
+ \bool_if:NF {\g_@@_special_edition_bool} {
+ \c_space_tl
+ \textendash{}\c_space_tl
+ \textcolor{@@_smf_number_color}{\No\int_use:N\g_@@_issue_number_int}
+ }
+ }
+ }
+ }
+}
+% \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 {special-edition}
+}{
+ \tl_const:Nn \c_@@_issue_bib_key_tl {\int_use:N \g_@@_issue_number_int}
+}
+% \end{macrocode}
+% For the interview title.
+% \begin{macrocode}
+\tl_const:Nn \c_@@_interview_title_string_tl {En~apart\'e~avec~}
+% \end{macrocode}
+% For the asides opening and eventuelly closing punctuation marks.
+% \begin{macrocode}
+\tl_const:Nn \c_@@_aside_string_tl {--}
+% \end{macrocode}
+% For the draft watermark.
+% \begin{macrocode}
+\tl_const:Nn \c_@@_draftwatermark_string_tl {draft}
+% \end{macrocode}
+% For the text accompagnying the date displayed in the footer of the authors' versions.
+% \begin{macrocode}
+\tl_const:Nn \c_@@_compiled_string_tl {
+ \int_compare:nNnT {\g_@@_issue_number_int}={0} {
+ \c_@@_footer_size_font_tl
+ \IfLanguageName{french}{
+ Compil\'e~le~
+ }{
+ Compiled~on~
+ }
+ \today
+ }
+}
+% \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_gset_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_gset:Nn \g_@@_minitoc_circle_diameter_dim {142mm}
+\dim_gset:Nn \g_@@_minitoc_textwidth_dim {65mm}
+\dim_gset:Nn \g_@@_minitoc_xshift_dim {-22mm}
+\dim_gset: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}
+\AddToHook{env/multicols/begin}{
+ \bool_gset_true:N \g_@@_multicols_bool
+}
+\AddToHook{env/multicols/end}{
+ \bool_gset_false:N \g_@@_multicols_bool
+}
+\AddToHook{env/refsection/begin}{
+ \bool_gset_true:N \g_@@_refsection_bool
+}
+\AddToHook{env/refsection/end}{
+ \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
+}
+\AddToHook{begindocument/before}{%
+ \hypersetup{%
+ pdftitle=\g_@@_pdftitle_string_tl,
+ pdfauthor=\g_@@_pdfauthor_string_tl%
+ }
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\cs_new_protected:Nn \_@@_email:n
+ {
+ \href{mailto:#1}{\nolinkurl{#1}}%
+ }
+% \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{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
+ \begin{_@@_minibiographies_acknowledgements_tcbox}
+ #1
+ \end{_@@_minibiographies_acknowledgements_tcbox}
+}
+% \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_tl=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) }
+ ]
+ \leavevmode
+ \vbox_top:n {%
+ \l_@@_people_affiliation_tl%
+ \newline%
+ \href{mailto:\l_@@_people_email_tl}{\nolinkurl{\l_@@_people_email_tl}}%
+ }
+ \medskip%
+ }{
+ \tl_if_in:NnTF \l_@@_people_role_tl { author } {
+ \tl_if_empty:NF \l_@@_firstlastname_tl {
+ \footnotesize%
+ % \noindent%
+ \DTLiffirstrow{%
+ }{
+ \DTLpar%
+ \medskip%
+ }
+ \dim_set:Nn \l_@@_minibio_width_dim {\linewidth-1em - \c_@@_authors_photos_box_width_dim}
+ \tl_if_empty:NTF \l_@@_people_photo_tl
+ {%
+ \dim_add:Nn \l_@@_minibio_width_dim {\c_@@_authors_photos_box_width_dim}
+ }{%
+ \begin{adjustbox}{valign=t,minipage=\c_@@_authors_photos_box_width_dim}
+ \includegraphics[width=\c_@@_authors_photos_width_dim]{\l_@@_people_photo_tl}
+ \end{adjustbox}%
+ \quad%
+ }
+ \begin{adjustbox}{valign=t,minipage=\l_@@_minibio_width_dim}
+ \begin{description}[leftmargin=1em,style=nextline]
+ \item[%
+ \textcolor{@@_people_color}{%
+ \_@@_citeauthor_no_firstinits:n {\c_@@_issue_bib_key_tl -#1- \exp_not:V\DTLcurrentindex}%
+ }%
+ ]
+ \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}
+ }
+ }{
+ \_@@_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
+ }
+ }{
+ \text_uppercase:n {\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,labelindent=\c_zero_dim]
+ \@@_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,labelindent=\c_zero_dim]
+ \@@_display_people_by_role:n {editorinchief}
+ \end{description}
+ \bigskip
+ \par
+ \item[\c_@@_editors_string_tl] \
+ \begin{description}[leftmargin=1em,style=nextline,labelindent=\c_zero_dim]
+ \@@_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_tl=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{Moral report setup}
+%
+% \begin{macro}{\moralreportsetup}
+% We define the command that lets the user specify the moral report setup.
+% \begin{macrocode}
+\NewDocumentCommand \moralreportsetup { m } {
+ \bool_gset_true:N \g_@@_moral_report_bool
+ \bool_gset_true:N \g_@@_frontcover_without_minitoc_bool
+ \keys_set:nn { gzt/moralreport } {#1}
+}
+% \end{macrocode}
+%
+% \subsection{Journal setup}
+%
+% \begin{macro}{\journalsetup}
+% 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}
+%
+% \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}
+%
+% \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}
+\AddToHook{begindocument}{%
+% \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 \l_@@_article_acknowledgements_tl%
+\cs_new_protected:Nn \@@_article_acknowledgements:n
+{
+ \tl_set:Nn \l_@@_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 a command for local (to a given article) tables of contents
+% \begin{macrocode}
+\cs_new_protected:Nn \_@@_display_localtoc:
+{
+ \etocsettocstyle{\section*{\contentsname}}{}%
+ \etocsetstyle {section}
+ {}
+ {\leavevmode\leftskip 0cm\relax}
+ {\bfseries\normalsize\makebox[.6cm][l]{\etocnumber}%
+ \etocname\nobreak\hfill\nobreak%
+ \makebox[.5cm][r]{%
+ \etocpage%
+ }%
+ \par%
+ }
+ {\medskip}
+ \localtableofcontentswithrelativedepth{+1}
+}
+\NewDocumentCommand \gztlocaltableofcontents {}
+{
+ \_@@_display_localtoc: {}
+}
+% \end{macrocode}
+%
+% We create two token lists that will contain:
+% \begin{enumerate}
+% \item the unique bibliographic key,
+% \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_gset: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 } {%
+ \AddToHook{begindocument/before}{\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 }
+{
+ \AddToHook{enddocument}{%
+ \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}
+\AddToHook{begindocument/before}{
+ \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}
+%
+% \begin{macrocode}
+%</class>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<*class|class-article>
+% \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_tl=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: {}
+}
+\AddToHook{begindocument/before}{%
+ \tl_set_eq:NN \g_@@_editorial_heading_tl \c_@@_editorial_heading_string_tl
+ \bool_if:NT {\g_@@_special_edition_bool} {
+ \tl_if_empty:NF \g_@@_special_edition_editorial_heading_tl {%
+ \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}
+%
+% \begin{macrocode}
+%</class|class-article>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<*class>
+% \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}
+%
+% \begin{macrocode}
+%</class>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<*class|class-article>
+% \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}
+%
+% \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}
+\AddToHook{begindocument}{%
+ \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}
+\AddToHook{begindocument}{%
+ \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} {
+ \AddToHook{begindocument/end}{\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%
+ []%
+ [%
+ \c_@@_footer_string_tl
+ ]%
+ []%
+ {}%
+ {%
+ \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]%
+ [%
+ \c_@@_footer_string_tl
+ ]%
+ [
+%<class-article>\c_@@_compiled_string_tl
+ ]%
+ {
+%<class-article>\c_@@_compiled_string_tl
+ }%
+ {%
+ \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]%
+ [%
+ \c_@@_footer_string_tl
+ ]%
+ []%
+ {}%
+ {%
+ \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]%
+ [%
+ \c_@@_footer_string_tl
+ ]%
+ []%
+ {}%
+ {%
+ \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]%
+ [%
+ \c_@@_footer_string_tl
+ ]%
+ []%
+ {}%
+ {%
+ \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%
+ []%
+ [%
+ \c_@@_footer_string_tl
+ ]%
+ []%
+ {}%
+ {%
+ \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}
+\AddToHook{shipout/background}{
+%<class> \bool_if:nF { \g_@@_frontcover_bool || \g_@@_backcover_bool }{
+ \bool_if:NF {\g_@@_advertisement_bool} {
+ \tikz[remember~picture,overlay] { \g_@@_background_footer_tl }%
+ }%
+%<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]%
+ [%
+ \c_@@_footer_string_tl
+ ]%
+ [\c_@@_compiled_string_tl]%
+ {\c_@@_compiled_string_tl}%
+ {%
+ \c_@@_footer_string_tl%
+ }%
+ {\c_@@_footer_size_font_tl\thepage}%
+ }{
+ \setfoot%
+ [\c_@@_footer_size_font_tl\thepage]%
+ [%
+ \c_@@_footer_string_tl
+ ]%
+ []%
+ {}%
+ {%
+ \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 }
+ \DTLsavelastrowcount{\_@@_authors_number}
+ \tl_if_empty:NF \l_@@_article_acknowledgements_tl
+ {%
+ \footnotesize
+ \int_compare:nNnT {\_@@_authors_number}>{0}
+ {
+ \par%
+ \bigskip%
+ }
+ \begin{adjustbox}{valign=t,minipage=\linewidth}
+ \color{@@_acknowledgements_color}%
+ \setlength{\parskip}{\c_@@_mainmatter_parskip_skip}
+ \l_@@_article_acknowledgements_tl
+ \end{adjustbox}
+ }
+ \bool_gset_true:N \g_@@_previous_article_with_bibliography_or_minibio_bool
+ \end{_@@_minibiographies_acknowledgements_tcbox}
+}
+% \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}
+% \end{macrocode}
+%
+% The optional argument declaration must be prefixed with an "!" (see
+% \url{https://github.com/T-F-S/tcolorbox/issues/43}).
+% \begin{macrocode}
+\NewTCBListing{gztcode}{ !O{} }{%
+ listing~style=@@_lst_style,
+ listing~only,
+ enlarge~top~by=\medskipamount,
+ 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 } {%
+ \tl_gclear:N \g_@@_people_affiliation_tl
+ \tl_gclear:N \g_@@_people_email_tl
+ \tl_gclear:N \g_@@_people_minibio_tl
+ \tl_gclear:N \g_@@_people_photo_tl
+ \tl_gclear:N \g_@@_people_webpage_tl
+ \tl_clear:N \l_@@_article_acknowledgements_tl
+ \startcustomization%
+ \bool_if:NF {\g_@@_refsection_bool} {
+ \begin{refsection}
+ }
+ \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 "\AddToHook{enddocument}" and "\preto\@enddocumenthook" should be used instead
+% (see \url{http://tex.stackexchange.com/q/240318/18401}). (Update (2021-02-14):
+% we now rely on the new ×\AddToHook{env/document/end}×.)
+% \begin{macrocode}
+\bool_if:NF {\g_@@_coverpage_bool} {
+ \bool_if:NF {\g_@@_inside_pages_bool} {
+ \AddToHook{enddocument/end}{
+ \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 } {
+ \AddToHook{enddocument}{%
+ \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}
+\ProcessKeysOptions { gztarticle }
+% \end{macrocode}
+%
+% \begin{macrocode}
+\AddToHook{enddocument}{%
+ \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{\text_uppercase:n{\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,
+ }
+}
+\AddToHook{begindocument/before}{%
+ \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 {
+ \text_titlecase:n {#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}
+%<*changelog>
+% \end{macrocode}
+# [Unreleased]
+
+# [1.0.1] - 2021-02-14
+
+## Added
+- Option to create moral reports (`gzt` class only).
+- Local (to a given article) table of contents
+
+## Changed
+- The class now relies on the new LaTeX core hooks.
+- Documentation revised.
+- Various improvements.
+
+## Fixed
+- Superflous uppercases removed (cont.).
+- `gztcode` environments partially gobble their content under certain
+ conditions.
+- Various other small bugs.
+
+# [1.0.0] - 2020-03-17
+
+## Added
+- CHANGELOG file (following https://keepachangelog.com/en/1.0.0/).
+- Semantic versionning (following https://semver.org/).
+
+## Changed
+- Compilation date displayed only if the issue number is not specified
+ (`gztarticle` class only).
+- Prevent column breaks within items of "Comité de rédaction" (at the price of
+ unbalanced columns).
+
+## Fixed
+- Track changes in `expl3`.
+- Superflous uppercases removed.
+- Index directive in `latexmk` config file modernized.
+
+# [0.98] - 2018-04-09
+
+## Changed
+- Support for `biblatex` 3.8 changes.
+- Track changes in `expl3`.
+- Special editions implemented.
+
+## Fixed
+- Several bug fixes.
+
+# [0.96] - 2017-04-07
+
+## Changed
+- Figures and tables:
+ - with recurrent label and number but without any caption,
+ - with caption but without any recurrent label nor numbered,
+ implemented.
+- Frames without any label, number nor caption implemented.
+- Track changes in `expl3`.
+
+# [0.9] - 2015-05-02
+
+- Initial CTAN release of the `gzt` bundle.
+% \begin{macrocode}
+%</changelog>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<*latexmkrc>
+% \end{macrocode}
+%
+% \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]\"" );
+}
+
+$makeindex = 'texindy -L french -C utf8';
+
+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: doctex
+%%% ispell-local-dictionary: "english"
+%%% TeX-command-default: "TeX"
+%%% TeX-master: t
+%%% End:
diff --git a/macros/latex/contrib/gzt/tex/latex/gzt/gzt.cfg b/macros/latex/contrib/gzt/tex/latex/gzt/gzt.cfg
new file mode 100644
index 0000000000..6b0acfd120
--- /dev/null
+++ b/macros/latex/contrib/gzt/tex/latex/gzt/gzt.cfg
@@ -0,0 +1,177 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% 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}%
diff --git a/macros/latex/contrib/gzt/tex/latex/gzt/gzt.cls b/macros/latex/contrib/gzt/tex/latex/gzt/gzt.cls
new file mode 100644
index 0000000000..7c43454ca0
--- /dev/null
+++ b/macros/latex/contrib/gzt/tex/latex/gzt/gzt.cls
@@ -0,0 +1,3999 @@
+%%
+%% This is file `gzt.cls',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% gzt.dtx (with options: `class')
+%% -----------------------------------------------------------------------------
+%% gzt --- SMF bundle of classes for the French journal "La Gazette des
+%% Math'ematiciens"
+%%
+%% E-mail: denis.bitouze@univ-littoral.fr
+%% Released under the LaTeX Project Public License v1.3c or later
+%% See http://www.latex-project.org/lppl.txt
+%% -----------------------------------------------------------------------------
+\def\gztfileversion{1.0.1}
+\def\gztfiledate{2021-02-14}
+\def\sectioncommandslist{}%
+\let\saved@ifdefinable\@ifdefinable%
+\let\saved@@ifdefinable\@@ifdefinable%
+\newcommand{\startcustomization}{%
+ % Redefine \@ifdefinable
+ \renewcommand{\@ifdefinable}[2]{%
+ \listadd\sectioncommandslist##1%
+ \saved@ifdefinable{##1}{##2}%
+ }%
+ \renewcommand{\@@ifdefinable}[2]{%
+ \listadd\sectioncommandslist##1%
+ \saved@@ifdefinable{##1}{##2}%
+ }%
+}%
+\newcommand{\cleancustomization}{%
+ \forlistloop{\undef}{\sectioncommandslist}%
+ \def\sectioncommandslist{}%
+ \let\@ifdefinable\saved@ifdefinable%
+ \let\@@ifdefinable\saved@@ifdefinable%
+}%
+\RequirePackage{silence}%
+\WarningFilter{kpfonts}{With 'easyscsl' option}
+\RequirePackage{xpatch}%
+\patchcmd%
+ {\use@@tikzlibrary}%
+ {%
+ \pgfutil@InputIfFileExists{tikzlibrary\pgf@temp.code.tex}{}{
+ \pgfutil@IfFileExists{pgflibrary\pgf@temp.code.tex}{%
+ \expandafter\usepgflibrary\expandafter{\pgf@temp}%
+ }{%
+ \tikzerror{I did not find the tikz library
+ '\pgf@temp'. I looked for files named
+ tikzlibrary\pgf@temp.code.tex and
+ pgflibrary\pgf@temp.code.tex, but neither
+ could be found in the current texmf trees.}
+ }}%
+ }%
+ {%
+ \@pushfilename
+ \pgfutil@InputIfFileExists{tikzlibrary\pgf@temp.code.tex}{}{
+ \pgfutil@IfFileExists{pgflibrary\pgf@temp.code.tex}{%
+ \expandafter\usepgflibrary\expandafter{\pgf@temp}%
+ }{%
+ \tikzerror{I did not find the tikz library
+ '\pgf@temp'. I looked for files named
+ tikzlibrary\pgf@temp.code.tex and
+ pgflibrary\pgf@temp.code.tex, but neither
+ could be found in the current texmf trees.}
+ }}%
+ \@popfilename
+ }%
+ {}{}%
+\patchcmd
+ {\tcb@input@library@in}
+ {%
+ \input\tcbpkgprefix#1\relax%
+ }
+ {%
+ \@pushfilename
+ \input\tcbpkgprefix#1\relax%
+ \@popfilename
+ }
+ {}{}
+\RequirePackage{l3keys2e}
+\RequirePackage{xparse}
+\ExplSyntaxOn
+\ProvidesExplClass
+ {gzt}
+ {\gztfiledate}
+ {\gztfileversion}
+ {
+ SMF~class~for~the~French~journal^^J
+ "La~Gazette~des~Math'ematiciens".
+ }
+\NeedsTeXFormat{LaTeX2e}
+\bool_new:N \g__gzt_moral_report_bool
+\bool_new:N \g__gzt_special_edition_bool
+\bool_new:N \g__gzt_for_authors_bool
+\bool_new:N \g__gzt_for_printer_bool
+\bool_new:N \g__gzt_cover_bool
+\bool_new:N \g__gzt_coverpage_bool
+\bool_new:N \g__gzt_inside_pages_bool
+\bool_new:N \g__gzt_no_inside_backcover_bool
+\tl_gset:Nn \g__gzt_moral_report_common_option_tl {%
+ \AddToHook{begindocument/before} {%
+ \bool_gset_true:N \g__gzt_moral_report_bool
+ \bool_gset_true:N \g__gzt_frontcover_without_minitoc_bool
+ \title[short={\bfseries\c__gzt_moralreport_rubric_string_tl}]{}
+ \tl_gset:Nn \g__gzt_rubric_title_tl {\c__gzt_moralreport_rubric_string_tl}
+ }
+}
+\dim_const:Nn \c__gzt_pagegrid_dim { 1mm}
+\tl_gset:Nn \g__gzt_frontcover_image_file_tl {\c__gzt_issue_frontcover_default_image_file_tl}
+\tl_gset:Nn \g__gzt_special_edition_color_tl {__gzt_default_cover_color}
+\clist_new:N \g__gzt_special_edition_logos_clist
+\keys_define:nn { gzt }
+{
+ pagegrid .dim_gset:N = \g__gzt_pagegrid_dim,
+ pagegrid .default:n = {\c__gzt_pagegrid_dim},
+ forauthors .code:n = {%
+ \bool_gset_true:N \g__gzt_for_authors_bool%
+ \bool_gset_true:N \g__gzt_inside_pages_bool%
+ },%
+ forprinter .bool_gset:N = \g__gzt_for_printer_bool,
+ frontcoverimagefile .tl_gset:N = \g__gzt_frontcover_image_file_tl,
+ frontcoverimagefile .default:n = {frontcover},
+ output .choice:,
+ output / frontcover .code:n = {%
+ \bool_gset_true:N \g__gzt_for_printer_bool%
+ \bool_gset_true:N \g__gzt_cover_bool%
+ },%
+ output / coverpage .code:n = {%
+ \bool_gset_true:N \g__gzt_coverpage_bool%
+ },%
+ output / insidepages .code:n = {%
+ \bool_gset_true:N \g__gzt_for_printer_bool%
+ \bool_gset_true:N \g__gzt_inside_pages_bool%
+ },%
+ output / backcover .code:n = {%
+ \bool_gset_true:N \g__gzt_for_printer_bool%
+ },%
+ output / web .code:n = {%
+ },%
+ specialedition .code:n = {
+ \bool_gset_true:N \g__gzt_special_edition_bool
+ \bool_gset_true:N \g__gzt_frontcover_without_minitoc_bool
+ \keys_set:nn { gzt / specialedition } {#1}
+ },
+ specialedition / color .code:n = {%
+ \tl_gset:Nn \g__gzt_special_edition_color_tl {#1}
+ },%
+ specialedition / minitoc .code:n = {%
+ \bool_gset_false:N \g__gzt_frontcover_without_minitoc_bool
+ },%
+ specialedition / logos .code:n = {%
+ \clist_gset:Nn \g__gzt_special_edition_logos_clist {#1}
+ },%
+ specialedition / backcover~image .code:n = {%
+ \tl_gset:Nn \g__gzt_special_edition_backcover_image_tl {#1}
+ },%
+ specialedition / title .code:n = {%
+ \tl_gset:Nn \g__gzt_special_edition_title_tl {#1}
+ },%
+ specialedition / short~title .code:n = {%
+ \tl_gset:Nn \g__gzt_special_edition_short_title_tl {#1}
+ },%
+ specialedition / editorial~heading .code:n = {%
+ \tl_gset:Nn \g__gzt_special_edition_editorial_heading_tl {#1}
+ },%
+ specialedition / editorial~author .code:n = {%
+ \__gzt_people:nnnnnnnn {#1}{}{}{}{}{}{editorinchief}{}
+ },%
+ moralreport .code:n = {
+ \g__gzt_moral_report_common_option_tl
+ \AddToHook{begindocument/before} {%
+ \tl_gset:Nn \g__gzt_pdftitle_string_tl {\c__gzt_moralreport_rubric_string_tl}
+ }
+ },
+}%
+\ProcessKeysOptions { gzt }
+\PassOptionsToClass{openany,english,french}{book}
+\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}
+\RequirePackage[group=false]{standalone}%
+\RequirePackage{datatool}%
+\sys_if_engine_pdftex:TF
+ {
+ \RequirePackage[T1]{fontenc}
+ \RequirePackage[utf8]{inputenc}
+ }{
+ \RequirePackage{fontspec}
+ }
+\RequirePackage[sfmath,easyscsl,noDcommand]{kpfonts}
+\RequirePackage[pagestyles]{titlesec}%
+\RequirePackage{multicol}%
+\RequirePackage{graphicx}%
+\RequirePackage{import}%
+\RequirePackage{longtable}%
+\bool_if:nT { \g__gzt_for_authors_bool } {
+ \RequirePackage{draftwatermark}[2006/06/30]%
+}
+\RequirePackage{adjustbox}%
+\RequirePackage{mwe}
+\RequirePackage{zref-totpages}
+\RequirePackage{lastpage}
+\RequirePackage{zref-xr}%
+\RequirePackage{ragged2e}%
+\RequirePackage{xspace}%
+\RequirePackage{textcase}%
+\RequirePackage{epigraph}%
+\RequirePackage[autostyle]{csquotes}%
+\RequirePackage[backend=biber,datamodel=gzt,defernumbers=true,autolang=other]{biblatex}%
+\@ifpackagelater{biblatex}{2016/01/01}{%
+ \ExecuteBibliographyOptions{giveninits}
+}{
+ \ExecuteBibliographyOptions{firstinits}
+}
+\RequirePackage{array}
+\RequirePackage{booktabs}
+\RequirePackage{tabularx}
+\RequirePackage{nccparskip}
+\RequirePackage{multirow}
+\RequirePackage{varioref}
+\RequirePackage{mathtools}
+\RequirePackage{rsfso}
+\RequirePackage{esvect}
+\RequirePackage{translator}%
+\RequirePackage{geometry}
+\RequirePackage{babel}%
+\RequirePackage{eurosym}%
+\RequirePackage{iflang}[2007/11/11]%
+\RequirePackage{tableof}%
+\RequirePackage{etoc}%
+\RequirePackage[babel=true]{microtype}%
+\RequirePackage[nodayofweek]{datetime}%
+\RequirePackage[inline]{enumitem}%
+\RequirePackage{afterpage}
+\RequirePackage{xcolor}%
+\cs_set_eq:NN \__gzt_orig_preamblecmds \@preamblecmds
+\RequirePackage{tikz}
+\RequirePackage{pgfplots}
+\RequirePackage{tcolorbox}
+\RequirePackage{tikzpagenodes}
+\RequirePackage[foreground]{pagegrid}%
+\RequirePackage{amsthm}
+\RequirePackage{thmtools}
+\cs_set_eq:NN \@preamblecmds \__gzt_orig_preamblecmds
+\RequirePackage{placeins}%
+\RequirePackage[hidelinks,hypertexnames=false]{hyperref}%
+\RequirePackage[numbered]{bookmark}%
+\RequirePackage[nowarn]{glossaries}%
+\RequirePackage{cleveref}%
+\makeglossaries
+\setglossarystyle{indexhypergroup}
+\setacronymstyle{long-sc-short}
+\sys_if_engine_pdftex:T
+ {
+ \renewcommand\familydefault{\sfdefault}
+ \renewcommand{\ttdefault}{lmtt}
+ }
+\tl_remove_all:Nn \@preamblecmds { \do \DeclareMathOperator }
+\tl_remove_all:Nn \@preamblecmds { \do \newacronym }
+\tl_remove_all:Nn \@preamblecmds { \do \@declmathop }
+\tl_remove_all:Nn \@preamblecmds { \do \usetikzlibrary }
+\msg_new:nnnn{gzt}{issue-number-needed}{Option~`#1'~needed!}
+ {Please~specify~`#1=<number>',
+ ~otherwise~`<number>'~will~be~set~to
+ ~`\int_use:N\c__gzt_first_issue_number_int'.}
+\msg_new:nnnn{gzt}{unknown-choice}{Choice~`#3'~invalid!}
+ {Please~specify~#1=#2.}
+\msg_new:nnnn{gzt}{configuration-file-missing}{File~`\c__gzt_configuration_file_string_tl'~missing!}
+ {The~ whole~ issue~ may~ not~ be~ conform~ if~ `\c__gzt_configuration_file_string_tl'~ is~ missing.}
+\msg_new:nnnn{gzt}{editorial-file-missing}{File~`\c__gzt_editorial_file_string_tl'~missing!}
+ {The~ whole~ issue~ requires~ the~ `\c__gzt_editorial_file_string_tl'~ file.}
+\int_new:N \g__gzt_editors_in_chief_int
+\int_new:N \g__gzt_item_in_rubric_int
+\int_new:N \g__gzt_articles_int
+\int_new:N \g__gzt_question_int
+\int_const:Nn \c__gzt_first_issue_number_int { 143 }
+\int_const:Nn \c__gzt_first_issue_year_int { 2015 }
+\int_const:Nn \c__gzt_first_issue_month_int { 1 }
+\int_const:Nn \c__gzt_interval_in_months_int { 3 }
+\tl_const:Nn \c__gzt_journal_short_title_string_tl {Gazette}
+\tl_const:Nn \c__gzt_journal_title_string_tl {
+ \c__gzt_journal_short_title_string_tl{}~des~Math\'ematiciens%
+}
+\tl_const:Nn \c__gzt_class_name_tl {gzt}
+\tl_const:Nn \c__gzt_article_class_name_tl {gztarticle}
+\tl_const:Nn \c__gzt_editors_in_chief_string_tl
+{
+ \int_compare:nNnTF { \g__gzt_editors_in_chief_int } > { 1 }
+ { \c__gzt_editorsinchief_string_tl }
+ { \c__gzt_editorinchief_string_tl }
+}
+\tl_const:Nn \c__gzt_editorinchief_string_tl {R\'edacteur~en~chef }
+\tl_const:Nn \c__gzt_editorsinchief_string_tl {R\'edacteurs~en~chef }
+\tl_const:Nn \c__gzt_editors_string_tl {R\'edacteurs }
+\tl_const:Nn \c__gzt_editorial_board_string_tl {Comit\'e~de~r\'edaction}
+\tl_const:Nn \c__gzt_special_edition_editorial_board_string_tl {Num\'ero~sp\'ecial~de~la~Gazette~des~Math\'ematiciens~sous~la~direction~de~:}
+\tl_const:Nn \c__gzt_editorial_secretariat_string_tl {Secr\'etariat~de~r\'edaction}
+\tl_const:Nn \c__gzt_phone_string_tl {T\'el.}
+\tl_const:Nn \c__gzt_fax_string_tl {Fax}
+\tl_const:Nn \c__gzt_informations_string_tl {Renseignements}
+\tl_const:Nn \c__gzt_publishingdirector_string_tl {Directeur~de~la~publication}
+\tl_const:Nn \c__gzt_issn_string_tl {\textsc{issn}}
+\tl_const:Nn \c__gzt_isbn_string_tl {\textsc{isbn}}
+\tl_const:Nn \c__gzt_latexclass_string_tl {Classe~\LaTeX{}}
+\tl_const:Nn \c__gzt_printer_string_tl {Impression}
+\tl_const:Nn \c__gzt_configuration_file_string_tl {gzt.cfg}
+\tl_const:Nn \c__gzt_artistic_director_string_tl {Conception~graphique}
+\AddToHook{begindocument/before}{
+ \bool_if:NTF {\g__gzt_special_edition_bool} {
+ \tl_const:Nn \c__gzt_editorial_heading_string_tl {Avant-propos}
+ }{
+ \tl_const:Nn \c__gzt_editorial_heading_string_tl {\'Editorial}
+ }
+}
+\tl_const:Nn \c__gzt_editorinchief_signatory_string_tl {\c__gzt_editorinchief_string_tl~de~la~\c__gzt_journal_title_string_tl}
+\tl_const:Nn \c__gzt_toc_string_tl {Sommaire}
+\tl_const:Nn \c__gzt_president_message_string_tl {Mot~du~pr\'esident}
+\tl_const:Nn \c__gzt_president_signatory_string_tl {pr\'esident~de~la~\g__gzt_smf_short_string_tl}
+\tl_const:Nn \c__gzt_editorinchief_message_date_string_tl {Le~\displaydate{__gzt_editorinchief_message_date}}
+\tl_const:Nn \c__gzt_president_message_date_string_tl {Le~}
+\tl_const:Nn \c__gzt_special_edition_string_tl {\c_space_tl{}sp{\'e}cial}
+\tl_const:Nn \c__gzt_long_special_edition_string_tl {Numéro\c__gzt_special_edition_string_tl}%
+\tl_const:Nn \c__gzt_short_special_edition_string_tl {\No{}\c__gzt_special_edition_string_tl}%
+\AddToHook{begindocument/before}{
+ \tl_const:Nn \c__gzt_frontcover_header_string_tl {
+ \bool_if:NT {\g__gzt_special_edition_bool} {
+ \text_uppercase:n {\c__gzt_long_special_edition_string_tl}
+ \medskip
+ \par
+ \normalsize
+ }
+ \l__gzt_uppercased_date_format\displaydate{__gzt_date}
+ \bool_if:NF {\g__gzt_special_edition_bool} {
+ \c_space_tl
+ \textendash{}
+ \c_space_tl
+ \No
+ \int_use:N\g__gzt_issue_number_int%
+ }
+ }
+}
+\clist_const:Nn \c__gzt__graphics_extensions_clist {png,PNG,jpg,JPG,jpeg,JPEG,pdf,PDF}
+\tl_const:Nn \c__gzt_pdftitle_string_tl {
+ \bool_if:NTF {\g__gzt_moral_report_bool} {
+ \c__gzt_moralreport_rubric_string_tl
+ }{
+ \c__gzt_journal_title_string_tl
+ % \c_space_tl
+ % \textendash{}
+ % \c_space_tl
+ % \l__gzt_uppercased_date_format{\displaydate{__gzt_date}}
+ \c_space_tl
+ \textendash{}
+ \c_space_tl
+ N°
+ \bool_if:NTF {\g__gzt_special_edition_bool} {
+ \c__gzt_special_edition_string_tl
+ \c_space_tl
+ \g__gzt_special_edition_title_tl
+ }{
+ \int_use:N\g__gzt_issue_number_int
+ }
+ }
+}
+\tl_const:Nn \c__gzt_frontmatter_directory_string_tl {frontmatter}
+\tl_const:Nn \c__gzt_backmatter_directory_string_tl {backmatter}
+\tl_const:Nn \c__gzt_editorial_file_string_tl {\c__gzt_frontmatter_directory_string_tl/editorial}
+\tl_const:Nn \c__gzt_president_message_file_string_tl {\c__gzt_frontmatter_directory_string_tl/presidentmessage}
+\tl_const:Nn \c__gzt_issue_path_string_tl {\int_use:N \g__gzt_issue_number_int}
+\tl_const:Nn \c__gzt_images_directory_string_tl {images}
+\tl_const:Nn \c__gzt_issue_images_path_string_tl {% \c__gzt_issue_path_string_tl/
+ \c__gzt_images_directory_string_tl}
+\tl_const:Nn \c__gzt_issue_frontcover_default_image_file_tl {frontcover}
+\tl_const:Nn \c__gzt_issue_backcover_text_file_string_tl {backcover}
+\tl_const:Nn \c__gzt_backcover_page_file_string_tl {\c__gzt_backmatter_directory_string_tl/\c__gzt_issue_backcover_text_file_string_tl}
+\tl_const:Nn \c__gzt_special_edition_backcover_text_file_string_tl {abstract_backcover}
+\tl_const:Nn \c__gzt_special_edition_backcover_page_file_string_tl {\c__gzt_backmatter_directory_string_tl/\c__gzt_special_edition_backcover_text_file_string_tl}
+\tl_const:Nn \c__gzt_special_edition_backcover_picture_string_tl {picture_backcover}
+\tl_const:Nn \c__gzt_special_edition_backcover_page_picture_string_tl {\c__gzt_backmatter_directory_string_tl/\c__gzt_special_edition_backcover_picture_string_tl}
+\tl_const:Nn \c__gzt_acronyms_file_string_tl {\c__gzt_class_name_tl acronyms}
+\tl_const:Nn \c__gzt_authors_instructions_file_extension_tl {ain}
+\tl_const:Nn \c__gzt_authors_instructions_file_tl {\c_sys_jobname_str.\c__gzt_authors_instructions_file_extension_tl}
+\tl_const:Nn \c__gzt_about_frontcover_string_tl {\`A~propos~de~la~couverture.}
+\tl_const:Nn \c__gzt_credit_frontcover_string_tl {cr\'edit}
+\tl_const:Nn \c__gzt_authors_instructions_string_tl {Instructions~aux~auteurs}
+\tl_const:Nn \c__gzt_preliminary_version_string_tl {%
+ Ce~document~est~une~{\'e}preuve~vous~permettant~de~contr{\^o}ler~l'int{\'e}grit{\'e}~du~
+ texte~d'origine~(et~de~la~bibliographie~s'il~y~en~a~une)~de~votre~article~
+ {\`a}~para{\^\i}tre~dans~le~prochain~num{\'e}ro~de~la~\gzt*{}.~La~mise~en~page~
+ actuelle~n'est~pas~d{\'e}finitive\,:~votre~article~pourra~en~particulier~ne~pas~
+ d{\'e}buter~en~haut~d'une~page.%
+}
+\tl_const:Nn \c__gzt_tellme_extra_title_string_tl {...\c_space_tl}
+\tl_const:Nn \c__gzt_minitoc_rubric_title_separator_string_tl {\c_space_tl\textendash}
+\tl_const:Nn \c__gzt_mathematics_pictogram_file_name_tl {picto-mathematics}
+\tl_const:Nn \c__gzt_dossier_pictogram_file_name_tl {picto-dossier}
+\tl_const:Nn \c__gzt_community_pictogram_file_name_tl {picto-hands}
+\tl_const:Nn \c__gzt_interview_pictogram_file_name_tl {picto-interview}
+\tl_const:Nn \c__gzt_teaching_pictogram_file_name_tl {picto-teaching}
+\tl_const:Nn \c__gzt_parity_pictogram_file_name_tl {picto-parity}
+\tl_const:Nn \c__gzt_tellme_pictogram_file_name_tl {picto-tellme}
+\tl_const:Nn \c__gzt_information_pictogram_file_name_tl {picto-information}
+\tl_const:Nn \c__gzt_rearviewmirror_pictogram_file_name_tl {picto-rearviewmirror}
+\tl_const:Nn \c__gzt_tribute_pictogram_file_name_tl {picto-tribute}
+\tl_const:Nn \c__gzt_books_pictogram_file_name_tl {picto-books}
+\tl_const:Nn \c__gzt_forum_pictogram_file_name_tl {picto-forum}
+\tl_const:Nn \c__gzt_mathematics_rubric_string_tl {Math\'ematiques}
+\tl_const:Nn \c__gzt_dossier_rubric_string_tl {Dossier}
+\tl_const:Nn \c__gzt_community_rubric_string_tl {Vie~de~la~communaut\'e}
+\tl_const:Nn \c__gzt_interview_rubric_string_tl {Entretien}
+\tl_const:Nn \c__gzt_teaching_rubric_string_tl {Diffusion~des~savoirs}
+\tl_const:Nn \c__gzt_parity_rubric_string_tl {Parit\'e}
+\tl_const:Nn \c__gzt_tellme_rubric_string_tl {Raconte-moi}
+\tl_const:Nn \c__gzt_information_rubric_string_tl {Information}
+\tl_const:Nn \c__gzt_rearviewmirror_rubric_string_tl {R\'etroviseur}
+\tl_const:Nn \c__gzt_tribute_rubric_string_tl {Carnet}
+\tl_const:Nn \c__gzt_books_rubric_string_tl {Livres}
+\tl_const:Nn \c__gzt_latex_rubric_string_tl {Astuces~\LaTeX{}}
+\tl_const:Nn \c__gzt_forum_rubric_string_tl {Tribune~libre}
+\tl_const:Nn \c__gzt_published_with_help_of_string_tl {Publi\'e~avec~le~concours~de~:}
+\tl_const:Nn \c__gzt_advertisement_directory_string_tl {advertisement/}
+\tl_const:Nn \c__gzt_advertisement_string_tl {Publicit\'e}
+\tl_const:Nn \c__gzt_moralreport_rubric_string_tl {Rapport~moral}
+\tl_const:Nn \c__gzt_smf_short_string_tl {\textsc{smf}}
+\tl_const:Nn \c__gzt_smf_short_pdf_string_tl {SMF}
+\tl_const:Nn \c__gzt_smf_string_tl {Soci\'et\'e~Math\'ematique~de~France}
+\tl_const:Nn \c__gzt_cad_short_string_tl {c.-\`a-d.}
+\tl_const:Nn \c__gzt_cad_string_tl {c'est-\`a-dire}
+\tl_const:Nn \c__gzt_Cad_short_string_tl {C.-\`a-d.}
+\tl_const:Nn \c__gzt_Cad_string_tl {C'est-\`a-dire}
+\tl_const:Nn \c__gzt_footer_string_tl {
+ \c__gzt_footer_size_font_tl
+ \textcolor{__gzt_smf_number_color}{\text_uppercase:n {\c__gzt_smf_short_string_tl}}
+ \c_space_tl
+ \textcolor{__gzt_date_color}{
+ \textendash{}\c_space_tl
+ \bool_if:NTF {\g__gzt_moral_report_bool} {
+ \text_uppercase:n { \c__gzt_moralreport_rubric_string_tl }
+ }{
+ \text_uppercase:n {\c__gzt_journal_short_title_string_tl}
+ \bool_if:nF { \g__gzt_inside_frontcover_bool || \g__gzt_backmatter_bool || {\int_compare_p:nNn {\g__gzt_issue_number_int}={0}} }
+ {
+ \c_space_tl\textendash{}\c_space_tl
+ \l__gzt_uppercased_date_format\displaydate{__gzt_date}
+ \bool_if:NF {\g__gzt_special_edition_bool} {
+ \c_space_tl
+ \textendash{}\c_space_tl
+ \textcolor{__gzt_smf_number_color}{\No\int_use:N\g__gzt_issue_number_int}
+ }
+ }
+ }
+ }
+}
+ \file_if_exist:nTF { logo_SMF.pdf }{%
+ \tl_const:Nn \c__gzt_smf_logo_file_string_tl {logo_SMF}
+ }{
+ \tl_const:Nn \c__gzt_smf_logo_file_string_tl {example-image}
+ }
+\tl_const:Nn \c__gzt_issue_bib_file_suffix_string_tl {__gzt}
+\tl_const:Nn \c__gzt_issue_bib_file_string_tl {\c_sys_jobname_str\c__gzt_issue_bib_file_suffix_string_tl.bib}
+\tl_const:Nn \c__gzt_issue_bib_path_string_tl {\c__gzt_issue_bib_file_string_tl}
+\bool_if:NTF {\g__gzt_special_edition_bool} {
+ \tl_const:Nn \c__gzt_issue_bib_key_tl {special-edition}
+}{
+ \tl_const:Nn \c__gzt_issue_bib_key_tl {\int_use:N \g__gzt_issue_number_int}
+}
+\tl_const:Nn \c__gzt_interview_title_string_tl {En~apart\'e~avec~}
+\tl_const:Nn \c__gzt_aside_string_tl {--}
+\tl_const:Nn \c__gzt_draftwatermark_string_tl {draft}
+\tl_const:Nn \c__gzt_compiled_string_tl {
+ \int_compare:nNnT {\g__gzt_issue_number_int}={0} {
+ \c__gzt_footer_size_font_tl
+ \IfLanguageName{french}{
+ Compil\'e~le~
+ }{
+ Compiled~on~
+ }
+ \today
+ }
+}
+\bool_new:N \g__gzt_frontcover_bool
+\bool_new:N \g__gzt_inside_frontcover_bool
+\bool_new:N \g__gzt_inside_backcover_bool
+\bool_new:N \g__gzt_frontmatter_bool
+\bool_new:N \g__gzt_rubric_bool
+\bool_new:N \g__gzt_interview_rubric_bool
+\bool_new:N \g__gzt_tellme_rubric_bool
+\bool_new:N \g__gzt_rearviewmirror_rubric_bool
+\bool_new:N \g__gzt_books_rubric_bool
+\bool_new:N \g__gzt_mainmatter_bool
+\bool_new:N \g__gzt_backmatter_bool
+\bool_new:N \g__gzt_backcover_bool
+\bool_new:N \g__gzt_frontcover_without_minitoc_bool
+\bool_new:N \g__gzt_previous_article_with_bibliography_or_minibio_bool
+\bool_new:N \g__gzt_advertisement_bool
+\bool_new:N \g__gzt_multicols_bool
+\bool_new:N \g__gzt_refsection_bool
+\dim_const:Nn \c__gzt_rubrics_abstract_width_dim { 85mm}
+\dim_const:Nn \c__gzt_rubrics_head_text_abstract_width_dim { 50mm}
+\dim_const:Nn \c__gzt_rubrics_head_text_no_abstract_width_dim
+{ \c__gzt_rubrics_abstract_width_dim + \c__gzt_rubrics_head_text_abstract_width_dim}
+\dim_new:N \l__gzt_rubrics_head_text_width_dim
+\dim_const:Nn \c__gzt_layoutheight_dim { 270mm}
+\dim_const:Nn \c__gzt_layoutwidth_dim { 210mm}
+\dim_const:Nn \c__gzt_printer_layoutoffset_dim { 5mm}
+\bool_if:NTF {\g__gzt_for_printer_bool} {
+ \dim_const:Nn \c__gzt_potential_layoutoffset_dim { \c__gzt_printer_layoutoffset_dim}
+}{
+ \dim_const:Nn \c__gzt_potential_layoutoffset_dim {\c_zero_dim}
+}
+\int_const:Nn \c__gzt_thresold_a_int {68}
+\int_const:Nn \c__gzt_thresold_b_int {80}
+\int_const:Nn \c__gzt_thresold_c_int {88}
+\int_const:Nn \c__gzt_thresold_d_int {96}
+\int_const:Nn \c__gzt_thresold_e_int {104}
+\int_const:Nn \c__gzt_thresold_f_int {120}
+\dim_const:Nn \c__gzt_bindingoffset_a_dim {3mm}
+\dim_const:Nn \c__gzt_bindingoffset_b_dim {3.5mm}
+\dim_const:Nn \c__gzt_bindingoffset_c_dim {3.9mm}
+\dim_const:Nn \c__gzt_bindingoffset_d_dim {4.1mm}
+\dim_const:Nn \c__gzt_bindingoffset_e_dim {4.5mm}
+\dim_const:Nn \c__gzt_bindingoffset_f_dim {5mm}
+\int_new:N \g__gzt_total_pages_number_int%
+\int_new:N \g__gzt_total_inside_pages_number_int%
+\zexternaldocument[self]{\jobname}%
+\int_gset:Nn \g__gzt_total_pages_number_int { \zref@extractdefault{selfLastPage}{abspage}{0} }
+\int_gset:Nn \g__gzt_total_inside_pages_number_int { \g__gzt_total_pages_number_int - 4 }
+\int_compare:nNnTF {\g__gzt_total_inside_pages_number_int}<{\c__gzt_thresold_a_int}
+{
+ \dim_const:Nn \c__gzt_printer_bindingoffset_dim { \c_zero_dim }
+}{
+ \int_compare:nNnTF {\g__gzt_total_inside_pages_number_int}<{\c__gzt_thresold_b_int}
+ {
+ \dim_const:Nn \c__gzt_printer_bindingoffset_dim { \c__gzt_bindingoffset_a_dim }
+ }{
+ \int_compare:nNnTF {\g__gzt_total_inside_pages_number_int}<{\c__gzt_thresold_c_int}
+ {
+ \dim_const:Nn \c__gzt_printer_bindingoffset_dim { \c__gzt_bindingoffset_b_dim }
+ }{
+ \int_compare:nNnTF {\g__gzt_total_inside_pages_number_int}<{\c__gzt_thresold_d_int}
+ {
+ \dim_const:Nn \c__gzt_printer_bindingoffset_dim { \c__gzt_bindingoffset_c_dim }
+ }{
+ \int_compare:nNnTF {\g__gzt_total_inside_pages_number_int}<{\c__gzt_thresold_e_int}
+ {
+ \dim_const:Nn \c__gzt_printer_bindingoffset_dim { \c__gzt_bindingoffset_d_dim }
+ }{
+ \int_compare:nNnTF {\g__gzt_total_inside_pages_number_int}<{\c__gzt_thresold_f_int}
+ {
+ \dim_const:Nn \c__gzt_printer_bindingoffset_dim { \c__gzt_bindingoffset_e_dim }
+ }{
+ \dim_const:Nn \c__gzt_printer_bindingoffset_dim { \c__gzt_bindingoffset_f_dim }
+ }
+ }
+ }
+ }
+ }
+}
+\bool_if:NTF {\g__gzt_cover_bool} {
+ \dim_const:Nn \c__gzt_potential_bindingoffset_dim { \c__gzt_printer_bindingoffset_dim }
+}{
+ \dim_const:Nn \c__gzt_potential_bindingoffset_dim {\c_zero_dim}
+}
+\dim_const:Nn \c__gzt_paperheight_dim { \c__gzt_layoutheight_dim+2\c__gzt_potential_layoutoffset_dim}
+\bool_if:NTF {\g__gzt_cover_bool} {
+ \dim_const:Nn \c__gzt_paperwidth_dim {
+ \c__gzt_layoutwidth_dim
+ +
+ \c__gzt_potential_layoutoffset_dim
+ +\c__gzt_potential_bindingoffset_dim
+ }
+}{
+ \dim_const:Nn \c__gzt_paperwidth_dim {
+ \c__gzt_layoutwidth_dim
+ +
+ 2
+ \c__gzt_potential_layoutoffset_dim
+ +\c__gzt_potential_bindingoffset_dim
+ }
+}
+\dim_const:Nn \c__gzt_frontcover_image_width_dim {
+ \c__gzt_layoutwidth_dim
+ +
+ \c__gzt_printer_layoutoffset_dim
+}
+\dim_const:Nn \c__gzt_topmargin_dim { 31mm}
+\dim_const:Nn \c__gzt_topmargin_frontcover_dim {
+ \c__gzt_topmargin_dim
+ + 30mm
+}
+\dim_const:Nn \c__gzt_topmargin_inside_cover_dim {
+ \c__gzt_topmargin_dim
+ +10mm
+}
+\dim_const:Nn \c__gzt_topmargin_front_matter_dim {
+ \c__gzt_topmargin_inside_cover_dim
+}
+\dim_const:Nn \c__gzt_headsep_dim { 24mm}
+\dim_const:Nn \c__gzt_headsep_frontcover_dim {
+ \c__gzt_headsep_dim
+ +31mm
+ % -\c__gzt_potential_layoutoffset_dim
+}
+\dim_const:Nn \c__gzt_headsep_inside_frontcover_dim {
+ \c__gzt_headsep_dim
+ +7mm
+}
+\dim_const:Nn \c__gzt_headsep_front_matter_dim {
+ \c__gzt_headsep_inside_frontcover_dim
+}
+\dim_const:Nn \c__gzt_headheight_dim { \c_zero_dim }
+\dim_const:Nn \c__gzt_botmargin_dim { 30mm}
+\dim_const:Nn \c__gzt_footskip_dim { 26mm}
+\dim_const:Nn \c__gzt_extra_margin_dim { 5mm }
+\dim_const:Nn \c__gzt_innermargin_dim { 15mm - \c__gzt_potential_bindingoffset_dim + \c__gzt_extra_margin_dim}
+\dim_const:Nn \c__gzt_outermargin_dim { 30mm - \c__gzt_extra_margin_dim }
+\dim_const:Nn \c__gzt_inside_cover_box_width_dim { 165mm }%
+\dim_const:Nn \c__gzt_innermargin_inside_cover_dim {
+ (\c__gzt_layoutwidth_dim - \c__gzt_inside_cover_box_width_dim)/2
+ - \c__gzt_potential_bindingoffset_dim
+ % + \c__gzt_adjustmargin_dim
+}
+\dim_const:Nn \c__gzt_outermargin_inside_cover_dim {
+ (\c__gzt_layoutwidth_dim - \c__gzt_inside_cover_box_width_dim)/2
+ % - \c__gzt_adjustmargin_dim
+}
+\dim_const:Nn \c__gzt_innermargin_backcover_dim { 10mm }
+\dim_const:Nn \c__gzt_outermargin_backcover_dim { \c__gzt_innermargin_backcover_dim }
+\dim_const:Nn \c__gzt_topmargin_backcover_dim { \c__gzt_innermargin_backcover_dim }
+\dim_const:Nn \c__gzt_bottommargin_backcover_dim { \c__gzt_innermargin_backcover_dim }
+\dim_const:Nn \c__gzt_frontcover_image_height_dim { 160mm}
+\dim_const:Nn \c__gzt_radius_arc_dim { 85mm }%
+\dim_const:Nn \c__gzt_frontmatter_headtext_xshift_dim { 19mm }%
+\dim_const:Nn \c__gzt_frontmatter_headtext_o_xshift_dim {
+ -\c__gzt_frontmatter_headtext_xshift_dim -\c__gzt_potential_layoutoffset_dim%
+}%
+\dim_const:Nn \c__gzt_frontmatter_headtext_e_xshift_dim {
+ \c__gzt_frontmatter_headtext_xshift_dim +\c__gzt_potential_layoutoffset_dim%
+}%
+\dim_const:Nn \c__gzt_frontmatter_headtext_yshift_dim { -6.5mm-\c__gzt_potential_layoutoffset_dim }%
+\dim_const:Nn \c__gzt_header_line_width_dim { 0.25mm}
+\dim_const:Nn \c__gzt_header_line_yshift_dim { -1mm-\c__gzt_header_line_width_dim}%
+\dim_const:Nn \c__gzt_footer_background_height_dim { 10mm + \c__gzt_potential_layoutoffset_dim }
+\dim_const:Nn \c__gzt_front_matter_extra_innermargin_dim { 28mm }
+\dim_const:Nn \c__gzt_front_matter_extra_outermargin_dim { 7mm }
+\dim_const:Nn \c__gzt_inside_cover_offset_dim { \c_zero_dim }%
+\dim_const:Nn \c__gzt_pictogram_width_dim { 23mm }%
+\dim_const:Nn \c__gzt_header_xshift_dim { \c__gzt_pictogram_width_dim-6mm }%
+\dim_const:Nn \c__gzt_header_yshift_dim { 5mm }%
+\dim_const:Nn \c__gzt_xshift_arccircle_A_dim { \c__gzt_rubrics_abstract_width_dim+\c__gzt_innermargin_dim+10mm+\c__gzt_potential_layoutoffset_dim }%
+\dim_const:Nn \c__gzt_yshift_arccircle_A_dim { -22mm-\c__gzt_potential_layoutoffset_dim }%
+\dim_const:Nn \c__gzt_xshift_arccircle_B_dim {%
+ (\c__gzt_rubrics_abstract_width_dim+\c__gzt_innermargin_dim)/2%
+ % \c__gzt_innermargin_dim+(\c__gzt_rubrics_abstract_width_dim/2)%
+ % \c__gzt_xshift_arccircle_A_dim/2
+}%
+\dim_const:Nn \c__gzt_yshift_arccircle_B_dim { -\c__gzt_potential_layoutoffset_dim }%
+\dim_const:Nn \c__gzt_xshift_arccircle_C_dim { \c__gzt_potential_layoutoffset_dim-5mm }%
+\dim_const:Nn \c__gzt_yshift_arccircle_C_dim { -19.75mm-\c__gzt_potential_layoutoffset_dim }%
+\dim_const:Nn \c__gzt_book_review_frontcover_extend_dim { 12mm }%
+\dim_const:Nn \c__gzt_tcb_left_dim { 4mm }%
+\dim_const:Nn \c__gzt_tcb_boxsep_dim { 1mm }%
+\dim_const:Nn \c__gzt_tikz_dot_diameter_dim { 0.33mm }%
+\dim_const:Nn \c__gzt_tikz_dot_spacing_dim { 1.05mm }%
+\dim_const:Nn \c__gzt_rubric_extra_xoffset_dim { -\c__gzt_innermargin_dim/2 }%
+\dim_const:Nn \c__gzt_rubric_xoffset_dim { 14.5mm }%
+\dim_const:Nn \c__gzt_boxed_issue_number_width_dim { 30mm}
+\dim_const:Nn \c__gzt_boxed_issue_number_height_dim { 8mm}
+\dim_new:N \l__gzt_thumbnail_width_dim
+\dim_set:Nn \l__gzt_thumbnail_width_dim {30mm}
+\dim_new:N \g__gzt_abstract_box_width_dim
+\dim_new:N \c__gzt_original_parindent_dim
+\dim_gset_eq:NN \c__gzt_original_parindent_dim \parindent
+\dim_new:N \l__gzt_between_rubric_head_text_and_abstract_dim
+\dim_new:N \g__gzt_minitoc_circle_diameter_dim
+\dim_new:N \g__gzt_minitoc_textwidth_dim
+\dim_new:N \g__gzt_minitoc_xshift_dim
+\dim_new:N \g__gzt_minitoc_yshift_dim
+\dim_gset:Nn \g__gzt_minitoc_circle_diameter_dim {142mm}
+\dim_gset:Nn \g__gzt_minitoc_textwidth_dim {65mm}
+\dim_gset:Nn \g__gzt_minitoc_xshift_dim {-22mm}
+\dim_gset:Nn \g__gzt_minitoc_yshift_dim {30mm}
+\dim_const:Nn \c__gzt_minitoc_from_circle_xshift_dim {-15mm}
+\dim_const:Nn \c__gzt_minitoc_from_circle_yshift_dim {-\c__gzt_minitoc_from_circle_xshift_dim}
+\dim_const:Nn \c__gzt_footer_height_font_dim {3mm}
+\dim_const:Nn \c__gzt_minitoc_list_labelsep_dim {1em}
+\dim_const:Nn \c__gzt_authors_photos_width_dim {16mm}
+\dim_const:Nn \c__gzt_authors_photos_box_width_dim {\c__gzt_authors_photos_width_dim
+ + 2mm}
+\dim_new:N \l__gzt_minibio_width_dim
+\geometry{%
+ papersize={\c__gzt_paperwidth_dim,\c__gzt_paperheight_dim}
+}
+\bool_if:NTF {\g__gzt_cover_bool} {
+ \tl_const:Nn \c__gzt_frontcover_geometry_tl {%
+ ,layoutsize={\c__gzt_layoutwidth_dim,\c__gzt_layoutheight_dim}
+ ,layoutvoffset=\c__gzt_potential_layoutoffset_dim
+ ,bindingoffset=\c__gzt_potential_bindingoffset_dim
+ ,top=\c__gzt_topmargin_frontcover_dim
+ ,headsep=\c__gzt_headsep_frontcover_dim
+ ,headheight=\c__gzt_headheight_dim
+ % ,bottom=\c_zero_dim
+ ,bottom=11mm
+ ,footskip=\c_zero_dim
+ ,outer=\c_zero_dim
+ ,inner=\c__gzt_potential_layoutoffset_dim
+ ,nomarginpar%
+ }%
+}{
+ \tl_const:Nn \c__gzt_frontcover_geometry_tl {%
+ ,layoutsize={\c__gzt_layoutwidth_dim,\c__gzt_layoutheight_dim}
+ ,layoutoffset=\c__gzt_potential_layoutoffset_dim
+ ,bindingoffset=\c__gzt_potential_bindingoffset_dim
+ ,top=\c__gzt_topmargin_frontcover_dim
+ ,headsep=\c__gzt_headsep_frontcover_dim
+ ,headheight=\c__gzt_headheight_dim
+ % ,bottom=\c_zero_dim
+ ,bottom=11mm
+ ,footskip=\c_zero_dim
+ ,hmargin=\c__gzt_potential_layoutoffset_dim
+ ,nomarginpar%
+ }%
+}
+\bool_if:NTF {\g__gzt_cover_bool} {
+ \tl_const:Nn \c__gzt_inside_cover_geometry_tl {%
+ ,layoutsize={\c__gzt_layoutwidth_dim,\c__gzt_layoutheight_dim}
+ ,layoutvoffset=\c__gzt_potential_layoutoffset_dim
+ ,bindingoffset=\c__gzt_potential_bindingoffset_dim
+ ,top=\c__gzt_topmargin_inside_cover_dim
+ ,headheight=\c__gzt_headheight_dim
+ ,headsep=\c__gzt_headsep_inside_frontcover_dim
+ ,bottom=\c__gzt_botmargin_dim
+ ,footskip=\c__gzt_footskip_dim
+ ,inner=\c__gzt_innermargin_inside_cover_dim-\c__gzt_potential_layoutoffset_dim
+ ,outer=\c__gzt_outermargin_inside_cover_dim+\c__gzt_potential_layoutoffset_dim
+ ,nomarginpar%
+ }%
+}{
+ \tl_const:Nn \c__gzt_inside_cover_geometry_tl {%
+ ,layoutsize={\c__gzt_layoutwidth_dim,\c__gzt_layoutheight_dim}
+ ,layoutoffset=\c__gzt_potential_layoutoffset_dim
+ ,bindingoffset=\c__gzt_potential_bindingoffset_dim
+ ,top=\c__gzt_topmargin_inside_cover_dim
+ ,headheight=\c__gzt_headheight_dim
+ ,headsep=\c__gzt_headsep_inside_frontcover_dim
+ ,bottom=\c__gzt_botmargin_dim
+ ,footskip=\c__gzt_footskip_dim
+ ,inner=\c__gzt_innermargin_inside_cover_dim
+ ,outer=\c__gzt_outermargin_inside_cover_dim
+ ,nomarginpar%
+ }%
+}
+\tl_const:Nn \c__gzt_front_matter_geometry_tl {%
+ ,layoutsize={\c__gzt_layoutwidth_dim,\c__gzt_layoutheight_dim}
+ ,layoutoffset=\c__gzt_potential_layoutoffset_dim
+ % ,bindingoffset=\c__gzt_potential_bindingoffset_dim
+ ,top=\c__gzt_topmargin_front_matter_dim%
+ ,headheight=\c__gzt_headheight_dim
+ ,headsep=\c__gzt_headsep_front_matter_dim
+ ,bottom=\c__gzt_botmargin_dim
+ ,footskip=\c__gzt_footskip_dim%
+ ,inner=\c__gzt_innermargin_dim+\c__gzt_front_matter_extra_innermargin_dim%
+ ,outer=\c__gzt_outermargin_dim+\c__gzt_front_matter_extra_outermargin_dim%
+ ,nomarginpar%
+}%
+\tl_const:Nn \c__gzt_main_geometry_tl {%
+ ,layoutsize={\c__gzt_layoutwidth_dim,\c__gzt_layoutheight_dim}
+ ,layoutoffset=\c__gzt_potential_layoutoffset_dim
+ % ,bindingoffset=\c__gzt_potential_bindingoffset_dim
+ ,top=\c__gzt_topmargin_dim-15mm%
+ ,headheight=\c__gzt_headheight_dim
+ ,headsep=\c__gzt_headsep_dim-18mm
+ ,bottom=\c__gzt_botmargin_dim
+ ,footskip=\c__gzt_footskip_dim
+ ,inner=\c__gzt_innermargin_dim
+ ,outer=\c__gzt_outermargin_dim
+}%
+\tl_const:Nn \c__gzt_backcover_geometry_tl {%
+ ,layoutsize={\c__gzt_layoutwidth_dim,\c__gzt_layoutheight_dim}
+ ,layoutoffset=\c__gzt_potential_layoutoffset_dim
+ % ,bindingoffset=\c__gzt_potential_bindingoffset_dim
+ ,top=\c__gzt_topmargin_backcover_dim%
+ % ,top=\c__gzt_topmargin_dim-15mm%
+ % ,headheight=\c__gzt_headheight_dim
+ % ,headsep=\c__gzt_headsep_dim-18mm
+ ,bottom=\c__gzt_bottommargin_backcover_dim
+ % ,footskip=\c__gzt_footskip_dim
+ ,inner=\c__gzt_innermargin_backcover_dim
+ ,outer=\c__gzt_outermargin_backcover_dim
+ ,nomarginpar
+ ,hcentering
+ ,twoside=false
+}
+\skip_const:Nn \c__gzt_editorial_presidentmessage_parskip_skip { 12pt plus 2pt minus .8pt }%
+\skip_const:Nn \c__gzt_mainmatter_parskip_skip { 2pt plus .5pt minus .2pt }%
+\int_new:N \g__gzt_issue_number_int
+\int_new:N \g__gzt_issue_month_int
+\int_new:N \g__gzt_issue_year_int
+\tl_new:N \g__gzt_frontcover_image_options_tl
+\keys_define:nn { gzt/issuesetup }
+{
+ number .int_gset:N = \g__gzt_issue_number_int,
+ month .int_gset:N = \g__gzt_issue_month_int,
+ year .int_gset:N = \g__gzt_issue_year_int,
+ number .value_required:n = true,
+ month .value_required:n = true,
+ year .value_required:n = true,
+ number .initial:n = 0,
+ frontcoverimageoptions .tl_gset:N = \g__gzt_frontcover_image_options_tl
+}
+\tl_new:N \l__gzt_journal_publisher_tl
+\tl_new:N \l__gzt_journal_address_tl
+\tl_new:N \l__gzt_journal_phone_tl
+\tl_new:N \l__gzt_journal_fax_tl
+\tl_new:N \l__gzt_journal_email_tl
+\tl_new:N \l__gzt_journal_url_tl
+\tl_new:N \l__gzt_journal_issn_tl
+\tl_new:N \l__gzt_journal_isbn_tl
+\keys_define:nn { gzt/journalsetup }
+{
+ publisher .tl_set:N = \l__gzt_journal_publisher_tl,
+ address .tl_set:N = \l__gzt_journal_address_tl,
+ phone .tl_set:N = \l__gzt_journal_phone_tl,
+ fax .tl_set:N = \l__gzt_journal_fax_tl,
+ email .tl_set:N = \l__gzt_journal_email_tl,
+ url .tl_set:N = \l__gzt_journal_url_tl,
+ issn .tl_set:N = \l__gzt_journal_issn_tl,
+ isbn .tl_set:N = \l__gzt_journal_isbn_tl,
+ publisher .value_required: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,
+}
+\keys_define:nn { gzt/title }
+{
+ short .tl_gset:N = \g__gzt_short_title_tl,
+ minishort .tl_gset:N = \g__gzt_mini_short_title_tl,
+ notintoc .bool_gset:N = \g__gzt_title_not_in_toc_bool,
+ short .value_required:n = true,
+ minishort .value_required:n = true,
+}
+\keys_define:nn { gzt/subtitle }
+{
+ short .tl_gset:N = \g__gzt_short_subtitle_tl,
+ minishort .tl_gset:N = \g__gzt_mini_short_subtitle_tl,
+ notintoc .bool_gset:N = \g__gzt_subtitle_not_in_toc_bool,
+ short .value_required:n = true,
+ minishort .value_required:n = true,
+}
+\keys_define:nn { gzt/rubric }
+{
+ abstract .tl_gset:N = \g__gzt_rubric_abstract_tl,
+ title .tl_gset:N = \g__gzt_rubric_title_tl,
+ pictogram .tl_gset:N = \g__gzt_rubric_pictofile_tl,
+ abstract .value_required:n = true,
+ title .value_required:n = true,
+ pictogram .value_required:n = true,
+}
+\keys_define:nn { gzt/minitoc }
+{
+ list .bool_gset:N = \g__gzt_minitoc_list_bool,
+ help .bool_gset:N = \g__gzt_minitoc_help_bool,
+ diameter .dim_gset:N = \g__gzt_minitoc_circle_diameter_dim,
+ textwidth .dim_gset:N = \g__gzt_minitoc_textwidth_dim,
+ xshift .dim_gset:N = \g__gzt_minitoc_xshift_dim,
+ yshift .dim_gset:N = \g__gzt_minitoc_yshift_dim,
+ diameter .value_required:n = true,
+ textwidth .value_required:n = true,
+ xshift .value_required:n = true,
+ yshift .value_required:n = true,
+}
+\keys_define:nn { gzt/authors }
+{
+ affiliation .tl_gset:N = \g__gzt_people_affiliation_tl,
+ email .tl_gset:N = \g__gzt_people_email_tl,
+ minibio .tl_gset:N = \g__gzt_people_minibio_tl,
+ photo .tl_gset:N = \g__gzt_people_photo_tl,
+ webpage .tl_gset:N = \g__gzt_people_webpage_tl,
+ affiliation .value_required:n = true,
+ email .value_required:n = true,
+ minibio .value_required:n = true,
+ photo .value_required:n = true,
+ webpage .value_required:n = true,
+}
+\tl_new:N \g__gzt_interviewee_minibio_tl
+\tl_new:N \g__gzt_interviewee_photo_tl
+\tl_new:N \g__gzt_interviewee_first_last_name_tl
+\keys_define:nn { gzt/interviewees }
+{
+ minibio .tl_gset:N = \g__gzt_interviewee_minibio_tl,
+ photo .tl_gset:N = \g__gzt_interviewee_photo_tl,
+ minibio .value_required:n = true,
+ photo .value_required:n = true,
+}
+\tl_new:N \g__gzt_bookreview_frontcover_tl
+\tl_new:N \g__gzt_bookreview_bibkey_tl
+\keys_define:nn { gzt/bookreview }
+{
+ frontcover .tl_gset:N = \g__gzt_bookreview_frontcover_tl,
+ bibkey .tl_gset:N = \g__gzt_bookreview_bibkey_tl,
+ frontcover .value_required:n = true,
+ bibkey .value_required:n = true,
+}
+\tl_new:N \g__gzt_bookadvertisement_frontcover_tl
+\tl_new:N \g__gzt_bookadvertisement_bibkey_tl
+\keys_define:nn { gzt/bookadvertisement }
+{
+ frontcover .tl_gset:N = \g__gzt_bookadvertisement_frontcover_tl,
+ bibkey .tl_gset:N = \g__gzt_bookadvertisement_bibkey_tl,
+ frontcover .value_required:n = true,
+ bibkey .value_required:n = true,
+}
+\tl_new:N \l__gzt_newtheorem_style_tl
+\keys_define:nn { gzt/newtheorem }
+{
+ frenchtitle .tl_set:N = \l__gzt_newtheorem_frenchtitle_tl,
+ englishtitle .tl_set:N = \l__gzt_newtheorem_englishtitle_tl,
+ frenchtitle .value_required:n = true,
+ englishtitle .value_required:n = true,
+ %
+ style .choice:,
+ style / theorem .code:n = {\tl_set:Nn \l__gzt_newtheorem_style_tl {theorem}},
+ style / definition .code:n = {\tl_set:Nn \l__gzt_newtheorem_style_tl {definition}},
+ style / proof .code:n = {\tl_set:Nn \l__gzt_newtheorem_style_tl {proof}},
+ style / unknown .code:n =
+ \msg_error:nnxxx { gzt } { unknown-choice }
+ { style } % Name of choice key
+ { theorem~or~definition~or~proof } % Valid choices
+ { \exp_not:n {#1} } % Invalid choice given
+}
+\definecolorset{cmyk}{__gzt_}{_color}{
+ generic_dark,1,.60,.10,0; % kind of blue (!)
+ light_generic_dark,1,.35,0,0 % kind of blue (!), light
+}
+\colorlet{__gzt_generic_light_color}{black!50}
+\colorlet{__gzt_dark_generic_light_color}{black!60}
+\colorlet{__gzt_description_label_light_color}{__gzt_dark_generic_light_color}
+\colorlet{__gzt_minitoc_color}{__gzt_generic_light_color}
+\colorlet{__gzt_cover_itemize_label_color}{__gzt_light_generic_dark_color}
+\colorlet{__gzt_default_text_color}{black}
+\colorlet{__gzt_head_text_color}{black!65}
+\colorlet{__gzt_rubric_head_text_color}{__gzt_head_text_color}
+\colorlet{__gzt_bibliography_minibios_acknowledgements_bg_color}{black!10}
+\colorlet{__gzt_headrule_color}{__gzt_generic_light_color!65}
+\colorlet{__gzt_circlerule_color}{__gzt_generic_dark_color!65}
+\colorlet{__gzt_frontmatter_text_color}{black!75}
+\colorlet{__gzt_people_color}{__gzt_generic_dark_color}
+\colorlet{__gzt_arrayrule_color}{__gzt_generic_dark_color}
+\colorlet{__gzt_acknowledgements_color}{__gzt_generic_dark_color}
+\colorlet{__gzt_question_color}{__gzt_generic_dark_color}
+\colorlet{__gzt_boxed_issue_number_bg_color}{__gzt_generic_dark_color}
+\colorlet{__gzt_rule_in_toc_color}{__gzt_generic_dark_color}
+\colorlet{__gzt_rubric_in_toc_color}{__gzt_generic_dark_color}
+\colorlet{__gzt_article_in_toc_color}{__gzt_frontmatter_text_color}
+\colorlet{__gzt_rubric_title_color}{__gzt_generic_light_color}
+\colorlet{__gzt_article_title_color}{__gzt_generic_dark_color}
+\colorlet{__gzt_section_color}{__gzt_generic_dark_color}
+\colorlet{__gzt_subsection_color}{__gzt_generic_dark_color!90}
+\colorlet{__gzt_subsubsection_color}{__gzt_generic_dark_color!80}
+\colorlet{__gzt_rubric_abstract_color}{__gzt_generic_dark_color}
+\colorlet{__gzt_article_abstract_color}{__gzt_generic_light_color}
+\colorlet{__gzt_dotfill_color}{__gzt_generic_dark_color}
+\colorlet{__gzt_about_frontcover_title_color}{__gzt_generic_dark_color}
+\colorlet{__gzt_reflected_text_color}{__gzt_generic_dark_color}
+\colorlet{__gzt_inside_frontcover_frame_bg_color}{__gzt_generic_dark_color!8}
+\colorlet{__gzt_inside_frontcover_frame_title_color}{__gzt_generic_dark_color}
+\colorlet{__gzt_footer_bg_color}{black!10}
+\colorlet{__gzt_float_title_color}{__gzt_generic_dark_color}
+\colorlet{__gzt_float_title_bg_color}{__gzt_generic_dark_color!10}
+\colorlet{__gzt_float_frame_color}{__gzt_generic_dark_color!20}
+\colorlet{__gzt_chapter_color}{__gzt_generic_dark_color}
+\colorlet{__gzt_smf_number_color}{__gzt_generic_dark_color}
+\colorlet{__gzt_date_color}{__gzt_generic_light_color}
+\colorlet{__gzt_table_head_color}{__gzt_generic_dark_color!25}
+\colorlet{__gzt_book_review_frame_bg_color}{__gzt_generic_dark_color!8}
+\colorlet{__gzt_book_advertisement_bg_color}{white}
+\colorlet{__gzt_book_advertisement_frame_color}{__gzt_generic_dark_color}
+\colorlet{__gzt_default_cover_color}{white}
+\AddToHook{env/multicols/begin}{
+ \bool_gset_true:N \g__gzt_multicols_bool
+}
+\AddToHook{env/multicols/end}{
+ \bool_gset_false:N \g__gzt_multicols_bool
+}
+\AddToHook{env/refsection/begin}{
+ \bool_gset_true:N \g__gzt_refsection_bool
+}
+\AddToHook{env/refsection/end}{
+ \bool_gset_false:N \g__gzt_refsection_bool
+}
+\tl_const:Nn \c__gzt_footer_size_font_tl {
+ \fontsize{\c__gzt_footer_height_font_dim}{\c_zero_dim}\selectfont%
+}
+\tl_new:N \g__gzt_smf_short_string_tl
+\tl_new:N \g__gzt_smf_string_tl
+\tl_gset:Nn \g__gzt_smf_short_string_tl {
+ % \cs_if_exist:cTF {texorpdfstring}
+ % {
+ \texorpdfstring{\c__gzt_smf_short_string_tl}{\c__gzt_smf_short_pdf_string_tl}
+ % }{%
+ % \c__gzt_smf_short_pdf_string_tl
+ % }%
+}
+\tl_gset:Nn \g__gzt_smf_string_tl {
+ % \cs_if_exist:cTF {texorpdfstring}
+ % {
+ % \texorpdfstring{Soci\'et\'e~Math\'ematique~de~France}{\c__gzt_smf_string_tl}
+ \c__gzt_smf_string_tl
+ % }{%
+ % \acrlong*{smf}
+ % }%
+}
+\tl_new:N \l__gzt_gzt_short_string_tl
+\tl_new:N \l__gzt_gzt_string_tl
+\tl_set:Nn \l__gzt_gzt_short_string_tl {
+ \cs_if_exist:cTF {texorpdfstring}
+ {
+ \texorpdfstring{\emph{\c__gzt_journal_short_title_string_tl}}{\c__gzt_journal_short_title_string_tl}
+ }{%
+ \emph{\c__gzt_journal_short_title_string_tl}
+ }%
+}
+\tl_set:Nn \l__gzt_gzt_string_tl {
+ \cs_if_exist:cTF {texorpdfstring}
+ {
+ \texorpdfstring{\emph{\c__gzt_journal_title_string_tl}}{\c__gzt_journal_title_string_tl}
+ }{%
+ \emph{\c__gzt_journal_title_string_tl}
+ }%
+}
+\tl_new:N \g__gzt_pdftitle_string_tl
+\tl_new:N \g__gzt_pdfauthor_string_tl
+\tl_gset:Nn \g__gzt_pdftitle_string_tl {
+ \c__gzt_pdftitle_string_tl
+}
+\tl_gset:Nn \g__gzt_pdfauthor_string_tl {
+ \g__gzt_smf_string_tl
+}
+\AddToHook{begindocument/before}{%
+ \hypersetup{%
+ pdftitle=\g__gzt_pdftitle_string_tl,
+ pdfauthor=\g__gzt_pdfauthor_string_tl%
+ }
+}
+\cs_new_protected:Nn \__gzt_email:n
+ {
+ \href{mailto:#1}{\nolinkurl{#1}}%
+ }
+\cs_new_protected:Nn \__gzt_display_author:nnnnn
+{
+ \begin{tabular}[t]{p{\c__gzt_authors_photos_box_width_dim}p{0.75\linewidth}}
+ \tl_if_empty:nF {#5}
+ {%
+ \begin{adjustbox}{valign=t}
+ \includegraphics[width=\c__gzt_authors_photos_width_dim]{#5}
+ \end{adjustbox}%
+ }
+ &
+ \begin{description}[leftmargin=1em,style=nextline,nosep]
+ \item[\textcolor{__gzt_people_color}{\DeclareNameAlias{labelname}{default}\citeauthor{#1}}]
+ \tl_if_empty:nF {#2}
+ {%
+ #2%
+ \par%
+ \smallskip%
+ }
+ \tl_if_empty:nF {#3}
+ {%
+ \href{mailto:#3}{\nolinkurl{#3}}%
+ \par%
+ \smallskip%
+ }
+ \tl_if_empty:nF {#4}
+ {%
+ #4
+ }
+ \end{description}
+ \end{tabular}
+}
+\cs_generate_variant:Nn \__gzt_display_author:nnnnn { VVVVV }
+\DTLnewdb{people}
+\tl_new:N \l__gzt_crossref_tl
+\cs_new_protected:Nn \__gzt_people:nnnnnnnn
+{
+ \DTLnewrow{people}%
+ \DTLnewdbentry{people}{first-last-name}{#1}%
+ \DTLnewdbentry{people}{affiliation}{#2}%
+ \DTLnewdbentry{people}{email}{#3}%
+ \DTLnewdbentry{people}{minibio}{#4}%
+ \DTLnewdbentry{people}{photo}{#5}%
+ \DTLnewdbentry{people}{speciality}{#6}%
+ \DTLnewdbentry{people}{role}{#7}%
+ \DTLnewdbentry{people}{webpage}{#8}%
+ \int_if_exist:cF {g__gzt_#7_int}
+ {
+ \int_new:c {g__gzt_#7_int}
+ }
+ \int_incr:c {g__gzt_#7_int}
+ \tl_if_in:nnTF { #7 } { author } {
+ \tl_set:Nn \l__gzt_crossref_tl {\c__gzt_issue_bib_key_tl -art-\int_use:N \g__gzt_articles_int}
+ } {
+ \tl_set:Nn \l__gzt_crossref_tl {\c__gzt_issue_bib_key_tl}
+ }
+ \tl_set:Nn \l__gzt_people_first_last_name_tl {#1}
+ \iow_now:Nx \g__gzt_bib_out_iow {%
+ @article{
+ \c__gzt_issue_bib_key_tl -#7- \int_use:c {g__gzt_#7_int},
+ \iow_newline:
+ author={\exp_not:V\l__gzt_people_first_last_name_tl},
+ \iow_newline:
+ options={skipbib},
+ \iow_newline:
+ crossref = {\l__gzt_crossref_tl}
+ \iow_newline:
+ }
+ \iow_newline:
+ }%
+}
+\cs_generate_variant:Nn \__gzt_people:nnnnnnnn { nVVVVnxV }
+\cs_new_protected:Nn \__gzt_display_academic_signature:n
+{
+ \bigskip
+ \begin{__gzt_minibiographies_acknowledgements_tcbox}
+ #1
+ \end{__gzt_minibiographies_acknowledgements_tcbox}
+}
+\cs_new_protected:Nn \__gzt_display_people_by_role:n
+{
+ \DTLforeach*[\DTLiseq{\l__gzt_people_role_tl}{#1}]{people}{%
+ \l__gzt_firstlastname_tl=first-last-name%
+ ,\l__gzt_people_affiliation_tl=affiliation%
+ ,\l__gzt_people_email_tl=email%
+ ,\l__gzt_people_minibio_tl=minibio%
+ ,\l__gzt_people_photo_tl=photo%
+ ,\l__gzt_people_speciality=speciality%
+ ,\l__gzt_people_role_tl=role%
+ ,\l__gzt_people_webpage_tl=webpage%
+ }{%
+ \tl_if_in:NnTF \l__gzt_people_role_tl { editor } {
+ \item[
+ \textcolor{__gzt_people_color}{%
+ \__gzt_citeauthor_no_firstinits:n {\c__gzt_issue_bib_key_tl -#1- \exp_not:V\DTLcurrentindex}%
+ }
+ \tl_if_in:NnF \l__gzt_people_speciality { NoValue } { ~(\l__gzt_people_speciality) }
+ ]
+ \leavevmode
+ \vbox_top:n {%
+ \l__gzt_people_affiliation_tl%
+ \newline%
+ \href{mailto:\l__gzt_people_email_tl}{\nolinkurl{\l__gzt_people_email_tl}}%
+ }
+ \medskip%
+ }{
+ \tl_if_in:NnTF \l__gzt_people_role_tl { author } {
+ \tl_if_empty:NF \l__gzt_firstlastname_tl {
+ \footnotesize%
+ % \noindent%
+ \DTLiffirstrow{%
+ }{
+ \DTLpar%
+ \medskip%
+ }
+ \dim_set:Nn \l__gzt_minibio_width_dim {\linewidth-1em - \c__gzt_authors_photos_box_width_dim}
+ \tl_if_empty:NTF \l__gzt_people_photo_tl
+ {%
+ \dim_add:Nn \l__gzt_minibio_width_dim {\c__gzt_authors_photos_box_width_dim}
+ }{%
+ \begin{adjustbox}{valign=t,minipage=\c__gzt_authors_photos_box_width_dim}
+ \includegraphics[width=\c__gzt_authors_photos_width_dim]{\l__gzt_people_photo_tl}
+ \end{adjustbox}%
+ \quad%
+ }
+ \begin{adjustbox}{valign=t,minipage=\l__gzt_minibio_width_dim}
+ \begin{description}[leftmargin=1em,style=nextline]
+ \item[%
+ \textcolor{__gzt_people_color}{%
+ \__gzt_citeauthor_no_firstinits:n {\c__gzt_issue_bib_key_tl -#1- \exp_not:V\DTLcurrentindex}%
+ }%
+ ]
+ \tl_if_empty:NF \l__gzt_people_affiliation_tl
+ {%
+ \mbox{}%
+ \par%
+ \vspace{-2ex}%
+ \l__gzt_people_affiliation_tl%
+ }
+ \tl_if_empty:NF \l__gzt_people_email_tl
+ {%
+ \par%
+ \href{mailto:\l__gzt_people_email_tl}{\nolinkurl{\l__gzt_people_email_tl}}%
+ }
+ \tl_if_empty:NF \l__gzt_people_webpage_tl
+ {%
+ \par%
+ \url{\l__gzt_people_webpage_tl}%
+ }
+ \tl_if_empty:NF \l__gzt_people_minibio_tl
+ {%
+ \par%
+ \smallskip%
+ \l__gzt_people_minibio_tl
+ }
+ \end{description}
+ \end{adjustbox}
+ }
+ }{
+ \__gzt_citeauthor_no_firstinits:n {\c__gzt_issue_bib_key_tl -#1-
+ \exp_not:V\DTLcurrentindex}%
+ \tl_if_empty:NF \l__gzt_people_email_tl
+ {
+ \c_space_tl(\href{mailto:\l__gzt_people_email_tl}{\nolinkurl{\l__gzt_people_email_tl}})
+ }
+ }
+ }
+ }
+}
+\cs_new_protected:Nn \__gzt_reflected_text:n
+{
+ \begin{tikzpicture}
+ \tikzset{__gzt_reflect_node/.style={%
+ anchor=base,%
+ inner~sep=0,%
+ line~width=0,%
+ font=\Huge,
+ color=__gzt_reflected_text_color%
+ }%
+ }%
+ \node[__gzt_reflect_node]{#1};
+ \node[scope~fading=south,opacity=0.2,yscale=-1,__gzt_reflect_node]{#1};
+ \end{tikzpicture}
+}
+\tl_new:N \g__gzt_display_frontcover_tl%
+\tl_gset:Nn \g__gzt_display_frontcover_tl {%
+ \bool_gset_true:N \g__gzt_frontcover_bool
+ \pagenumbering{roman}%
+ \pagestyle{__gzt_frontcover_ps}%
+ \pagecolor{\g__gzt_special_edition_color_tl}
+ \exp_after:wN\newgeometry\exp_after:wN{\c__gzt_frontcover_geometry_tl}%
+ \noindent%
+ \bool_if:NTF {\g__gzt_cover_bool} {
+ \hspace*{-\c__gzt_potential_layoutoffset_dim}
+ }{
+ \hspace*{-2\c__gzt_potential_layoutoffset_dim}
+ }
+ \exp_after:wN\includegraphics\exp_after:wN[\g__gzt_frontcover_image_options_tl]{\g__gzt_frontcover_image_file_tl}
+ \begin{tikzpicture}[remember~picture, overlay]
+ \coordinate (__gzt_circle_minitoc_center) at
+ ([xshift=\g__gzt_minitoc_xshift_dim-\c__gzt_potential_layoutoffset_dim,yshift=\g__gzt_minitoc_yshift_dim+\c__gzt_potential_layoutoffset_dim]current~page.south~east) ;
+ \node[name=__gzt_circle_minitoc,shape=circle,inner~sep=\c_zero_dim,fill=\g__gzt_special_edition_color_tl,text~width=\g__gzt_minitoc_circle_diameter_dim] at
+ (__gzt_circle_minitoc_center) {};
+ \node[text~width=\g__gzt_minitoc_textwidth_dim,anchor=north~west] at
+ ([xshift=\c__gzt_minitoc_from_circle_xshift_dim,yshift=\c__gzt_minitoc_from_circle_yshift_dim]$ (__gzt_circle_minitoc.north)!.5!(__gzt_circle_minitoc.west) $)
+ {
+ \bool_if:NF {\g__gzt_frontcover_without_minitoc_bool} {
+ \large
+ \color{__gzt_minitoc_color}
+ \g__gzt_frontcover_minitoc_tl
+ }
+ };
+ \bool_if:NT {\g__gzt_minitoc_help_bool} {
+ \fill[red] (__gzt_circle_minitoc_center) circle (2pt);
+ }
+ \end{tikzpicture}
+ \bool_if:NT {\g__gzt_cover_bool} {
+ \small
+ \begin{tikzpicture}[remember~picture, overlay]
+ \node[name=__gzt_binding_sw,inner~sep=\c_zero_dim,fill=\g__gzt_special_edition_color_tl,rotate=90,anchor=west] at
+ ([xshift=0.45\c__gzt_potential_bindingoffset_dim,yshift=15mm+\c__gzt_potential_layoutoffset_dim]current~page.south~west) {
+ \No
+ \bool_if:NTF {\g__gzt_special_edition_bool} {
+ \c__gzt_special_edition_string_tl
+ }{
+ \int_use:N\g__gzt_issue_number_int
+ }
+ };
+ \node[name=__gzt_binding_w,inner~sep=\c_zero_dim,fill=\g__gzt_special_edition_color_tl,rotate=90] at
+ ([xshift=0.45\c__gzt_potential_bindingoffset_dim]current~page.west) {
+ \bool_if:NTF {\g__gzt_special_edition_bool} {
+ \tl_if_exist:NTF \g__gzt_special_edition_short_title_tl {%
+ \g__gzt_special_edition_short_title_tl
+ }{
+ \g__gzt_special_edition_title_tl
+ }
+ }{
+ \text_uppercase:n {\c__gzt_journal_title_string_tl}
+ }
+ };
+ \node[name=__gzt_binding_nw,inner~sep=\c_zero_dim,fill=\g__gzt_special_edition_color_tl,rotate=90,anchor=east] at
+ ([xshift=0.45\c__gzt_potential_bindingoffset_dim,yshift=-15mm-\c__gzt_potential_layoutoffset_dim]current~page.north~west) {
+ \l__gzt_uppercased_date_format\displaydate{__gzt_date}
+ };
+ \end{tikzpicture}
+ }
+ \vfill%
+ \noindent%
+ \hspace*{10mm}%
+ \hspace*{-\c__gzt_potential_layoutoffset_dim}
+ \includegraphics[height=22.5mm]{\c__gzt_smf_logo_file_string_tl}%
+ \bool_if:NT {\g__gzt_special_edition_bool} {
+ \hfill
+ \includegraphics[scale=1.2]{gzt-logo}
+ \hspace*{10mm}
+ }
+ % \vfill%
+ \clearpage%
+ \bool_gset_false:N \g__gzt_frontcover_bool
+ \nopagecolor
+}
+\tl_new:N \g__gzt_display_inside_frontcover_tl%
+\tl_gset:Nn \g__gzt_display_inside_frontcover_tl {%
+ \bool_gset_true:N \g__gzt_inside_frontcover_bool%
+ \pagestyle{__gzt_inside_frontcover_ps}%
+ \exp_after:wN\newgeometry\exp_after:wN{\c__gzt_inside_cover_geometry_tl}%
+ \small%
+ \setlength{\columnseprule}{2pt}
+ \renewcommand{\columnseprulecolor}{\color{white}}
+ \begin{__gzt_inside_cover_tcb}[__gzt_tcb_inside_frontcover_style]
+ \begin{multicols}{2}
+ \setlength{\columnsep}{1mm}
+ \bool_if:NTF {\g__gzt_special_edition_bool} {
+ \begin{description}[leftmargin=1em,style=nextline,labelindent=\c_zero_dim]
+ \__gzt_display_people_by_role:n {editor}
+ \end{description}
+ }{%
+ \begin{description}[leftmargin=1em]
+ \item[\c__gzt_editors_in_chief_string_tl] \
+ \begin{description}[leftmargin=1em,style=nextline,labelindent=\c_zero_dim]
+ \__gzt_display_people_by_role:n {editorinchief}
+ \end{description}
+ \bigskip
+ \par
+ \item[\c__gzt_editors_string_tl] \
+ \begin{description}[leftmargin=1em,style=nextline,labelindent=\c_zero_dim]
+ \__gzt_display_people_by_role:n {editor}
+ \end{description}
+ \end{description}
+ }
+ \end{multicols}
+ \setlength{\columnseprule}{1pt}
+ \tcblower
+ \begin{tabular}{@{}m{.75\c__gzt_inside_cover_box_width_dim}@{}m{.2\c__gzt_inside_cover_box_width_dim-2\tabcolsep}@{}}
+ \begin{description}[leftmargin=1em]
+ \item[\c__gzt_editorial_secretariat_string_tl{}~:] \ \par%
+ \l__gzt_journal_publisher_tl%
+ % \par%
+ \c_space_tl\textendash{}\c_space_tl%
+ \__gzt_display_people_by_role:n { secretary }\par
+ \l__gzt_journal_address_tl\par%
+ \c__gzt_phone_string_tl{}~:~\l__gzt_journal_phone_tl{} \c_space_tl\textendash{}\c_space_tl
+ \c__gzt_fax_string_tl{}~:~\l__gzt_journal_fax_tl\par%
+ \href{mailto:\l__gzt_journal_email_tl}{\nolinkurl{\l__gzt_journal_email_tl}}%
+ % \newline%
+ \c_space_tl\textendash{}\c_space_tl
+ \url{\l__gzt_journal_url_tl}
+ \item[\c__gzt_publishingdirector_string_tl{}~:]
+ \__gzt_display_people_by_role:n { president }
+ \item[\c__gzt_issn_string_tl{}~:] \l__gzt_journal_issn_tl
+ \tl_if_empty:NF \l__gzt_journal_isbn_tl
+ {%
+ \item[\c__gzt_isbn_string_tl{}~:] \l__gzt_journal_isbn_tl
+ }
+ \bool_if:NT {\g__gzt_no_inside_backcover_bool} {
+ \item[\c__gzt_latexclass_string_tl{}~:]
+ \__gzt_display_people_by_role:n { classdesigner }
+ \item[\c__gzt_artistic_director_string_tl{}~:]
+ \__gzt_display_people_by_role:n { graphicdesigner }
+ \item[\c__gzt_printer_string_tl{}~:] \g__gzt_printer_text_tl
+ }
+ \end{description}
+ \bool_if:NT {\g__gzt_no_inside_backcover_bool} {
+ \g__gzt_font_designer_text_tl
+ }
+ &
+ \hspace*{\fill}%
+ \includegraphics[height=20mm]{\c__gzt_smf_logo_file_string_tl}%
+ \end{tabular}
+ % \\
+ % \c__gzt_font_string_tl
+ \bigskip
+ \tl_if_empty:NF \g__gzt_about_frontcover_tl
+ {%
+ \\
+ \begin{adjustbox}{valign=t,minipage=.75\c__gzt_inside_cover_box_width_dim+.2\c__gzt_inside_cover_box_width_dim-2\tabcolsep}
+ \begin{description}[leftmargin=1em,font=\color{__gzt_about_frontcover_title_color}]
+ \item[\g__gzt_about_frontcover_string_tl] \g__gzt_about_frontcover_tl
+ \bool_if:NT {\g__gzt_credit_frontcover_bool} {
+ \c_space_tl(\c__gzt_credit_frontcover_string_tl{}~:~%
+ \DTLforeach*[\DTLiseq{\l__gzt_people_role_tl}{frontcovercredit}]{people}{%
+ \l__gzt_firstlastname_tl=first-last-name%
+ ,\l__gzt_people_role_tl=role%
+ }{%
+ \__gzt_citeauthor_no_firstinits:n
+ {\c__gzt_issue_bib_key_tl -frontcovercredit- \exp_not:V\DTLcurrentindex}%
+ }%
+ ).%
+ }
+ \end{description}
+ \end{adjustbox}
+ }
+ \end{__gzt_inside_cover_tcb}
+ \clearpage%
+ \pagenumbering{arabic}%
+ \bool_gset_false:N \g__gzt_inside_frontcover_bool
+}
+\tl_new:N \g__gzt_display_inside_backcover_tl%
+\tl_gset:Nn \g__gzt_display_inside_backcover_tl {%
+ \bool_gset_true:N \g__gzt_inside_backcover_bool%
+ \cleardoublepage%
+ \pagestyle{__gzt_inside_backcover_ps}%
+ \exp_after:wN\newgeometry\exp_after:wN{\c__gzt_inside_cover_geometry_tl}%
+ \bool_if:NTF {\g__gzt_no_inside_backcover_bool} {
+ \hbox{}
+ }{%
+ \small%
+ \begin{__gzt_inside_cover_tcb}[__gzt_tcb_inside_backcover_style]
+ \bool_if:NF {\g__gzt_special_edition_bool} {
+ % \begin{multicols}{2}
+ % \setlength{\columnsep}{1mm}
+ \file_if_exist_input:n {\c__gzt_authors_instructions_file_tl}
+ % \end{multicols}
+ % \setlength{\columnseprule}{1pt}
+ \tcblower
+ }
+ \begin{description}[leftmargin=1em]
+ \item[\c__gzt_latexclass_string_tl{}~:]
+ \__gzt_display_people_by_role:n { classdesigner }
+ \item[\c__gzt_artistic_director_string_tl{}~:]
+ \__gzt_display_people_by_role:n { graphicdesigner }
+ \item[\c__gzt_printer_string_tl{}~:] \g__gzt_printer_text_tl
+ \end{description}
+ \g__gzt_font_designer_text_tl
+ \end{__gzt_inside_cover_tcb}
+ }
+ \bool_gset_false:N \g__gzt_inside_backcover_bool
+}
+\tl_new:N \g__gzt_display_backcover_tl%
+\tl_gset:Nn \g__gzt_display_backcover_tl {%
+ \bool_gset_true:N \g__gzt_backcover_bool
+ \pagestyle{__gzt_backcover_ps}%
+ \pagecolor{\g__gzt_special_edition_color_tl}
+ \exp_after:wN\newgeometry\exp_after:wN{\c__gzt_backcover_geometry_tl}%
+ \bool_if:NTF {\g__gzt_special_edition_bool} {
+ \mbox{}
+ \vfill
+ \clist_map_inline:Nn \c__gzt__graphics_extensions_clist{
+ \file_if_exist:nT {\c__gzt_issue_images_path_string_tl/\g__gzt_special_edition_backcover_image_tl.#1} {
+ \begin{center}
+ \includegraphics[width=.25\linewidth]{\g__gzt_special_edition_backcover_image_tl}
+ \end{center}
+ \bigskip
+ \clist_map_break:
+ }
+ }
+ \group_begin:
+ \leftskip.125\linewidth
+ \rightskip\leftskip
+ \file_if_exist_input:nF {\c__gzt_special_edition_backcover_page_file_string_tl}
+ {%
+ \c_empty_box
+ }
+ \par
+ \group_end:
+ \vfill
+ \clist_if_empty:NF \g__gzt_special_edition_logos_clist {
+ \vfill
+ \noindent
+ \clist_map_inline:Nn \g__gzt_special_edition_logos_clist {
+ \hfill
+ \includegraphics[height=2cm]{#1}
+ \hfill
+ }
+ \mbox{}
+ }
+ }{
+ \file_if_exist_input:nF {\c__gzt_backcover_page_file_string_tl}
+ {%
+ \hbox{}
+ }
+ }
+}
+\NewDocumentCommand \editorinchief {ommm}
+{
+ \int_incr:N \g__gzt_editors_in_chief_int
+ \__gzt_people:nnnnnnnn {#2}{#3}{#4}{}{}{#1}{editorinchief}{}
+}
+\NewDocumentCommand \editor {ommm}
+{
+ \__gzt_people:nnnnnnnn {#2}{#3}{#4}{}{}{#1}{editor}{}
+}
+
+\NewDocumentCommand \president {ommm}
+{
+ \__gzt_people:nnnnnnnn {#2}{#3}{#4}{}{}{#1}{president}{}
+}
+\NewDocumentCommand \classdesigner {ommm}
+{
+ \__gzt_people:nnnnnnnn {#2}{#3}{#4}{}{}{#1}{classdesigner}{}
+}
+\NewDocumentCommand \classmaintainer {ommm}
+{
+ \__gzt_people:nnnnnnnn {#2}{#3}{#4}{}{}{#1}{classmaintainer}{}
+}
+\NewDocumentCommand \fontdesigner {ommm}
+{
+ \__gzt_people:nnnnnnnn {#2}{#3}{#4}{}{}{#1}{fontdesigner}{}
+}
+\NewDocumentCommand \graphicdesigner {ommm}
+{
+ \__gzt_people:nnnnnnnn {#2}{#3}{#4}{}{}{#1}{graphicdesigner}{}
+}
+\NewDocumentCommand \secretary {ommm}
+{
+ \__gzt_people:nnnnnnnn {#2}{#3}{#4}{}{}{#1}{secretary}{}
+}
+\NewDocumentCommand \issuesetup { m } {
+ \keys_set:nn { gzt/issuesetup } {frontcoverimageoptions={width=\c__gzt_frontcover_image_width_dim},#1}
+ \int_compare:nNnT {\g__gzt_issue_number_int}<{1}
+ {
+ \int_set:Nn \g__gzt_issue_number_int { \c__gzt_first_issue_number_int }
+ \msg_warning:nnn{gzt}{issue-number-needed}{number}
+ }
+ \int_compare:nNnT {\g__gzt_issue_month_int * \g__gzt_issue_year_int}<{1}
+ {
+ \int_new:N \g__gzt_issue_age_in_months_int%
+ \int_gset:Nn \g__gzt_issue_age_in_months_int
+ {
+ \c__gzt_first_issue_month_int
+ + \c__gzt_interval_in_months_int
+ * ( \int_use:N \g__gzt_issue_number_int - \c__gzt_first_issue_number_int )
+ }
+ }
+ \int_compare:nNnT {\g__gzt_issue_month_int}<{1}
+ {
+ \int_gset:Nn \g__gzt_issue_month_int
+ {
+ \int_mod:nn { \g__gzt_issue_age_in_months_int } { 12 }
+ }
+ }
+ \int_compare:nNnT {\g__gzt_issue_year_int}<{1}
+ {
+ \int_new:N \g__gzt_issue_age_in_years_int%
+ \int_gset:Nn \g__gzt_issue_age_in_years_int
+ {%
+ \int_div_truncate:nn { \g__gzt_issue_age_in_months_int } { 12 }
+ }%
+ \int_gset:Nn \g__gzt_issue_year_int
+ {
+ \g__gzt_issue_age_in_years_int + \c__gzt_first_issue_year_int
+ }
+ }%
+}
+\NewDocumentCommand \specialeditionsetup { m } {
+ \bool_gset_true:N \g__gzt_special_edition_bool
+ \bool_gset_true:N \g__gzt_frontcover_without_minitoc_bool
+ \keys_set:nn { gzt/specialedition } {#1}
+}
+\NewDocumentCommand \moralreportsetup { m } {
+ \bool_gset_true:N \g__gzt_moral_report_bool
+ \bool_gset_true:N \g__gzt_frontcover_without_minitoc_bool
+ \keys_set:nn { gzt/moralreport } {#1}
+}
+\NewDocumentCommand \journalsetup { m } {
+ \keys_set:nn { gzt/journalsetup } { #1 }
+}
+\RenewDocumentCommand \date { mmm } {
+ \newdate{__gzt_president_message_date}{#1}{#2}{#3}%
+}
+\NewDocumentCommand \interviewee { om } {
+ \tl_if_empty:nT \g__gzt_title_tl {
+ \tl_gset:Nn \g__gzt_title_tl {
+ \c__gzt_interview_title_string_tl
+ \DeclareNameAlias{labelname}{default}\citeauthor{\c__gzt_issue_bib_key_tl -art-\int_use:N
+ \g__gzt_articles_int}
+ }
+ }
+ \IfNoValueF {#1}
+ {
+ \keys_set:nn { gzt/interviewees } { #1 }
+ }
+ \tl_set:Nn \l__gzt_people_first_last_name_tl {#2}
+ \__gzt_people:nVVVVnxV
+ {#2}
+ {\g__gzt_people_affiliation_tl}
+ {\g__gzt_people_email_tl}
+ {\g__gzt_people_minibio_tl}
+ {\g__gzt_people_photo_tl}
+ {}
+ {interviewee-art-\int_use:N \g__gzt_articles_int}
+ {}
+ % \maketitle
+}
+\NewDocumentCommand \academicsignature { m } {
+ \__gzt_display_academic_signature:n {#1}
+}
+\cs_new_protected:Nn \__gzt_uppercased_monthname_french:n
+{
+ \@orgargctr=#1\relax
+ \ifcase\@orgargctr
+ \PackageError{datetime}{Invalid~month~number~\the\@orgargctr}{%
+ Month~numbers~should~go~from~1~(janvier)~to~12~(decembre)}%
+ \or JANVIER%
+ \or F\'EVRIER%
+ \or MARS%
+ \or AVRIL%
+ \or MAI%
+ \or JUIN%
+ \or JUILLET%
+ \or AO\^UT%
+ \or SEPTEMBRE%
+ \or OCTOBRE%
+ \or NOVEMBRE%
+ \or D\'ECEMBRE%
+ \else
+ \PackageError{datetime}{Invalid~month~number~\the\@orgargctr}{%
+ Month~numbers~should~go~from~1~(janvier)~to~12~(decembre)}%
+ \fi
+}
+\newdate{__gzt_date}
+ {1}
+ {\int_use:N \g__gzt_issue_month_int}
+ {\int_use:N \g__gzt_issue_year_int}
+\newdateformat{l__gzt_uppercased_date_format}{
+ \__gzt_uppercased_monthname_french:n {\THEMONTH}~\THEYEAR
+}
+\AddToHook{begindocument}{%
+\tl_new:N \g__gzt_bib_issue_date_tl
+\tl_gset:Nn \g__gzt_bib_issue_date_tl {
+ \int_use:N \g__gzt_issue_year_int-
+ \int_compare:nNnT {\g__gzt_issue_month_int}<{10}
+ {
+ 0
+ }
+ \int_use:N \g__gzt_issue_month_int
+}
+ \iow_now:Nx \g__gzt_bib_out_iow {%
+ @periodical{\c__gzt_issue_bib_key_tl,\iow_newline:
+ issuetitle = {\exp_not:f\c__gzt_journal_title_string_tl},\iow_newline:
+ date = {\g__gzt_bib_issue_date_tl},\iow_newline:
+ number = \int_use:N \g__gzt_issue_number_int,\iow_newline:
+ % issn = {\l__gzt_journal_issn_tl},\iow_newline:
+ options = {skipbib}\iow_newline:
+ }
+ \iow_newline:
+ }%
+}
+\tl_new:N \g__gzt_title_tl
+\RenewDocumentCommand \title { o m } {
+ \int_gincr:N \g__gzt_articles_int
+ \tl_gclear:N \g__gzt_short_title_tl
+ \tl_gclear:N \g__gzt_short_subtitle_tl
+ \bool_gset_false:N \g__gzt_title_not_in_toc_bool
+ %
+ \IfNoValueF {#1}
+ {
+ \keys_set:nn { gzt/title } { #1 }
+ }
+ \tl_gset:Nn \g__gzt_title_tl {#2}
+ \bool_if:nT \g__gzt_tellme_rubric_bool
+ {
+ \tl_put_left:Nx \g__gzt_title_tl {\c__gzt_tellme_extra_title_string_tl}
+ }
+ \tl_if_empty:NT \g__gzt_short_title_tl {%
+ \tl_gset_eq:NN \g__gzt_short_title_tl \g__gzt_title_tl
+ }
+}
+\tl_new:N \g__gzt_subtitle_tl
+\NewDocumentCommand \subtitle { o m } {
+ \bool_gset_false:N \g__gzt_subtitle_not_in_toc_bool
+ %
+ \IfNoValueF {#1}
+ {
+ \keys_set:nn { gzt/subtitle } { #1 }
+ }
+ \tl_gset:Nn \g__gzt_subtitle_tl {#2}
+ \tl_if_empty:NT \g__gzt_short_subtitle_tl {%
+ \tl_gset_eq:NN \g__gzt_short_subtitle_tl \g__gzt_subtitle_tl
+ }
+}
+\RenewDocumentCommand \author { o m } {
+ \IfNoValueF {#1}
+ {
+ \keys_set:nn { gzt/authors } { #1 }
+ }
+ \tl_gset:Nn \l__gzt_people_first_last_name_tl {#2}
+ \__gzt_people:nVVVVnxV
+ {#2}
+ {\g__gzt_people_affiliation_tl}
+ {\g__gzt_people_email_tl}
+ {\g__gzt_people_minibio_tl}
+ {\g__gzt_people_photo_tl}
+ {}
+ {author-art-\int_use:N \g__gzt_articles_int}
+ {\g__gzt_people_webpage_tl}
+}
+\iow_new:N \g__gzt_bib_out_iow
+\ior_new:N \g__gzt_bib_out_ior
+\tl_new:N \g__gzt_bib_out_tl
+\file_if_exist:nTF { \c__gzt_issue_bib_path_string_tl }
+{
+ \ior_open:Nn \g__gzt_bib_out_ior { \c__gzt_issue_bib_path_string_tl }
+ \ior_str_map_inline:Nn \g__gzt_bib_out_ior
+ { \tl_gput_right:Nn \g__gzt_bib_out_tl {#1 \par } }
+ \ior_close:N \g__gzt_bib_out_ior
+}{
+ \typeout{no file! rerun}
+}
+\iow_open:Nn \g__gzt_bib_out_iow { \c__gzt_issue_bib_path_string_tl }
+\tl_new:N \g__gzt_abstract_body_tl
+\NewDocumentEnvironment{abstract}{}
+ {\CollectAbstract}
+ {\endCollectAbstract}
+\NewEnviron{CollectAbstract}
+ {
+ \tl_gset_eq:NN \g__gzt_abstract_body_tl \BODY
+ }
+\tl_new:N \g__gzt_mainmatter_switch_tl%
+\tl_gset:Nn \g__gzt_mainmatter_switch_tl {
+ \bool_gset_false:N \g__gzt_frontmatter_bool
+ \bool_gset_true:N \g__gzt_mainmatter_bool
+ \SetParskip{\c__gzt_mainmatter_parskip_skip}
+ \pagestyle{__gzt_mainmatter_ps}%
+}
+\tl_new:N \l__gzt_article_acknowledgements_tl%
+\cs_new_protected:Nn \__gzt_article_acknowledgements:n
+{
+ \tl_set:Nn \l__gzt_article_acknowledgements_tl { #1 }
+}
+\tl_new:N \g__gzt_about_frontcover_tl%
+\bool_new:N \g__gzt_credit_frontcover_bool%
+\tl_new:N \g__gzt_about_frontcover_string_tl%
+\cs_new_protected:Nn \__gzt_about_frontcover:nnn
+{
+ \tl_if_empty:nF {#1}{%
+ \bool_gset_true:N \g__gzt_credit_frontcover_bool
+ \__gzt_people:nnnnnnnn {#1}{}{}{}{}{}{frontcovercredit}{}
+ }
+ \tl_gset:Nn \g__gzt_about_frontcover_string_tl { #2 }
+ \tl_gset:Nn \g__gzt_about_frontcover_tl { #3 }
+}
+\tl_new:N \g__gzt_rubric_abstract_box_tl%
+\tl_new:N \l__gzt_rubric_head_text_box_tl%
+\cs_new_protected:Nn \__gzt_rubric:nnn
+{
+ \newpage%
+ \tl_gclear:N \g__gzt_rubric_abstract_tl
+ \tl_gset:Nn \g__gzt_rubric_title_tl {#2}
+ \file_if_exist:nTF { #3.pdf }{%
+ \tl_gset:Nn \g__gzt_rubric_pictofile_tl {#3}
+ }{
+ \tl_gset:Nn \g__gzt_rubric_pictofile_tl {example-image}
+ }
+ \IfNoValueF {#1}
+ {
+ \keys_set:nn { gzt/rubric } { #1 }
+ }
+ \g__gzt_mainmatter_switch_tl
+ \bool_gset_true:N \g__gzt_mainmatter_bool
+ \clearpage
+ \bool_gset_true:N \g__gzt_rubric_bool%
+ \bool_gset_false:N \g__gzt_interview_rubric_bool
+ \bool_gset_false:N \g__gzt_tellme_rubric_bool
+ \bool_gset_false:N \g__gzt_rearviewmirror_rubric_bool
+ \bool_gset_false:N \g__gzt_books_rubric_bool
+ \bool_gset_false:N \g__gzt_previous_article_with_bibliography_or_minibio_bool
+ \bool_if:nF { \g__gzt_for_authors_bool } {
+ \int_zero:N \g__gzt_item_in_rubric_int
+ \phantomsection
+ \par
+ \bool_if:NF {\g__gzt_special_edition_bool} {
+ \addcontentsline{toc}{part}{\g__gzt_rubric_title_tl}
+ }
+ \thispagestyle{__gzt_rubric_ps}
+ \exp_after:wN\newgeometry\exp_after:wN{\c__gzt_main_geometry_tl}%
+ \tl_if_empty:NTF \g__gzt_rubric_abstract_tl
+ {
+ \dim_set:Nn \l__gzt_rubrics_head_text_width_dim { \c__gzt_rubrics_head_text_no_abstract_width_dim }
+ }
+ {
+ \dim_set:Nn \l__gzt_rubrics_head_text_width_dim { \c__gzt_rubrics_head_text_abstract_width_dim }
+ \tl_gset:Nn \g__gzt_rubric_abstract_box_tl {
+ \begin{adjustbox}{valign=t,minipage=\c__gzt_rubrics_abstract_width_dim}
+ \raggedright%
+ \large%
+ \color{__gzt_rubric_abstract_color}%
+ \g__gzt_rubric_abstract_tl%
+ \end{adjustbox}
+ }
+ }
+ \tl_set:Nn \l__gzt_rubric_head_text_box_tl {
+ \begin{adjustbox}{valign=t,minipage=\l__gzt_rubrics_head_text_width_dim}
+ \mbox{}%
+ \checkoddpage%
+ \ifoddpage%
+ \raggedleft%
+ \else
+ \raggedright%
+ \fi%
+ \color{__gzt_rubric_title_color}%
+ \fontsize{20}{20}\fontseries{bx}\fontshape{sc}\selectfont%
+ \g__gzt_rubric_title_tl%
+ \end{adjustbox}
+ }
+ \noindent%
+ \mbox{}%
+ \checkoddpage%
+ \ifoddpage%
+ \hspace*{\c__gzt_rubric_extra_xoffset_dim}
+ \tl_if_empty:NF \g__gzt_rubric_abstract_tl
+ {
+ \g__gzt_rubric_abstract_box_tl
+ }
+ \hfill%
+ \l__gzt_rubric_head_text_box_tl
+ \hspace*{\c__gzt_rubric_xoffset_dim}%
+ \else%
+ \hspace*{\c__gzt_rubric_xoffset_dim}%
+ \l__gzt_rubric_head_text_box_tl
+ \tl_if_empty:NF \g__gzt_rubric_abstract_tl
+ {
+ \hfill%
+ \g__gzt_rubric_abstract_box_tl
+ \hspace*{\c__gzt_rubric_extra_xoffset_dim}
+ }
+ \fi%
+ }
+ \afterpage{%
+ \bool_gset_false:N \g__gzt_rubric_bool%
+ }
+ \ignorespaces
+}
+\cs_new_protected:Nn \__gzt_display_localtoc:
+{
+ \etocsettocstyle{\section*{\contentsname}}{}%
+ \etocsetstyle {section}
+ {}
+ {\leavevmode\leftskip 0cm\relax}
+ {\bfseries\normalsize\makebox[.6cm][l]{\etocnumber}%
+ \etocname\nobreak\hfill\nobreak%
+ \makebox[.5cm][r]{%
+ \etocpage%
+ }%
+ \par%
+ }
+ {\medskip}
+ \localtableofcontentswithrelativedepth{+1}
+}
+\NewDocumentCommand \gztlocaltableofcontents {}
+{
+ \__gzt_display_localtoc: {}
+}
+\tl_new:N \g__gzt_article_bib_key_tl%
+\tl_new:N \l__gzt_people_first_last_names_tl
+\tl_new:N \g__gzt_authors_first_last_names_tl%
+\tl_new:N \l__gzt_interviewees_first_last_names_tl%
+\tl_new:N \g__gzt_citeauthor_no_firstinits%
+\tl_new:N \g__gzt_citeauthor_tl%
+\tl_new:N \g__gzt_citeinterviewee_tl%
+\tl_new:N \g__gzt_blx_given_first_inits_tl%
+\@ifpackagelater{biblatex}{2016/01/01}{%
+ \tl_gset:Nn \g__gzt_blx_given_first_inits_false_tl
+ {%
+ \togglefalse{abx@bool@giveninits}%
+ }
+}{
+ \tl_set:Nn \g__gzt_blx_given_first_inits_false_tl
+ {%
+ \togglefalse{blx@firstinits}%
+ }
+}
+\cs_new_protected:Nn \__gzt_citeauthor_no_firstinits:n {%
+ \tl_gset:Nn \g__gzt_citeauthor_tl {%
+ \DeclareNameAlias{labelname}{default}%
+ \group_begin:
+ \g__gzt_blx_given_first_inits_false_tl
+ \citeauthor{#1}
+ \group_end:
+ }%
+ \cs_if_exist:cTF {texorpdfstring}
+ {
+ \texorpdfstring{\g__gzt_citeauthor_tl}{}
+ }{%
+ \g__gzt_citeauthor_tl
+ }%
+}
+\cs_set_eq:NN \__gzt_orig_multinamedelim \multinamedelim
+\cs_set_eq:NN \__gzt_orig_finalnamedelim \finalnamedelim
+\cs_new_protected:Nn \__gzt_itemized_citeauthor:n
+{
+ \cs_set_eq:NN \multinamedelim \item
+ \cs_set_eq:NN \finalnamedelim \multinamedelim
+ \AtNextCitekey{\defcounter{maxnames}{100}}
+ \begin{itemize}[label=\textbullet,noitemsep]
+ \item \citeauthor{#1}
+ \end{itemize}
+ \cs_set_eq:NN \multinamedelim \__gzt_orig_multinamedelim
+ \cs_set_eq:NN \finalnamedelim \__gzt_orig_finalnamedelim
+}
+\tl_new:N \l__gzt_bullet_and_rule_tl
+\tl_new:N \l__gzt_authors_box_tl
+\tl_new:N \l__gzt_abstract_box_tl
+\tl_new:N \l__gzt_bullet_and_rule_odd_tl
+\tl_new:N \l__gzt_bullet_and_rule_even_tl
+\tl_new:N \l__gzt_title_box_tl
+\RenewDocumentCommand \maketitle { s } {
+ \FloatBarrier%
+\int_gincr:N \g__gzt_item_in_rubric_int
+\dim_set_eq:NN \parindent \c__gzt_original_parindent_dim
+\glsresetall
+\setcounter{section}{0}
+\setcounter{figure}{0}
+\setcounter{table}{0}
+\setcounter{footnote}{0}
+\setcounter{equation}{0}
+\setcounter{theorem}{0}
+\setcounter{corollary}{0}
+\setcounter{conjecture}{0}
+\setcounter{proposition}{0}
+\setcounter{lemma}{0}
+\setcounter{axiom}{0}
+\setcounter{definition}{0}
+\setcounter{remark}{0}
+\setcounter{example}{0}
+\setcounter{notation}{0}
+\tl_gset:Nn \g__gzt_article_bib_key_tl {%
+ \c__gzt_issue_bib_key_tl
+ -art-
+ \int_use:N \g__gzt_articles_int
+}
+\DTLforeach*[\DTLiseq{\l__gzt_people_role_tl}{author-art-\int_use:N \g__gzt_articles_int}]{people}{%
+ \l__gzt_people_first_last_name_tl=first-last-name%
+ ,\l__gzt_people_role_tl=role%
+}{%
+ \tl_if_in:NnT \l__gzt_people_role_tl { author } {
+ \DTLiffirstrow{%
+ \tl_put_right:Nx
+ \l__gzt_people_first_last_names_tl
+ {\exp_not:V\l__gzt_people_first_last_name_tl}
+ }{
+ \tl_put_right:Nx
+ \l__gzt_people_first_last_names_tl
+ {~and~\exp_not:V\l__gzt_people_first_last_name_tl}
+ }
+ }
+}
+\DTLforeach*[\DTLiseq{\l__gzt_people_role_tl}{interviewee-art-\int_use:N \g__gzt_articles_int}]{people}{%
+ \l__gzt_people_first_last_name_tl=first-last-name%
+ ,\l__gzt_people_role_tl=role%
+}{%
+ \tl_if_in:NnT \l__gzt_people_role_tl { interviewee } {
+ \DTLiffirstrow{%
+ \tl_put_right:Nx
+ \l__gzt_people_first_last_names_tl
+ {\exp_not:V\l__gzt_people_first_last_name_tl}
+ }{
+ \tl_put_right:Nx
+ \l__gzt_people_first_last_names_tl
+ {~and~\exp_not:V\l__gzt_people_first_last_name_tl}
+ }
+ }
+}
+\tl_if_empty:NF \g__gzt_title_tl {%
+ \iow_now:Nx \g__gzt_bib_out_iow {%
+ @article{
+ \g__gzt_article_bib_key_tl,
+ \iow_newline:
+ title={\exp_not:V\g__gzt_title_tl},
+ \iow_newline:
+ \tl_if_empty:NF \g__gzt_subtitle_tl {%
+ subtitle={\exp_not:V\g__gzt_subtitle_tl},
+ \iow_newline:
+ }
+ \tl_if_eq:NNF { \g__gzt_short_title_tl } { \g__gzt_title_tl } {%
+ shorttitle={\exp_not:V\g__gzt_short_title_tl},
+ \iow_newline:
+ }%
+ \tl_if_empty:NF \l__gzt_people_first_last_names_tl
+ {
+ author={\exp_not:V\l__gzt_people_first_last_names_tl},
+ \iow_newline:
+ }
+ options={skipbib},
+ \iow_newline:
+ crossref = {\c__gzt_issue_bib_key_tl}
+ }
+ \iow_newline:
+ }%
+}%
+\tl_set:Nn \l__gzt_bullet_and_rule_odd_tl
+{%
+ \begin{tikzpicture}[remember~picture,overlay]
+ \draw[fill=__gzt_circlerule_color,draw=__gzt_circlerule_color,line~width=0.7mm]
+ ([xshift=-\c__gzt_innermargin_dim-\c__gzt_potential_layoutoffset_dim]0,0 -| current~page.west) -- (\linewidth,0);%
+ \fill[__gzt_circlerule_color] (\linewidth-2\pgflinewidth,0) circle [radius=2.75mm];
+ \end{tikzpicture}%
+}%
+\tl_set:Nn \l__gzt_bullet_and_rule_even_tl
+{%
+ \begin{tikzpicture}[remember~picture,overlay]
+ \draw[fill=__gzt_circlerule_color,draw=__gzt_circlerule_color,line~width=0.7mm]
+ (0,0 -| current~page.east) -- (0,0);%
+ \fill[__gzt_circlerule_color] (0,0) circle [radius=2.75mm];
+ \end{tikzpicture}%
+}%
+\tl_set:Nn \l__gzt_title_box_tl
+{%
+ \noindent%
+ \hspace*{18mm}%
+ \begin{adjustbox}{minipage=\linewidth-18mm,valign=t}
+ \raggedright%
+ \color{__gzt_article_title_color}%
+ \fontsize{20}{25}\selectfont%
+ \bfseries%
+ \g__gzt_title_tl
+ \tl_if_empty:NF \g__gzt_subtitle_tl {%
+ \par%
+ \g__gzt_subtitle_tl
+ }
+ \phantomsection
+ \par%
+ \bool_if:NTF {\g__gzt_title_not_in_toc_bool} {
+ \bookmark[page=\thepage,level=chapter]{\g__gzt_short_title_tl}
+ }{
+ \addcontentsline{toc}{chapter}{%
+ \tl_if_empty:NTF \g__gzt_short_title_tl {%
+ \g__gzt_title_tl%
+ }{
+ \g__gzt_short_title_tl%
+ }
+ \bool_if:NF {\g__gzt_subtitle_not_in_toc_bool} {
+ \bool_if:nF { \tl_if_empty_p:N \g__gzt_short_subtitle_tl || \g__gzt_interview_rubric_bool || \g__gzt_rearviewmirror_rubric_bool }
+ {
+ \c_space_tl\textendash{}\c_space_tl\g__gzt_short_subtitle_tl
+ }
+ }
+ \bool_if:nF { \tl_if_empty_p:N \l__gzt_people_first_last_names_tl || \g__gzt_interview_rubric_bool || \g__gzt_rearviewmirror_rubric_bool }
+ {
+ \textsl{
+ \cs_if_exist:cTF {texorpdfstring}
+ {
+ \texorpdfstring{%
+ \c_space_tl\textendash{}\c_space_tl\citeauthor{\g__gzt_article_bib_key_tl}
+ }{}
+ }{%
+ \c_space_tl\textendash{}\c_space_tl\citeauthor{\g__gzt_article_bib_key_tl}
+ }%
+ }
+ }
+ }
+ }
+ \end{adjustbox}
+}
+ \dim_gset:Nn \g__gzt_abstract_box_width_dim {0.75\linewidth}
+ % \bool_if:nT { \tl_if_empty_p:N \l__gzt_people_first_last_names_tl }
+ % {
+ % \dim_gset:Nn \g__gzt_abstract_box_width_dim {\linewidth}
+ % }
+ \tl_set:Nn \l__gzt_abstract_box_tl
+ {%
+ \begin{adjustbox}{minipage=\g__gzt_abstract_box_width_dim,max~width=\g__gzt_abstract_box_width_dim,valign=t}
+ \mbox{}
+ \tl_if_exist:NT \g__gzt_abstract_body_tl
+ {%
+ \raggedright%
+ \bfseries%
+ \color{__gzt_article_abstract_color}%
+ \g__gzt_abstract_body_tl
+ }%
+ \end{adjustbox}
+ }%
+ \tl_set:Nn \l__gzt_authors_box_tl
+ {%
+ \begin{adjustbox}{minipage=0.3\linewidth,min~width=0.3\linewidth,valign=t}
+ \bool_if:nTF { \tl_if_empty_p:N \l__gzt_people_first_last_names_tl || \g__gzt_interview_rubric_bool }
+ {
+ \mbox{}
+ }
+ {
+ \color{__gzt_people_color}%
+ \__gzt_itemized_citeauthor:n {\g__gzt_article_bib_key_tl}
+ }
+ \end{adjustbox}
+ }
+ \bool_if:nTF {
+ \int_compare_p:nNn { \g__gzt_item_in_rubric_int } = { 1 }
+ }
+ {
+ \mbox{}
+ \par
+ \bool_if:nTF {
+ \tl_if_empty_p:N \g__gzt_rubric_abstract_tl
+ }{
+ \xleaders\vbox {
+ \bigskip%
+ }%
+ \vskip\bigskipamount%
+ }{
+ \xleaders\vbox {
+ \smallskip%
+ }%
+ \vskip\smallskipamount%
+ }
+ }
+ {
+ \bool_if:NTF {\g__gzt_previous_article_with_bibliography_or_minibio_bool}
+ {
+ \xleaders\vbox {
+ \mbox{}
+ \par
+ \medskip%
+ }%
+ \vskip\medskipamount%
+ }
+ {
+ \xleaders\vbox {
+ \mbox{}
+ \par
+ \smallskip%
+ }%
+ \vskip\smallskipamount%
+ }
+ }
+ \bool_gset_false:N \g__gzt_previous_article_with_bibliography_or_minibio_bool
+\bool_if:NT {\g__gzt_for_authors_bool} {
+ \hypersetup{%
+ pdftitle=\g__gzt_short_title_tl,
+ pdfauthor=\l__gzt_people_first_last_names_tl
+ }
+}
+ \bool_if:nF { \g__gzt_for_authors_bool } {
+ % \xleaders\vbox {
+ % \bigskip%
+ % }%
+ % \vskip\bigskipamount%
+ \noindent%
+ \checkoddpage%
+ \ifoddpage%
+ \l__gzt_bullet_and_rule_odd_tl
+ \else%
+ \l__gzt_bullet_and_rule_even_tl
+ \fi%
+ \bigskip%
+ }%
+ \par
+ \nopagebreak[4]
+ \l__gzt_title_box_tl
+ \normalsize%
+ \nopagebreak[3]
+ \bool_if:nF { \tl_if_empty_p:N \g__gzt_abstract_body_tl && (\tl_if_empty_p:N \l__gzt_people_first_last_names_tl || \g__gzt_interview_rubric_bool || \g__gzt_rearviewmirror_rubric_bool)}
+ {%
+ \par%
+ \bigskip
+ \bigskip
+ \large%
+ \mbox{}%
+ \checkoddpage%
+ \ifoddpage%
+ \l__gzt_abstract_box_tl
+ \hspace*{11mm}%
+ \l__gzt_authors_box_tl
+ \else%
+ \hspace*{-.85\c__gzt_outermargin_dim}%
+ \l__gzt_authors_box_tl
+ \hspace*{11mm}%
+ \l__gzt_abstract_box_tl
+ \fi%
+ }
+ \tl_gclear:N \g__gzt_title_tl
+ \tl_gclear:N \g__gzt_subtitle_tl
+ \tl_gclear:N \g__gzt_abstract_body_tl
+ \normalsize%
+ \bigskip
+ \tl_if_empty:NF \g__gzt_abstract_body_tl
+ % {%
+ % \tl_if_empty:NF \l__gzt_people_first_last_names_tl
+ % {%
+ % \bigskip
+ % }
+ % }
+ {
+ \bigskip
+ }
+ \bool_if:nT \g__gzt_interview_rubric_bool
+ {
+ \dim_zero:N \parindent
+ % \tl_if_empty:NF \l__gzt_people_photo_tl
+ % {
+ % \begin{adjustbox}{center}
+ % \includegraphics[height=50mm]{\l__gzt_people_photo_tl}
+ % \end{adjustbox}
+ % }
+ }
+ \color{__gzt_default_text_color}%
+ \IfBooleanF {#1}%
+ {
+ \bool_if:nF { \g__gzt_multicols_bool || \g__gzt_rearviewmirror_rubric_bool }
+ {
+ \begin{multicols}{2}%
+ }
+ }
+ }
+\file_if_exist:nT { \c__gzt_acronyms_file_string_tl } {%
+ \AddToHook{begindocument/before}{\loadglsentries{\c__gzt_acronyms_file_string_tl}}
+}
+\bool_if:nT { \g__gzt_for_authors_bool }
+{
+ \AddToHook{enddocument}{%
+ \bool_if:NT {\g__gzt_multicols_bool} {
+ \end{multicols}%
+ }
+ }
+}
+\AddToHook{begindocument/before}{
+ \file_if_exist_input:nF {\c__gzt_configuration_file_string_tl}
+ {
+ \msg_error:nn { gzt } { configuration-file-missing }
+ }
+}
+\@ifpackageloaded{etoc}{%
+ \newif\ifShowPartPageInToc % used before \part{Livres}
+ \newtoks\toctabletok
+ \newcommand*\appendtotok[2]{% #1=toks variable, #2=macro, expands only once #2
+ #1\expandafter\expandafter\expandafter {\expandafter\the\expandafter #1#2}}
+ \newcommand*\PreparePart{%
+ \edef\toctablepiece {%
+ \ExceptFirstPart {\noexpand\\[-1.5mm]}%
+ \unexpanded{%
+ \color{__gzt_rubric_in_toc_color}\scshape\fontseries{bx}\selectfont%
+ }%
+ \unexpanded\expandafter{\etocthelinkedname}&
+ % \ifShowPartPageInToc
+ \unexpanded{\bfseries\color{__gzt_rubric_in_toc_color}}%
+ \unexpanded\expandafter{\etocthelinkedpage}%
+ % \fi
+ \noexpand\\}%
+ \gdef\ExceptFirstPart ##1{##1}%
+ }
+ \newcommand*\PrepareChapter{%
+ \edef\toctablepiece {%
+ \unexpanded{\color{__gzt_article_in_toc_color}\small}%
+ \unexpanded\expandafter{\etocthelinkedname}&
+ \unexpanded{\color{__gzt_article_in_toc_color}\small}
+ \unexpanded\expandafter{\etocthelinkedpage}%
+ \noexpand\\[1mm]}%
+ }
+ \etocsetstyle{part}{}{}
+ {\PreparePart \appendtotok\toctabletok\toctablepiece}
+ {}
+ \etocsetstyle{chapter}{}{}
+ {\PrepareChapter \appendtotok\toctabletok\toctablepiece}
+ {}
+ \etocsettocstyle
+ {%
+ \setlength\LTleft{\c_zero_dim}
+ \setlength\LTright{\c_zero_dim}
+ \gdef\ExceptFirstPart ##1{}%
+ \toctabletok {%\hypersetup{hidelinks}%
+ \begin{longtable}{@{\extracolsep{\fill}}p{115mm}@{\quad}!{\color{__gzt_rule_in_toc_color}\vrule width 0.2mm}@{}r@{}}}%
+ }
+ {\global\toctabletok\expandafter{%
+ \the\toctabletok\end{longtable}
+ }
+ }
+ }{}
+\tl_new:N \g__gzt_boxed_issue_number_tl%
+\tl_gset:Nn \g__gzt_boxed_issue_number_tl {%
+ \tcbox{\Large\No\g__gzt_issue_number_int}
+}
+\cs_new_protected:Nn \__gzt_boxed_issue_number:nn
+{
+ \noindent%
+ \raisebox{\baselineskip}{%
+ \tl_if_empty:nF {#1} {%
+ \makebox[\c_zero_dim][r]{%
+ % \hspace*{\l__gzt_thumbnail_width_dim}%
+ \begin{adjustbox}{valign=t}
+ \includegraphics[width=\l__gzt_thumbnail_width_dim]{#1}%
+ \end{adjustbox}%
+ }%
+ }%
+ \bool_if:NTF {\g__gzt_special_edition_bool} {
+ \tl_set:Nn \l_tmpa_tl {\c__gzt_short_special_edition_string_tl}
+ }{
+ \tl_set:Nn \l_tmpa_tl {\No\int_use:N\g__gzt_issue_number_int}
+ }
+ \begin{adjustbox}{valign=t}
+ \begin{tcolorbox}[%
+ enhanced,%
+ title=\l_tmpa_tl,%\int_use:N \g__gzt_issue_number_int,%
+ fonttitle=\Large,%
+ colback=white,%
+ sharp~corners=all,%
+ height=33mm,%
+ boxrule=\c_zero_dim,%
+ % frame~hidden,%
+ attach~boxed~title~to~top~left,%
+ tikznode~boxed~title={minimum~width=\c__gzt_boxed_issue_number_width_dim},%
+ boxed~title~style={%
+ size=minimal,%
+ height=\c__gzt_boxed_issue_number_height_dim,%
+ center~upper,%
+ before={},%
+ colback=__gzt_boxed_issue_number_bg_color,%
+ sharp~corners=all,%
+ frame~hidden,%
+ valign=center,%
+ }%
+ ]
+ \__gzt_reflected_text:n { #2 }%
+ \end{tcolorbox}
+ \end{adjustbox}%
+ }%
+ \par%
+}
+\cs_new_protected:Nn \__gzt_before_frontmatter_stuff:
+{
+ \bool_gset_true:N \g__gzt_frontmatter_bool%
+ \pagestyle{__gzt_frontmatter_ps}%
+ \exp_after:wN\newgeometry\exp_after:wN{\c__gzt_front_matter_geometry_tl}%
+}
+\cs_new_protected:Nn \__gzt_after_frontmatter_stuff:
+{
+ \color{__gzt_default_text_color}
+ \normalsize%
+ \clearpage%
+ \bool_gset_false:N \g__gzt_frontmatter_bool%
+}
+\cs_new_protected:Nn \__gzt_before_editorial_presidentmessage:nn
+{
+ \__gzt_before_frontmatter_stuff: {}
+ \__gzt_boxed_issue_number:nn {#1}{#2}
+ \color{__gzt_frontmatter_text_color}%
+ \fontsize{11}{13.6}\selectfont
+ \RaggedRight
+}
+\cs_new_protected:Nn \__gzt_after_editorial_presidentmessage:
+{
+ \justifying
+ \bigskip
+ \par
+}
+\cs_new_protected:Nn \__gzt_before_display_editorial:n
+{
+ \__gzt_before_editorial_presidentmessage:nn {}{#1}
+}
+\cs_new_protected:Nn \__gzt_after_display_editorial:
+{
+ \__gzt_after_editorial_presidentmessage: {}
+ \hspace*{\fill}%
+ \bool_if:NTF {\g__gzt_special_edition_bool} {
+ \AtNextCitekey{\defcounter{maxnames}{100}}
+ \__gzt_citeauthor_no_firstinits:n {\c__gzt_issue_bib_key_tl -editorinchief- 1}
+ }{
+ \DTLforeach*[\DTLiseq{\l__gzt_people_role_tl}{editorinchief}]{people}{%
+ \l__gzt_firstlastname_tl=first-last-name%
+ ,\l__gzt_people_role_tl=role%
+ }{%
+ \__gzt_citeauthor_no_firstinits:n {\c__gzt_issue_bib_key_tl -editorinchief- \exp_not:V\DTLcurrentindex}%
+ }
+ }
+ %
+ \__gzt_after_frontmatter_stuff: {}
+}
+\cs_new_protected:Nn \__gzt_display_editorial:n
+{
+ \__gzt_before_display_editorial:n {#1}
+ \file_if_exist_input:nF {\c__gzt_editorial_file_string_tl}
+ {%
+ \msg_error:nn { gzt } { editorial-file-missing }
+ }
+ \__gzt_after_display_editorial: {}
+}
+\AddToHook{begindocument/before}{%
+ \tl_set_eq:NN \g__gzt_editorial_heading_tl \c__gzt_editorial_heading_string_tl
+ \bool_if:NT {\g__gzt_special_edition_bool} {
+ \tl_if_empty:NF \g__gzt_special_edition_editorial_heading_tl {%
+ \tl_set_eq:NN \g__gzt_editorial_heading_tl \g__gzt_special_edition_editorial_heading_tl
+ }
+ }
+ \NewDocumentCommand \editorial { O{\g__gzt_editorial_heading_tl} }
+ {
+ \bool_if:NF {\g__gzt_for_authors_bool} {
+ \__gzt_display_editorial:n {#1}
+ }
+ }
+}
+\cs_new_protected:Nn \__gzt_display_toc:
+{
+ \__gzt_before_frontmatter_stuff: {}
+ \__gzt_boxed_issue_number:nn {\g__gzt_frontcover_image_file_tl}{\c__gzt_toc_string_tl}
+ \phantomsection
+ \hypertarget{__gzt_toc}{}
+ \bool_if:NTF {\g__gzt_special_edition_bool} {
+ \bookmark[dest=__gzt_toc,level=chapter]{\c__gzt_toc_string_tl}
+ }{
+ \bookmark[dest=__gzt_toc,level=part]{\c__gzt_toc_string_tl}
+ }
+ \etocsettocdepth.toc{chapter}%
+ \tableofcontents
+ \the\toctabletok
+ \__gzt_after_frontmatter_stuff: {}
+}
+\NewDocumentCommand \gzttableofcontents {}
+{
+ \bool_if:NF {\g__gzt_for_authors_bool} {
+ \__gzt_display_toc: {}
+ }
+}
+\tl_new:N \g__gzt_frontcover_minitoc_tl%
+\tl_new:N \l__gzt_minitoc_label_tl%
+\cs_new_protected:Nn \__gzt_frontcover_minitoc:n
+{
+ \tl_gset:Nn \g__gzt_frontcover_minitoc_tl {#1}
+}
+\NewDocumentCommand \minitoc { O{} m }
+{
+ \keys_set:nn { gzt/minitoc } { #1 }
+ \__gzt_frontcover_minitoc:n {#2}
+}
+\newlist{__gzt_minitoc_list}{itemize}{1}
+\setlist[__gzt_minitoc_list]{itemsep=2ex,label=\textcolor{__gzt_cover_itemize_label_color}\textbullet}
+\NewDocumentEnvironment{minitoclist}{}
+{%
+ \cs_set_eq:NN \__gzt_orig_item \item
+ \RenewDocumentCommand \item { s O{} }{%
+ \tl_set:Nn \l__gzt_minitoc_label_tl {##2}
+ \__gzt_orig_item\textbf{##2}
+ \IfBooleanT {##1}
+ {
+ \c__gzt_minitoc_rubric_title_separator_string_tl
+ }
+ }
+ \begin{__gzt_minitoc_list}
+}{
+ \end{__gzt_minitoc_list}
+ \cs_set_eq:NN \item \__gzt_orig_item
+}
+\cs_new_protected:Nn \__gzt_before_display_presidentmessage:
+{
+ \__gzt_before_editorial_presidentmessage:nn {\c__gzt_smf_logo_file_string_tl}{\c__gzt_president_message_string_tl}
+ \phantomsection
+ \par%
+ \addcontentsline{toc}{part}{\g__gzt_smf_short_string_tl}%
+ \addcontentsline{toc}{chapter}{\c__gzt_president_message_string_tl}%
+}
+\cs_new_protected:Nn \__gzt_after_display_presidentmessage:
+{
+ \__gzt_after_editorial_presidentmessage: {}
+ %
+ \hspace*{\fill}%
+ \c__gzt_president_message_date_string_tl%
+ \displaydate{__gzt_president_message_date}%
+ \\[1.5mm]
+ \hspace*{\fill}%
+ \__gzt_display_people_by_role:n { president }%
+ ,\c_space_tl
+ \c__gzt_president_signatory_string_tl
+ %
+ \__gzt_after_frontmatter_stuff: {}
+}
+\cs_new_protected:Nn \__gzt_display_president_message:
+{
+ \__gzt_before_display_presidentmessage: {}
+ \file_input:n {\c__gzt_president_message_file_string_tl}
+ \__gzt_after_display_presidentmessage: {}
+}
+\NewDocumentCommand \presidentmessage {}
+{
+ \bool_if:NF {\g__gzt_for_authors_bool} {
+ \__gzt_display_president_message: {}
+ }
+}
+\titleformat{\chapter}%
+[block]
+{\Huge\bfseries}
+{}
+{\c_zero_dim}
+{\scshape}%
+\titleformat{\section}
+{%
+ \raggedright%
+ \bfseries%
+ \color{__gzt_section_color}
+}
+{\fontsize{20}{15}\selectfont\thesection.\enspace}
+{-3pt}
+{\fontsize{13}{15}\selectfont}
+\titleformat{\subsection}
+{%
+ \fontsize{11}{16}\selectfont%
+ \bfseries%
+ \color{__gzt_subsection_color}%
+}
+{\thesubsection\ \textendash{}\ }
+{\c_zero_dim}
+{}
+\titleformat{\subsubsection}
+{%
+ \fontsize{11}{16}\selectfont%
+ \bfseries%
+ \color{__gzt_subsubsection_color}%
+}
+{}
+{\c_zero_dim}
+{}
+\AddToHook{begindocument}{%
+ \graphicspath{{\c__gzt_issue_images_path_string_tl//}{../\c__gzt_issue_images_path_string_tl//}}
+ % \glsdisablehyper
+ \g__gzt_mainmatter_switch_tl
+ % \bool_gset_false:N \g__gzt_frontmatter_bool
+ % \bool_gset_true:N \g__gzt_mainmatter_bool
+ % \SetParskip{\c__gzt_mainmatter_parskip_skip}
+ % \pagestyle{__gzt_mainmatter_ps}%
+ \exp_after:wN\newgeometry\exp_after:wN{\c__gzt_main_geometry_tl}%
+}
+\AddToHook{begindocument}{%
+ \dim_if_exist:NTF \g__gzt_pagegrid_dim {%
+ \pagegridsetup{%
+ enable,%
+ step=\g__gzt_pagegrid_dim%
+ }
+ }{%
+ \pagegridsetup{%
+ disable%
+ }
+ }
+ % \bool_if:NTF {\g__gzt_for_authors_bool} {
+ % \thispagestyle{empty}
+ % \includegraphics{gzt-logo}
+ % \hfill
+ % \includegraphics[height=22.5mm]{\c__gzt_smf_logo_file_string_tl}%
+ % \par
+ % \vfill
+ % \begin{adjustbox}{valign=c,minipage=\linewidth}
+ % \Large%
+ % \c__gzt_preliminary_version_string_tl%
+ % \end{adjustbox}
+ % \vfill
+ % \newpage
+ % }{
+ % \bool_if:NF {\g__gzt_inside_pages_bool} {
+ % \g__gzt_display_frontcover_tl
+ % \g__gzt_display_inside_frontcover_tl
+ % }
+ % }
+ \bool_if:NF {\g__gzt_for_authors_bool} {
+ \bool_if:NF {\g__gzt_inside_pages_bool} {
+ \g__gzt_display_frontcover_tl
+ \bool_if:NTF {\g__gzt_coverpage_bool} {
+ \AddToHook{begindocument/end}{\end{document}}
+ }{
+ \g__gzt_display_inside_frontcover_tl
+ }
+ }
+ }
+}
+\tl_new:N \g__gzt_background_footer_tl
+\tl_gset:Nn \g__gzt_background_footer_tl {%
+ \draw [__gzt_footer_bg_color,fill]
+ (current~page.south~west)
+ rectangle ([yshift=\c__gzt_footer_background_height_dim]current~page.south~east)
+ ;
+}
+\tl_new:N \l__gzt_frontmatter_head_text_tl
+\tl_set:Nn \l__gzt_frontmatter_head_text_tl {%
+ \bool_if:NTF {\g__gzt_special_edition_bool} {
+ \g__gzt_special_edition_title_tl
+ }{
+ \includegraphics{gzt-logo}
+ }
+}
+\tl_new:N \g__gzt_frontmatter_page_headrule_tl
+\tl_gset:Nn \g__gzt_frontmatter_page_headrule_tl {%
+ \draw [__gzt_headrule_color,line~width=\c__gzt_header_line_width_dim]
+ ([yshift=\c__gzt_header_line_yshift_dim]current~page~header~area.south~west -| current~page.north~west)
+ --
+ ([yshift=\c__gzt_header_line_yshift_dim]current~page~header~area.south~east -| current~page.north~east)
+ ;%
+}
+\tl_new:N \g__gzt_frontmatter_headtext_tl
+\tl_gset:Nn \g__gzt_frontmatter_headtext_tl {%
+ \mbox{}%
+ \checkoddpage%
+ \ifoddpage%
+ \node[
+ anchor=north~east,%
+ align=center,%
+ fill=white,%
+ inner~xsep=3.5mm,%
+ outer~sep=\c_zero_dim,%
+ ] at
+ ([%
+ xshift=\c__gzt_frontmatter_headtext_o_xshift_dim,%
+ yshift=\c__gzt_frontmatter_headtext_yshift_dim%
+ ]current~page.north~east) {%
+ \Large
+ \bool_if:NT {\g__gzt_special_edition_bool} {
+ \c__gzt_short_special_edition_string_tl
+ \c_space_tl
+ }
+ \l__gzt_frontmatter_head_text_tl
+ }%
+ ;
+ \else%
+ \node[%
+ anchor=north~west,%
+ align=center,%
+ fill=white,%
+ inner~xsep=3.5mm,%
+ outer~sep=\c_zero_dim,%
+ ] at
+ ([%
+ xshift=\c__gzt_frontmatter_headtext_e_xshift_dim,%
+ yshift=\c__gzt_frontmatter_headtext_yshift_dim%
+ ]current~page.north~west) {%
+ \Large
+ \bool_if:NT {\g__gzt_special_edition_bool} {
+ \c__gzt_short_special_edition_string_tl
+ \c_space_tl
+ }
+ \l__gzt_frontmatter_head_text_tl
+ }%
+ ;
+ \fi%
+}
+\tl_new:N \g__gzt_mainmatter_oddpage_headrule_tl
+\tl_gset:Nn \g__gzt_mainmatter_oddpage_headrule_tl {%
+ \draw [__gzt_headrule_color,line~width=\c__gzt_header_line_width_dim]
+ ([yshift=\c__gzt_header_line_yshift_dim]current~page~header~area.south~east)
+ --
+ ([yshift=\c__gzt_header_line_yshift_dim]current~page~header~area.south~west -| current~page.north~west)
+ ;
+}
+\tl_new:N \g__gzt_mainmatter_evenpage_headrule_tl
+\tl_gset:Nn \g__gzt_mainmatter_evenpage_headrule_tl {%
+ \draw [__gzt_headrule_color,line~width=\c__gzt_header_line_width_dim]
+ ([yshift=\c__gzt_header_line_yshift_dim]current~page~header~area.south~west)
+ --
+ ([yshift=\c__gzt_header_line_yshift_dim]current~page~header~area.south~east -| current~page.north~east)
+ ;
+}
+\ExplSyntaxOff
+\tcbuselibrary{breakable,skins,hooks,xparse,theorems,listingsutf8}
+\usetikzlibrary{babel,fadings,positioning,calc}
+\tcbset{%
+ new/blend into/tables-/.style={%
+ use counter*=table,%
+ /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}}}},%
+}
+\newcommand\gzt@arcthroughthreepoints[4][]%
+{
+ % \NoAutoSpacing%
+ \coordinate (middle1) at ($(#2)!.5!(#3)$);
+ \coordinate (middle2) at ($(#3)!.5!(#4)$);
+ \coordinate (aux1) at ($(middle1)!1!90:(#3)$);
+ \coordinate (aux2) at ($(middle2)!1!90:(#4)$);
+ \coordinate (center) at ($(intersection of middle1--aux1 and middle2--aux2)$);
+ \filldraw[fill=white,draw=__gzt_headrule_color,line width=0.25mm,#1]
+ let \p1=($(#2)-(center)$),
+ \p2=($(#4)-(center)$),
+ \n0={veclen(\p1)}, % Radius
+ \n1={atan2(\y1,\x1)}, % angles
+ \n2={atan2(\y2,\x2)},
+ \n3={\n2>\n1?\n2:\n2+360}
+ in (#2) arc(\n1:\n3:\n0);
+ % \foreach \p in {#2,#3,#4,center}
+ % \fill[red] (\p) circle(2pt);
+}
+\ExplSyntaxOn
+\tl_new:N \g__gzt_rubric_page_head_tl
+\tl_gset:Nn \g__gzt_rubric_page_head_tl {%
+ \bool_if:nF { \g__gzt_for_authors_bool } {
+ \tikz[remember~picture,overlay] {
+ \path (current~page.north~west |- current~page~header~area.south~west) coordinate (__gzt_pwest);
+ \path (current~page.north~east |- current~page~header~area.south~east) coordinate (__gzt_peast);
+ \draw [__gzt_headrule_color,line~width=\c__gzt_header_line_width_dim]
+ ([yshift=\c__gzt_header_line_yshift_dim]__gzt_pwest)
+ --
+ ([yshift=\c__gzt_header_line_yshift_dim]__gzt_peast)
+ ;%
+ \tl_if_empty:NF \g__gzt_rubric_abstract_tl {%
+ \mbox{}%
+ \checkoddpage%
+ \ifoddpage%
+ \coordinate (__gzt_A) at ([xshift=\c__gzt_xshift_arccircle_A_dim,yshift=\c__gzt_yshift_arccircle_A_dim]current~page.north~west);
+ \coordinate (__gzt_B) at ([xshift=\c__gzt_xshift_arccircle_B_dim,yshift=\c__gzt_yshift_arccircle_B_dim]current~page.north~west) ;
+ \coordinate (__gzt_C) at ([xshift=\c__gzt_xshift_arccircle_C_dim,yshift=\c__gzt_yshift_arccircle_C_dim]current~page.north~west) ;
+ \gzt@arcthroughthreepoints{__gzt_A}{__gzt_B}{__gzt_C};
+ \else%
+ \coordinate (__gzt_A) at ([xshift=-\c__gzt_xshift_arccircle_A_dim,yshift=\c__gzt_yshift_arccircle_A_dim]current~page.north~east);
+ \coordinate (__gzt_B) at ([xshift=-\c__gzt_xshift_arccircle_B_dim,yshift=\c__gzt_yshift_arccircle_B_dim]current~page.north~east) ;
+ \coordinate (__gzt_C) at ([xshift=-\c__gzt_xshift_arccircle_C_dim,yshift=\c__gzt_yshift_arccircle_C_dim]current~page.north~east) ;
+ \gzt@arcthroughthreepoints{__gzt_C}{__gzt_B}{__gzt_A};
+ \fi%
+ }
+ }
+ }
+}
+\newpagestyle{__gzt_frontcover_ps}[]{%
+ \sethead
+ {}%
+ {%
+ \adjustbox{stack=c}{
+ {\Large
+ \c__gzt_frontcover_header_string_tl
+ }\\[7mm]
+ \adjustbox{scale=2.08}{
+ \huge
+ \bool_if:NT {\g__gzt_special_edition_bool} {
+ \color{__gzt_generic_dark_color}
+ }
+ \l__gzt_frontmatter_head_text_tl
+ }%
+ }%
+ }%
+ {}%
+ %
+ \setfoot%
+ {}%
+ {}%
+ {}%
+}%
+\newpagestyle{__gzt_inside_frontcover_ps}[]{%
+ \sethead%
+ [
+ \tikz[remember~picture,overlay] {%
+ \g__gzt_frontmatter_page_headrule_tl%
+ \g__gzt_frontmatter_headtext_tl%
+ }%
+ ]%
+ []%
+ []%
+ {}%
+ {
+ \tikz[remember~picture,overlay] {%
+ \g__gzt_frontmatter_page_headrule_tl%
+ \g__gzt_frontmatter_headtext_tl%
+ }%
+ }%
+ {}%
+ %
+ \setfoot%
+ []%
+ [%
+ \c__gzt_footer_string_tl
+ ]%
+ []%
+ {}%
+ {%
+ \c__gzt_footer_string_tl%
+ }%
+ {}%
+}%
+\newpagestyle{__gzt_frontmatter_ps}[]{%
+ \widenhead*{\c__gzt_front_matter_extra_innermargin_dim}{\c__gzt_front_matter_extra_outermargin_dim}
+ \sethead%
+ [
+ \tikz[remember~picture,overlay] {%
+ \g__gzt_frontmatter_page_headrule_tl%
+ \g__gzt_frontmatter_headtext_tl%
+ }%
+ ]%
+ []%
+ []%
+ {}%
+ {
+ \tikz[remember~picture,overlay] {%
+ \g__gzt_frontmatter_page_headrule_tl%
+ \g__gzt_frontmatter_headtext_tl%
+ }%
+ }%
+ {}%
+ %
+ \setfoot%
+ [\c__gzt_footer_size_font_tl\thepage]%
+ [%
+ \c__gzt_footer_string_tl
+ ]%
+ [
+ ]%
+ {
+ }%
+ {%
+ \c__gzt_footer_string_tl%
+ }%
+ {\c__gzt_footer_size_font_tl\thepage}%
+}%
+\newpagestyle{__gzt_rubric_ps}[]{%
+ \widenhead{\c_zero_dim}{\c_zero_dim}
+ \sethead%
+ [
+ ]%
+ [
+ ]%
+ [
+ \g__gzt_rubric_page_head_tl%
+ \bool_if:nF { \g__gzt_for_authors_bool } {
+ \adjustbox{raise={\c__gzt_header_yshift_dim}{\height},lap=-\c__gzt_header_xshift_dim-\linewidth}{%
+ \includegraphics[width=\c__gzt_pictogram_width_dim]{\g__gzt_rubric_pictofile_tl}%
+ }%
+ }%
+ ]%
+ {
+ \g__gzt_rubric_page_head_tl%
+ }%
+ {}%
+ {%
+ \bool_if:nF { \g__gzt_for_authors_bool } {
+ \adjustbox{raise={\c__gzt_header_yshift_dim}{\height},lap=\c__gzt_header_xshift_dim}{%
+ \includegraphics[width=\c__gzt_pictogram_width_dim]{\g__gzt_rubric_pictofile_tl}%
+ }%
+ }%
+ }%
+ %
+ \setfoot%
+ [\c__gzt_footer_size_font_tl\thepage]%
+ [%
+ \c__gzt_footer_string_tl
+ ]%
+ []%
+ {}%
+ {%
+ \c__gzt_footer_string_tl%
+ }%
+ {\c__gzt_footer_size_font_tl\thepage}%
+}%
+\newpagestyle{__gzt_advertisement_ps}[]{%
+ \widenhead{\c_zero_dim}{\c_zero_dim}
+ \sethead%
+ [
+ \tikz[remember~picture,overlay] {\g__gzt_mainmatter_evenpage_headrule_tl}
+ ]%
+ [%
+ \adjustbox{raise={\c__gzt_header_yshift_dim}{\height}}{%
+ \large\bfseries\scshape\color{__gzt_head_text_color}\c__gzt_advertisement_string_tl%
+ }%
+ ]%
+ []%
+ {}%
+ {%
+ \adjustbox{raise={\c__gzt_header_yshift_dim}{\height}}{%
+ \large\bfseries\scshape\color{__gzt_head_text_color}\c__gzt_advertisement_string_tl%
+ }
+ }%
+ {
+ \tikz[remember~picture,overlay] {\g__gzt_mainmatter_oddpage_headrule_tl}
+ }%
+ %
+ \setfoot%
+ [\c__gzt_footer_size_font_tl\thepage]%
+ [%
+ \c__gzt_footer_string_tl
+ ]%
+ []%
+ {}%
+ {%
+ \c__gzt_footer_string_tl%
+ }%
+ {\c__gzt_footer_size_font_tl\thepage}%
+}
+\newpagestyle{__gzt_blank_pages_ps}[]{%
+ \sethead
+ {}%
+ {}%
+ {}%
+ %
+ \setfoot%
+ [\c__gzt_footer_size_font_tl\thepage]%
+ [%
+ \c__gzt_footer_string_tl
+ ]%
+ []%
+ {}%
+ {%
+ \c__gzt_footer_string_tl%
+ }%
+ {\c__gzt_footer_size_font_tl\thepage}%
+}%
+\newpagestyle{__gzt_inside_backcover_ps}[]{%
+ \sethead%
+ [
+ \tikz[remember~picture,overlay] {%
+ \g__gzt_frontmatter_page_headrule_tl%
+ \g__gzt_frontmatter_headtext_tl%
+ }%
+ ]%
+ []%
+ []%
+ {}%
+ {
+ \tikz[remember~picture,overlay] {%
+ \g__gzt_frontmatter_page_headrule_tl%
+ \g__gzt_frontmatter_headtext_tl%
+ }%
+ }%
+ {}%
+ %
+ \setfoot%
+ []%
+ [%
+ \c__gzt_footer_string_tl
+ ]%
+ []%
+ {}%
+ {%
+ \c__gzt_footer_string_tl%
+ }%
+ {}%
+}%
+\newpagestyle{__gzt_backcover_ps}[]{%
+ \sethead
+ {}%
+ {}%
+ {}%
+ %
+ \setfoot%
+ {}%
+ {}%
+ {}%
+}%
+\AddToHook{shipout/background}{
+ \bool_if:nF { \g__gzt_frontcover_bool || \g__gzt_backcover_bool }{
+ \bool_if:NF {\g__gzt_advertisement_bool} {
+ \tikz[remember~picture,overlay] { \g__gzt_background_footer_tl }%
+ }%
+ }%
+}
+\newpagestyle{__gzt_mainmatter_ps}[]{%
+ \widenhead{\c_zero_dim}{\c_zero_dim}
+ \sethead%
+ [
+ \tikz[remember~picture,overlay] {\g__gzt_mainmatter_evenpage_headrule_tl}
+ ]%
+ [%
+ \adjustbox{raise={\c__gzt_header_yshift_dim}{\height}}{%
+ \large\bfseries\scshape\color{__gzt_head_text_color}\g__gzt_rubric_title_tl%
+ }%
+ ]%
+ []%
+ {}%
+ {%
+ \bool_if:nF {
+ \g__gzt_rearviewmirror_rubric_bool || \g__gzt_books_rubric_bool
+ }{
+ \adjustbox{raise={\c__gzt_header_yshift_dim}{\height}}{%
+ \bfseries\color{__gzt_head_text_color}\g__gzt_short_title_tl%
+ }
+ }
+ }%
+ {
+ \tikz[remember~picture,overlay] {\g__gzt_mainmatter_oddpage_headrule_tl}
+ }%
+ %
+\bool_if:nTF { \g__gzt_for_authors_bool } {
+ \setfoot%
+ [\c__gzt_footer_size_font_tl\thepage]%
+ [%
+ \c__gzt_footer_string_tl
+ ]%
+ [\c__gzt_compiled_string_tl]%
+ {\c__gzt_compiled_string_tl}%
+ {%
+ \c__gzt_footer_string_tl%
+ }%
+ {\c__gzt_footer_size_font_tl\thepage}%
+ }{
+ \setfoot%
+ [\c__gzt_footer_size_font_tl\thepage]%
+ [%
+ \c__gzt_footer_string_tl
+ ]%
+ []%
+ {}%
+ {%
+ \c__gzt_footer_string_tl%
+ }%
+ {\c__gzt_footer_size_font_tl\thepage}%
+ }
+}
+\NewDocumentCommand \acknowledgements { +m } {
+ \__gzt_article_acknowledgements:n {#1}%
+}
+\NewDocumentCommand \printminibios {} {
+ \bool_if:NT {\g__gzt_multicols_bool} {
+ \end{multicols}%
+ }
+ \FloatBarrier%
+ \begin{__gzt_minibiographies_acknowledgements_tcbox}
+ \__gzt_display_people_by_role:n { author-art-\int_use:N \g__gzt_articles_int }
+ \DTLsavelastrowcount{\__gzt_authors_number}
+ \tl_if_empty:NF \l__gzt_article_acknowledgements_tl
+ {%
+ \footnotesize
+ \int_compare:nNnT {\__gzt_authors_number}>{0}
+ {
+ \par%
+ \bigskip%
+ }
+ \begin{adjustbox}{valign=t,minipage=\linewidth}
+ \color{__gzt_acknowledgements_color}%
+ \setlength{\parskip}{\c__gzt_mainmatter_parskip_skip}
+ \l__gzt_article_acknowledgements_tl
+ \end{adjustbox}
+ }
+ \bool_gset_true:N \g__gzt_previous_article_with_bibliography_or_minibio_bool
+ \end{__gzt_minibiographies_acknowledgements_tcbox}
+}
+\let\printauthorsdetails\printminibios
+\cs_set_eq:NN \__gzt_printbibliography \printbibliography
+\RenewDocumentCommand \printbibliography { s O{} } {
+ \bool_if:NT {\g__gzt_multicols_bool} {
+ \end{multicols}%
+ }
+ \FloatBarrier%
+ \begin{__gzt_bibliography_tcbox}
+ \__gzt_printbibliography[heading=subbibliography,resetnumbers,#2]
+ \end{__gzt_bibliography_tcbox}
+ %
+ \IfBooleanF {#1}
+ {
+ \nopagebreak[0]
+ \printauthorsdetails
+ }
+}
+\deftranslation[to=French]{__gzt_century}{si\`ecle}%
+\deftranslation[to=English]{__gzt_century}{century}%
+\deftranslation[to=French]{__gzt_first}{\ier}%
+\deftranslation[to=English]{__gzt_first}{\up{st}\xspace}%
+\deftranslation[to=French]{__gzt_nth}{\ieme}%
+\deftranslation[to=English]{__gzt_nth}{\up{th}\xspace}%
+\deftranslation[to=French]{__gzt_bc}{avant~J.-C}%
+\deftranslation[to=English]{__gzt_bc}{BC}%
+\cs_new_protected:Nn \__gzt_century:n
+{
+ \textsc{
+ \int_to_roman:n {\int_abs:n {#1}}
+ }%
+ \int_compare:nNnTF { \int_abs:n {#1} } > { 1 }{\translate{__gzt_nth}}{\translate{__gzt_first}}
+}
+\cs_new_protected:Nn \__gzt_century_suffix:n
+{
+ \translate{__gzt_century}%
+ \int_compare:nNnT { #1 } < { 0 }{
+ \c_space_tl
+ \translate{__gzt_bc}
+ \IfLanguageName {french}{
+ \@ifnextchar.%
+ {
+ }{
+ .\xspace
+ }%
+ }
+ }{
+ }
+}
+\cs_new_protected:Nn \__gzt_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 }
+ {
+ \__gzt_advertisement:nn {#1}{#2}
+ }
+\cs_new_protected:Nn \__gzt_fullpageadvertisement:nn
+ {
+ \newpage
+ \thispagestyle{__gzt_advertisement_ps}
+ \begin{minipage}[c][\textheight][c]{\textwidth}%
+ \centering\includegraphics[max~size={\linewidth}{\textheight},#1]{#2}%
+ \end{minipage}%
+ }
+\NewDocumentCommand \fullpageadvertisement { O{} m }
+{
+ \__gzt_fullpageadvertisement:nn {#1}{#2}
+}
+\NewDocumentCommand \aboutfrontcover { O{} O{\c__gzt_about_frontcover_string_tl} m }
+{
+ \__gzt_about_frontcover:nnn {#1}{#2}{#3}%
+}
+\cs_new_protected:Nn \__gzt_prepare_rubric:nnn {%
+ \newpage%
+ \tl_gclear:N \g__gzt_rubric_abstract_tl
+ \tl_gset:Nn \g__gzt_rubric_title_tl {#2}
+ \tl_gset:Nn \g__gzt_rubric_pictofile_tl {#3}
+ \IfNoValueF {#1}
+ {
+ \keys_set:nn { gzt/rubric } { #1 }
+ }
+ \__gzt_rubric:nnn
+ {\g__gzt_rubric_abstract_tl}{\g__gzt_rubric_title_tl}{\g__gzt_rubric_pictofile_tl}%
+}
+\NewDocumentCommand \rubric {O{}mm}
+{
+ \bool_if:NTF {\g__gzt_special_edition_bool} {
+ \__gzt_rubric:nnn {#1}{#2}{#3}%
+ \tl_gset:Nn \g__gzt_rubric_title_tl {%
+ \c__gzt_short_special_edition_string_tl
+ \c_space_tl
+ \g__gzt_special_edition_title_tl
+ }
+ }{
+ \__gzt_rubric:nnn {#1}{#2}{#3}%
+ }
+}
+\NewDocumentCommand \mathematics {O{}}
+{
+ \__gzt_rubric:nnn {#1}{\c__gzt_mathematics_rubric_string_tl}{\c__gzt_mathematics_pictogram_file_name_tl}
+}
+\NewDocumentCommand \dossier {O{}}
+{
+ \__gzt_rubric:nnn {#1}{\c__gzt_dossier_rubric_string_tl}{\c__gzt_dossier_pictogram_file_name_tl}
+}
+\NewDocumentCommand \community {O{}}
+{
+ \__gzt_rubric:nnn {#1}{\c__gzt_community_rubric_string_tl}{\c__gzt_hands_pictogram_file_name_tl}
+}
+\NewDocumentCommand \interview {O{}}
+{
+ \__gzt_rubric:nnn {#1}{\c__gzt_interview_rubric_string_tl}{\c__gzt_interview_pictogram_file_name_tl}
+ \bool_gset_true:N \g__gzt_interview_rubric_bool
+}
+\NewDocumentCommand \teaching {O{}}
+{
+ \__gzt_rubric:nnn {#1}{\c__gzt_teaching_rubric_string_tl}{\c__gzt_teaching_pictogram_file_name_tl}
+}
+\NewDocumentCommand \parity {O{}}
+{
+ \__gzt_rubric:nnn {#1}{\c__gzt_parity_rubric_string_tl}{\c__gzt_parity_pictogram_file_name_tl}
+}
+\NewDocumentCommand \tellme {O{}}
+{
+ \__gzt_rubric:nnn {#1}{\c__gzt_tellme_rubric_string_tl}{\c__gzt_tellme_pictogram_file_name_tl}
+ \bool_gset_true:N \g__gzt_tellme_rubric_bool
+}
+\NewDocumentCommand \information {O{}}
+{
+ \__gzt_rubric:nnn {#1}{\c__gzt_information_rubric_string_tl}{\c__gzt_information_pictogram_file_name_tl}
+}
+\NewDocumentCommand \rearviewmirror {O{}}
+{
+ \__gzt_rubric:nnn {#1}{\c__gzt_rearviewmirror_rubric_string_tl}{\c__gzt_rearviewmirror_pictogram_file_name_tl}
+ \bool_gset_true:N \g__gzt_rearviewmirror_rubric_bool
+}
+\NewDocumentCommand \tribute {O{}}
+{
+ \__gzt_rubric:nnn {#1}{\c__gzt_tribute_rubric_string_tl}{\c__gzt_tribute_pictogram_file_name_tl}
+}
+\NewDocumentCommand \books {O{}}
+{
+ \__gzt_rubric:nnn {#1}{\c__gzt_books_rubric_string_tl}{\c__gzt_books_pictogram_file_name_tl}
+ \bool_gset_true:N \g__gzt_books_rubric_bool
+ \vspace{1.5\c__gzt_book_review_frontcover_extend_dim}
+}
+\NewDocumentCommand \latextips {O{}}
+{
+ \__gzt_rubric:nnn {#1}{\c__gzt_latex_rubric_string_tl}{}
+}
+\NewDocumentCommand \forum {O{}}
+{
+ \__gzt_rubric:nnn {#1}{\c__gzt_forum_rubric_string_tl}{\c__gzt_forum_pictogram_file_name_tl}
+}
+\NewDocumentCommand \moralreport {O{}}
+{
+ \__gzt_rubric:nnn {#1}{\c__gzt_moralreport_rubric_string_tl}{\c__gzt_smf_logo_file_string_tl}
+}
+\DeclareCiteCommand{\citeinterviewee}{}{%
+ \printnames{interviewee}%
+}
+{}{}
+\DeclareCiteCommand{\citereviewer}{}{%
+ \g__gzt_blx_given_first_inits_false_tl
+ \printnames{reviewer}%
+}
+{}{}
+\DeclareCiteCommand{\citereviewerinstitution}{}{%
+ \printlist{reviewerinstitution}%
+}
+{}{}
+\DeclareCiteCommand{\__gzt_cite_public_price}{}{%
+ \printfield{publicprice}%
+}
+{}{}
+\DeclareCiteCommand{\__gzt_cite_smf_price}{}{%
+ \printfield{smfprice}%
+}
+{}{}
+\DeclareCiteCommand{\citecopublisher}{}{%
+ \printlist{copublisher}%
+}
+{}{}
+\DeclareCiteCommand{\citefrenchabstract}{}{%
+ \printfield{frenchabstract}%
+}
+{}{}
+\DeclareCiteCommand{\__gzt_cite_englishabstract}{}{%
+ \printfield{englishabstract}%
+}
+{}{}
+\NewDocumentCommand \email {m}
+{
+ \__gzt_email:n {#1}%
+}
+\cs_new_protected:Nn \__gzt_question:n
+{
+ \int_incr:N \g__gzt_question_int
+ {%
+ \par%
+ \bigskip%
+ \color{__gzt_question_color}
+ #1%
+ \par%
+ }%
+}
+\NewDocumentCommand \question {m}
+{
+ \__gzt_question:n {#1}%
+}
+\NewDocumentCommand \smf { s } {
+ \IfBooleanTF {#1}
+ {
+ \g__gzt_smf_string_tl
+ }
+ {
+ \g__gzt_smf_short_string_tl
+ }
+ \xspace
+}
+\DeclareExpandableDocumentCommand \surname { m } {
+ \textsc{#1}
+}
+\NewDocumentCommand \cad { s } {
+ \IfBooleanTF {#1}
+ {
+ \c__gzt_cad_string_tl
+ }
+ {
+ \c__gzt_cad_short_string_tl
+ }
+ \xspace
+}
+\NewDocumentCommand \Cad { s } {
+ \IfBooleanTF {#1}
+ {
+ \c__gzt_Cad_string_tl
+ }
+ {
+ \c__gzt_Cad_short_string_tl
+ }
+ \xspace
+}
+\NewDocumentCommand \gzt { s } {
+ \IfBooleanTF {#1}
+ {
+ \l__gzt_gzt_string_tl
+ }
+ {
+ \l__gzt_gzt_short_string_tl
+ }
+ \xspace
+}
+\NewDocumentCommand \gztcl {}
+{%
+ \textsl{\texttt{\c__gzt_class_name_tl}}
+ \xspace
+}
+\NewDocumentCommand \gztarticlecl {}
+{%
+ \textsl{\texttt{\c__gzt_article_class_name_tl}}
+ \xspace
+}
+\NewDocumentCommand \century { s m } {%
+ \__gzt_century:n {#2}%
+ \IfBooleanTF {#1}
+ {
+ \int_compare:nNnT { #2 } < { 0 }{
+ \__gzt_century_suffix:n {#2}%
+ }
+ }
+ {
+ \__gzt_century_suffix:n {#2}%
+ }
+}
+\NewDocumentCommand \aside { s m } {%
+ \IfBooleanTF {#1}
+ {
+ \c__gzt_aside_string_tl{}~#2
+ }
+ {
+ \c__gzt_aside_string_tl{}~#2~\c__gzt_aside_string_tl
+ }
+}
+\tl_new:N \g__gzt_font_designer_text_tl%
+\cs_new_protected:Nn \__gzt_font_designer_text:n
+{
+ \tl_gset:Nn \g__gzt_font_designer_text_tl { #1 }
+}
+\NewDocumentCommand \fontdesignertext {m}
+{
+ \__gzt_font_designer_text:n {#1}%
+}
+\tl_new:N \g__gzt_printer_text_tl%
+\cs_new_protected:Nn \__gzt_printer_text:n
+{
+ \tl_gset:Nn \g__gzt_printer_text_tl { #1 }
+}
+\NewDocumentCommand \printertext {m}
+{
+ \__gzt_printer_text:n {#1}%
+}
+\renewcommand{\textflush}{flushepinormal}
+\cs_set_eq:NN \__gzt_orig_epigraph \epigraph
+\cs_new_protected:Nn \__gzt_epigraph:nn
+{
+ \bool_if:nTF { \tl_if_empty_p:n {#2} }
+ {
+ \setlength{\epigraphrule}{\c_zero_dim}
+ }
+ {
+ \setlength{\epigraphrule}{.4\p@}
+ }
+ \__gzt_orig_epigraph{%
+ \emph{%
+ \enquote{%
+ #1%
+ }%
+ }%
+ }%
+ {%
+ #2
+ }
+}
+\RenewDocumentCommand \epigraph { m m }
+{
+ \__gzt_epigraph:nn {#1}{#2}%
+}
+\NewDocumentEnvironment{authorsinstructions}{}
+{%
+ \begingroup
+ \tcbverbatimwrite{\c__gzt_authors_instructions_file_tl}
+}%
+{
+ \endtcbverbatimwrite
+ \endgroup
+}
+\lstdefinestyle{__gzt_lst_style}{%
+ escapechar=+,
+ language=[LaTeX]TeX,
+ texcsstyle=*\bfseries,
+ breaklines=true,
+ basicstyle=\normalfont\ttfamily,
+ columns=flexible,
+ inputencoding=utf8/latin1
+}%
+\DeclareTotalTCBox{\gztverb}{ v }{verbatim,blank,fuzzy~halo=0pt~with~__gzt_light_generic_dark_color!8}{#1}
+\NewTCBListing{gztcode}{ !O{} }{%
+ listing~style=__gzt_lst_style,
+ listing~only,
+ enlarge~top~by=\medskipamount,
+ breakable,
+ #1%
+}
+\DeclareTColorBox[blend~into=figures]{gztfigure}{ O{} }
+{
+ ,width=\linewidth%
+ ,blend~before~title=dash%
+ ,__gzt_tcb_floats_style%
+ ,#1%
+ ,code={\ifdefempty{\kvtcb@title}{\tcbset{__gzt_tcb_notitle}}{}}%
+}
+\DeclareTColorBox[blend~into=figures]{gztfigure*}{ O{} }
+{
+ ,float*
+ ,blend~before~title=dash%
+ ,width=\textwidth%
+ ,__gzt_tcb_floats_style%
+ ,#1%
+ ,code={\ifdefempty{\kvtcb@title}{\tcbset{__gzt_tcb_notitle}}{}}%
+}
+\DeclareTColorBox[blend~into=tables]{gzttable}{ O{} }
+{
+ ,width=\linewidth%
+ ,blend~before~title=dash%
+ ,__gzt_tcb_floats_style%
+ ,#1%
+ ,code={\ifdefempty{\kvtcb@title}{\tcbset{__gzt_tcb_notitle}}{}}%
+}
+\DeclareTColorBox[blend~into=tables]{gzttable*}{ O{} }
+{
+ ,float*
+ ,blend~before~title=dash%
+ ,width=\textwidth%
+ ,__gzt_tcb_floats_style%
+ ,#1%
+ ,code={\ifdefempty{\kvtcb@title}{\tcbset{__gzt_tcb_notitle}}{}}%
+}
+\DeclareTColorBox{gztframe}{ O{} }
+{
+ ,width=\linewidth%
+ ,__gzt_tcb_floats_style%
+ ,#1%
+}
+\DeclareTColorBox{gztframe*}{ O{} }
+{
+ ,float*
+ ,width=\textwidth%
+ ,__gzt_tcb_floats_style%
+ ,#1%
+}
+\DeclareTColorBox{gztscan}{ O{} }
+{
+ #1%
+ ,width=\textwidth%
+ ,__gzt_tcb_floats_style%
+ ,size=tight%
+}
+\DeclareTColorBox{__gzt_book_review}{ O{} }
+{
+ overlay~unbroken~and~first={%
+ \node at (frame.north~west) {
+ {
+ \makebox[\c_zero_dim][l]{%
+ \adjustbox{raise={-2\height+\c__gzt_book_review_frontcover_extend_dim}{\c_zero_dim}}{%
+ \includegraphics[width=20mm]{\g__gzt_bookreview_frontcover_tl}%
+ }%
+ }
+ }
+ };
+ },
+ __gzt_tcb_book_review_box_style,
+ #1
+}
+\DeclareTColorBox{__gzt_bibliography_tcbox}{ O{} }
+{
+ __gzt_tcb_bibliography_style,
+ #1
+}
+\DeclareTColorBox{__gzt_minibiographies_acknowledgements_tcbox}{ O{} }
+{
+ __gzt_tcb_minibiographies_acknowledgements_style,
+ #1
+}
+\DeclareTColorBox{inset}{ O{} }
+{
+ __gzt_tcb_minibiographies_acknowledgements_style,
+ #1
+}
+\NewDocumentEnvironment{bookreview}{ O{} m }
+{
+ \keys_set:nn { gzt/bookreview } { #2 }
+ \begin{__gzt_book_review}[#1]
+ \xpatchfieldformat{title}{mkbibemph}{textbf}{}{}%
+ \xpretonameformat{author}{\color{__gzt_people_color}}{}{}%
+ \g__gzt_blx_given_first_inits_false_tl
+ \noindent%
+ \parbox[][21.5mm][l]{\linewidth}{\fullcite{\g__gzt_bookreview_bibkey_tl}}
+ \tcblower
+}{
+ \begin{flushright}
+ % \g__gzt_reviewer_tl
+ \bigskip
+ \citereviewer{\g__gzt_bookreview_bibkey_tl}\\
+ \citereviewerinstitution{\g__gzt_bookreview_bibkey_tl}
+ \end{flushright}
+ % \vspace*{10mm}
+ \mbox{}
+ \end{__gzt_book_review}
+}
+\DeclareTColorBox{__gzt_book_advertisement}{ O{} }
+{
+ __gzt_tcb_book_advertisement_box_style,
+ #1
+}
+\DeclareTColorBox{__gzt_inside_cover_tcb}{ O{} }
+{
+ #1
+}
+\NewDocumentCommand \bookadvertisement {O{} m}
+{
+ \newpage{}
+ \mbox{}
+ \vfill
+ \begin{__gzt_book_advertisement}[#1]
+ \fullcite{#2}
+ \par
+ \bigskip
+ \tcblower
+ \includegraphics[height=22.5mm]{\c__gzt_smf_logo_file_string_tl}%
+ \par{}
+ \smallskip%
+ \url{\l__gzt_journal_url_tl}
+ \end{__gzt_book_advertisement}
+ \vfill
+ \newpage
+ \bool_gset_false:N \g__gzt_advertisement_bool
+ \bool_gset_true:N \g__gzt_mainmatter_bool
+}
+\NewDocumentCommand \gztinput { m m } {%
+ \tl_gclear:N \g__gzt_people_affiliation_tl
+ \tl_gclear:N \g__gzt_people_email_tl
+ \tl_gclear:N \g__gzt_people_minibio_tl
+ \tl_gclear:N \g__gzt_people_photo_tl
+ \tl_gclear:N \g__gzt_people_webpage_tl
+ \tl_clear:N \l__gzt_article_acknowledgements_tl
+ \startcustomization%
+ \bool_if:NF {\g__gzt_refsection_bool} {
+ \begin{refsection}
+ }
+ \bool_if:NF { \g__gzt_backcover_bool } {
+ \tl_if_in:NnT
+ { \c__gzt_advertisement_directory_string_tl } { #1 } {%
+ \newpage
+ \thispagestyle{__gzt_advertisement_ps}
+ }
+ }
+ \inputfrom{#1}{#2}
+ \bool_if:NT {\g__gzt_multicols_bool} {
+ \end{multicols}%
+ }
+ \bool_if:NT {\g__gzt_refsection_bool} {
+ \end{refsection}
+ }
+ \cleancustomization%
+}
+\bool_if:NF {\g__gzt_coverpage_bool} {
+ \bool_if:NF {\g__gzt_inside_pages_bool} {
+ \AddToHook{enddocument/end}{
+ \bool_gset_true:N \g__gzt_backmatter_bool
+ \g__gzt_display_inside_backcover_tl
+ \newpage
+ \g__gzt_display_backcover_tl
+ }%
+ }%
+}%
+\bool_if:NF {\g__gzt_coverpage_bool} {
+ \bool_if:nF { \g__gzt_for_authors_bool } {
+ \bool_if:nT { \g__gzt_inside_pages_bool } {
+ \AddToHook{enddocument}{%
+ \prg_replicate:nn
+ { \int_mod:nn { 4 - \int_mod:nn { \getpagerefnumber{LastPage} } { 4 } } { 4 } }
+ { \thispagestyle{__gzt_blank_pages_ps}\null\clearpage }
+ }
+ }
+ }
+}
+\pgfplotsset{%
+ /pgf/number~format/.cd,
+ use~comma,
+ 1000~sep={\,},
+ min~exponent~for~1000~sep=4
+}%
+\defbibheading{bibassection}[\bibname]{\section*{#1}}%
+\renewcommand{\bibfont}{\normalfont\footnotesize}
+\exp_after:wN\addbibresource\exp_after:wN{\c__gzt_issue_bib_path_string_tl}
+\@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}
+\renewcommand*\bibnamedelimc{\addnbspace}
+\renewcommand*\bibnamedelimd{\addnbspace}
+\renewbibmacro{in:}{%
+ \ifentrytype{article}{}{\printtext{\bibstring{in}\intitlepunct}}}
+\renewbibmacro*{journal}{%
+ \iffieldundef{shortjournal}%
+ {%
+ \iffieldundef{journaltitle}
+ {}
+ {%
+ \printtext[journaltitle]%
+ {%
+ \printfield[titlecase]{journaltitle}%
+ \setunit{\subtitlepunct}%
+ \printfield[titlecase]{journalsubtitle}%
+ }%
+ }%
+ }%
+ {\printtext[journaltitle]{\printfield[titlecase]{shortjournal}}}%
+}
+\renewbibmacro*{volume+number+eid}{%
+ \printfield{volume}%
+ \setunit{\addcomma\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
+\ifkp@easyscsl
+\DeclareRobustCommand{\itshape}{\not@math@alphabet\itshape\mathit%
+ \ifthenelse{\equal{\f@shape}{\scdefault}}{\fontshape{scsl}}{%
+ \fontshape\itdefault}\selectfont}
+\fi
+\DeclareMathAlphabet\mathfrak{U}{euf}{m}{n}
+\SetMathAlphabet\mathfrak{bold}{U}{euf}{b}{n}
+\@ifpackageloaded{draftwatermark}{%
+ \SetWatermarkColor{gray!10}%
+ \SetWatermarkFontSize{30mm}%
+ \SetWatermarkText{\text_uppercase:n{\c__gzt_draftwatermark_string_tl}}%
+}{%
+}
+\tikzset{
+ __gzt_dots/.style={
+ line~width=\c__gzt_tikz_dot_diameter_dim,
+ line~cap=round,
+ dash~pattern=on~0pt~off~\c__gzt_tikz_dot_spacing_dim
+ },
+ __gzt_tcb_segmentation_style/.style={
+ __gzt_dots,
+ draw=__gzt_dotfill_color,
+ shorten~>=~\c__gzt_tcb_left_dim+\c__gzt_tcb_boxsep_dim,
+ shorten~<=~\c__gzt_tcb_left_dim+\c__gzt_tcb_boxsep_dim,
+ }
+}
+\tcbset{
+ copyright/.style={%
+ overlay={%
+ \node[rotate=90,anchor=south~west,font=\tiny] at (frame.south~east) {%
+ \begin{minipage}[t]{\tcbtextheight}
+ \copyright{}~#1%
+ \end{minipage}
+ };%
+ }%
+ }%
+}
+\tcbset{%
+ __gzt_tcb_floats_style/.style={%
+ enhanced%
+ ,every~float=\centering%
+ ,coltitle=__gzt_generic_dark_color%
+ ,colbacktitle=__gzt_float_title_bg_color%
+ ,colback=white%
+ ,colframe=__gzt_float_frame_color%
+ ,center~upper%
+ ,sharp~corners=all%
+ ,boxrule=0.3mm%
+ }%
+}
+\tcbset{%
+ __gzt_tcb_notitle/.style={%
+ blend~before~title~code={##1}
+ ,title={\c_space_tl}%
+ }%
+}
+\tcbset{%
+ __gzt_tcb_book_review_box_style/.style={%
+ enhanced,%
+ colback=__gzt_book_review_frame_bg_color,%
+ breakable,%
+ % height=50mm,%
+ boxrule=\c_zero_dim,
+ sharp~corners=all,%
+ skin=enhancedlast,
+ leftupper=25mm,
+ enlarge~bottom~finally~by=-1mm,
+ middle=4mm,
+ segmentation~style={__gzt_tcb_segmentation_style}%
+ }
+}
+\tcbset{%
+ __gzt_tcb_book_advertisement_box_style/.style={%
+ enhanced,%
+ colframe=__gzt_book_advertisement_frame_color,%
+ colback=__gzt_book_advertisement_bg_color,%
+ center~lower,
+ sharp~corners=all,%
+ % skin=enhancedlast,
+ % middle=4mm,
+ lower~separated=false,
+ % segmentation~style={__gzt_tcb_segmentation_style}%
+ }
+}
+\tcbset{%
+ __gzt_tcb_inside_cover_style/.style={%
+ % split=0.6,%
+ colback=__gzt_inside_frontcover_frame_bg_color,%
+ colbacktitle=__gzt_inside_frontcover_frame_bg_color,%
+ sharp~corners=all,%
+ center~title,%
+ coltitle=__gzt_inside_frontcover_frame_title_color,%
+ fonttitle=\bfseries\large,%
+ boxrule=\c_zero_dim,%
+ toptitle=3mm,%
+ bottomtitle=4mm,%
+ frame~hidden,%
+ enhanced,%
+ height=\c__gzt_layoutheight_dim-\c__gzt_topmargin_inside_cover_dim-\c__gzt_botmargin_dim,
+ width=\c__gzt_inside_cover_box_width_dim,
+ middle=4mm,
+ segmentation~style={__gzt_tcb_segmentation_style}%
+ },
+ __gzt_tcb_inside_frontcover_style/.style={%
+ __gzt_tcb_inside_cover_style,
+ enlarge~left~by=-\c__gzt_inside_cover_offset_dim,
+ },
+ __gzt_tcb_inside_backcover_style/.style={%
+ __gzt_tcb_inside_cover_style,
+ enlarge~left~by=\c__gzt_inside_cover_offset_dim,
+ }
+}
+\AddToHook{begindocument/before}{%
+ \bool_if:NTF {\g__gzt_special_edition_bool} {
+ \tcbset{
+ __gzt_tcb_inside_frontcover_style/.append~style={%
+ title=\c__gzt_special_edition_editorial_board_string_tl
+ },
+ __gzt_tcb_inside_backcover_style/.append~style={%
+ notitle
+ },
+ }
+ }{
+ \tcbset{
+ __gzt_tcb_inside_frontcover_style/.append~style={%
+ title=\c__gzt_editorial_board_string_tl
+ },
+ __gzt_tcb_inside_backcover_style/.append~style={%
+ title=\file_if_exist:nT { \c__gzt_authors_instructions_file_tl } {%
+ \c__gzt_authors_instructions_string_tl
+ }
+ },
+ }
+ }
+}
+\tcbset{%
+ __gzt_tcb_bibliography_style/.style={%
+ colback=__gzt_bibliography_minibios_acknowledgements_bg_color,
+ breakable,
+ boxrule=\c_zero_dim,
+ sharp~corners=all,%
+ enhanced
+ }
+}
+\tcbset{%
+ __gzt_tcb_minibiographies_acknowledgements_style/.style={%
+ colback=__gzt_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__gzt_tcb_left_dim,
+ boxsep=\c__gzt_tcb_boxsep_dim,
+}
+\setlist[1]{labelindent=\parindent}
+\setlist[itemize]{label=\textendash{}, nosep}
+\setlist{%
+ labelwidth=\widthof{\textendash},
+ itemsep=0.4ex plus 0.2ex minus 0.2ex,
+ parsep=0.4ex plus 0.2ex minus 0.2ex,
+ topsep=0.8ex plus 0.4ex minus 0.4ex,
+ partopsep=0.4ex plus 0.2ex minus 0.2ex,
+ leftmargin=!%
+}
+\setlist[description]{
+ font=
+ \bool_if:nTF { \g__gzt_books_rubric_bool || \g__gzt_inside_frontcover_bool || \g__gzt_inside_backcover_bool }
+ {
+ \color{black}
+ }{
+ \color{__gzt_description_label_light_color}
+ }
+ \bfseries
+}
+\DeclarePlainStyle{«~}{~»}{`}{'}
+\setcounter{topnumber}{3}
+\renewcommand{\topfraction}{0.8}
+\addtolength{\skip\footins}{.25\baselineskip}
+\setlength{\columnsep}{7mm}%
+\renewcommand{\thesection}{\arabic{section}}%
+\@ifpackageloaded{siunitx}{%
+ \sisetup{locale=FR}
+}
+\arrayrulecolor{__gzt_arrayrule_color}%
+\addto\captionsfrench{\def\tablename{{\scshape Tableau}}}%
+\RenewDocumentCommand \vec { m } {
+ \vv{#1}
+}
+\cs_set_eq:NN \__gzt_orig_usetikzlibrary \usetikzlibrary
+\RenewDocumentCommand \usetikzlibrary { m } {
+ \shorthandoff{:}%
+ \__gzt_orig_usetikzlibrary{#1}
+ \shorthandon{:}%
+ % \begingroup
+ % \NoAutoSpacing
+ % \__gzt_orig_usetikzlibrary{#1}
+ % \endgroup
+}
+\cs_new_protected:Nn \__gzt_bilingual:nnn
+{
+ \deftranslation[to=French]{#1}{#2}%
+ \deftranslation[to=English]{#1}{#3}%
+}
+\cs_new_protected:Nn \__gzt_new_theorem:nnnn
+{
+ % \__gzt_bilingual:nnn {#2}{#3}{#4}
+ \deftranslation[to=French]{#2}{#3}%
+ \deftranslation[to=English]{#2}{#4}%
+ \declaretheorem[%
+ #1,%
+ name=\translate{#2}
+ ]{#2}
+ \declaretheorem[%
+ #1,%
+ name=\translate{#2},
+ numbered=no
+ ]{#2*}
+}
+\cs_generate_variant:Nn \__gzt_new_theorem:nnnn { nnVV }
+\declaretheoremstyle[spaceabove=3pt,notefont=\bfseries,bodyfont=\itshape]{theorem}
+\declaretheoremstyle[spaceabove=3pt,notefont=\bfseries,bodyfont=\normalfont]{definition}
+\declaretheoremstyle[spaceabove=3pt,bodyfont=\normalfont,qed=\ensuremath{\qedsymbol},headfont=\normalfont\itshape,numbered=no]{proof}
+\RenewDocumentCommand \newtheorem { O{} m }
+{
+ \tl_clear:N \l__gzt_newtheorem_style_tl
+ \tl_clear:N \l__gzt_newtheorem_frenchtitle_tl
+ \tl_clear:N \l__gzt_newtheorem_englishtitle_tl
+ \tl_set:Nn \l__gzt_newtheorem_englishtitle_tl {
+ \text_titlecase:n {#2}
+ }
+ \tl_set:Nf \l__gzt_newtheorem_frenchtitle_tl {
+ \l__gzt_newtheorem_englishtitle_tl
+ }
+ \tl_set:Nn \l__gzt_newtheorem_style_tl {
+ theorem
+ }
+ \IfNoValueF {#1}
+ {
+ \keys_set:nn { gzt/newtheorem } { #1 }
+ }
+ % \tl_if_eq:VVF { \l__gzt_newtheorem_englishtitle_tl } { \MakeUppercase #2 }
+ % {%
+ % \tl_if_eq:NNF { \l__gzt_newtheorem_frenchtitle_tl } { \l__gzt_newtheorem_englishtitle_tl }
+ % {%
+ % \tl_set:Nf \l__gzt_newtheorem_frenchtitle_tl {
+ % \l__gzt_newtheorem_englishtitle_tl
+ % }
+ % }
+ % }
+ \__gzt_new_theorem:nnVV {style=\l__gzt_newtheorem_style_tl}{#2}{\l__gzt_newtheorem_frenchtitle_tl}{\l__gzt_newtheorem_englishtitle_tl}
+}
+\newtheorem[frenchtitle=Th\'eor\`eme]{theorem}
+\newtheorem[frenchtitle=Corollaire]{corollary}
+\newtheorem{conjecture}
+\newtheorem{proposition}
+\newtheorem[frenchtitle=Lemme]{lemma}
+\newtheorem[frenchtitle=Axiome]{axiom}
+\newtheorem[style=definition,frenchtitle=D\'efinition]{definition}
+\newtheorem[style=definition,frenchtitle=Remarque]{remark}
+\newtheorem[style=definition,frenchtitle=Exemple]{example}
+\newtheorem[style=definition]{notation}
+\let\proof\relax
+\newtheorem[style=proof,frenchtitle=Preuve]{proof}
+\cs_new_protected:Nn \__gzt_clone_theorem:nn
+{
+ \NewDocumentEnvironment{#1}{}
+ {
+ \begin{#2}
+ }
+ {
+ \end{#2}
+ }
+ \NewDocumentEnvironment{#1*}{}
+ {
+ \begin{#2*}
+ }
+ {
+ \end{#2*}
+ }
+}
+\__gzt_clone_theorem:nn {theoreme} {theorem}
+\__gzt_clone_theorem:nn {corollaire}{corollary}
+\__gzt_clone_theorem:nn {lemme}{lemma}
+\__gzt_clone_theorem:nn {axiome}{axiom}
+\__gzt_clone_theorem:nn {remarque}{remark}
+\__gzt_clone_theorem:nn {exemple}{example}
+\__gzt_clone_theorem:nn {preuve}{proof}
+\DeclareMathOperator{\cotan}{cotan}
+\DeclareMathOperator{\Arccos}{Arccos}
+\DeclareMathOperator{\Arcsin}{Arcsin}
+\DeclareMathOperator{\Arctan}{Arctan}
+\DeclareMathOperator{\Argch}{Argch}
+\DeclareMathOperator{\Argsh}{Argsh}
+\DeclareMathOperator{\Argth}{Argth}
+\cs_set_eq:NN \__gzt_orig_arccos \arccos
+\cs_set_eq:NN \__gzt_orig_arcsin \arcsin
+\cs_set_eq:NN \__gzt_orig_arctan \arctan
+\RenewDocumentCommand \arccos {} {
+ \IfLanguageName {french}{\Arccos}{\__gzt_orig_arccos}%
+}
+\RenewDocumentCommand \arcsin {} {
+ \IfLanguageName {french}{\Arcsin}{\__gzt_orig_arcsin}%
+}
+\RenewDocumentCommand \arctan {} {
+ \IfLanguageName {french}{\Arctan}{\__gzt_orig_arctan}%
+}
+\DeclareMathOperator{\ch}{ch}
+\DeclareMathOperator{\sh}{sh}
+\cs_set_eq:NN \__gzt_orig_tanh \tanh
+\RenewDocumentCommand \tanh {} {
+ \IfLanguageName {french}{\operatorname{th}}{\__gzt_orig_tanh}%
+}
+\cs_set_eq:NN \__gzt_orig_log \log
+\cs_set_eq:NN \__gzt_orig_lg \lg
+\RenewDocumentCommand \log { s } {
+ \IfBooleanTF {#1}
+ {
+ \__gzt_orig_log
+ }
+ {
+ \ln
+ }
+}
+\RenewDocumentCommand \lg { s } {
+ \IfBooleanTF {#1}
+ {
+ \__gzt_orig_lg
+ }
+ {
+ \ln
+ }
+}
+\cs_set_eq:NN \__gzt_orig_leq \leq
+\cs_set_eq:NN \__gzt_orig_geq \geq
+\RenewDocumentCommand \le {} {%
+ \IfLanguageName {french}{\leqslant}{\__gzt_orig_leq}%
+}
+\RenewDocumentCommand \leq {} {%
+ \IfLanguageName {french}{\leqslant}{\__gzt_orig_leq}%
+}
+\RenewDocumentCommand \ge {} {%
+ \IfLanguageName {french}{\geqslant}{\__gzt_orig_geq}%
+}
+\RenewDocumentCommand \geq {} {%
+ \IfLanguageName {french}{\geqslant}{\__gzt_orig_geq}%
+}
+\NewDocumentCommand \N {} {\mathbb{N}}
+\NewDocumentCommand \Z {} {\mathbb{Z}}
+\NewDocumentCommand \D {} {\mathbb{D}}
+\NewDocumentCommand \Q {} {\mathbb{Q}}
+\NewDocumentCommand \R {} {\mathbb{R}}
+\NewDocumentCommand \C {} {\mathbb{C}}
+\NewDocumentCommand \K {} {\mathbb{K}}
+\ExplSyntaxOff
+%% ----------------------------------------------------------------------------
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% 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.3c or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Denis Bitouz'e.
+%%
+%% This work consists of the file gzt.dtx
+%% and the derived files gzt.cls,
+%% gztarticle.cls,
+%% gzt.ins,
+%% gzt.pdf,
+%% and a number of configuration files.
+%%
+%% End of file `gzt.cls'.
diff --git a/macros/latex/contrib/gzt/tex/latex/gzt/gzt.dbx b/macros/latex/contrib/gzt/tex/latex/gzt/gzt.dbx
new file mode 100644
index 0000000000..3850451c9e
--- /dev/null
+++ b/macros/latex/contrib/gzt/tex/latex/gzt/gzt.dbx
@@ -0,0 +1,243 @@
+%%
+%% This is file `gzt.dbx',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% gzt.dtx (with options: `datamodel')
+%% -----------------------------------------------------------------------------
+%% gzt --- SMF bundle of classes for the French journal "La Gazette des
+%% Math'ematiciens"
+%%
+%% 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
+%% -----------------------------------------------------------------------------
+\DeclareDatamodelFields[type=list,datatype=name]{interviewee}
+\DeclareDatamodelEntryfields[interview]{
+ interviewee,
+ author
+}
+\DeclareBibliographyDriver{interview}{%
+ \printnames{author}~interviewent~\printnames{interviewee}%
+ \usebibmacro{finentry}%
+}
+\DeclareBibliographyDriver{bookreview}{%
+ \usebibmacro{bibindex}%
+ \usebibmacro{begentry}%
+ \usebibmacro{maintitle+title}%
+ \newline\nopunct\newblock
+ \usebibmacro{author/editor+others/translator+others}%
+ \setunit{\labelnamepunct}
+ \newline\nopunct\newblock
+ \usebibmacro{byauthor}%
+ \newunit\newblock
+ \usebibmacro{byeditor+others}%
+ \newunit\newblock
+ \printfield{edition}%
+ \newunit
+ \iffieldundef{maintitle}
+ {\printfield{volume}%
+ \printfield{part}}
+ {}%
+ \newunit
+ \printfield{volumes}%
+ \newunit\newblock
+ \usebibmacro{series+number}%
+ \newunit\newblock
+ \printfield{note}%
+ \newunit\newblock
+ \usebibmacro{publisher+location+date}%
+ \newunit\newblock
+ \usebibmacro{chapter+pages}%
+ \newunit
+ \printfield{pagetotal}%
+ \newunit\newblock
+ \printlist{language}%
+ \newunit\newblock
+ \iftoggle{bbx:isbn}
+ {\printfield{isbn}}
+ {}%
+ \newunit\newblock
+ \usebibmacro{doi+eprint+url}%
+ \newunit\newblock
+ \usebibmacro{addendum+pubstate}%
+ \setunit{\bibpagerefpunct}\newblock
+ \usebibmacro{pageref}%
+ \newunit\newblock
+ \iftoggle{bbx:related}
+ {\usebibmacro{related:init}%
+ \usebibmacro{related}}
+ {}%
+ \usebibmacro{finentry}}
+\DeclareDatamodelFields[type=list,datatype=name]{reviewer}
+\DeclareDatamodelFields[type=list,datatype=literal]{reviewerinstitution}
+\DeclareDatamodelEntryfields[bookreview]{
+ reviewer,
+ reviewerinstitution
+}
+\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
+}
+\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}
+}
+%% ----------------------------------------------------------------------------
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% 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.3c or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Denis Bitouz'e.
+%%
+%% This work consists of the file gzt.dtx
+%% and the derived files gzt.cls,
+%% gztarticle.cls,
+%% gzt.ins,
+%% gzt.pdf,
+%% and a number of configuration files.
+%%
+%% End of file `gzt.dbx'.
diff --git a/macros/latex/contrib/gzt/tex/latex/gzt/gzt.lbx b/macros/latex/contrib/gzt/tex/latex/gzt/gzt.lbx
new file mode 100644
index 0000000000..4ad100fa06
--- /dev/null
+++ b/macros/latex/contrib/gzt/tex/latex/gzt/gzt.lbx
@@ -0,0 +1,44 @@
+%%
+%% This is file `gzt.lbx',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% gzt.dtx (with options: `languagemodel')
+%% -----------------------------------------------------------------------------
+%% gzt --- SMF bundle of classes for the French journal "La Gazette des
+%% Math'ematiciens"
+%%
+%% 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
+%% -----------------------------------------------------------------------------
+\ProvidesFile{gzt.lbx}
+\InheritBibliographyExtras{french}% extras are inherited from French...
+\DeclareBibliographyStrings{%
+ inherit = {french},% .... as well as all the keys
+ number = {{\no}{\no}},
+ volume = {{volume}{vol\adddot}},
+ volumes = {{volumes}{vol\adddot}},
+}
+%% ----------------------------------------------------------------------------
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% 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.3c or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Denis Bitouz'e.
+%%
+%% This work consists of the file gzt.dtx
+%% and the derived files gzt.cls,
+%% gztarticle.cls,
+%% gzt.ins,
+%% gzt.pdf,
+%% and a number of configuration files.
+%%
+%% End of file `gzt.lbx'.
diff --git a/macros/latex/contrib/gzt/tex/latex/gzt/gztarticle.cls b/macros/latex/contrib/gzt/tex/latex/gzt/gztarticle.cls
new file mode 100644
index 0000000000..78173f28dd
--- /dev/null
+++ b/macros/latex/contrib/gzt/tex/latex/gzt/gztarticle.cls
@@ -0,0 +1,3263 @@
+%%
+%% This is file `gztarticle.cls',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% gzt.dtx (with options: `class-article')
+%% -----------------------------------------------------------------------------
+%% gzt --- SMF bundle of classes for the French journal "La Gazette des
+%% Math'ematiciens"
+%%
+%% E-mail: denis.bitouze@univ-littoral.fr
+%% Released under the LaTeX Project Public License v1.3c or later
+%% See http://www.latex-project.org/lppl.txt
+%% -----------------------------------------------------------------------------
+\def\gztfileversion{1.0.1}
+\def\gztfiledate{2021-02-14}
+\RequirePackage{silence}%
+\WarningFilter{kpfonts}{With 'easyscsl' option}
+\RequirePackage{xpatch}%
+\patchcmd%
+ {\use@@tikzlibrary}%
+ {%
+ \pgfutil@InputIfFileExists{tikzlibrary\pgf@temp.code.tex}{}{
+ \pgfutil@IfFileExists{pgflibrary\pgf@temp.code.tex}{%
+ \expandafter\usepgflibrary\expandafter{\pgf@temp}%
+ }{%
+ \tikzerror{I did not find the tikz library
+ '\pgf@temp'. I looked for files named
+ tikzlibrary\pgf@temp.code.tex and
+ pgflibrary\pgf@temp.code.tex, but neither
+ could be found in the current texmf trees.}
+ }}%
+ }%
+ {%
+ \@pushfilename
+ \pgfutil@InputIfFileExists{tikzlibrary\pgf@temp.code.tex}{}{
+ \pgfutil@IfFileExists{pgflibrary\pgf@temp.code.tex}{%
+ \expandafter\usepgflibrary\expandafter{\pgf@temp}%
+ }{%
+ \tikzerror{I did not find the tikz library
+ '\pgf@temp'. I looked for files named
+ tikzlibrary\pgf@temp.code.tex and
+ pgflibrary\pgf@temp.code.tex, but neither
+ could be found in the current texmf trees.}
+ }}%
+ \@popfilename
+ }%
+ {}{}%
+\patchcmd
+ {\tcb@input@library@in}
+ {%
+ \input\tcbpkgprefix#1\relax%
+ }
+ {%
+ \@pushfilename
+ \input\tcbpkgprefix#1\relax%
+ \@popfilename
+ }
+ {}{}
+\RequirePackage{l3keys2e}
+\RequirePackage{xparse}
+\ExplSyntaxOn
+\ProvidesExplClass
+ {gztarticle}
+ {\gztfiledate}
+ {\gztfileversion}
+ {
+ SMF~class~for~the~French~journal^^J
+ "La~Gazette~des~Math'ematiciens".
+~(Author~version.)
+ }
+\NeedsTeXFormat{LaTeX2e}
+\bool_new:N \g__gzt_moral_report_bool
+\bool_new:N \g__gzt_special_edition_bool
+\bool_new:N \g__gzt_for_authors_bool
+\bool_new:N \g__gzt_for_printer_bool
+\bool_new:N \g__gzt_cover_bool
+\bool_new:N \g__gzt_coverpage_bool
+\bool_new:N \g__gzt_inside_pages_bool
+\bool_new:N \g__gzt_no_inside_backcover_bool
+\bool_gset_true:N \g__gzt_for_authors_bool%
+\bool_gset_true:N \g__gzt_inside_pages_bool%
+\tl_gset:Nn \g__gzt_moral_report_common_option_tl {%
+ \AddToHook{begindocument/before} {%
+ \bool_gset_true:N \g__gzt_moral_report_bool
+ \bool_gset_true:N \g__gzt_frontcover_without_minitoc_bool
+ \title[short={\bfseries\c__gzt_moralreport_rubric_string_tl}]{}
+ \tl_gset:Nn \g__gzt_rubric_title_tl {\c__gzt_moralreport_rubric_string_tl}
+ }
+}
+\keys_define:nn { gztarticle }
+{
+ editorial .code:n = {%
+ \AddToHook{begindocument}{%
+ \__gzt_before_display_editorial:n {}%
+ }
+ \AddToHook{enddocument}{%
+ \__gzt_after_display_editorial: {}%
+ }
+ },%
+ presidentmessage .code:n = {%
+ \AddToHook{begindocument}{%
+ \__gzt_before_display_presidentmessage: {}%
+ }
+ \AddToHook{enddocument}{%
+ \__gzt_after_display_presidentmessage: {}%
+ }
+ },%
+ moralreport .code:n = {
+ \g__gzt_moral_report_common_option_tl
+ \keys_set:nn { gztarticle / moralreport } {#1}
+ },
+ moralreport / title .code:n = {%
+ \tl_gset:Nn \g__gzt_moral_report_title_tl {#1}
+ },%
+ moralreport / short~title .code:n = {%
+ \tl_gset:Nn \g__gzt_moral_report_short_title_tl {#1}
+ },%
+}%
+\PassOptionsToClass{openany,english,french}{book}
+\LoadClass { book }
+\PassOptionsToPackage{table,cmyk}{xcolor}%
+\PassOptionsToPackage{export}{adjustbox}%
+\PassOptionsToPackage{english,french}{translator}
+\PassOptionsToPackage{english,french}{babel}
+\PassOptionsToPackage{english,french}{varioref}
+\PassOptionsToPackage{english,french}{cleveref}
+\RequirePackage[group=false]{standalone}%
+\RequirePackage{datatool}%
+\sys_if_engine_pdftex:TF
+ {
+ \RequirePackage[T1]{fontenc}
+ \RequirePackage[utf8]{inputenc}
+ }{
+ \RequirePackage{fontspec}
+ }
+\RequirePackage[sfmath,easyscsl,noDcommand]{kpfonts}
+\RequirePackage[pagestyles]{titlesec}%
+\RequirePackage{multicol}%
+\RequirePackage{graphicx}%
+\RequirePackage{longtable}%
+\RequirePackage{adjustbox}%
+\RequirePackage{mwe}
+\RequirePackage{zref-totpages}
+\RequirePackage{zref-xr}%
+\RequirePackage{ragged2e}%
+\RequirePackage{xspace}%
+\RequirePackage{textcase}%
+\RequirePackage{epigraph}%
+\RequirePackage[autostyle]{csquotes}%
+\RequirePackage[backend=biber,datamodel=gzt,defernumbers=true,autolang=other]{biblatex}%
+\@ifpackagelater{biblatex}{2016/01/01}{%
+ \ExecuteBibliographyOptions{giveninits}
+}{
+ \ExecuteBibliographyOptions{firstinits}
+}
+\RequirePackage{array}
+\RequirePackage{booktabs}
+\RequirePackage{tabularx}
+\RequirePackage{nccparskip}
+\RequirePackage{multirow}
+\RequirePackage{varioref}
+\RequirePackage{mathtools}
+\RequirePackage{rsfso}
+\RequirePackage{esvect}
+\RequirePackage{translator}%
+\RequirePackage{geometry}
+\RequirePackage{babel}%
+\RequirePackage{eurosym}%
+\RequirePackage{iflang}[2007/11/11]%
+\RequirePackage{etoc}%
+\RequirePackage[babel=true]{microtype}%
+\RequirePackage[nodayofweek]{datetime}%
+\RequirePackage[inline]{enumitem}%
+\RequirePackage{afterpage}
+\RequirePackage{xcolor}%
+\cs_set_eq:NN \__gzt_orig_preamblecmds \@preamblecmds
+\RequirePackage{tikz}
+\RequirePackage{pgfplots}
+\RequirePackage{tcolorbox}
+\RequirePackage{tikzpagenodes}
+\RequirePackage{amsthm}
+\RequirePackage{thmtools}
+\cs_set_eq:NN \@preamblecmds \__gzt_orig_preamblecmds
+\RequirePackage{placeins}%
+\RequirePackage[hidelinks,hypertexnames=false]{hyperref}%
+\RequirePackage[numbered]{bookmark}%
+\RequirePackage[nowarn]{glossaries}%
+\RequirePackage{cleveref}%
+\makeglossaries
+\setglossarystyle{indexhypergroup}
+\setacronymstyle{long-sc-short}
+\sys_if_engine_pdftex:T
+ {
+ \renewcommand\familydefault{\sfdefault}
+ \renewcommand{\ttdefault}{lmtt}
+ }
+\tl_remove_all:Nn \@preamblecmds { \do \DeclareMathOperator }
+\tl_remove_all:Nn \@preamblecmds { \do \newacronym }
+\tl_remove_all:Nn \@preamblecmds { \do \@declmathop }
+\tl_remove_all:Nn \@preamblecmds { \do \usetikzlibrary }
+\msg_new:nnnn{gzt}{issue-number-needed}{Option~`#1'~needed!}
+ {Please~specify~`#1=<number>',
+ ~otherwise~`<number>'~will~be~set~to
+ ~`\int_use:N\c__gzt_first_issue_number_int'.}
+\msg_new:nnnn{gzt}{unknown-choice}{Choice~`#3'~invalid!}
+ {Please~specify~#1=#2.}
+\int_new:N \g__gzt_editors_in_chief_int
+\int_new:N \g__gzt_item_in_rubric_int
+\int_new:N \g__gzt_articles_int
+\int_new:N \g__gzt_question_int
+\int_const:Nn \c__gzt_first_issue_number_int { 143 }
+\int_const:Nn \c__gzt_first_issue_year_int { 2015 }
+\int_const:Nn \c__gzt_first_issue_month_int { 1 }
+\int_const:Nn \c__gzt_interval_in_months_int { 3 }
+\tl_const:Nn \c__gzt_journal_short_title_string_tl {Gazette}
+\tl_const:Nn \c__gzt_journal_title_string_tl {
+ \c__gzt_journal_short_title_string_tl{}~des~Math\'ematiciens%
+}
+\tl_const:Nn \c__gzt_class_name_tl {gzt}
+\tl_const:Nn \c__gzt_article_class_name_tl {gztarticle}
+\tl_const:Nn \c__gzt_editors_in_chief_string_tl
+{
+ \int_compare:nNnTF { \g__gzt_editors_in_chief_int } > { 1 }
+ { \c__gzt_editorsinchief_string_tl }
+ { \c__gzt_editorinchief_string_tl }
+}
+\tl_const:Nn \c__gzt_editorinchief_string_tl {R\'edacteur~en~chef }
+\tl_const:Nn \c__gzt_editorsinchief_string_tl {R\'edacteurs~en~chef }
+\tl_const:Nn \c__gzt_editors_string_tl {R\'edacteurs }
+\tl_const:Nn \c__gzt_editorial_board_string_tl {Comit\'e~de~r\'edaction}
+\tl_const:Nn \c__gzt_special_edition_editorial_board_string_tl {Num\'ero~sp\'ecial~de~la~Gazette~des~Math\'ematiciens~sous~la~direction~de~:}
+\tl_const:Nn \c__gzt_editorial_secretariat_string_tl {Secr\'etariat~de~r\'edaction}
+\tl_const:Nn \c__gzt_phone_string_tl {T\'el.}
+\tl_const:Nn \c__gzt_fax_string_tl {Fax}
+\tl_const:Nn \c__gzt_informations_string_tl {Renseignements}
+\tl_const:Nn \c__gzt_publishingdirector_string_tl {Directeur~de~la~publication}
+\tl_const:Nn \c__gzt_issn_string_tl {\textsc{issn}}
+\tl_const:Nn \c__gzt_isbn_string_tl {\textsc{isbn}}
+\tl_const:Nn \c__gzt_latexclass_string_tl {Classe~\LaTeX{}}
+\tl_const:Nn \c__gzt_printer_string_tl {Impression}
+\tl_const:Nn \c__gzt_configuration_file_string_tl {gzt.cfg}
+\tl_const:Nn \c__gzt_artistic_director_string_tl {Conception~graphique}
+\AddToHook{begindocument/before}{
+ \bool_if:NTF {\g__gzt_special_edition_bool} {
+ \tl_const:Nn \c__gzt_editorial_heading_string_tl {Avant-propos}
+ }{
+ \tl_const:Nn \c__gzt_editorial_heading_string_tl {\'Editorial}
+ }
+}
+\tl_const:Nn \c__gzt_editorinchief_signatory_string_tl {\c__gzt_editorinchief_string_tl~de~la~\c__gzt_journal_title_string_tl}
+\tl_const:Nn \c__gzt_toc_string_tl {Sommaire}
+\tl_const:Nn \c__gzt_president_message_string_tl {Mot~du~pr\'esident}
+\tl_const:Nn \c__gzt_president_signatory_string_tl {pr\'esident~de~la~\g__gzt_smf_short_string_tl}
+\tl_const:Nn \c__gzt_editorinchief_message_date_string_tl {Le~\displaydate{__gzt_editorinchief_message_date}}
+\tl_const:Nn \c__gzt_president_message_date_string_tl {Le~}
+\tl_const:Nn \c__gzt_special_edition_string_tl {\c_space_tl{}sp{\'e}cial}
+\tl_const:Nn \c__gzt_long_special_edition_string_tl {Numéro\c__gzt_special_edition_string_tl}%
+\tl_const:Nn \c__gzt_short_special_edition_string_tl {\No{}\c__gzt_special_edition_string_tl}%
+\AddToHook{begindocument/before}{
+ \tl_const:Nn \c__gzt_frontcover_header_string_tl {
+ \bool_if:NT {\g__gzt_special_edition_bool} {
+ \text_uppercase:n {\c__gzt_long_special_edition_string_tl}
+ \medskip
+ \par
+ \normalsize
+ }
+ \l__gzt_uppercased_date_format\displaydate{__gzt_date}
+ \bool_if:NF {\g__gzt_special_edition_bool} {
+ \c_space_tl
+ \textendash{}
+ \c_space_tl
+ \No
+ \int_use:N\g__gzt_issue_number_int%
+ }
+ }
+}
+\clist_const:Nn \c__gzt__graphics_extensions_clist {png,PNG,jpg,JPG,jpeg,JPEG,pdf,PDF}
+\tl_const:Nn \c__gzt_pdftitle_string_tl {
+ \bool_if:NTF {\g__gzt_moral_report_bool} {
+ \c__gzt_moralreport_rubric_string_tl
+ }{
+ \c__gzt_journal_title_string_tl
+ % \c_space_tl
+ % \textendash{}
+ % \c_space_tl
+ % \l__gzt_uppercased_date_format{\displaydate{__gzt_date}}
+ \c_space_tl
+ \textendash{}
+ \c_space_tl
+ N°
+ \bool_if:NTF {\g__gzt_special_edition_bool} {
+ \c__gzt_special_edition_string_tl
+ \c_space_tl
+ \g__gzt_special_edition_title_tl
+ }{
+ \int_use:N\g__gzt_issue_number_int
+ }
+ }
+}
+\tl_const:Nn \c__gzt_frontmatter_directory_string_tl {frontmatter}
+\tl_const:Nn \c__gzt_backmatter_directory_string_tl {backmatter}
+\tl_const:Nn \c__gzt_editorial_file_string_tl {\c__gzt_frontmatter_directory_string_tl/editorial}
+\tl_const:Nn \c__gzt_president_message_file_string_tl {\c__gzt_frontmatter_directory_string_tl/presidentmessage}
+\tl_const:Nn \c__gzt_issue_path_string_tl {\int_use:N \g__gzt_issue_number_int}
+\tl_const:Nn \c__gzt_images_directory_string_tl {images}
+\tl_const:Nn \c__gzt_issue_images_path_string_tl {% \c__gzt_issue_path_string_tl/
+ \c__gzt_images_directory_string_tl}
+\tl_const:Nn \c__gzt_issue_frontcover_default_image_file_tl {frontcover}
+\tl_const:Nn \c__gzt_issue_backcover_text_file_string_tl {backcover}
+\tl_const:Nn \c__gzt_backcover_page_file_string_tl {\c__gzt_backmatter_directory_string_tl/\c__gzt_issue_backcover_text_file_string_tl}
+\tl_const:Nn \c__gzt_special_edition_backcover_text_file_string_tl {abstract_backcover}
+\tl_const:Nn \c__gzt_special_edition_backcover_page_file_string_tl {\c__gzt_backmatter_directory_string_tl/\c__gzt_special_edition_backcover_text_file_string_tl}
+\tl_const:Nn \c__gzt_special_edition_backcover_picture_string_tl {picture_backcover}
+\tl_const:Nn \c__gzt_special_edition_backcover_page_picture_string_tl {\c__gzt_backmatter_directory_string_tl/\c__gzt_special_edition_backcover_picture_string_tl}
+\tl_const:Nn \c__gzt_acronyms_file_string_tl {\c__gzt_class_name_tl acronyms}
+\tl_const:Nn \c__gzt_authors_instructions_file_extension_tl {ain}
+\tl_const:Nn \c__gzt_authors_instructions_file_tl {\c_sys_jobname_str.\c__gzt_authors_instructions_file_extension_tl}
+\tl_const:Nn \c__gzt_about_frontcover_string_tl {\`A~propos~de~la~couverture.}
+\tl_const:Nn \c__gzt_credit_frontcover_string_tl {cr\'edit}
+\tl_const:Nn \c__gzt_authors_instructions_string_tl {Instructions~aux~auteurs}
+\tl_const:Nn \c__gzt_preliminary_version_string_tl {%
+ Ce~document~est~une~{\'e}preuve~vous~permettant~de~contr{\^o}ler~l'int{\'e}grit{\'e}~du~
+ texte~d'origine~(et~de~la~bibliographie~s'il~y~en~a~une)~de~votre~article~
+ {\`a}~para{\^\i}tre~dans~le~prochain~num{\'e}ro~de~la~\gzt*{}.~La~mise~en~page~
+ actuelle~n'est~pas~d{\'e}finitive\,:~votre~article~pourra~en~particulier~ne~pas~
+ d{\'e}buter~en~haut~d'une~page.%
+}
+\tl_const:Nn \c__gzt_tellme_extra_title_string_tl {...\c_space_tl}
+\tl_const:Nn \c__gzt_minitoc_rubric_title_separator_string_tl {\c_space_tl\textendash}
+\tl_const:Nn \c__gzt_mathematics_pictogram_file_name_tl {picto-mathematics}
+\tl_const:Nn \c__gzt_dossier_pictogram_file_name_tl {picto-dossier}
+\tl_const:Nn \c__gzt_community_pictogram_file_name_tl {picto-hands}
+\tl_const:Nn \c__gzt_interview_pictogram_file_name_tl {picto-interview}
+\tl_const:Nn \c__gzt_teaching_pictogram_file_name_tl {picto-teaching}
+\tl_const:Nn \c__gzt_parity_pictogram_file_name_tl {picto-parity}
+\tl_const:Nn \c__gzt_tellme_pictogram_file_name_tl {picto-tellme}
+\tl_const:Nn \c__gzt_information_pictogram_file_name_tl {picto-information}
+\tl_const:Nn \c__gzt_rearviewmirror_pictogram_file_name_tl {picto-rearviewmirror}
+\tl_const:Nn \c__gzt_tribute_pictogram_file_name_tl {picto-tribute}
+\tl_const:Nn \c__gzt_books_pictogram_file_name_tl {picto-books}
+\tl_const:Nn \c__gzt_forum_pictogram_file_name_tl {picto-forum}
+\tl_const:Nn \c__gzt_mathematics_rubric_string_tl {Math\'ematiques}
+\tl_const:Nn \c__gzt_dossier_rubric_string_tl {Dossier}
+\tl_const:Nn \c__gzt_community_rubric_string_tl {Vie~de~la~communaut\'e}
+\tl_const:Nn \c__gzt_interview_rubric_string_tl {Entretien}
+\tl_const:Nn \c__gzt_teaching_rubric_string_tl {Diffusion~des~savoirs}
+\tl_const:Nn \c__gzt_parity_rubric_string_tl {Parit\'e}
+\tl_const:Nn \c__gzt_tellme_rubric_string_tl {Raconte-moi}
+\tl_const:Nn \c__gzt_information_rubric_string_tl {Information}
+\tl_const:Nn \c__gzt_rearviewmirror_rubric_string_tl {R\'etroviseur}
+\tl_const:Nn \c__gzt_tribute_rubric_string_tl {Carnet}
+\tl_const:Nn \c__gzt_books_rubric_string_tl {Livres}
+\tl_const:Nn \c__gzt_latex_rubric_string_tl {Astuces~\LaTeX{}}
+\tl_const:Nn \c__gzt_forum_rubric_string_tl {Tribune~libre}
+\tl_const:Nn \c__gzt_published_with_help_of_string_tl {Publi\'e~avec~le~concours~de~:}
+\tl_const:Nn \c__gzt_advertisement_directory_string_tl {advertisement/}
+\tl_const:Nn \c__gzt_advertisement_string_tl {Publicit\'e}
+\tl_const:Nn \c__gzt_moralreport_rubric_string_tl {Rapport~moral}
+\tl_const:Nn \c__gzt_smf_short_string_tl {\textsc{smf}}
+\tl_const:Nn \c__gzt_smf_short_pdf_string_tl {SMF}
+\tl_const:Nn \c__gzt_smf_string_tl {Soci\'et\'e~Math\'ematique~de~France}
+\tl_const:Nn \c__gzt_cad_short_string_tl {c.-\`a-d.}
+\tl_const:Nn \c__gzt_cad_string_tl {c'est-\`a-dire}
+\tl_const:Nn \c__gzt_Cad_short_string_tl {C.-\`a-d.}
+\tl_const:Nn \c__gzt_Cad_string_tl {C'est-\`a-dire}
+\tl_const:Nn \c__gzt_footer_string_tl {
+ \c__gzt_footer_size_font_tl
+ \textcolor{__gzt_smf_number_color}{\text_uppercase:n {\c__gzt_smf_short_string_tl}}
+ \c_space_tl
+ \textcolor{__gzt_date_color}{
+ \textendash{}\c_space_tl
+ \bool_if:NTF {\g__gzt_moral_report_bool} {
+ \text_uppercase:n { \c__gzt_moralreport_rubric_string_tl }
+ }{
+ \text_uppercase:n {\c__gzt_journal_short_title_string_tl}
+ \bool_if:nF { \g__gzt_inside_frontcover_bool || \g__gzt_backmatter_bool || {\int_compare_p:nNn {\g__gzt_issue_number_int}={0}} }
+ {
+ \c_space_tl\textendash{}\c_space_tl
+ \l__gzt_uppercased_date_format\displaydate{__gzt_date}
+ \bool_if:NF {\g__gzt_special_edition_bool} {
+ \c_space_tl
+ \textendash{}\c_space_tl
+ \textcolor{__gzt_smf_number_color}{\No\int_use:N\g__gzt_issue_number_int}
+ }
+ }
+ }
+ }
+}
+ \file_if_exist:nTF { logo_SMF.pdf }{%
+ \tl_const:Nn \c__gzt_smf_logo_file_string_tl {logo_SMF}
+ }{
+ \tl_const:Nn \c__gzt_smf_logo_file_string_tl {example-image}
+ }
+\tl_const:Nn \c__gzt_issue_bib_file_suffix_string_tl {__gzt}
+\tl_const:Nn \c__gzt_issue_bib_file_string_tl {\c_sys_jobname_str\c__gzt_issue_bib_file_suffix_string_tl.bib}
+\tl_const:Nn \c__gzt_issue_bib_path_string_tl {\c__gzt_issue_bib_file_string_tl}
+\bool_if:NTF {\g__gzt_special_edition_bool} {
+ \tl_const:Nn \c__gzt_issue_bib_key_tl {special-edition}
+}{
+ \tl_const:Nn \c__gzt_issue_bib_key_tl {\int_use:N \g__gzt_issue_number_int}
+}
+\tl_const:Nn \c__gzt_interview_title_string_tl {En~apart\'e~avec~}
+\tl_const:Nn \c__gzt_aside_string_tl {--}
+\tl_const:Nn \c__gzt_draftwatermark_string_tl {draft}
+\tl_const:Nn \c__gzt_compiled_string_tl {
+ \int_compare:nNnT {\g__gzt_issue_number_int}={0} {
+ \c__gzt_footer_size_font_tl
+ \IfLanguageName{french}{
+ Compil\'e~le~
+ }{
+ Compiled~on~
+ }
+ \today
+ }
+}
+\bool_new:N \g__gzt_frontcover_bool
+\bool_new:N \g__gzt_inside_frontcover_bool
+\bool_new:N \g__gzt_inside_backcover_bool
+\bool_new:N \g__gzt_frontmatter_bool
+\bool_new:N \g__gzt_rubric_bool
+\bool_new:N \g__gzt_interview_rubric_bool
+\bool_new:N \g__gzt_tellme_rubric_bool
+\bool_new:N \g__gzt_rearviewmirror_rubric_bool
+\bool_new:N \g__gzt_books_rubric_bool
+\bool_new:N \g__gzt_mainmatter_bool
+\bool_new:N \g__gzt_backmatter_bool
+\bool_new:N \g__gzt_backcover_bool
+\bool_new:N \g__gzt_frontcover_without_minitoc_bool
+\bool_new:N \g__gzt_previous_article_with_bibliography_or_minibio_bool
+\bool_new:N \g__gzt_advertisement_bool
+\bool_new:N \g__gzt_multicols_bool
+\bool_new:N \g__gzt_refsection_bool
+\dim_const:Nn \c__gzt_rubrics_abstract_width_dim { 85mm}
+\dim_const:Nn \c__gzt_rubrics_head_text_abstract_width_dim { 50mm}
+\dim_const:Nn \c__gzt_rubrics_head_text_no_abstract_width_dim
+{ \c__gzt_rubrics_abstract_width_dim + \c__gzt_rubrics_head_text_abstract_width_dim}
+\dim_new:N \l__gzt_rubrics_head_text_width_dim
+\dim_const:Nn \c__gzt_layoutheight_dim { 270mm}
+\dim_const:Nn \c__gzt_layoutwidth_dim { 210mm}
+\dim_const:Nn \c__gzt_printer_layoutoffset_dim { 5mm}
+\bool_if:NTF {\g__gzt_for_printer_bool} {
+ \dim_const:Nn \c__gzt_potential_layoutoffset_dim { \c__gzt_printer_layoutoffset_dim}
+}{
+ \dim_const:Nn \c__gzt_potential_layoutoffset_dim {\c_zero_dim}
+}
+\int_const:Nn \c__gzt_thresold_a_int {68}
+\int_const:Nn \c__gzt_thresold_b_int {80}
+\int_const:Nn \c__gzt_thresold_c_int {88}
+\int_const:Nn \c__gzt_thresold_d_int {96}
+\int_const:Nn \c__gzt_thresold_e_int {104}
+\int_const:Nn \c__gzt_thresold_f_int {120}
+\dim_const:Nn \c__gzt_bindingoffset_a_dim {3mm}
+\dim_const:Nn \c__gzt_bindingoffset_b_dim {3.5mm}
+\dim_const:Nn \c__gzt_bindingoffset_c_dim {3.9mm}
+\dim_const:Nn \c__gzt_bindingoffset_d_dim {4.1mm}
+\dim_const:Nn \c__gzt_bindingoffset_e_dim {4.5mm}
+\dim_const:Nn \c__gzt_bindingoffset_f_dim {5mm}
+\int_new:N \g__gzt_total_pages_number_int%
+\int_new:N \g__gzt_total_inside_pages_number_int%
+\zexternaldocument[self]{\jobname}%
+\int_gset:Nn \g__gzt_total_pages_number_int { \zref@extractdefault{selfLastPage}{abspage}{0} }
+\int_gset:Nn \g__gzt_total_inside_pages_number_int { \g__gzt_total_pages_number_int - 4 }
+\int_compare:nNnTF {\g__gzt_total_inside_pages_number_int}<{\c__gzt_thresold_a_int}
+{
+ \dim_const:Nn \c__gzt_printer_bindingoffset_dim { \c_zero_dim }
+}{
+ \int_compare:nNnTF {\g__gzt_total_inside_pages_number_int}<{\c__gzt_thresold_b_int}
+ {
+ \dim_const:Nn \c__gzt_printer_bindingoffset_dim { \c__gzt_bindingoffset_a_dim }
+ }{
+ \int_compare:nNnTF {\g__gzt_total_inside_pages_number_int}<{\c__gzt_thresold_c_int}
+ {
+ \dim_const:Nn \c__gzt_printer_bindingoffset_dim { \c__gzt_bindingoffset_b_dim }
+ }{
+ \int_compare:nNnTF {\g__gzt_total_inside_pages_number_int}<{\c__gzt_thresold_d_int}
+ {
+ \dim_const:Nn \c__gzt_printer_bindingoffset_dim { \c__gzt_bindingoffset_c_dim }
+ }{
+ \int_compare:nNnTF {\g__gzt_total_inside_pages_number_int}<{\c__gzt_thresold_e_int}
+ {
+ \dim_const:Nn \c__gzt_printer_bindingoffset_dim { \c__gzt_bindingoffset_d_dim }
+ }{
+ \int_compare:nNnTF {\g__gzt_total_inside_pages_number_int}<{\c__gzt_thresold_f_int}
+ {
+ \dim_const:Nn \c__gzt_printer_bindingoffset_dim { \c__gzt_bindingoffset_e_dim }
+ }{
+ \dim_const:Nn \c__gzt_printer_bindingoffset_dim { \c__gzt_bindingoffset_f_dim }
+ }
+ }
+ }
+ }
+ }
+}
+\bool_if:NTF {\g__gzt_cover_bool} {
+ \dim_const:Nn \c__gzt_potential_bindingoffset_dim { \c__gzt_printer_bindingoffset_dim }
+}{
+ \dim_const:Nn \c__gzt_potential_bindingoffset_dim {\c_zero_dim}
+}
+\dim_const:Nn \c__gzt_paperheight_dim { \c__gzt_layoutheight_dim+2\c__gzt_potential_layoutoffset_dim}
+\bool_if:NTF {\g__gzt_cover_bool} {
+ \dim_const:Nn \c__gzt_paperwidth_dim {
+ \c__gzt_layoutwidth_dim
+ +
+ \c__gzt_potential_layoutoffset_dim
+ +\c__gzt_potential_bindingoffset_dim
+ }
+}{
+ \dim_const:Nn \c__gzt_paperwidth_dim {
+ \c__gzt_layoutwidth_dim
+ +
+ 2
+ \c__gzt_potential_layoutoffset_dim
+ +\c__gzt_potential_bindingoffset_dim
+ }
+}
+\dim_const:Nn \c__gzt_frontcover_image_width_dim {
+ \c__gzt_layoutwidth_dim
+ +
+ \c__gzt_printer_layoutoffset_dim
+}
+\dim_const:Nn \c__gzt_topmargin_dim { 31mm}
+\dim_const:Nn \c__gzt_topmargin_frontcover_dim {
+ \c__gzt_topmargin_dim
+ + 30mm
+}
+\dim_const:Nn \c__gzt_topmargin_inside_cover_dim {
+ \c__gzt_topmargin_dim
+ +10mm
+}
+\dim_const:Nn \c__gzt_topmargin_front_matter_dim {
+ \c__gzt_topmargin_inside_cover_dim
+}
+\dim_const:Nn \c__gzt_headsep_dim { 24mm}
+\dim_const:Nn \c__gzt_headsep_frontcover_dim {
+ \c__gzt_headsep_dim
+ +31mm
+ % -\c__gzt_potential_layoutoffset_dim
+}
+\dim_const:Nn \c__gzt_headsep_inside_frontcover_dim {
+ \c__gzt_headsep_dim
+ +7mm
+}
+\dim_const:Nn \c__gzt_headsep_front_matter_dim {
+ \c__gzt_headsep_inside_frontcover_dim
+}
+\dim_const:Nn \c__gzt_headheight_dim { \c_zero_dim }
+\dim_const:Nn \c__gzt_botmargin_dim { 30mm}
+\dim_const:Nn \c__gzt_footskip_dim { 26mm}
+\dim_const:Nn \c__gzt_extra_margin_dim { 5mm }
+\dim_const:Nn \c__gzt_innermargin_dim { 15mm - \c__gzt_potential_bindingoffset_dim + \c__gzt_extra_margin_dim}
+\dim_const:Nn \c__gzt_outermargin_dim { 30mm - \c__gzt_extra_margin_dim }
+\dim_const:Nn \c__gzt_inside_cover_box_width_dim { 165mm }%
+\dim_const:Nn \c__gzt_innermargin_inside_cover_dim {
+ (\c__gzt_layoutwidth_dim - \c__gzt_inside_cover_box_width_dim)/2
+ - \c__gzt_potential_bindingoffset_dim
+ % + \c__gzt_adjustmargin_dim
+}
+\dim_const:Nn \c__gzt_outermargin_inside_cover_dim {
+ (\c__gzt_layoutwidth_dim - \c__gzt_inside_cover_box_width_dim)/2
+ % - \c__gzt_adjustmargin_dim
+}
+\dim_const:Nn \c__gzt_innermargin_backcover_dim { 10mm }
+\dim_const:Nn \c__gzt_outermargin_backcover_dim { \c__gzt_innermargin_backcover_dim }
+\dim_const:Nn \c__gzt_topmargin_backcover_dim { \c__gzt_innermargin_backcover_dim }
+\dim_const:Nn \c__gzt_bottommargin_backcover_dim { \c__gzt_innermargin_backcover_dim }
+\dim_const:Nn \c__gzt_frontcover_image_height_dim { 160mm}
+\dim_const:Nn \c__gzt_radius_arc_dim { 85mm }%
+\dim_const:Nn \c__gzt_frontmatter_headtext_xshift_dim { 19mm }%
+\dim_const:Nn \c__gzt_frontmatter_headtext_o_xshift_dim {
+ -\c__gzt_frontmatter_headtext_xshift_dim -\c__gzt_potential_layoutoffset_dim%
+}%
+\dim_const:Nn \c__gzt_frontmatter_headtext_e_xshift_dim {
+ \c__gzt_frontmatter_headtext_xshift_dim +\c__gzt_potential_layoutoffset_dim%
+}%
+\dim_const:Nn \c__gzt_frontmatter_headtext_yshift_dim { -6.5mm-\c__gzt_potential_layoutoffset_dim }%
+\dim_const:Nn \c__gzt_header_line_width_dim { 0.25mm}
+\dim_const:Nn \c__gzt_header_line_yshift_dim { -1mm-\c__gzt_header_line_width_dim}%
+\dim_const:Nn \c__gzt_footer_background_height_dim { 10mm + \c__gzt_potential_layoutoffset_dim }
+\dim_const:Nn \c__gzt_front_matter_extra_innermargin_dim { 28mm }
+\dim_const:Nn \c__gzt_front_matter_extra_outermargin_dim { 7mm }
+\dim_const:Nn \c__gzt_inside_cover_offset_dim { \c_zero_dim }%
+\dim_const:Nn \c__gzt_pictogram_width_dim { 23mm }%
+\dim_const:Nn \c__gzt_header_xshift_dim { \c__gzt_pictogram_width_dim-6mm }%
+\dim_const:Nn \c__gzt_header_yshift_dim { 5mm }%
+\dim_const:Nn \c__gzt_xshift_arccircle_A_dim { \c__gzt_rubrics_abstract_width_dim+\c__gzt_innermargin_dim+10mm+\c__gzt_potential_layoutoffset_dim }%
+\dim_const:Nn \c__gzt_yshift_arccircle_A_dim { -22mm-\c__gzt_potential_layoutoffset_dim }%
+\dim_const:Nn \c__gzt_xshift_arccircle_B_dim {%
+ (\c__gzt_rubrics_abstract_width_dim+\c__gzt_innermargin_dim)/2%
+ % \c__gzt_innermargin_dim+(\c__gzt_rubrics_abstract_width_dim/2)%
+ % \c__gzt_xshift_arccircle_A_dim/2
+}%
+\dim_const:Nn \c__gzt_yshift_arccircle_B_dim { -\c__gzt_potential_layoutoffset_dim }%
+\dim_const:Nn \c__gzt_xshift_arccircle_C_dim { \c__gzt_potential_layoutoffset_dim-5mm }%
+\dim_const:Nn \c__gzt_yshift_arccircle_C_dim { -19.75mm-\c__gzt_potential_layoutoffset_dim }%
+\dim_const:Nn \c__gzt_book_review_frontcover_extend_dim { 12mm }%
+\dim_const:Nn \c__gzt_tcb_left_dim { 4mm }%
+\dim_const:Nn \c__gzt_tcb_boxsep_dim { 1mm }%
+\dim_const:Nn \c__gzt_tikz_dot_diameter_dim { 0.33mm }%
+\dim_const:Nn \c__gzt_tikz_dot_spacing_dim { 1.05mm }%
+\dim_const:Nn \c__gzt_rubric_extra_xoffset_dim { -\c__gzt_innermargin_dim/2 }%
+\dim_const:Nn \c__gzt_rubric_xoffset_dim { 14.5mm }%
+\dim_const:Nn \c__gzt_boxed_issue_number_width_dim { 30mm}
+\dim_const:Nn \c__gzt_boxed_issue_number_height_dim { 8mm}
+\dim_new:N \l__gzt_thumbnail_width_dim
+\dim_set:Nn \l__gzt_thumbnail_width_dim {30mm}
+\dim_new:N \g__gzt_abstract_box_width_dim
+\dim_new:N \c__gzt_original_parindent_dim
+\dim_gset_eq:NN \c__gzt_original_parindent_dim \parindent
+\dim_new:N \l__gzt_between_rubric_head_text_and_abstract_dim
+\dim_new:N \g__gzt_minitoc_circle_diameter_dim
+\dim_new:N \g__gzt_minitoc_textwidth_dim
+\dim_new:N \g__gzt_minitoc_xshift_dim
+\dim_new:N \g__gzt_minitoc_yshift_dim
+\dim_gset:Nn \g__gzt_minitoc_circle_diameter_dim {142mm}
+\dim_gset:Nn \g__gzt_minitoc_textwidth_dim {65mm}
+\dim_gset:Nn \g__gzt_minitoc_xshift_dim {-22mm}
+\dim_gset:Nn \g__gzt_minitoc_yshift_dim {30mm}
+\dim_const:Nn \c__gzt_minitoc_from_circle_xshift_dim {-15mm}
+\dim_const:Nn \c__gzt_minitoc_from_circle_yshift_dim {-\c__gzt_minitoc_from_circle_xshift_dim}
+\dim_const:Nn \c__gzt_footer_height_font_dim {3mm}
+\dim_const:Nn \c__gzt_minitoc_list_labelsep_dim {1em}
+\dim_const:Nn \c__gzt_authors_photos_width_dim {16mm}
+\dim_const:Nn \c__gzt_authors_photos_box_width_dim {\c__gzt_authors_photos_width_dim
+ + 2mm}
+\dim_new:N \l__gzt_minibio_width_dim
+\geometry{%
+ papersize={\c__gzt_paperwidth_dim,\c__gzt_paperheight_dim}
+}
+\bool_if:NTF {\g__gzt_cover_bool} {
+ \tl_const:Nn \c__gzt_frontcover_geometry_tl {%
+ ,layoutsize={\c__gzt_layoutwidth_dim,\c__gzt_layoutheight_dim}
+ ,layoutvoffset=\c__gzt_potential_layoutoffset_dim
+ ,bindingoffset=\c__gzt_potential_bindingoffset_dim
+ ,top=\c__gzt_topmargin_frontcover_dim
+ ,headsep=\c__gzt_headsep_frontcover_dim
+ ,headheight=\c__gzt_headheight_dim
+ % ,bottom=\c_zero_dim
+ ,bottom=11mm
+ ,footskip=\c_zero_dim
+ ,outer=\c_zero_dim
+ ,inner=\c__gzt_potential_layoutoffset_dim
+ ,nomarginpar%
+ }%
+}{
+ \tl_const:Nn \c__gzt_frontcover_geometry_tl {%
+ ,layoutsize={\c__gzt_layoutwidth_dim,\c__gzt_layoutheight_dim}
+ ,layoutoffset=\c__gzt_potential_layoutoffset_dim
+ ,bindingoffset=\c__gzt_potential_bindingoffset_dim
+ ,top=\c__gzt_topmargin_frontcover_dim
+ ,headsep=\c__gzt_headsep_frontcover_dim
+ ,headheight=\c__gzt_headheight_dim
+ % ,bottom=\c_zero_dim
+ ,bottom=11mm
+ ,footskip=\c_zero_dim
+ ,hmargin=\c__gzt_potential_layoutoffset_dim
+ ,nomarginpar%
+ }%
+}
+\bool_if:NTF {\g__gzt_cover_bool} {
+ \tl_const:Nn \c__gzt_inside_cover_geometry_tl {%
+ ,layoutsize={\c__gzt_layoutwidth_dim,\c__gzt_layoutheight_dim}
+ ,layoutvoffset=\c__gzt_potential_layoutoffset_dim
+ ,bindingoffset=\c__gzt_potential_bindingoffset_dim
+ ,top=\c__gzt_topmargin_inside_cover_dim
+ ,headheight=\c__gzt_headheight_dim
+ ,headsep=\c__gzt_headsep_inside_frontcover_dim
+ ,bottom=\c__gzt_botmargin_dim
+ ,footskip=\c__gzt_footskip_dim
+ ,inner=\c__gzt_innermargin_inside_cover_dim-\c__gzt_potential_layoutoffset_dim
+ ,outer=\c__gzt_outermargin_inside_cover_dim+\c__gzt_potential_layoutoffset_dim
+ ,nomarginpar%
+ }%
+}{
+ \tl_const:Nn \c__gzt_inside_cover_geometry_tl {%
+ ,layoutsize={\c__gzt_layoutwidth_dim,\c__gzt_layoutheight_dim}
+ ,layoutoffset=\c__gzt_potential_layoutoffset_dim
+ ,bindingoffset=\c__gzt_potential_bindingoffset_dim
+ ,top=\c__gzt_topmargin_inside_cover_dim
+ ,headheight=\c__gzt_headheight_dim
+ ,headsep=\c__gzt_headsep_inside_frontcover_dim
+ ,bottom=\c__gzt_botmargin_dim
+ ,footskip=\c__gzt_footskip_dim
+ ,inner=\c__gzt_innermargin_inside_cover_dim
+ ,outer=\c__gzt_outermargin_inside_cover_dim
+ ,nomarginpar%
+ }%
+}
+\tl_const:Nn \c__gzt_front_matter_geometry_tl {%
+ ,layoutsize={\c__gzt_layoutwidth_dim,\c__gzt_layoutheight_dim}
+ ,layoutoffset=\c__gzt_potential_layoutoffset_dim
+ % ,bindingoffset=\c__gzt_potential_bindingoffset_dim
+ ,top=\c__gzt_topmargin_front_matter_dim%
+ ,headheight=\c__gzt_headheight_dim
+ ,headsep=\c__gzt_headsep_front_matter_dim
+ ,bottom=\c__gzt_botmargin_dim
+ ,footskip=\c__gzt_footskip_dim%
+ ,inner=\c__gzt_innermargin_dim+\c__gzt_front_matter_extra_innermargin_dim%
+ ,outer=\c__gzt_outermargin_dim+\c__gzt_front_matter_extra_outermargin_dim%
+ ,nomarginpar%
+}%
+\tl_const:Nn \c__gzt_main_geometry_tl {%
+ ,layoutsize={\c__gzt_layoutwidth_dim,\c__gzt_layoutheight_dim}
+ ,layoutoffset=\c__gzt_potential_layoutoffset_dim
+ % ,bindingoffset=\c__gzt_potential_bindingoffset_dim
+ ,top=\c__gzt_topmargin_dim-15mm%
+ ,headheight=\c__gzt_headheight_dim
+ ,headsep=\c__gzt_headsep_dim-18mm
+ ,bottom=\c__gzt_botmargin_dim
+ ,footskip=\c__gzt_footskip_dim
+ ,inner=\c__gzt_innermargin_dim
+ ,outer=\c__gzt_outermargin_dim
+}%
+\tl_const:Nn \c__gzt_backcover_geometry_tl {%
+ ,layoutsize={\c__gzt_layoutwidth_dim,\c__gzt_layoutheight_dim}
+ ,layoutoffset=\c__gzt_potential_layoutoffset_dim
+ % ,bindingoffset=\c__gzt_potential_bindingoffset_dim
+ ,top=\c__gzt_topmargin_backcover_dim%
+ % ,top=\c__gzt_topmargin_dim-15mm%
+ % ,headheight=\c__gzt_headheight_dim
+ % ,headsep=\c__gzt_headsep_dim-18mm
+ ,bottom=\c__gzt_bottommargin_backcover_dim
+ % ,footskip=\c__gzt_footskip_dim
+ ,inner=\c__gzt_innermargin_backcover_dim
+ ,outer=\c__gzt_outermargin_backcover_dim
+ ,nomarginpar
+ ,hcentering
+ ,twoside=false
+}
+\skip_const:Nn \c__gzt_editorial_presidentmessage_parskip_skip { 12pt plus 2pt minus .8pt }%
+\skip_const:Nn \c__gzt_mainmatter_parskip_skip { 2pt plus .5pt minus .2pt }%
+\int_new:N \g__gzt_issue_number_int
+\int_new:N \g__gzt_issue_month_int
+\int_new:N \g__gzt_issue_year_int
+\tl_new:N \g__gzt_frontcover_image_options_tl
+\keys_define:nn { gzt/issuesetup }
+{
+ number .int_gset:N = \g__gzt_issue_number_int,
+ month .int_gset:N = \g__gzt_issue_month_int,
+ year .int_gset:N = \g__gzt_issue_year_int,
+ number .value_required:n = true,
+ month .value_required:n = true,
+ year .value_required:n = true,
+ number .initial:n = 0,
+ frontcoverimageoptions .tl_gset:N = \g__gzt_frontcover_image_options_tl
+}
+\tl_new:N \l__gzt_journal_publisher_tl
+\tl_new:N \l__gzt_journal_address_tl
+\tl_new:N \l__gzt_journal_phone_tl
+\tl_new:N \l__gzt_journal_fax_tl
+\tl_new:N \l__gzt_journal_email_tl
+\tl_new:N \l__gzt_journal_url_tl
+\tl_new:N \l__gzt_journal_issn_tl
+\tl_new:N \l__gzt_journal_isbn_tl
+\keys_define:nn { gzt/journalsetup }
+{
+ publisher .tl_set:N = \l__gzt_journal_publisher_tl,
+ address .tl_set:N = \l__gzt_journal_address_tl,
+ phone .tl_set:N = \l__gzt_journal_phone_tl,
+ fax .tl_set:N = \l__gzt_journal_fax_tl,
+ email .tl_set:N = \l__gzt_journal_email_tl,
+ url .tl_set:N = \l__gzt_journal_url_tl,
+ issn .tl_set:N = \l__gzt_journal_issn_tl,
+ isbn .tl_set:N = \l__gzt_journal_isbn_tl,
+ publisher .value_required: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,
+}
+\keys_define:nn { gzt/title }
+{
+ short .tl_gset:N = \g__gzt_short_title_tl,
+ minishort .tl_gset:N = \g__gzt_mini_short_title_tl,
+ notintoc .bool_gset:N = \g__gzt_title_not_in_toc_bool,
+ short .value_required:n = true,
+ minishort .value_required:n = true,
+}
+\keys_define:nn { gzt/subtitle }
+{
+ short .tl_gset:N = \g__gzt_short_subtitle_tl,
+ minishort .tl_gset:N = \g__gzt_mini_short_subtitle_tl,
+ notintoc .bool_gset:N = \g__gzt_subtitle_not_in_toc_bool,
+ short .value_required:n = true,
+ minishort .value_required:n = true,
+}
+\keys_define:nn { gzt/rubric }
+{
+ abstract .tl_gset:N = \g__gzt_rubric_abstract_tl,
+ title .tl_gset:N = \g__gzt_rubric_title_tl,
+ pictogram .tl_gset:N = \g__gzt_rubric_pictofile_tl,
+ abstract .value_required:n = true,
+ title .value_required:n = true,
+ pictogram .value_required:n = true,
+}
+\keys_define:nn { gzt/minitoc }
+{
+ list .bool_gset:N = \g__gzt_minitoc_list_bool,
+ help .bool_gset:N = \g__gzt_minitoc_help_bool,
+ diameter .dim_gset:N = \g__gzt_minitoc_circle_diameter_dim,
+ textwidth .dim_gset:N = \g__gzt_minitoc_textwidth_dim,
+ xshift .dim_gset:N = \g__gzt_minitoc_xshift_dim,
+ yshift .dim_gset:N = \g__gzt_minitoc_yshift_dim,
+ diameter .value_required:n = true,
+ textwidth .value_required:n = true,
+ xshift .value_required:n = true,
+ yshift .value_required:n = true,
+}
+\keys_define:nn { gzt/authors }
+{
+ affiliation .tl_gset:N = \g__gzt_people_affiliation_tl,
+ email .tl_gset:N = \g__gzt_people_email_tl,
+ minibio .tl_gset:N = \g__gzt_people_minibio_tl,
+ photo .tl_gset:N = \g__gzt_people_photo_tl,
+ webpage .tl_gset:N = \g__gzt_people_webpage_tl,
+ affiliation .value_required:n = true,
+ email .value_required:n = true,
+ minibio .value_required:n = true,
+ photo .value_required:n = true,
+ webpage .value_required:n = true,
+}
+\tl_new:N \g__gzt_interviewee_minibio_tl
+\tl_new:N \g__gzt_interviewee_photo_tl
+\tl_new:N \g__gzt_interviewee_first_last_name_tl
+\keys_define:nn { gzt/interviewees }
+{
+ minibio .tl_gset:N = \g__gzt_interviewee_minibio_tl,
+ photo .tl_gset:N = \g__gzt_interviewee_photo_tl,
+ minibio .value_required:n = true,
+ photo .value_required:n = true,
+}
+\tl_new:N \g__gzt_bookreview_frontcover_tl
+\tl_new:N \g__gzt_bookreview_bibkey_tl
+\keys_define:nn { gzt/bookreview }
+{
+ frontcover .tl_gset:N = \g__gzt_bookreview_frontcover_tl,
+ bibkey .tl_gset:N = \g__gzt_bookreview_bibkey_tl,
+ frontcover .value_required:n = true,
+ bibkey .value_required:n = true,
+}
+\tl_new:N \g__gzt_bookadvertisement_frontcover_tl
+\tl_new:N \g__gzt_bookadvertisement_bibkey_tl
+\keys_define:nn { gzt/bookadvertisement }
+{
+ frontcover .tl_gset:N = \g__gzt_bookadvertisement_frontcover_tl,
+ bibkey .tl_gset:N = \g__gzt_bookadvertisement_bibkey_tl,
+ frontcover .value_required:n = true,
+ bibkey .value_required:n = true,
+}
+\tl_new:N \l__gzt_newtheorem_style_tl
+\keys_define:nn { gzt/newtheorem }
+{
+ frenchtitle .tl_set:N = \l__gzt_newtheorem_frenchtitle_tl,
+ englishtitle .tl_set:N = \l__gzt_newtheorem_englishtitle_tl,
+ frenchtitle .value_required:n = true,
+ englishtitle .value_required:n = true,
+ %
+ style .choice:,
+ style / theorem .code:n = {\tl_set:Nn \l__gzt_newtheorem_style_tl {theorem}},
+ style / definition .code:n = {\tl_set:Nn \l__gzt_newtheorem_style_tl {definition}},
+ style / proof .code:n = {\tl_set:Nn \l__gzt_newtheorem_style_tl {proof}},
+ style / unknown .code:n =
+ \msg_error:nnxxx { gzt } { unknown-choice }
+ { style } % Name of choice key
+ { theorem~or~definition~or~proof } % Valid choices
+ { \exp_not:n {#1} } % Invalid choice given
+}
+\definecolorset{cmyk}{__gzt_}{_color}{
+ generic_dark,1,.60,.10,0; % kind of blue (!)
+ light_generic_dark,1,.35,0,0 % kind of blue (!), light
+}
+\colorlet{__gzt_generic_light_color}{black!50}
+\colorlet{__gzt_dark_generic_light_color}{black!60}
+\colorlet{__gzt_description_label_light_color}{__gzt_dark_generic_light_color}
+\colorlet{__gzt_minitoc_color}{__gzt_generic_light_color}
+\colorlet{__gzt_cover_itemize_label_color}{__gzt_light_generic_dark_color}
+\colorlet{__gzt_default_text_color}{black}
+\colorlet{__gzt_head_text_color}{black!65}
+\colorlet{__gzt_rubric_head_text_color}{__gzt_head_text_color}
+\colorlet{__gzt_bibliography_minibios_acknowledgements_bg_color}{black!10}
+\colorlet{__gzt_headrule_color}{__gzt_generic_light_color!65}
+\colorlet{__gzt_circlerule_color}{__gzt_generic_dark_color!65}
+\colorlet{__gzt_frontmatter_text_color}{black!75}
+\colorlet{__gzt_people_color}{__gzt_generic_dark_color}
+\colorlet{__gzt_arrayrule_color}{__gzt_generic_dark_color}
+\colorlet{__gzt_acknowledgements_color}{__gzt_generic_dark_color}
+\colorlet{__gzt_question_color}{__gzt_generic_dark_color}
+\colorlet{__gzt_boxed_issue_number_bg_color}{__gzt_generic_dark_color}
+\colorlet{__gzt_rule_in_toc_color}{__gzt_generic_dark_color}
+\colorlet{__gzt_rubric_in_toc_color}{__gzt_generic_dark_color}
+\colorlet{__gzt_article_in_toc_color}{__gzt_frontmatter_text_color}
+\colorlet{__gzt_rubric_title_color}{__gzt_generic_light_color}
+\colorlet{__gzt_article_title_color}{__gzt_generic_dark_color}
+\colorlet{__gzt_section_color}{__gzt_generic_dark_color}
+\colorlet{__gzt_subsection_color}{__gzt_generic_dark_color!90}
+\colorlet{__gzt_subsubsection_color}{__gzt_generic_dark_color!80}
+\colorlet{__gzt_rubric_abstract_color}{__gzt_generic_dark_color}
+\colorlet{__gzt_article_abstract_color}{__gzt_generic_light_color}
+\colorlet{__gzt_dotfill_color}{__gzt_generic_dark_color}
+\colorlet{__gzt_about_frontcover_title_color}{__gzt_generic_dark_color}
+\colorlet{__gzt_reflected_text_color}{__gzt_generic_dark_color}
+\colorlet{__gzt_inside_frontcover_frame_bg_color}{__gzt_generic_dark_color!8}
+\colorlet{__gzt_inside_frontcover_frame_title_color}{__gzt_generic_dark_color}
+\colorlet{__gzt_footer_bg_color}{black!10}
+\colorlet{__gzt_float_title_color}{__gzt_generic_dark_color}
+\colorlet{__gzt_float_title_bg_color}{__gzt_generic_dark_color!10}
+\colorlet{__gzt_float_frame_color}{__gzt_generic_dark_color!20}
+\colorlet{__gzt_chapter_color}{__gzt_generic_dark_color}
+\colorlet{__gzt_smf_number_color}{__gzt_generic_dark_color}
+\colorlet{__gzt_date_color}{__gzt_generic_light_color}
+\colorlet{__gzt_table_head_color}{__gzt_generic_dark_color!25}
+\colorlet{__gzt_book_review_frame_bg_color}{__gzt_generic_dark_color!8}
+\colorlet{__gzt_book_advertisement_bg_color}{white}
+\colorlet{__gzt_book_advertisement_frame_color}{__gzt_generic_dark_color}
+\colorlet{__gzt_default_cover_color}{white}
+\AddToHook{env/multicols/begin}{
+ \bool_gset_true:N \g__gzt_multicols_bool
+}
+\AddToHook{env/multicols/end}{
+ \bool_gset_false:N \g__gzt_multicols_bool
+}
+\AddToHook{env/refsection/begin}{
+ \bool_gset_true:N \g__gzt_refsection_bool
+}
+\AddToHook{env/refsection/end}{
+ \bool_gset_false:N \g__gzt_refsection_bool
+}
+\tl_const:Nn \c__gzt_footer_size_font_tl {
+ \fontsize{\c__gzt_footer_height_font_dim}{\c_zero_dim}\selectfont%
+}
+\tl_new:N \g__gzt_smf_short_string_tl
+\tl_new:N \g__gzt_smf_string_tl
+\tl_gset:Nn \g__gzt_smf_short_string_tl {
+ % \cs_if_exist:cTF {texorpdfstring}
+ % {
+ \texorpdfstring{\c__gzt_smf_short_string_tl}{\c__gzt_smf_short_pdf_string_tl}
+ % }{%
+ % \c__gzt_smf_short_pdf_string_tl
+ % }%
+}
+\tl_gset:Nn \g__gzt_smf_string_tl {
+ % \cs_if_exist:cTF {texorpdfstring}
+ % {
+ % \texorpdfstring{Soci\'et\'e~Math\'ematique~de~France}{\c__gzt_smf_string_tl}
+ \c__gzt_smf_string_tl
+ % }{%
+ % \acrlong*{smf}
+ % }%
+}
+\tl_new:N \l__gzt_gzt_short_string_tl
+\tl_new:N \l__gzt_gzt_string_tl
+\tl_set:Nn \l__gzt_gzt_short_string_tl {
+ \cs_if_exist:cTF {texorpdfstring}
+ {
+ \texorpdfstring{\emph{\c__gzt_journal_short_title_string_tl}}{\c__gzt_journal_short_title_string_tl}
+ }{%
+ \emph{\c__gzt_journal_short_title_string_tl}
+ }%
+}
+\tl_set:Nn \l__gzt_gzt_string_tl {
+ \cs_if_exist:cTF {texorpdfstring}
+ {
+ \texorpdfstring{\emph{\c__gzt_journal_title_string_tl}}{\c__gzt_journal_title_string_tl}
+ }{%
+ \emph{\c__gzt_journal_title_string_tl}
+ }%
+}
+\tl_new:N \g__gzt_pdftitle_string_tl
+\tl_new:N \g__gzt_pdfauthor_string_tl
+\tl_gset:Nn \g__gzt_pdftitle_string_tl {
+ \c__gzt_pdftitle_string_tl
+}
+\tl_gset:Nn \g__gzt_pdfauthor_string_tl {
+ \g__gzt_smf_string_tl
+}
+\AddToHook{begindocument/before}{%
+ \hypersetup{%
+ pdftitle=\g__gzt_pdftitle_string_tl,
+ pdfauthor=\g__gzt_pdfauthor_string_tl%
+ }
+}
+\cs_new_protected:Nn \__gzt_email:n
+ {
+ \href{mailto:#1}{\nolinkurl{#1}}%
+ }
+\cs_new_protected:Nn \__gzt_display_author:nnnnn
+{
+ \begin{tabular}[t]{p{\c__gzt_authors_photos_box_width_dim}p{0.75\linewidth}}
+ \tl_if_empty:nF {#5}
+ {%
+ \begin{adjustbox}{valign=t}
+ \includegraphics[width=\c__gzt_authors_photos_width_dim]{#5}
+ \end{adjustbox}%
+ }
+ &
+ \begin{description}[leftmargin=1em,style=nextline,nosep]
+ \item[\textcolor{__gzt_people_color}{\DeclareNameAlias{labelname}{default}\citeauthor{#1}}]
+ \tl_if_empty:nF {#2}
+ {%
+ #2%
+ \par%
+ \smallskip%
+ }
+ \tl_if_empty:nF {#3}
+ {%
+ \href{mailto:#3}{\nolinkurl{#3}}%
+ \par%
+ \smallskip%
+ }
+ \tl_if_empty:nF {#4}
+ {%
+ #4
+ }
+ \end{description}
+ \end{tabular}
+}
+\cs_generate_variant:Nn \__gzt_display_author:nnnnn { VVVVV }
+\DTLnewdb{people}
+\tl_new:N \l__gzt_crossref_tl
+\cs_new_protected:Nn \__gzt_people:nnnnnnnn
+{
+ \DTLnewrow{people}%
+ \DTLnewdbentry{people}{first-last-name}{#1}%
+ \DTLnewdbentry{people}{affiliation}{#2}%
+ \DTLnewdbentry{people}{email}{#3}%
+ \DTLnewdbentry{people}{minibio}{#4}%
+ \DTLnewdbentry{people}{photo}{#5}%
+ \DTLnewdbentry{people}{speciality}{#6}%
+ \DTLnewdbentry{people}{role}{#7}%
+ \DTLnewdbentry{people}{webpage}{#8}%
+ \int_if_exist:cF {g__gzt_#7_int}
+ {
+ \int_new:c {g__gzt_#7_int}
+ }
+ \int_incr:c {g__gzt_#7_int}
+ \tl_if_in:nnTF { #7 } { author } {
+ \tl_set:Nn \l__gzt_crossref_tl {\c__gzt_issue_bib_key_tl -art-\int_use:N \g__gzt_articles_int}
+ } {
+ \tl_set:Nn \l__gzt_crossref_tl {\c__gzt_issue_bib_key_tl}
+ }
+ \tl_set:Nn \l__gzt_people_first_last_name_tl {#1}
+ \iow_now:Nx \g__gzt_bib_out_iow {%
+ @article{
+ \c__gzt_issue_bib_key_tl -#7- \int_use:c {g__gzt_#7_int},
+ \iow_newline:
+ author={\exp_not:V\l__gzt_people_first_last_name_tl},
+ \iow_newline:
+ options={skipbib},
+ \iow_newline:
+ crossref = {\l__gzt_crossref_tl}
+ \iow_newline:
+ }
+ \iow_newline:
+ }%
+}
+\cs_generate_variant:Nn \__gzt_people:nnnnnnnn { nVVVVnxV }
+\cs_new_protected:Nn \__gzt_display_academic_signature:n
+{
+ \bigskip
+ \begin{__gzt_minibiographies_acknowledgements_tcbox}
+ #1
+ \end{__gzt_minibiographies_acknowledgements_tcbox}
+}
+\cs_new_protected:Nn \__gzt_display_people_by_role:n
+{
+ \DTLforeach*[\DTLiseq{\l__gzt_people_role_tl}{#1}]{people}{%
+ \l__gzt_firstlastname_tl=first-last-name%
+ ,\l__gzt_people_affiliation_tl=affiliation%
+ ,\l__gzt_people_email_tl=email%
+ ,\l__gzt_people_minibio_tl=minibio%
+ ,\l__gzt_people_photo_tl=photo%
+ ,\l__gzt_people_speciality=speciality%
+ ,\l__gzt_people_role_tl=role%
+ ,\l__gzt_people_webpage_tl=webpage%
+ }{%
+ \tl_if_in:NnTF \l__gzt_people_role_tl { editor } {
+ \item[
+ \textcolor{__gzt_people_color}{%
+ \__gzt_citeauthor_no_firstinits:n {\c__gzt_issue_bib_key_tl -#1- \exp_not:V\DTLcurrentindex}%
+ }
+ \tl_if_in:NnF \l__gzt_people_speciality { NoValue } { ~(\l__gzt_people_speciality) }
+ ]
+ \leavevmode
+ \vbox_top:n {%
+ \l__gzt_people_affiliation_tl%
+ \newline%
+ \href{mailto:\l__gzt_people_email_tl}{\nolinkurl{\l__gzt_people_email_tl}}%
+ }
+ \medskip%
+ }{
+ \tl_if_in:NnTF \l__gzt_people_role_tl { author } {
+ \tl_if_empty:NF \l__gzt_firstlastname_tl {
+ \footnotesize%
+ % \noindent%
+ \DTLiffirstrow{%
+ }{
+ \DTLpar%
+ \medskip%
+ }
+ \dim_set:Nn \l__gzt_minibio_width_dim {\linewidth-1em - \c__gzt_authors_photos_box_width_dim}
+ \tl_if_empty:NTF \l__gzt_people_photo_tl
+ {%
+ \dim_add:Nn \l__gzt_minibio_width_dim {\c__gzt_authors_photos_box_width_dim}
+ }{%
+ \begin{adjustbox}{valign=t,minipage=\c__gzt_authors_photos_box_width_dim}
+ \includegraphics[width=\c__gzt_authors_photos_width_dim]{\l__gzt_people_photo_tl}
+ \end{adjustbox}%
+ \quad%
+ }
+ \begin{adjustbox}{valign=t,minipage=\l__gzt_minibio_width_dim}
+ \begin{description}[leftmargin=1em,style=nextline]
+ \item[%
+ \textcolor{__gzt_people_color}{%
+ \__gzt_citeauthor_no_firstinits:n {\c__gzt_issue_bib_key_tl -#1- \exp_not:V\DTLcurrentindex}%
+ }%
+ ]
+ \tl_if_empty:NF \l__gzt_people_affiliation_tl
+ {%
+ \mbox{}%
+ \par%
+ \vspace{-2ex}%
+ \l__gzt_people_affiliation_tl%
+ }
+ \tl_if_empty:NF \l__gzt_people_email_tl
+ {%
+ \par%
+ \href{mailto:\l__gzt_people_email_tl}{\nolinkurl{\l__gzt_people_email_tl}}%
+ }
+ \tl_if_empty:NF \l__gzt_people_webpage_tl
+ {%
+ \par%
+ \url{\l__gzt_people_webpage_tl}%
+ }
+ \tl_if_empty:NF \l__gzt_people_minibio_tl
+ {%
+ \par%
+ \smallskip%
+ \l__gzt_people_minibio_tl
+ }
+ \end{description}
+ \end{adjustbox}
+ }
+ }{
+ \__gzt_citeauthor_no_firstinits:n {\c__gzt_issue_bib_key_tl -#1-
+ \exp_not:V\DTLcurrentindex}%
+ \tl_if_empty:NF \l__gzt_people_email_tl
+ {
+ \c_space_tl(\href{mailto:\l__gzt_people_email_tl}{\nolinkurl{\l__gzt_people_email_tl}})
+ }
+ }
+ }
+ }
+}
+\cs_new_protected:Nn \__gzt_reflected_text:n
+{
+ \begin{tikzpicture}
+ \tikzset{__gzt_reflect_node/.style={%
+ anchor=base,%
+ inner~sep=0,%
+ line~width=0,%
+ font=\Huge,
+ color=__gzt_reflected_text_color%
+ }%
+ }%
+ \node[__gzt_reflect_node]{#1};
+ \node[scope~fading=south,opacity=0.2,yscale=-1,__gzt_reflect_node]{#1};
+ \end{tikzpicture}
+}
+\tl_new:N \g__gzt_display_frontcover_tl%
+\tl_gset:Nn \g__gzt_display_frontcover_tl {%
+ \bool_gset_true:N \g__gzt_frontcover_bool
+ \pagenumbering{roman}%
+ \pagestyle{__gzt_frontcover_ps}%
+ \pagecolor{\g__gzt_special_edition_color_tl}
+ \exp_after:wN\newgeometry\exp_after:wN{\c__gzt_frontcover_geometry_tl}%
+ \noindent%
+ \bool_if:NTF {\g__gzt_cover_bool} {
+ \hspace*{-\c__gzt_potential_layoutoffset_dim}
+ }{
+ \hspace*{-2\c__gzt_potential_layoutoffset_dim}
+ }
+ \exp_after:wN\includegraphics\exp_after:wN[\g__gzt_frontcover_image_options_tl]{\g__gzt_frontcover_image_file_tl}
+ \begin{tikzpicture}[remember~picture, overlay]
+ \coordinate (__gzt_circle_minitoc_center) at
+ ([xshift=\g__gzt_minitoc_xshift_dim-\c__gzt_potential_layoutoffset_dim,yshift=\g__gzt_minitoc_yshift_dim+\c__gzt_potential_layoutoffset_dim]current~page.south~east) ;
+ \node[name=__gzt_circle_minitoc,shape=circle,inner~sep=\c_zero_dim,fill=\g__gzt_special_edition_color_tl,text~width=\g__gzt_minitoc_circle_diameter_dim] at
+ (__gzt_circle_minitoc_center) {};
+ \node[text~width=\g__gzt_minitoc_textwidth_dim,anchor=north~west] at
+ ([xshift=\c__gzt_minitoc_from_circle_xshift_dim,yshift=\c__gzt_minitoc_from_circle_yshift_dim]$ (__gzt_circle_minitoc.north)!.5!(__gzt_circle_minitoc.west) $)
+ {
+ \bool_if:NF {\g__gzt_frontcover_without_minitoc_bool} {
+ \large
+ \color{__gzt_minitoc_color}
+ \g__gzt_frontcover_minitoc_tl
+ }
+ };
+ \bool_if:NT {\g__gzt_minitoc_help_bool} {
+ \fill[red] (__gzt_circle_minitoc_center) circle (2pt);
+ }
+ \end{tikzpicture}
+ \bool_if:NT {\g__gzt_cover_bool} {
+ \small
+ \begin{tikzpicture}[remember~picture, overlay]
+ \node[name=__gzt_binding_sw,inner~sep=\c_zero_dim,fill=\g__gzt_special_edition_color_tl,rotate=90,anchor=west] at
+ ([xshift=0.45\c__gzt_potential_bindingoffset_dim,yshift=15mm+\c__gzt_potential_layoutoffset_dim]current~page.south~west) {
+ \No
+ \bool_if:NTF {\g__gzt_special_edition_bool} {
+ \c__gzt_special_edition_string_tl
+ }{
+ \int_use:N\g__gzt_issue_number_int
+ }
+ };
+ \node[name=__gzt_binding_w,inner~sep=\c_zero_dim,fill=\g__gzt_special_edition_color_tl,rotate=90] at
+ ([xshift=0.45\c__gzt_potential_bindingoffset_dim]current~page.west) {
+ \bool_if:NTF {\g__gzt_special_edition_bool} {
+ \tl_if_exist:NTF \g__gzt_special_edition_short_title_tl {%
+ \g__gzt_special_edition_short_title_tl
+ }{
+ \g__gzt_special_edition_title_tl
+ }
+ }{
+ \text_uppercase:n {\c__gzt_journal_title_string_tl}
+ }
+ };
+ \node[name=__gzt_binding_nw,inner~sep=\c_zero_dim,fill=\g__gzt_special_edition_color_tl,rotate=90,anchor=east] at
+ ([xshift=0.45\c__gzt_potential_bindingoffset_dim,yshift=-15mm-\c__gzt_potential_layoutoffset_dim]current~page.north~west) {
+ \l__gzt_uppercased_date_format\displaydate{__gzt_date}
+ };
+ \end{tikzpicture}
+ }
+ \vfill%
+ \noindent%
+ \hspace*{10mm}%
+ \hspace*{-\c__gzt_potential_layoutoffset_dim}
+ \includegraphics[height=22.5mm]{\c__gzt_smf_logo_file_string_tl}%
+ \bool_if:NT {\g__gzt_special_edition_bool} {
+ \hfill
+ \includegraphics[scale=1.2]{gzt-logo}
+ \hspace*{10mm}
+ }
+ % \vfill%
+ \clearpage%
+ \bool_gset_false:N \g__gzt_frontcover_bool
+ \nopagecolor
+}
+\tl_new:N \g__gzt_display_inside_frontcover_tl%
+\tl_gset:Nn \g__gzt_display_inside_frontcover_tl {%
+ \bool_gset_true:N \g__gzt_inside_frontcover_bool%
+ \pagestyle{__gzt_inside_frontcover_ps}%
+ \exp_after:wN\newgeometry\exp_after:wN{\c__gzt_inside_cover_geometry_tl}%
+ \small%
+ \setlength{\columnseprule}{2pt}
+ \renewcommand{\columnseprulecolor}{\color{white}}
+ \begin{__gzt_inside_cover_tcb}[__gzt_tcb_inside_frontcover_style]
+ \begin{multicols}{2}
+ \setlength{\columnsep}{1mm}
+ \bool_if:NTF {\g__gzt_special_edition_bool} {
+ \begin{description}[leftmargin=1em,style=nextline,labelindent=\c_zero_dim]
+ \__gzt_display_people_by_role:n {editor}
+ \end{description}
+ }{%
+ \begin{description}[leftmargin=1em]
+ \item[\c__gzt_editors_in_chief_string_tl] \
+ \begin{description}[leftmargin=1em,style=nextline,labelindent=\c_zero_dim]
+ \__gzt_display_people_by_role:n {editorinchief}
+ \end{description}
+ \bigskip
+ \par
+ \item[\c__gzt_editors_string_tl] \
+ \begin{description}[leftmargin=1em,style=nextline,labelindent=\c_zero_dim]
+ \__gzt_display_people_by_role:n {editor}
+ \end{description}
+ \end{description}
+ }
+ \end{multicols}
+ \setlength{\columnseprule}{1pt}
+ \tcblower
+ \begin{tabular}{@{}m{.75\c__gzt_inside_cover_box_width_dim}@{}m{.2\c__gzt_inside_cover_box_width_dim-2\tabcolsep}@{}}
+ \begin{description}[leftmargin=1em]
+ \item[\c__gzt_editorial_secretariat_string_tl{}~:] \ \par%
+ \l__gzt_journal_publisher_tl%
+ % \par%
+ \c_space_tl\textendash{}\c_space_tl%
+ \__gzt_display_people_by_role:n { secretary }\par
+ \l__gzt_journal_address_tl\par%
+ \c__gzt_phone_string_tl{}~:~\l__gzt_journal_phone_tl{} \c_space_tl\textendash{}\c_space_tl
+ \c__gzt_fax_string_tl{}~:~\l__gzt_journal_fax_tl\par%
+ \href{mailto:\l__gzt_journal_email_tl}{\nolinkurl{\l__gzt_journal_email_tl}}%
+ % \newline%
+ \c_space_tl\textendash{}\c_space_tl
+ \url{\l__gzt_journal_url_tl}
+ \item[\c__gzt_publishingdirector_string_tl{}~:]
+ \__gzt_display_people_by_role:n { president }
+ \item[\c__gzt_issn_string_tl{}~:] \l__gzt_journal_issn_tl
+ \tl_if_empty:NF \l__gzt_journal_isbn_tl
+ {%
+ \item[\c__gzt_isbn_string_tl{}~:] \l__gzt_journal_isbn_tl
+ }
+ \bool_if:NT {\g__gzt_no_inside_backcover_bool} {
+ \item[\c__gzt_latexclass_string_tl{}~:]
+ \__gzt_display_people_by_role:n { classdesigner }
+ \item[\c__gzt_artistic_director_string_tl{}~:]
+ \__gzt_display_people_by_role:n { graphicdesigner }
+ \item[\c__gzt_printer_string_tl{}~:] \g__gzt_printer_text_tl
+ }
+ \end{description}
+ \bool_if:NT {\g__gzt_no_inside_backcover_bool} {
+ \g__gzt_font_designer_text_tl
+ }
+ &
+ \hspace*{\fill}%
+ \includegraphics[height=20mm]{\c__gzt_smf_logo_file_string_tl}%
+ \end{tabular}
+ % \\
+ % \c__gzt_font_string_tl
+ \bigskip
+ \tl_if_empty:NF \g__gzt_about_frontcover_tl
+ {%
+ \\
+ \begin{adjustbox}{valign=t,minipage=.75\c__gzt_inside_cover_box_width_dim+.2\c__gzt_inside_cover_box_width_dim-2\tabcolsep}
+ \begin{description}[leftmargin=1em,font=\color{__gzt_about_frontcover_title_color}]
+ \item[\g__gzt_about_frontcover_string_tl] \g__gzt_about_frontcover_tl
+ \bool_if:NT {\g__gzt_credit_frontcover_bool} {
+ \c_space_tl(\c__gzt_credit_frontcover_string_tl{}~:~%
+ \DTLforeach*[\DTLiseq{\l__gzt_people_role_tl}{frontcovercredit}]{people}{%
+ \l__gzt_firstlastname_tl=first-last-name%
+ ,\l__gzt_people_role_tl=role%
+ }{%
+ \__gzt_citeauthor_no_firstinits:n
+ {\c__gzt_issue_bib_key_tl -frontcovercredit- \exp_not:V\DTLcurrentindex}%
+ }%
+ ).%
+ }
+ \end{description}
+ \end{adjustbox}
+ }
+ \end{__gzt_inside_cover_tcb}
+ \clearpage%
+ \pagenumbering{arabic}%
+ \bool_gset_false:N \g__gzt_inside_frontcover_bool
+}
+\tl_new:N \g__gzt_display_inside_backcover_tl%
+\tl_gset:Nn \g__gzt_display_inside_backcover_tl {%
+ \bool_gset_true:N \g__gzt_inside_backcover_bool%
+ \cleardoublepage%
+ \pagestyle{__gzt_inside_backcover_ps}%
+ \exp_after:wN\newgeometry\exp_after:wN{\c__gzt_inside_cover_geometry_tl}%
+ \bool_if:NTF {\g__gzt_no_inside_backcover_bool} {
+ \hbox{}
+ }{%
+ \small%
+ \begin{__gzt_inside_cover_tcb}[__gzt_tcb_inside_backcover_style]
+ \bool_if:NF {\g__gzt_special_edition_bool} {
+ % \begin{multicols}{2}
+ % \setlength{\columnsep}{1mm}
+ \file_if_exist_input:n {\c__gzt_authors_instructions_file_tl}
+ % \end{multicols}
+ % \setlength{\columnseprule}{1pt}
+ \tcblower
+ }
+ \begin{description}[leftmargin=1em]
+ \item[\c__gzt_latexclass_string_tl{}~:]
+ \__gzt_display_people_by_role:n { classdesigner }
+ \item[\c__gzt_artistic_director_string_tl{}~:]
+ \__gzt_display_people_by_role:n { graphicdesigner }
+ \item[\c__gzt_printer_string_tl{}~:] \g__gzt_printer_text_tl
+ \end{description}
+ \g__gzt_font_designer_text_tl
+ \end{__gzt_inside_cover_tcb}
+ }
+ \bool_gset_false:N \g__gzt_inside_backcover_bool
+}
+\tl_new:N \g__gzt_display_backcover_tl%
+\tl_gset:Nn \g__gzt_display_backcover_tl {%
+ \bool_gset_true:N \g__gzt_backcover_bool
+ \pagestyle{__gzt_backcover_ps}%
+ \pagecolor{\g__gzt_special_edition_color_tl}
+ \exp_after:wN\newgeometry\exp_after:wN{\c__gzt_backcover_geometry_tl}%
+ \bool_if:NTF {\g__gzt_special_edition_bool} {
+ \mbox{}
+ \vfill
+ \clist_map_inline:Nn \c__gzt__graphics_extensions_clist{
+ \file_if_exist:nT {\c__gzt_issue_images_path_string_tl/\g__gzt_special_edition_backcover_image_tl.#1} {
+ \begin{center}
+ \includegraphics[width=.25\linewidth]{\g__gzt_special_edition_backcover_image_tl}
+ \end{center}
+ \bigskip
+ \clist_map_break:
+ }
+ }
+ \group_begin:
+ \leftskip.125\linewidth
+ \rightskip\leftskip
+ \file_if_exist_input:nF {\c__gzt_special_edition_backcover_page_file_string_tl}
+ {%
+ \c_empty_box
+ }
+ \par
+ \group_end:
+ \vfill
+ \clist_if_empty:NF \g__gzt_special_edition_logos_clist {
+ \vfill
+ \noindent
+ \clist_map_inline:Nn \g__gzt_special_edition_logos_clist {
+ \hfill
+ \includegraphics[height=2cm]{#1}
+ \hfill
+ }
+ \mbox{}
+ }
+ }{
+ \file_if_exist_input:nF {\c__gzt_backcover_page_file_string_tl}
+ {%
+ \hbox{}
+ }
+ }
+}
+\NewDocumentCommand \editorinchief {ommm}
+{
+ \int_incr:N \g__gzt_editors_in_chief_int
+ \__gzt_people:nnnnnnnn {#2}{#3}{#4}{}{}{#1}{editorinchief}{}
+}
+\NewDocumentCommand \editor {ommm}
+{
+ \__gzt_people:nnnnnnnn {#2}{#3}{#4}{}{}{#1}{editor}{}
+}
+
+\NewDocumentCommand \president {ommm}
+{
+ \__gzt_people:nnnnnnnn {#2}{#3}{#4}{}{}{#1}{president}{}
+}
+\NewDocumentCommand \classdesigner {ommm}
+{
+ \__gzt_people:nnnnnnnn {#2}{#3}{#4}{}{}{#1}{classdesigner}{}
+}
+\NewDocumentCommand \classmaintainer {ommm}
+{
+ \__gzt_people:nnnnnnnn {#2}{#3}{#4}{}{}{#1}{classmaintainer}{}
+}
+\NewDocumentCommand \fontdesigner {ommm}
+{
+ \__gzt_people:nnnnnnnn {#2}{#3}{#4}{}{}{#1}{fontdesigner}{}
+}
+\NewDocumentCommand \graphicdesigner {ommm}
+{
+ \__gzt_people:nnnnnnnn {#2}{#3}{#4}{}{}{#1}{graphicdesigner}{}
+}
+\NewDocumentCommand \secretary {ommm}
+{
+ \__gzt_people:nnnnnnnn {#2}{#3}{#4}{}{}{#1}{secretary}{}
+}
+\NewDocumentCommand \issuesetup { m } {
+ \keys_set:nn { gzt/issuesetup } {frontcoverimageoptions={width=\c__gzt_frontcover_image_width_dim},#1}
+ \int_compare:nNnT {\g__gzt_issue_number_int}<{1}
+ {
+ \int_set:Nn \g__gzt_issue_number_int { \c__gzt_first_issue_number_int }
+ \msg_warning:nnn{gzt}{issue-number-needed}{number}
+ }
+ \int_compare:nNnT {\g__gzt_issue_month_int * \g__gzt_issue_year_int}<{1}
+ {
+ \int_new:N \g__gzt_issue_age_in_months_int%
+ \int_gset:Nn \g__gzt_issue_age_in_months_int
+ {
+ \c__gzt_first_issue_month_int
+ + \c__gzt_interval_in_months_int
+ * ( \int_use:N \g__gzt_issue_number_int - \c__gzt_first_issue_number_int )
+ }
+ }
+ \int_compare:nNnT {\g__gzt_issue_month_int}<{1}
+ {
+ \int_gset:Nn \g__gzt_issue_month_int
+ {
+ \int_mod:nn { \g__gzt_issue_age_in_months_int } { 12 }
+ }
+ }
+ \int_compare:nNnT {\g__gzt_issue_year_int}<{1}
+ {
+ \int_new:N \g__gzt_issue_age_in_years_int%
+ \int_gset:Nn \g__gzt_issue_age_in_years_int
+ {%
+ \int_div_truncate:nn { \g__gzt_issue_age_in_months_int } { 12 }
+ }%
+ \int_gset:Nn \g__gzt_issue_year_int
+ {
+ \g__gzt_issue_age_in_years_int + \c__gzt_first_issue_year_int
+ }
+ }%
+}
+\NewDocumentCommand \specialeditionsetup { m } {
+ \bool_gset_true:N \g__gzt_special_edition_bool
+ \bool_gset_true:N \g__gzt_frontcover_without_minitoc_bool
+ \keys_set:nn { gzt/specialedition } {#1}
+}
+\NewDocumentCommand \moralreportsetup { m } {
+ \bool_gset_true:N \g__gzt_moral_report_bool
+ \bool_gset_true:N \g__gzt_frontcover_without_minitoc_bool
+ \keys_set:nn { gzt/moralreport } {#1}
+}
+\NewDocumentCommand \journalsetup { m } {
+ \keys_set:nn { gzt/journalsetup } { #1 }
+}
+\RenewDocumentCommand \date { mmm } {
+ \newdate{__gzt_president_message_date}{#1}{#2}{#3}%
+}
+\NewDocumentCommand \interviewee { om } {
+ \tl_if_empty:nT \g__gzt_title_tl {
+ \tl_gset:Nn \g__gzt_title_tl {
+ \c__gzt_interview_title_string_tl
+ \DeclareNameAlias{labelname}{default}\citeauthor{\c__gzt_issue_bib_key_tl -art-\int_use:N
+ \g__gzt_articles_int}
+ }
+ }
+ \IfNoValueF {#1}
+ {
+ \keys_set:nn { gzt/interviewees } { #1 }
+ }
+ \tl_set:Nn \l__gzt_people_first_last_name_tl {#2}
+ \__gzt_people:nVVVVnxV
+ {#2}
+ {\g__gzt_people_affiliation_tl}
+ {\g__gzt_people_email_tl}
+ {\g__gzt_people_minibio_tl}
+ {\g__gzt_people_photo_tl}
+ {}
+ {interviewee-art-\int_use:N \g__gzt_articles_int}
+ {}
+ % \maketitle
+}
+\NewDocumentCommand \academicsignature { m } {
+ \__gzt_display_academic_signature:n {#1}
+}
+\cs_new_protected:Nn \__gzt_uppercased_monthname_french:n
+{
+ \@orgargctr=#1\relax
+ \ifcase\@orgargctr
+ \PackageError{datetime}{Invalid~month~number~\the\@orgargctr}{%
+ Month~numbers~should~go~from~1~(janvier)~to~12~(decembre)}%
+ \or JANVIER%
+ \or F\'EVRIER%
+ \or MARS%
+ \or AVRIL%
+ \or MAI%
+ \or JUIN%
+ \or JUILLET%
+ \or AO\^UT%
+ \or SEPTEMBRE%
+ \or OCTOBRE%
+ \or NOVEMBRE%
+ \or D\'ECEMBRE%
+ \else
+ \PackageError{datetime}{Invalid~month~number~\the\@orgargctr}{%
+ Month~numbers~should~go~from~1~(janvier)~to~12~(decembre)}%
+ \fi
+}
+\newdate{__gzt_date}
+ {1}
+ {\int_use:N \g__gzt_issue_month_int}
+ {\int_use:N \g__gzt_issue_year_int}
+\newdateformat{l__gzt_uppercased_date_format}{
+ \__gzt_uppercased_monthname_french:n {\THEMONTH}~\THEYEAR
+}
+\AddToHook{begindocument}{%
+\tl_new:N \g__gzt_bib_issue_date_tl
+\tl_gset:Nn \g__gzt_bib_issue_date_tl {
+ \int_use:N \g__gzt_issue_year_int-
+ \int_compare:nNnT {\g__gzt_issue_month_int}<{10}
+ {
+ 0
+ }
+ \int_use:N \g__gzt_issue_month_int
+}
+ \iow_now:Nx \g__gzt_bib_out_iow {%
+ @periodical{\c__gzt_issue_bib_key_tl,\iow_newline:
+ issuetitle = {\exp_not:f\c__gzt_journal_title_string_tl},\iow_newline:
+ date = {\g__gzt_bib_issue_date_tl},\iow_newline:
+ number = \int_use:N \g__gzt_issue_number_int,\iow_newline:
+ % issn = {\l__gzt_journal_issn_tl},\iow_newline:
+ options = {skipbib}\iow_newline:
+ }
+ \iow_newline:
+ }%
+}
+\tl_new:N \g__gzt_title_tl
+\RenewDocumentCommand \title { o m } {
+ \int_gincr:N \g__gzt_articles_int
+ \tl_gclear:N \g__gzt_short_title_tl
+ \tl_gclear:N \g__gzt_short_subtitle_tl
+ \bool_gset_false:N \g__gzt_title_not_in_toc_bool
+ %
+ \IfNoValueF {#1}
+ {
+ \keys_set:nn { gzt/title } { #1 }
+ }
+ \tl_gset:Nn \g__gzt_title_tl {#2}
+ \bool_if:nT \g__gzt_tellme_rubric_bool
+ {
+ \tl_put_left:Nx \g__gzt_title_tl {\c__gzt_tellme_extra_title_string_tl}
+ }
+ \tl_if_empty:NT \g__gzt_short_title_tl {%
+ \tl_gset_eq:NN \g__gzt_short_title_tl \g__gzt_title_tl
+ }
+}
+\tl_new:N \g__gzt_subtitle_tl
+\NewDocumentCommand \subtitle { o m } {
+ \bool_gset_false:N \g__gzt_subtitle_not_in_toc_bool
+ %
+ \IfNoValueF {#1}
+ {
+ \keys_set:nn { gzt/subtitle } { #1 }
+ }
+ \tl_gset:Nn \g__gzt_subtitle_tl {#2}
+ \tl_if_empty:NT \g__gzt_short_subtitle_tl {%
+ \tl_gset_eq:NN \g__gzt_short_subtitle_tl \g__gzt_subtitle_tl
+ }
+}
+\RenewDocumentCommand \author { o m } {
+ \IfNoValueF {#1}
+ {
+ \keys_set:nn { gzt/authors } { #1 }
+ }
+ \tl_gset:Nn \l__gzt_people_first_last_name_tl {#2}
+ \__gzt_people:nVVVVnxV
+ {#2}
+ {\g__gzt_people_affiliation_tl}
+ {\g__gzt_people_email_tl}
+ {\g__gzt_people_minibio_tl}
+ {\g__gzt_people_photo_tl}
+ {}
+ {author-art-\int_use:N \g__gzt_articles_int}
+ {\g__gzt_people_webpage_tl}
+}
+\iow_new:N \g__gzt_bib_out_iow
+\ior_new:N \g__gzt_bib_out_ior
+\tl_new:N \g__gzt_bib_out_tl
+\file_if_exist:nTF { \c__gzt_issue_bib_path_string_tl }
+{
+ \ior_open:Nn \g__gzt_bib_out_ior { \c__gzt_issue_bib_path_string_tl }
+ \ior_str_map_inline:Nn \g__gzt_bib_out_ior
+ { \tl_gput_right:Nn \g__gzt_bib_out_tl {#1 \par } }
+ \ior_close:N \g__gzt_bib_out_ior
+}{
+ \typeout{no file! rerun}
+}
+\iow_open:Nn \g__gzt_bib_out_iow { \c__gzt_issue_bib_path_string_tl }
+\tl_new:N \g__gzt_abstract_body_tl
+\NewDocumentEnvironment{abstract}{}
+ {\CollectAbstract}
+ {\endCollectAbstract}
+\NewEnviron{CollectAbstract}
+ {
+ \tl_gset_eq:NN \g__gzt_abstract_body_tl \BODY
+ }
+\tl_new:N \g__gzt_mainmatter_switch_tl%
+\tl_gset:Nn \g__gzt_mainmatter_switch_tl {
+ \bool_gset_false:N \g__gzt_frontmatter_bool
+ \bool_gset_true:N \g__gzt_mainmatter_bool
+ \SetParskip{\c__gzt_mainmatter_parskip_skip}
+ \pagestyle{__gzt_mainmatter_ps}%
+}
+\tl_new:N \l__gzt_article_acknowledgements_tl%
+\cs_new_protected:Nn \__gzt_article_acknowledgements:n
+{
+ \tl_set:Nn \l__gzt_article_acknowledgements_tl { #1 }
+}
+\cs_new_protected:Nn \__gzt_display_localtoc:
+{
+ \etocsettocstyle{\section*{\contentsname}}{}%
+ \etocsetstyle {section}
+ {}
+ {\leavevmode\leftskip 0cm\relax}
+ {\bfseries\normalsize\makebox[.6cm][l]{\etocnumber}%
+ \etocname\nobreak\hfill\nobreak%
+ \makebox[.5cm][r]{%
+ \etocpage%
+ }%
+ \par%
+ }
+ {\medskip}
+ \localtableofcontentswithrelativedepth{+1}
+}
+\NewDocumentCommand \gztlocaltableofcontents {}
+{
+ \__gzt_display_localtoc: {}
+}
+\tl_new:N \g__gzt_article_bib_key_tl%
+\tl_new:N \l__gzt_people_first_last_names_tl
+\tl_new:N \g__gzt_authors_first_last_names_tl%
+\tl_new:N \l__gzt_interviewees_first_last_names_tl%
+\tl_new:N \g__gzt_citeauthor_no_firstinits%
+\tl_new:N \g__gzt_citeauthor_tl%
+\tl_new:N \g__gzt_citeinterviewee_tl%
+\tl_new:N \g__gzt_blx_given_first_inits_tl%
+\@ifpackagelater{biblatex}{2016/01/01}{%
+ \tl_gset:Nn \g__gzt_blx_given_first_inits_false_tl
+ {%
+ \togglefalse{abx@bool@giveninits}%
+ }
+}{
+ \tl_set:Nn \g__gzt_blx_given_first_inits_false_tl
+ {%
+ \togglefalse{blx@firstinits}%
+ }
+}
+\cs_new_protected:Nn \__gzt_citeauthor_no_firstinits:n {%
+ \tl_gset:Nn \g__gzt_citeauthor_tl {%
+ \DeclareNameAlias{labelname}{default}%
+ \group_begin:
+ \g__gzt_blx_given_first_inits_false_tl
+ \citeauthor{#1}
+ \group_end:
+ }%
+ \cs_if_exist:cTF {texorpdfstring}
+ {
+ \texorpdfstring{\g__gzt_citeauthor_tl}{}
+ }{%
+ \g__gzt_citeauthor_tl
+ }%
+}
+\cs_set_eq:NN \__gzt_orig_multinamedelim \multinamedelim
+\cs_set_eq:NN \__gzt_orig_finalnamedelim \finalnamedelim
+\cs_new_protected:Nn \__gzt_itemized_citeauthor:n
+{
+ \cs_set_eq:NN \multinamedelim \item
+ \cs_set_eq:NN \finalnamedelim \multinamedelim
+ \AtNextCitekey{\defcounter{maxnames}{100}}
+ \begin{itemize}[label=\textbullet,noitemsep]
+ \item \citeauthor{#1}
+ \end{itemize}
+ \cs_set_eq:NN \multinamedelim \__gzt_orig_multinamedelim
+ \cs_set_eq:NN \finalnamedelim \__gzt_orig_finalnamedelim
+}
+\tl_new:N \l__gzt_bullet_and_rule_tl
+\tl_new:N \l__gzt_authors_box_tl
+\tl_new:N \l__gzt_abstract_box_tl
+\tl_new:N \l__gzt_bullet_and_rule_odd_tl
+\tl_new:N \l__gzt_bullet_and_rule_even_tl
+\tl_new:N \l__gzt_title_box_tl
+\RenewDocumentCommand \maketitle { s } {
+ \FloatBarrier%
+\int_gincr:N \g__gzt_item_in_rubric_int
+\dim_set_eq:NN \parindent \c__gzt_original_parindent_dim
+\glsresetall
+\setcounter{section}{0}
+\setcounter{figure}{0}
+\setcounter{table}{0}
+\setcounter{footnote}{0}
+\setcounter{equation}{0}
+\setcounter{theorem}{0}
+\setcounter{corollary}{0}
+\setcounter{conjecture}{0}
+\setcounter{proposition}{0}
+\setcounter{lemma}{0}
+\setcounter{axiom}{0}
+\setcounter{definition}{0}
+\setcounter{remark}{0}
+\setcounter{example}{0}
+\setcounter{notation}{0}
+\tl_gset:Nn \g__gzt_article_bib_key_tl {%
+ \c__gzt_issue_bib_key_tl
+ -art-
+ \int_use:N \g__gzt_articles_int
+}
+\DTLforeach*[\DTLiseq{\l__gzt_people_role_tl}{author-art-\int_use:N \g__gzt_articles_int}]{people}{%
+ \l__gzt_people_first_last_name_tl=first-last-name%
+ ,\l__gzt_people_role_tl=role%
+}{%
+ \tl_if_in:NnT \l__gzt_people_role_tl { author } {
+ \DTLiffirstrow{%
+ \tl_put_right:Nx
+ \l__gzt_people_first_last_names_tl
+ {\exp_not:V\l__gzt_people_first_last_name_tl}
+ }{
+ \tl_put_right:Nx
+ \l__gzt_people_first_last_names_tl
+ {~and~\exp_not:V\l__gzt_people_first_last_name_tl}
+ }
+ }
+}
+\DTLforeach*[\DTLiseq{\l__gzt_people_role_tl}{interviewee-art-\int_use:N \g__gzt_articles_int}]{people}{%
+ \l__gzt_people_first_last_name_tl=first-last-name%
+ ,\l__gzt_people_role_tl=role%
+}{%
+ \tl_if_in:NnT \l__gzt_people_role_tl { interviewee } {
+ \DTLiffirstrow{%
+ \tl_put_right:Nx
+ \l__gzt_people_first_last_names_tl
+ {\exp_not:V\l__gzt_people_first_last_name_tl}
+ }{
+ \tl_put_right:Nx
+ \l__gzt_people_first_last_names_tl
+ {~and~\exp_not:V\l__gzt_people_first_last_name_tl}
+ }
+ }
+}
+\tl_if_empty:NF \g__gzt_title_tl {%
+ \iow_now:Nx \g__gzt_bib_out_iow {%
+ @article{
+ \g__gzt_article_bib_key_tl,
+ \iow_newline:
+ title={\exp_not:V\g__gzt_title_tl},
+ \iow_newline:
+ \tl_if_empty:NF \g__gzt_subtitle_tl {%
+ subtitle={\exp_not:V\g__gzt_subtitle_tl},
+ \iow_newline:
+ }
+ \tl_if_eq:NNF { \g__gzt_short_title_tl } { \g__gzt_title_tl } {%
+ shorttitle={\exp_not:V\g__gzt_short_title_tl},
+ \iow_newline:
+ }%
+ \tl_if_empty:NF \l__gzt_people_first_last_names_tl
+ {
+ author={\exp_not:V\l__gzt_people_first_last_names_tl},
+ \iow_newline:
+ }
+ options={skipbib},
+ \iow_newline:
+ crossref = {\c__gzt_issue_bib_key_tl}
+ }
+ \iow_newline:
+ }%
+}%
+\tl_set:Nn \l__gzt_bullet_and_rule_odd_tl
+{%
+ \begin{tikzpicture}[remember~picture,overlay]
+ \draw[fill=__gzt_circlerule_color,draw=__gzt_circlerule_color,line~width=0.7mm]
+ ([xshift=-\c__gzt_innermargin_dim-\c__gzt_potential_layoutoffset_dim]0,0 -| current~page.west) -- (\linewidth,0);%
+ \fill[__gzt_circlerule_color] (\linewidth-2\pgflinewidth,0) circle [radius=2.75mm];
+ \end{tikzpicture}%
+}%
+\tl_set:Nn \l__gzt_bullet_and_rule_even_tl
+{%
+ \begin{tikzpicture}[remember~picture,overlay]
+ \draw[fill=__gzt_circlerule_color,draw=__gzt_circlerule_color,line~width=0.7mm]
+ (0,0 -| current~page.east) -- (0,0);%
+ \fill[__gzt_circlerule_color] (0,0) circle [radius=2.75mm];
+ \end{tikzpicture}%
+}%
+\tl_set:Nn \l__gzt_title_box_tl
+{%
+ \noindent%
+ \hspace*{18mm}%
+ \begin{adjustbox}{minipage=\linewidth-18mm,valign=t}
+ \raggedright%
+ \color{__gzt_article_title_color}%
+ \fontsize{20}{25}\selectfont%
+ \bfseries%
+ \g__gzt_title_tl
+ \tl_if_empty:NF \g__gzt_subtitle_tl {%
+ \par%
+ \g__gzt_subtitle_tl
+ }
+ \phantomsection
+ \par%
+ \bool_if:NTF {\g__gzt_title_not_in_toc_bool} {
+ \bookmark[page=\thepage,level=chapter]{\g__gzt_short_title_tl}
+ }{
+ \addcontentsline{toc}{chapter}{%
+ \tl_if_empty:NTF \g__gzt_short_title_tl {%
+ \g__gzt_title_tl%
+ }{
+ \g__gzt_short_title_tl%
+ }
+ \bool_if:NF {\g__gzt_subtitle_not_in_toc_bool} {
+ \bool_if:nF { \tl_if_empty_p:N \g__gzt_short_subtitle_tl || \g__gzt_interview_rubric_bool || \g__gzt_rearviewmirror_rubric_bool }
+ {
+ \c_space_tl\textendash{}\c_space_tl\g__gzt_short_subtitle_tl
+ }
+ }
+ \bool_if:nF { \tl_if_empty_p:N \l__gzt_people_first_last_names_tl || \g__gzt_interview_rubric_bool || \g__gzt_rearviewmirror_rubric_bool }
+ {
+ \textsl{
+ \cs_if_exist:cTF {texorpdfstring}
+ {
+ \texorpdfstring{%
+ \c_space_tl\textendash{}\c_space_tl\citeauthor{\g__gzt_article_bib_key_tl}
+ }{}
+ }{%
+ \c_space_tl\textendash{}\c_space_tl\citeauthor{\g__gzt_article_bib_key_tl}
+ }%
+ }
+ }
+ }
+ }
+ \end{adjustbox}
+}
+ \dim_gset:Nn \g__gzt_abstract_box_width_dim {0.75\linewidth}
+ % \bool_if:nT { \tl_if_empty_p:N \l__gzt_people_first_last_names_tl }
+ % {
+ % \dim_gset:Nn \g__gzt_abstract_box_width_dim {\linewidth}
+ % }
+ \tl_set:Nn \l__gzt_abstract_box_tl
+ {%
+ \begin{adjustbox}{minipage=\g__gzt_abstract_box_width_dim,max~width=\g__gzt_abstract_box_width_dim,valign=t}
+ \mbox{}
+ \tl_if_exist:NT \g__gzt_abstract_body_tl
+ {%
+ \raggedright%
+ \bfseries%
+ \color{__gzt_article_abstract_color}%
+ \g__gzt_abstract_body_tl
+ }%
+ \end{adjustbox}
+ }%
+ \tl_set:Nn \l__gzt_authors_box_tl
+ {%
+ \begin{adjustbox}{minipage=0.3\linewidth,min~width=0.3\linewidth,valign=t}
+ \bool_if:nTF { \tl_if_empty_p:N \l__gzt_people_first_last_names_tl || \g__gzt_interview_rubric_bool }
+ {
+ \mbox{}
+ }
+ {
+ \color{__gzt_people_color}%
+ \__gzt_itemized_citeauthor:n {\g__gzt_article_bib_key_tl}
+ }
+ \end{adjustbox}
+ }
+ \bool_if:nTF {
+ \int_compare_p:nNn { \g__gzt_item_in_rubric_int } = { 1 }
+ }
+ {
+ \mbox{}
+ \par
+ \bool_if:nTF {
+ \tl_if_empty_p:N \g__gzt_rubric_abstract_tl
+ }{
+ \xleaders\vbox {
+ \bigskip%
+ }%
+ \vskip\bigskipamount%
+ }{
+ \xleaders\vbox {
+ \smallskip%
+ }%
+ \vskip\smallskipamount%
+ }
+ }
+ {
+ \bool_if:NTF {\g__gzt_previous_article_with_bibliography_or_minibio_bool}
+ {
+ \xleaders\vbox {
+ \mbox{}
+ \par
+ \medskip%
+ }%
+ \vskip\medskipamount%
+ }
+ {
+ \xleaders\vbox {
+ \mbox{}
+ \par
+ \smallskip%
+ }%
+ \vskip\smallskipamount%
+ }
+ }
+ \bool_gset_false:N \g__gzt_previous_article_with_bibliography_or_minibio_bool
+\hypersetup{pdftitle=\g__gzt_short_title_tl,pdfauthor=\l__gzt_people_first_last_names_tl}
+ \l__gzt_title_box_tl
+ \normalsize%
+ \nopagebreak[3]
+ \bool_if:nF { \tl_if_empty_p:N \g__gzt_abstract_body_tl && (\tl_if_empty_p:N \l__gzt_people_first_last_names_tl || \g__gzt_interview_rubric_bool || \g__gzt_rearviewmirror_rubric_bool)}
+ {%
+ \par%
+ \bigskip
+ \bigskip
+ \large%
+ \mbox{}%
+ \checkoddpage%
+ \ifoddpage%
+ \l__gzt_abstract_box_tl
+ \hspace*{11mm}%
+ \l__gzt_authors_box_tl
+ \else%
+ \hspace*{-.85\c__gzt_outermargin_dim}%
+ \l__gzt_authors_box_tl
+ \hspace*{11mm}%
+ \l__gzt_abstract_box_tl
+ \fi%
+ }
+ \tl_gclear:N \g__gzt_title_tl
+ \tl_gclear:N \g__gzt_subtitle_tl
+ \tl_gclear:N \g__gzt_abstract_body_tl
+ \normalsize%
+ \bigskip
+ \tl_if_empty:NF \g__gzt_abstract_body_tl
+ % {%
+ % \tl_if_empty:NF \l__gzt_people_first_last_names_tl
+ % {%
+ % \bigskip
+ % }
+ % }
+ {
+ \bigskip
+ }
+ \bool_if:nT \g__gzt_interview_rubric_bool
+ {
+ \dim_zero:N \parindent
+ % \tl_if_empty:NF \l__gzt_people_photo_tl
+ % {
+ % \begin{adjustbox}{center}
+ % \includegraphics[height=50mm]{\l__gzt_people_photo_tl}
+ % \end{adjustbox}
+ % }
+ }
+ \color{__gzt_default_text_color}%
+ \IfBooleanF {#1}%
+ {
+ \bool_if:nF { \g__gzt_multicols_bool || \g__gzt_rearviewmirror_rubric_bool }
+ {
+ \begin{multicols}{2}%
+ }
+ }
+ }
+\file_if_exist:nT { \c__gzt_acronyms_file_string_tl } {%
+ \AddToHook{begindocument/before}{\loadglsentries{\c__gzt_acronyms_file_string_tl}}
+}
+\tl_new:N \g__gzt_boxed_issue_number_tl%
+\tl_gset:Nn \g__gzt_boxed_issue_number_tl {%
+ \tcbox{\Large\No\g__gzt_issue_number_int}
+}
+\cs_new_protected:Nn \__gzt_boxed_issue_number:nn
+{
+ \noindent%
+ \raisebox{\baselineskip}{%
+ \tl_if_empty:nF {#1} {%
+ \makebox[\c_zero_dim][r]{%
+ % \hspace*{\l__gzt_thumbnail_width_dim}%
+ \begin{adjustbox}{valign=t}
+ \includegraphics[width=\l__gzt_thumbnail_width_dim]{#1}%
+ \end{adjustbox}%
+ }%
+ }%
+ \bool_if:NTF {\g__gzt_special_edition_bool} {
+ \tl_set:Nn \l_tmpa_tl {\c__gzt_short_special_edition_string_tl}
+ }{
+ \tl_set:Nn \l_tmpa_tl {\No\int_use:N\g__gzt_issue_number_int}
+ }
+ \begin{adjustbox}{valign=t}
+ \begin{tcolorbox}[%
+ enhanced,%
+ title=\l_tmpa_tl,%\int_use:N \g__gzt_issue_number_int,%
+ fonttitle=\Large,%
+ colback=white,%
+ sharp~corners=all,%
+ height=33mm,%
+ boxrule=\c_zero_dim,%
+ % frame~hidden,%
+ attach~boxed~title~to~top~left,%
+ tikznode~boxed~title={minimum~width=\c__gzt_boxed_issue_number_width_dim},%
+ boxed~title~style={%
+ size=minimal,%
+ height=\c__gzt_boxed_issue_number_height_dim,%
+ center~upper,%
+ before={},%
+ colback=__gzt_boxed_issue_number_bg_color,%
+ sharp~corners=all,%
+ frame~hidden,%
+ valign=center,%
+ }%
+ ]
+ \__gzt_reflected_text:n { #2 }%
+ \end{tcolorbox}
+ \end{adjustbox}%
+ }%
+ \par%
+}
+\cs_new_protected:Nn \__gzt_before_frontmatter_stuff:
+{
+ \bool_gset_true:N \g__gzt_frontmatter_bool%
+ \pagestyle{__gzt_frontmatter_ps}%
+ \exp_after:wN\newgeometry\exp_after:wN{\c__gzt_front_matter_geometry_tl}%
+}
+\cs_new_protected:Nn \__gzt_after_frontmatter_stuff:
+{
+ \color{__gzt_default_text_color}
+ \normalsize%
+ \clearpage%
+ \bool_gset_false:N \g__gzt_frontmatter_bool%
+}
+\cs_new_protected:Nn \__gzt_before_editorial_presidentmessage:nn
+{
+ \__gzt_before_frontmatter_stuff: {}
+ \__gzt_boxed_issue_number:nn {#1}{#2}
+ \color{__gzt_frontmatter_text_color}%
+ \fontsize{11}{13.6}\selectfont
+ \RaggedRight
+}
+\cs_new_protected:Nn \__gzt_after_editorial_presidentmessage:
+{
+ \justifying
+ \bigskip
+ \par
+}
+\cs_new_protected:Nn \__gzt_before_display_editorial:n
+{
+ \__gzt_before_editorial_presidentmessage:nn {}{#1}
+}
+\cs_new_protected:Nn \__gzt_after_display_editorial:
+{
+ \__gzt_after_editorial_presidentmessage: {}
+ \hspace*{\fill}%
+ \bool_if:NTF {\g__gzt_special_edition_bool} {
+ \AtNextCitekey{\defcounter{maxnames}{100}}
+ \__gzt_citeauthor_no_firstinits:n {\c__gzt_issue_bib_key_tl -editorinchief- 1}
+ }{
+ \DTLforeach*[\DTLiseq{\l__gzt_people_role_tl}{editorinchief}]{people}{%
+ \l__gzt_firstlastname_tl=first-last-name%
+ ,\l__gzt_people_role_tl=role%
+ }{%
+ \__gzt_citeauthor_no_firstinits:n {\c__gzt_issue_bib_key_tl -editorinchief- \exp_not:V\DTLcurrentindex}%
+ }
+ }
+ %
+ \__gzt_after_frontmatter_stuff: {}
+}
+\cs_new_protected:Nn \__gzt_display_editorial:n
+{
+ \__gzt_before_display_editorial:n {#1}
+ \file_if_exist_input:nF {\c__gzt_editorial_file_string_tl}
+ {%
+ \msg_error:nn { gzt } { editorial-file-missing }
+ }
+ \__gzt_after_display_editorial: {}
+}
+\AddToHook{begindocument/before}{%
+ \tl_set_eq:NN \g__gzt_editorial_heading_tl \c__gzt_editorial_heading_string_tl
+ \bool_if:NT {\g__gzt_special_edition_bool} {
+ \tl_if_empty:NF \g__gzt_special_edition_editorial_heading_tl {%
+ \tl_set_eq:NN \g__gzt_editorial_heading_tl \g__gzt_special_edition_editorial_heading_tl
+ }
+ }
+ \NewDocumentCommand \editorial { O{\g__gzt_editorial_heading_tl} }
+ {
+ \bool_if:NF {\g__gzt_for_authors_bool} {
+ \__gzt_display_editorial:n {#1}
+ }
+ }
+}
+\cs_new_protected:Nn \__gzt_before_display_presidentmessage:
+{
+ \__gzt_before_editorial_presidentmessage:nn {\c__gzt_smf_logo_file_string_tl}{\c__gzt_president_message_string_tl}
+ \phantomsection
+ \par%
+ \addcontentsline{toc}{part}{\g__gzt_smf_short_string_tl}%
+ \addcontentsline{toc}{chapter}{\c__gzt_president_message_string_tl}%
+}
+\cs_new_protected:Nn \__gzt_after_display_presidentmessage:
+{
+ \__gzt_after_editorial_presidentmessage: {}
+ %
+ \hspace*{\fill}%
+ \c__gzt_president_message_date_string_tl%
+ \displaydate{__gzt_president_message_date}%
+ \\[1.5mm]
+ \hspace*{\fill}%
+ \__gzt_display_people_by_role:n { president }%
+ ,\c_space_tl
+ \c__gzt_president_signatory_string_tl
+ %
+ \__gzt_after_frontmatter_stuff: {}
+}
+\cs_new_protected:Nn \__gzt_display_president_message:
+{
+ \__gzt_before_display_presidentmessage: {}
+ \file_input:n {\c__gzt_president_message_file_string_tl}
+ \__gzt_after_display_presidentmessage: {}
+}
+\NewDocumentCommand \presidentmessage {}
+{
+ \bool_if:NF {\g__gzt_for_authors_bool} {
+ \__gzt_display_president_message: {}
+ }
+}
+\titleformat{\chapter}%
+[block]
+{\Huge\bfseries}
+{}
+{\c_zero_dim}
+{\scshape}%
+\titleformat{\section}
+{%
+ \raggedright%
+ \bfseries%
+ \color{__gzt_section_color}
+}
+{\fontsize{20}{15}\selectfont\thesection.\enspace}
+{-3pt}
+{\fontsize{13}{15}\selectfont}
+\titleformat{\subsection}
+{%
+ \fontsize{11}{16}\selectfont%
+ \bfseries%
+ \color{__gzt_subsection_color}%
+}
+{\thesubsection\ \textendash{}\ }
+{\c_zero_dim}
+{}
+\titleformat{\subsubsection}
+{%
+ \fontsize{11}{16}\selectfont%
+ \bfseries%
+ \color{__gzt_subsubsection_color}%
+}
+{}
+{\c_zero_dim}
+{}
+\AddToHook{begindocument}{%
+ \graphicspath{{\c__gzt_issue_images_path_string_tl//}{../\c__gzt_issue_images_path_string_tl//}}
+ % \glsdisablehyper
+ \g__gzt_mainmatter_switch_tl
+ % \bool_gset_false:N \g__gzt_frontmatter_bool
+ % \bool_gset_true:N \g__gzt_mainmatter_bool
+ % \SetParskip{\c__gzt_mainmatter_parskip_skip}
+ % \pagestyle{__gzt_mainmatter_ps}%
+ \exp_after:wN\newgeometry\exp_after:wN{\c__gzt_main_geometry_tl}%
+}
+\tl_new:N \g__gzt_background_footer_tl
+\tl_gset:Nn \g__gzt_background_footer_tl {%
+ \draw [__gzt_footer_bg_color,fill]
+ (current~page.south~west)
+ rectangle ([yshift=\c__gzt_footer_background_height_dim]current~page.south~east)
+ ;
+}
+\tl_new:N \l__gzt_frontmatter_head_text_tl
+\tl_set:Nn \l__gzt_frontmatter_head_text_tl {%
+ \bool_if:NTF {\g__gzt_special_edition_bool} {
+ \g__gzt_special_edition_title_tl
+ }{
+ \includegraphics{gzt-logo}
+ }
+}
+\tl_new:N \g__gzt_frontmatter_page_headrule_tl
+\tl_gset:Nn \g__gzt_frontmatter_page_headrule_tl {%
+ \draw [__gzt_headrule_color,line~width=\c__gzt_header_line_width_dim]
+ ([yshift=\c__gzt_header_line_yshift_dim]current~page~header~area.south~west -| current~page.north~west)
+ --
+ ([yshift=\c__gzt_header_line_yshift_dim]current~page~header~area.south~east -| current~page.north~east)
+ ;%
+}
+\tl_new:N \g__gzt_frontmatter_headtext_tl
+\tl_gset:Nn \g__gzt_frontmatter_headtext_tl {%
+ \mbox{}%
+ \checkoddpage%
+ \ifoddpage%
+ \node[
+ anchor=north~east,%
+ align=center,%
+ fill=white,%
+ inner~xsep=3.5mm,%
+ outer~sep=\c_zero_dim,%
+ ] at
+ ([%
+ xshift=\c__gzt_frontmatter_headtext_o_xshift_dim,%
+ yshift=\c__gzt_frontmatter_headtext_yshift_dim%
+ ]current~page.north~east) {%
+ \Large
+ \bool_if:NT {\g__gzt_special_edition_bool} {
+ \c__gzt_short_special_edition_string_tl
+ \c_space_tl
+ }
+ \l__gzt_frontmatter_head_text_tl
+ }%
+ ;
+ \else%
+ \node[%
+ anchor=north~west,%
+ align=center,%
+ fill=white,%
+ inner~xsep=3.5mm,%
+ outer~sep=\c_zero_dim,%
+ ] at
+ ([%
+ xshift=\c__gzt_frontmatter_headtext_e_xshift_dim,%
+ yshift=\c__gzt_frontmatter_headtext_yshift_dim%
+ ]current~page.north~west) {%
+ \Large
+ \bool_if:NT {\g__gzt_special_edition_bool} {
+ \c__gzt_short_special_edition_string_tl
+ \c_space_tl
+ }
+ \l__gzt_frontmatter_head_text_tl
+ }%
+ ;
+ \fi%
+}
+\tl_new:N \g__gzt_mainmatter_oddpage_headrule_tl
+\tl_gset:Nn \g__gzt_mainmatter_oddpage_headrule_tl {%
+ \draw [__gzt_headrule_color,line~width=\c__gzt_header_line_width_dim]
+ ([yshift=\c__gzt_header_line_yshift_dim]current~page~header~area.south~east)
+ --
+ ([yshift=\c__gzt_header_line_yshift_dim]current~page~header~area.south~west -| current~page.north~west)
+ ;
+}
+\tl_new:N \g__gzt_mainmatter_evenpage_headrule_tl
+\tl_gset:Nn \g__gzt_mainmatter_evenpage_headrule_tl {%
+ \draw [__gzt_headrule_color,line~width=\c__gzt_header_line_width_dim]
+ ([yshift=\c__gzt_header_line_yshift_dim]current~page~header~area.south~west)
+ --
+ ([yshift=\c__gzt_header_line_yshift_dim]current~page~header~area.south~east -| current~page.north~east)
+ ;
+}
+\ExplSyntaxOff
+\tcbuselibrary{breakable,skins,hooks,xparse,theorems,listingsutf8}
+\usetikzlibrary{babel,fadings,positioning,calc}
+\tcbset{%
+ new/blend into/tables-/.style={%
+ use counter*=table,%
+ /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}}}},%
+}
+\ExplSyntaxOn
+\newpagestyle{__gzt_frontmatter_ps}[]{%
+ \widenhead*{\c__gzt_front_matter_extra_innermargin_dim}{\c__gzt_front_matter_extra_outermargin_dim}
+ \sethead%
+ [
+ \tikz[remember~picture,overlay] {%
+ \g__gzt_frontmatter_page_headrule_tl%
+ \g__gzt_frontmatter_headtext_tl%
+ }%
+ ]%
+ []%
+ []%
+ {}%
+ {
+ \tikz[remember~picture,overlay] {%
+ \g__gzt_frontmatter_page_headrule_tl%
+ \g__gzt_frontmatter_headtext_tl%
+ }%
+ }%
+ {}%
+ %
+ \setfoot%
+ [\c__gzt_footer_size_font_tl\thepage]%
+ [%
+ \c__gzt_footer_string_tl
+ ]%
+ [
+\c__gzt_compiled_string_tl
+ ]%
+ {
+\c__gzt_compiled_string_tl
+ }%
+ {%
+ \c__gzt_footer_string_tl%
+ }%
+ {\c__gzt_footer_size_font_tl\thepage}%
+}%
+\AddToHook{shipout/background}{
+ \bool_if:NF {\g__gzt_advertisement_bool} {
+ \tikz[remember~picture,overlay] { \g__gzt_background_footer_tl }%
+ }%
+}
+\newpagestyle{__gzt_mainmatter_ps}[]{%
+ \widenhead{\c_zero_dim}{\c_zero_dim}
+ \sethead%
+ [
+ \tikz[remember~picture,overlay] {\g__gzt_mainmatter_evenpage_headrule_tl}
+ ]%
+ [%
+ \adjustbox{raise={\c__gzt_header_yshift_dim}{\height}}{%
+ \large\bfseries\scshape\color{__gzt_head_text_color}\g__gzt_rubric_title_tl%
+ }%
+ ]%
+ []%
+ {}%
+ {%
+ \bool_if:nF {
+ \g__gzt_rearviewmirror_rubric_bool || \g__gzt_books_rubric_bool
+ }{
+ \adjustbox{raise={\c__gzt_header_yshift_dim}{\height}}{%
+ \bfseries\color{__gzt_head_text_color}\g__gzt_short_title_tl%
+ }
+ }
+ }%
+ {
+ \tikz[remember~picture,overlay] {\g__gzt_mainmatter_oddpage_headrule_tl}
+ }%
+ %
+\bool_if:nTF { \g__gzt_for_authors_bool } {
+ \setfoot%
+ [\c__gzt_footer_size_font_tl\thepage]%
+ [%
+ \c__gzt_footer_string_tl
+ ]%
+ [\c__gzt_compiled_string_tl]%
+ {\c__gzt_compiled_string_tl}%
+ {%
+ \c__gzt_footer_string_tl%
+ }%
+ {\c__gzt_footer_size_font_tl\thepage}%
+ }{
+ \setfoot%
+ [\c__gzt_footer_size_font_tl\thepage]%
+ [%
+ \c__gzt_footer_string_tl
+ ]%
+ []%
+ {}%
+ {%
+ \c__gzt_footer_string_tl%
+ }%
+ {\c__gzt_footer_size_font_tl\thepage}%
+ }
+}
+\NewDocumentCommand \acknowledgements { +m } {
+ \__gzt_article_acknowledgements:n {#1}%
+}
+\NewDocumentCommand \printminibios {} {
+ \bool_if:NT {\g__gzt_multicols_bool} {
+ \end{multicols}%
+ }
+ \FloatBarrier%
+ \begin{__gzt_minibiographies_acknowledgements_tcbox}
+ \__gzt_display_people_by_role:n { author-art-\int_use:N \g__gzt_articles_int }
+ \DTLsavelastrowcount{\__gzt_authors_number}
+ \tl_if_empty:NF \l__gzt_article_acknowledgements_tl
+ {%
+ \footnotesize
+ \int_compare:nNnT {\__gzt_authors_number}>{0}
+ {
+ \par%
+ \bigskip%
+ }
+ \begin{adjustbox}{valign=t,minipage=\linewidth}
+ \color{__gzt_acknowledgements_color}%
+ \setlength{\parskip}{\c__gzt_mainmatter_parskip_skip}
+ \l__gzt_article_acknowledgements_tl
+ \end{adjustbox}
+ }
+ \bool_gset_true:N \g__gzt_previous_article_with_bibliography_or_minibio_bool
+ \end{__gzt_minibiographies_acknowledgements_tcbox}
+}
+\let\printauthorsdetails\printminibios
+\cs_set_eq:NN \__gzt_printbibliography \printbibliography
+\RenewDocumentCommand \printbibliography { s O{} } {
+ \bool_if:NT {\g__gzt_multicols_bool} {
+ \end{multicols}%
+ }
+ \FloatBarrier%
+ \begin{__gzt_bibliography_tcbox}
+ \__gzt_printbibliography[heading=subbibliography,resetnumbers,#2]
+ \end{__gzt_bibliography_tcbox}
+ %
+ \IfBooleanF {#1}
+ {
+ \nopagebreak[0]
+ \printauthorsdetails
+ }
+}
+\deftranslation[to=French]{__gzt_century}{si\`ecle}%
+\deftranslation[to=English]{__gzt_century}{century}%
+\deftranslation[to=French]{__gzt_first}{\ier}%
+\deftranslation[to=English]{__gzt_first}{\up{st}\xspace}%
+\deftranslation[to=French]{__gzt_nth}{\ieme}%
+\deftranslation[to=English]{__gzt_nth}{\up{th}\xspace}%
+\deftranslation[to=French]{__gzt_bc}{avant~J.-C}%
+\deftranslation[to=English]{__gzt_bc}{BC}%
+\cs_new_protected:Nn \__gzt_century:n
+{
+ \textsc{
+ \int_to_roman:n {\int_abs:n {#1}}
+ }%
+ \int_compare:nNnTF { \int_abs:n {#1} } > { 1 }{\translate{__gzt_nth}}{\translate{__gzt_first}}
+}
+\cs_new_protected:Nn \__gzt_century_suffix:n
+{
+ \translate{__gzt_century}%
+ \int_compare:nNnT { #1 } < { 0 }{
+ \c_space_tl
+ \translate{__gzt_bc}
+ \IfLanguageName {french}{
+ \@ifnextchar.%
+ {
+ }{
+ .\xspace
+ }%
+ }
+ }{
+ }
+}
+\DeclareCiteCommand{\citeinterviewee}{}{%
+ \printnames{interviewee}%
+}
+{}{}
+\DeclareCiteCommand{\citereviewer}{}{%
+ \g__gzt_blx_given_first_inits_false_tl
+ \printnames{reviewer}%
+}
+{}{}
+\DeclareCiteCommand{\citereviewerinstitution}{}{%
+ \printlist{reviewerinstitution}%
+}
+{}{}
+\DeclareCiteCommand{\__gzt_cite_public_price}{}{%
+ \printfield{publicprice}%
+}
+{}{}
+\DeclareCiteCommand{\__gzt_cite_smf_price}{}{%
+ \printfield{smfprice}%
+}
+{}{}
+\DeclareCiteCommand{\citecopublisher}{}{%
+ \printlist{copublisher}%
+}
+{}{}
+\DeclareCiteCommand{\citefrenchabstract}{}{%
+ \printfield{frenchabstract}%
+}
+{}{}
+\DeclareCiteCommand{\__gzt_cite_englishabstract}{}{%
+ \printfield{englishabstract}%
+}
+{}{}
+\NewDocumentCommand \email {m}
+{
+ \__gzt_email:n {#1}%
+}
+\cs_new_protected:Nn \__gzt_question:n
+{
+ \int_incr:N \g__gzt_question_int
+ {%
+ \par%
+ \bigskip%
+ \color{__gzt_question_color}
+ #1%
+ \par%
+ }%
+}
+\NewDocumentCommand \question {m}
+{
+ \__gzt_question:n {#1}%
+}
+\NewDocumentCommand \smf { s } {
+ \IfBooleanTF {#1}
+ {
+ \g__gzt_smf_string_tl
+ }
+ {
+ \g__gzt_smf_short_string_tl
+ }
+ \xspace
+}
+\DeclareExpandableDocumentCommand \surname { m } {
+ \textsc{#1}
+}
+\NewDocumentCommand \cad { s } {
+ \IfBooleanTF {#1}
+ {
+ \c__gzt_cad_string_tl
+ }
+ {
+ \c__gzt_cad_short_string_tl
+ }
+ \xspace
+}
+\NewDocumentCommand \Cad { s } {
+ \IfBooleanTF {#1}
+ {
+ \c__gzt_Cad_string_tl
+ }
+ {
+ \c__gzt_Cad_short_string_tl
+ }
+ \xspace
+}
+\NewDocumentCommand \gzt { s } {
+ \IfBooleanTF {#1}
+ {
+ \l__gzt_gzt_string_tl
+ }
+ {
+ \l__gzt_gzt_short_string_tl
+ }
+ \xspace
+}
+\NewDocumentCommand \gztcl {}
+{%
+ \textsl{\texttt{\c__gzt_class_name_tl}}
+ \xspace
+}
+\NewDocumentCommand \gztarticlecl {}
+{%
+ \textsl{\texttt{\c__gzt_article_class_name_tl}}
+ \xspace
+}
+\NewDocumentCommand \century { s m } {%
+ \__gzt_century:n {#2}%
+ \IfBooleanTF {#1}
+ {
+ \int_compare:nNnT { #2 } < { 0 }{
+ \__gzt_century_suffix:n {#2}%
+ }
+ }
+ {
+ \__gzt_century_suffix:n {#2}%
+ }
+}
+\NewDocumentCommand \aside { s m } {%
+ \IfBooleanTF {#1}
+ {
+ \c__gzt_aside_string_tl{}~#2
+ }
+ {
+ \c__gzt_aside_string_tl{}~#2~\c__gzt_aside_string_tl
+ }
+}
+\tl_new:N \g__gzt_font_designer_text_tl%
+\cs_new_protected:Nn \__gzt_font_designer_text:n
+{
+ \tl_gset:Nn \g__gzt_font_designer_text_tl { #1 }
+}
+\NewDocumentCommand \fontdesignertext {m}
+{
+ \__gzt_font_designer_text:n {#1}%
+}
+\tl_new:N \g__gzt_printer_text_tl%
+\cs_new_protected:Nn \__gzt_printer_text:n
+{
+ \tl_gset:Nn \g__gzt_printer_text_tl { #1 }
+}
+\NewDocumentCommand \printertext {m}
+{
+ \__gzt_printer_text:n {#1}%
+}
+\renewcommand{\textflush}{flushepinormal}
+\cs_set_eq:NN \__gzt_orig_epigraph \epigraph
+\cs_new_protected:Nn \__gzt_epigraph:nn
+{
+ \bool_if:nTF { \tl_if_empty_p:n {#2} }
+ {
+ \setlength{\epigraphrule}{\c_zero_dim}
+ }
+ {
+ \setlength{\epigraphrule}{.4\p@}
+ }
+ \__gzt_orig_epigraph{%
+ \emph{%
+ \enquote{%
+ #1%
+ }%
+ }%
+ }%
+ {%
+ #2
+ }
+}
+\RenewDocumentCommand \epigraph { m m }
+{
+ \__gzt_epigraph:nn {#1}{#2}%
+}
+\NewDocumentEnvironment{authorsinstructions}{}
+{%
+ \begingroup
+ \tcbverbatimwrite{\c__gzt_authors_instructions_file_tl}
+}%
+{
+ \endtcbverbatimwrite
+ \endgroup
+}
+\lstdefinestyle{__gzt_lst_style}{%
+ escapechar=+,
+ language=[LaTeX]TeX,
+ texcsstyle=*\bfseries,
+ breaklines=true,
+ basicstyle=\normalfont\ttfamily,
+ columns=flexible,
+ inputencoding=utf8/latin1
+}%
+\DeclareTotalTCBox{\gztverb}{ v }{verbatim,blank,fuzzy~halo=0pt~with~__gzt_light_generic_dark_color!8}{#1}
+\NewTCBListing{gztcode}{ !O{} }{%
+ listing~style=__gzt_lst_style,
+ listing~only,
+ enlarge~top~by=\medskipamount,
+ breakable,
+ #1%
+}
+\DeclareTColorBox[blend~into=figures]{gztfigure}{ O{} }
+{
+ ,width=\linewidth%
+ ,blend~before~title=dash%
+ ,__gzt_tcb_floats_style%
+ ,#1%
+ ,code={\ifdefempty{\kvtcb@title}{\tcbset{__gzt_tcb_notitle}}{}}%
+}
+\DeclareTColorBox[blend~into=figures]{gztfigure*}{ O{} }
+{
+ ,float*
+ ,blend~before~title=dash%
+ ,width=\textwidth%
+ ,__gzt_tcb_floats_style%
+ ,#1%
+ ,code={\ifdefempty{\kvtcb@title}{\tcbset{__gzt_tcb_notitle}}{}}%
+}
+\DeclareTColorBox[blend~into=tables]{gzttable}{ O{} }
+{
+ ,width=\linewidth%
+ ,blend~before~title=dash%
+ ,__gzt_tcb_floats_style%
+ ,#1%
+ ,code={\ifdefempty{\kvtcb@title}{\tcbset{__gzt_tcb_notitle}}{}}%
+}
+\DeclareTColorBox[blend~into=tables]{gzttable*}{ O{} }
+{
+ ,float*
+ ,blend~before~title=dash%
+ ,width=\textwidth%
+ ,__gzt_tcb_floats_style%
+ ,#1%
+ ,code={\ifdefempty{\kvtcb@title}{\tcbset{__gzt_tcb_notitle}}{}}%
+}
+\DeclareTColorBox{gztframe}{ O{} }
+{
+ ,width=\linewidth%
+ ,__gzt_tcb_floats_style%
+ ,#1%
+}
+\DeclareTColorBox{gztframe*}{ O{} }
+{
+ ,float*
+ ,width=\textwidth%
+ ,__gzt_tcb_floats_style%
+ ,#1%
+}
+\DeclareTColorBox{gztscan}{ O{} }
+{
+ #1%
+ ,width=\textwidth%
+ ,__gzt_tcb_floats_style%
+ ,size=tight%
+}
+\DeclareTColorBox{__gzt_book_review}{ O{} }
+{
+ overlay~unbroken~and~first={%
+ \node at (frame.north~west) {
+ {
+ \makebox[\c_zero_dim][l]{%
+ \adjustbox{raise={-2\height+\c__gzt_book_review_frontcover_extend_dim}{\c_zero_dim}}{%
+ \includegraphics[width=20mm]{\g__gzt_bookreview_frontcover_tl}%
+ }%
+ }
+ }
+ };
+ },
+ __gzt_tcb_book_review_box_style,
+ #1
+}
+\DeclareTColorBox{__gzt_bibliography_tcbox}{ O{} }
+{
+ __gzt_tcb_bibliography_style,
+ #1
+}
+\DeclareTColorBox{__gzt_minibiographies_acknowledgements_tcbox}{ O{} }
+{
+ __gzt_tcb_minibiographies_acknowledgements_style,
+ #1
+}
+\DeclareTColorBox{inset}{ O{} }
+{
+ __gzt_tcb_minibiographies_acknowledgements_style,
+ #1
+}
+\NewDocumentEnvironment{bookreview}{ O{} m }
+{
+ \keys_set:nn { gzt/bookreview } { #2 }
+ \begin{__gzt_book_review}[#1]
+ \xpatchfieldformat{title}{mkbibemph}{textbf}{}{}%
+ \xpretonameformat{author}{\color{__gzt_people_color}}{}{}%
+ \g__gzt_blx_given_first_inits_false_tl
+ \noindent%
+ \parbox[][21.5mm][l]{\linewidth}{\fullcite{\g__gzt_bookreview_bibkey_tl}}
+ \tcblower
+}{
+ \begin{flushright}
+ % \g__gzt_reviewer_tl
+ \bigskip
+ \citereviewer{\g__gzt_bookreview_bibkey_tl}\\
+ \citereviewerinstitution{\g__gzt_bookreview_bibkey_tl}
+ \end{flushright}
+ % \vspace*{10mm}
+ \mbox{}
+ \end{__gzt_book_review}
+}
+\DeclareTColorBox{__gzt_book_advertisement}{ O{} }
+{
+ __gzt_tcb_book_advertisement_box_style,
+ #1
+}
+\DeclareTColorBox{__gzt_inside_cover_tcb}{ O{} }
+{
+ #1
+}
+\NewDocumentCommand \bookadvertisement {O{} m}
+{
+ \newpage{}
+ \mbox{}
+ \vfill
+ \begin{__gzt_book_advertisement}[#1]
+ \fullcite{#2}
+ \par
+ \bigskip
+ \tcblower
+ \includegraphics[height=22.5mm]{\c__gzt_smf_logo_file_string_tl}%
+ \par{}
+ \smallskip%
+ \url{\l__gzt_journal_url_tl}
+ \end{__gzt_book_advertisement}
+ \vfill
+ \newpage
+ \bool_gset_false:N \g__gzt_advertisement_bool
+ \bool_gset_true:N \g__gzt_mainmatter_bool
+}
+\ProcessKeysOptions { gztarticle }
+\AddToHook{enddocument}{%
+ \bool_if:NT {\g__gzt_multicols_bool} {
+ \end{multicols}%
+ }
+ \bool_if:NT {\g__gzt_refsection_bool} {
+ \end{refsection}
+ }
+}
+\pgfplotsset{%
+ /pgf/number~format/.cd,
+ use~comma,
+ 1000~sep={\,},
+ min~exponent~for~1000~sep=4
+}%
+\defbibheading{bibassection}[\bibname]{\section*{#1}}%
+\renewcommand{\bibfont}{\normalfont\footnotesize}
+\exp_after:wN\addbibresource\exp_after:wN{\c__gzt_issue_bib_path_string_tl}
+\@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}
+\renewcommand*\bibnamedelimc{\addnbspace}
+\renewcommand*\bibnamedelimd{\addnbspace}
+\renewbibmacro{in:}{%
+ \ifentrytype{article}{}{\printtext{\bibstring{in}\intitlepunct}}}
+\renewbibmacro*{journal}{%
+ \iffieldundef{shortjournal}%
+ {%
+ \iffieldundef{journaltitle}
+ {}
+ {%
+ \printtext[journaltitle]%
+ {%
+ \printfield[titlecase]{journaltitle}%
+ \setunit{\subtitlepunct}%
+ \printfield[titlecase]{journalsubtitle}%
+ }%
+ }%
+ }%
+ {\printtext[journaltitle]{\printfield[titlecase]{shortjournal}}}%
+}
+\renewbibmacro*{volume+number+eid}{%
+ \printfield{volume}%
+ \setunit{\addcomma\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
+\ifkp@easyscsl
+\DeclareRobustCommand{\itshape}{\not@math@alphabet\itshape\mathit%
+ \ifthenelse{\equal{\f@shape}{\scdefault}}{\fontshape{scsl}}{%
+ \fontshape\itdefault}\selectfont}
+\fi
+\DeclareMathAlphabet\mathfrak{U}{euf}{m}{n}
+\SetMathAlphabet\mathfrak{bold}{U}{euf}{b}{n}
+\@ifpackageloaded{draftwatermark}{%
+ \SetWatermarkColor{gray!10}%
+ \SetWatermarkFontSize{30mm}%
+ \SetWatermarkText{\text_uppercase:n{\c__gzt_draftwatermark_string_tl}}%
+}{%
+}
+\tikzset{
+ __gzt_dots/.style={
+ line~width=\c__gzt_tikz_dot_diameter_dim,
+ line~cap=round,
+ dash~pattern=on~0pt~off~\c__gzt_tikz_dot_spacing_dim
+ },
+ __gzt_tcb_segmentation_style/.style={
+ __gzt_dots,
+ draw=__gzt_dotfill_color,
+ shorten~>=~\c__gzt_tcb_left_dim+\c__gzt_tcb_boxsep_dim,
+ shorten~<=~\c__gzt_tcb_left_dim+\c__gzt_tcb_boxsep_dim,
+ }
+}
+\tcbset{
+ copyright/.style={%
+ overlay={%
+ \node[rotate=90,anchor=south~west,font=\tiny] at (frame.south~east) {%
+ \begin{minipage}[t]{\tcbtextheight}
+ \copyright{}~#1%
+ \end{minipage}
+ };%
+ }%
+ }%
+}
+\tcbset{%
+ __gzt_tcb_floats_style/.style={%
+ enhanced%
+ ,every~float=\centering%
+ ,coltitle=__gzt_generic_dark_color%
+ ,colbacktitle=__gzt_float_title_bg_color%
+ ,colback=white%
+ ,colframe=__gzt_float_frame_color%
+ ,center~upper%
+ ,sharp~corners=all%
+ ,boxrule=0.3mm%
+ }%
+}
+\tcbset{%
+ __gzt_tcb_notitle/.style={%
+ blend~before~title~code={##1}
+ ,title={\c_space_tl}%
+ }%
+}
+\tcbset{%
+ __gzt_tcb_book_review_box_style/.style={%
+ enhanced,%
+ colback=__gzt_book_review_frame_bg_color,%
+ breakable,%
+ % height=50mm,%
+ boxrule=\c_zero_dim,
+ sharp~corners=all,%
+ skin=enhancedlast,
+ leftupper=25mm,
+ enlarge~bottom~finally~by=-1mm,
+ middle=4mm,
+ segmentation~style={__gzt_tcb_segmentation_style}%
+ }
+}
+\tcbset{%
+ __gzt_tcb_book_advertisement_box_style/.style={%
+ enhanced,%
+ colframe=__gzt_book_advertisement_frame_color,%
+ colback=__gzt_book_advertisement_bg_color,%
+ center~lower,
+ sharp~corners=all,%
+ % skin=enhancedlast,
+ % middle=4mm,
+ lower~separated=false,
+ % segmentation~style={__gzt_tcb_segmentation_style}%
+ }
+}
+\tcbset{%
+ __gzt_tcb_inside_cover_style/.style={%
+ % split=0.6,%
+ colback=__gzt_inside_frontcover_frame_bg_color,%
+ colbacktitle=__gzt_inside_frontcover_frame_bg_color,%
+ sharp~corners=all,%
+ center~title,%
+ coltitle=__gzt_inside_frontcover_frame_title_color,%
+ fonttitle=\bfseries\large,%
+ boxrule=\c_zero_dim,%
+ toptitle=3mm,%
+ bottomtitle=4mm,%
+ frame~hidden,%
+ enhanced,%
+ height=\c__gzt_layoutheight_dim-\c__gzt_topmargin_inside_cover_dim-\c__gzt_botmargin_dim,
+ width=\c__gzt_inside_cover_box_width_dim,
+ middle=4mm,
+ segmentation~style={__gzt_tcb_segmentation_style}%
+ },
+ __gzt_tcb_inside_frontcover_style/.style={%
+ __gzt_tcb_inside_cover_style,
+ enlarge~left~by=-\c__gzt_inside_cover_offset_dim,
+ },
+ __gzt_tcb_inside_backcover_style/.style={%
+ __gzt_tcb_inside_cover_style,
+ enlarge~left~by=\c__gzt_inside_cover_offset_dim,
+ }
+}
+\AddToHook{begindocument/before}{%
+ \bool_if:NTF {\g__gzt_special_edition_bool} {
+ \tcbset{
+ __gzt_tcb_inside_frontcover_style/.append~style={%
+ title=\c__gzt_special_edition_editorial_board_string_tl
+ },
+ __gzt_tcb_inside_backcover_style/.append~style={%
+ notitle
+ },
+ }
+ }{
+ \tcbset{
+ __gzt_tcb_inside_frontcover_style/.append~style={%
+ title=\c__gzt_editorial_board_string_tl
+ },
+ __gzt_tcb_inside_backcover_style/.append~style={%
+ title=\file_if_exist:nT { \c__gzt_authors_instructions_file_tl } {%
+ \c__gzt_authors_instructions_string_tl
+ }
+ },
+ }
+ }
+}
+\tcbset{%
+ __gzt_tcb_bibliography_style/.style={%
+ colback=__gzt_bibliography_minibios_acknowledgements_bg_color,
+ breakable,
+ boxrule=\c_zero_dim,
+ sharp~corners=all,%
+ enhanced
+ }
+}
+\tcbset{%
+ __gzt_tcb_minibiographies_acknowledgements_style/.style={%
+ colback=__gzt_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__gzt_tcb_left_dim,
+ boxsep=\c__gzt_tcb_boxsep_dim,
+}
+\setlist[1]{labelindent=\parindent}
+\setlist[itemize]{label=\textendash{}, nosep}
+\setlist{%
+ labelwidth=\widthof{\textendash},
+ itemsep=0.4ex plus 0.2ex minus 0.2ex,
+ parsep=0.4ex plus 0.2ex minus 0.2ex,
+ topsep=0.8ex plus 0.4ex minus 0.4ex,
+ partopsep=0.4ex plus 0.2ex minus 0.2ex,
+ leftmargin=!%
+}
+\setlist[description]{
+ font=
+ \bool_if:nTF { \g__gzt_books_rubric_bool || \g__gzt_inside_frontcover_bool || \g__gzt_inside_backcover_bool }
+ {
+ \color{black}
+ }{
+ \color{__gzt_description_label_light_color}
+ }
+ \bfseries
+}
+\DeclarePlainStyle{«~}{~»}{`}{'}
+\setcounter{topnumber}{3}
+\renewcommand{\topfraction}{0.8}
+\addtolength{\skip\footins}{.25\baselineskip}
+\setlength{\columnsep}{7mm}%
+\renewcommand{\thesection}{\arabic{section}}%
+\@ifpackageloaded{siunitx}{%
+ \sisetup{locale=FR}
+}
+\arrayrulecolor{__gzt_arrayrule_color}%
+\addto\captionsfrench{\def\tablename{{\scshape Tableau}}}%
+\RenewDocumentCommand \vec { m } {
+ \vv{#1}
+}
+\cs_set_eq:NN \__gzt_orig_usetikzlibrary \usetikzlibrary
+\RenewDocumentCommand \usetikzlibrary { m } {
+ \shorthandoff{:}%
+ \__gzt_orig_usetikzlibrary{#1}
+ \shorthandon{:}%
+ % \begingroup
+ % \NoAutoSpacing
+ % \__gzt_orig_usetikzlibrary{#1}
+ % \endgroup
+}
+\cs_new_protected:Nn \__gzt_bilingual:nnn
+{
+ \deftranslation[to=French]{#1}{#2}%
+ \deftranslation[to=English]{#1}{#3}%
+}
+\cs_new_protected:Nn \__gzt_new_theorem:nnnn
+{
+ % \__gzt_bilingual:nnn {#2}{#3}{#4}
+ \deftranslation[to=French]{#2}{#3}%
+ \deftranslation[to=English]{#2}{#4}%
+ \declaretheorem[%
+ #1,%
+ name=\translate{#2}
+ ]{#2}
+ \declaretheorem[%
+ #1,%
+ name=\translate{#2},
+ numbered=no
+ ]{#2*}
+}
+\cs_generate_variant:Nn \__gzt_new_theorem:nnnn { nnVV }
+\declaretheoremstyle[spaceabove=3pt,notefont=\bfseries,bodyfont=\itshape]{theorem}
+\declaretheoremstyle[spaceabove=3pt,notefont=\bfseries,bodyfont=\normalfont]{definition}
+\declaretheoremstyle[spaceabove=3pt,bodyfont=\normalfont,qed=\ensuremath{\qedsymbol},headfont=\normalfont\itshape,numbered=no]{proof}
+\RenewDocumentCommand \newtheorem { O{} m }
+{
+ \tl_clear:N \l__gzt_newtheorem_style_tl
+ \tl_clear:N \l__gzt_newtheorem_frenchtitle_tl
+ \tl_clear:N \l__gzt_newtheorem_englishtitle_tl
+ \tl_set:Nn \l__gzt_newtheorem_englishtitle_tl {
+ \text_titlecase:n {#2}
+ }
+ \tl_set:Nf \l__gzt_newtheorem_frenchtitle_tl {
+ \l__gzt_newtheorem_englishtitle_tl
+ }
+ \tl_set:Nn \l__gzt_newtheorem_style_tl {
+ theorem
+ }
+ \IfNoValueF {#1}
+ {
+ \keys_set:nn { gzt/newtheorem } { #1 }
+ }
+ % \tl_if_eq:VVF { \l__gzt_newtheorem_englishtitle_tl } { \MakeUppercase #2 }
+ % {%
+ % \tl_if_eq:NNF { \l__gzt_newtheorem_frenchtitle_tl } { \l__gzt_newtheorem_englishtitle_tl }
+ % {%
+ % \tl_set:Nf \l__gzt_newtheorem_frenchtitle_tl {
+ % \l__gzt_newtheorem_englishtitle_tl
+ % }
+ % }
+ % }
+ \__gzt_new_theorem:nnVV {style=\l__gzt_newtheorem_style_tl}{#2}{\l__gzt_newtheorem_frenchtitle_tl}{\l__gzt_newtheorem_englishtitle_tl}
+}
+\newtheorem[frenchtitle=Th\'eor\`eme]{theorem}
+\newtheorem[frenchtitle=Corollaire]{corollary}
+\newtheorem{conjecture}
+\newtheorem{proposition}
+\newtheorem[frenchtitle=Lemme]{lemma}
+\newtheorem[frenchtitle=Axiome]{axiom}
+\newtheorem[style=definition,frenchtitle=D\'efinition]{definition}
+\newtheorem[style=definition,frenchtitle=Remarque]{remark}
+\newtheorem[style=definition,frenchtitle=Exemple]{example}
+\newtheorem[style=definition]{notation}
+\let\proof\relax
+\newtheorem[style=proof,frenchtitle=Preuve]{proof}
+\cs_new_protected:Nn \__gzt_clone_theorem:nn
+{
+ \NewDocumentEnvironment{#1}{}
+ {
+ \begin{#2}
+ }
+ {
+ \end{#2}
+ }
+ \NewDocumentEnvironment{#1*}{}
+ {
+ \begin{#2*}
+ }
+ {
+ \end{#2*}
+ }
+}
+\__gzt_clone_theorem:nn {theoreme} {theorem}
+\__gzt_clone_theorem:nn {corollaire}{corollary}
+\__gzt_clone_theorem:nn {lemme}{lemma}
+\__gzt_clone_theorem:nn {axiome}{axiom}
+\__gzt_clone_theorem:nn {remarque}{remark}
+\__gzt_clone_theorem:nn {exemple}{example}
+\__gzt_clone_theorem:nn {preuve}{proof}
+\DeclareMathOperator{\cotan}{cotan}
+\DeclareMathOperator{\Arccos}{Arccos}
+\DeclareMathOperator{\Arcsin}{Arcsin}
+\DeclareMathOperator{\Arctan}{Arctan}
+\DeclareMathOperator{\Argch}{Argch}
+\DeclareMathOperator{\Argsh}{Argsh}
+\DeclareMathOperator{\Argth}{Argth}
+\cs_set_eq:NN \__gzt_orig_arccos \arccos
+\cs_set_eq:NN \__gzt_orig_arcsin \arcsin
+\cs_set_eq:NN \__gzt_orig_arctan \arctan
+\RenewDocumentCommand \arccos {} {
+ \IfLanguageName {french}{\Arccos}{\__gzt_orig_arccos}%
+}
+\RenewDocumentCommand \arcsin {} {
+ \IfLanguageName {french}{\Arcsin}{\__gzt_orig_arcsin}%
+}
+\RenewDocumentCommand \arctan {} {
+ \IfLanguageName {french}{\Arctan}{\__gzt_orig_arctan}%
+}
+\DeclareMathOperator{\ch}{ch}
+\DeclareMathOperator{\sh}{sh}
+\cs_set_eq:NN \__gzt_orig_tanh \tanh
+\RenewDocumentCommand \tanh {} {
+ \IfLanguageName {french}{\operatorname{th}}{\__gzt_orig_tanh}%
+}
+\cs_set_eq:NN \__gzt_orig_log \log
+\cs_set_eq:NN \__gzt_orig_lg \lg
+\RenewDocumentCommand \log { s } {
+ \IfBooleanTF {#1}
+ {
+ \__gzt_orig_log
+ }
+ {
+ \ln
+ }
+}
+\RenewDocumentCommand \lg { s } {
+ \IfBooleanTF {#1}
+ {
+ \__gzt_orig_lg
+ }
+ {
+ \ln
+ }
+}
+\cs_set_eq:NN \__gzt_orig_leq \leq
+\cs_set_eq:NN \__gzt_orig_geq \geq
+\RenewDocumentCommand \le {} {%
+ \IfLanguageName {french}{\leqslant}{\__gzt_orig_leq}%
+}
+\RenewDocumentCommand \leq {} {%
+ \IfLanguageName {french}{\leqslant}{\__gzt_orig_leq}%
+}
+\RenewDocumentCommand \ge {} {%
+ \IfLanguageName {french}{\geqslant}{\__gzt_orig_geq}%
+}
+\RenewDocumentCommand \geq {} {%
+ \IfLanguageName {french}{\geqslant}{\__gzt_orig_geq}%
+}
+\NewDocumentCommand \N {} {\mathbb{N}}
+\NewDocumentCommand \Z {} {\mathbb{Z}}
+\NewDocumentCommand \D {} {\mathbb{D}}
+\NewDocumentCommand \Q {} {\mathbb{Q}}
+\NewDocumentCommand \R {} {\mathbb{R}}
+\NewDocumentCommand \C {} {\mathbb{C}}
+\NewDocumentCommand \K {} {\mathbb{K}}
+\ExplSyntaxOff
+%% ----------------------------------------------------------------------------
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% 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.3c or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Denis Bitouz'e.
+%%
+%% This work consists of the file gzt.dtx
+%% and the derived files gzt.cls,
+%% gztarticle.cls,
+%% gzt.ins,
+%% gzt.pdf,
+%% and a number of configuration files.
+%%
+%% End of file `gztarticle.cls'.
diff --git a/macros/latex/contrib/gzt/tex/latex/gzt/images/README-PICTOGRAMS.md b/macros/latex/contrib/gzt/tex/latex/gzt/images/README-PICTOGRAMS.md
new file mode 100644
index 0000000000..138d2a4e89
--- /dev/null
+++ b/macros/latex/contrib/gzt/tex/latex/gzt/images/README-PICTOGRAMS.md
@@ -0,0 +1,6 @@
+# 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).
diff --git a/macros/latex/contrib/gzt/tex/latex/gzt/images/gzt-logo.pdf b/macros/latex/contrib/gzt/tex/latex/gzt/images/gzt-logo.pdf
new file mode 100644
index 0000000000..edde3a5f3f
--- /dev/null
+++ b/macros/latex/contrib/gzt/tex/latex/gzt/images/gzt-logo.pdf
Binary files differ
diff --git a/macros/latex/contrib/rbt-mathnotes/LICENSE.txt b/macros/latex/contrib/rbt-mathnotes/LICENSE.txt
new file mode 100644
index 0000000000..2244313901
--- /dev/null
+++ b/macros/latex/contrib/rbt-mathnotes/LICENSE.txt
@@ -0,0 +1,416 @@
+The LaTeX Project Public License
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+
+LPPL Version 1.3c 2008-05-04
+
+Copyright 1999 2002-2008 LaTeX3 Project
+ Everyone is allowed to distribute verbatim copies of this
+ license document, but modification of it is not allowed.
+
+
+PREAMBLE
+========
+
+The LaTeX Project Public License (LPPL) is the primary license under
+which the LaTeX kernel and the base LaTeX packages are distributed.
+
+You may use this license for any work of which you hold the copyright
+and which you wish to distribute. This license may be particularly
+suitable if your work is TeX-related (such as a LaTeX package), but
+it is written in such a way that you can use it even if your work is
+unrelated to TeX.
+
+The section `WHETHER AND HOW TO DISTRIBUTE WORKS UNDER THIS LICENSE',
+below, gives instructions, examples, and recommendations for authors
+who are considering distributing their works under this license.
+
+This license gives conditions under which a work may be distributed
+and modified, as well as conditions under which modified versions of
+that work may be distributed.
+
+We, the LaTeX3 Project, believe that the conditions below give you
+the freedom to make and distribute modified versions of your work
+that conform with whatever technical specifications you wish while
+maintaining the availability, integrity, and reliability of
+that work. If you do not see how to achieve your goal while
+meeting these conditions, then read the document `cfgguide.tex'
+and `modguide.tex' in the base LaTeX distribution for suggestions.
+
+
+DEFINITIONS
+===========
+
+In this license document the following terms are used:
+
+ `Work'
+ Any work being distributed under this License.
+
+ `Derived Work'
+ Any work that under any applicable law is derived from the Work.
+
+ `Modification'
+ Any procedure that produces a Derived Work under any applicable
+ law -- for example, the production of a file containing an
+ original file associated with the Work or a significant portion of
+ such a file, either verbatim or with modifications and/or
+ translated into another language.
+
+ `Modify'
+ To apply any procedure that produces a Derived Work under any
+ applicable law.
+
+ `Distribution'
+ Making copies of the Work available from one person to another, in
+ whole or in part. Distribution includes (but is not limited to)
+ making any electronic components of the Work accessible by
+ file transfer protocols such as FTP or HTTP or by shared file
+ systems such as Sun's Network File System (NFS).
+
+ `Compiled Work'
+ A version of the Work that has been processed into a form where it
+ is directly usable on a computer system. This processing may
+ include using installation facilities provided by the Work,
+ transformations of the Work, copying of components of the Work, or
+ other activities. Note that modification of any installation
+ facilities provided by the Work constitutes modification of the Work.
+
+ `Current Maintainer'
+ A person or persons nominated as such within the Work. If there is
+ no such explicit nomination then it is the `Copyright Holder' under
+ any applicable law.
+
+ `Base Interpreter'
+ A program or process that is normally needed for running or
+ interpreting a part or the whole of the Work.
+
+ A Base Interpreter may depend on external components but these
+ are not considered part of the Base Interpreter provided that each
+ external component clearly identifies itself whenever it is used
+ interactively. Unless explicitly specified when applying the
+ license to the Work, the only applicable Base Interpreter is a
+ `LaTeX-Format' or in the case of files belonging to the
+ `LaTeX-format' a program implementing the `TeX language'.
+
+
+
+CONDITIONS ON DISTRIBUTION AND MODIFICATION
+===========================================
+
+1. Activities other than distribution and/or modification of the Work
+are not covered by this license; they are outside its scope. In
+particular, the act of running the Work is not restricted and no
+requirements are made concerning any offers of support for the Work.
+
+2. You may distribute a complete, unmodified copy of the Work as you
+received it. Distribution of only part of the Work is considered
+modification of the Work, and no right to distribute such a Derived
+Work may be assumed under the terms of this clause.
+
+3. You may distribute a Compiled Work that has been generated from a
+complete, unmodified copy of the Work as distributed under Clause 2
+above, as long as that Compiled Work is distributed in such a way that
+the recipients may install the Compiled Work on their system exactly
+as it would have been installed if they generated a Compiled Work
+directly from the Work.
+
+4. If you are the Current Maintainer of the Work, you may, without
+restriction, modify the Work, thus creating a Derived Work. You may
+also distribute the Derived Work without restriction, including
+Compiled Works generated from the Derived Work. Derived Works
+distributed in this manner by the Current Maintainer are considered to
+be updated versions of the Work.
+
+5. If you are not the Current Maintainer of the Work, you may modify
+your copy of the Work, thus creating a Derived Work based on the Work,
+and compile this Derived Work, thus creating a Compiled Work based on
+the Derived Work.
+
+6. If you are not the Current Maintainer of the Work, you may
+distribute a Derived Work provided the following conditions are met
+for every component of the Work unless that component clearly states
+in the copyright notice that it is exempt from that condition. Only
+the Current Maintainer is allowed to add such statements of exemption
+to a component of the Work.
+
+ a. If a component of this Derived Work can be a direct replacement
+ for a component of the Work when that component is used with the
+ Base Interpreter, then, wherever this component of the Work
+ identifies itself to the user when used interactively with that
+ Base Interpreter, the replacement component of this Derived Work
+ clearly and unambiguously identifies itself as a modified version
+ of this component to the user when used interactively with that
+ Base Interpreter.
+
+ b. Every component of the Derived Work contains prominent notices
+ detailing the nature of the changes to that component, or a
+ prominent reference to another file that is distributed as part
+ of the Derived Work and that contains a complete and accurate log
+ of the changes.
+
+ c. No information in the Derived Work implies that any persons,
+ including (but not limited to) the authors of the original version
+ of the Work, provide any support, including (but not limited to)
+ the reporting and handling of errors, to recipients of the
+ Derived Work unless those persons have stated explicitly that
+ they do provide such support for the Derived Work.
+
+ d. You distribute at least one of the following with the Derived Work:
+
+ 1. A complete, unmodified copy of the Work;
+ if your distribution of a modified component is made by
+ offering access to copy the modified component from a
+ designated place, then offering equivalent access to copy
+ the Work from the same or some similar place meets this
+ condition, even though third parties are not compelled to
+ copy the Work along with the modified component;
+
+ 2. Information that is sufficient to obtain a complete,
+ unmodified copy of the Work.
+
+7. If you are not the Current Maintainer of the Work, you may
+distribute a Compiled Work generated from a Derived Work, as long as
+the Derived Work is distributed to all recipients of the Compiled
+Work, and as long as the conditions of Clause 6, above, are met with
+regard to the Derived Work.
+
+8. The conditions above are not intended to prohibit, and hence do not
+apply to, the modification, by any method, of any component so that it
+becomes identical to an updated version of that component of the Work as
+it is distributed by the Current Maintainer under Clause 4, above.
+
+9. Distribution of the Work or any Derived Work in an alternative
+format, where the Work or that Derived Work (in whole or in part) is
+then produced by applying some process to that format, does not relax or
+nullify any sections of this license as they pertain to the results of
+applying that process.
+
+10. a. A Derived Work may be distributed under a different license
+ provided that license itself honors the conditions listed in
+ Clause 6 above, in regard to the Work, though it does not have
+ to honor the rest of the conditions in this license.
+
+ b. If a Derived Work is distributed under a different license, that
+ Derived Work must provide sufficient documentation as part of
+ itself to allow each recipient of that Derived Work to honor the
+ restrictions in Clause 6 above, concerning changes from the Work.
+
+11. This license places no restrictions on works that are unrelated to
+the Work, nor does this license place any restrictions on aggregating
+such works with the Work by any means.
+
+12. Nothing in this license is intended to, or may be used to, prevent
+complete compliance by all parties with all applicable laws.
+
+
+NO WARRANTY
+===========
+
+There is no warranty for the Work. Except when otherwise stated in
+writing, the Copyright Holder provides the Work `as is', without
+warranty of any kind, either expressed or implied, including, but not
+limited to, the implied warranties of merchantability and fitness for a
+particular purpose. The entire risk as to the quality and performance
+of the Work is with you. Should the Work prove defective, you assume
+the cost of all necessary servicing, repair, or correction.
+
+In no event unless required by applicable law or agreed to in writing
+will The Copyright Holder, or any author named in the components of the
+Work, or any other party who may distribute and/or modify the Work as
+permitted above, be liable to you for damages, including any general,
+special, incidental or consequential damages arising out of any use of
+the Work or out of inability to use the Work (including, but not limited
+to, loss of data, data being rendered inaccurate, or losses sustained by
+anyone as a result of any failure of the Work to operate with any other
+programs), even if the Copyright Holder or said author or said other
+party has been advised of the possibility of such damages.
+
+
+MAINTENANCE OF THE WORK
+=======================
+
+The Work has the status `author-maintained' if the Copyright Holder
+explicitly and prominently states near the primary copyright notice in
+the Work that the Work can only be maintained by the Copyright Holder
+or simply that it is `author-maintained'.
+
+The Work has the status `maintained' if there is a Current Maintainer
+who has indicated in the Work that they are willing to receive error
+reports for the Work (for example, by supplying a valid e-mail
+address). It is not required for the Current Maintainer to acknowledge
+or act upon these error reports.
+
+The Work changes from status `maintained' to `unmaintained' if there
+is no Current Maintainer, or the person stated to be Current
+Maintainer of the work cannot be reached through the indicated means
+of communication for a period of six months, and there are no other
+significant signs of active maintenance.
+
+You can become the Current Maintainer of the Work by agreement with
+any existing Current Maintainer to take over this role.
+
+If the Work is unmaintained, you can become the Current Maintainer of
+the Work through the following steps:
+
+ 1. Make a reasonable attempt to trace the Current Maintainer (and
+ the Copyright Holder, if the two differ) through the means of
+ an Internet or similar search.
+
+ 2. If this search is successful, then enquire whether the Work
+ is still maintained.
+
+ a. If it is being maintained, then ask the Current Maintainer
+ to update their communication data within one month.
+
+ b. If the search is unsuccessful or no action to resume active
+ maintenance is taken by the Current Maintainer, then announce
+ within the pertinent community your intention to take over
+ maintenance. (If the Work is a LaTeX work, this could be
+ done, for example, by posting to comp.text.tex.)
+
+ 3a. If the Current Maintainer is reachable and agrees to pass
+ maintenance of the Work to you, then this takes effect
+ immediately upon announcement.
+
+ b. If the Current Maintainer is not reachable and the Copyright
+ Holder agrees that maintenance of the Work be passed to you,
+ then this takes effect immediately upon announcement.
+
+ 4. If you make an `intention announcement' as described in 2b. above
+ and after three months your intention is challenged neither by
+ the Current Maintainer nor by the Copyright Holder nor by other
+ people, then you may arrange for the Work to be changed so as
+ to name you as the (new) Current Maintainer.
+
+ 5. If the previously unreachable Current Maintainer becomes
+ reachable once more within three months of a change completed
+ under the terms of 3b) or 4), then that Current Maintainer must
+ become or remain the Current Maintainer upon request provided
+ they then update their communication data within one month.
+
+A change in the Current Maintainer does not, of itself, alter the fact
+that the Work is distributed under the LPPL license.
+
+If you become the Current Maintainer of the Work, you should
+immediately provide, within the Work, a prominent and unambiguous
+statement of your status as Current Maintainer. You should also
+announce your new status to the same pertinent community as
+in 2b) above.
+
+
+WHETHER AND HOW TO DISTRIBUTE WORKS UNDER THIS LICENSE
+======================================================
+
+This section contains important instructions, examples, and
+recommendations for authors who are considering distributing their
+works under this license. These authors are addressed as `you' in
+this section.
+
+Choosing This License or Another License
+----------------------------------------
+
+If for any part of your work you want or need to use *distribution*
+conditions that differ significantly from those in this license, then
+do not refer to this license anywhere in your work but, instead,
+distribute your work under a different license. You may use the text
+of this license as a model for your own license, but your license
+should not refer to the LPPL or otherwise give the impression that
+your work is distributed under the LPPL.
+
+The document `modguide.tex' in the base LaTeX distribution explains
+the motivation behind the conditions of this license. It explains,
+for example, why distributing LaTeX under the GNU General Public
+License (GPL) was considered inappropriate. Even if your work is
+unrelated to LaTeX, the discussion in `modguide.tex' may still be
+relevant, and authors intending to distribute their works under any
+license are encouraged to read it.
+
+A Recommendation on Modification Without Distribution
+-----------------------------------------------------
+
+It is wise never to modify a component of the Work, even for your own
+personal use, without also meeting the above conditions for
+distributing the modified component. While you might intend that such
+modifications will never be distributed, often this will happen by
+accident -- you may forget that you have modified that component; or
+it may not occur to you when allowing others to access the modified
+version that you are thus distributing it and violating the conditions
+of this license in ways that could have legal implications and, worse,
+cause problems for the community. It is therefore usually in your
+best interest to keep your copy of the Work identical with the public
+one. Many works provide ways to control the behavior of that work
+without altering any of its licensed components.
+
+How to Use This License
+-----------------------
+
+To use this license, place in each of the components of your work both
+an explicit copyright notice including your name and the year the work
+was authored and/or last substantially modified. Include also a
+statement that the distribution and/or modification of that
+component is constrained by the conditions in this license.
+
+Here is an example of such a notice and statement:
+
+ %% pig.dtx
+ %% Copyright 2005 M. Y. Name
+ %
+ % 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 M. Y. Name.
+ %
+ % This work consists of the files pig.dtx and pig.ins
+ % and the derived file pig.sty.
+
+Given such a notice and statement in a file, the conditions
+given in this license document would apply, with the `Work' referring
+to the three files `pig.dtx', `pig.ins', and `pig.sty' (the last being
+generated from `pig.dtx' using `pig.ins'), the `Base Interpreter'
+referring to any `LaTeX-Format', and both `Copyright Holder' and
+`Current Maintainer' referring to the person `M. Y. Name'.
+
+If you do not want the Maintenance section of LPPL to apply to your
+Work, change `maintained' above into `author-maintained'.
+However, we recommend that you use `maintained', as the Maintenance
+section was added in order to ensure that your Work remains useful to
+the community even when you can no longer maintain and support it
+yourself.
+
+Derived Works That Are Not Replacements
+---------------------------------------
+
+Several clauses of the LPPL specify means to provide reliability and
+stability for the user community. They therefore concern themselves
+with the case that a Derived Work is intended to be used as a
+(compatible or incompatible) replacement of the original Work. If
+this is not the case (e.g., if a few lines of code are reused for a
+completely different task), then clauses 6b and 6d shall not apply.
+
+
+Important Recommendations
+-------------------------
+
+ Defining What Constitutes the Work
+
+ The LPPL requires that distributions of the Work contain all the
+ files of the Work. It is therefore important that you provide a
+ way for the licensee to determine which files constitute the Work.
+ This could, for example, be achieved by explicitly listing all the
+ files of the Work near the copyright notice of each file or by
+ using a line such as:
+
+ % This work consists of all files listed in manifest.txt.
+
+ in that place. In the absence of an unequivocal list it might be
+ impossible for the licensee to determine what is considered by you
+ to comprise the Work and, in such a case, the licensee would be
+ entitled to make reasonable conjectures as to which files comprise
+ the Work.
+
diff --git a/macros/latex/contrib/rbt-mathnotes/README.md b/macros/latex/contrib/rbt-mathnotes/README.md
new file mode 100644
index 0000000000..cf7c71a521
--- /dev/null
+++ b/macros/latex/contrib/rbt-mathnotes/README.md
@@ -0,0 +1,16 @@
+# rbt-mathnotes
+
+Rebecca Turner’s personal macros and styles for typesetting mathematics notes.
+
+See `rbt-mathnotes.pdf` for detailed documentation.
+
+Contents:
+
+- `rbt-mathnotes` package
+- `rbt-mathnotes` document class
+- `rbt-mathnotes-hw` document class, containing specialized commands for
+ typesetting homework assignments and solutions (in particular, the `problem`
+ environment and `\prob` command)
+- `rbt-mathnotes-formula-sheet` document class, optimized for stuffing as much
+ text as possible onto an exam “cheat sheet”
+- Examples of each document class in the `examples` directory
diff --git a/macros/latex/contrib/rbt-mathnotes/examples/cheat-sheet.pdf b/macros/latex/contrib/rbt-mathnotes/examples/cheat-sheet.pdf
new file mode 100644
index 0000000000..8f92b8337f
--- /dev/null
+++ b/macros/latex/contrib/rbt-mathnotes/examples/cheat-sheet.pdf
Binary files differ
diff --git a/macros/latex/contrib/rbt-mathnotes/examples/cheat-sheet.tex b/macros/latex/contrib/rbt-mathnotes/examples/cheat-sheet.tex
new file mode 100644
index 0000000000..11ff82a5a9
--- /dev/null
+++ b/macros/latex/contrib/rbt-mathnotes/examples/cheat-sheet.tex
@@ -0,0 +1,227 @@
+%% cheat-sheet.tex
+%% Copyright 2021 Rebecca B. Turner.
+%
+% 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 Rebecca B. Turner.
+%
+% This work consists of the files:
+% README.md
+% rbt-mathnotes.tex
+% rbt-mathnotes.sty
+% rbt-mathnotes.cls
+% rbt-mathnotes-util.sty
+% rbt-mathnotes-messages.sty
+% rbt-mathnotes-hw.cls
+% rbt-mathnotes-formula-sheet.cls
+% examples/cheat-sheet.tex
+% examples/multivar.tex
+% examples/topology-hw-1.tex
+% and the derived files:
+% rbt-mathnotes.pdf
+% examples/cheat-sheet.pdf
+% examples/multivar.pdf
+% examples/topology-hw-1.pdf
+
+\documentclass{rbt-mathnotes-formula-sheet}
+\usepackage{nicefrac}
+\ExplSyntaxOn
+\NewDocumentCommand \normalized { m }
+ { \frac { #1 } { \| #1 \| } }
+\let \gr \grad
+\def \ddx { \frac{d}{dx} }
+% VL = vector literal
+\NewDocumentCommand \vl { m } { \left\langle #1 \right\rangle }
+\ExplSyntaxOff
+
+\title{Formula Sheet}
+\author{Rebecca Turner}
+\date{2019-11-12}
+
+% "The most common size for index cards in North America and UK is 3 by 5
+% inches (76.2 by 127.0 mm), hence the common name 3-by-5 card. Other sizes
+% widely available include 4 by 6 inches (101.6 by 152.4 mm), 5 by 8 inches
+% (127.0 by 203.2 mm) and ISO-size A7 (74 by 105 mm or 2.9 by 4.1 in)."
+\mathnotes{
+ height = 4in ,
+ width = 6in ,
+}
+\begin{document}
+\maketitle
+\begin{gather*}
+% 12.2: Vectors
+% 12.3: Dot product
+ \textstyle\vec a \cdot \vec b = \sum_i a_i b_i = |\vec a| |\vec b| \cos \theta. \\
+% 12.4: Cross product
+ \vec a \times \vec b
+ % = \left| \begin{array}{rrr}
+ % \hat{i} & \hat{j} & \hat{k} \\
+ % a_1 & a_2 & a_3 \\
+ % b_1 & b_2 & b_3 \\
+ % \end{array} \right| \\
+ = \langle a_2 b_3 - a_3 b_2,
+ \quad a_3b_1 - a_1b_3, \\
+ a_1b_2 - a_2b_1 \rangle.\quad
+ |\vec a \times \vec b| = |\vec a| |\vec b| \sin \theta.
+% 12.5: Equations of lines and planes.
+\shortintertext{Param.\ eqns.\ of line through $\langle x_0,y_0,z_0 \rangle$
+par.\ to $\langle a,b,c \rangle$:}
+ x = x_0 + at,
+ \quad y = y_0 + bt,
+ \quad z = z_0 + ct. \\
+\text{Symm.\ eqns.: }
+ \frac{x-x_0}{a}
+ = \frac{y-y_0}{b}
+ = \frac{z-z_0}{c}. \\
+\shortintertext{Vec.\ eqn.\ of plane through $\vec r$ with $\vec n$ normal:}
+ \vec n \cdot (\vec r - \vec r_0) = 0,
+ \quad \vec n \cdot \vec r = \vec n \cdot \vec r_0. \\
+% 13.1: Vector functions
+% 13.2: Derivatives/integrals of vector functions
+% 13.3: Arc length and curvature
+\shortintertext{Length along a vec.\ fn.\ $\vec r(t)$:}
+ \textstyle\int_a^b \left|\vec r'(t)\right|\,dt = \int_a^b \sqrt{\sum_i
+ r_i'(t)^2}\,dt, \\
+\shortintertext{Unit tang.\ $\vec T(t) = \vec r'(t)/\left|\vec
+r'(t)\right|$, so curvature of $\vec r(t)$ w/r/t the arc len.\ fn. $s$:}
+ \kappa = \left|\frac{d\vec T}{ds}\right|
+ = \frac{\left| \vec T'(t) \right|}{\left| \vec r'(t) \right|}
+ = \frac{\left| \vec r'(t) \times \vec r''(t) \right|}{\left| \vec r'(t)
+ \right|^3}. \\
+\text{Unit normal:}\quad
+ \vec N(t) = \vec T'(t)\,/\,\left| \vec T'(t) \right| \\
+% 14.1: Functions of several variables
+% 14.2: Limits and continuity
+% 14.3: Partial derivatives
+\text{Clairaut's thm.:}\quad
+ f_{xy}(a,b) = f_{yx}(a,b) \\
+% 14.4: Tangent planes & linear approximations
+\shortintertext{Tan.\ plane to $z = f(x,y)$ at $\langle x_0, y_0,
+z_0\rangle$:}
+ z - z_0 = f_x(x_0, y_0) (x-x_0) \\
+ + f_y(x_0, y_0) (y-y_0). \\
+% Partial derivatives of f for each variable exist near a point and are
+% continuous => f is differentiable at the po\int.
+% 14.6: Directional derivatives and the gradient vector
+\text{Grad.:}\quad
+ \grad f(x,y) = \pd[f]x \hat{i} + \pd[f]y \hat{j}. \\
+\shortintertext{Dir.\ deriv.\ towards $\vec u$ at $\langle x_0, y_0 \rangle$:}
+ D_{\langle a,b\rangle} f(x_0, y_0) = f_x(x,y) a + f_y(x,y) b \\
+ = \grad f(x,y) \cdot \vec u. \\
+\shortintertext{Max of $D_{\vec u} f(\vec x) = \left|\grad f(\vec
+x)\right|$. Tan.\ plane of $f$ at $\vec p$:}
+ 0 =
+ f_x(\vec p)(x-\vec p_x)
+ + f_y(\vec p)(y-\vec p_y) \\
+ + f_z(\vec p)(z-\vec p_z).
+% 14.7: Maximum and minimum values
+\shortintertext{If $f$ has loc.\ extrem.\ at $\vec p$, then $f_x(\vec p) =
+0$ (\& $f_y$, etc). If so, let}
+ D = \left| \begin{array}{ll}
+ f_{xx} & f_{xy} \\
+ f_{yx} & f_{yy}
+ \end{array}\right|
+ = f_{xx} f_{yy} - (f_{xy})^2.
+\shortintertext{%
+ $D = 0$: no information.
+ $D < 0$: saddle pt.
+ $D > 0$: $f_{xx}(\vec p) > 0 \implies$ loc.\ min;
+ $f_{xx}(\vec p) < 0 \implies$ loc.\ max.
+ ($D$ is the \textbf{Hessian mat.})
+\endgraf
+ Set of possible abs. min and max vals of $f$ in reg.\ $D$: $f$ at critical
+ pts.\ and extreme vals.\ on the boundary of $D$.
+% 14.8: Lagrange multipliers
+\endgraf
+ Lagrange mults.: extreme vals of $f(\vec p)$ when $g(\vec p) = k$.
+ Find all $\vec x, \lambda$ s.t.
+}
+ \grad f(\vec x) = \lambda \grad g(\vec x),\quad g(\vec x) = k.
+\shortintertext{i.e.\ $f_x = \lambda g_x$, etc.}
+% 15.1: Double integrals over rectangles
+% 15.2: Iterated integrals
+% 15.3: Double integrals over general regions
+ \iint f(r\cos\theta, r\sin\theta)r\,dr\,d\theta. \\
+ A = \iint_D \left(\sqrt{f_x(x,y)^2 + f_y(x,y)^2 + 1}\right) \,dA. \\
+\shortintertext{Line int.s}
+ \int_C f(x,y)\,ds = \\
+ \int_a^b f(x(t), y(t))\sqrt{\left(\pd[x]t\right)^2 + \left(\pd[y]t\right)^2}\,dt \\
+\shortintertext{If $C$ is a smooth curve given by $\vec r(t)$ from $a \le t
+\le b$,}
+ \int_C \grad f \cdot d\vec r = f(\vec r(b)) - f(\vec r(a)) \\
+\text{Spherical coords:}\quad
+ x = \rho \sin \phi \cos \theta \\
+ y = \rho \sin \phi \sin \theta, z = \rho \cos \phi \\
+ \curl \vec F = \\ \left< \pd[R]y - \pd[Q]z, \pd[P]z - \pd[R]x, \pd[Q]x -
+ \pd[P]y\right>. \\
+ \vec F = \langle P,Q,R \rangle,\quad
+ \curl \vec F = \grad \times \vec F \\
+ \vec F \text{ ``conservative''} \implies \exists f, \vec F = \grad f. \\
+ \dive \vec F = \grad \cdot \vec F = \pd[P]x + \pd[Q]y + \pd[R]z. \\
+ \curl(\grad f) = \vec 0,\quad \dive \curl \vec F = 0 \\
+\shortintertext{If $C$ is a positively-oriented (ccw) closed curve, $D$
+is bounded by $C$, and $\vec n$ represents the normal,}
+ % \int_C P\,dx + Q\,dy = \iint_D\left( \pd[Q]{x} - \pd[P]{y} \right). \\
+ \oint_C \vec F \cdot \vec n\,ds = \iint_D \dive \vec F(x,y)\,dA.
+\end{gather*}
+
+\pagebreak
+\raggedright Common derivs:
+$f(g(x)) \to g'(x) f'(g(x))$,
+$b^x \to b^x \ln b$,
+$f^{-1}(x) \to 1/f'(f^{-1}(x))$,
+$\ln x \to 1/x$,
+$\sin x \to \cos x$, $\cos x \to -\sin x$,
+$\tan x \to \sec^2 x$,
+$\sin^{-1} x \to 1/\sqrt{1-x^2}$,
+$\cos^{-1} x \to -(\sin^{-1}x)'$ (etc.),
+$\tan^{-1} x \to 1/(1+x^2)$,
+$\sec^{-1} x \to 1/(|x|\sqrt{x^2-1})$.
+
+Common ints (don't forget $+C$):
+\begin{gather*}
+ x^n \to \frac{x^{n + 1}}{n + 1} + C \quad \text{when } n \ne -1 \\
+ 1/x \to \ln |x| \\
+ \tan x \to -\ln(\cos x) \\
+ \int uv'\,dx = uv - \int u'v\,dx \quad\text{(Int.\ by parts)} \\
+ \int u\,dv = uv-\int v\,du \\
+ \int_{g(a)}^{g(b)} f(u)\,du = \int_a^b f(g(x))g'(x)\,dx
+ \quad\text{$u$-substitution.}
+\intertext{E.x.\ in $\int 2x \cos x^2\,dx$, let $u=x^2$, find $du/dx=2x
+\implies du = 2x\,dx$, subs.\ $\int \cos u\,du = \sin u + C = \sin x^2 +
+C$.}
+ \iint_R f(x,y)\,dA = \int_\alpha^\beta \int_a^b f(r\cos\theta,
+ r\sin\theta)r\,dr\,d\theta
+\end{gather*}
+\begin{itemize}
+ \item Integrand contains $a^2-x^2$, let $x = a\sin\theta$ and use $1 -
+ \sin^2 \theta = \cos^2 \theta$.
+ \item $a^2 + x^2$, let $x = a\tan\theta$, use $1 + \tan^2 \theta = \sec^2
+ \theta$.
+ \item $x^2 - a^2$, let $x = a\sec\theta$, use $\sec^2\theta - 1 = \tan^2
+ \theta$.
+\end{itemize}
+
+\begin{gather*}
+ \lim_{x \to 0} \sin x/x = 1 \\
+ \lim_{x \to 0} (1-\cos x)/x = 0 \\
+ \lim_{x \to \infty} x \sin(1/x) = 1 \\
+ \lim_{x \to 0} (1+x)^{1/x} = e \\
+ \lim_{x \to 0} (e^{ax}-1)/(bx) = a/b \\
+ \lim_{x \to 0^+} x^x = 1 \\
+ \lim_{x \to 0^+} x^{-n} = \infty \\
+ \text{For $0/0$ or $\pm\infty/\infty$,}\quad
+ \lim_{x \to c} f(x)/g(x) = \lim_{x \to c} f'(x)/g'(x) \\
+ \text{For $g(x)$ cont.\ at $L$,}
+ \lim_{x \to c} f(x) = L \implies \lim_{x \to c} g(L)
+\end{gather*}
+
+\end{document}
diff --git a/macros/latex/contrib/rbt-mathnotes/examples/multivar.pdf b/macros/latex/contrib/rbt-mathnotes/examples/multivar.pdf
new file mode 100644
index 0000000000..e6fdd5f7a3
--- /dev/null
+++ b/macros/latex/contrib/rbt-mathnotes/examples/multivar.pdf
Binary files differ
diff --git a/macros/latex/contrib/rbt-mathnotes/examples/multivar.tex b/macros/latex/contrib/rbt-mathnotes/examples/multivar.tex
new file mode 100644
index 0000000000..fc026754f6
--- /dev/null
+++ b/macros/latex/contrib/rbt-mathnotes/examples/multivar.tex
@@ -0,0 +1,507 @@
+%% multivar.tex
+%% Copyright 2021 Rebecca B. Turner.
+%
+% 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 Rebecca B. Turner.
+%
+% This work consists of the files:
+% README.md
+% rbt-mathnotes.tex
+% rbt-mathnotes.sty
+% rbt-mathnotes.cls
+% rbt-mathnotes-util.sty
+% rbt-mathnotes-messages.sty
+% rbt-mathnotes-hw.cls
+% rbt-mathnotes-formula-sheet.cls
+% examples/cheat-sheet.tex
+% examples/multivar.tex
+% examples/topology-hw-1.tex
+% and the derived files:
+% rbt-mathnotes.pdf
+% examples/cheat-sheet.pdf
+% examples/multivar.pdf
+% examples/topology-hw-1.pdf
+
+\documentclass[knowledge]{rbt-mathnotes}
+\title{Multivariable Calculus}
+\mathnotes{
+ instructor = Prof.~Corey Bregman ,
+ name = Rebecca Turner ,
+ email = rebeccaturner@brandeis.edu ,
+ course = \textsc{math} 20a (multivariable calculus) ,
+ institution = Brandeis University ,
+ semester = Fall 2019 ,
+}
+
+\ExplSyntaxOn
+\NewDocumentCommand \normalized { m }
+ { \frac { #1 } { \| #1 \| } }
+\let \gr \grad
+\def \ddx { \frac{d}{dx} }
+% VL = vector literal
+\NewDocumentCommand \vl { m } { \left\langle #1 \right\rangle }
+\ExplSyntaxOff
+
+% \makeatletter
+% \@ifpackageloaded{knowledge}
+% {
+\knowledge{notion, index={Derivative!Partial}}
+ | partial derivative
+\AtBeginDocument{\index{Partial derivative|see{Derivative, partial}}}
+
+\knowledge{notion, index={Derivative!Directional}}
+ | directional derivative
+\AtBeginDocument{\index{Directional derivative|see{Directional, partial}}}
+
+\knowledge{notion, index=Unit vector}
+ | unit vector
+
+\knowledge{notion, index=Limit}
+ | limit
+
+\knowledge{notion, index={Differentiable functions}}
+ | differentiable
+
+\knowledge{notion, index=Gradient}
+ | gradient
+
+\knowledge{notion, index={Neighborhood (topology)}}
+ | neighborhood
+
+\knowledge{notion, index=Local maximum}
+ | local maximum
+ | local maxima
+
+\knowledge{notion, index=Local minimum}
+ | local minimum
+ | local minima
+
+\knowledge{notion, index=Absolute maximum}
+ | absolute maximum
+ | absolute maxima
+
+\knowledge{notion, index=Absolute minimum}
+ | absolute minimum
+ | absolute minima
+
+\knowledge{notion, index=Local extremum}
+ | local extremum
+ | local extrema
+
+\knowledge{notion, index=Critical point}
+ | critical point
+
+\knowledge{notion, index=Saddle point}
+ | saddle point
+
+\knowledge{notion, index={Lagrange multiplier}}
+ | Lagrange multiplier
+ | Lagrange multipliers
+ | the method of Lagrange multipliers
+
+\knowledge{url={https://en.wikipedia.org/wiki/Joseph-Louis_Lagrange}}
+ | Joseph-Louis Lagrange
+ | Lagrange
+
+\knowledge{url={https://en.wikipedia.org/wiki/Marquis_de_Condorcet}}
+ | Marquis de Condorcet
+
+ \knowledge{url={https://en.wikipedia.org/wiki/Adrien-Marie_Legendre}}
+ | Adrien-Marie Legendre
+% }
+% {}
+% \makeatother
+\date{2019-10-23}
+\begin{document}
+\maketitle
+\tableofcontents
+
+\chapter{Vectors}
+I already know about vectors --- I've been taught them in about five
+different courses so far. I'm skipping this.
+
+\chapter{Partial derivatives}
+
+If we have a function of multiple variables, say
+\[f(a_1, a_2, a_3, \dots),\]
+we might care about the change of $f$ with respect to only one variable. By
+picking a fixed value for all but one of the variables, we can determine
+this.
+
+Say that we want to find the "partial derivative" of $f$ with respect to
+$a_2$; then, by constructing $g(a_2) = f(c_1, a_2, c_3, \dots)$, we've
+created a function of \emph{one} variable, which we can differentiate as
+usual.
+\begin{notation}
+ We write the "partial derivative" of a function $f$ at a point $\vec p$
+ with respect to a basis element $a$ of $\vec p$ as \fbox{$f_a(\vec p)$.}
+
+ We may also use much more common notation
+ \[\pd[f]{a},\]
+ using the "partial derivative" symbol $\partial$, a stylized cursive
+ ``d''.\footnote{Introduced by "Marquis de Condorcet" in 1770, who used it
+ to represent a partial \emph{differential}, i.e.~the $dy$ or $dx$ in
+ $dy/dx$, and then adapted in 1786 by "Adrien-Marie Legendre" for use as the
+ partial derivative.}
+
+ In the interest of completeness, I'll exhaustedly note that the book also
+ uses, on occasion, the notation $D_a f$.
+\end{notation}
+
+We can also calculate ""higher partial derivatives"" --- similarly to the
+higher ordinary derivatives. The notation is a fairly clear extension:
+\[(f_x)_x = f_{xx} = \pd x \left( \pd[f]{x} \right) = \pd[^2 f]{x^2}.\]
+
+\begin{thm}[Clairaut's Theorem]
+ Suppose $f$ is defined on a neighborhood $N$ about a point $\vec p$.
+ If $f_{xy}$ and $f_{yx}$ are continuous in $N$, then $f_{xy}(\vec p) =
+ f_{yx}(\vec p)$.
+\end{thm}
+
+\section{Gradients}
+\begin{notation}
+ This ridiculous textbook denotes the "partial derivative" of a function
+ $f(x, y) = z$ with respect to $x$ as $f_x(x, y)$.
+\end{notation}
+
+\begin{defn}
+ The ""directional derivative"" of a function $f$ at $(x_0, y_0)$ in the
+ direction of a "unit vector" $\vec u = \langle a, b \rangle$ is
+ \[D_{\vec u} f(x_0, y_0) = \lim_{h \to 0} \frac{f(x_0 + ha, y_0 + hb) -
+ f(x_0, y_0)}{h},\]
+ if the "limit" exists.
+\end{defn}
+
+If $f : \Re^2 \mapsto \Re$ is a "differentiable" function, then $f$ has a
+"directional derivative" in the direction of any "unit vector" $\vec u =
+\langle a, b \rangle$ of
+\begin{alignat*}{1}
+ D_{\vec u} f(x, y) &= f_x(x, y) a + f_y(x, y) b.
+\intertext{Or, if $\vec u = \langle \cos \theta, \sin \theta \rangle$, then}
+ D_{\vec u} f(x, y) &= f_x(x, y) \cos \theta + f_y(x, y) \sin \theta.
+\end{alignat*}
+
+Noticing that the "directional derivative" of a function can be written as
+the dot product of two vectors,
+\begin{alignat*}{1}
+ D_{\vec u} f(x, y) &= f_x(x, y) a + f_y(x, y) b \\
+ &= \langle f_x(x, y), f_y(x, y) \rangle \cdot \langle a, b \rangle \\
+ &= \langle f_x(x, y), f_y(x, y) \rangle \cdot \vec u,
+\end{alignat*}
+we call the first vector $\langle f_x(x, y), f_y(x, y) \rangle$ the
+""gradient"" of $f$ and denote it as $\grad f$.
+
+\begin{defn}
+ The "gradient" of a function $f$ of two variables is defined as
+ \[\grad f(x, y) = \langle f_x(x, y), f_y(x, y) \rangle
+ = \frac{\partial f}{\partial x} \vec i + \frac{\partial f}{\partial y}
+ \vec j.\]
+\end{defn}
+
+Therefore, we can rewrite the "directional derivative" of a function $f$
+as
+\[D_{\vec u} f(x, y) = \grad f(x, y) \cdot \vec u.\]
+It's intuitive, then, that the maximum value of the "directional derivative"
+is $|\grad f(x, y)|$, when $\vec u$ is parallel to $\grad f(x, y)$.
+
+\section{Maximum and minimum values}
+\begin{defn}
+ $f : A^k \mapsto B$ has a ""local maximum"" at $\vec a$ if for some
+ "neighborhood" $N \subset A$ about $\vec a$, for all $\vec x \in N$,
+ $f(\vec x) \le f(\vec a)$.
+
+ Conversely, if $f(\vec x) \ge f(\vec a)$, then $f(\vec a)$ is a ""local
+ \emph{minimum}@local minimum"".
+
+ If the statement also holds true for $N = A$, then $\vec a$ is an
+ ""absolute maximum"" (or ""absolute minimum"").
+\end{defn}
+
+If $f$ has a "local maximum" or "minimum@local minimum" at $\vec a$ and the
+partials of $f$ exist at $\vec a$, then $\partial f/\partial x (\vec a) = 0$
+and $f_y(a, b) = 0$; geometrically, the tangent plane to a maximum or
+minimum must be horizontal.
+
+\begin{defn}
+ A point $\vec a$ is called a ""critical point"" of $f$ if $f_x(\vec a) =
+ 0$ or $f_x(\vec a)$ doesn't exist for all variables of $f$.
+\end{defn}
+
+\begin{defn}
+ A ""saddle point"" of a function is a "critical point" which is not a
+ "local extremum" of the function.
+\end{defn}
+
+If $(a, b)$ is a critical point of $f$, then let
+\[D = D(a, b) = f_{xx} (a,b) \, f_{yy} (a,b) - (f_{xy}(a,b))^2.\]
+If $D < 0$, then $(a, b)$ is a "saddle point" of $f$.
+
+\section{Lagrange multipliers}
+Often we want to find the "local extrema" of a function subject to
+constraints, i.e.~maximizing the volume of an object while keeping its
+surface area constant. The method of "Lagrange multipliers"\footnote{After
+"Joseph-Louis Lagrange" (1736--1813), ``an Italian Enlightenment Era
+mathematician and astronomer [who] made significant contributions to the
+fields of analysis, number theory, and both classical and celestial
+mechanics.''} is a strategy for doing this.
+
+To find extrema of $f(\vec p)$ constrained with $g(\vec p) = k$,
+we look for extrema of $f$ that are restricted to lie on the level curve
+$g(\vec p) = k$; it happens that the largest $c$ such that $f(\vec p) = c$
+intersects with $g(\vec p) = k$ when the two level curves are tangent with
+each other, i.e.~they have identical normals. In other words, for some
+scalar $\lambda$, $\grad f(\vec p) = \lambda \grad g(\vec p)$.
+
+More formally, suppose $f$ has an extrema at $\vec p_0$. Then, let the level
+surface generated by the constraint $g(\vec p) = k$ be called $S$, where
+$\vec p_0 \in S$. Then, let $C$ be the set of points given by $\vec r(t)$ such
+that $C \subset S$ and $\vec p_0 \in C$. Further, let $t_0$ be a point such
+that $\vec r(t_0) = \vec p_0$.
+
+Then, $f \after \vec r$ gives the values of $f$ on the curve $C$. $f$ has an
+extrema at $\vec p$, so $f \after \vec r$ must also, and $(f \after \vec
+r)'(t_0) = 0$. If $f$ is "differentiable", we can use the chain rule to
+write
+\begin{alignat*}{1}
+ 0 &= (f \after \vec r)'(t_0) \\
+ &= \grad f(\vec p_0) \cdot \vec r'(t_0).
+\end{alignat*}
+Therefore, the gradient of $f$ is orthogonal to the tangent of every such
+curve $C$. We also know that $\grad g(\vec p_0)$ is orthogonal to $\vec
+r'(t_0)$, so the gradients of $f$ and $g$ at $\vec p_0$ must be parallel.
+Therefore, if $\grad g(\vec p_0) \ne 0$, there exists some $\lambda$ such
+that
+\begin{equation}
+ \grad f(\vec p_0) = \lambda \grad g(\vec p_0),
+\end{equation}
+where the constant $\lambda$ is called a "Lagrange multiplier".
+
+Then, the ""method of Lagrange multipliers"" gives us a process to
+find the maximum and minimum values of a function $f(\vec p)$ subject to the
+constraint $g(\vec p) = k$, where $\vec p \in \Re^n$. To use the method of
+Lagrange multipliers, we assume that the extreme values exist and that
+$\grad g \ne 0$ on the level surface $g(\vec p) = k$.
+\begin{enumerate}
+ \item Find all values of $\vec p$ and $\lambda$ such that
+ \begin{alignat*}{1}
+ \grad f(\vec p) &= \lambda \grad g(\vec p) \\
+ \text{and}\qquad g(\vec p) &= k. \\
+ \end{alignat*}
+
+ \item Next, evaluate $f$ at all of the points found in the first step. The
+ largest of these values is the maximum value of $f$, and the smallest of
+ them is the minimum value.
+\end{enumerate}
+
+\chapter{Multiple integrals}
+Single integrals are good for functions of one variable. To integrate
+functions of multiple variables, we use multiple integrals. Straightforward
+enough.
+
+Multiple integrals allow us to calculate things like surface areas and
+volumes of geometric objects.
+
+In general, for some double integral
+\[\underbrace{\int_a^b \overbrace{\int_c^d f(x,y)\,dx}^{\mathclap{\text{We
+treat $y$ as constant while evaluating this.}}}\,dy,}_{\mathclap{\text{We've
+eliminated $x$ from the equation before evaluating this.}}}\]
+we do the opposite of partial differentiation and treat all variables other
+than the one we're integrating for as constant, repeatedly, until we've
+integrated with respect to all variables; each step in this process is
+called, predictably, ""partial integration"".
+
+\section{Double integrals}
+For an axis-aligned rectangle $R$ on the $xy$-plane from $(x_0, y_0)$ to $(x_1,
+y_1)$, the area of a function $f(x, y)$ under $R$ is given by the double
+integral
+\begin{alignat*}{1}
+ \iint_{Y} f(x,y)\,dA &= \underbrace{\int_{x_0}^{x_1} \int_{y_0}^{y_1}
+ f(x,y)\,dy\,dx}_{\mathclap{\text{This is the iterated form of the
+ integral.}}} \\
+ &= \int_{y_0}^{y_1} \int_{x_0}^{x_1} f(x,y)\,dx\,dy, \\
+\end{alignat*}
+where we use $\iint_R$ to mean ``integrating over the area of $R$'' and
+``$dA$'' to mean ``with respect to area.''
+
+The right-hand side of the equation above is called the ""iterated form"",
+or an \reintro*"iterated integral".
+
+We can also iterate over funkier regions if we're willing to play with the
+limits of integration a bit. The easiest regions to integrate over are the
+ones that are easily expressible as the region bounded above and below by
+functions of one variable, e.g. ``the region under the line $y = 2x$ and
+above the line $y = x^2$'' (note that this is bounded on the left at $x = 0$
+and on the right at $x = 2$).
+
+% Area[ImplicitRegion[x^2 < y \[And] y < 2 x, {x, y}
+The area of that region is expressed by the integral
+\begin{alignat*}{1}
+ A &= \int_0^2 \int_{x^2}^{2x}\,dy\,dx \\
+ &= \int_0^2 {\bigg[ x \bigg]}_{x^2}^{2x}\,dx \\
+ &= \int_0^2 {\bigg( 2x-x^2 \bigg)}\,dx \\
+ &= {\left[ x^2 - \frac{x^3}{3} \right]}_0^2 \\
+ &= 4 - \frac{8}{3} = \frac{4}{3}.
+\end{alignat*}
+
+A more complicated region might be ``the region under the paraboloid $z =
+x^2 + y^2$ and above the region in the $xy$-plane bounded by $y = \sqrt{x}$
+and $y=1-\cos x$.''
+
+We can build larger regions out of pieces, by summing smaller integrals.
+
+\section{Polar coordinates}
+Use the conversions
+\begin{alignat*}{1}
+ r &= \sqrt{x^2+y^2} \\
+ x &= r\cos\theta \\
+ y &= r\sin\theta \\
+\intertext{for the coordinates and then we have that if $R$ is a ``polar
+rectangle'' (arc-shaped region bounded by angles and radii) from $r=a$ to
+$r=b$ and $\theta = \alpha$ to $\theta = \beta$, we have}
+ \iint_R f(x,y)\,dA &= \int_\alpha^\beta \int_a^b f(r\cos\theta,
+ r\sin\theta)r\,dr\,d\theta, \\
+\intertext{which makes our lives easier for circly areas and volumes. Don't
+forget to multiply by $r$.
+\endgraf
+For squiggly and varying radii, we can use functions $h_1(\theta)$ and
+$h_2(\theta)$ instead of constants $a$ and $b$:}
+ \iint_D f(x,y)\,dA &= \int_\alpha^\beta \int_{h_1(\theta)}^{h_2(\theta)} f(r\cos\theta,
+ r\sin\theta)r\,dr\,d\theta. \\
+\end{alignat*}
+
+\section{Cylindrical coordinates}
+Just add $z$.
+
+\section{Spherical coordinates}
+I can never remember how these work. If we have a point $P$, and we drop it
+down to the $xy$-plane, the angle between the positive $x$-axis and the
+segment from the origin to $P$ is $\theta$.
+
+Next, the angle between the positive $z$-axis and the segment from the origin
+to $P$ is $\phi$.
+
+Finally, the length of the segment from the origin to $P$ is $\rho$.
+
+The conversions
+\begin{alignat*}{1}
+ x &= \rho \sin \phi \cos \theta \\
+ y &= \rho \sin \phi \sin \theta \\
+ z &= \rho \cos \phi \\
+\intertext{give us the integral-conversion for the spherical wedge bounded
+by $a \le \rho \le b, \alpha \le \theta \le \beta, c \le \phi \le d$ as}
+ \iiint_E f(x,y,z)\,dV &= \int_c^d \int_\alpha^\beta \int_a^b
+ f(\rho \sin\phi \cos\theta,\,
+ \rho \sin\phi \sin\theta,\,
+ \rho \cos \theta)
+ [\rho^2 \sin\phi]
+ \,d\rho\,d\theta\,d\phi. \\
+\end{alignat*}
+Very gross!
+
+\section{Surface area}
+
+For $f(x,y)$ with $f_x$, $f_y$ continuous, the surface area of $f$ within
+a region $D$ is
+\[A = \iint_D \left(\sqrt{f_x(x,y)^2 + f_y(x,y)^2 + 1}\right) \,dA.\]
+
+% Need notes on:
+% - Change of variables (in multiple integrals)
+
+\chapter{Vector calculus}
+A vector field is a mapping $\R^k \mapsto \R^n$; for each point in
+$k$-dimensional Euclidean space, we associate an $n$-dimensional vector.
+These vectors can represent velocity, distance, or anything else, and come
+up in all sorts of applied fields.
+
+We'll be mostly concerned with vector fields $\R^2\mapsto\R^2$ and
+$\R^3\mapsto\R^3$.
+
+If we have a plane curve given by the vector equation
+\begin{alignat*}{1}
+ \vec r(t) &= \left< x(t), y(t) \right> \qquad a \le t \le b, \\
+\intertext{then the line integral of $f$ along $\vec r(t)$ from $a$ to $b$
+is}
+ & \int_a^b f(x(t), y(t)) \sqrt{{\left(\dd[x]{t}\right)}^2 +
+ {\left(\dd[y]{t}\right)}^2}\,dt,
+\end{alignat*}
+i.e.\ the length of the curve multiplied, at each point, by the value of the
+vector field $f$ at that point.
+
+% Need notes on:
+% 16.1, 16.2, 16.3, 16.4, 16.5,
+% Need to update cheat sheet.
+
+\appendix
+\chapter{Common formulas for derivatives and integrals}
+\backmatter
+\section{Derivatives}
+
+\begin{alignat*}{2}
+ \ddx&\;& (f + g) &= f' + g' \\
+ \ddx&& x^n &= nx^{n - 1} \\
+ \ddx&& (fg) &= fg' + f'g \\
+ \ddx&& \frac{h}{l} &= \frac{l h' - h l'}{l^2} \\
+ \ddx&& f(g(x)) &= f'(g(x)) g'(x) \quad\text{(Chain rule.)} \\
+ \ddx&& b^x &= b^x \ln b \\
+ \ddx&& f^{-1}(x) &= \frac{1}{f'(f^{-1}(x)} \\
+ \ddx&& c &= 0 \\
+ \ddx&& c\,f &= c\,f' \\
+ \ddx&& e^x &= e^x \\
+ \ddx&& e^{f(x)} &= f'(x) e^{f(x)} \quad\text{(By the chain rule.)} \\
+ \ddx&& \ln x &= \frac{1}{x} \\
+ \ddx&& \log_b x &= \frac{1}{x \ln b} \\
+ \ddx&& [\vec u \cdot \vec v] &= \vec u' \cdot \vec v + \vec u \cdot \vec v' \\
+ \ddx&& [\vec u \times \vec v] &= \vec u' \times \vec v + \vec u \times \vec v' \\
+\end{alignat*}
+
+\subsection{Trigenometric}
+\begin{alignat*}{2}
+ \ddx&\;& \sin x &= \cos x \\
+ \ddx&& \cos x &= -\sin x \\
+ \ddx&& \tan x &= \sec^2 x \\
+ \ddx&& \cot x &= -\csc^2 x \\
+ \ddx&& \sec x &= \sec x \tan x \\
+ \ddx&& \csc x &= -\csc x \cot x \\
+ % inverse
+ \ddx&& \sin^{-1} x &= \frac{ 1}{\sqrt{1 - x^2}} \\
+ \ddx&& \cos^{-1} x &= \frac{-1}{\sqrt{1 - x^2}} \\
+ \ddx&& \tan^{-1} x &= \frac{ 1}{1 + x^2} \\
+ \ddx&& \cot^{-1} x &= \frac{-1}{1 + x^2} \\
+ \ddx&& \sec^{-1} x &= \frac{ 1}{|x| \sqrt{x^2 - 1}} \\
+ \ddx&& \csc^{-1} x &= \frac{-1}{|x| \sqrt{x^2 - 1}} \\
+\end{alignat*}
+
+\section{Integrals}
+See also:
+\emph{\href{https://www.whitman.edu/mathematics/calculus/calculus_08_Techniques_of_Integration.pdf}{Techniques
+of Integration}}.
+\begin{alignat*}{1}
+ \int x^n\,dx &= \frac{x^{n + 1}}{n + 1} + C \quad \text{when } n \ne -1 \\
+ \int x^{-1}\,dx &= \ln|x| + C \\
+ \int e^x\,dx &= e^x + C \\
+ \dd{t} \int_{a(t)}^{b(t)} g(s)\,ds &= b'(t) g(b(t)) - a'(t) g(a(t))
+ \quad\text{(Leibniz' rule.)} \\
+ \int uv'\,dx &= uv - \int u'v\,dx \\
+\end{alignat*}
+
+\subsection{Trigenometric}
+\begin{alignat*}{1}
+ \int \sin x\,dx &= -\cos x + C \\
+ \int \cos x\,dx &= \sin x + C \\
+ \int \sec^2 x\,dx &= \tan x + C \\
+ \int \sec x \tan x\,dx &= \sec x + C \\
+ \int \frac{1}{1 + x^2}\,dx &= \tan^{-1} x + C \\
+ \int \frac{1}{\sqrt{1 + x^2}}\,dx &= \sin^{-1} x + C \\
+\end{alignat*}
+
+\printindex
+\end{document}
diff --git a/macros/latex/contrib/rbt-mathnotes/examples/topology-hw-1.pdf b/macros/latex/contrib/rbt-mathnotes/examples/topology-hw-1.pdf
new file mode 100644
index 0000000000..3bbc7d93fb
--- /dev/null
+++ b/macros/latex/contrib/rbt-mathnotes/examples/topology-hw-1.pdf
Binary files differ
diff --git a/macros/latex/contrib/rbt-mathnotes/examples/topology-hw-1.tex b/macros/latex/contrib/rbt-mathnotes/examples/topology-hw-1.tex
new file mode 100644
index 0000000000..406ce622ad
--- /dev/null
+++ b/macros/latex/contrib/rbt-mathnotes/examples/topology-hw-1.tex
@@ -0,0 +1,246 @@
+%% topology-hw-1.tex
+%% Copyright 2021 Rebecca B. Turner.
+%
+% 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 Rebecca B. Turner.
+%
+% This work consists of the files:
+% README.md
+% rbt-mathnotes.tex
+% rbt-mathnotes.sty
+% rbt-mathnotes.cls
+% rbt-mathnotes-util.sty
+% rbt-mathnotes-messages.sty
+% rbt-mathnotes-hw.cls
+% rbt-mathnotes-formula-sheet.cls
+% examples/cheat-sheet.tex
+% examples/multivar.tex
+% examples/topology-hw-1.tex
+% and the derived files:
+% rbt-mathnotes.pdf
+% examples/cheat-sheet.pdf
+% examples/multivar.pdf
+% examples/topology-hw-1.pdf
+
+\documentclass[twocolumn, noxcolor, maketitle]{rbt-mathnotes-hw}
+\mathnotes{
+ instructor = Prof.~Ruth Charney ,
+ name = Rebecca Turner ,
+ email = rebeccaturner@brandeis.edu ,
+ course = \textsc{math} 104a (Intro to Topology) ,
+ institution = Brandeis University ,
+ semester = Spring 2020 ,
+}
+\title{Homework 1}
+\date{2020-01-18}
+\def\T{\mathcal{T}}
+\def\basis{\mathcal{B}}
+\usepackage[
+ letterpaper,
+ margin = 1in,
+]{geometry}
+\raggedbottom
+\begin{document}
+\maketitle
+
+\section{Topological Spaces}
+\subsection{Open Sets and the Definition of a Topology}
+\begin{problem}[1.7]
+ Define a topology on $\R$ (by listing the open sets within it) that contains
+ the open sets $(0,2)$ and $(1,3)$ that contains as few open sets as possible.
+\end{problem}
+$\T = \{ \emptyset, (0,2), (1,3), (1,2), (0,3), \R \}$.
+
+\subsection{Basis for a Topology}
+\begin{problem}[1.10]
+ Show that $\mathcal{B} = \{[a,b) \subset \R : a < b\}$ is a basis for a
+ topology on $\R$.
+\end{problem}
+\begin{enumerate}
+ \item \textbf{$\emptyset \in \T$, $\R \in \T$.} $\emptyset \in \T$ (by the
+ definition of the completion of a basis to a topology).
+
+ Next, we show $\R \in \T$. For all $n \in \Z_{\ge 0}$, $[n-1, n) \in \basis$
+ and $[-n + 1, -n) \in \basis$. We know that if $b_1, b_2 \in \basis$, $b_1
+ \union b_2 \in \T$, so these short intervals can be gathered together (``unionized'')
+ to produce $\R$:
+ \[ \bigunion_{n=1}^{\infty} \left( [n-1, n) \union [-n + 1, -n] \right) = \R, \]
+ so $\R \in \T$.
+
+ \item \textbf{$\T$ contains all finite intersections of elements of $\T$.}
+ Suppose we have two intervals $[a, b)$ and $[c, d)$. Then, we define
+ \begin{alignat*}{1}
+ a' &= \max(a, c) \\
+ b' &= \min(b, d).
+ \end{alignat*}
+ If $a' > b'$, the intersection $[a, b) \inter [c, d) = \emptyset$, which is
+ in $\T$. Otherwise, the intersection is $[a', b')$, which is an element of
+ $\basis$. All elements of the basis are in $\T$, so the intersection of two
+ elements is in the topology.
+
+ Thankfully, the intersection is itself always a basis element, so we can
+ use the same process to show that finite intersections are in $\T$ by
+ induction.
+
+ \item \textbf{Unions of elements of $\T$ are in $\T$.} By the definition of
+ the completion of a basis to a topology, this is true (all unions of basis
+ elements are included in $\T$).
+\end{enumerate}
+
+\begin{problem}[1.12]
+ % See example 1.9 for defn of \R_l
+ Determine which of the following are open sets in $\R_l$. In each case, prove
+ your assertion.
+ \[ A = [4,5)
+ \quad B = \{3\}
+ \quad C = [1,2]
+ \quad D = (7,8) \]
+\end{problem}
+\begin{enumerate}
+ \item $A$ is open in $\R_l$; $[4,5) \in \basis$.
+ \item $B$ is not an open set in $\R_l$; there is no $[a, b) \subset \R$ where
+ both $b > a$ and $|[a, b)| = 1$ (because $[0,1) \cong \R$, i.e.~all
+ intervals contain infinitely many points).
+
+ (Where $\cong$ means ``is isomorphic to.'')
+ \item $C$ is not open in $\R_l$ because the upper bound of an open set in
+ $\R_l$ is never inclusive. There is no set of intervals $[a_1, b_1), \dots$
+ where the union or intersection of the intervals has an inclusive upper bound.
+ \item $D$ is open because we can take
+ \[ D = \lim_{n\to\infty} \left[7 + \frac{1}{n}, 8\right), \]
+ where $[7 + 1/n, 8) \in \basis$ for any $n \in \R$ with $n \ne 0$.
+\end{enumerate}
+
+\pagebreak
+\begin{problem}[1.15]
+ An arithmetic progression in $\Z$ is a set
+ \[ A_{a,b} = \{\dots, a - 2b, a - b, a, a + b, a + 2b, \dots\} \]
+ with $a,b \in \Z$ and $b \ne 0$. Prove that the collection of arithmetic
+ progressions
+ \[ \mathcal{A} = \{ A_{a,b} : a, b \in \Z \text{ and } b \ne 0 \} \]
+ is a basis for a topology on $\Z$. The resulting topology is called the
+ arithmetic progression topology on $\Z$.
+\end{problem}
+
+\begin{proof}
+ \def\Ar#1#2{A_{#1,#2}}
+ \def\Ars{\mathcal{A}}
+ Let us describe the \emph{minimal form} of an arithmetic progression $\Ar ab$
+ to be the progression $\Ar{a'}{b'} = \Ar ab$ with $a', b' > 0$ and the
+ smallest possible $a'$; in particular, that $a' < b'$.
+
+ We can obtain the minimal form of the progression like so:
+ \begin{alignat*}{1}
+ a' &= a \bmod b \\
+ b' &= |b|, \\
+ \Ar{a'}{b'} &= \Ar ab.
+ \end{alignat*}
+
+ \begin{remark}
+ Two arithmetic progressions have the same elements if their minimal forms are
+ the same; this give an equivalence relation on $\Ars$.
+ \end{remark}
+
+ Now, suppose we have two arithmetic progressions $\Ar ab$ and $\Ar cd$. We
+ assume that the progressions are in minimal form without loss of generality. We
+ also assume that $b \le d$ (by swapping $(a,b)$ with $(c,d)$ if necessary),
+ again without loss of generality.
+
+ If $b \mid d$ and $a = c$, we have $\Ar ab \subset \Ar cd$. In particular, $\Ar
+ ab \inter \Ar cd = \Ar cd$.
+
+ If $b \mid d$ and $a \ne c$, we have $\Ar ab \inter \Ar cd = \emptyset$.
+
+ If $b \nmid d$, we have a different progression. An intersection is generated by
+ an index $(n_1, n_2)$, where
+ \begin{alignat*}{1}
+ a + b n_1 &= c + d n_2. \\
+ \intertext{We can then solve for $n_1$:}
+ t(n) &= c - a + dn \\
+ n_1 &= \frac{t(n_2)}{b}. \\
+ \intertext{Next, we have an infinite \emph{set} of possibilities for $n_2$:}
+ n_2 &\in \left\{n \in \Z : t(n) \mid b \right\}.
+ \intertext{Sorting the possible values of $n_2$ by absolute value, let us call
+ the smallest two values $i_1$ and $i_2$. Then, the difference between
+ adjacent elements in the intersection progression $\Ar ab \inter \Ar cd$
+ is $i_2 - i_1$.
+ \endgraf
+ Let}
+ a' &= a + bi_1 \\
+ b' &= i_2 - i_1 \\
+ \Ar ab \inter \Ar cd &= \Ar{a'}{b'}.
+ \end{alignat*}
+ This isn't super rigorous, admittedly (we're missing some inductive reasoning
+ about the integers to prove that there are an infinite set of valid values of
+ $n_2$, in particular), but I have some fairly convincing Haskell code. And the
+ missing steps are mostly boilerplate, and it's late at night already\dots
+
+ In all cases, the intersection of two arithmetic progressions is either empty or
+ another arithmetic progression (i.e.~either the empty set or another basis
+ element), so the same argument given above for $\R_l$ holds (namely that we can
+ extend this to all finite intersections of elements of $\Ars$ inductively).
+
+ Therefore, finite intersections are in the basis. Unions are in the completion
+ of the basis (again by definition). The special element $\emptyset$ is in the
+ completion (by definition), and $\Z = \Ar01$, so $\Z \in \basis$. Therefore,
+ $\Ars$ forms the basis of a topology on $\Z$.
+\end{proof}
+
+\pagebreak
+\subsection{Closed Sets}
+\begin{problem}[1.27(a)]
+ The infinite comb $C$ is the subset of the plane illustrated in Figure~1.17
+ and defined by
+ \begin{multline*}
+ C = \{(x,0) : 0 \le x \le 1\} \;\union \\
+ \bigg\{ \left( \frac{1}{2^n}, y \right) : n = 0,1,2, \dots \\
+ \text{ and } 0 \le y \le 1 \bigg\}.
+ \end{multline*}
+ Prove that $C$ is not closed in the standard topology on $\R^2$.
+\end{problem}
+\begin{proof}
+ Suppose $C$ is closed in the standard topology on $\R^2$. Then, its complement
+ $C^c = \R^2 \setminus C$ must be an open set.
+
+ The point $(0, 1)$ is not in $C$, so $(0, 1) \in C^c$. Every open ball in $\R^2$
+ containing $(0, 1)$ also contains a smaller open ball centered about $(0, 1)$.
+ (For example, the open ball about $(-1, 1)$ of radius $1.1$ contains the open
+ ball centered about $(0, 1)$ of radius $0.1$.)
+
+ However, every open ball centered about $(0, 1)$ contains infinitely many
+ points of $C$; if the ball has radius $r$, all the comb's ``tines'' at $x =
+ 1/2^n$ for $n > - \log_2 r$ intersect with the ball.
+
+ Therefore, every open ball containing $(0, 1)$ also contains points in $C$. As
+ a result, $C^c$ is not open, which contradicts our assumption. Therefore, $C$
+ is not closed.
+\end{proof}
+
+\begin{problem}[1.32]
+ Prove that intervals of the form $[a, b)$ are closed in the lower limit
+ topology on $\R$.
+\end{problem}
+\begin{proof}
+ Take some interval $[a, b)$. Its complement is given by $(-\infty, a) \union
+ [b, \infty)$. Given that
+ \begin{alignat*}{1}
+ (-\infty, a) &= \bigunion_{n=1}^\infty [a-n, a) \\
+ [b, \infty) &= \bigunion_{n=1}^\infty [b, b+n),
+ \end{alignat*}
+ the complement of $[a, b)$ is the union of a number of lower-limit intervals
+ in $\R$, i.e.~the basis elements. The basis elements and its unions are open
+ sets, so the complement of $[a, b)$ is an open set. Then, by the definition of
+ a closed set, $[a, b)$ is closed in $\R_l$.
+\end{proof}
+
+
+\end{document}
diff --git a/macros/latex/contrib/rbt-mathnotes/rbt-mathnotes-formula-sheet.cls b/macros/latex/contrib/rbt-mathnotes/rbt-mathnotes-formula-sheet.cls
new file mode 100644
index 0000000000..85e789b34a
--- /dev/null
+++ b/macros/latex/contrib/rbt-mathnotes/rbt-mathnotes-formula-sheet.cls
@@ -0,0 +1,150 @@
+%% rbt-mathnotes-formula-sheet.cls
+%% Copyright 2021 Rebecca B. Turner.
+%
+% 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 Rebecca B. Turner.
+%
+% This work consists of the files:
+% README.md
+% rbt-mathnotes.tex
+% rbt-mathnotes.sty
+% rbt-mathnotes.cls
+% rbt-mathnotes-util.sty
+% rbt-mathnotes-messages.sty
+% rbt-mathnotes-hw.cls
+% rbt-mathnotes-formula-sheet.cls
+% examples/cheat-sheet.tex
+% examples/multivar.tex
+% examples/topology-hw-1.tex
+% and the derived files:
+% rbt-mathnotes.pdf
+% examples/cheat-sheet.pdf
+% examples/multivar.pdf
+% examples/topology-hw-1.pdf
+
+\NeedsTeXFormat{LaTeX2e}
+\RequirePackage{expl3}
+\ProvidesExplClass{rbt-mathnotes-formula-sheet}{2021/11/29}{1.0.2}{Styles
+ for mathematical exam formula sheets.}
+
+\LoadClass{article}
+
+\RequirePackage{rbt-mathnotes}
+
+\cs_set:Npn \@maketitle
+ {
+ \textbf{\@title}~
+ (\@author,~\@date)
+ }
+
+\cs_set:Npn \mn__tiny_thm:nn #1#2
+ {
+ \RenewDocumentEnvironment { #1 } { o }
+ {
+ \textbf
+ {
+ #2
+ \IfValueT { ##1 }
+ {
+ :~##1
+ }
+ .
+ }
+ }
+ {
+ }
+ }
+
+\mn__tiny_thm:nn { thm } { Thm }
+\mn__tiny_thm:nn { lem } { Lem }
+\mn__tiny_thm:nn { cor } { Cor }
+\mn__tiny_thm:nn { prop } { Prop }
+\mn__tiny_thm:nn { defn } { Defn }
+\mn__tiny_thm:nn { ex } { Ex }
+\mn__tiny_thm:nn { note } { Note }
+\mn__tiny_thm:nn { remark } { Rmrk }
+
+\prg_new_conditional:Npnn \mn__if_should_use_multicols:
+ { T, }
+ {
+ \int_compare:nNnTF
+ { \g__mn_fs_columns_int } = { \c_one_int }
+ { \prg_return_false: }
+ { \prg_return_true: }
+ }
+
+\RequirePackage{multicol}
+\AtBeginDocument
+ {
+ \scriptsize
+ \mn__if_should_use_multicols:T
+ {
+ \begin
+ {
+ multicols
+ \bool_if:NF \g__mn_should_balance_multicols_bool
+ { * }
+ }
+ {
+ \int_use:N \g__mn_fs_columns_int
+ }
+ }
+ \skip_set:Nn \abovedisplayskip { 0pt }
+ \skip_set:Nn \belowdisplayskip { 0pt }
+ }
+
+\AtEndDocument
+ {
+ \mn__if_should_use_multicols:T
+ {
+ \end
+ {
+ multicols
+ \bool_if:NF \g__mn_should_balance_multicols_bool
+ { * }
+ }
+ }
+ }
+
+\bool_new:N \g__mn_should_balance_multicols_bool
+
+\keys_define:nn { mn__main }
+ {
+ columns .int_set:N = \g__mn_fs_columns_int ,
+ columns .initial:x = 3 ,
+
+ balance~columns .default:n = true ,
+ balance~columns .bool_set:N = \g__mn_should_balance_multicols_bool ,
+
+ width .value_required:n = true ,
+ width .code:n = \geometry{ paperwidth = #1 } ,
+
+ height .value_required:n = true ,
+ height .code:n = \geometry{ paperheight = #1 } ,
+ }
+
+\RequirePackage
+ [
+ letterpaper ,
+ margin = 0.1in ,
+ ]
+ { geometry }
+
+\skip_set:Nn \parskip { 0.25em }
+
+\RequirePackage { enumitem }
+\setlist
+ {
+ nosep
+ }
+
+\def\section#1{\hrulefill\\\textbf{#1}\\}
diff --git a/macros/latex/contrib/rbt-mathnotes/rbt-mathnotes-hw.cls b/macros/latex/contrib/rbt-mathnotes/rbt-mathnotes-hw.cls
new file mode 100644
index 0000000000..24e91f715e
--- /dev/null
+++ b/macros/latex/contrib/rbt-mathnotes/rbt-mathnotes-hw.cls
@@ -0,0 +1,325 @@
+%% rbt-mathnotes-hw.cls
+%% Copyright 2021 Rebecca B. Turner.
+%
+% 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 Rebecca B. Turner.
+%
+% This work consists of the files:
+% README.md
+% rbt-mathnotes.tex
+% rbt-mathnotes.sty
+% rbt-mathnotes.cls
+% rbt-mathnotes-util.sty
+% rbt-mathnotes-messages.sty
+% rbt-mathnotes-hw.cls
+% rbt-mathnotes-formula-sheet.cls
+% examples/cheat-sheet.tex
+% examples/multivar.tex
+% examples/topology-hw-1.tex
+% and the derived files:
+% rbt-mathnotes.pdf
+% examples/cheat-sheet.pdf
+% examples/multivar.pdf
+% examples/topology-hw-1.pdf
+
+\NeedsTeXFormat{LaTeX2e}
+\RequirePackage{expl3}
+\ProvidesExplClass{rbt-mathnotes-hw}{2021/11/29}{1.0.2}{Companion styles
+ to rbt-mathnotes for typeset homework assignments.}
+
+% \PassOptionsToPackage{noxcolor}{rbt-mathnotes}
+
+\RequirePackage{kvoptions}
+\DeclareDefaultOption
+ {
+ \PassOptionsToClass { \CurrentOption } { rbt-mathnotes }
+ }
+\ProcessKeyvalOptions*
+
+\LoadClass { rbt-mathnotes }
+
+\cs_set:Npn \mn__undefine_thm:n #1
+ {
+ \cs_undefine:c { #1 }
+ \cs_undefine:c { end#1 }
+ \cs_undefine:c { #1* }
+ \cs_undefine:c { end#1* }
+ }
+
+\mn__undefine_thm:n { thm }
+\mn__undefine_thm:n { lem }
+\mn__undefine_thm:n { cor }
+\mn__undefine_thm:n { prop }
+\mn__undefine_thm:n { defn }
+\mn__undefine_thm:n { notation }
+\mn__undefine_thm:n { ex }
+
+\cs_undefine:N \mn__undefine_thm:n
+
+\theoremstyle { definition }
+\newtheorem { thm } { Theorem }
+\newtheorem { lem } { Lemma }
+\newtheorem { cor } { Corollary }
+\newtheorem { prop } { Proposition }
+\newtheorem { defn } { Definition }
+\newtheorem { notation } { Notation }
+\newtheorem { ex } { Example }
+
+% The displayed problem number. \g__mn_problems_int isn't incremented if a
+% custom number is given.
+\int_new:N \g__mn_problems_int
+\int_set_eq:NN \g__mn_problems_int \c_one_int
+
+% The internal problem number. \g__mn_all_problems_int is *always*
+% incremented, so it can be used as a unique identifier in hyperref
+% pdf bookmark names.
+\int_new:N \g__mn_all_problems_int
+\int_set_eq:NN \g__mn_all_problems_int \c_one_int
+
+% Label prepended to problem numbers.
+\tl_const:Nn \g__mn_problem_string_tl { Problem }
+
+\skip_const:Nn \g__mn_problem_before_skip { 2em }
+
+% Label appended to problem numbers; omitted from PDF bookmarks.
+\tl_const:Nn \g__mn_problem_after_tl { . }
+
+% A possible custom problem number. If \c_novalue_tl, use
+% \g__mn_problems_int instead.
+\tl_new:N \mn__problem_number_tl
+\tl_set_eq:NN \mn__problem_number_tl \c_novalue_tl
+
+\tl_const:Nn \mn__problem_number_default_tl
+ {
+ \int_to_arabic:n { \g__mn_problems_int }
+ }
+
+% Current problem number, either from \g__mn_problems_int or
+% \mn__problem_number_tl.
+\tl_new:N \mn__problem_number_current_tl
+
+% Current problem display title, including "problem" label, number, and
+% custom title.
+% \tl_new:N \mn__problem_display_title_tl
+
+\keys_define:nn { mn__main }
+ {
+ problem~string .value_required:n = true ,
+ problem~string .tl_set:N = \g__mn_problem_string_tl ,
+ problem~before~skip .skip_set:N = \g__mn_problem_before_skip
+ }
+
+\keys_define:nn { mn__problem }
+ {
+ number .value_required:n = true ,
+ number .tl_set:N = \mn__problem_number_tl ,
+
+ title .value_required:n = true ,
+ title .tl_set:N = \mn__problem_title_tl ,
+ title .initial:n = ,
+
+ label .value_required:n = true ,
+ label .tl_set:N = \mn__problem_label_tl ,
+
+ % Treat unknown keys as the problem number; this lets us avoid having
+ % 2 or more optional arguments.
+ unknown .code:n =
+ \tl_if_empty:nTF { #1 }
+ {
+ % No value; use it for the problem number.
+ \tl_set_eq:NN \mn__problem_number_tl \l_keys_key_tl
+ }
+ {
+ % Non-empty value; give an error.
+ \msg_error:nnx
+ { mathnotes }
+ { no key in problem }
+ { \tl_use:N \l_keys_key_tl }
+ } ,
+ }
+
+\cs_set:Npn \mn__problem_title_pdf:
+ {
+ % A string like "Problem" or "Exercise" or "Question"
+ \tl_use:N \g__mn_problem_string_tl
+ % The problem number.
+ \tl_if_empty:NF \mn__problem_number_current_tl
+ {
+ \ \tl_use:N \mn__problem_number_current_tl
+ }
+ \tl_if_empty:NF \mn__problem_title_tl
+ {
+ :~\tl_use:N \mn__problem_title_tl
+ }
+ }
+
+\cs_set:Npn \mn__problem_title:
+ {
+ \mn__problem_title_pdf:
+ % The text after the problem, nominally a period (".").
+ \tl_use:N \g__mn_problem_after_tl
+ }
+
+% PDF anchor / bookmark name for hyperref.
+\cs_set:Npn \mn__problem_anchor:
+ {
+ problem.\int_to_arabic:n { \g__mn_all_problems_int }
+ }
+
+\NewDocumentEnvironment { problem }
+ {
+ O{} % Problem number or options
+ }
+ {
+ \keys_set:nn { mn__problem } { #1 }
+
+ % Set the problem number
+ \tl_set:Nn \mn__problem_number_current_tl { }
+ \tl_if_eq:NNTF \mn__problem_number_tl \c_novalue_tl
+ {
+ % No number given
+ \tl_set_eq:NN \mn__problem_number_current_tl \mn__problem_number_default_tl
+ }
+ {
+ % Some number given, *maybe* empty
+ \tl_set_eq:NN \mn__problem_number_current_tl \mn__problem_number_tl
+ }
+
+ \vspace { \skip_use:N \g__mn_problem_before_skip }
+
+ \phantomsection
+ \addcontentsline
+ { toc }
+ { chapter }
+ { \mn__problem_title_pdf: }
+ \begin{mdframed}
+ [
+ style = note ,
+ startinnercode =
+ \mn__note_title:n
+ {
+ \cs_gset:Npx \@currentlabel { \tl_use:N \mn__problem_number_current_tl }
+ \cs_gset:Npx \@currentlabelname { \mn__problem_title: }
+ \tl_if_empty:NF \mn__problem_label_tl
+ {
+ \exp_after:wN \label { \tl_use:N \mn__problem_label_tl }
+ }
+ \mn__problem_title:
+ }
+ ,
+ ]
+ }
+ {
+ \end{mdframed}
+ % If we didn't get a custom number, increment the counter.
+ \tl_if_eq:NNT \mn__problem_number_tl \c_novalue_tl
+ {
+ \int_gincr:N \g__mn_problems_int
+ }
+ % But always increment the internal counter.
+ \int_gincr:N \g__mn_all_problems_int
+ }
+
+\NewDocumentCommand \prob
+ {
+ O{} % Problem number or options
+ m % Problem text
+ }
+ {
+ \begin{problem}[#1]
+ #2
+ \end{problem}
+ }
+
+\cs_set:Npn \mn__add_par_arg_to_sectioning_cmd:N #1
+ {
+ \cs_set_eq:cN { mn__\cs_to_str:N #1 _old } #1
+ \cs_set_eq:cc
+ { mn__the\cs_to_str:N #1 _old }
+ { the\cs_to_str:N #1 }
+ \RenewDocumentCommand #1
+ {
+ s % ##1: Numbered / in ToC?
+ d() % ##2: Number override.
+ o % ##3: ToC title.
+ o % ##4: Page header title.
+ m % ##5: Title.
+ }
+ {
+ \group_begin:
+ \cs_set:Npx \mn__current_thesection_cmd
+ { the\cs_to_str:N #1 }
+ % Is there a number override?
+ \IfValueTF { ##2 }
+ {
+ % If yes, *globally* change the number format.
+ \cs_gset:cpn { \mn__current_thesection_cmd } { ##2 }
+ }
+ {
+ % Otherwise, restore the number format from a previous override,
+ % if applicable.
+ \cs_gset_eq:cc
+ { \mn__current_thesection_cmd }
+ { mn__the\cs_to_str:N #1 _old }
+ }
+ % Save the original command so we can use it as a single token.
+ \cs_set_eq:Nc \mn__orig_sectioning_cmd { mn__\cs_to_str:N #1 _old }
+ \exp_last_unbraced:Ne \mn__orig_sectioning_cmd
+ {
+ % Propagate the star.
+ \IfBooleanT { ##1 } { * }
+ % Propogate other arguments.
+ \IfValueT { ##3 } { [##3] }
+ \IfValueT { ##4 } { [##4] }
+ { ##5 }
+ }
+ \group_end:
+ }
+ }
+
+\cs_set:Npn \mn__add_par_arg_to_sectioning_cmds:n #1
+ {
+ \clist_map_function:nN { #1 } \mn__add_par_arg_to_sectioning_cmd:N
+ }
+
+\makeheadstyles { rbt-mathnotes-hw }
+ {
+ \chapterstyle { rbt-mathnotes }
+ \headstyles { rbt-mathnotes }
+
+ % Don't use chapter numbers in sections and beyond:
+ \cs_set:Npn \thesection { \arabic{section} }
+
+ % Add paren-arg to override numbers in sectioning commands.
+ \mn__add_par_arg_to_sectioning_cmds:n
+ {
+ \chapter ,
+ \section ,
+ \subsection ,
+ \subsubsection ,
+ \paragraph ,
+ \subparagraph ,
+ }
+ }
+
+\headstyles { rbt-mathnotes-hw }
+
+\setlength{\columnsep}{3em}
+
+% No chapter numbers for figures.
+\counterwithout{figure}{chapter}
+
+% Put author name, title in headings
+\makeevenfoot { headings } { } { } { }
+\makeoddfoot { headings } { } { } { }
+\makeevenhead { headings } { } { } { \thepage }
+\makeoddhead { headings } { \@author,~\textit{ \@title } } { } { \thepage }
diff --git a/macros/latex/contrib/rbt-mathnotes/rbt-mathnotes-messages.sty b/macros/latex/contrib/rbt-mathnotes/rbt-mathnotes-messages.sty
new file mode 100644
index 0000000000..30b0c1a777
--- /dev/null
+++ b/macros/latex/contrib/rbt-mathnotes/rbt-mathnotes-messages.sty
@@ -0,0 +1,76 @@
+%% rbt-mathnotes-messages.sty
+%% Copyright 2021 Rebecca B. Turner.
+%
+% 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 Rebecca B. Turner.
+%
+% This work consists of the files:
+% README.md
+% rbt-mathnotes.tex
+% rbt-mathnotes.sty
+% rbt-mathnotes.cls
+% rbt-mathnotes-util.sty
+% rbt-mathnotes-messages.sty
+% rbt-mathnotes-hw.cls
+% rbt-mathnotes-formula-sheet.cls
+% examples/cheat-sheet.tex
+% examples/multivar.tex
+% examples/topology-hw-1.tex
+% and the derived files:
+% rbt-mathnotes.pdf
+% examples/cheat-sheet.pdf
+% examples/multivar.pdf
+% examples/topology-hw-1.pdf
+
+\NeedsTeXFormat{LaTeX2e}
+\RequirePackage{expl3}
+\ProvidesExplPackage{rbt-mathnotes-messages}{2021/11/29}{1.0.2}{Messages
+ for mathnotes.}
+
+\msg_new:nnnn { mathnotes }
+ { no name }
+ {
+ No~author~name~given~but~\exp_not:N \maketitle~was~still~used.
+ }
+ {
+ Set~your~name~in~the~preamble: \\
+ \exp_not:N \mathnotes\{~name~=~Your~name~...~,~\}
+ }
+
+\msg_new:nnnn { mathnotes }
+ { acronym already defined }
+ {
+ Command~#1~already~defined;~refusing~to~redefine~as~an~acronym~for~#2.
+ }
+ {
+ Pick~a~different~destination~control~sequence~with~\protect\newacronym's~
+ optional~argument?
+ }
+
+\msg_new:nnnn { mathnotes }
+ { no key in problem }
+ {
+ Key~#1~is~not~defined~for~the~problem~environment.
+ }
+ {
+ If~you~meant~to~set~the~problem~number,~don't~include~a~value.
+ }
+
+
+\msg_new:nnnn { mathnotes }
+ { requires memoir class }
+ {
+ Option~#1~can~only~be~used~with~the~memoir~class!
+ }
+ {
+ Use~the~memoir~document~class~or~one~of~the~rbt-mathnotes~classes~wrapping~it.
+ }
diff --git a/macros/latex/contrib/rbt-mathnotes/rbt-mathnotes-util.sty b/macros/latex/contrib/rbt-mathnotes/rbt-mathnotes-util.sty
new file mode 100644
index 0000000000..b95c73da01
--- /dev/null
+++ b/macros/latex/contrib/rbt-mathnotes/rbt-mathnotes-util.sty
@@ -0,0 +1,180 @@
+%% rbt-mathnotes-util.sty
+%% Copyright 2021 Rebecca B. Turner.
+%
+% 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 Rebecca B. Turner.
+%
+% This work consists of the files:
+% README.md
+% rbt-mathnotes.tex
+% rbt-mathnotes.sty
+% rbt-mathnotes.cls
+% rbt-mathnotes-util.sty
+% rbt-mathnotes-messages.sty
+% rbt-mathnotes-hw.cls
+% rbt-mathnotes-formula-sheet.cls
+% examples/cheat-sheet.tex
+% examples/multivar.tex
+% examples/topology-hw-1.tex
+% and the derived files:
+% rbt-mathnotes.pdf
+% examples/cheat-sheet.pdf
+% examples/multivar.pdf
+% examples/topology-hw-1.pdf
+
+\NeedsTeXFormat{LaTeX2e}
+\RequirePackage{expl3}
+\ProvidesExplPackage{rbt-mathnotes-util}{2021/11/29}{1.0.2}{Utility commands
+ for rbt-mathnotes.}
+
+\cs_set:Npn \mn__legacy_bool_option:n #1
+ {
+ \bool_new:c { g__mn_#1_bool }
+ \csname if\@currname @#1 \endcsname
+ \bool_gset_true:c { g__mn_#1_bool }
+ \else
+ \bool_gset_false:c { g__mn_#1_bool }
+ \fi
+ }
+
+\keys_define:nn { mn_options }
+ {
+ init .tl_set:N = \l__mn_options_init_tl ,
+ init .default:n = true ,
+ init .initial:x = \tl_use:N \c_novalue_tl ,
+
+ default .tl_set:N = \l__mn_options_default_tl ,
+ default .value_required:n = true ,
+ default .initial:x = \tl_use:N \c_novalue_tl ,
+
+ type .choice: ,
+ type .choices:nn = { bool, str }
+ { \tl_set_eq:NN \l__mn_options_type_tl \l_keys_choice_tl } ,
+ type .value_required:n = true ,
+ type .initial:n = bool ,
+ }
+
+% A hook which executes after \ProcessKeyvalOptions and is used to convert
+% TeX booleans and so on to LaTeX3 booleans and strings.
+\tl_new:N \g__mn_after_options_hook_tl
+% A hook used to define a particular option, allowing keys to be set only in
+% a group.
+\tl_new:N \g__mn_define_option_tl
+% Initializes complementary #1 and no#1 package options.
+\NewDocumentCommand \mn__option_new { o m }
+ {
+ \tl_gclear:N \g__mn_define_option_tl
+ \group_begin:
+ \tl_if_novalue:nF { #1 }
+ { \keys_set:nn { mn_options } { #1 } }
+
+ \tl_set:Nn \l_tmpa_tl { bool }
+ \tl_if_eq:NNT \l__mn_options_type_tl \l_tmpa_tl
+ {
+ % If no default was given, use `false` for bools.
+ \tl_if_eq:NNT \l__mn_options_init_tl \c_novalue_tl
+ { \tl_set:Nn \l__mn_options_init_tl { false } }
+
+ \tl_gput_right:Nx \g__mn_define_option_tl
+ {
+ \exp_not:N \DeclareBoolOption [\l__mn_options_init_tl]{#2}
+ \exp_not:N \DeclareComplementaryOption {no#2}{#2}
+ }
+
+ % After we process options, convert to an expl3 bool.
+ \tl_gput_right:Nn \g__mn_after_options_hook_tl
+ {
+ % Adapt the legacy bool into an expl3 bool.
+ \mn__legacy_bool_option:n { #2 }
+ % Then, delete the legacy bool.
+ \mn__legacy_bool_undefine:n { \@currname @#2 }
+ }
+ }
+
+ % For a string option:
+ \tl_set:Nn \l_tmpa_tl { str }
+ \tl_if_eq:NNT \l__mn_options_type_tl \l_tmpa_tl
+ {
+ \tl_gput_right:No \g__mn_define_option_tl
+ {
+ \exp_not:N \DeclareStringOption
+ \tl_if_eq:NNF \l__mn_options_init_tl \c_novalue_tl
+ { [\l__mn_options_init_tl] }
+ { #2 }
+ \tl_if_eq:NNF \l__mn_options_default_tl \c_novalue_tl
+ { [\l__mn_options_default_tl] }
+ }
+
+ \tl_gput_right:Nn \g__mn_after_options_hook_tl
+ {
+ % Create the new tl for this option.
+ \tl_new:c { g__mn_#2_tl }
+ % Set it to the command kvoptions created.
+ \tl_set:co { g__mn_#2_tl } { \cs:w \@currname @#2 \cs_end: }
+ % Delete the old command.
+ \cs_undefine:c { \@currname @#2 }
+ }
+ }
+ \group_end:
+ \tl_use:N \g__mn_define_option_tl
+ }
+
+\cs_set:Npn \mn__process_options:n #1
+ {
+ \ProcessKeyvalOptions { #1 }
+ \tl_use:N \g__mn_after_options_hook_tl
+ }
+
+\cs_set:Npn \mn__legacy_bool_undefine:n #1
+ {
+ \cs_undefine:c { if#1 }
+ \cs_undefine:c { #1true }
+ \cs_undefine:c { #1false }
+ }
+
+% Package configuration string values.
+% {< module >}{< family >}{< key name >}
+\cs_set:Npn \mn__key_new:nnn #1#2#3
+ {
+ \tl_set_eq:cN { l__#1_#3_tl } \c_novalue_tl
+ \keys_define:nn { #2 }
+ {
+ #1 .value_required:n = true,
+ #1 .tl_set:c = l__#1_#3_tl,
+ }
+ }
+
+\cs_set:Npn \mn__mathnotes_key_new:n #1
+ {
+ \mn__key_new:nnn { mn } { mathnotes } { #1 }
+ }
+
+\cs_set:Npn \mn__keys_new:n #1 { \clist_map_function:nN { #1 } \mn__mathnotes_key_new:n }
+
+\prg_new_conditional:Npnn \mn__if_package_loaded:n #1
+ { p, T, F, TF }
+ {
+ \@ifpackageloaded { #1 }
+ { \prg_return_true: }
+ { \prg_return_false: }
+ }
+
+\prg_new_conditional:Npnn \mn__if_novalue:N #1
+ { p, T, F, TF }
+ {
+ \tl_if_eq:NNTF \c_novalue_tl #1
+ { \prg_return_true: }
+ { \prg_return_false: }
+ }
+\prg_generate_conditional_variant:Nnn \mn__if_novalue:N
+ { c }
+ { p, T, F, TF }
diff --git a/macros/latex/contrib/rbt-mathnotes/rbt-mathnotes.cls b/macros/latex/contrib/rbt-mathnotes/rbt-mathnotes.cls
new file mode 100644
index 0000000000..df69338ad1
--- /dev/null
+++ b/macros/latex/contrib/rbt-mathnotes/rbt-mathnotes.cls
@@ -0,0 +1,202 @@
+%% rbt-mathnotes.cls
+%% Copyright 2021 Rebecca B. Turner.
+%
+% 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 Rebecca B. Turner.
+%
+% This work consists of the files:
+% README.md
+% rbt-mathnotes.tex
+% rbt-mathnotes.sty
+% rbt-mathnotes.cls
+% rbt-mathnotes-util.sty
+% rbt-mathnotes-messages.sty
+% rbt-mathnotes-hw.cls
+% rbt-mathnotes-formula-sheet.cls
+% examples/cheat-sheet.tex
+% examples/multivar.tex
+% examples/topology-hw-1.tex
+% and the derived files:
+% rbt-mathnotes.pdf
+% examples/cheat-sheet.pdf
+% examples/multivar.pdf
+% examples/topology-hw-1.pdf
+
+\NeedsTeXFormat{LaTeX2e}
+\RequirePackage{expl3}
+\ProvidesExplClass{rbt-mathnotes}{2021/11/29}{1.0.2}{Styles for mathematical
+ note taking.}
+
+\PassOptionsToClass { openany, oneside } { memoir }
+
+\LoadClass{memoir}
+\setsecnumdepth{subsubsection}
+\settocdepth{subsubsection}
+\nouppercaseheads
+\makeevenfoot { plain } { } { } { }
+\makeoddfoot { plain } { } { } { }
+\makeevenhead { plain } { } { } { \thepage }
+\makeoddhead { plain } { } { } { \thepage }
+
+\RequirePackage{etoolbox}
+\RequirePackage{xparse}
+\AtBeginDocument{
+ \patchcmd { \@tocmaketitle }
+ { \thispagestyle { chapter } }
+ { }
+ { }
+ { }
+ }
+
+\makechapterstyle { rbt-mathnotes }
+ {
+ % allow for 99 chapters!
+ \settowidth{\chapindent}{\chapnumfont 999}
+
+ \RenewDocumentCommand \chapnumfont { }
+ {
+ \normalfont
+ \huge
+ \exp:w \mn__color:n {MNsecnum}
+ }
+ \RenewDocumentCommand \chapterheadstart { } { }
+ \RenewDocumentCommand \printchaptername { } { }
+ \RenewDocumentCommand \chapternamenum { } { }
+ \RenewDocumentCommand \printchapternum { }
+ {
+ \noindent
+ \llap
+ {
+ \makebox [ \chapindent ]
+ { \chapnumfont \thechapter }
+ }
+ }
+ \RenewDocumentCommand \afterchapternum { } { }
+ \RenewDocumentCommand \printchaptertitle { m }
+ {
+ \raggedright
+ \huge
+ ##1
+ }
+ \RenewDocumentCommand \afterchaptertitle { }
+ {
+ \vskip \onelineskip
+ \hrule
+ \vskip \onelineskip
+ }
+ }
+
+\makeheadstyles { rbt-mathnotes }
+ {
+ \chapterstyle { rbt-mathnotes }
+
+ \setsecnumformat
+ {
+ \group_begin:
+ \exp:w \mn__color:n {MNsecnum}
+ \cs:w the##1 \cs_end:
+ \quad
+ \group_end:
+ }
+
+ % Sections.
+ \setbeforesecskip
+ {
+ -1\onelineskip plus -0.5\onelineskip minus -0.5\onelineskip
+ }
+ \setaftersecskip
+ {
+ 1\onelineskip plus 0.1\onelineskip
+ }
+ \setsecheadstyle
+ {
+ \normalfont
+ \memRTLraggedright
+ \bfseries
+ \LARGE
+ % \scshape
+ % \MakeTextLowercase
+ }
+
+ % Subsections.
+ \setbeforesubsecskip
+ {
+ -1.0\onelineskip plus -0.25\onelineskip minus -0.25\onelineskip
+ }
+ \setaftersubsecskip
+ {
+ 1.0\onelineskip plus 0.1\onelineskip
+ }
+ \setsubsecheadstyle
+ {
+ \sethangfrom { \noindent ####1 }
+ \normalfont
+ \bfseries
+ \memRTLraggedright
+ }
+
+ % Subsubsections.
+ \setbeforesubsubsecskip
+ {
+ 1.0\onelineskip plus 0.5\onelineskip minus 0.2\onelineskip
+ }
+ \setaftersubsubsecskip
+ {
+ 1.0\onelineskip plus 0.1\onelineskip
+ }
+ \setsubsubsecheadstyle
+ {
+ \normalfont
+ \normalsize
+ \bfseries
+ \memRTLraggedright
+ }
+
+ % Paragraphs.
+ \setbeforeparaskip
+ {
+ 1.0\onelineskip plus 0.5\onelineskip minus 0.2\onelineskip
+ }
+ \setafterparaskip { -1em }
+ \setparaheadstyle
+ {
+ \normalfont
+ \normalsize
+ \bfseries
+ }
+
+ % Subparagraphs.
+ \setsubparaindent { \parindent }
+ \setbeforesubparaskip
+ {
+ 1.0\onelineskip plus 0.5\onelineskip minus 0.2\onelineskip
+ }
+ \setaftersubparaskip { -1em }
+ \setsubparaheadstyle
+ {
+ \normalfont
+ \normalsize
+ \itshape
+ \addperiod
+ }
+ }
+
+\headstyles { rbt-mathnotes }
+
+% \chapterstyle{hangnum}
+% \cs_set:Npn \chapnumfont
+ % {
+ % \HUGE \bfseries
+ % \exp:w \mn__color:n {MNsecnum}
+ % }
+
+\RequirePackage { rbt-mathnotes }
diff --git a/macros/latex/contrib/rbt-mathnotes/rbt-mathnotes.pdf b/macros/latex/contrib/rbt-mathnotes/rbt-mathnotes.pdf
new file mode 100644
index 0000000000..0041a12eb2
--- /dev/null
+++ b/macros/latex/contrib/rbt-mathnotes/rbt-mathnotes.pdf
Binary files differ
diff --git a/macros/latex/contrib/rbt-mathnotes/rbt-mathnotes.sty b/macros/latex/contrib/rbt-mathnotes/rbt-mathnotes.sty
new file mode 100644
index 0000000000..afa05cbfb8
--- /dev/null
+++ b/macros/latex/contrib/rbt-mathnotes/rbt-mathnotes.sty
@@ -0,0 +1,1122 @@
+%% rbt-mathnotes.sty
+%% Copyright 2021 Rebecca B. Turner.
+%
+% 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 Rebecca B. Turner.
+%
+% This work consists of the files:
+% README.md
+% rbt-mathnotes.tex
+% rbt-mathnotes.sty
+% rbt-mathnotes.cls
+% rbt-mathnotes-util.sty
+% rbt-mathnotes-messages.sty
+% rbt-mathnotes-hw.cls
+% rbt-mathnotes-formula-sheet.cls
+% examples/cheat-sheet.tex
+% examples/multivar.tex
+% examples/topology-hw-1.tex
+% and the derived files:
+% rbt-mathnotes.pdf
+% examples/cheat-sheet.pdf
+% examples/multivar.pdf
+% examples/topology-hw-1.pdf
+
+\NeedsTeXFormat{LaTeX2e}
+\RequirePackage{expl3}
+\ProvidesExplPackage{rbt-mathnotes}{2021/11/29}{1.0.2}{Styles for
+ mathematical note taking.}
+\errorcontextlines 20
+% Module 'mn'
+
+% Load some utility packages.
+\RequirePackage{xparse} % Better command declarations.
+\RequirePackage{xkeyval} % Better keyval parsing.
+% {{{ Package options
+\RequirePackage{kvoptions} % More flexible package options.
+\RequirePackage{rbt-mathnotes-util}
+
+\SetupKeyvalOptions
+ {
+ family = mn__package_options ,
+ }
+
+\mn__option_new[init = true]{fonts}
+\mn__option_new[init = true]{stix}
+\mn__option_new[init = true]{symbols}
+\mn__option_new[init = true]{maketitle}
+\mn__option_new[init = true]{titles}
+\mn__option_new[init = true]{xcolor}
+\mn__option_new[init = true]{theorems}
+\mn__option_new[init = true]{enumitem}
+\mn__option_new{listings}
+\mn__option_new{knowledge}
+\mn__option_new{index}
+\mn__option_new{footnotes}
+\mn__option_new{figures}
+\mn__option_new{tabu}
+\mn__option_new{kindle}
+
+\mn__process_options:n { mn__package_options } % }}}
+
+\RequirePackage{rbt-mathnotes-messages}
+
+% {{{ Load fonts.
+% Check if we can load fontspec; this is taken from fontspec.sty.
+\bool_new:N \c__mn_fontspec_bool
+\bool_set:Nn \c__mn_fontspec_bool
+ {
+ \sys_if_engine_xetex_p: || \sys_if_engine_luatex_p:
+ }
+
+% NOTE: The order these packages are loaded in is very important.
+% - mathtools has to be loaded before these or overbrackets and such get
+% messed up
+% - unicode-math overwrites a bunch of commands, so should be loaded after
+% amsmath and others
+% - amsmath should be loaded after stix2 (not sure why, but the stix2
+% documentation specifies this) -- however, if we can use fontspec, we
+% just load the stix2 fonts without the stix2 package itself, so we load
+% amsmath before unicode-math (and the stix2 fonts)
+\RequirePackage{mathtools}
+\bool_if:NTF \g__mn_fonts_bool
+ {
+ \bool_if:NTF \c__mn_fontspec_bool
+ {
+ \RequirePackage{amsmath}[2013/01/14]
+ % unicode-math makes equations copy/pastable in PDF output.
+ % Note that unicode-math encapsulates the functionality of fontspec.
+ \RequirePackage[
+ warnings-off={mathtools-colon,mathtools-overbracket}
+ ]{unicode-math}
+ \bool_if:NT \g__mn_stix_bool
+ {
+ \setmainfont
+ [
+ UprightFont = *-Regular ,
+ ItalicFont = *-Italic ,
+ BoldFont = *-Bold ,
+ BoldItalicFont = *-BoldItalic ,
+ Extension = .otf ,
+ ]
+ { STIX2Text }
+
+ \setmathfont
+ [
+ StylisticSet =
+ {
+ 1 , % better caligraphic forms
+ 8 , % upright integrals
+ } ,
+ Extension = .otf ,
+ ]
+ { STIX2Math }
+ }
+ }
+ {
+ % Otherwise, load non-XeTeX fallbacks.
+ \bool_if:NT \g__mn_stix_bool
+ {
+ \RequirePackage[upint]{stix2}
+ }
+ \RequirePackage{amsmath}[2013/01/14]
+ }
+ }
+ {
+ % No fonts
+ \RequirePackage{amsmath}[2013/01/14]
+ } % }}}
+
+\bool_if:NT \g__mn_symbols_bool % {{{ Define math symbol commands
+ {
+ % Logical not
+ \mn__if_package_loaded:nTF { unicode-math }
+ { \DeclareDocumentCommand \lnot {} { \char "AC } } % 0xAC = ¬
+ { \mathchardef \Not = "1218 }
+
+ % Blackboard bold set symbols
+ \NewDocumentCommand \Rational {}{\mathbb{Q}}
+ \ProvideDocumentCommand \Rat {}{\Rational}
+ \ProvideDocumentCommand \Q {}{\Rational}
+
+ % \NewDocumentCommand \Irrational {}{\mathbb{I}}
+ % \ProvideDocumentCommand \Irrat {}{\Irrational}
+ % \ProvideDocumentCommand \I {}{\Irrational}
+
+ \NewDocumentCommand \Natural {}{\mathbb{N}}
+ \ProvideDocumentCommand \Nat {}{\Natural}
+ \ProvideDocumentCommand \N {}{\Natural}
+
+ \NewDocumentCommand \Integer {}{\mathbb{Z}}
+ \ProvideDocumentCommand \Int {}{\Integer}
+ \ProvideDocumentCommand \Z {}{\Integer}
+
+ \NewDocumentCommand \Complex {}{\mathbb{C}}
+ \ProvideDocumentCommand \Comp {}{\Complex}
+ % Renew \C to mean \Complex in math-mode; normally, \C just gives an
+ % error in math-mode.
+ % ...if \C isn't defined, just define it normally.
+ \AtBeginDocument
+ {
+ \cs_if_free:NTF \C
+ { \NewDocumentCommand }
+ {
+ \cs_set_eq:NN \mn__C_old \C
+ \RenewDocumentCommand
+ }
+ \C {}{
+ \mode_if_math:TF
+ { \Complex } % Complex set
+ { \mn__C_old } % Copyright sign
+ }
+ }
+
+ \NewDocumentCommand \Real {}{\mathbb{R}}
+ \ProvideDocumentCommand \R {}{\Real}
+
+ % Using the Weierstrass p here is probably a bit controversial, but I like
+ % it. I'm open to change, though...
+ \ProvideDocumentCommand \powerset {}{\wp}
+
+ \RenewDocumentCommand \vec {m}{\mathbf{#1}}
+
+ % Operator synonyms.
+ % Set intersect.
+ \ProvideDocumentCommand \intersection {}{\cap}
+ \ProvideDocumentCommand \inter {}{\cap}
+ \ProvideDocumentCommand \bigintersection {}{\bigcap}
+ \ProvideDocumentCommand \biginter {}{\bigcap}
+
+ % Set union.
+ \ProvideDocumentCommand \union {}{\cup}
+ \ProvideDocumentCommand \bigunion {}{\bigcup}
+ % Disjoint union.
+ \ProvideDocumentCommand \disjointunion {}{\sqcup}
+ \ProvideDocumentCommand \disunion {}{\sqcup}
+
+ % Divisiblity.
+ \ProvideDocumentCommand \divisible {}{\mid}
+ \ProvideDocumentCommand \div {}{\mid}
+ % Negation.
+ \ProvideDocumentCommand \notdivisible {}{\nmid}
+ \ProvideDocumentCommand \ndivisible {}{\nmid}
+ \ProvideDocumentCommand \notdiv {}{\nmid}
+ \ProvideDocumentCommand \ndiv {}{\nmid}
+
+ % Wrappers around floor and ceil.
+ \ProvideDocumentCommand \floor {m}{\lfloor #1\rfloor}
+ \ProvideDocumentCommand \ceil {m}{\lceil #1\rceil}
+
+ % The default empty set symbol is very ugly. Use \varnothing instead,
+ % which is less ugly.
+ \AtBeginDocument{\RenewDocumentCommand \emptyset {}{\varnothing}}
+ \ProvideDocumentCommand \es {}{\emptyset}
+
+ % Function composition. The notation g \after f helps internalize the
+ % order of operations. :)
+ \ProvideDocumentCommand \after {}{\circ}
+
+ % Cross product.
+ \ProvideDocumentCommand \cross {}{\times}
+
+ % Operators.
+ % Function image.
+ \cs_if_free:NT \img
+ { \DeclareMathOperator \img {img} }
+ % Function pre-image.
+ \cs_if_free:NT \pre
+ { \DeclareMathOperator \pre {pre} }
+ % Function stabilizer.
+ \cs_if_free:NT \Stab
+ { \DeclareMathOperator \Stab {Stab} }
+ % Set of a function's fixed points.
+ \cs_if_free:NT \FixPt
+ { \DeclareMathOperator \FixPt {FixPt} }
+ % Identity function
+ \cs_if_free:NT \id
+ { \DeclareMathOperator \id {id} }
+
+ % Injective function.
+ \ProvideDocumentCommand \injection {}{\hookrightarrow}
+ \ProvideDocumentCommand \inj {}{\hookrightarrow}
+ % Surjective function.
+ \ProvideDocumentCommand \surjection {}{\twoheadrightarrow}
+ \ProvideDocumentCommand \surj {}{\twoheadrightarrow}
+ % Bijective function.
+ \ProvideDocumentCommand \bijection {}{\twoheadrightarrowtail}
+ \ProvideDocumentCommand \bijective {}{\twoheadrightarrowtail}
+ \ProvideDocumentCommand \bij {}{\twoheadrightarrowtail}
+ % Function restriction.
+ \cs_if_free:NT \restriction
+ { \DeclareMathOperator \restriction {|} }
+ \ProvideDocumentCommand \restr {}{\restriction}
+
+ % d/dx
+ \ProvideDocumentCommand \dd { O{} m }{\frac{d#1}{d#2}}
+ \ProvideDocumentCommand \pd { O{} m }{\frac{\partial#1}{\partial#2}}
+ \ProvideDocumentCommand \gradient {}{\nabla}
+ \ProvideDocumentCommand \grad {}{\nabla}
+ \cs_if_free:NT \curl
+ { \DeclareMathOperator \curl {curl} }
+ \cs_if_free:NT \dive
+ { \DeclareMathOperator \dive {div} }
+ } % }}}
+
+% Gives this an equation a number in an amsmath starred environment.
+\ProvideDocumentCommand \numberthis { } % {{{
+ {
+ \tag { \theequation }
+ \refstepcounter { equation }
+ } % }}}
+
+% Gives this equation a number and label in an amsmath starred environment.
+\ProvideDocumentCommand \labelthis { m } % {{{
+ {
+ \numberthis
+ \IfValueT { #1 }
+ { \label { #1 } }
+ } % }}}
+
+\bool_if:NT \g__mn_enumitem_bool
+ { \RequirePackage{enumitem} }
+
+\bool_if:NT \g__mn_listings_bool
+ { \RequirePackage{listings} }
+
+\bool_if:NT \g__mn_xcolor_bool % {{{ Load xcolor and define MN colors
+ {
+ \PassOptionsToPackage { rgb } { xcolor }
+ \RequirePackage { xcolor }
+ \providecolorset { HTML }
+ % Prefix/postfix of all color names
+ { } { }
+ {
+ \use_none:n
+ ; MNthmtitle , 0F0066
+ ; MNthmbg , EBFEFF
+ ; MNthmline , 4836B3
+ ; MNextitle , 692219
+ ; MNexbg , FFF0EB
+ ; MNexline , CC7468
+ ; MNdefntitle , 00540B
+ ; MNdefnline , 196924
+ ; MNdefnbg , EBFFED
+ ; MNnotetitle , 6B0019
+ ; MNnoteline , CC3F60
+ ; MNnotebg , FFF5F7
+
+ ; MNsecnum , 8015A1
+
+ ; MNlink , 113DB8
+ }
+ } % }}}
+
+\bool_if:NT \g__mn_listings_bool % {{{ Better default styles
+ {
+ \RequirePackage { xcolor }
+ \lstset
+ {
+ % Use a monospace font for code listings.
+ basicstyle = \ttfamily ,
+ language = Mathematica ,
+ % Tab size of 4, but you should probably use spaces.
+ tabsize = 4 ,
+ % Keywords in blue.
+ keywordstyle = \bfseries\ttfamily\color[rgb]{0,.3,.7} ,
+ % Comments in green.
+ commentstyle = \color[rgb]{0.133,0.545,0.133} ,
+ % Strings in orange.
+ stringstyle = \color[rgb]{0.75,0.49,0.07} ,
+ % The default listings characters are too widely-spaced.
+ % 0.55em/character makes things look a lot better.
+ basewidth = 0.55em ,
+ % Wrap lines if they're too long, and wrap at whitespace.
+ breaklines ,
+ breakatwhitespace = true ,
+ }
+ } % }}}
+
+% Creates an acronym-command.
+% \newacronym[<\command>]{<text>} defines \command to be \textsc{text}.
+% \newacronym{<text>} defines \text to be \textsc{text}.
+\ProvideDocumentCommand \newacronym { o m } % {{{
+ {
+ \group_begin:
+ % If we have #1, then #1 is the cs we're going to define; #1 is a cs.
+ % Otherwise, we define \#2.
+ \IfValueTF { #1 }
+ { \cs_set:Npn \mn__acronym_cs: { \cs_to_str:N #1 } }
+ { \cs_set:Npn \mn__acronym_cs: { #2 } }
+
+ % Ensure that the cs is undefined.
+ \cs_if_exist:cT { \mn__acronym_cs: }
+ {
+ \msg_error:nnxx
+ { mathnotes }
+ { acronym already defined }
+ { \exp_not:c { \mn__acronym_cs: } }
+ { #2 }
+ }
+
+ % Finally, define the acronym command.
+ \cs_new:cpn { \mn__acronym_cs: }
+ { \textsc { #2 } }
+ \group_end:
+ } % }}}
+
+% \newacronyms takes a comma-separated list as its argument and defines them
+% all as acronyms.
+\ProvideDocumentCommand \newacronyms { m }
+ { \clist_map_function:nN { #1 } \newacronym }
+
+% {{{ Package configuration string values; \mathnotes command
+\keys_define:nn { mn__main }
+ {
+ date .value_required:n = true ,
+ date .code:n = \date{#1} ,
+ author .value_required:n = true ,
+ author .code:n = \author{#1} ,
+ title .value_required:n = true ,
+ title .code:n = \title{#1} ,
+
+ generate~thanks .value_required:n = false ,
+ generate~thanks .bool_set:N = \g__mn_should_make_thanks ,
+ generate~thanks .default:n = true ,
+ generate~thanks .initial:n = true ,
+ }
+
+\cs_set:Npn \mn__key_new:n #1
+ {
+ \keys_define:nn { mn__main }
+ {
+ #1 .value_required:n = true ,
+ #1 .tl_gset:c = g__mn_#1_tl ,
+ #1 .initial:x = ,
+ }
+ }
+
+\cs_set:Npn \mn__keys_new:n #1 { \clist_map_function:nN { #1 } \mn__key_new:n }
+
+\mn__keys_new:n
+ {
+ instructor, course, name, email, institution, semester,
+ }
+
+\NewDocumentCommand \mathnotes { m }
+ {
+ \keys_set:nn { mn__main } { #1 }
+ }
+% }}}
+
+\bool_if:NT \g__mn_maketitle_bool % {{{ \author, \title, \maketitle, \thanks, etc.
+ {
+ \bool_new:N \g__mn_author_set
+ \cs_set:Npn \author #1
+ {
+ \bool_gset_true:N \g__mn_author_set
+ \cs_gset:Npn \@author { #1 }
+ }
+
+ \bool_new:N \g__mn_title_set
+ \cs_set:Npn \title #1
+ {
+ \bool_gset_true:N \g__mn_title_set
+ \cs_gset:Npn \@title { #1 }
+ }
+
+ \prg_new_conditional:Npnn \mn__if_should_make_thanks: % {{{
+ { T, }
+ {
+ \bool_if:NTF \g__mn_should_make_thanks
+ {
+ \bool_lazy_all:nTF
+ {
+ { \tl_if_empty_p:N \g__mn_email_tl }
+ { \tl_if_empty_p:N \g__mn_course_tl }
+ { \tl_if_empty_p:N \g__mn_instructor_tl }
+ { \tl_if_empty_p:N \g__mn_institution_tl }
+ { \tl_if_empty_p:N \g__mn_semester_tl }
+ }
+ { \prg_return_false: }
+ { \prg_return_true: }
+ }
+ { \prg_return_false: }
+ } % }}}
+
+ \cs_set:Npn \mn__make_thanks_text % {{{
+ {
+ \tl_if_empty:NF \g__mn_email_tl
+ {
+ \email { \tl_use:N { \g__mn_email_tl } }
+ \bool_lazy_all:nF
+ {
+ { \tl_if_empty_p:N \g__mn_course_tl }
+ { \tl_if_empty_p:N \g__mn_instructor_tl }
+ { \tl_if_empty_p:N \g__mn_institution_tl }
+ { \tl_if_empty_p:N \g__mn_semester_tl }
+ }
+ { ;~ }
+ }
+ \tl_if_empty:NF \g__mn_course_tl
+ {
+ \tl_use:N \g__mn_course_tl
+ \bool_lazy_all:nF
+ {
+ { \tl_if_empty_p:N \g__mn_instructor_tl }
+ { \tl_if_empty_p:N \g__mn_institution_tl }
+ { \tl_if_empty_p:N \g__mn_semester_tl }
+ }
+ { ~ }
+ }
+ \tl_if_empty:NF \g__mn_instructor_tl
+ {
+ \bool_lazy_all:nTF
+ {
+ { \tl_if_empty_p:N \g__mn_email_tl }
+ { \tl_if_empty_p:N \g__mn_course_tl }
+ }
+ { Taught~by~ }
+ { taught~by~ }
+ \tl_use:N \g__mn_instructor_tl
+ }
+ \tl_if_empty:NF \g__mn_institution_tl
+ {
+ \bool_lazy_all:nTF
+ {
+ { \tl_if_empty_p:N \g__mn_email_tl }
+ { \tl_if_empty_p:N \g__mn_course_tl }
+ { \tl_if_empty_p:N \g__mn_instructor_tl }
+ }
+ { At~ }
+ { ~at~ }
+ \tl_use:N \g__mn_institution_tl
+ }
+ \tl_if_empty:NF \g__mn_semester_tl
+ {
+ \bool_lazy_all:nF
+ {
+ { \tl_if_empty_p:N \g__mn_email_tl }
+ { \tl_if_empty_p:N \g__mn_course_tl }
+ { \tl_if_empty_p:N \g__mn_instructor_tl }
+ { \tl_if_empty_p:N \g__mn_institution_tl }
+ }
+ { ,~ }
+ \tl_use:N \g__mn_semester_tl
+ }
+ .
+ } % }}}
+
+ \cs_set:Npn \@author % {{{
+ {
+ % If the author hasn't been set, we provide this (complicated, PITA)
+ % default; however, if we don't have any information to put in it, we
+ % still give a warning.
+ \tl_if_eq:NNTF \g__mn_name_tl \c_novalue_tl
+ {
+ \msg_warning:nn { mathnotes } { no name }
+ }
+ {
+ \tl_use:N \g__mn_name_tl
+ % Do we have any information to put in a \thanks?
+ \mn__if_should_make_thanks:T
+ {
+ \thanks { \mn__make_thanks_text }
+ }
+ }
+ } % }}}
+
+ % {{{ \@maketitle and \maketitle
+ \skip_const:Nn \g__mn_maketitle_after_title { 1em }
+ \skip_const:Nn \g__mn_maketitle_after_author { 0.5em }
+ \skip_const:Nn \g__mn_maketitle_after { 1.5em }
+
+ \RenewDocumentCommand \@maketitle {}
+ {
+ \begin{center}
+ \let \footnote \thanks
+
+ % Set the title, if it exists.
+ \bool_if:NT \g__mn_title_set
+ {
+ \group_begin:
+ \HUGE
+ \bfseries
+ \@title
+ \par
+ \group_end:
+ }
+ \skip_vertical:N \g__mn_maketitle_after_title
+
+ % Set the author.
+ \group_begin:
+ \LARGE
+ \lineskip 0.5em
+ \begin{tabular}[t]{c}
+ \@author
+ \end{tabular}
+ \par
+ \group_end:
+ \skip_vertical:N \g__mn_maketitle_after_author
+
+ % Set the date.
+ \large
+ \@date
+
+ \end{center}
+ \par
+ \skip_vertical:N \g__mn_maketitle_after
+ }
+
+ \RenewDocumentCommand \maketitle {}
+ {
+ \par
+ \group_begin:
+ \cs_set:Npn \thefootnote
+ {
+ \@fnsymbol
+ \c@footnote
+ }
+ \cs_set:Npn \@makefnmark
+ {
+ \rlap
+ {
+ \@textsuperscript { \normalfont \@thefnmark }
+ }
+ }
+ \cs_set:Npn \@makefntext ##1
+ {
+ \parindent 1em
+ \noindent
+ \hbox_to_wd:nn
+ { 1.8em }
+ {
+ \hss
+ \@textsuperscript { \normalfont \@thefnmark }
+ }
+ ##1
+ }
+ \legacy_if:nTF { @twocolumn }
+ {
+ \if_int_compare:w \col@number = \@ne
+ \@maketitle
+ \else:
+ \twocolumn [ \@maketitle ]
+ \fi:
+ }
+ {
+ \newpage
+ \global\@topnum\z@
+ \@maketitle
+ }
+ \thispagestyle{empty}
+ \@thanks
+ \group_end:
+ \setcounter{footnote}{0}
+ \cs_set:Npn \thanks ##1 { }
+ % NOTE: we don't erase the definitions of \@title, etc.
+ }
+ % }}} \@maketitle and \maketitle
+ } % }}}
+
+\bool_if:NT \g__mn_kindle_bool % {{{
+ {
+ \keys_set:nn { mn__main }
+ {
+ generate~thanks = false ,
+ }
+ \skip_gset:Nn \g__mn_maketitle_after_title { 0em }
+ \skip_gset:Nn \g__mn_maketitle_after_author { 0em }
+ \skip_gset:Nn \g__mn_maketitle_after { 0em }
+ \@ifclassloaded { memoir }
+ {
+ \pagestyle { empty }
+
+ \setstocksize{12.2cm}{9cm}
+ \settrimmedsize{12.2cm}{9cm}{*}
+ \settypeblocksize{12.2cm}{9cm}{*}
+
+ \setlrmargins{0cm}{*}{*}
+ \setulmargins{0cm}{*}{*}
+
+ \setlength{\headheight}{0cm}
+ \setlength{\headsep}{0cm}
+ \setlength{\footskip}{0cm}
+
+ \checkandfixthelayout
+ }
+ {
+ \msg_error:nnx
+ { mathnotes }
+ { requires memoir class }
+ { kindle }
+ }
+ } % }}}
+
+% e.g. `\exp:w \mn__color:n { MNnotetitle }`
+\cs_set:Npn \mn__color:n #1 % {{{
+ {
+ \bool_if:NTF \g__mn_xcolor_bool
+ {
+ \exp_end:
+ \color{#1}
+ }
+ {
+ \exp_end:
+ }
+ } % }}}
+
+\bool_if:NT \g__mn_theorems_bool % {{{ mdtheorem setup
+ {
+ \RequirePackage[thmmarks, amsmath, amsthm]{ntheorem}
+
+ \RequirePackage{mdframed}
+
+ \mdfdefinestyle { theorem }
+ {
+ linewidth = 1.5pt ,
+ }
+
+ \bool_if:NT \g__mn_xcolor_bool
+ {
+ \mdfapptodefinestyle { theorem }
+ {
+ frametitlefont = \normalfont\bfseries\color{MNthmtitle} ,
+ linecolor = MNthmline ,
+ backgroundcolor = MNthmbg ,
+ }
+ }
+
+ \mdfdefinestyle { minor-theorem }
+ {
+ style = theorem ,
+ linewidth = 0.75pt ,
+ }
+
+ \mdfdefinestyle { example }
+ {
+ theoremtitlefont = \normalfont ,
+ }
+
+ \bool_if:NT \g__mn_xcolor_bool
+ {
+ \mdfapptodefinestyle { example }
+ {
+ frametitlefont = \normalfont\bfseries\color{MNextitle} ,
+ linecolor = MNexline ,
+ backgroundcolor = MNexbg ,
+ }
+ }
+
+ \mdfdefinestyle { definition }
+ {
+ }
+
+ \bool_if:NT \g__mn_xcolor_bool
+ {
+ \mdfapptodefinestyle { definition }
+ {
+ frametitlefont = \normalfont\bfseries\color{MNdefntitle} ,
+ linecolor = MNdefnline ,
+ backgroundcolor = MNdefnbg ,
+ }
+ }
+
+ \mdfdefinestyle { note }
+ {
+ topline = false ,
+ rightline = false ,
+ bottomline = false ,
+ linewidth = 2pt ,
+ }
+
+ \bool_if:NT \g__mn_xcolor_bool
+ {
+ \mdfapptodefinestyle { note }
+ {
+ frametitlefont = \normalfont\bfseries\color{MNnotetitle} ,
+ linecolor = MNnoteline ,
+ backgroundcolor = MNnotebg ,
+ }
+ }
+
+ \mdfdefinestyle { example }
+ {
+ theoremtitlefont = \normalfont ,
+ }
+
+ \bool_if:NT \g__mn_xcolor_bool
+ {
+ \mdfapptodefinestyle { example }
+ {
+ frametitlefont = \normalfont\bfseries\color{MNextitle} ,
+ linecolor = MNexline ,
+ backgroundcolor = MNexbg ,
+ }
+ }
+
+ \mdtheorem
+ [ style = theorem ]
+ { thm }
+ { Theorem }
+ % \newtheorem{shortthm}[thm]{Theorem}
+ \mdtheorem
+ [ style = minor-theorem ]
+ { lem }
+ { Lemma }
+ \mdtheorem
+ [ style = minor-theorem ]
+ { cor }
+ { Corollary }
+ \mdtheorem
+ [ style = minor-theorem ]
+ { prop }
+ { Proposition }
+
+ % \theoremstyle{definition}
+ \mdtheorem
+ [ style = definition ]
+ { defn }
+ { Definition }
+ \mdtheorem
+ [ style = definition ]
+ { notation }
+ { Notation }
+
+ % \theoremstyle{remark}
+ \mdtheorem
+ [ style = example ]
+ { ex }
+ { Example }
+
+ \skip_new:N \mn__note_title_after_skip
+ \skip_set:Nn \mn__note_title_after_skip { 1em plus 0.25em minus 0.75em }
+ \cs_set:Npn \mn__note_title:n #1
+ {
+ \textbf
+ {
+ \exp:w \mn__color:n { MNnotetitle }
+ #1
+ }
+ \skip_horizontal:N \mn__note_title_after_skip
+ }
+
+ \newmdenv
+ [
+ style = note ,
+ startinnercode = \mn__note_title:n { Note: } ,
+ ]
+ { note }
+
+ \newmdenv
+ [
+ style = note ,
+ startinnercode = \mn__note_title:n { Remark: } ,
+ ]
+ { remark }
+
+ \newmdenv
+ [
+ style = note ,
+ startinnercode = \mn__note_title:n { Hint: } ,
+ ]
+ { hint }
+
+ \newmdenv
+ [
+ style = note ,
+ startinnercode = \mn__note_title:n { Abuse of notation: } ,
+ ]
+ { abuse-of-notation }
+
+ % % reset for future defn.s
+ % \theoremstyle{plain}
+ } % }}}
+
+\NewDocumentCommand \TODO { o } % {{{
+ {
+ \framebox
+ {
+ \textbf{ TODO \IfValueT { #1 } { :~} }
+ \IfValueT { #1 } { #1 }
+ }
+ } % }}}
+
+% \bool_if:NT \g__mn_titles_bool % {{{
+ % {
+ % \RequirePackage{titlesec}
+ % % \titleformat { \command } [ shape ] { format } { label } { sep } { before-code } [ after-code ]
+ % % before-code can be a command
+ % \titleformat { \chapter }
+ % [ block ]
+ % { \bfseries \HUGE }
+ % { { \exp:w \mn__color:n {MNsecnum} \thechapter} }
+ % { 20pt }
+ % { }
+ % [ ]
+
+ % \titleformat { \section }
+ % [ hang ]
+ % { \bfseries \LARGE }
+ % { { \exp:w \mn__color:n {MNsecnum} \thesection} }
+ % { 16pt }
+ % { }
+ % [ ]
+
+ % \titleformat { \subsection }
+ % [ hang ]
+ % { \bfseries \Large }
+ % { { \exp:w \mn__color:n {MNsecnum} \thesubsection} }
+ % { 16pt }
+ % { }
+ % [ ]
+
+ % % \titlespacing* { \command } { left } { before } { after } [ right ]
+ % \titlespacing* { \chapter } { 0em } { 0em } { 2em } [ 0em ]
+ % \titlespacing* { \section } { 0em } { 2em } { 0.5em } [ 0em ]
+ % \titlespacing* { \subsection } { 0em } { 1em } { 0em } [ 0em ]
+ % \titlespacing* { \subsubsection } { 0em } { 1em } { 0em } [ 0em ]
+ % } % }}}
+
+\bool_if:NT \g__mn_xcolor_bool % {{{
+ {
+ \RequirePackage[hidelinks]{hyperref}
+ \hypersetup
+ {
+ colorlinks = true ,
+ allcolors = MNlink ,
+ }
+ } % }}}
+
+\bool_if:NT \g__mn_index_bool
+ {
+ \bool_set_true:N \g__mn_knowledge_bool
+ }
+
+\bool_if:NTF \g__mn_knowledge_bool % {{{
+ {
+ \bool_if:NT \g__mn_xcolor_bool
+ {
+ \PassOptionsToPackage{xcolor}{knowledge}
+ \providecolorset { HTML }
+ % Prefix/postfix of all color names
+ { } { }
+ {
+ \use_none:n
+ ; MNunknown , DE0B0F
+ ; MNunknowncont , AD483E
+ ; MNintro , 051338
+ }
+ }
+ \RequirePackage[quotation, notion, makeidx]{knowledge}
+
+ % Disable the redefined \label command; this fixes some documents.
+ \KnowledgeConfigureBooleanOption[\knowledge_configuration_label_autoscope_bool]{patch~label}
+
+ % {{{ Patch in the automatic-AP feature
+ \bool_new:N \g__mn_noAP_bool
+ \NewDocumentCommand \noAP { }
+ { \bool_gset_true:N \g__mn_noAP_bool }
+ \cs_set:Npn \mn__maybe_AP:N #1
+ {
+ \bool_if:NTF \g__mn_noAP_bool
+ { \bool_gset_false:N \g__mn_noAP_bool }
+ { #1 }
+ }
+
+ \RequirePackage{etoolbox}
+ \pretocmd { \intro }
+ { \mn__maybe_AP:N \AP }
+ { } { }
+
+ \bool_new:N \l__mn_using_itemAP
+ \cs_set:Npn \mn__use_itemAP:
+ {
+ \bool_if:NF \l__mn_using_itemAP
+ {
+ \let \mn__item_orig: \item
+ \bool_set_true:N \l__mn_using_itemAP
+ \RenewDocumentCommand \item { o }
+ {
+ \IfNoValueTF { ##1 }
+ {
+ \mn__item_orig:
+ \mn__maybe_AP:N \AP
+ }
+ {
+ \mn__item_orig:
+ [
+ \mn__maybe_AP:N \knowledge_itemAP:
+ % NOTE: this isn't expandable, which fucks up
+ % everything.
+ \cs_set_eq:NN \AP \prg_do_nothing:
+ ##1
+ ]
+ }
+ }
+ }
+ }
+ \apptocmd { \enumerate } { \mn__use_itemAP: } { } { }
+ \apptocmd { \itemize } { \mn__use_itemAP: } { } { }
+ \apptocmd { \description } { \mn__use_itemAP: } { } { }
+ % }}}
+
+ % {{{ Make some better styles.
+ \knowledgeconfigure
+ {
+ visible~anchor~points = false
+ }
+ \cs_set:Npn \mn__knowledgestyles:nn #1#2
+ {
+ \clist_map_inline:nn { #1 }
+ { \knowledgestyle* { ##1 } { #2 } }
+ }
+ % List of default styles
+ % notion, intro notion
+ % intro, intro unknown, intro unknown cont
+ % kl unknown, kl unknown cont
+ \bool_if:NTF \g__mn_xcolor_bool
+ {
+ \mn__knowledgestyles:nn
+ { notion , intro~notion }
+ {
+ color = MNlink ,
+ }
+ \mn__knowledgestyles:nn
+ { intro , intro~notion , intro~unknown, intro~unknown~cont , }
+ {
+ boldface ,
+ color = MNintro ,
+ }
+ \mn__knowledgestyles:nn
+ { intro~unknown , intro~unknown~cont , kl~unknown , kl~unknown~cont , }
+ {
+ underline = false ,
+ color = MNunknown ,
+ }
+ \mn__knowledgestyles:nn
+ { intro~unknown~cont , kl~unknown~cont , }
+ {
+ color = MNunknowncont ,
+ }
+ }
+ {
+ % These blank definitions are important for erasing some very poorly
+ % typeset decisions.
+ \mn__knowledgestyles:nn
+ { notion , intro~notion }
+ {
+ }
+ \mn__knowledgestyles:nn
+ { intro , intro~notion , intro~unknown, intro~unknown~cont , }
+ {
+ boldface ,
+ }
+ \mn__knowledgestyles:nn
+ { intro~unknown , intro~unknown~cont , kl~unknown , kl~unknown~cont , }
+ {
+ }
+ \mn__knowledgestyles:nn
+ { intro~unknown~cont , kl~unknown~cont , }
+ {
+ }
+ }
+ % }}}
+ }
+ {
+ % If we don't load the knowledge package, provide a *similar* interface
+ % to make writing commands that *optionally* use the knowledge interface
+ % easier.
+ \ProvideDocumentCommand \itemAP { O{} } { \item[#1] }
+ \ProvideDocumentCommand \AP { } { }
+ \ProvideDocumentCommand \phantomintro { d() m } { }
+ \ProvideDocumentCommand \nointro { m } { }
+ \ProvideDocumentCommand \reintro { s o m } { #3 }
+ \ProvideDocumentCommand \intro { d() o d() m } { #4 }
+ \ProvideDocumentCommand \kl { d() o d() m } { #4 }
+ } % }}}
+
+\bool_if:NT \g__mn_index_bool
+ {
+ \makeindex
+ }
+
+% The \emailstyle command gives the style of an email; by default, we
+% initialize it to \texttt.
+\ProvideDocumentCommand \emailstyle { m } { \texttt{#1} }
+% The \email command typesets an email; if the user has loaded the
+% hyperref package, we can add a link as well.
+\mn__if_package_loaded:nTF { hyperref } % {{{
+ {
+ \ProvideDocumentCommand \email { m }
+ { \href{mailto:#1}{\emailstyle{#1}} }
+ }
+ {
+ \ProvideDocumentCommand \email { m }
+ { \emailstyle{#1} }
+ } % }}}
+
+\bool_if:NT \g__mn_tabu_bool % {{{
+ {
+ \RequirePackage{multirow}
+ \RequirePackage{booktabs}
+ \RequirePackage{longtable}
+ \RequirePackage{tabu}
+ \ProvideExpandableDocumentCommand \Th { O{l} m }
+ {
+ \multicolumn
+ { 1 } % For 1 column...
+ { #1 } % ...with column-spec #1...
+ { \textbf{#2} } % Typeset #2 in bold.
+ }
+ } % }}}
+
+\bool_if:NT \g__mn_figures_bool % {{{
+ {
+ % figure captions
+ \RequirePackage{graphicx}
+ \RequirePackage{caption}
+ \captionsetup
+ {
+ format = hang,
+ font = { sf, footnotesize },
+ margin = 1in
+ }
+ } % }}}
+
+% {{{ Footnotes
+\bool_if:NT \g__mn_footnotes_bool
+ {
+ \PassOptionsToPackage{bottom, hang}{footmisc}
+ \RequirePackage{footmisc}
+ }
+\setlength { \footnotesep } { \baselineskip }
+% }}}
+
+% Document style.
+\setlength { \parindent } { 0em }
+\setlength { \parskip } { 1em }
+% {{{ Set \parskip=0 around \tableofcontents
+\RequirePackage{etoolbox}
+\pretocmd { \tableofcontents }
+ {
+ \group_begin:
+ \setlength{\parskip}{0pt}
+ }
+ { } { }
+\apptocmd { \tableofcontents }
+ { \group_end: }
+ { } { }
+% }}}
+
+% This has to be hooked so that it doesn't break the other bools undefined
+% with it first.
+\AtEndOfPackage { \cs_undefine:N \mn__legacy_bool_undefine:n }
diff --git a/macros/latex/contrib/rbt-mathnotes/rbt-mathnotes.tex b/macros/latex/contrib/rbt-mathnotes/rbt-mathnotes.tex
new file mode 100644
index 0000000000..59550cc105
--- /dev/null
+++ b/macros/latex/contrib/rbt-mathnotes/rbt-mathnotes.tex
@@ -0,0 +1,475 @@
+%% rbt-mathnotes.tex
+%% Copyright 2021 Rebecca B. Turner.
+%
+% 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 Rebecca B. Turner.
+%
+% This work consists of the files:
+% README.md
+% rbt-mathnotes.tex
+% rbt-mathnotes.sty
+% rbt-mathnotes.cls
+% rbt-mathnotes-util.sty
+% rbt-mathnotes-messages.sty
+% rbt-mathnotes-hw.cls
+% rbt-mathnotes-formula-sheet.cls
+% examples/cheat-sheet.tex
+% examples/multivar.tex
+% examples/topology-hw-1.tex
+% and the derived files:
+% rbt-mathnotes.pdf
+% examples/cheat-sheet.pdf
+% examples/multivar.pdf
+% examples/topology-hw-1.pdf
+
+\documentclass{ltxguidex}
+
+\errorcontextlines=10
+\usepackage{longtable}
+\usepackage{changepage}
+\usepackage{metalogo}
+\usepackage{changelog}
+\newcommand{\mn}{\ctan{rbt-mathnotes}}
+
+\makeatletter
+\renewcommand{\SX@explpreset}{
+ language=[LaTeX]TeX,
+ numbers=none,
+}
+\makeatother
+
+%\setmainfont{Charter}
+\lstset{basewidth=0.6em}
+
+\usepackage[
+ nomaketitle,
+ notitles,
+ noxcolor,
+ noenumitem,
+ notheorems,
+]{rbt-mathnotes}
+
+\usepackage{FiraSans}
+\usepackage{FiraMono}
+
+\NewDocumentEnvironment{ctandescription}{}
+ {\NewDocumentCommand{\pkg}{m}{\item[\ctan{##1}]}
+ \begin{description}}
+ {\end{description}}
+
+\author{Rebecca Turner\thanks{\email{rbt@sent.as}, \https{becca.ooo}}}
+\title{The \mn\ Package}
+\date{1.0.2 2021/11/29}
+\begin{document}
+\maketitle
+
+\begin{abstract}
+ Rebecca Turner's personal macros and styles for typesetting mathematics
+ notes.
+\end{abstract}
+
+\begin{note}
+ Browse the sources, contribute, or complain at \\
+ \https{github.com/9999years/latex-mathnotes}
+\end{note}
+
+\tableofcontents
+\vfill
+\pagebreak
+
+\begin{note}
+ Copyright 2021 Rebecca B. Turner.
+
+ 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
+ \https{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 Rebecca B. Turner.
+
+ This work consists of the files:
+ \begin{itemize}
+ \item \texttt{README.md}
+ \item \texttt{rbt-mathnotes.tex}
+ \item \texttt{rbt-mathnotes.sty}
+ \item \texttt{rbt-mathnotes.cls}
+ \item \texttt{rbt-mathnotes-util.sty}
+ \item \texttt{rbt-mathnotes-messages.sty}
+ \item \texttt{rbt-mathnotes-hw.cls}
+ \item \texttt{rbt-mathnotes-formula-sheet.cls}
+ \item \texttt{examples/cheat-sheet.tex}
+ \item \texttt{examples/multivar.tex}
+ \item \texttt{examples/topology-hw-1.tex}
+ \end{itemize}
+ and the derived files:
+ \begin{itemize}
+ \item \texttt{rbt-mathnotes.pdf}
+ \item \texttt{examples/cheat-sheet.pdf}
+ \item \texttt{examples/multivar.pdf}
+ \item \texttt{examples/topology-hw-1.pdf}
+ \end{itemize}
+\end{note}
+
+\vfill
+\pagebreak
+
+\section{Package options}
+
+Some options are enabled by default, and can be disabled by passing
+|no<option>|. The enabled-by-default options are:
+\begin{keys}
+ \key{fonts}[\bool][true]
+ \key{stix}[\bool][true]
+ \begin{itemize}
+ \item In \XeTeX\ or \LuaTeX, loads the \ctan{unicode-math} package, and
+ then, if the \option{stix} option is also given, loads the
+ \texttt{STIX2Text} and \texttt{STIX2Math} \textsc{otf} fonts (available
+ in the \ctan{stix2-otf} package).
+
+ The \texttt{STIX2Math} font is loaded with stylistic sets 1 (roundhand
+ script forms instead of chancery script for |\mathcal| Script
+ Alphanumeric Symbols) and 8 (upright, rather than slanted, forms for
+ integrals); see ``Stylistic Sets'' in
+ \href{http://mirrors.ctan.org/fonts/stix2-otf/STIXTwoMath-Regular.pdf}{the
+ \texttt{stix2-otf} documentation} (pp.~51--53) for more information.
+
+ \item In other engines, if the \option{stix} option is also given, loads
+ the \package{stix2} package from \ctan{stix2-type1}.
+ \end{itemize}
+
+ \key{symbols}[\bool][true]
+
+ Defines a collection of ``natural language'' math-mode symbol commands.
+ Most commands are declared with |\ProvideDocumentCommand| so that they
+ won't overwrite custom commands you've already defined.
+
+ Note that symbols may look different depending on the \option{fonts} and
+ \option{stix} options.
+
+ \begin{longtable}{rl}
+ |\lnot| & $\lnot$ \\
+ |\Rational|, |\Rat|, |\Q| & $\Rational$ \\
+ |\Natural|, |\Nat|, |\N| & $\Natural$ \\
+ |\Integer|, |\Int|, |\Z| & $\Integer$ \\
+ |\Complex|, |\Comp|, |\C| & $\Complex$ \\
+ |\Real|, |\R| & $\R$ \\
+ |\powerset| & $\powerset$ \\
+ |\vec{A}| & $\vec{A}$ \\
+ |\intersection|, |\inter| & $\intersection$ \\
+ |\bigintersection|, |\biginter| & $\bigintersection$ \\
+ |\union| & $\union$ \\
+ |\bigunion| & $\bigunion$ \\
+ |\divisible|, |\div| & $a \divisible b$ \\
+ |\notdivisible|, |\ndivisible|, |\notdiv|, |\ndiv| & $a \notdivisible b$ \\
+ |\floor{A}| & $\floor{A}$ \\
+ |\ceil{A}| & $\ceil{A}$ \\
+ |\emptyset|, |\es| & $\emptyset$ \\
+ |\after| & $g \after f$ \\
+ |\cross| & $a \cross b$ \\
+ |\img| & $\img f$ \\
+ |\pre| & $\pre f$ \\
+ |\Stab| & $\Stab f$ \\
+ |\FixPt| & $\FixPt f$ \\
+ |\id| & $\id$ \\
+ |\injection|, |\inj| & $\injection$ \\
+ |\surjection|, |\surj| & $\surjection$ \\
+ |\bijection|, |\bij| & $\bijection$ \\
+ |\restriction|, |\restr| & $f \restr_{\N}$ \\
+ |\dd[y]{x}| & $\dd[y]{x}$ \\
+ |\pd[y]{x}| & $\pd[y]{x}$ \\
+ |\curl| & $\curl$ \\
+ |\dive| & $\dive$ \\
+ \end{longtable}
+
+ \key{maketitle}[\bool][true]
+ Redefines |\maketitle| and related commands. The provided |\maketitle|
+ command will automatically insert a |\thanks| if any email, course,
+ instructor, institution, or semester is supplied with the |\mathnotes|
+ command.
+
+ \key{titles}[\bool][true]
+ No-op; may set the format of sectioning commands in the future.
+
+ \key{xcolor}[\bool][true]
+ Load the \ctan{xcolor} package and defines several colors with the |MN|
+ prefix.
+
+ \key{theorems}[\bool][true]
+ Set up various theorem environments with the \ctan{ntheorem} and
+ \ctan{mdframed} packages.
+
+ Provides |thm| (Theorem), |lem| (Lemma), |cor| (Corollary), |prop|
+ (Proposition), |defn| (Definition), |notation|, |ex|
+ (Example), |note|, |remark|, |hint|, and |abuse-of-notation| (Abuse of
+ notation) theorem-like environments.
+
+ \key{enumitem}[\bool][true]
+ Loads the \ctan{enumitem} package.
+
+\end{keys}
+
+The other options are not enabled by default, and can be enabled by passing
+|<option>| --- the option name --- as a package option:
+\begin{keys}
+ \key{listings}[\bool]
+ Loads the \ctan{listings} and \ctan{xcolor} packages.
+ Sets default styles for listings, including setting the default language to
+ |Mathematica|.
+
+ \key{knowledge}\bool]
+ Loads the \ctan{knowledge} package and sets up default styles.
+ Patches lists so that manually placing |\AP| and |\itemAP| commands is
+ unecessary.
+
+ \key{index}[\bool]
+ Sets the |knowledge| key and starts indexing with |\makeindex|.
+
+ \key{footnotes}[\bool]
+ Loads the \ctan{footmisc} package and sets up footnotes.
+
+ \key{figures}[\bool]
+ Loads the \ctan{graphicx} and \ctan{caption} packages and sets up figure
+ captions.
+
+ \key{tabu}[\bool]
+ Loads the \ctan{multirow}, \ctan{booktabs}, \ctan{longtable}, and
+ \ctan{tabu} packages.
+
+ Defines the |\Th| command.
+
+ \key{kindle}[\bool]
+ Sets a small page size and tweaks the layout for Kindle devices; designed in
+ particular for whatever generation of Kindle Paperwhite I have.
+ Only compatible with the \ctan{memoir} document class.
+
+\end{keys}
+
+\section{Commands}
+
+\begin{desc}
+|\numberthis|
+\end{desc}
+
+At the end of a line (before the |\\|) in an \ctan{amsmath} starred
+environment, gives an equation a number.
+
+\begin{LTXexample}
+\begin{alignat*}{2}
+ x &= y \\
+ y &= 2z \numberthis \\
+ z &= 1/w
+\end{alignat*}
+\end{LTXexample}
+
+\begin{desc}
+|\labelthis{<label>}|
+\end{desc}
+
+At the end of a line (before the |\\|) in an \ctan{amsmath} starred
+environment, gives an equation a number and label for referencing.
+
+\begin{LTXexample}
+\begin{alignat*}{2}
+ x &= y \\
+ y &= 2z \labelthis{eq:cool} \\
+ z &= 1/w.
+\end{alignat*}
+As we saw in
+Equation~\ref{eq:cool}, \dots
+\end{LTXexample}
+
+\begin{desc}
+|\newacronym[<command>]{<text>}|
+\end{desc}
+
+Defines |\<command>| to be |\textsc{<text>}|; |<command>| defaults to |<text>|
+if ommitted.
+
+\begin{LTXexample}
+\newacronym{nist}
+\newacronym[\seetan]{ctan}
+
+\nist\ is not associated
+with \seetan.
+\end{LTXexample}
+
+\begin{desc}
+|\newacronyms{<acronyms>}|
+\end{desc}
+
+Defines a collection of acronym commands together using |\newacronym|;
+|<acronyms>| is a comma-separated list of acronyms.
+
+\begin{LTXexample}
+\newacronyms{apa, mla}
+
+\apa\ and \mla\ are common
+citation styles.
+\end{LTXexample}
+
+\begin{desc}
+|\mathnotes{<key-value pairs>}|
+\end{desc}
+
+\begin{keys}
+ \key{date}[\m{date}]
+ \key{author}[\m{author}]
+ \key{title}[\m{title}]
+ Sets the date, author, or title; setting these keys are equivalent to using the
+ |\date|, |\author|, and |\title| commands, respectively.
+
+ \key{institution}[\m{institution}]
+ Sets the institution (e.g., Brandeis University) associated with the
+ document.
+ \key{course}[\m{course}]
+ Sets the course (e.g., \textsc{math}~23a) associated with the
+ document.
+ \key{semester}[\m{semester}]
+ Sets the semester (e.g., Fall 2018) associated with the document.
+ \key{instructor}[\m{instructor}]
+ Sets the instructor (e.g., Prof.~Ruth~Charney) associated with the document.
+ \key{email}[\m{email}]
+ Sets the email (e.g., \email{rbt@sent.as}) associated with the author.
+\end{keys}
+
+\begin{desc}
+|\TODO[<item>]|
+\end{desc}
+
+Typesets a to-do marker.
+
+\begin{LTXexample}
+\TODO
+
+\TODO[explain in detail]
+\end{LTXexample}
+
+\begin{desc}
+|\email{<email>}|
+\end{desc}
+Typesets an email address, with a link if the \ctan{hyperref} package is loaded.
+
+\begin{LTXexample}
+\email{rbt@sent.as}
+\end{LTXexample}
+
+\begin{desc}
+|\Th[<column spec>]{<header>}|
+\end{desc}
+Typesets a table column header in bold using |\multicolumn|. Especially useful
+if the column in question is a math or numeric column.
+
+\m{column spec} defaults to |l| (left-aligned).
+
+\section{The \texttt{rbt-mathnotes} document class}
+
+The \mn\ document class is a \ctan{memoir}-based class that automatically loads
+the \mn\ package.
+
+\section{The \texttt{rbt-mathnotes-hw} document class}
+
+The |rbt-mathnotes-hw| document class is based on the |rbt-mathnotes| document
+class, providing additional commands and styles for typesetting homework
+assignments. Theorems are given subtler styling that takes up less space on
+the page. The author name and title are added to the top-left heading.
+
+\begin{desc}
+|problem| \\
+|\begin{problem}[<number or options>]| \\
+|\prob[<number or options>]{<text>}|
+\end{desc}
+
+The |problem| environment (and its matching shorthand |\prob|) typesets a
+homework problem typesets a homework problem. Problems are added to the table of
+contents at the chapter-level, which is the top level if I remember correctly.
+
+\m{number or options} is a list of key-value pairs:
+
+\begin{keys}
+ \key{number}[\m{number}]
+ Sets the problem's number. For brevity, an unrecognized key with no value
+ is also used as the problem number; this allows concise expressions like
+ |\begin{problem}[4.3a] ...| to specify problem numbers (to match textbook
+ problem numbers, for example). Otherwise, problem numbers
+ start at 1 and count up.
+
+ \key{title}[\m{title}]
+ Sets the problem's ``title''.
+
+ \key{label}[\m{label}]
+ Sets the problem's label (e.g., |prob:n-sheeted-covering|), which can be
+ referred to later with |\ref|.
+\end{keys}
+
+If your professor calls them ``exercises'' or something, you can change the
+string used to refer to them with the |\mathnotes| command, which supports an
+additional key in |rbt-mathnotes-hw|:
+\begin{keys}
+ \key{problem string}[\m{problem string}][Problem]
+ The string used to represent a problem in titles and contents entries.
+\end{keys}
+
+\pagebreak
+\section{The \texttt{rbt-mathnotes-formula-sheet} document class}
+
+Sometimes, exams will let you take any formula sheet of a given size as
+reference material. The |rbt-mathnotes-formula-sheet| document class (based on the
+\ctan{article} class) is optimized for getting as much material as possible in
+that area. A tiny |\maketitle| is provided, as well as a tiny |\section|.
+Theorem titles are highly abbreviated (``Thm'' instead of ``Theorem''). Lists
+are rendered without linebreaks between items. Paragraphs are compressed and the
+page margins are set to a tenth of an inch. The entire document is set in
+|\scriptsize|.
+
+Some additional keys are added to the |\mathnotes| command to customize the
+output:
+
+\begin{keys}
+ \key{columns}[\m{column count}][3]
+ The number of text columns to set the formula sheet in; use 1 to turn off
+ columns.
+
+ \key{balance columns}
+ If set, the unstarred |multicols| environment is used instead of |multicols*|,
+ which attempts to spread material between each of the columns evenly, to
+ make their vertical sizes as even as possible.
+
+ It doesn't look great --- you want to know when you've filled up one column
+ --- so it's off by default.
+
+ \key{width}[\m{width}][8.5in]
+ \key{height}[\m{height}][11in]
+ Set the paper width and height. The 0.1 inch margins are not customizable.
+\end{keys}
+
+\begin{changelog}[author=Rebecca Turner]
+ \begin{version}[v=1.0.2, date=2021-11-27, short]
+ Added license notice to all files.
+ \end{version}
+
+ \begin{version}[v=1.0.1, date=2021-11-24, short]
+ Renamed package from \texttt{mathnotes} to \texttt{rbt-mathnotes} to avoid
+ a file name conflict with
+ \href{http://mirrors.ctan.org/fonts/newtx/doc/mathnotes.pdf}{\texttt{CTAN:/fonts/newtx/doc/mathnotes.pdf}}.
+ \end{version}
+
+ \begin{version}[v=1.0.0, date=2021-11-04, short]
+ Initial release as \texttt{mathnotes}, documented package.
+ \end{version}
+\end{changelog}
+
+\end{document}