diff options
author | Karl Berry <karl@freefriends.org> | 2023-01-14 20:48:59 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2023-01-14 20:48:59 +0000 |
commit | 38a85335a98b9ebd1d72dc8423ac1a4aa9061000 (patch) | |
tree | 2939017d50427231584d40cf24af728bff385a4e /Master/texmf-dist/source/lualatex/letgut | |
parent | fe0a6d1db1e8e9f87f4fc6d52bdd1b27f4f3c6d0 (diff) |
letgut (14jan23)
git-svn-id: svn://tug.org/texlive/trunk@65536 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/lualatex/letgut')
-rw-r--r-- | Master/texmf-dist/source/lualatex/letgut/letgut.org | 1516 |
1 files changed, 1335 insertions, 181 deletions
diff --git a/Master/texmf-dist/source/lualatex/letgut/letgut.org b/Master/texmf-dist/source/lualatex/letgut/letgut.org index dd76cbe8d78..5ad47ec6762 100644 --- a/Master/texmf-dist/source/lualatex/letgut/letgut.org +++ b/Master/texmf-dist/source/lualatex/letgut/letgut.org @@ -54,7 +54,7 @@ new versions of the class on CTAN. % This field contains the version of the package. % The value is optional. % The value is restricted to 32 characters. - \version{0.9.4 2022-10-03} + \version{0.9.5 2023-01-13} % ------------------------------------------------------------------------- % This field contains the name of the author(s). % The value is optional. @@ -131,15 +131,25 @@ new versions of the class on CTAN. % The value is optional. % The value is restricted to 8192 characters. \begin{announcement} - ## [0.9.4] - 2022-10-03 - ### Added - - Command `\lettrenumber` that displays various Lettre numbers related to the one of the current issue. - - Options of `\lettre` and `\lettregut` that add various Lettre numbers related to the one of the current issue. - - Command `\Ucode` for points and names of Unicode characters. + - Files (`.tex` source, images files, bibliographic files, etc.) used to typeset + an article possibly attached to the Lettre's PDF. + - Starred version of `\inputarticle` that prevents the previous feature. + - Boolean option that (un)forces the previous feature. + - Plural forms `\lettres` and `\lettresgut` of `\lettre` and `\lettregut`. + - Starred versions of `\person` and `\author` that sort the lists of + persons/authors in alphabetic order. + - Environment for announcements. + - Environments and commands for rebus and their solutions. ### Changed - - Documentation completed and improved. + - `⅛` replaced by `™` as a short equivalent of ~\lstinline~ (the former is + considered as math if ~unicode-math~ is loaded). + - Documentation updated. + + ### Fixed + Several bugs and sub-optimalities. + \end{announcement} % ------------------------------------------------------------------------- % This field contains the one-liner for the package. @@ -209,12 +219,35 @@ new versions of the class on CTAN. ## [Unreleased] + ## [0.9.5] - 2023-01-13 + + ### Added + - Files (`.tex` source, images files, bibliographic files, etc.) used to typeset + an article possibly attached to the Lettre's PDF. + - Starred version of `\inputarticle` that prevents the previous feature. + - Boolean option that (un)forces the previous feature. + - Plural forms `\lettres` and `\lettresgut` of `\lettre` and `\lettregut`. + - Starred versions of `\person` and `\author` that sort the lists of + persons/authors in alphabetic order. + - Environment for announcements. + - Environments and commands for rebus and their solutions. + + ### Changed + - `⅛` replaced by `™` as a short equivalent of ~\lstinline~ (the former is + considered as math if ~unicode-math~ is loaded). + - Documentation updated. + + ### Fixed + Several bugs and sub-optimalities. + ## [0.9.4] - 2022-10-03 ### Added - - Command `\lettrenumber` that displays various Lettre numbers related to the one of the current issue. - - Options of `\lettre` and `\lettregut` that add various Lettre numbers related to the one of the current issue. - - Command `\Ucode` for points and names of Unicode characters. + - Command `\lettrenumber` that displays various Lettre numbers related to the + one of the current issue. + - Options of `\lettre` and `\lettregut` that add various Lettre numbers related + to the one of the current issue. + - Command `\Ucode` for points and names of Unicode characters. ### Changed - Documentation improved. @@ -222,7 +255,8 @@ new versions of the class on CTAN. ## [0.9.3] - 2022-09-02 ### Changed - - Local conf. file doesn't require anymore to start with \ExplSyntaxOff in some instances. + - Local conf. file doesn't require anymore to start with \ExplSyntaxOff in some + instances. - Documentation improved. ## [0.9.2] - 2022-06-18 @@ -280,7 +314,7 @@ to the newsletter “La Lettre GUTenberg” of GUTenberg, the French TeX User Gr Release ------- -2022-10-03 v0.9.4 +2023-01-13 v0.9.5 Development ----------- @@ -359,7 +393,7 @@ the corresponding `.tex` file (which doesn't derive from an Org Mode file). % | v1.3c or later % See:| http://www.latex-project.org/lppl.txt % -% Copyright (C) 1994-2022 by Association GUTenberg +% Copyright (C) 1994-2023 by Association GUTenberg % <secretariat@gutenberg.eu.org> % % This work may be distributed and/or modified under the @@ -405,7 +439,11 @@ We define some constant token lists immediately useful. #+begin_src latex \ExplSyntaxOn \tl_const:Nn \c__letgut_Lettre_tl { \emph{ Lettre } } + \tl_const:Nn \c__letgut_Lettres_tl { + \c__letgut_Lettre_tl \emph{ s } + } \tl_const:Nn \c__letgut_gutenberg_tl { GUTenberg } + \tl_const:Nn \c__letgut_association_tl { association } \tl_const:Nn \c__letgut_Lettre_gutenberg_tl { \c__letgut_Lettre_tl~\c_space_tl \c__letgut_gutenberg_tl } @@ -422,8 +460,8 @@ Now, we can announce the class name and its version: #+begin_src latex \ProvidesExplClass{letgut} - {2022-10-03} - {0.9.4} + {2023-01-13} + {0.9.5} { Class for the newsletter “The GUTenberg Letter” } @@ -528,6 +566,18 @@ Some messages are declared for future use. #+begin_src latex \bool_new:N \g__letgut_draft_bool #+end_src +- For the included files to (not) be attached. + #+begin_src latex + \bool_new:N \g__letgut_included_files_attached_bool + #+end_src +- For the acronym definitions file to (not) be attached. + #+begin_src latex + \bool_new:N \g__letgut_acronyms_file_attached_bool + #+end_src +- For the listings language file to (not) be attached. + #+begin_src latex + \bool_new:N \g__letgut_lstlanguage_file_attached_bool + #+end_src *** Dimensions :PROPERTIES: @@ -714,7 +764,6 @@ We close the ~\AddToHook{begindocument/before}~ argument. } #+end_src - *** Integers :PROPERTIES: :CUSTOM_ID: ImplementationDeclarationsIntegers-7pag55h0jlj0 @@ -830,13 +879,14 @@ We close the ~\AddToHook{begindocument/before}~ argument. :END: #+begin_src latex - \tl_new:N \g__letgut_mark_tl - \tl_new:N \g__letgut_title_tl - \tl_new:N \l_letgut_last_name_tl - \tl_new:N \l_letgut_first_name_tl - \tl_new:N \l_letgut_title_tl - \tl_new:N \l__letgut_title_addon_tl - \tl_new:N \l__letgut_reference_text_tl + \tl_new:N \g__letgut_mark_tl + \tl_new:N \g__letgut_title_tl + \tl_new:N \l_letgut_last_name_tl + \tl_new:N \l_letgut_first_name_tl + \tl_new:N \l_letgut_title_tl + \tl_new:N \l__letgut_title_addon_tl + \tl_new:N \l__letgut_reference_text_tl + \tl_new:N \g__letgut_effective_acronyms_file_tl #+end_src *** Comma separated lists @@ -859,6 +909,8 @@ We close the ~\AddToHook{begindocument/before}~ argument. #+begin_src latex \seq_new:N \l__letgut_first_last_names_items_seq + \seq_new:N \g__letgut_included_files_seq + \seq_new:N \g__letgut_added_bib_resources_seq #+end_src ** Class options @@ -1053,10 +1105,18 @@ We now load some packages. #+begin_src latex \RequirePackage{titlesec} #+end_src +- Driver-independent color extensions. + #+begin_src latex + \RequirePackage[table]{xcolor} + #+end_src - Several logos and ornaments. #+begin_src latex \RequirePackage{fourier-orns} #+end_src +- Drawing of Vectorian ornaments. + #+begin_src latex +\RequirePackage{pgfornament} + #+end_src - Control float placement. #+begin_src latex \RequirePackage[section,above]{placeins} @@ -1088,18 +1148,23 @@ We now load some packages. #+begin_src latex \RequirePackage{siunitx} #+end_src -- A collection of logos with bookmark support. +- Additional TeX-family logos (which loads and extends \package{hologo} which is + collection of logos with bookmark support). #+begin_src latex - \RequirePackage{hologo} - #+end_src -- Driver-independent color extensions. - #+begin_src latex - \RequirePackage[table]{xcolor} + \RequirePackage{bxtexlogo} #+end_src - Coloured boxes, for LaTeX examples and theorems, etc. #+begin_src latex \RequirePackage{tcolorbox} #+end_src +- Compile \TeX{} code stand-alone or as part of a document. + #+begin_src latex + \RequirePackage[group=false,subpreambles,sort]{standalone} + #+end_src +- Attach arbitrary files to a PDF document. + #+begin_src latex + \RequirePackage[icon=Paperclip]{attachfile2} + #+end_src - Expandable macros to extract the data from references and allow counter assignments or calculations. #+begin_src latex @@ -1146,6 +1211,10 @@ We now load some packages. #+begin_src latex \RequirePackage{acro} #+end_src +- Allow URL breaks at any alphanumerical character. + #+begin_src latex +\RequirePackage{xurl} + #+end_src The following packages have to be the last ones loaded. So we ensure this by loading them just before the begining of the document: @@ -1226,6 +1295,9 @@ We close the ~\AddToHook{begindocument/before}~ argument. \RenewDocumentCommand {\printbibliography} { O{} } { \phantomsection \__letgut_old_printbibliography[#1] + \bool_if:NT \g__letgut_included_files_attached_bool { + \seq_map_inline:Nn \g__letgut_added_bib_resources_seq {\seq_gput_right:Nn \g__letgut_included_files_seq {#1}} + } } #+end_src For printing the bibliography, we define two new bibheadings for the @@ -1236,37 +1308,45 @@ We close the ~\AddToHook{begindocument/before}~ argument. \defbibheading{subtitle}[\refname]{% \subtitle{#1}} #+end_src -- The acronyms will be typset in footnote, with small caps shape. When they are +- The acronyms will be typset in its short form, with small caps shape. When they are (English) foreign, it will be specified and the translation will be added. #+begin_src latex \acsetup{ - first-style=footnote, + first-style=short, format/short = {\scshape}, format/foreign = {\em}, foreign/display, locale/format = {\upshape}, locale/display, + make-links = true, + link-only-first = true } #+end_src - Moreover, we redefine the private macro ~\acro_footnote:n~ of the - \package*{acro} in order to make the footnotes displaying the long forms of the - acronyms ended by a period (like ordinary footnotes). + + We currently have to work around an ~acro~ bug (see \url{https://tex.stackexchange.com/q/661966/18401}). + #+begin_src latex - \cs_undefine:N \acro_footnote:n - \cs_new_protected:Npn \acro_footnote:n #1 - { - \tl_set:Ne \l__acro_tmpa_tl { - \l__acro_fnpct_check_tl - } - \exp_last_unbraced:Nno - \footnote {#1.} - \l__acro_tmpa_tl - } + \AddToHook{cmd/printacronyms/before}{\bool_set_false:N\l__acro_link_only_first_bool} + #+end_src + + In case the long form of an acronym is explicited in footnote, we want this + footnot to be ended with a period. + #+begin_src latex + \ProvideDocumentCommand \acroendfootnote {} {.} #+end_src The following settings for packages that have to be the last ones loaded are also done just before the begining of the document. +- (Temporary?) workaround that moves `standalone` code in hook `begindocument` + to `begindocument/before` in order to get rid of the issue + \url{https://tex.stackexchange.com/q/670638/18401}. + +#+begin_src latex + \RemoveFromHook{begindocument}[standalone] + \ExpandArgs{nv}\AddToHook{begindocument/before}{l__hook_return_tl} +#+end_src + #+begin_src latex \AddToHook{begindocument/before}{ #+end_src @@ -1287,16 +1367,17 @@ We close the ~\AddToHook{begindocument/before}~ argument. secondly in the parent directory, thirdly in the TDS). #+begin_src latex \file_if_exist:nTF {./\c__letgut_acronyms_file_tl}{ - \file_input:n {./\c__letgut_acronyms_file_tl} + \tl_gset:Nn \g__letgut_effective_acronyms_file_tl {./\c__letgut_acronyms_file_tl} }{ \file_if_exist:nTF {../\c__letgut_acronyms_file_tl}{ - \file_input:n {../\c__letgut_acronyms_file_tl} + \tl_gset:Nn \g__letgut_effective_acronyms_file_tl {../\c__letgut_acronyms_file_tl} }{ \file_if_exist:nT {\c__letgut_acronyms_file_tl}{ - \file_input:n {\c__letgut_acronyms_file_tl} + \tl_gset:Nn \g__letgut_effective_acronyms_file_tl {\c__letgut_acronyms_file_tl} } } } + \input {\g__letgut_effective_acronyms_file_tl} #+end_src - Depending on some chosen class options, some packages have to be loaded, @@ -1425,7 +1506,10 @@ We now define the options of the class: #+begin_src latex \keys_define:nn { letgut } { - , for-readers .bool_gset:N = \g__letgut_for_readers_bool + , for-readers .code:n = { + \bool_gset_true:N \g__letgut_for_readers_bool + \bool_gset_false:N \g__letgut_included_files_attached_bool + } , for-readers .initial:n = { true } , for-readers .default:n = { true } , for-authors .bool_gset_inverse:N = \g__letgut_for_readers_bool @@ -1438,6 +1522,7 @@ We now define the options of the class: \pagecolor[rgb]{\c__letgut_default_pagecolor_paper_clist} \clist_set_eq:NN \g__letgut_pagecolor_clist \c__letgut_default_pagecolor_paper_clist + \bool_gset_false:N \g__letgut_included_files_attached_bool } , screen .bool_gset_inverse:N = \g__letgut_paper_bool , number .int_gset:N = \g__letgut_number_int @@ -1472,6 +1557,7 @@ We now define the options of the class: , informations .initial:n = { true } , detailedtoc .bool_gset:N = \g__letgut_detailedtoc_bool , detailedtoc .initial:n = { false } + , source-files-attached .bool_gset:N = \g__letgut_force_included_files_attached_bool } \ProcessKeysOptions { letgut } #+end_src @@ -1583,7 +1669,6 @@ We now define the headers. We create a box to display alerts. #+begin_src latex - \tcbuselibrary{xparse} \DeclareTCBox{\alertbox}{}{ nobeforeafter, colback=red!5!white, @@ -1647,6 +1732,137 @@ We now define the headers. } #+end_src +** Announcements +:PROPERTIES: +:CUSTOM_ID: ImplementationAnnounces-nahckb909pj0 +:END: +#+begin_src latex +\DeclareTColorBox{announcement}{ O{black} m } +{ + colframe=#1, + coltitle=#1, + borderline~ west={1cm}{0pt}{#1}, + IfBlankF={#2}{ + title=\hypersetup{hidelinks}#2, + phantom={\phantomsection\addcontentsline{toc}{title}{#2}}, + }, + enhanced, + sharp~ corners, + boxrule=0mm, + leftrule=1cm, + bottomrule=1cm, + toptitle=20pt, + bottomtitle=20pt, + center~ title, + fonttitle=\scshape\bfseries\huge, + fontupper=\Large, + fontlower=\Large, + skin=empty, + segmentation~ style=solid, + halign=center, + overlay~ unbroken~ and~ first ={ + \node[color=#1]~ at~ ([yshift=8pt]title.south) + {\pgfornament[width=0.4\linewidth]{88}}; + \node[color=white,anchor=north~ west]~ at~ (frame.north~ west) {\huge\bfseries\aldineright{}}; + }, +} +#+end_src + +** Rebus + :PROPERTIES: + :CUSTOM_ID: ImplementationRebus-osw8m3f0cpj0 + :END: + +#+begin_src latex + \NewDocumentCommand{\solution}{}{\tcblower} + \NewDocumentCommand{\displaysolutions}{}{% + \tcbstoprecording\tcbinputrecords% + } + \tcbset{% + rebus~ style/.style={% + enhanced, + boxrule=0pt, + frame~hidden, + fonttitle=\normalfont\large\bfseries, + before~ title={\lefthand\c_space_tl}, + halign=center, + title~ addon/.store~ in=\l__letgut_title_addon_tl, + after~ title={ + \tl_if_empty:NF {\l__letgut_title_addon_tl}{ + \c_space_tl(\emph{\l__letgut_title_addon_tl}) + } + }, + float = bh, + colback = __letgut_background_terminal_stdout, + colbacktitle = __letgut_background_terminal_stdin, + coltitle = black + } + } + \tcbset{ + no~ solution/.style={ + no~ recording, + after~ upper=dans~ la~ prochaine~ \lettre{}, + after~ upper~ pre={ + \par\bigskip\hfill\scriptsize\itshape + Solution\c_space_tl + }, + } + } + \NewTColorBox[auto~ counter]{rebus}{+!O{}}{% + rebus~ style, + fonttitle=\bfseries, + title={Rébus}, + label={rebus@\thetcbcounter}, + after~ upper={\vpageref[ci-dessous]{solution@\thetcbcounter}}, + after~ upper~ pre={ + \par\bigskip\hfill\scriptsize\itshape + Solution\c_space_tl + }, + lowerbox=ignored, + savelowerto=rebus-\thetcbcounter.tex, + record={\string\rebussolution*[\thetcbcounter][][]}, + #1 + } + \NewDocumentCommand{\rebussolution}{s +o o O{}}{% + \IfValueTF{#2}{ + \begin{tcolorbox}[ + rebus~ style, + halign=justify, + before~ title={\lefthand{}~Solution~ du~ rébus\c_space_tl}, + title={ + \IfBooleanTF{#1}{ + \vpageref[ci-dessus]{rebus@#2} + }{ + de~la~\lettre{}\c_space_tl + \IfValueTF{#3}{ + #3 + }{ + précédente + } + } + }, + phantomlabel={ + \IfBooleanT{#1}{ + solution@#2 + } + }, + #4 + ] + \IfBooleanTF{#1}{ + \file_if_exist_input:n {rebus-#2.tex} + }{ + #2 + } + \end{tcolorbox} + }{ + \IfValueF{#3}{ + \tcbstoprecording + \tcbinputrecords + } + } + } +#+end_src + ** “Title” and marks :PROPERTIES: :CUSTOM_ID: ImplementationTitleandmarks-5ylg55h0jlj0 @@ -1728,7 +1944,7 @@ Lettre. { \begin{picture}(0,0) \put(-2cm,-25.275cm){ - \includegraphics[scale=0.96]{ + \includegraphics*[scale=0.96]{ \c__letgut_banner_file_tl.pdf } } @@ -1904,15 +2120,13 @@ Here starts what is automatically added at the beginning of the document. #+begin_src latex \bool_if:NTF \g__letgut_editorial_bool { \file_if_exist:nTF {./\c__letgut_editorial_file_tl}{ - \RenewDocumentCommand\author{ m } { - \__letgut_author:n { #1 } + \RenewDocumentCommand\author{ s m } { + \__letgut_author:nn { #1 } {#2} } \pdfbookmark[1]{Éditorial}{ \c__letgut_editorial_file_tl } - \__letgut_input_article:n {./\c__letgut_editorial_file_tl} - % % \int_set:N \l_tmpa_int {\pagenumber} - % % \int_compare:nNnT \l_tmpa_int = 1 { \newpage } + \inputarticle{./\c__letgut_editorial_file_tl} #+end_src # < (Just not to disturb the parentheses balancing @@ -1969,12 +2183,15 @@ Membership reminder. :CUSTOM_ID: ImplementationLastpagehandling-jbng55h0jlj0 :END: -The last page is special: it should automatically contain some informations about -\gutenberg. +The last pages are special: they should automatically contain +# the list of the acronyms used in the \lettre, and +some informations about \gutenberg. #+begin_src latex \AddToHook{enddocument} { + % \clearpage + % \printacronyms[heading=title,display=used] #+end_src Conditionally to the fact the ~informations~ option is not set to ~false~: if the \file*{informations-gut.tex} which contains the informations about @@ -1985,17 +2202,17 @@ directory, thirdly in the TDS). Otherwise, a warning is displayed. \clearpage \phantomsection \file_if_exist:nTF {./\c__letgut_informations_gutenberg_file_tl}{ - \__letgut_input_article:n { + \inputarticle*{ ./\c__letgut_informations_gutenberg_file_tl } }{ \file_if_exist:nTF {../\c__letgut_informations_gutenberg_file_tl}{ - \__letgut_input_article:n { + \inputarticle*{ ../\c__letgut_informations_gutenberg_file_tl } }{ \file_if_exist:nTF {\c__letgut_informations_gutenberg_file_tl}{ - \__letgut_input_article:n { + \inputarticle*{ \c__letgut_informations_gutenberg_file_tl } }{ @@ -2041,8 +2258,32 @@ the author(s) of the “Lettre”. :CUSTOM_ID: ImplementationSectionssubsectionsetcFormat-tapg55h0jlj0 :END: +When used in titles, ~\hologo~ needs to be protected. In order to not bother the +user with this peticularity, we make this the default for it. + + #+begin_src latex + % \AddToHook{cmd/hologo/before}{\protect} + \NewCommandCopy{\__letgut_old_hologo}{\hologo} + \RenewDocumentCommand {\hologo} { m }{ + \protect\__letgut_old_hologo { #1 } + } + #+end_src + +We want the \package{hologo}'s ~\hologo~ command to have its mandatory argument +not uppercased in the context of ~\text_uppercase:n~ (as in titles, cf. just +below). + + #+begin_src latex + \tl_put_right:Nn \l_text_case_exclude_arg_tl { \hologo } + % \tl_put_right:Nn \l_text_case_exclude_arg_tl { \ac } + % \tl_put_right:Nn \l_text_case_exclude_arg_tl { \acs } + % \tl_put_right:Nn \l_text_case_exclude_arg_tl { \acl } + % \tl_put_right:Nn \l_text_case_exclude_arg_tl { \acf } + #+end_src + - We create the new level ~\title~ for the titles of the articles. They are displayed uppercased. + #+begin_src latex \AddToHook{begindocument/before}{% \titleclass{\title}{straight}[\part] @@ -2050,10 +2291,9 @@ the author(s) of the “Lettre”. \normalfont \LARGE \bfseries - \text_uppercase:n }{}{1em}{ - \aldineleft\c_space_tl - }{} + \aldineleft\c_space_tl\text_uppercase:n + } \etocsetlevel{title}{0} \def\toclevel@title{0}% \etocsetstyle {title} @@ -2239,14 +2479,14 @@ We define the command that lets us specify the newsletter setup. #+begin_src latex \NewDocumentCommand {\francophony} { } { \raisebox{-1.5pt}{ - \includegraphics[width=\f@size pt]{ + \includegraphics*[width=\f@size pt]{ letgut-francophony-icon } } } #+end_src -*** Persons and authors +*** Persons, authors and list of participants :PROPERTIES: :CUSTOM_ID: ImplementationDocumentcommandsPersonsandauthors-h5sg55h0jlj0 :END: @@ -2259,19 +2499,19 @@ For both persons and authors, the argument of: a single one, separated by a semicolon. #+begin_src latex - \NewDocumentCommand {\person} { m } { - \__letgut_process_list:n {#1} + \NewDocumentCommand {\person} { s m } { + \__letgut_process_list:nn {#1} {#2} } - \cs_new_protected:Npn \__letgut_author:n #1 + \cs_new_protected:Npn \__letgut_author:nn #1 #2 { \nopagebreak \begin{flushright} - \__letgut_process_list:n {#1} + \__letgut_process_list:nn {#1} {#2} \end{flushright} } \AddToHook{begindocument/end}{% - \RenewDocumentCommand\author{ m } { - \__letgut_author:n { #1 } + \RenewDocumentCommand\author{ s m } { + \__letgut_author:nn { #1 } { #2 } } } #+end_src @@ -2320,10 +2560,18 @@ For both persons and authors, the argument of: (#3) } \seq_new:N \l__letgut_items_seq - \cs_new_protected:Npn \__letgut_process_list:n #1 + \cs_new_protected:Npn \__letgut_process_list:nn #1 #2 { \seq_clear:N \l__letgut_items_seq - \seq_set_split:Nnn \l_tmpa_seq {~and~} {#1} + \seq_set_split:Nnn \l_tmpa_seq {~and~} {#2} + \IfBooleanT{#1}{ + \seq_sort:Nn \l_tmpa_seq + { + \str_compare:nNnTF { ##1 } > { ##2 } + { \sort_return_swapped: } + { \sort_return_same: } + } + } \seq_map_inline:Nn \l_tmpa_seq { \seq_set_from_clist:Nn \l_tmpb_seq {##1} \seq_pop_left:NN \l_tmpb_seq \l_letgut_last_name_tl @@ -2354,6 +2602,39 @@ For both persons and authors, the argument of: } #+end_src +The list of contributors (possibly the masthead) will be the list of the persons +who contributed to the current issue of the \lettre{}, with both a pre- and +a post-text, the whole in a centered boxed minipage. + + #+begin_src latex + \tl_const:Nn \c__letgut_preamble_list_of_contributors_tl { + De~ près,~ de~ loin,~ par~ leurs~ avis~ éclairés,~ par~ leurs~ remarques~ + pertinentes~ ou~ par~ leurs~ articles,~ ont~ contribué~ à~ cette~ + \lettre{}~ :~ % + } + \tl_const:Nn \c__letgut_postamble_list_of_contributors_tl { + \c_space_tl (et~ nous~ espérons~ n'avoir~ oublié~ personne). + } + \cs_new_protected:Nn \__letgut_list_of_contributors:nnn + { + \par + \fbox{ + \begin{minipage}[t]{\linewidth-2\fboxsep-2\fboxrule} + #1 + \person*{#3} + #2 + \end{minipage} + } + } + \NewDocumentCommand {\listofcontributors} { + O{\c__letgut_preamble_list_of_contributors_tl} + O{\c__letgut_postamble_list_of_contributors_tl} + m + } { + \__letgut_list_of_contributors:nnn {#1} {#2} {#3} + } + #+end_src + *** Horizontal rule :PROPERTIES: :CUSTOM_ID: ImplementationDocumentcommandsHorizontalrule-8vsg55h0jlj0 @@ -2429,11 +2710,19 @@ https://github.com/latex3/hyperref/issues/188#issuecomment-826302843. } \cs_new_protected:Nn \__letgut_software:nn { + #+end_src + +We split the software's name at spaces in order to apply the dedicated +font switch (~\ttfamily~) to all of it except to the spaces. + + #+begin_src latex + \seq_set_split:Nnn \l_tmpa_seq { ~ } { #2 } + \seq_set_map:NNn \l_tmpb_seq \l_tmpa_seq {{\l__letgut_softwares_font_switch_tl ##1}} \tl_if_empty:nTF {#1} { - {\l__letgut_softwares_font_switch_tl #2} + \seq_use:Nn \l_tmpb_seq { ~ } }{ - \href{#1}{{\l__letgut_softwares_font_switch_tl #2}} + \href{#1}{ \seq_use:Nn \l_tmpb_seq { ~ } } } } \cs_new_protected:Nn \__letgut_file:n @@ -2480,63 +2769,69 @@ frequently used. The more the users will resort to these commands, the less will be inconsistently typesetted these names and expressions. #+begin_src latex - \NewExpandableDocumentCommand { \gutenberg } { } { - \c__letgut_gutenberg_tl - } - \NewExpandableDocumentCommand { \gut } { } { - \c__letgut_gutenberg_tl - } - % \NewExpandableDocumentCommand { \lettre } { } { - % \c__letgut_Lettre_tl - % } - % \NewExpandableDocumentCommand { \lettregut } { } { - % \lettre \c_space_tl \gutenberg - % } - \NewExpandableDocumentCommand { \Cahier } { } { - \c__letgut_cahier_tl - } - \NewExpandableDocumentCommand { \Cahiers } { } { - \c__letgut_cahiers_tl - } - \NewExpandableDocumentCommand { \cahier } { } { - \c__letgut_cahier_tl - } - \NewExpandableDocumentCommand { \cahiers } { } { - \c__letgut_cahiers_tl - } - \NewExpandableDocumentCommand { \cahiergut } { } { - \cahier \c_space_tl \gutenberg - } - \NewExpandableDocumentCommand { \cahiersgut } { } { - \cahiers \c_space_tl \gutenberg - } - \NewExpandableDocumentCommand { \letgut } { } { - \class{letgut} - } - \NewExpandableDocumentCommand { \letgutcls } { } { - \class*{letgut} - } - \NewExpandableDocumentCommand { \tugboat } { } { - \c__letgut_tugboat_tl - } - \NewExpandableDocumentCommand { \knuth } { } { - \person{Knuth,~ Donald~ E.} - } - \NewExpandableDocumentCommand { \lamport } { } { - \person{Lamport,~ Leslie} - } - \NewExpandableDocumentCommand { \tl } { } { - \c__letgut_tex_live_tl - } - \NewExpandableDocumentCommand { \linux } { } { - \c__letgut_gnu_linux_tl - } - \NewExpandableDocumentCommand { \macos } { } { - \c__letgut_macOS_tl - } - \NewExpandableDocumentCommand { \windows } { } { - \c__letgut_windows_tl - } + \NewExpandableDocumentCommand { \gutenberg } { } { + \c__letgut_gutenberg_tl + } + \NewExpandableDocumentCommand { \gut } { } { + \c__letgut_gutenberg_tl + } + \NewExpandableDocumentCommand { \assogut } { } { + \c__letgut_association_tl \c_space_tl \c__letgut_gutenberg_tl + } + \NewExpandableDocumentCommand { \Assogut } { } { + \text_titlecase_first:n {\assogut} + } + \NewExpandableDocumentCommand { \lettres } { } { + \c__letgut_Lettres_tl + } + \NewExpandableDocumentCommand { \lettresgut } { } { + \c__letgut_Lettres_tl \c_space_tl \c__letgut_gutenberg_tl + } + \NewExpandableDocumentCommand { \Cahier } { } { + \c__letgut_cahier_tl + } + \NewExpandableDocumentCommand { \Cahiers } { } { + \c__letgut_cahiers_tl + } + \NewExpandableDocumentCommand { \cahier } { } { + \c__letgut_cahier_tl + } + \NewExpandableDocumentCommand { \cahiers } { } { + \c__letgut_cahiers_tl + } + \NewExpandableDocumentCommand { \cahiergut } { } { + \cahier \c_space_tl \gutenberg + } + \NewExpandableDocumentCommand { \cahiersgut } { } { + \cahiers \c_space_tl \gutenberg + } + \NewExpandableDocumentCommand { \letgut } { } { + \class{letgut} + } + \NewExpandableDocumentCommand { \letgutcls } { } { + \class*{letgut} + } + \NewExpandableDocumentCommand { \tugboat } { } { + \c__letgut_tugboat_tl + } + \NewExpandableDocumentCommand { \knuth } { } { + \person{Knuth,~ Donald~ E.} + } + \NewExpandableDocumentCommand { \lamport } { } { + \person{Lamport,~ Leslie} + } + \NewExpandableDocumentCommand { \tl } { } { + \c__letgut_tex_live_tl + } + \NewExpandableDocumentCommand { \linux } { } { + \c__letgut_gnu_linux_tl + } + \NewExpandableDocumentCommand { \macos } { } { + \c__letgut_macOS_tl + } + \NewExpandableDocumentCommand { \windows } { } { + \c__letgut_windows_tl + } #+end_src We define the command ~\lettrenumber~ that displays the number of @@ -2600,7 +2895,7 @@ resp. “\lettre” and “\lettregut”: \tl_if_empty:nF {#1} { #3 - \c_space_tl + \nobreakspace \__letgut_get_lettre_number:n {#1} } } @@ -3063,6 +3358,9 @@ extensions of the ~graphicx~ package. \par }{ \exp_args:NV \author{\g__letgut_bookreview_reviewer_tl} + \bool_if:NT \g__letgut_included_files_attached_bool { + \seq_map_inline:Nn \g__letgut_added_bib_resources_seq {\seq_gput_right:Nn \g__letgut_included_files_seq {##1}} + } } #+end_src @@ -3126,7 +3424,7 @@ for usual characters on French keyboards. - We specify the possible hyphenations of \enquote{\gutenberg}. #+begin_src latex - \hyphenation{GUT-enberg} + \hyphenation{GUTen-berg} #+end_src *** ISSN @@ -3192,6 +3490,226 @@ watermarks. } #+end_src +*** Input of articles +:PROPERTIES: +:CUSTOM_ID: ImplementationMiscellanousInputofarticles-aqok3ja00pj0 +:END: + +We create our own ~\input~ command for the articles of the Lettre with the +following characteristics: + +- The previous style is applied automatically. Hence, the keywords defined in + a previous file (by loading some peticular (La)TeX dialects, i.e. control + sequences and keywords specific to some class or packages) won't interfere + with the ones of the current file. +- All the acronyms are reset (each acronym is developped at its first occurrence). +- The source file of the article is attached to the \pdf{} (if desired, + otherwise, use the starred version). + +#+begin_src latex + \cs_new_protected:Npn \__letgut_input_article:nn #1 #2 + { + \lstset{ style=__letgut_reset_listings_styles } + \acresetall% + \input{#2}% + % \bool_show:N \g__letgut_included_files_attached_bool + \bool_if:NT \g__letgut_included_files_attached_bool { + \IfBooleanF {#1}{ + \seq_gput_left:Nn \g__letgut_included_files_seq { + \attachfile[ + description={Source~ du~ présent~ article~ (fichier~ `#2.tex`)}, + mimetype=application/x-tex]% + {#2.tex}% + } + \bool_if:NT \g__letgut_acronyms_file_attached_bool { + \seq_gput_right:No \g__letgut_included_files_seq { + \c__letgut_acronyms_file_attached_tl + } + } + \bool_if:NT \g__letgut_lstlanguage_file_attached_bool { + \seq_gput_right:No \g__letgut_included_files_seq { + \c__letgut_lstlanguage_file_attached_tl + } + } + \seq_remove_duplicates:N \g__letgut_included_files_seq + \marginpar{\seq_use:Nn \g__letgut_included_files_seq { } } + \seq_clear:N \g__letgut_included_files_seq + \bool_gset_false:N \g__letgut_acronyms_file_attached_bool + \bool_gset_false:N \g__letgut_lstlanguage_file_attached_bool + } + } + } + \NewDocumentCommand{\inputarticle}{ s m }{ + \__letgut_input_article:nn { #1 } { #2 } + } +#+end_src + +*** Included graphics attached to the \pdf +:PROPERTIES: +:CUSTOM_ID: ImplementationMiscellanousIncludedgraphicsattachedtothe\pdf-xoc34ja00pj0 +:END: + +We hack the ~\includegraphics~ command in order to attach the included graphics +to the \pdf{} (if desired, otherwise, use the starred version). + +#+begin_src latex + \NewCommandCopy {\__letgut_orig_includegraphics} {\includegraphics} + \clist_set:Nx \l_tmpa_clist {\Gin@extensions} + \cs_new_protected:Npn \__letgut_includegraphics:nnn #1 #2 #3 + { + \file_if_exist:nTF {#3} { + \bool_if:NT \g__letgut_included_files_attached_bool { + \IfBooleanF {#1}{ + \seq_gput_left:Nn \g__letgut_included_files_seq { + \attachfile[ + description={ + Fichier~ image~ inclus~ dans~ le~ + présent~ article~ (fichier~ `#3`) + }, + mimetype=image + ] + {#3} + } + } + } + \__letgut_orig_includegraphics[#2]{#3} + }{ + \bool_gset_false:N \g_tmpa_bool + \clist_map_inline:Nn \l_tmpa_clist {% + \file_if_exist:nTF {#3##1} { + \clist_map_break:n { + \bool_if:NT \g__letgut_included_files_attached_bool { + \IfBooleanF {#1}{ + \seq_gput_left:Nn \g__letgut_included_files_seq { + \attachfile[ + description={Fichier~ image~ inclus~ dans~ le~ présent~ article~ (fichier~ `#3##1`)}, + mimetype=image/##1 + ] + {#3##1} + } + } + } + \__letgut_orig_includegraphics[#2]{#3} + \bool_gset_true:N \g_tmpa_bool + } + } + } + \bool_if:NF \g_tmpa_bool { + \@latex@error{File~ `#3'~ not~ found}% + {I~ could~ not~ locate~ the~ file~ with~ any~ of~ these~ extensions:^^J% + \clist_use:Nn \l_tmpa_clist { ~ }^^J\@ehc}% + } + } + } + \RenewDocumentCommand {\includegraphics} {s O{} m } { + \__letgut_includegraphics:nnn {#1} {#2} {#3} + } +#+end_src + +*** Added bibliographic ressources attached to the \pdf +:PROPERTIES: +:CUSTOM_ID: ImplementationMiscellanousAddedbibliographicressourcesattachedtothe\pdf-l4e34ja00pj0 +:END: + +We hack the ~\addbibresource~ command in order to attach the bibliographic +ressources to the \pdf{} (if desired, otherwise, use the starred version). + +#+begin_src latex + \NewCommandCopy {\__letgut_orig_addbibresource} {\addbibresource} + \cs_new_protected:Npn \__letgut_addbibresource:nnn #1 #2 #3 + { + \file_if_exist:nT {#3} { + \IfBooleanF {#1}{ + \seq_gput_left:Nn \g__letgut_added_bib_resources_seq { + \attachfile[ + description={ + Source~ du~ fichier~ bibliographique~ utilisé~ + dans~ le~ présent~ article~ (fichier~ `#3`) + }, + mimetype=application/x-bibtex + ]% + {#3}% + } + } + } + \__letgut_orig_addbibresource[#2]{#3} + } + \RenewDocumentCommand {\addbibresource} { s O{} m } { + \__letgut_addbibresource:nnn {#1} {#2} {#3} + } +#+end_src + +*** Added acronym definitions file attached to the \pdf +:PROPERTIES: +:CUSTOM_ID: ImplementationMiscellanousAddedbibliographicressourcesattachedtothe\pdf-l4e34ja00pj0 +:END: + +We hack the ~\ac~ and ~\acs~ commands in order to attach the acronym definitions +file to the \pdf{}. + +#+begin_src latex + \bool_if:NT \g__letgut_included_files_attached_bool { + \tl_const:Nn \c__letgut_acronyms_file_attached_tl { + \attachfile[ + description={ + Source~ du~ fichier~ d'acronymes~ utilisé~ dans~ + le~ présent~ article~ + (fichier~ `\c__letgut_acronyms_file_tl.tex`) + }, + mimetype=application/x-tex]% + {\g__letgut_effective_acronyms_file_tl}% + } + \AddToHook{cmd/ac/before}{ + \bool_gset_true:N \g__letgut_acronyms_file_attached_bool + } + \AddToHook{cmd/acs/before}{ + \bool_gset_true:N \g__letgut_acronyms_file_attached_bool + } + } +#+end_src + +*** Added letgut listings language file attached to the \pdf +:PROPERTIES: +:CUSTOM_ID: ImplementationMiscellanousAddedbibliographicressourcesattachedtothe\pdf-l4e34ja00pj0 +:END: + +We hack the ~\ac~ and ~\acs~ commands in order to attach the acronym definitions +file to the \pdf{}. + +#+begin_src latex + \bool_if:NT \g__letgut_included_files_attached_bool { + \tl_const:Nn \c__letgut_lstlanguage_file_attached_tl { + \attachfile[ + description={ + Source~ du~ fichier~ de~ langages~ informatiques~ utilisé~ + dans~ le~ présent~ article~ + (fichier~ `\c__letgut_lstlanguage_file_tl`) + }, + mimetype=application/x-tex]% + {../\c__letgut_lstlanguage_file_tl}% + } + \AddToHook{env/ltx-code/before}{ + \bool_gset_true:N \g__letgut_lstlanguage_file_attached_bool + } + \AddToHook{env/ltx-code-result/before}{ + \bool_gset_true:N \g__letgut_lstlanguage_file_attached_bool + } + \AddToHook{env/ltx-code-external-result/before}{ + \bool_gset_true:N \g__letgut_lstlanguage_file_attached_bool + } + } +#+end_src + +#+begin_src latex + \AddToHook{begindocument/before}{ + \bool_if:NTF \g__letgut_force_included_files_attached_bool { + \bool_gset_true:N \g__letgut_included_files_attached_bool + }{ + \bool_gset_false:N \g__letgut_included_files_attached_bool + } + } +#+end_src + ** Listings :PROPERTIES: :CUSTOM_ID: ImplementationListings-514h55h0jlj0 @@ -3244,10 +3762,10 @@ same for the above skip. #+end_src We define as short equivalent of ~\lstinline~ the character -\lstDeleteShortInline⅛\texttt{⅛} which is unlikely to be used in ordinary text. +\lstDeleteShortInline™\texttt{™} which is unlikely to be used in ordinary text. #+begin_src latex -\lstMakeShortInline[breaklines=false]⅛ +\lstMakeShortInline[breaklines=false]™ #+end_src We start with an empty listings style. @@ -3256,27 +3774,6 @@ We start with an empty listings style. \lstset{ style=__letgut_reset_listings_styles } #+end_src -We create our own ~\input~ command for the articles of the Lettre with the -following characteristics: - -- The previous style is applied automatically. Hence, the keywords defined in - a previous file (by loading some peticular (La)TeX dialects, i.e. control - sequences and keywords specific to some class or packages) won't interfere - with the ones of the current file. -- All the acronyms are reset (each acronym is developped at its first occurrence). - -#+begin_src latex - \cs_new_protected:Npn \__letgut_input_article:n #1 - { - \lstset{ style=__letgut_reset_listings_styles } - \acresetall% - \file_input:n{#1}% - } - \NewDocumentCommand{\inputarticle}{m}{ - \__letgut_input_article:n { #1 } - } -#+end_src - *** LaTeX listings and examples :PROPERTIES: :CUSTOM_ID: ImplementationListingsLaTeXlistingsandexamples-xt4h55h0jlj0 @@ -3303,13 +3800,13 @@ in the current directory, secondly in the parent directory, thirdly in the TDS. #+begin_src latex \def\lstlanguagefiles{ - lstlang0.sty, + % lstlang0.sty, lstlang1.sty, lstlang2.sty, lstlang3.sty, ./\c__letgut_lstlanguage_file_tl, ../\c__letgut_lstlanguage_file_tl, - \c__letgut_lstlanguage_file_tl + \c__letgut_lstlanguage_file_tl, } #+end_src @@ -3323,7 +3820,7 @@ We define a listing style specific to LaTeX listings. alsolanguage=[plain]TeX,% alsolanguage=[common]TeX,% alsolanguage=[primitive]TeX,% - alsolanguage=[extLaTeX]TeX,% + alsolanguage=[extendedLaTeX]TeX,% alsolanguage=[classes]TeX,% texcsstyle=*\color{__letgut_texcs}, commentstyle=\color{__letgut_comment}\itshape, @@ -3341,7 +3838,7 @@ order 1. This would force us to do the same in our own language driver file but would ruin our effort to stylize in a special way (in red) other keywords (see ~otherkeywords={...}~) that are stylized as keywords of order 1. Hence, we delete these keywords of order 1 and will add them as keywords of order 2 like -all the environments in our own language driver file (in the ~extLaTeX~ dialect +all the environments in our own language driver file (in the ~extendedLaTeX~ dialect that we load by default). #+begin_src latex @@ -3375,7 +3872,7 @@ For the listings and examples, we rely on \package*{tcolorbox}, and more specifically on some of its libraries. #+begin_src latex - \tcbuselibrary{listings,xparse,breakable,skins,hooks} + \tcbuselibrary{listings,breakable,skins,hooks,documentation} #+end_src We want some common settings for all the ~tcolorbox~es. @@ -3964,6 +4461,7 @@ https://tex.stackexchange.com/a/25396). ^^f0^^f1^^f2^^f3^^f4^^f5^^f6^^f7^^f8^^f9^^fa^^fb^^fc^^fd^^fe^^ff% ^^^^201c^^^^201d% for “ and ” ^^^^215b% for ⅛ + ^^^^2122% for ™ ^^00% } \lst@RestoreCatcodes @@ -3987,7 +4485,7 @@ at its beginning. \file_if_exist:nT {./\c__letgut_local_config_file_tl}{ \@pushfilename \xdef\@currname{\c__letgut_local_config_file_tl} - \file_input:n {./\c__letgut_local_config_file_tl} + \input {./\c__letgut_local_config_file_tl} \@popfilename } #+end_src @@ -4014,7 +4512,7 @@ several purposes: - the books advertisements. #+begin_src latex :tangle ../../../tex/lualatex/letgut/letgut.lbx :exports both -\ProvidesFile{letgut.lbx}[2022-10-03 v0.9.4 letgut localization] +\ProvidesFile{letgut.lbx}[2023-01-13 v0.9.5 letgut localization] \InheritBibliographyExtras{french} \DeclareBibliographyStrings{ inherit = {french}, @@ -4028,7 +4526,7 @@ several purposes: create the corresponding new entry). #+begin_src latex :tangle ../../../tex/lualatex/letgut/letgut.dbx :exports both - \ProvidesFile{letgut.dbx}[2022-10-03 v0.9.4 letgut data model macros] + \ProvidesFile{letgut.dbx}[2023-01-13 v0.9.5 letgut data model macros] \DeclareBibliographyDriver{bookreview}{% \usebibmacro{bibindex}% \usebibmacro{begentry}% @@ -4083,7 +4581,7 @@ several purposes: We provide a specific ~biblatex~ citation style . #+begin_src latex :tangle ../../../tex/lualatex/letgut/letgut.cbx :exports both - \ProvidesFile{letgut.cbx}[2022-10-03 v0.9.4 letgut base citation style] + \ProvidesFile{letgut.cbx}[2023-01-13 v0.9.5 letgut base citation style] \RequireCitationStyle{numeric} #+end_src @@ -4248,7 +4746,7 @@ well... \hspace*{-1.5cm}% \raisebox{-\height+0.7\baselineskip}{% \begin{minipage}[t]{.6\textwidth}%\vspace{0pt}% - \includegraphics[width=\linewidth]{logo-gut.pdf} + \includegraphics*[width=\linewidth]{logo-gut.pdf} \end{minipage}% }% \hfill% @@ -4701,7 +5199,7 @@ well... :END: #+begin_src latex :tangle ../../../tex/lualatex/letgut/letgut-lstlang.sty :exports both - % \lst@definelanguage[...]{TeX}{% + % \lst@definelanguage[...]{TeX}{% % % Control sequences names % moretexcs={% % },% @@ -4733,7 +5231,659 @@ well... % % alsodigit={},% % % alsoother={},% % sensitive,% - % }[keywords,tex,comments%] + % }[keywords,tex,comments] + + \lst@definelanguage[Scrabble]{TeX}{% + % Control sequences names + moretexcs={% + PlateauScrabble,ScrabblePlaceMot,% + ScrabbleBoard,ScrabblePutWord,% + },% + % Keywords of class 1 : keywords that contain other characters + % (since of the same class as the ones specified as 'otherkeywords') + morekeywords={% + },% + % Keywords of class 2 : environments names + morekeywords=[2]{% + EnvScrabble,% + },% + % Keywords of class 3 : mandatory arguments (not environments) & + % optional arguments which are keys (in key=value) + morekeywords=[3]{% + FR,EN,DE,ES,GR,SP,% + Echelle,Echellelabels,Cadre,Labels,Aide,% + Scale,ScaleLabels,Border,Help,% + },% + % Keywords of class 4 : values of keys (in key=value) + morekeywords=[4]{% + },% + % Keywords of class 5 : arguments specifications (after ":" in expl3 + % syntax) + morekeywords=[5]{% + },% + % Keywords of class 6 : current package name (and possibly derived + % packages) + morekeywords=[6]{% + Scrabble% + },% + % otherkeywords={}, + % alsoletter={}, + % alsodigit={},% + % alsoother={},% + sensitive,% + }[keywords,tex,comments] + + \lst@definelanguage[FiraSans]{TeX}{% + % Control sequences names + moretexcs={% + sufigures,firaoldstyle,firalining,firatabular,firaproportional, + firathin,firalight,firaextralight,firaultralight,firamedium,firabook, + firasemibold,firaextrabold,firaheavy,% + }% + % Keywords of class 1 : keywords that contain other characters + % (since of the same class as the ones specified as 'otherkeywords') + morekeywords={% + },% + % Keywords of class 2 : environments names + morekeywords=[2]{% + },% + % Keywords of class 3 : mandatory arguments (not environments) & + % optional arguments which are keys (in key=value) + morekeywords=[3]{% + sfdefault,scaled,scale,type1,lining,lf,oldstyle,osf,tabular,t,proportional,% + p,book,medium,mb,semibold,sb,light,l,extralight,ultralight,thin,% + extrabold,heavy,default,% + },% + % Keywords of class 4 : values of keys (in key=value) + morekeywords=[4]{% + },% + % Keywords of class 5 : arguments specifications (after ":" in expl3 + % syntax) + morekeywords=[5]{% + },% + % Keywords of class 6 : current package name (and possibly derived + % packages) + morekeywords=[6]{% + FiraSans% + },% + % otherkeywords={}, + alsoletter={1}, + % alsodigit={},% + % alsoother={},% + sensitive,% + }[keywords,tex,comments] + + \lst@definelanguage[luagcd]{TeX}{% + % Control sequences names + moretexcs={% + luagcdwithsteps,% + },% + % Keywords of class 1 : keywords that contain other characters + % (since of the same class as the ones specified as 'otherkeywords') + morekeywords={% + },% + % Keywords of class 2 : environments names + morekeywords=[2]{% + },% + % Keywords of class 3 : mandatory arguments (not environments) & + % optional arguments which are keys (in key=value) + morekeywords=[3]{% + },% + % Keywords of class 4 : values of keys (in key=value) + morekeywords=[4]{% + },% + % Keywords of class 5 : arguments specifications (after ":" in expl3 + % syntax) + morekeywords=[5]{% + },% + % Keywords of class 6 : current package name (and possibly derived + % packages) + morekeywords=[6]{% + luagcd% + },% + % otherkeywords={}, + % alsoletter={}, + % alsodigit={},% + % alsoother={},% + sensitive,% + }[keywords,tex,comments] + + \lst@definelanguage[maze]{TeX}{% + % Control sequences names + moretexcs={% + maze,% + },% + % Keywords of class 1 : keywords that contain other characters + % (since of the same class as the ones specified as 'otherkeywords') + morekeywords={% + },% + % Keywords of class 2 : environments names + morekeywords=[2]{% + },% + % Keywords of class 3 : mandatory arguments (not environments) & + % optional arguments which are keys (in key=value) + morekeywords=[3]{% + },% + % Keywords of class 4 : values of keys (in key=value) + morekeywords=[4]{% + },% + % Keywords of class 5 : arguments specifications (after ":" in expl3 + % syntax) + morekeywords=[5]{% + },% + % Keywords of class 6 : current package name (and possibly derived + % packages) + morekeywords=[6]{% + maze% + },% + % otherkeywords={}, + % alsoletter={}, + % alsodigit={},% + % alsoother={},% + sensitive,% + }[keywords,tex,comments] + + \lst@definelanguage[animate]{TeX}{% + % Control sequences names + moretexcs={% + multiframe,% + },% + % Keywords of class 1 : keywords that contain other characters + % (since of the same class as the ones specified as 'otherkeywords') + morekeywords={% + },% + % Keywords of class 2 : environments names + morekeywords=[2]{% + animateinline, + },% + % Keywords of class 3 : mandatory arguments (not environments) & + % optional arguments which are keys (in key=value) + morekeywords=[3]{% + poster,controls,palindrome,bb,rx,% + },% + % Keywords of class 4 : values of keys (in key=value) + morekeywords=[4]{% + first,% + },% + % Keywords of class 5 : arguments specifications (after ":" in expl3 + % syntax) + morekeywords=[5]{% + },% + % Keywords of class 6 : current package name (and possibly derived + % packages) + morekeywords=[6]{% + animate% + },% + % otherkeywords={}, + % alsoletter={}, + % alsodigit={},% + % alsoother={},% + sensitive,% + }[keywords,tex,comments] + + \lst@definelanguage[tikz-mirror-lens]{TeX}{% + % Control sequences names + moretexcs={% + lensSphGaussFixed,% + },% + % Keywords of class 1 : keywords that contain other characters + % (since of the same class as the ones specified as 'otherkeywords') + morekeywords={% + },% + % Keywords of class 2 : environments names + morekeywords=[2]{% + },% + % Keywords of class 3 : mandatory arguments (not environments) & + % optional arguments which are keys (in key=value) + morekeywords=[3]{% + },% + % Keywords of class 4 : values of keys (in key=value) + morekeywords=[4]{% + },% + % Keywords of class 5 : arguments specifications (after ":" in expl3 + % syntax) + morekeywords=[5]{% + },% + % Keywords of class 6 : current package name (and possibly derived + % packages) + morekeywords=[6]{% + tikz-mirror-lens% + },% + % otherkeywords={}, + alsoletter={-}, + % alsodigit={},% + % alsoother={},% + sensitive,% + }[keywords,tex,comments] + + \lst@definelanguage[jeuxcartes]{TeX}{% + % Control sequences names + moretexcs={% + MainCartesJeu,% + },% + % Keywords of class 1 : keywords that contain other characters + % (since of the same class as the ones specified as 'otherkeywords') + morekeywords={% + },% + % Keywords of class 2 : environments names + morekeywords=[2]{% + },% + % Keywords of class 3 : mandatory arguments (not environments) & + % optional arguments which are keys (in key=value) + morekeywords=[3]{% + Eventail,10C,10K,AC,AT,AP,% + },% + % Keywords of class 4 : values of keys (in key=value) + morekeywords=[4]{% + },% + % Keywords of class 5 : arguments specifications (after ":" in expl3 + % syntax) + morekeywords=[5]{% + },% + % Keywords of class 6 : current package name (and possibly derived + % packages) + morekeywords=[6]{% + jeuxcartes% + },% + % otherkeywords={}, + alsoletter={0123456789}, + % alsodigit={},% + % alsoother={},% + sensitive,% + }[keywords,tex,comments] + + \lst@definelanguage[plex-otf]{TeX}{% + % Control sequences names + moretexcs={% + },% + % Keywords of class 1 : keywords that contain other characters + % (since of the same class as the ones specified as 'otherkeywords') + morekeywords={% + },% + % Keywords of class 2 : environments names + morekeywords=[2]{% + },% + % Keywords of class 3 : mandatory arguments (not environments) & + % optional arguments which are keys (in key=value) + morekeywords=[3]{% + RM + },% + % Keywords of class 4 : values of keys (in key=value) + morekeywords=[4]{% + },% + % Keywords of class 5 : arguments specifications (after ":" in expl3 + % syntax) + morekeywords=[5]{% + },% + % Keywords of class 6 : current package name (and possibly derived + % packages) + morekeywords=[6]{% + plex-otf% + },% + % otherkeywords={}, + % alsoletter={}, + % alsodigit={},% + % alsoother={},% + sensitive,% + }[keywords,tex,comments] + + \lst@definelanguage[mathtools]{TeX}{% + % Control sequences names + moretexcs={% + mathclap,DeclarePairedDelimiter,% + },% + % Keywords of class 1 : keywords that contain other characters + % (since of the same class as the ones specified as 'otherkeywords') + morekeywords={% + },% + % Keywords of class 2 : environments names + morekeywords=[2]{% + },% + % Keywords of class 3 : mandatory arguments (not environments) & + % optional arguments which are keys (in key=value) + morekeywords=[3]{% + },% + % Keywords of class 4 : values of keys (in key=value) + morekeywords=[4]{% + },% + % Keywords of class 5 : arguments specifications (after ":" in expl3 + % syntax) + morekeywords=[5]{% + },% + % Keywords of class 6 : current package name (and possibly derived + % packages) + morekeywords=[6]{% + % + },% + % otherkeywords={}, + % alsoletter={}, + % alsodigit={},% + % alsoother={},% + sensitive,% + }[keywords,tex,comments] + + \lst@definelanguage[tikz-ext]{TeX}{% + % Control sequences names + moretexcs={% + },% + % Keywords of class 1 : keywords that contain other characters + % (since of the same class as the ones specified as 'otherkeywords') + morekeywords={% + },% + % Keywords of class 2 : environments names + morekeywords=[2]{% + },% + % Keywords of class 3 : mandatory arguments (not environments) & + % optional arguments which are keys (in key=value) + morekeywords=[3]{% + distancebetween,% + },% + % Keywords of class 4 : values of keys (in key=value) + morekeywords=[4]{% + },% + % Keywords of class 5 : arguments specifications (after ":" in expl3 + % syntax) + morekeywords=[5]{% + },% + % Keywords of class 6 : current package name (and possibly derived + % packages) + morekeywords=[6]{% + tikz-ext% + },% + % otherkeywords={}, + % alsoletter={}, + % alsodigit={},% + % alsoother={},% + sensitive,% + }[keywords,tex,comments] + + \lst@definelanguage[tikzfill]{TeX}{% + % Control sequences names + moretexcs={% + },% + % Keywords of class 1 : keywords that contain other characters + % (since of the same class as the ones specified as 'otherkeywords') + morekeywords={% + },% + % Keywords of class 2 : environments names + morekeywords=[2]{% + },% + % Keywords of class 3 : mandatory arguments (not environments) & + % optional arguments which are keys (in key=value) + morekeywords=[3]{% + pattern,hexagon,cycle,color, + },% + % Keywords of class 4 : values of keys (in key=value) + morekeywords=[4]{% + },% + % Keywords of class 5 : arguments specifications (after ":" in expl3 + % syntax) + morekeywords=[5]{% + },% + % Keywords of class 6 : current package name (and possibly derived + % packages) + morekeywords=[6]{% + tikzfill + },% + % otherkeywords={}, + % alsoletter={}, + % alsodigit={},% + % alsoother={},% + sensitive,% + }[keywords,tex,comments] + + \lst@definelanguage[unicodemath]{TeX}{% + % Control sequences names + moretexcs={% + symscr,symbb,symfrak,symsfup,symsfit,symtt,setmathfont,% + },% + % Keywords of class 1 : keywords that contain other characters + % (since of the same class as the ones specified as 'otherkeywords') + morekeywords={% + },% + % Keywords of class 2 : environments names + morekeywords=[2]{% + },% + % Keywords of class 3 : mandatory arguments (not environments) & + % optional arguments which are keys (in key=value) + morekeywords=[3]{% + range,mathrm,% + },% + % Keywords of class 4 : values of keys (in key=value) + morekeywords=[4]{% + up,it,bb,bbit,scr,cal,bfcal,frak,tt,sfup ,sfit,bfup,bfit,bfscr,bffrak,% + bfsfup,bfsfit,sym,% + },% + % Keywords of class 5 : arguments specifications (after ":" in expl3 + % syntax) + morekeywords=[5]{% + },% + % Keywords of class 6 : current package name (and possibly derived + % packages) + morekeywords=[6]{% + unicode-math + },% + % otherkeywords={}, + alsoletter={-}, + % alsodigit={},% + % alsoother={},% + sensitive,% + }[keywords,tex,comments] + + \lst@definelanguage[xcharter-otf]{TeX}{% + % Control sequences names + moretexcs={% + Bbbone,Bbbk,% + },% + % Keywords of class 1 : keywords that contain other characters + % (since of the same class as the ones specified as 'otherkeywords') + morekeywords={% + },% + % Keywords of class 2 : environments names + morekeywords=[2]{% + },% + % Keywords of class 3 : mandatory arguments (not environments) & + % optional arguments which are keys (in key=value) + morekeywords=[3]{% + range + },% + % Keywords of class 4 : values of keys (in key=value) + morekeywords=[4]{% + },% + % Keywords of class 5 : arguments specifications (after ":" in expl3 + % syntax) + morekeywords=[5]{% + },% + % Keywords of class 6 : current package name (and possibly derived + % packages) + morekeywords=[6]{% + xcharter-otf + },% + % otherkeywords={}, + alsoletter={-}, + % alsodigit={},% + % alsoother={},% + sensitive,% + }[keywords,tex,comments] + + \lst@definelanguage[braille]{TeX}{% + % Control sequences names + moretexcs={% + braille + },% + % Keywords of class 1 : keywords that contain other characters + % (since of the same class as the ones specified as 'otherkeywords') + morekeywords={% + },% + % Keywords of class 2 : environments names + morekeywords=[2]{% + },% + % Keywords of class 3 : mandatory arguments (not environments) & + % optional arguments which are keys (in key=value) + morekeywords=[3]{% + },% + % Keywords of class 4 : values of keys (in key=value) + morekeywords=[4]{% + },% + % Keywords of class 5 : arguments specifications (after ":" in expl3 + % syntax) + morekeywords=[5]{% + },% + % Keywords of class 6 : current package name (and possibly derived + % packages) + morekeywords=[6]{% + % + },% + % otherkeywords={}, + % alsoletter={}, + % alsodigit={},% + % alsoother={},% + sensitive,% + }[keywords,tex,comments] + + \lst@definelanguage[swungdash]{TeX}{% + % Control sequences names + moretexcs={% + swungdash + },% + % Keywords of class 1 : keywords that contain other characters + % (since of the same class as the ones specified as 'otherkeywords') + morekeywords={% + },% + % Keywords of class 2 : environments names + morekeywords=[2]{% + },% + % Keywords of class 3 : mandatory arguments (not environments) & + % optional arguments which are keys (in key=value) + morekeywords=[3]{% + },% + % Keywords of class 4 : values of keys (in key=value) + morekeywords=[4]{% + },% + % Keywords of class 5 : arguments specifications (after ":" in expl3 + % syntax) + morekeywords=[5]{% + },% + % Keywords of class 6 : current package name (and possibly derived + % packages) + morekeywords=[6]{% + % + },% + % otherkeywords={}, + % alsoletter={}, + % alsodigit={},% + % alsoother={},% + sensitive,% + }[keywords,tex,comments] + + + \lst@definelanguage[simples-matrices]{TeX}{% + % Control sequences names + moretexcs={% + matrice + },% + % Keywords of class 1 : keywords that contain other characters + % (since of the same class as the ones specified as 'otherkeywords') + morekeywords={% + },% + % Keywords of class 2 : environments names + morekeywords=[2]{% + },% + % Keywords of class 3 : mandatory arguments (not environments) & + % optional arguments which are keys (in key=value) + morekeywords=[3]{% + b,% + },% + % Keywords of class 4 : values of keys (in key=value) + morekeywords=[4]{% + },% + % Keywords of class 5 : arguments specifications (after ":" in expl3 + % syntax) + morekeywords=[5]{% + },% + % Keywords of class 6 : current package name (and possibly derived + % packages) + morekeywords=[6]{% + % + },% + % otherkeywords={}, + % alsoletter={}, + % alsodigit={},% + % alsoother={},% + sensitive,% + }[keywords,tex,comments] + + \lst@definelanguage[customdice]{TeX}{% + % Control sequences names + moretexcs={% + dice + },% + % Keywords of class 1 : keywords that contain other characters + % (since of the same class as the ones specified as 'otherkeywords') + morekeywords={% + },% + % Keywords of class 2 : environments names + morekeywords=[2]{% + },% + % Keywords of class 3 : mandatory arguments (not environments) & + % optional arguments which are keys (in key=value) + morekeywords=[3]{% + violet,yellow + },% + % Keywords of class 4 : values of keys (in key=value) + morekeywords=[4]{% + },% + % Keywords of class 5 : arguments specifications (after ":" in expl3 + % syntax) + morekeywords=[5]{% + },% + % Keywords of class 6 : current package name (and possibly derived + % packages) + morekeywords=[6]{% + % + },% + % otherkeywords={}, + % alsoletter={}, + % alsodigit={},% + % alsoother={},% + sensitive,% + }[keywords,tex,comments] + + \lst@definelanguage[pingu]{TeX}{% + % Control sequences names + moretexcs={% + pingu + },% + % Keywords of class 1 : keywords that contain other characters + % (since of the same class as the ones specified as 'otherkeywords') + morekeywords={% + },% + % Keywords of class 2 : environments names + morekeywords=[2]{% + },% + % Keywords of class 3 : mandatory arguments (not environments) & + % optional arguments which are keys (in key=value) + morekeywords=[3]{% + left,wing,wave,right,grab,eyes,shiny,cup,% + },% + % Keywords of class 4 : values of keys (in key=value) + morekeywords=[4]{% + },% + % Keywords of class 5 : arguments specifications (after ":" in expl3 + % syntax) + morekeywords=[5]{% + },% + % Keywords of class 6 : current package name (and possibly derived + % packages) + morekeywords=[6]{% + % + },% + % otherkeywords={}, + % alsoletter={}, + % alsodigit={},% + % alsoother={},% + sensitive,% + }[keywords,tex,comments]% \lst@definelanguage[letgut]{TeX}{% % Control sequences names @@ -4742,7 +5892,8 @@ well... package,package*,class,class*,software,software*,file,file*,% foreignloc,latinloc,gutenberg,gut,lettre,lettregut,Cahier,% Cahiers,letgut,letgutcls,knuth,lamport,tugboat,item*,letgutacro,% - separator,alertbox,terminal,inputarticle,lettrenumber,% + separator,alertbox,terminal,inputarticle,lettrenumber,solution,% + rebussolution,% },% % Keywords of class 1 : keywords that contain other characters (since % of the same class as the ones specified as 'otherkeywords') @@ -4751,7 +5902,7 @@ well... % Keywords of class 2 : environments names morekeywords=[2]{% ctannews,ltx-code,ltx-code-result,ltx-code-external-result,% - bookreview,% + bookreview,announcement,rebus,% },% % Keywords of class 3 : mandatory arguments (not environments) & % optional arguments which are keys (in key=value) @@ -4759,7 +5910,7 @@ well... for-authors,for-readers,draft,final,screen,paper,number,date,% pagecolor,allcolorslinks,membership-reminder,editorial,informations,% title,addon,result width,reference,text,title,reviewer,bibkey,% - frontcover,price,result,and,% + frontcover,price,result,and,no,solution,% },% % Keywords of class 4 : values of keys (in key=value) morekeywords=[4]{% @@ -4784,7 +5935,7 @@ well... %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % LaTeX texcs and keywords that are missing in `listings` driver file %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \lst@definelanguage[extLaTeX]{TeX}{% + \lst@definelanguage[extendedLaTeX]{TeX}{% % Control sequences names moretexcs={% Huge,LARGE,Large,LoadClass,NewCommandCopy,RequirePackage,% @@ -5343,7 +6494,7 @@ well... % syntax) morekeywords=[5]{% D,N,Nn,NF,NN,Nx,NT,NTF,NNn,NnV,Nnn,Npn,Nnnn,V,c,e,en,f,n,nF,% - nn,nT,nnn,nnF,nnV,nTF,nnnn,nNnF,nNnT,nnVV,o,p,v,w,x,% + nn,nT,nnn,nnF,nnV,nTF,nnnn,nNnF,nNnT,nnVV,o,p,v,w,x,nnTF,% },% % Keywords of class 6 : current package name (and possibly derived % packages) @@ -6006,7 +7157,8 @@ well... \lst@definelanguage[tikz]{TeX}{% % Control sequences names moretexcs={% - usetikzlibrary,draw,node,matrix,fill,foreach,tikz,% + usetikzlibrary,draw,node,matrix,fill,foreach,tikz,pgfmathsetmacro,% + path,% },% % Keywords of class 1 : keywords that contain other characters (since % of the same class as the ones specified as 'otherkeywords') @@ -6020,12 +7172,13 @@ well... % optional arguments which are keys (in key=value) morekeywords=[3]{% pic,rotate,xshift,yshift,every node,inner sep,blend mode,fill,% - fit,circle,anchor,in,count,x,y,matrix,of,math,nodes,above - right,at,--,-|,|-,% + fit,circle,anchor,in,count,x,y,matrix,of,math,nodes,above right,% + at,--,-|,|-,thick,size,angle,circle,through,intersection,of,% + draw,coordinate,shift,and,cycle,cs:A,node,barycentric,% },% % Keywords of class 4 : values of keys (in key=value) morekeywords=[4]{% - multiply,lightgray,base,% + multiply,lightgray,base,red% },% % Keywords of class 5 : arguments specifications (after ":" in expl3 % syntax) @@ -6037,7 +7190,7 @@ well... tikz,% },% % otherkeywords={},% - alsoletter={-| \ },% + alsoletter={-| \ :},% % alsodigit={},% % alsoother={},% sensitive,% @@ -6197,6 +7350,7 @@ well... % optional arguments which are keys (in key=value) morekeywords=[3]{% log-declarations,% + m,r,R,v,b,o,d,O,D,s,t,e,E,% },% % Keywords of class 4 : values of keys (in key=value) morekeywords=[4]{% @@ -6672,7 +7826,7 @@ well... morekeywords=[3]{% Alternate,Annotation,AutoFakeBold,AutoFakeSlant,BoldFeatures,% BoldFont,BoldItalicFeatures,BoldItalicFont,BoldSlantedFeatures,% - BoldSlantedFont,BoldSwashFeatures,BoldSwashFont,CJKShape,% + BoldSlantedFont,BoldSwashFeatures,BoldSwashFont,CJKShape,ItalicFeatures,% CharacterVariant,CharacterWidth,Color,Colour,Contextuals,% Diacritics,Extension,FakeBold,FakeSlant,FakeStretch,Font,FontFace,% Fractions,HyphenChar,IgnoreFontspecFileItalicFeatures,ItalicFont,% @@ -6701,7 +7855,7 @@ well... TeX,Thurd,Titling,Traditional,Unicase,Uppercase,UppercaseOff,% UppercasePetiteCaps,UppercaseSmallCaps,VerticalKana,WordFinal,% WordInitial,ResetAll,c2sc,scmp,sinf,sups,zero,ss06,ss01,% - ss04,-liga,frac,titl,swsh,hist,hlig% + ss04,-liga,frac,titl,swsh,hist,hlig,MatchUppercase,MatchLowercase,% },% % Keywords of class 5 : arguments specifications (after ":" in expl3 % syntax) |