From 4ffe448c72373378e2a6320248f24d613eefc3bc Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Tue, 16 Feb 2021 22:12:37 +0000 Subject: gzt (16feb21) git-svn-id: svn://tug.org/texlive/trunk@57765 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/tex/latex/gzt/gztarticle.cls | 284 ++++++++++++++----------- 1 file changed, 157 insertions(+), 127 deletions(-) (limited to 'Master/texmf-dist/tex/latex/gzt/gztarticle.cls') diff --git a/Master/texmf-dist/tex/latex/gzt/gztarticle.cls b/Master/texmf-dist/tex/latex/gzt/gztarticle.cls index 9ddb63cade8..78173f28dd8 100644 --- a/Master/texmf-dist/tex/latex/gzt/gztarticle.cls +++ b/Master/texmf-dist/tex/latex/gzt/gztarticle.cls @@ -7,12 +7,14 @@ %% gzt.dtx (with options: `class-article') %% ----------------------------------------------------------------------------- %% gzt --- SMF bundle of classes for the French journal "La Gazette des -%% Math'ematiciens", version 1.0.0 +%% Math'ematiciens" %% %% E-mail: denis.bitouze@univ-littoral.fr %% Released under the LaTeX Project Public License v1.3c or later %% See http://www.latex-project.org/lppl.txt %% ----------------------------------------------------------------------------- +\def\gztfileversion{1.0.1} +\def\gztfiledate{2021-02-14} \RequirePackage{silence}% \WarningFilter{kpfonts}{With 'easyscsl' option} \RequirePackage{xpatch}% @@ -61,14 +63,15 @@ \ExplSyntaxOn \ProvidesExplClass {gztarticle} - {2020-03-17} - {1.0.0} + {\gztfiledate} + {\gztfileversion} { SMF~class~for~the~French~journal^^J "La~Gazette~des~Math'ematiciens". ~(Author~version.) } \NeedsTeXFormat{LaTeX2e} +\bool_new:N \g__gzt_moral_report_bool \bool_new:N \g__gzt_special_edition_bool \bool_new:N \g__gzt_for_authors_bool \bool_new:N \g__gzt_for_printer_bool @@ -78,6 +81,43 @@ \bool_new:N \g__gzt_no_inside_backcover_bool \bool_gset_true:N \g__gzt_for_authors_bool% \bool_gset_true:N \g__gzt_inside_pages_bool% +\tl_gset:Nn \g__gzt_moral_report_common_option_tl {% + \AddToHook{begindocument/before} {% + \bool_gset_true:N \g__gzt_moral_report_bool + \bool_gset_true:N \g__gzt_frontcover_without_minitoc_bool + \title[short={\bfseries\c__gzt_moralreport_rubric_string_tl}]{} + \tl_gset:Nn \g__gzt_rubric_title_tl {\c__gzt_moralreport_rubric_string_tl} + } +} +\keys_define:nn { gztarticle } +{ + editorial .code:n = {% + \AddToHook{begindocument}{% + \__gzt_before_display_editorial:n {}% + } + \AddToHook{enddocument}{% + \__gzt_after_display_editorial: {}% + } + },% + presidentmessage .code:n = {% + \AddToHook{begindocument}{% + \__gzt_before_display_presidentmessage: {}% + } + \AddToHook{enddocument}{% + \__gzt_after_display_presidentmessage: {}% + } + },% + moralreport .code:n = { + \g__gzt_moral_report_common_option_tl + \keys_set:nn { gztarticle / moralreport } {#1} + }, + moralreport / title .code:n = {% + \tl_gset:Nn \g__gzt_moral_report_title_tl {#1} + },% + moralreport / short~title .code:n = {% + \tl_gset:Nn \g__gzt_moral_report_short_title_tl {#1} + },% +}% \PassOptionsToClass{openany,english,french}{book} \LoadClass { book } \PassOptionsToPackage{table,cmyk}{xcolor}% @@ -124,7 +164,6 @@ \RequirePackage{mathtools} \RequirePackage{rsfso} \RequirePackage{esvect} -\RequirePackage{everypage} \RequirePackage{translator}% \RequirePackage{geometry} \RequirePackage{babel}% @@ -203,7 +242,7 @@ \tl_const:Nn \c__gzt_printer_string_tl {Impression} \tl_const:Nn \c__gzt_configuration_file_string_tl {gzt.cfg} \tl_const:Nn \c__gzt_artistic_director_string_tl {Conception~graphique} -\AtEndPreamble{ +\AddToHook{begindocument/before}{ \bool_if:NTF {\g__gzt_special_edition_bool} { \tl_const:Nn \c__gzt_editorial_heading_string_tl {Avant-propos} }{ @@ -219,7 +258,7 @@ \tl_const:Nn \c__gzt_special_edition_string_tl {\c_space_tl{}sp{\'e}cial} \tl_const:Nn \c__gzt_long_special_edition_string_tl {Numéro\c__gzt_special_edition_string_tl}% \tl_const:Nn \c__gzt_short_special_edition_string_tl {\No{}\c__gzt_special_edition_string_tl}% -\AtEndPreamble{ +\AddToHook{begindocument/before}{ \tl_const:Nn \c__gzt_frontcover_header_string_tl { \bool_if:NT {\g__gzt_special_edition_bool} { \text_uppercase:n {\c__gzt_long_special_edition_string_tl} @@ -239,21 +278,25 @@ } \clist_const:Nn \c__gzt__graphics_extensions_clist {png,PNG,jpg,JPG,jpeg,JPEG,pdf,PDF} \tl_const:Nn \c__gzt_pdftitle_string_tl { - \c__gzt_journal_title_string_tl - % \c_space_tl - % \textendash{} - % \c_space_tl - % \l__gzt_uppercased_date_format{\displaydate{__gzt_date}} - \c_space_tl - \textendash{} - \c_space_tl - N° - \bool_if:NTF {\g__gzt_special_edition_bool} { - \c__gzt_special_edition_string_tl - \c_space_tl - \g__gzt_special_edition_title_tl + \bool_if:NTF {\g__gzt_moral_report_bool} { + \c__gzt_moralreport_rubric_string_tl }{ - \int_use:N\g__gzt_issue_number_int + \c__gzt_journal_title_string_tl + % \c_space_tl + % \textendash{} + % \c_space_tl + % \l__gzt_uppercased_date_format{\displaydate{__gzt_date}} + \c_space_tl + \textendash{} + \c_space_tl + N° + \bool_if:NTF {\g__gzt_special_edition_bool} { + \c__gzt_special_edition_string_tl + \c_space_tl + \g__gzt_special_edition_title_tl + }{ + \int_use:N\g__gzt_issue_number_int + } } } \tl_const:Nn \c__gzt_frontmatter_directory_string_tl {frontmatter} @@ -328,15 +371,19 @@ \c_space_tl \textcolor{__gzt_date_color}{ \textendash{}\c_space_tl - \text_uppercase:n {\c__gzt_journal_short_title_string_tl} - \bool_if:nF { \g__gzt_inside_frontcover_bool || \g__gzt_backmatter_bool || {\int_compare_p:nNn {\g__gzt_issue_number_int}={0}} } - { - \c_space_tl\textendash{}\c_space_tl - \l__gzt_uppercased_date_format\displaydate{__gzt_date} - \bool_if:NF {\g__gzt_special_edition_bool} { - \c_space_tl - \textendash{}\c_space_tl - \textcolor{__gzt_smf_number_color}{\No\int_use:N\g__gzt_issue_number_int} + \bool_if:NTF {\g__gzt_moral_report_bool} { + \text_uppercase:n { \c__gzt_moralreport_rubric_string_tl } + }{ + \text_uppercase:n {\c__gzt_journal_short_title_string_tl} + \bool_if:nF { \g__gzt_inside_frontcover_bool || \g__gzt_backmatter_bool || {\int_compare_p:nNn {\g__gzt_issue_number_int}={0}} } + { + \c_space_tl\textendash{}\c_space_tl + \l__gzt_uppercased_date_format\displaydate{__gzt_date} + \bool_if:NF {\g__gzt_special_edition_bool} { + \c_space_tl + \textendash{}\c_space_tl + \textcolor{__gzt_smf_number_color}{\No\int_use:N\g__gzt_issue_number_int} + } } } } @@ -350,9 +397,9 @@ \tl_const:Nn \c__gzt_issue_bib_file_string_tl {\c_sys_jobname_str\c__gzt_issue_bib_file_suffix_string_tl.bib} \tl_const:Nn \c__gzt_issue_bib_path_string_tl {\c__gzt_issue_bib_file_string_tl} \bool_if:NTF {\g__gzt_special_edition_bool} { - \tl_const:Nn \c__gzt_issue_bib_key_tl {\int_use:N \g__gzt_issue_number_int} -}{ \tl_const:Nn \c__gzt_issue_bib_key_tl {special-edition} +}{ + \tl_const:Nn \c__gzt_issue_bib_key_tl {\int_use:N \g__gzt_issue_number_int} } \tl_const:Nn \c__gzt_interview_title_string_tl {En~apart\'e~avec~} \tl_const:Nn \c__gzt_aside_string_tl {--} @@ -870,16 +917,16 @@ \colorlet{__gzt_book_advertisement_bg_color}{white} \colorlet{__gzt_book_advertisement_frame_color}{__gzt_generic_dark_color} \colorlet{__gzt_default_cover_color}{white} -\AtBeginEnvironment{multicols}{ +\AddToHook{env/multicols/begin}{ \bool_gset_true:N \g__gzt_multicols_bool } -\AtEndEnvironment{multicols}{ +\AddToHook{env/multicols/end}{ \bool_gset_false:N \g__gzt_multicols_bool } -\AtBeginEnvironment{refsection}{ +\AddToHook{env/refsection/begin}{ \bool_gset_true:N \g__gzt_refsection_bool } -\AtEndEnvironment{refsection}{ +\AddToHook{env/refsection/end}{ \bool_gset_false:N \g__gzt_refsection_bool } \tl_const:Nn \c__gzt_footer_size_font_tl { @@ -930,28 +977,16 @@ \tl_gset:Nn \g__gzt_pdfauthor_string_tl { \g__gzt_smf_string_tl } -\AtEndPreamble{% +\AddToHook{begindocument/before}{% \hypersetup{% pdftitle=\g__gzt_pdftitle_string_tl, pdfauthor=\g__gzt_pdfauthor_string_tl% } } -\DTLnewdb{__gzt_authors} -\cs_new_protected:Nn \__gzt_authors:nnnnnn - { - \DTLnewrow{__gzt_authors}% - \DTLnewdbentry{__gzt_authors}{first-last-name}{#1}% - \DTLnewdbentry{__gzt_authors}{affiliation}{#2}% - \DTLnewdbentry{__gzt_authors}{email}{#3}% - \DTLnewdbentry{__gzt_authors}{minibio}{#4}% - \DTLnewdbentry{__gzt_authors}{photo}{#5}% - \DTLnewdbentry{__gzt_authors}{webpage}{#6}% - } \cs_new_protected:Nn \__gzt_email:n { \href{mailto:#1}{\nolinkurl{#1}}% } -\cs_generate_variant:Nn \__gzt_authors:nnnnnn { nVVVVV } \cs_new_protected:Nn \__gzt_display_author:nnnnn { \begin{tabular}[t]{p{\c__gzt_authors_photos_box_width_dim}p{0.75\linewidth}} @@ -984,15 +1019,6 @@ \end{tabular} } \cs_generate_variant:Nn \__gzt_display_author:nnnnn { VVVVV } -\DTLnewdb{__gzt_interviewees} -\cs_new_protected:Nn \__gzt_interviewees:nnn - { - \DTLnewrow{__gzt_interviewees}% - \DTLnewdbentry{__gzt_interviewees}{first-last-name}{#1}% - \DTLnewdbentry{__gzt_interviewees}{minibio}{#2}% - \DTLnewdbentry{__gzt_interviewees}{photo}{#3}% - } -\cs_generate_variant:Nn \__gzt_interviewees:nnn { nVV } \DTLnewdb{people} \tl_new:N \l__gzt_crossref_tl \cs_new_protected:Nn \__gzt_people:nnnnnnnn @@ -1035,12 +1061,14 @@ \cs_new_protected:Nn \__gzt_display_academic_signature:n { \bigskip + \begin{__gzt_minibiographies_acknowledgements_tcbox} #1 + \end{__gzt_minibiographies_acknowledgements_tcbox} } \cs_new_protected:Nn \__gzt_display_people_by_role:n { \DTLforeach*[\DTLiseq{\l__gzt_people_role_tl}{#1}]{people}{% - \l__gzt_firstlastname=first-last-name% + \l__gzt_firstlastname_tl=first-last-name% ,\l__gzt_people_affiliation_tl=affiliation% ,\l__gzt_people_email_tl=email% ,\l__gzt_people_minibio_tl=minibio% @@ -1062,26 +1090,29 @@ \newline% \href{mailto:\l__gzt_people_email_tl}{\nolinkurl{\l__gzt_people_email_tl}}% } - \DTLiflastrow{% - }{% - \medskip% - } + \medskip% }{ \tl_if_in:NnTF \l__gzt_people_role_tl { author } { - \footnotesize% - % \noindent% - \dim_set:Nn \l__gzt_minibio_width_dim {\linewidth-1em - \c__gzt_authors_photos_box_width_dim} - \tl_if_empty:NTF \l__gzt_people_photo_tl - {% - \dim_add:Nn \l__gzt_minibio_width_dim {\c__gzt_authors_photos_box_width_dim} - }{% - \begin{adjustbox}{valign=t,minipage=\c__gzt_authors_photos_box_width_dim} - \includegraphics[width=\c__gzt_authors_photos_width_dim]{\l__gzt_people_photo_tl} - \end{adjustbox}% - \quad% - } - \begin{adjustbox}{valign=t,minipage=\l__gzt_minibio_width_dim} - \begin{description}[leftmargin=1em,style=nextline] + \tl_if_empty:NF \l__gzt_firstlastname_tl { + \footnotesize% + % \noindent% + \DTLiffirstrow{% + }{ + \DTLpar% + \medskip% + } + \dim_set:Nn \l__gzt_minibio_width_dim {\linewidth-1em - \c__gzt_authors_photos_box_width_dim} + \tl_if_empty:NTF \l__gzt_people_photo_tl + {% + \dim_add:Nn \l__gzt_minibio_width_dim {\c__gzt_authors_photos_box_width_dim} + }{% + \begin{adjustbox}{valign=t,minipage=\c__gzt_authors_photos_box_width_dim} + \includegraphics[width=\c__gzt_authors_photos_width_dim]{\l__gzt_people_photo_tl} + \end{adjustbox}% + \quad% + } + \begin{adjustbox}{valign=t,minipage=\l__gzt_minibio_width_dim} + \begin{description}[leftmargin=1em,style=nextline] \item[% \textcolor{__gzt_people_color}{% \__gzt_citeauthor_no_firstinits:n {\c__gzt_issue_bib_key_tl -#1- \exp_not:V\DTLcurrentindex}% @@ -1112,10 +1143,6 @@ } \end{description} \end{adjustbox} - \DTLiflastrow{% - }{ - \DTLpar% - \medskip% } }{ \__gzt_citeauthor_no_firstinits:n {\c__gzt_issue_bib_key_tl -#1- @@ -1300,7 +1327,7 @@ \bool_if:NT {\g__gzt_credit_frontcover_bool} { \c_space_tl(\c__gzt_credit_frontcover_string_tl{}~:~% \DTLforeach*[\DTLiseq{\l__gzt_people_role_tl}{frontcovercredit}]{people}{% - \l__gzt_firstlastname=first-last-name% + \l__gzt_firstlastname_tl=first-last-name% ,\l__gzt_people_role_tl=role% }{% \__gzt_citeauthor_no_firstinits:n @@ -1468,6 +1495,11 @@ \bool_gset_true:N \g__gzt_frontcover_without_minitoc_bool \keys_set:nn { gzt/specialedition } {#1} } +\NewDocumentCommand \moralreportsetup { m } { + \bool_gset_true:N \g__gzt_moral_report_bool + \bool_gset_true:N \g__gzt_frontcover_without_minitoc_bool + \keys_set:nn { gzt/moralreport } {#1} +} \NewDocumentCommand \journalsetup { m } { \keys_set:nn { gzt/journalsetup } { #1 } } @@ -1531,7 +1563,7 @@ \newdateformat{l__gzt_uppercased_date_format}{ \__gzt_uppercased_monthname_french:n {\THEMONTH}~\THEYEAR } -\AtBeginDocument{% +\AddToHook{begindocument}{% \tl_new:N \g__gzt_bib_issue_date_tl \tl_gset:Nn \g__gzt_bib_issue_date_tl { \int_use:N \g__gzt_issue_year_int- @@ -1629,10 +1661,30 @@ \SetParskip{\c__gzt_mainmatter_parskip_skip} \pagestyle{__gzt_mainmatter_ps}% } -\tl_new:N \g__gzt_article_acknowledgements_tl% +\tl_new:N \l__gzt_article_acknowledgements_tl% \cs_new_protected:Nn \__gzt_article_acknowledgements:n { - \tl_gset:Nn \g__gzt_article_acknowledgements_tl { #1 } + \tl_set:Nn \l__gzt_article_acknowledgements_tl { #1 } +} +\cs_new_protected:Nn \__gzt_display_localtoc: +{ + \etocsettocstyle{\section*{\contentsname}}{}% + \etocsetstyle {section} + {} + {\leavevmode\leftskip 0cm\relax} + {\bfseries\normalsize\makebox[.6cm][l]{\etocnumber}% + \etocname\nobreak\hfill\nobreak% + \makebox[.5cm][r]{% + \etocpage% + }% + \par% + } + {\medskip} + \localtableofcontentswithrelativedepth{+1} +} +\NewDocumentCommand \gztlocaltableofcontents {} +{ + \__gzt_display_localtoc: {} } \tl_new:N \g__gzt_article_bib_key_tl% \tl_new:N \l__gzt_people_first_last_names_tl @@ -1964,7 +2016,7 @@ } } \file_if_exist:nT { \c__gzt_acronyms_file_string_tl } {% - \AtEndPreamble{\loadglsentries{\c__gzt_acronyms_file_string_tl}} + \AddToHook{begindocument/before}{\loadglsentries{\c__gzt_acronyms_file_string_tl}} } \tl_new:N \g__gzt_boxed_issue_number_tl% \tl_gset:Nn \g__gzt_boxed_issue_number_tl {% @@ -2056,7 +2108,7 @@ \__gzt_citeauthor_no_firstinits:n {\c__gzt_issue_bib_key_tl -editorinchief- 1} }{ \DTLforeach*[\DTLiseq{\l__gzt_people_role_tl}{editorinchief}]{people}{% - \l__gzt_firstlastname=first-last-name% + \l__gzt_firstlastname_tl=first-last-name% ,\l__gzt_people_role_tl=role% }{% \__gzt_citeauthor_no_firstinits:n {\c__gzt_issue_bib_key_tl -editorinchief- \exp_not:V\DTLcurrentindex}% @@ -2074,7 +2126,7 @@ } \__gzt_after_display_editorial: {} } -\AtEndPreamble{% +\AddToHook{begindocument/before}{% \tl_set_eq:NN \g__gzt_editorial_heading_tl \c__gzt_editorial_heading_string_tl \bool_if:NT {\g__gzt_special_edition_bool} { \tl_if_empty:NF \g__gzt_special_edition_editorial_heading_tl {% @@ -2156,7 +2208,7 @@ {} {\c_zero_dim} {} -\AtBeginDocument{% +\AddToHook{begindocument}{% \graphicspath{{\c__gzt_issue_images_path_string_tl//}{../\c__gzt_issue_images_path_string_tl//}} % \glsdisablehyper \g__gzt_mainmatter_switch_tl @@ -2299,7 +2351,7 @@ }% {\c__gzt_footer_size_font_tl\thepage}% }% -\AddEverypageHook{% +\AddToHook{shipout/background}{ \bool_if:NF {\g__gzt_advertisement_bool} { \tikz[remember~picture,overlay] { \g__gzt_background_footer_tl }% }% @@ -2366,26 +2418,23 @@ \FloatBarrier% \begin{__gzt_minibiographies_acknowledgements_tcbox} \__gzt_display_people_by_role:n { author-art-\int_use:N \g__gzt_articles_int } - \tl_if_empty:NF \g__gzt_article_acknowledgements_tl + \DTLsavelastrowcount{\__gzt_authors_number} + \tl_if_empty:NF \l__gzt_article_acknowledgements_tl {% - \par% - \bigskip% + \footnotesize + \int_compare:nNnT {\__gzt_authors_number}>{0} + { + \par% + \bigskip% + } \begin{adjustbox}{valign=t,minipage=\linewidth} \color{__gzt_acknowledgements_color}% - \g__gzt_article_acknowledgements_tl + \setlength{\parskip}{\c__gzt_mainmatter_parskip_skip} + \l__gzt_article_acknowledgements_tl \end{adjustbox} - } + } + \bool_gset_true:N \g__gzt_previous_article_with_bibliography_or_minibio_bool \end{__gzt_minibiographies_acknowledgements_tcbox} - \bool_gset_true:N \g__gzt_previous_article_with_bibliography_or_minibio_bool - % - \tl_gclear:N \g__gzt_people_affiliation_tl - \tl_gclear:N \g__gzt_people_email_tl - \tl_gclear:N \g__gzt_people_minibio_tl - \tl_gclear:N \g__gzt_people_photo_tl - \tl_gclear:N \g__gzt_people_webpage_tl - \tl_gclear:N \g__gzt_article_acknowledgements_tl - \DTLgcleardb{__gzt_authors} - \DTLgcleardb{__gzt_interviewees} } \let\printauthorsdetails\printminibios \cs_set_eq:NN \__gzt_printbibliography \printbibliography @@ -2624,7 +2673,7 @@ inputencoding=utf8/latin1 }% \DeclareTotalTCBox{\gztverb}{ v }{verbatim,blank,fuzzy~halo=0pt~with~__gzt_light_generic_dark_color!8}{#1} -\NewTCBListing{gztcode}{ O{} }{% +\NewTCBListing{gztcode}{ !O{} }{% listing~style=__gzt_lst_style, listing~only, enlarge~top~by=\medskipamount, @@ -2766,27 +2815,8 @@ \bool_gset_false:N \g__gzt_advertisement_bool \bool_gset_true:N \g__gzt_mainmatter_bool } -\keys_define:nn { gztarticle } -{ - editorial .code:n = {% - \AtBeginDocument{% - \__gzt_before_display_editorial:n {}% - } - \AtEndDocument{% - \__gzt_after_display_editorial: {}% - } - },% - presidentmessage .code:n = {% - \AtBeginDocument{% - \__gzt_before_display_presidentmessage: {}% - } - \AtEndDocument{% - \__gzt_after_display_presidentmessage: {}% - } - },% -}% \ProcessKeysOptions { gztarticle } -\AtEndDocument{% +\AddToHook{enddocument}{% \bool_if:NT {\g__gzt_multicols_bool} { \end{multicols}% } @@ -2962,7 +2992,7 @@ enlarge~left~by=\c__gzt_inside_cover_offset_dim, } } -\AtEndPreamble{% +\AddToHook{begindocument/before}{% \bool_if:NTF {\g__gzt_special_edition_bool} { \tcbset{ __gzt_tcb_inside_frontcover_style/.append~style={% @@ -3084,7 +3114,7 @@ \tl_clear:N \l__gzt_newtheorem_frenchtitle_tl \tl_clear:N \l__gzt_newtheorem_englishtitle_tl \tl_set:Nn \l__gzt_newtheorem_englishtitle_tl { - \text_uppercase:n {#2} + \text_titlecase:n {#2} } \tl_set:Nf \l__gzt_newtheorem_frenchtitle_tl { \l__gzt_newtheorem_englishtitle_tl -- cgit v1.2.3