diff options
17 files changed, 4032 insertions, 566 deletions
diff --git a/Master/texmf-dist/doc/lualatex/letgut/CHANGELOG.md b/Master/texmf-dist/doc/lualatex/letgut/CHANGELOG.md index 199e34455b4..54a69778da2 100644 --- a/Master/texmf-dist/doc/lualatex/letgut/CHANGELOG.md +++ b/Master/texmf-dist/doc/lualatex/letgut/CHANGELOG.md @@ -7,12 +7,35 @@ Versioning](https://semver.org/spec/v2.0.0.html). ## [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. @@ -20,7 +43,8 @@ Versioning](https://semver.org/spec/v2.0.0.html). ## [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 diff --git a/Master/texmf-dist/doc/lualatex/letgut/README.md b/Master/texmf-dist/doc/lualatex/letgut/README.md index e38b789e5e2..3dfeea53e4f 100644 --- a/Master/texmf-dist/doc/lualatex/letgut/README.md +++ b/Master/texmf-dist/doc/lualatex/letgut/README.md @@ -8,7 +8,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 ----------- diff --git a/Master/texmf-dist/doc/lualatex/letgut/letgut-banner-code.pdf b/Master/texmf-dist/doc/lualatex/letgut/letgut-banner-code.pdf Binary files differindex b232420d44a..b1e257cba57 100644 --- a/Master/texmf-dist/doc/lualatex/letgut/letgut-banner-code.pdf +++ b/Master/texmf-dist/doc/lualatex/letgut/letgut-banner-code.pdf diff --git a/Master/texmf-dist/doc/lualatex/letgut/letgut-banner-code.tex b/Master/texmf-dist/doc/lualatex/letgut/letgut-banner-code.tex index 7f9347fdcf7..fc62cee6f18 100644 --- a/Master/texmf-dist/doc/lualatex/letgut/letgut-banner-code.tex +++ b/Master/texmf-dist/doc/lualatex/letgut/letgut-banner-code.tex @@ -1,4 +1,4 @@ -% Created 2022-10-03 lun. 22:57 +% Created 2023-01-13 ven. 22:57 % Intended LaTeX compiler: lualatex \documentclass{letgut} \setmainfont{KpRoman} diff --git a/Master/texmf-dist/doc/lualatex/letgut/letgut-code.pdf b/Master/texmf-dist/doc/lualatex/letgut/letgut-code.pdf Binary files differindex 1e8e46f2410..996190401b2 100644 --- a/Master/texmf-dist/doc/lualatex/letgut/letgut-code.pdf +++ b/Master/texmf-dist/doc/lualatex/letgut/letgut-code.pdf diff --git a/Master/texmf-dist/doc/lualatex/letgut/letgut-code.tex b/Master/texmf-dist/doc/lualatex/letgut/letgut-code.tex index 11832131e89..dc5bad146e9 100644 --- a/Master/texmf-dist/doc/lualatex/letgut/letgut-code.tex +++ b/Master/texmf-dist/doc/lualatex/letgut/letgut-code.tex @@ -1,4 +1,4 @@ -% Created 2022-10-03 lun. 22:57 +% Created 2023-01-13 ven. 22:57 % Intended LaTeX compiler: lualatex \documentclass{letgut} \setmainfont{KpRoman} @@ -29,7 +29,7 @@ % | 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 @@ -69,7 +69,11 @@ We define some constant token lists immediately useful. \begin{lstlisting} \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 } @@ -86,8 +90,8 @@ Now, we can announce the class name and its version: \begin{lstlisting} \ProvidesExplClass{letgut} -{2022-10-03} -{0.9.4} +{2023-01-13} +{0.9.5} { Class for the newsletter “The GUTenberg Letter” } @@ -181,6 +185,18 @@ Some messages are declared for future use. \begin{lstlisting} \bool_new:N \g__letgut_draft_bool \end{lstlisting} +\item For the included files to (not) be attached. +\begin{lstlisting} +\bool_new:N \g__letgut_included_files_attached_bool +\end{lstlisting} +\item For the acronym definitions file to (not) be attached. +\begin{lstlisting} +\bool_new:N \g__letgut_acronyms_file_attached_bool +\end{lstlisting} +\item For the listings language file to (not) be attached. +\begin{lstlisting} +\bool_new:N \g__letgut_lstlanguage_file_attached_bool +\end{lstlisting} \end{itemize} \subsubsection{Dimensions} @@ -368,7 +384,6 @@ We close the \lstinline+\AddToHook{begindocument/before}+ argument. } \end{lstlisting} - \subsubsection{Integers} \label{ImplementationDeclarationsIntegers-7pag55h0jlj0} \begin{lstlisting} @@ -478,6 +493,7 @@ We close the \lstinline+\AddToHook{begindocument/before}+ argument. \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{lstlisting} \end{enumerate} @@ -495,6 +511,8 @@ We close the \lstinline+\AddToHook{begindocument/before}+ argument. \label{ImplementationDeclarationsSequences-m2eg55h0jlj0} \begin{lstlisting} \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{lstlisting} \subsection{Class options} @@ -677,10 +695,18 @@ a vertical space instead of (or in addition to) indenting them. \begin{lstlisting} \RequirePackage{titlesec} \end{lstlisting} +\item Driver-independent color extensions. +\begin{lstlisting} +\RequirePackage[table]{xcolor} +\end{lstlisting} \item Several logos and ornaments. \begin{lstlisting} \RequirePackage{fourier-orns} \end{lstlisting} +\item Drawing of Vectorian ornaments. +\begin{lstlisting} +\RequirePackage{pgfornament} +\end{lstlisting} \item Control float placement. \begin{lstlisting} \RequirePackage[section,above]{placeins} @@ -714,18 +740,23 @@ the interesting text be able to select it. \begin{lstlisting} \RequirePackage{siunitx} \end{lstlisting} -\item A collection of logos with bookmark support. -\begin{lstlisting} -\RequirePackage{hologo} -\end{lstlisting} -\item Driver-independent color extensions. +\item Additional \TeX{}-family logos (which loads and extends \package{hologo} which is +collection of logos with bookmark support). \begin{lstlisting} -\RequirePackage[table]{xcolor} +\RequirePackage{bxtexlogo} \end{lstlisting} \item Coloured boxes, for \LaTeX{} examples and theorems, etc. \begin{lstlisting} \RequirePackage{tcolorbox} \end{lstlisting} +\item Compile \TeX{} code stand-alone or as part of a document. +\begin{lstlisting} +\RequirePackage[group=false,subpreambles,sort]{standalone} +\end{lstlisting} +\item Attach arbitrary files to a PDF document. +\begin{lstlisting} +\RequirePackage[icon=Paperclip]{attachfile2} +\end{lstlisting} \item Expandable macros to extract the data from references and allow counter assignments or calculations. \begin{lstlisting} @@ -772,6 +803,10 @@ simple tabulars). \begin{lstlisting} \RequirePackage{acro} \end{lstlisting} +\item Allow URL breaks at any alphanumerical character. +\begin{lstlisting} +\RequirePackage{xurl} +\end{lstlisting} \end{itemize} The following packages have to be the last ones loaded. So we ensure this by @@ -855,6 +890,9 @@ default set to \lstinline+subbibliography+. \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{lstlisting} For printing the bibliography, we define two new bibheadings for the @@ -865,39 +903,47 @@ structure levels \lstinline+\title+ and \lstinline+\subtitle+. \defbibheading{subtitle}[\refname]{% \subtitle{#1}} \end{lstlisting} -\item The acronyms will be typset in footnote, with small caps shape. When they are +\item 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{lstlisting} \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{lstlisting} - Moreover, we redefine the private macro \lstinline+\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 \lstinline+acro+ bug (see \url{https://tex.stackexchange.com/q/661966/18401}). + \begin{lstlisting} -\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{lstlisting} + +In case the long form of an acronym is explicited in footnote, we want this +footnot to be ended with a period. +\begin{lstlisting} +\ProvideDocumentCommand \acroendfootnote {} {.} \end{lstlisting} The following settings for packages that have to be the last ones loaded are also done just before the begining of the document. + +\item (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}. \end{itemize} \begin{lstlisting} +\RemoveFromHook{begindocument}[standalone] +\ExpandArgs{nv}\AddToHook{begindocument/before}{l__hook_return_tl} +\end{lstlisting} + +\begin{lstlisting} \AddToHook{begindocument/before}{ \end{lstlisting} @@ -918,16 +964,17 @@ A preset of acronyms is input (if found, firstly in the current directory, secondly in the parent directory, thirdly in the TDS). \begin{lstlisting} \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{lstlisting} \item Depending on some chosen class options, some packages have to be loaded, @@ -1038,7 +1085,10 @@ subparagraphs) detailed or not. \begin{lstlisting} \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 @@ -1051,6 +1101,7 @@ subparagraphs) detailed or not. \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 @@ -1085,6 +1136,7 @@ subparagraphs) detailed or not. , 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{lstlisting} @@ -1227,6 +1279,132 @@ The table of contents is customized: } \end{lstlisting} +\subsection{Announcements} +\label{ImplementationAnnounces-nahckb909pj0} +\begin{lstlisting} +\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{lstlisting} + +\subsection{Rebus} +\label{ImplementationRebus-osw8m3f0cpj0} +\begin{lstlisting} +\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{lstlisting} + \subsection{“Title” and marks} \label{ImplementationTitleandmarks-5ylg55h0jlj0} We redefine \lstinline+\@title+ in order to make it empty. Hence we can later test if @@ -1300,7 +1478,7 @@ Lettre. { \begin{picture}(0,0) \put(-2cm,-25.275cm){ - \includegraphics[scale=0.96]{ + \includegraphics*[scale=0.96]{ \c__letgut_banner_file_tl.pdf } } @@ -1476,15 +1654,13 @@ has a bookmark entry; otherwise, a warning is displayed. \begin{lstlisting} \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{lstlisting} \end{itemize} @@ -1536,12 +1712,15 @@ Membership reminder. \subsection{Last page handling} \label{ImplementationLastpagehandling-jbng55h0jlj0} -The last page is special: it should automatically contain some informations about -\gutenberg. +The last pages are special: they should automatically contain + +some informations about \gutenberg. \begin{lstlisting} \AddToHook{enddocument} { + % \clearpage + % \printacronyms[heading=title,display=used] \end{lstlisting} Conditionally to the fact the \lstinline+informations+ option is not set to \lstinline+false+: if the \file*{informations-gut.tex} which contains the informations about @@ -1552,17 +1731,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 } }{ @@ -1600,9 +1779,33 @@ We want all the sections to be unnumbered. \subsubsection{Format} \label{ImplementationSectionssubsectionsetcFormat-tapg55h0jlj0} +When used in titles, \lstinline+\hologo+ needs to be protected. In order to not bother the +user with this peticularity, we make this the default for it. + +\begin{lstlisting} +% \AddToHook{cmd/hologo/before}{\protect} +\NewCommandCopy{\__letgut_old_hologo}{\hologo} +\RenewDocumentCommand {\hologo} { m }{ + \protect\__letgut_old_hologo { #1 } +} +\end{lstlisting} + +We want the \package{hologo}'s \lstinline+\hologo+ command to have its mandatory argument +not uppercased in the context of \lstinline+\text_uppercase:n+ (as in titles, cf. just +below). + +\begin{lstlisting} +\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{lstlisting} + \begin{itemize} \item We create the new level \lstinline+\title+ for the titles of the articles. They are displayed uppercased. + \begin{lstlisting} \AddToHook{begindocument/before}{% \titleclass{\title}{straight}[\part] @@ -1610,10 +1813,9 @@ displayed uppercased. \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} @@ -1787,7 +1989,7 @@ items are correct. \begin{lstlisting} \NewDocumentCommand {\francophony} { } { \raisebox{-1.5pt}{ - \includegraphics[width=\f@size pt]{ + \includegraphics*[width=\f@size pt]{ letgut-francophony-icon } } @@ -1795,7 +1997,7 @@ items are correct. \end{lstlisting} \end{itemize} -\subsubsection{Persons and authors} +\subsubsection{Persons, authors and list of participants} \label{ImplementationDocumentcommandsPersonsandauthors-h5sg55h0jlj0} For both persons and authors, the argument of: \begin{itemize} @@ -1809,19 +2011,19 @@ a single one, separated by a semicolon. \end{itemize} \begin{lstlisting} -\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{lstlisting} @@ -1870,10 +2072,18 @@ is splitted as a comma separated list. (#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 @@ -1904,6 +2114,39 @@ is splitted as a comma separated list. } \end{lstlisting} +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{lstlisting} +\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{lstlisting} + \subsubsection{Horizontal rule} \label{ImplementationDocumentcommandsHorizontalrule-8vsg55h0jlj0} \begin{lstlisting} @@ -1970,11 +2213,19 @@ We define the font switches dediacted to each of packages and classes } \cs_new_protected:Nn \__letgut_software:nn { +\end{lstlisting} + +We split the software's name at spaces in order to apply the dedicated +font switch (\lstinline+\ttfamily+) to all of it except to the spaces. + +\begin{lstlisting} + \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 @@ -2018,63 +2269,69 @@ frequently used. The more the users will resort to these commands, the less will be inconsistently typesetted these names and expressions. \begin{lstlisting} - \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{lstlisting} We define the command \lstinline+\lettrenumber+ that displays the number of @@ -2146,7 +2403,7 @@ shifted by what is specified. \tl_if_empty:nF {#1} { #3 - \c_space_tl + \nobreakspace \__letgut_get_lettre_number:n {#1} } } @@ -2593,6 +2850,9 @@ extensions of the \lstinline+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{lstlisting} @@ -2652,7 +2912,7 @@ for usual characters on French keyboards. \item We specify the possible hyphenations of \enquote{\gutenberg}. \end{itemize} \begin{lstlisting} -\hyphenation{GUT-enberg} +\hyphenation{GUTen-berg} \end{lstlisting} \subsubsection{ISSN} @@ -2709,6 +2969,213 @@ package that provide another definition of this macro may have been loaded } \end{lstlisting} +\subsubsection{Input of articles} +\label{ImplementationMiscellanousInputofarticles-aqok3ja00pj0} +We create our own \lstinline+\input+ command for the articles of the Lettre with the +following characteristics: + +\begin{itemize} +\item 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. +\item All the acronyms are reset (each acronym is developped at its first occurrence). +\item The source file of the article is attached to the \pdf{} (if desired, +otherwise, use the starred version). +\end{itemize} + +\begin{lstlisting} +\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{lstlisting} + +\subsubsection{Included graphics attached to the \pdf} +\label{ImplementationMiscellanousIncludedgraphicsattachedtothe\pdf-xoc34ja00pj0} +We hack the \lstinline+\includegraphics+ command in order to attach the included graphics +to the \pdf{} (if desired, otherwise, use the starred version). + +\begin{lstlisting} +\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{lstlisting} + +\subsubsection{Added bibliographic ressources attached to the \pdf} +\label{ImplementationMiscellanousAddedbibliographicressourcesattachedtothe\pdf-l4e34ja00pj0} +We hack the \lstinline+\addbibresource+ command in order to attach the bibliographic +ressources to the \pdf{} (if desired, otherwise, use the starred version). + +\begin{lstlisting} +\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{lstlisting} + +\subsubsection{Added acronym definitions file attached to the \pdf} +\label{ImplementationMiscellanousAddedbibliographicressourcesattachedtothe\pdf-l4e34ja00pj0} +We hack the \lstinline+\ac+ and \lstinline+\acs+ commands in order to attach the acronym definitions +file to the \pdf{}. + +\begin{lstlisting} +\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{lstlisting} + +\subsubsection{Added letgut listings language file attached to the \pdf} +\label{ImplementationMiscellanousAddedbibliographicressourcesattachedtothe\pdf-l4e34ja00pj0} +We hack the \lstinline+\ac+ and \lstinline+\acs+ commands in order to attach the acronym definitions +file to the \pdf{}. + +\begin{lstlisting} +\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{lstlisting} + +\begin{lstlisting} +\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{lstlisting} + \subsection{Listings} \label{ImplementationListings-514h55h0jlj0} We define a style for all the listings which resets all the \TeX{} control @@ -2758,10 +3225,10 @@ same for the above skip. \end{lstlisting} We define as short equivalent of \lstinline+\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{lstlisting} -\lstMakeShortInline[breaklines=false]⅛ +\lstMakeShortInline[breaklines=false]™ \end{lstlisting} We start with an empty listings style. @@ -2770,29 +3237,6 @@ We start with an empty listings style. \lstset{ style=__letgut_reset_listings_styles } \end{lstlisting} -We create our own \lstinline+\input+ command for the articles of the Lettre with the -following characteristics: - -\begin{itemize} -\item 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. -\item All the acronyms are reset (each acronym is developped at its first occurrence). -\end{itemize} - -\begin{lstlisting} -\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{lstlisting} - \subsubsection{\LaTeX{} listings and examples} \label{ImplementationListingsLaTeXlistingsandexamples-xt4h55h0jlj0} We define the colors for the syntax highlighting of \LaTeX{} listings. @@ -2816,13 +3260,13 @@ in the current directory, secondly in the parent directory, thirdly in the TDS. \begin{lstlisting} \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{lstlisting} @@ -2836,7 +3280,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, @@ -2854,7 +3298,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 \lstinline+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 \lstinline+extLaTeX+ dialect +all the environments in our own language driver file (in the \lstinline+extendedLaTeX+ dialect that we load by default). \begin{lstlisting} @@ -2888,7 +3332,7 @@ For the listings and examples, we rely on \package*{tcolorbox}, and more specifically on some of its libraries. \begin{lstlisting} -\tcbuselibrary{listings,xparse,breakable,skins,hooks} +\tcbuselibrary{listings,breakable,skins,hooks,documentation} \end{lstlisting} We want some common settings for all the \textasciitilde{}tcolorbox\textasciitilde{}es. @@ -3475,6 +3919,7 @@ listings. Here is a workaround for some of them (see ^^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 @@ -3495,7 +3940,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{lstlisting} @@ -3521,7 +3966,7 @@ several purposes: \end{itemize} \begin{lstlisting} -\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}, @@ -3535,7 +3980,7 @@ We create the new bibliography driver \lstinline+bookreview+ (that seems to create the corresponding new entry). \begin{lstlisting} -\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}% @@ -3590,7 +4035,7 @@ create the corresponding new entry). We provide a specific \lstinline+biblatex+ citation style . \begin{lstlisting} -\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{lstlisting} @@ -3743,7 +4188,7 @@ de l'association. Il peut aussi y être question du \ctan. \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% @@ -4190,7 +4635,7 @@ Les règlements peuvent s'effectuer par : \subsection{Language driver file} \label{ProvidedfilesLanguagedriverfile-4cch55h0jlj0} \begin{lstlisting} - % \lst@definelanguage[...]{TeX}{% +% \lst@definelanguage[...]{TeX}{% % % Control sequences names % moretexcs={% % },% @@ -4222,7 +4667,659 @@ Les règlements peuvent s'effectuer par : % % 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 @@ -4231,7 +5328,8 @@ Les règlements peuvent s'effectuer par : 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') @@ -4240,7 +5338,7 @@ Les règlements peuvent s'effectuer par : % 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) @@ -4248,7 +5346,7 @@ Les règlements peuvent s'effectuer par : 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]{% @@ -4273,7 +5371,7 @@ Les règlements peuvent s'effectuer par : %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 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,% @@ -4832,7 +5930,7 @@ Les règlements peuvent s'effectuer par : % 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) @@ -5495,7 +6593,8 @@ Les règlements peuvent s'effectuer par : \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') @@ -5509,12 +6608,13 @@ Les règlements peuvent s'effectuer par : % 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) @@ -5526,7 +6626,7 @@ Les règlements peuvent s'effectuer par : tikz,% },% % otherkeywords={},% - alsoletter={-| \ },% + alsoletter={-| \ :},% % alsodigit={},% % alsoother={},% sensitive,% @@ -5686,6 +6786,7 @@ Les règlements peuvent s'effectuer par : % 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]{% @@ -6161,7 +7262,7 @@ Les règlements peuvent s'effectuer par : 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,% @@ -6190,7 +7291,7 @@ Les règlements peuvent s'effectuer par : 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) diff --git a/Master/texmf-dist/doc/lualatex/letgut/letgut.pdf b/Master/texmf-dist/doc/lualatex/letgut/letgut.pdf Binary files differindex 23f2bf4091c..3ca15bf9ca2 100644 --- a/Master/texmf-dist/doc/lualatex/letgut/letgut.pdf +++ b/Master/texmf-dist/doc/lualatex/letgut/letgut.pdf diff --git a/Master/texmf-dist/doc/lualatex/letgut/letgut.records b/Master/texmf-dist/doc/lualatex/letgut/letgut.records new file mode 100644 index 00000000000..635b87f3043 --- /dev/null +++ b/Master/texmf-dist/doc/lualatex/letgut/letgut.records @@ -0,0 +1 @@ +\rebussolution*[2][][] diff --git a/Master/texmf-dist/doc/lualatex/letgut/letgut.tex b/Master/texmf-dist/doc/lualatex/letgut/letgut.tex index 91006a60ea8..12a3bae3ffd 100644 --- a/Master/texmf-dist/doc/lualatex/letgut/letgut.tex +++ b/Master/texmf-dist/doc/lualatex/letgut/letgut.tex @@ -67,7 +67,7 @@ } \author{Association GUTenberg} \date{% - Version 0.9.4 en date du \today% + Version 0.9.5 en date du \today% \texorpdfstring{% \\ \url{https://framagit.org/gutenberg/letgut}% @@ -205,7 +205,9 @@ Les options de la \letgutcls{} peuvent être spécifiées de deux façons : \item éditorial\footnote{Ou avertissement s'il n'est pas trouvé.} (cf. clé \refKey{editorial}) ; \item informations sur \gut{}\footnote{Ou avertissement si elles ne sont pas - trouvées.} (cf. clé \refKey{informations}). + trouvées.} (cf. clé \refKey{informations}) ; + \item fichiers attachés au \pdf{} produit (cf. clé + \refKey{source-files-attached}). \end{itemize} \end{itemize} \end{docKeys} @@ -280,7 +282,7 @@ Les options de la \letgutcls{} peuvent être spécifiées de deux façons : \begin{itemize} \item n'est pas employée (les mois et année en cours sont alors utilisés) ; - \item est employée sous la forme \refKey*{date}⅛=⅛\meta{année}⅛-⅛\meta{mois} + \item est employée sous la forme \refKey*{date}™=™\meta{année}™-™\meta{mois} où \meta{année} et \meta{mois} doivent être des nombres entiers positifs. Les garde-fous suivants sont mis en place : \begin{itemize} @@ -291,7 +293,7 @@ Les options de la \letgutcls{} peuvent être spécifiées de deux façons : \end{itemize} \end{itemize} \item \enquote{\meta{texte}} si l'option est employée sous la forme - \refKey*{date}⅛=⅛\meta{texte}. + \refKey*{date}™=™\meta{texte}. \end{itemize} \end{docKey} } @@ -344,13 +346,26 @@ Les options de la \letgutcls{} peuvent être spécifiées de deux façons : de la conception d'un numéro de la \lettre{}. \end{docKey} +\begin{docKey}{source-files-attached}{}{\valinitdef[\docValue*{true}][\docValue*{true}]} + En version autre que \enquote{pour auteurs} (cf. \refKey{for-authors}) et en + sortie autre que papier (cf. \refKey{paper}), chacun des fichiers nécessaires + (et suffisants) à la compilation d'un article de la \lettre{} est : + \begin{itemize} + \item attaché au \pdf{} produit ; + \item accessible en cliquant sur l'hyperlien correspondant en forme de + trombone (\noattachfile[icon=Paperclip]) ; + \end{itemize} + La clé booléenne \refKey{source-files-attached} permet de (dés)activer cette + fonctionnalité. +\end{docKey} + \begin{dbremark}{Tables des matières locales}{} Chaque article peut contenir une table des matières locale, affichée au moyen de la commande \docAuxCommand{localtableofcontents} (fournie par le \package*{etoc} chargé en sous-main par la \letgutcls{}). Le niveau de profondeur est par défaut celui des sections mais cela peut être modifié en la faisant précéder de la commande \docAuxCommand{etocsetnexttocdepth} (dont - l'argument est par exemple ⅛subsection⅛). + l'argument est par exemple ™subsection™). \end{dbremark} \subsection{Options autres} @@ -382,7 +397,7 @@ Si la commande \docAuxCommand{title}\marg{titre} est \begin{dbwarning}{\docAuxCommand{title} et \docAuxCommand{author} $\neq$ avant et après \lstinline+\\begin\{document\}+}{} Les commandes \docAuxCommand{title} et \docAuxCommand{author} ne se comportent - pas de la même façon avant et après ⅛\begin{document}⅛ (cf. sections + pas de la même façon avant et après ™\begin{document}™ (cf. sections \nameref{sec:structuration} \vpageref{sec:structuration} et \nameref{sec:sign-des-articl} \vpageref{sec:sign-des-articl}). \end{dbwarning} @@ -404,12 +419,29 @@ Si la commande \docAuxCommand{title}\marg{titre} est \end{itemize} \end{dbwarning} -\begin{docCommand}{inputarticle}{\marg{fichier enfant}} +\begin{docCommands} + { + { + doc name = inputarticle, + doc parameter = \marg{fichier enfant}, + }, + { + doc name = inputarticle*, + doc parameter = \marg{fichier enfant}, + }, + } Cette commande permet d'importer le contenu d'un article stocké dans un \meta{fichier enfant}\file{.tex}. + En version étoilée, les fichiers nécessaires (et suffisants) à la compilation + de l'article ne sont pas attachés au \pdf{} produit (cf. clé + \refKey{source-files-attached}). + En plus de l'importation proprement dite, cette commande procède à un certain nombre de réinitialisations. +\end{docCommands} + +\begin{docCommand}{inputarticle}{\marg{fichier enfant}} \end{docCommand} \section{Structuration} @@ -484,6 +516,10 @@ On lira avec intérêt la section \enquote{\nameref{sec:acronymes}} doc parameter = \brackets{\meta{données$_1$} and \meta{données$_2$}[ and ...]} }, { + doc name = person*, + doc parameter = \brackets{\meta{données$_1$} and \meta{données$_2$}[ and ...]} + }, + { doc name = author, doc parameter = \marg{données} }, @@ -491,6 +527,10 @@ On lira avec intérêt la section \enquote{\nameref{sec:acronymes}} doc name = author, doc parameter = \brackets{\meta{données$_1$} and \meta{données$_2$}[ and ...]} }, + { + doc name = author*, + doc parameter = \brackets{\meta{données$_1$} and \meta{données$_2$}[ and ...]} + }, } \index{auteur} \index{personne} @@ -501,18 +541,20 @@ On lira avec intérêt la section \enquote{\nameref{sec:acronymes}} étant spécifiées : \begin{description} \item[pour un individu unique] selon l'un des formats suivants : - \begin{itemize} - \item \meta{nom} - \item \meta{nom}⅛, ⅛\meta{prénom} - \item \meta{nom}⅛, ⅛\meta{prénom}⅛, ⅛\meta{titre} - \end{itemize} -\item[pour des individus multiples :]\leavevmode - \begin{itemize} - \item selon le même schéma que pour un individu unique ; - \item les \meta{données} de chacun des individus étant séparées par le mot clé - ⅛and⅛. - \end{itemize} + \begin{itemize} + \item \meta{nom} + \item \meta{nom}™, ™\meta{prénom} + \item \meta{nom}™, ™\meta{prénom}™, ™\meta{titre} + \end{itemize} + \item[pour des individus multiples :]\leavevmode + \begin{itemize} + \item selon le même schéma que pour un individu unique ; + \item les \meta{données} de chacun des individus étant séparées par le mot clé + ™and™. + \end{itemize} \end{description} + Les version étoilées de ces commandes trient alphabétiquement les listes de + personnes ou d'auteurs. \end{docCommands} Indépendamment de la casse utilisée en entrée, pour chaque \meta{nom} et @@ -665,8 +707,10 @@ Unicode a prévu le caractère \Ucode[symbole numéro]{2116}. { { doc name = gutenberg }, { doc name = gut }, - % { doc name = lettre }, - % { doc name = lettregut }, + { doc name = assogut }, + { doc name = Assogut }, + { doc name = lettres }, + { doc name = lettresgut }, { doc name = cahier }, { doc name = cahiers }, { doc name = cahiergut }, @@ -689,23 +733,25 @@ Unicode a prévu le caractère \Ucode[symbole numéro]{2116}. \centering \begin{tabular}{ll} \toprule - \refCom{gutenberg} & \gutenberg \\ - \refCom{gut} & \gut \\ - % \refCom{lettre} & \lettre \\ - % \refCom{lettregut} & \lettregut \\ - \refCom{cahier} & \cahier \\ - \refCom{cahiergut} & \cahiergut \\ - \refCom{cahiers} & \cahiers \\ - \refCom{cahiersgut} & \cahiersgut \\ \midrule - \refCom{letgut} & \letgut \\ - \refCom{letgutcls} & \letgutcls \\ \midrule - \refCom{knuth} & \knuth \\ - \refCom{lamport} & \lamport \\ - \refCom{tl} & \tl \\ - \refCom{tugboat} & \tugboat \\ \midrule - \refCom{linux} & \linux \\ - \refCom{macos} & \macos \\ - \refCom{windows} & \windows \\ \bottomrule + \refCom{gutenberg} & \gutenberg \\ + \refCom{gut} & \gut \\ + \refCom{assogut} & \assogut \\ + \refCom{Assogut} & \Assogut \\ + \refCom{lettres} & \lettres \\ + \refCom{lettresgut} & \lettresgut \\ + \refCom{cahier} & \cahier \\ + \refCom{cahiergut} & \cahiergut \\ + \refCom{cahiers} & \cahiers \\ + \refCom{cahiersgut} & \cahiersgut \\ \midrule + \refCom{letgut} & \letgut \\ + \refCom{letgutcls} & \letgutcls \\ \midrule + \refCom{knuth} & \knuth \\ + \refCom{lamport} & \lamport \\ + \refCom{tl} & \tl \\ + \refCom{tugboat} & \tugboat \\ \midrule + \refCom{linux} & \linux \\ + \refCom{macos} & \macos \\ + \refCom{windows} & \windows \\ \bottomrule \end{tabular} \caption{Effet des commandes de raccourcis} \label{tab:raccourcis} @@ -754,7 +800,8 @@ de \docAuxCommand{section}% \ExplSyntaxOff \begin{ltx-code-result}[title addon=emploi de la commande \refCom{lettrenumber},listing options app={deletekeywords={[6]{cours,lettre}}}] -Si le numéro de la \lettre{} en cours est 46, celui de la \lettre +Si le numéro de la \lettre{} en cours est 46, +celui de la \lettre : \begin{enumerate} \item en cours est \lettrenumber ; \item en cours est le \lettrenumber* ; @@ -777,7 +824,7 @@ Si le numéro de la \lettre{} en cours est 46, celui de la \lettre \enquote{\lettre} et \enquote{\lettregut}, le cas échéant suivies du numéro de la \lettre{} : \begin{description} - \item[en cours] si l'\meta{argument optionnel} est un point (⅛.⅛) ; + \item[en cours] si l'\meta{argument optionnel} est un point (™.™) ; \item[décalé de celui en cours] de ce qui est spécifié si l'\meta{argument optionnel} est un entier relatif signé\footref{entier-signe} ; \item[spécifié] si l'\meta{argument optionnel} est autre. @@ -801,8 +848,7 @@ Si le numéro de la \lettre{} en cours est 46, on a : \item \lettre*[43] \item \lettre* \end{enumerate} -On fait usage de ces commandes -dans la \lettregut*[.]. +On fait usage de ces commandes dans la \lettregut*[.]. \end{ltx-code-result} \subsection{Touches de clavier} @@ -810,7 +856,7 @@ dans la \lettregut*[.]. Afin de disposer d'un moyen simple, riche et élégant pour composer des touches de clavier, la \letgutcls{} s'appuie sur le \package*{biolinum} et notamment sa -commande ⅛\LKey⅛. Cette dernière a été légèrement étendue de façon à faciliter +commande ™\LKey™. Cette dernière a été légèrement étendue de façon à faciliter la saisie pour toutes les touches des diacritiques utilisés en français. \begin{ltx-code-result}[title addon=touches de clavier] @@ -899,7 +945,7 @@ environnements \enquote{verbatim} suivants. ces codes et résulats : \begin{itemize} \item l'un sous l'autre par défaut ; - \item l'un à gauche de l'autre si l'option ⅛sidebyside⅛ est + \item l'un à gauche de l'autre si l'option ™sidebyside™ est employée. \end{itemize} \end{enumerate} @@ -907,7 +953,7 @@ environnements \enquote{verbatim} suivants. \begin{dbwarning}{Exemples de codes avec résultats : possiblement flottants}{exemples-flottants} - Si l'option ⅛sidebyside⅛ est passée à l'un ou l'autre des + Si l'option ™sidebyside™ est passée à l'un ou l'autre des environnements \refEnv{ltx-code-result} et \refEnv{ltx-code-external-result}, l'exemple : \begin{itemize} @@ -932,7 +978,7 @@ Ces trois environnements admettent des \meta{options} : \begin{itemize} \item (toutes) celles acceptées par l'environnement \docAuxEnvironment{tcblisting} et la commande \docAuxCommand{newtcblisting} - fournis par la bibliothèque ⅛listings⅛ du + fournis par la bibliothèque ™listings™ du \package*{tcolorbox}\footnote{Et, aussi, les commandes \docAuxCommand{DeclareTCBListing} et assimilées fournies par la bibliothèque \lstinline+xparse+ de ce package.}. Elles permettent notamment de surcharger @@ -940,29 +986,29 @@ Ces trois environnements admettent des \meta{options} : \begin{itemize} \item de faire figurer l'éventuel résultat, non pas sous le code comme c'est le cas par défaut, mais en regard (à droite) au moyen de l'option - ⅛sidebyside⅛ ; + ™sidebyside™ ; \item de supprimer les numéros de ligne au moyen de l'option \begin{ltx-code} listing options={numbers=none} \end{ltx-code} \end{itemize} \item trois spécifiques à ces environnements : - \begin{docKey*}{title addon}{=\meta{supplément au titre}}{\valinitdef} - Cette option permet d'adjoindre un \meta{supplément au titre} de ces - exemples, qui sont par défaut et automatiquement \enquote{Exemple \meta{n}}. - \end{docKey*} - \begin{docKey*}{result width}{=\meta{longueur}}{\valinitdef[\docAuxCommand*{linewidth}]} + \begin{docKey}{title addon}{=\meta{supplément}}{\valinitdef} + Cette option permet d'adjoindre au titre de ces exemples, qui sont par + défaut et automatiquement \enquote{Exemple \meta{n}}, un \meta{supplément}. + \end{docKey} + \begin{docKey}{result width}{=\meta{longueur}}{\valinitdef[\docAuxCommand*{linewidth}]} Cette option, utile seulement pour l'environnement \refEnv{ltx-code-external-result}, permet de spécifier une largeur autre que celle initiale pour le fichier image du résultat, compilé indépendamment de la \lettre{}. - \end{docKey*} - \begin{docKey*}{reference text}{=\meta{texte}}{\valinitdef[Cf. exemple \meta{n} page \meta{q}.]} + \end{docKey} + \begin{docKey}{reference text}{=\meta{texte}}{\valinitdef[Cf. exemple \meta{n} page \meta{q}.]} Cette option n'a d'effet que : \begin{itemize} \item avec l'un ou l'autre des environnements \refEnv{ltx-code-result} et \refEnv{ltx-code-external-result} ; - \item lorsque l'option ⅛sidebyside⅛ leur est passée ; + \item lorsque l'option ™sidebyside™ leur est passée ; \item lorsque l'exemple s'avère se trouver sur une page autre que celle de son point d'insertion. \end{itemize} @@ -972,9 +1018,9 @@ listing options={numbers=none} s'affranchir de ce texte en recourant à \lstinline+reference text=\{\}+.}. \begin{dbwarning}{\refKey{reference text} avant \lstinline+sidebyside+}{} Pour qu'elle soit prise en compte, l'option \refKey{reference text} doit - être passée \emph{avant} l'option ⅛sidebyside⅛. + être passée \emph{avant} l'option ™sidebyside™. \end{dbwarning} - \end{docKey*} + \end{docKey} \end{itemize} \subsubsection{Coloration syntaxique} @@ -984,16 +1030,16 @@ Par défaut, en début de document et de chaque fichier importé au moyen de \refCom{inputarticle}, le langage supposé dans ces exemples de codes est \hologo{TeX}, chargé (seulement) avec ses \enquote{dialectes} : \begin{itemize} -\item ⅛primitive⅛, ⅛common⅛, ⅛plain⅛, ⅛LaTeX⅛, ⅛AlLaTeX⅛ fournis par le +\item ™primitive™, ™common™, ™plain™, ™LaTeX™, ™AlLaTeX™ fournis par le \package*{listings} ; -\item ⅛classes⅛ fourni par \letgutcls{} (répertoriant les classes disponibles +\item ™classes™ fourni par \letgutcls{} (répertoriant les classes disponibles sur le \ctan{}). \end{itemize} Une conséquence notable est la suivante : \begin{dbwarning}{Coloration syntaxique réduite par défaut}{} La coloration syntaxique dans les exemples de codes n'est par défaut active - que pour le langage \hologo{TeX} et ses dialectes ⅛primitive⅛, ⅛common⅛, - ⅛plain⅛, ⅛LaTeX⅛, ⅛AlLaTeX⅛ et ⅛classes⅛. + que pour le langage \hologo{TeX} et ses dialectes ™primitive™, ™common™, + ™plain™, ™LaTeX™, ™AlLaTeX™ et ™classes™. \end{dbwarning} Il est néanmoins possible de spécifier d'autres langages et dialectes au moyen @@ -1049,7 +1095,7 @@ fournit la commande à arguments \enquote{verbatim} suivante. Il est possible de surcharger les réglages par défaut de cette commande au moyen d'\meta{options} qui sont (toutes) celles acceptées par l'environnement \docAuxEnvironment{tcblisting} et la commande \docAuxCommand{newtcblisting} - fournis par la bibliothèque ⅛listings⅛ du \package*{tcolorbox}\footnote{Et, + fournis par la bibliothèque ™listings™ du \package*{tcolorbox}\footnote{Et, aussi, les commandes \docAuxCommand{DeclareTCBListing} et assimilées fournies par la bibliothèque \lstinline+xparse+ de ce package.}. \end{docCommand} @@ -1113,7 +1159,7 @@ rg -g 0,25s user 0,23s system 320% cpu 0,150 total \begin{dbwarning}{Caractère d'échappement des listings}{} \lstset{escapechar=}% - La \letgutcls{} définit ⅛£⅛ comme caractère d'échappement dans \LaTeX{} au + La \letgutcls{} définit ™£™ comme caractère d'échappement dans \LaTeX{} au sein d'un listing. \end{dbwarning} @@ -1127,37 +1173,38 @@ Au besoin, on pourra désactiver ce caractère actif au moyen de \docAuxCommand{lstinline} du \package*{listings} mais, pour simplifier la tâche, la \letgutcls{} définit comme équivalent court de \docAuxCommand{lstinline} le caractère unicode % - \lstDeleteShortInline⅛% - \texttt{⅛} % - \lstMakeShortInline⅛% - (U+215B)\footnote{Peu susceptible d'être utilisé dans du texte + \lstDeleteShortInline™% + \texttt{™} % + \lstMakeShortInline™% + (\Ucode{2122})\footnote{Peu susceptible d'être utilisé dans du texte ordinaire.}. \end{dbwarning} Autrement dit, la \letgutcls{} contient l'instruction\footnote{À peu de choses près.} : - \lstDeleteShortInline⅛ + \lstDeleteShortInline™ \begin{ltx-code} -\lstMakeShortInline£\texttt{⅛}£ +\lstMakeShortInline£\texttt{™}£ \end{ltx-code} Au besoin, on pourra désactiver ce caractère actif au moyen de : \begin{ltx-code} -\lstDeleteShortInline£\texttt{⅛}£ +\lstDeleteShortInline£\texttt{™}£ \end{ltx-code} -\begin{dbremark}{Obtention du caractère \texttt{⅛}}{} +\begin{dbremark}{Obtention du caractère \texttt{™}}{} Le caractère % -\texttt{⅛} % +\texttt{™} % s'obtient : \begin{itemize} -\item sous \linux{} : \LKeyShiftAltGrX{2}\footnote{Touche \LKey{2} du clavier principal.} ; +\item sous \linux{} : \LKeyShiftAltGrX{8}\footnote{Touche \LKey{8} du clavier + principal.} ; \item sous \macos{} : à l'aide du visualiseur de caractères\footnote{Et possiblement de raccourcis claviers personnels.} ; -\item sous \windows{} : \LKeyAltX{8}+\LKey{5}+\LKey{3}+\LKey{9}. +\item sous \windows{} : \LKeyAltX{0}+\LKey{1}+\LKey{5}+\LKey{3}. \end{itemize} \end{dbremark} - \lstMakeShortInline⅛% + \lstMakeShortInline™% \section{Nouveautés apparues sur le \ctan} \label{sec:rubr-cons-aux} @@ -1229,6 +1276,16 @@ Les fiches de lecture d'un livre sont créées au moyen de l'environnement \begin{docKey}{bibkey}{=\meta{clé}}{\valinitdef} Cette clé permet de spécifier la \meta{clé} identifiant l'entrée d'un \file*{.bib} contenant les données bibliographiques du document rapporté. + \begin{dbwarning}{Fichier de bibliographie}{} + Ces données bibliographiques doivent se trouver dans un fichier + \meta{bibliographie}\file{.bib}, structurées selon le format du + \package*{biblatex} et chargées en préambule (par exemple dans le + fichier local de configuration, cf. \vpageref{sec:fichier-local-de}) au + moyen de la commande : +\begin{ltx-code} +\addbibressource{£\meta{bibliographie}£.bib} +\end{ltx-code} + \end{dbwarning} \end{docKey} \item[fortement conseillée :] \begin{docKey}{frontcover}{=\meta{fichier}}{\valinitdef} @@ -1280,10 +1337,10 @@ commande dédiée \refCom{letgutacro}. être employé au moyen des commandes fournies par le \package*{acro}, par exemple : \begin{itemize} - \item ⅛\ac{⅛\meta{court}⅛}⅛\footnote{Acronyme automatiquement affiché sous sa + \item ™\ac{™\meta{court}™}™\footnote{Acronyme automatiquement affiché sous sa forme complète à sa 1\iere{} occurrence, sous sa forme courte à ses occurrences suivantes.} ; - \item ⅛\acs{⅛\meta{court}⅛}⅛\footnote{Acronyme affiché sous sa forme courte + \item ™\acs{™\meta{court}™}™\footnote{Acronyme affiché sous sa forme courte seulement.}. \end{itemize} Toutefois, pour simplifier l'usage de ces acronymes, la \letgutcls{} crée @@ -1301,8 +1358,8 @@ commande dédiée \refCom{letgutacro}. % qui agit comme : \begin{itemize} - \item ⅛\ac{⅛\meta{court}⅛}⅛ en version non étoilée ; - \item ⅛\acs{⅛\meta{court}⅛}⅛ en version étoilée. + \item ™\ac{™\meta{court}™}™ en version non étoilée ; + \item ™\acs{™\meta{court}™}™ en version étoilée. \end{itemize} \end{docCommand} Ainsi, l'acronyme utilisé via \docAuxCommand{\meta{court}} figure, pour ses @@ -1412,6 +1469,143 @@ insère un filet horizontal. Cette commande permet d'accentuer la séparation entre deux articles. \end{docCommand} +\section{Annonces} +\label{sec:annonces} + +Afin de présenter aisément et de façon homogène les annonces à paraître dans la +\lettre{}, la \letgutcls{} fournit l'environnement \refEnv{announcement}. + +\begin{docEnvironment}[doclang/environment content=annonce]{announcement}{\oarg{couleur}\marg{titre}} + Cet environnement est dédié aux \meta{annonce}s. La spécification : + \begin{itemize} + \item d'un \meta{titre} (pouvant toutefois être vide) est obligatoire ; + \item d'une \meta{couleur} (du tire et des ornements) autre que celle (noire) + par défaut est possible. + \end{itemize} +\end{docEnvironment} + +\begin{ltx-code-result}[title addon=annonces] +\begin{announcement}[red!35!black]{Convocation \acs{ag} ordinaire} + Les adhérents de l'\assogut{} sont invités à participer à + l'\textbf{assemblée générale \emph{ordinaire}} de l'association + le \textbf{dimanche 11 décembre 2022}. +\end{announcement} +\end{ltx-code-result} + +\section{Rébus} +\label{sec:rebus} + +\tcbstartrecording\relax +Afin de présenter aisément et de façon homogène les rébus à paraître dans la +\lettre{}, la \letgutcls{} fournit l'environnement \refEnv{rebus}. + +\begin{docEnvironment}[doclang/environment content=rébus]{rebus}{\oarg{options}} + Cet environnement affiche un \meta{rébus} et s'emploie différemment selon que + la solution est prévue de figurer dans la \lettre{} : + \begin{description} + \item[en cours :] le rébus et sa solution doivent alors être séparées par + la commande \refCom{solution} ; + \item[suivante :] l'option \refKey{no solution} doit alors être employée. + \end{description} + La boîte contenant le rébus mentionne que sa solution se trouve, + respectivement : + \begin{itemize} + \item \enquote{page \meta{n}} ou \enquote{ci-dessous} ; + \item \enquote{dans la prochaine \lettre{}}. + \end{itemize} + + La commande séparant le rébus et sa solution prévue de figurer dans la + \lettre{} en cours est : + \begin{docCommand}{solution}{} + Cette commande débute la solution d'un rébus à l'intérieur d'un environment + \refEnv{rebus}. + \end{docCommand} + + En outre, cet environnement admet des \meta{options} : + \begin{itemize} + \item (toutes) celles acceptées par les environnements \refAux{tcolorbox} et + assimilés du \package*{tcolorbox}, destinées à, le cas échéant, modifier la + mise en forme par défaut de la boîte contenant le rébus ; + \item deux qui lui sont propres : + \begin{docKey}{title addon}{=\meta{supplément}}{\valinitdef} + Cette option permet d'adjoindre au titre d'un rébus, qui est par défaut et + automatiquement \enquote{Rébus}, un \meta{supplément} alors en italique et + entre parenthèses. + \end{docKey} + \begin{docKey}{no solution}{}{\valinitdef[\docValue*{false}][\docValue*{true}]} + Cette option est à spécifier pour un rébus dont la solution ne doit figurer + que dans la prochaine \lettre{}. + \end{docKey} + \end{itemize} +\end{docEnvironment} + +Ainsi le code : + +\begin{ltx-code}[title addon=rébus] +\begin{rebus}[no solution] + Rébus \emph{sans} solution dans le présent numéro. +\end{rebus} +\begin{rebus} + Rébus \emph{avec} solution dans le présent numéro. + \solution + Solution du rébus. +\end{rebus} +\end{ltx-code} + +donne-t-il les résultats suivants\footnote{Éventuellement pas immédiatement à la + suite car les boîtes contenant les rébus sont flottantes.}. + +\begin{rebus}[no solution,nofloat] + Rébus \emph{sans} solution dans le présent numéro. +\end{rebus} +\begin{rebus}[nofloat] + Rébus \emph{avec} solution dans le présent numéro. + \solution + Solution du rébus. +\end{rebus} + +La \letgutcls{} fournit bien sûr le moyen d'afficher les solutions des rébus de +la \lettre{} +soit en cours, soit précédente. + +\begin{docCommand}{rebussolution}{\oarg{solution}\oarg{numéro}\oarg{options}} + Cette commande affiche la ou les solutions du ou des rébus qui figurent dans + la \lettre{} : + \begin{description} + \item[en cours :] (commande \refCom{solution}) si ses 1\ier{} et + 2\ieme{} arguments optionnels \meta{solution} et \meta{numéro} sont + inutilisés ; + \item[précédente :] si son 1\ier{} argument optionnel \meta{solution} est + utilisé. Selon que 2\ieme{} argument optionnel \meta{numéro} est spécifié ou + pas, il est indiqué que la \meta{solution} est celle d'un rébus figurant + dans la \lettre{} : + \begin{itemize} + \item \meta{numéro} ; + \item précédente. + \end{itemize} + \end{description} + Cette commande admet comme \meta{options} (toutes) celles acceptées par les + environnements \refAux{tcolorbox} et assimilés du \package*{tcolorbox}, + destinées à, le cas échéant, modifier la mise en forme par défaut de la boîte + contenant la solution du rébus. +\end{docCommand} + +Ainsi le code : + +\begin{ltx-code}[title addon=solution de rébus] +\rebussolution +\rebussolution[Solution du rébus] +\rebussolution[Solution du rébus][49] +\end{ltx-code} + +donne-t-il donne-t-il les résultats suivants\footnote{Éventuellement pas + immédiatement à la suite car les boîtes contenant les solutions des rébus sont + flottantes.}. + +\rebussolution +\rebussolution[Solution du rébus] +\rebussolution[Solution du rébus][49] + \section{Boîtes d'alertes} \label{sec:boites-dalertes} @@ -1607,7 +1801,7 @@ dressons ci-après la liste en les regroupant selon ces deux catégories. \item[babel] support multilingue. \begin{description} \item[Options :] \docAuxKey*{english}, \docAuxKey*{french} ; - \item[Configuration] ⅛\renewcommand*\frenchtablename{Tableau}⅛. + \item[Configuration] ™\renewcommand*\frenchtablename{Tableau}™. \end{description} \item[varioref] références de pages intelligentes. \begin{description} @@ -1647,11 +1841,11 @@ dressons ci-après la liste en les regroupant selon ces deux catégories. \item[Options :]\leavevmode{} \begin{itemize} \item \docAuxKey*{first-style=footnote} ; - \item \docAuxKey*{format/short=}⅛\scshape⅛ ; - \item \docAuxKey*{format/foreign=}⅛\em⅛ ; + \item \docAuxKey*{format/short=}™\scshape™ ; + \item \docAuxKey*{format/foreign=}™\em™ ; \item \docAuxKey*{foreign/display} ; \item \docAuxKey*{locale/display} ; - \item \docAuxKey*{locale/format=}⅛\upshape⅛. + \item \docAuxKey*{locale/format=}™\upshape™. \end{itemize} \end{description} \item[hyperref] prise en charge étendue de l'hypertexte. diff --git a/Master/texmf-dist/doc/lualatex/letgut/rebus-2.tex b/Master/texmf-dist/doc/lualatex/letgut/rebus-2.tex new file mode 100644 index 00000000000..2798de7770a --- /dev/null +++ b/Master/texmf-dist/doc/lualatex/letgut/rebus-2.tex @@ -0,0 +1 @@ + Solution du rébus. 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) diff --git a/Master/texmf-dist/tex/lualatex/letgut/informations-gut.tex b/Master/texmf-dist/tex/lualatex/letgut/informations-gut.tex index e7249c8a237..85e0d6a9f1e 100644 --- a/Master/texmf-dist/tex/lualatex/letgut/informations-gut.tex +++ b/Master/texmf-dist/tex/lualatex/letgut/informations-gut.tex @@ -6,7 +6,7 @@ \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% diff --git a/Master/texmf-dist/tex/lualatex/letgut/letgut-lstlang.sty b/Master/texmf-dist/tex/lualatex/letgut/letgut-lstlang.sty index 412849c9724..ab97265d351 100644 --- a/Master/texmf-dist/tex/lualatex/letgut/letgut-lstlang.sty +++ b/Master/texmf-dist/tex/lualatex/letgut/letgut-lstlang.sty @@ -30,7 +30,659 @@ % % 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 @@ -39,7 +691,8 @@ 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') @@ -48,7 +701,7 @@ % 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) @@ -56,7 +709,7 @@ 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]{% @@ -81,7 +734,7 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 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,% @@ -640,7 +1293,7 @@ % 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) @@ -1303,7 +1956,8 @@ \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') @@ -1317,12 +1971,13 @@ % 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) @@ -1334,7 +1989,7 @@ tikz,% },% % otherkeywords={},% - alsoletter={-| \ },% + alsoletter={-| \ :},% % alsodigit={},% % alsoother={},% sensitive,% @@ -1494,6 +2149,7 @@ % 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]{% @@ -1969,7 +2625,7 @@ 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,% @@ -1998,7 +2654,7 @@ 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) diff --git a/Master/texmf-dist/tex/lualatex/letgut/letgut.cbx b/Master/texmf-dist/tex/lualatex/letgut/letgut.cbx index 852f60e2a55..876ee67dca3 100644 --- a/Master/texmf-dist/tex/lualatex/letgut/letgut.cbx +++ b/Master/texmf-dist/tex/lualatex/letgut/letgut.cbx @@ -1,4 +1,4 @@ -\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} \DeclareFieldFormat[bookreview]{title}{\textbf{\emph{#1}}} \renewbibmacro*{title}{% diff --git a/Master/texmf-dist/tex/lualatex/letgut/letgut.cls b/Master/texmf-dist/tex/lualatex/letgut/letgut.cls index 319dfc2badd..21f1685864b 100644 --- a/Master/texmf-dist/tex/lualatex/letgut/letgut.cls +++ b/Master/texmf-dist/tex/lualatex/letgut/letgut.cls @@ -11,7 +11,7 @@ % | 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 @@ -32,7 +32,11 @@ \NeedsTeXFormat{LaTeX2e}[2020-10-01] \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 } @@ -44,8 +48,8 @@ } \ExplSyntaxOff \ProvidesExplClass{letgut} -{2022-10-03} -{0.9.4} +{2023-01-13} +{0.9.5} { Class for the newsletter “The GUTenberg Letter” } @@ -102,6 +106,9 @@ \bool_new:N \g__letgut_paper_bool \bool_new:N \l__letgut_in_footnote_bool \bool_new:N \g__letgut_draft_bool +\bool_new:N \g__letgut_included_files_attached_bool +\bool_new:N \g__letgut_acronyms_file_attached_bool +\bool_new:N \g__letgut_lstlanguage_file_attached_bool \dim_const:Nn \c__letgut_textheight_dim { 25cm } \dim_const:Nn \c__letgut_textwidth_dim { 14cm } \dim_const:Nn \c__letgut_lmargin_dim { 5cm } @@ -299,12 +306,15 @@ \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 \clist_new:N \g__letgut_pagecolor_clist \clist_const:Nn \c__letgut_default_pagecolor_screen_clist {1.0, 0.98, 0.94} \clist_const:Nn \c__letgut_default_pagecolor_paper_clist {1, 1, 1} \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 \RequirePackage{l3keys2e} \int_new:N \g__letgut_date_month_int \int_new:N \g__letgut_date_year_int @@ -412,7 +422,9 @@ \RequirePackage{etoc} \RequirePackage{enumitem} \RequirePackage{titlesec} +\RequirePackage[table]{xcolor} \RequirePackage{fourier-orns} +\RequirePackage{pgfornament} \RequirePackage[section,above]{placeins} \RequirePackage{fancyvrb} \RequirePackage{booktabs} @@ -420,9 +432,10 @@ \RequirePackage[fleqn]{mathtools} \RequirePackage{accsupp} \RequirePackage{siunitx} -\RequirePackage{hologo} -\RequirePackage[table]{xcolor} +\RequirePackage{bxtexlogo} \RequirePackage{tcolorbox} +\RequirePackage[group=false,subpreambles,sort]{standalone} +\RequirePackage[icon=Paperclip]{attachfile2} \RequirePackage{refcount} \RequirePackage{ninecolors} \RequirePackage{tabularray} @@ -437,6 +450,7 @@ citestyle=letgut ]{biblatex} \RequirePackage{acro} +\RequirePackage{xurl} \AddToHook{begindocument/before}{ \RequirePackage{hyperref} \RequirePackage[all]{hypcap} @@ -477,29 +491,28 @@ \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}} + } } \defbibheading{title}[\refname]{% \title{#1}} \defbibheading{subtitle}[\refname]{% \subtitle{#1}} \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 } -\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} +\ProvideDocumentCommand \acroendfootnote {} {.} +\RemoveFromHook{begindocument}[standalone] +\ExpandArgs{nv}\AddToHook{begindocument/before}{l__hook_return_tl} \AddToHook{begindocument/before}{ \bool_if:NTF \g__letgut_paper_bool { \hypersetup{hidelinks} @@ -510,16 +523,17 @@ }% } \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} % % \bool_if:NF \g__letgut_paper_bool { \bool_if:NT \g__letgut_draft_bool { % \RequirePackage[All]{lua-typo} @@ -563,7 +577,10 @@ \c__letgut_default_pagecolor_screen_clist \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 @@ -576,6 +593,7 @@ \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 @@ -610,6 +628,7 @@ , 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 } \definecolor{letgut_pagecolor}{rgb}{\g__letgut_pagecolor_clist} @@ -691,6 +710,122 @@ \end{tblr} \skip_vertical:N \c_zero_dim } +\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{}}; + }, +} +\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 + } + } +} \tl_gclear:N \@title \AddToHook{begindocument/before} { @@ -722,7 +857,7 @@ { \begin{picture}(0,0) \put(-2cm,-25.275cm){ - \includegraphics[scale=0.96]{ + \includegraphics*[scale=0.96]{ \c__letgut_banner_file_tl.pdf } } @@ -836,15 +971,13 @@ } \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} % \if\count{\pagenumber}>1 % \else % \newpage @@ -880,21 +1013,23 @@ } \AddToHook{enddocument} { + % \clearpage + % \printacronyms[heading=title,display=used] \bool_if:NT \g__letgut_informations_bool { \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 } }{ @@ -908,16 +1043,25 @@ } } \setcounter{secnumdepth}{-10} +% \AddToHook{cmd/hologo/before}{\protect} +\NewCommandCopy{\__letgut_old_hologo}{\hologo} +\RenewDocumentCommand {\hologo} { m }{ + \protect\__letgut_old_hologo { #1 } +} +\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 } \AddToHook{begindocument/before}{% \titleclass{\title}{straight}[\part] \titleformat{\title}{ \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} @@ -1038,24 +1182,24 @@ } \NewDocumentCommand {\francophony} { } { \raisebox{-1.5pt}{ - \includegraphics[width=\f@size pt]{ + \includegraphics*[width=\f@size pt]{ letgut-francophony-icon } } } -\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 } } } \cs_new_protected:Npn \__letgut_titlecase_name:n #1 @@ -1091,10 +1235,18 @@ (#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 @@ -1123,6 +1275,32 @@ \c_space_tl \str_use:N \& \c_space_tl } { ,~ } { \c_space_tl \str_use:N \& \c_space_tl } } +\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} +} \NewDocumentCommand {\separator} { } { \par \skip_vertical:N 1em @@ -1165,11 +1343,13 @@ } \cs_new_protected:Nn \__letgut_software:nn { +\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 @@ -1205,62 +1385,68 @@ \__letgut_software:nn {#2}{#3} } \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 - } + \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 +} \cs_new_protected:Npn \__letgut_get_lettre_number:n #1 { \tl_if_empty:nTF {#1}{ @@ -1291,7 +1477,7 @@ \tl_if_empty:nF {#1} { #3 - \c_space_tl + \nobreakspace \__letgut_get_lettre_number:n {#1} } } @@ -1626,6 +1812,9 @@ title .value_required:n = true, \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}} + } } \DeclareRobustCommand*\LKey[1]{% \ifx#10\biolinumKeyGlyph{zero}% % spurious space removed 2016/06/24 @@ -1668,7 +1857,7 @@ title .value_required:n = true, \else\ifx#1Ç\biolinumKeyGlyph{Ccedilla}% \else\biolinumKeyGlyph{#1}% \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} -\hyphenation{GUT-enberg} +\hyphenation{GUTen-berg} \cs_new_protected:Npn \__letgut_issn: { \bool_if:NTF \g__letgut_paper_bool { @@ -1701,6 +1890,160 @@ title .value_required:n = true, \__letgut_meta:nn {#1}{#2} } } +\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 } +} +\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} +} +\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} +} +\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 + } +} +\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 + } +} +\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 + } +} \lstdefinestyle{__letgut_reset_listings_styles}{ basicstyle=\ttfamily, breaklines, @@ -1727,17 +2070,8 @@ numberstyle=\scriptsize\ttfamily aboveskip={0\p@ \@plus 6\p@}, belowskip={0\p@ \@plus 6\p@}, } -\lstMakeShortInline[breaklines=false]⅛ +\lstMakeShortInline[breaklines=false]™ \lstset{ style=__letgut_reset_listings_styles } -\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 } -} \colorlet{__letgut_texcs}{blue} \colorlet{__letgut_comment}{gray} \colorlet{__letgut_argument_specification_separator}{red} @@ -1749,13 +2083,13 @@ aboveskip={0\p@ \@plus 6\p@}, \colorlet{__letgut_optional_argument}{__letgut_key} \colorlet{__letgut_math}{green!50!black} \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, } \lstdefinestyle{__letgut_latex_listings_style}{ language=TeX,% @@ -1764,7 +2098,7 @@ aboveskip={0\p@ \@plus 6\p@}, 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, @@ -1791,7 +2125,7 @@ literate=*% \definecolor{__letgut_foregroundLinenumber}{cmyk}{0,0,0,0.5} \definecolor{__letgut_foregroundMention}{cmyk}{0,0,0,0} \definecolor{__letgut_backgroundResult}{cmyk}{0,0,0,0} -\tcbuselibrary{listings,xparse,breakable,skins,hooks} +\tcbuselibrary{listings,breakable,skins,hooks,documentation} \tcbset{ breakable, sharp~ corners, @@ -2216,13 +2550,14 @@ overlay={ ^^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 \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 } \ExecuteBibliographyOptions[bookreview]{skipbib,skiplab} diff --git a/Master/texmf-dist/tex/lualatex/letgut/letgut.dbx b/Master/texmf-dist/tex/lualatex/letgut/letgut.dbx index e2844f9c9ad..85c26f3a31d 100644 --- a/Master/texmf-dist/tex/lualatex/letgut/letgut.dbx +++ b/Master/texmf-dist/tex/lualatex/letgut/letgut.dbx @@ -1,4 +1,4 @@ -\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}% diff --git a/Master/texmf-dist/tex/lualatex/letgut/letgut.lbx b/Master/texmf-dist/tex/lualatex/letgut/letgut.lbx index 911ebde868e..05c107b6dab 100644 --- a/Master/texmf-dist/tex/lualatex/letgut/letgut.lbx +++ b/Master/texmf-dist/tex/lualatex/letgut/letgut.lbx @@ -1,4 +1,4 @@ -\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}, |