diff options
author | Max Chernoff <mseven@telus.net> | 2024-10-08 01:22:18 +0000 |
---|---|---|
committer | Max Chernoff <mseven@telus.net> | 2024-10-08 01:22:18 +0000 |
commit | 9f85c3a6308bbec1b029bfd8628b52666bc0a398 (patch) | |
tree | eeaf75b1fc355272415c11b9980425287f5392eb /Master/texmf-dist | |
parent | 10f20f0e5dd89b68f07105978a0df1797667c1ac (diff) |
letgut (7oct24)
git-svn-id: svn://tug.org/texlive/trunk@72490 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist')
16 files changed, 836 insertions, 708 deletions
diff --git a/Master/texmf-dist/doc/lualatex/letgut/CHANGELOG.md b/Master/texmf-dist/doc/lualatex/letgut/CHANGELOG.md index 1da8ce909ec..ab0c9783a3c 100644 --- a/Master/texmf-dist/doc/lualatex/letgut/CHANGELOG.md +++ b/Master/texmf-dist/doc/lualatex/letgut/CHANGELOG.md @@ -7,6 +7,21 @@ Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] +## [0.9.10] - 2024-10-07 + +### Changed +- Multiple rebuses handled +- Paper clips (links to source files of the articles) not in the magin anymore and separated by spaces +- Watermark letter and scale can now be specified + +### Fixed +- Wrong output with \terminal +- Title of publication in small capitals +- Options of `letgut-banner` never taken in account +- Not all included graphics attached to the PDF +- Variables wrongly local or not reset +- `\citeauthor` displayed family name in small caps + ## [0.9.9] - 2024-03-07 ### Fixed diff --git a/Master/texmf-dist/doc/lualatex/letgut/README.md b/Master/texmf-dist/doc/lualatex/letgut/README.md index 1dbce82b4a8..cc66ceb67fb 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 ------- -2024-03-07 v0.9.9 +2024-10-07 v0.9.10 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 3c9499367da..ed358cda688 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 011006ba937..c90038af05b 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 2024-03-07 Thu 14:19 +% Created 2024-10-07 Mon 12:16 % Intended LaTeX compiler: lualatex \documentclass{letgut} \setmainfont{KpRoman} @@ -13,20 +13,19 @@ \section{Readme file} -\label{sec:org4c9ba67} - +\label{Readmefile-dlkgxqt0fck0} \begin{lstlisting} -------:| --------------------------------------------------- letgut:| Package for the banner of the newsletter | "La Lettre de GUTenberg" Author:| Association GUTenberg - E-mail:| secretariat@gutenberg.eu.org + E-mail:| secretariat@gutenberg-asso.fr License:| Released under the LaTeX Project Public License | v1.3c or later See:| http://www.latex-project.org/lppl.txt -Copyright (C) 1994-2022 by Association GUTenberg - <secretariat@gutenberg.eu.org> +Copyright (C) 1994-2024 by Association GUTenberg + <secretariat@gutenberg-asso.fr> This work may be distributed and/or modified under the conditions of the LaTeX Project Public License (LPPL), either @@ -40,11 +39,9 @@ by Association GUTenberg. \end{lstlisting} \section{Implementation} -\label{sec:org4c5e60d} - +\label{Implementation-ckogxqt0fck0} \subsection{Identification} -\label{sec:org09b0cd2} - +\label{ImplementationIdentification-gwqgxqt0fck0} \begin{lstlisting} This is file `letgut-banner.sty, generated with the Emacs Org-babel utility. @@ -65,23 +62,15 @@ Now, we can announce the package name and its version: \begin{lstlisting} \ProvidesExplPackage{letgut-banner} -{2022-03-17} -{0.9} +{2024-10-07} +{0.10} { Package for the banner of the newsletter "La Lettre de GUTenberg" } \end{lstlisting} \subsection{Packages loaded} -\label{sec:org447090b} - -In order to provide class options, we load the \package{l3keys2e} which provides -\LaTeXe{} option processing using \LaTeX3 keys: - -\begin{lstlisting} -\RequirePackage{l3keys2e} -\end{lstlisting} - +\label{ImplementationPackagesloaded-etvgxqt0fck0} Till the Lua-based color will be added to the core \package{l3color} approach, we have to rely on \package{xcolor} @@ -96,35 +85,14 @@ reader who wants to copy the interesting text be able to select it (see below). \RequirePackage{accsupp} \end{lstlisting} -What follows has to be done at this end of the preamble, otherwise the font set -with \lstinline+\setmainfont+ in the preamble isn't taken in account in the banner. - -We define an option for the color of the text in the "L" (that has to be the -same as the page color of the document). - -\begin{lstlisting} -\keys_define:nn { letgut-banner } -{ - , pagecolor .clist_gset:N = \g__letgutbanner_pagecolor_clist - , pagecolor .initial:n = { 1,1,1 } -} -\ProcessKeysOptions { letgut-banner } -\end{lstlisting} - -\begin{lstlisting} -\AddToHook{begindocument}{ -\end{lstlisting} - \begin{lstlisting} \cs_generate_variant:Nn \color_fill:nn { nV } \end{lstlisting} \subsection{Declarations} -\label{sec:orgbda0ae2} - +\label{ImplementationDeclarations-u0ygxqt0fck0} \subsubsection{Dimensions} -\label{sec:org5711d86} - +\label{ImplementationDeclarationsDimensions-9t0hxqt0fck0} \begin{lstlisting} \dim_new:N \g__letgutbanner_area_height_dim \dim_new:N \g__letgutbanner_La_height_dim @@ -138,6 +106,7 @@ same as the page color of the document). \dim_if_exist:NF \g__letgutbanner_first_page_shrink_dim { \dim_new:N \g__letgutbanner_first_page_shrink_dim } +\dim_new:N \g__letgutbanner_textwidth_dim \end{lstlisting} \begin{itemize} @@ -155,11 +124,9 @@ values. For this, we first generate a variant of \lstinline+\dim_const:Nn+ (see { 25cm } } \dim_if_exist:NTF \c__letgut_textwidth_dim { - \dim_const:NV \c__letgutbanner_textwidth_dim - \c__letgut_textwidth_dim + \dim_gset_eq:NN \g__letgutbanner_textwidth_dim \c__letgut_textwidth_dim }{ - \dim_const:Nn \c__letgutbanner_textwidth_dim - { 14cm } + \dim_gset:Nn \g__letgutbanner_textwidth_dim { 14cm } } \dim_if_exist:NTF \c__letgut_lmargin_dim { \dim_const:NV \c__letgutbanner_lmargin_dim @@ -237,7 +204,7 @@ the left margin minus half the difference between the width of the left margin and the width (\(d\)) of the "L": \(=w+l-(l-d)/2=w+(l+d)/2\)). \begin{lstlisting} \dim_const:Nn \c__letgutbanner_banner_width_dim { - \c__letgutbanner_textwidth_dim + \g__letgutbanner_textwidth_dim + ( \c__letgutbanner_banner_thickness_dim @@ -262,7 +229,7 @@ padding because this text will be stuck to its left "margin"). \begin{lstlisting} \dim_const:Nn \c__letgutbanner_banner_horizontal_contents_width_dim { - \c__letgutbanner_textwidth_dim + \g__letgutbanner_textwidth_dim - ( \c__letgutbanner_banner_thickness_dim - @@ -276,8 +243,7 @@ padding because this text will be stuck to its left "margin"). \end{itemize} \subsubsection{Boxes} -\label{sec:orge5b5c6b} - +\label{ImplementationDeclarationsBoxes-s83hxqt0fck0} New boxes, for each of the letters in the word "LETTRE" (!), and then for the rest of the content listed in the banner. \begin{lstlisting} @@ -292,8 +258,7 @@ rest of the content listed in the banner. \end{lstlisting} \subsubsection{Floating point numbers} -\label{sec:org61842b5} - +\label{ImplementationDeclarationsFloatingpointnumbers-e75hxqt0fck0} \begin{itemize} \item Minimum percentage of the common height of the letters of the word "LETTRE" that their line spacing must represent. @@ -309,14 +274,13 @@ that their line spacing must represent. \fp_const:Nn \c__letgutbanner_leading_La_factor_fp { 1.5 } \end{lstlisting} -\subsection{Application des dimensions de la page} -\label{sec:orgb3e9382} - +\subsection{Applying the page dimensions} +\label{ImplementationApplyingthepagedimensions-187hxqt0fck0} \begin{lstlisting} \geometry{ asymmetric, textheight = \c__letgutbanner_textheight_dim, - textwidth = \c__letgutbanner_textwidth_dim, + textwidth = \g__letgutbanner_textwidth_dim, lmargin = \c__letgutbanner_lmargin_dim, tmargin = \c__letgutbanner_tmargin_dim, head = \c__letgutbanner_head_dim, @@ -328,7 +292,7 @@ that their line spacing must represent. \end{lstlisting} \subsection{Filling of the boxes} -\label{sec:orgdd18dd8} +\label{ImplementationFillingoftheboxes-q49hxqt0fck0} \begin{lstlisting} \hbox_gset:Nn \g__letgutbanner_L_box { \textbf{L} } \hbox_gset:Nn \g__letgutbanner_E_box { \textbf{E} } @@ -341,9 +305,40 @@ that their line spacing must represent. \hbox_gset:Nn \g__letgutbanner_g_box { \textbf{g} } \end{lstlisting} -\subsection{Computations} -\label{sec:orgb1ea800} +\subsection{Options of the package} +\label{ImplementationOptionsofthepackage-21ri36v0fck0} +We define: + +\begin{itemize} +\item an option for the color of the text in the "L" (that has to be the same as the +page color of the document), +\item an option that let us choose another letter than “g” as the watermark letter. +\end{itemize} + +\begin{lstlisting} +\keys_define:nn { letgut-banner } +{ + , pagecolor .clist_gset:N = \g__letgutbanner_pagecolor_clist + , pagecolor .initial:n = { 1,1,1 } + , watermark~ letter .code:n = { + \hbox_gset:Nn \g__letgutbanner_g_box { \textbf{#1} } + } + , watermark~ scale .tl_gset:N = \g__letgutbanner_watermark_scale_tl + , watermark~ scale .initial:n = 1 +} +\ProcessKeyOptions [ letgut-banner ] +\end{lstlisting} +What follows has to be done at this end of the preamble, otherwise the font set +with \lstinline+\setmainfont+ in the preamble isn't taken in account in the banner. + +\begin{lstlisting} +\AddToHook{begindocument}{ +\end{lstlisting} + + +\subsection{Computations} +\label{ImplementationComputations-r7bhxqt0fck0} Determination of the widths of each of the letter boxes of the word "LETTRE". \begin{lstlisting} \dim_const:Nn \c__letgutbanner_L_width_dim { @@ -621,7 +616,11 @@ as well. Resize the box containing "g" to the width of the text. \begin{lstlisting} \box_gresize_to_wd:Nn \g__letgutbanner_g_box { - \c__letgutbanner_textwidth_dim + \fp_to_dim:n { + \g__letgutbanner_watermark_scale_tl + * + \g__letgutbanner_textwidth_dim + } } \end{lstlisting} Calculates the size by which the height of the text box on the 1st page must be @@ -649,6 +648,7 @@ the page: .5\baselineskip } \end{lstlisting} + Automatic addition on the 1st page (only) of the banner. \begin{lstlisting} \AddToHookNext{shipout/background}{ @@ -750,7 +750,13 @@ chosen for the page background. % \color_fill:n {black!10} \color{ black!10 } \put( - .5\c__letgutbanner_lmargin_dim+.5\c__letgutbanner_banner_thickness_dim + .5\c__letgutbanner_lmargin_dim + + + .5\c__letgutbanner_banner_thickness_dim + + + \fp_to_dim:n { + (1-\g__letgutbanner_watermark_scale_tl)/2*\g__letgutbanner_textwidth_dim + } , .5\paperheight + @@ -791,5 +797,5 @@ textheight of the first page of the height of the horizontal bar of the "L". \end{lstlisting} \section{Example file (\texttt{letgut-banner-example.tex})} -\label{sec:orgaf6d8ec} +\label{Examplefileletgutbannerexampletex-heehxqt0fck0} \end{document} 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 fb88b947ba3..7c669f2a948 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 24a541ffb8d..469c9218df5 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 2024-03-07 Thu 14:19 +% Created 2024-10-07 Mon 12:16 % Intended LaTeX compiler: lualatex \documentclass{letgut} \setmainfont{KpRoman} @@ -24,13 +24,13 @@ % -------:| ---------------------------------------------------- % letgut:| Class for the newsletter “La Lettre GUTenberg” % Author:| Association GUTenberg -% E-mail:| secretariat@gutenberg.eu.org +% E-mail:| secretariat@gutenberg-asso.fr % License:| Released under the LaTeX Project Public License % | v1.3c or later % See:| http://www.latex-project.org/lppl.txt % % Copyright (C) 1994-2024 by Association GUTenberg -% <secretariat@gutenberg.eu.org> +% <secretariat@gutenberg-asso.fr> % % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License (LPPL), either @@ -68,15 +68,22 @@ 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_Lettre_plain_tl { Lettre } +\tl_const:Nn \c__letgut_Lettre_tl { \emph{ \c__letgut_Lettre_plain_tl } } \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_plain_tl { + \c__letgut_Lettre_plain_tl~\c_space_tl \c__letgut_gutenberg_tl +} \tl_const:Nn \c__letgut_Lettre_gutenberg_tl { \c__letgut_Lettre_tl~\c_space_tl \c__letgut_gutenberg_tl } +\tl_const:Nn \c__letgut_la_lettre_gutenberg_plain_tl { + la~ \c__letgut_Lettre_gutenberg_plain_tl +} \tl_const:Nn \c__letgut_la_lettre_gutenberg_tl { la~ \c__letgut_Lettre_gutenberg_tl } @@ -90,8 +97,8 @@ Now, we can announce the class name and its version: \begin{lstlisting} \ProvidesExplClass{letgut} -{2024-03-07} -{0.9.9} +{2024-10-07} +{0.9.10} { Class for the newsletter “The GUTenberg Letter” } @@ -1144,7 +1151,10 @@ We now define the options of the class: \item \lstinline+date+ for the date of the issue, either empty (hence the current (month) date) or at the format \lstinline+YYYY-MM+ or as free input, \item \lstinline+pagecolor+ (relevant only with the (default) \lstinline+screen+ load time option) for -a color of the page other than the default one, +a color of the page other than the default one (used behind the scene by the +\lstinline+letgut-banner+ package), +\item \lstinline+watermark letter+ for another letter than the “g” in watermark, +\item \lstinline+watermark scale+ for the case the letter in watermark is too big, \item \lstinline+allcolorslinks+ for the color of (all) the links, \item \lstinline+membership-reminder+ that typesets a membership reminder on the first page, \item \lstinline+editorial+ depending on the editorial is wanted or not, @@ -1154,7 +1164,7 @@ subparagraphs) detailed or not. \end{itemize} \begin{lstlisting} -\DeclareKeys[ letgut ] +\keys_define:nn { letgut } { , for-readers .bool_gset:N = \g__letgut_for_readers_bool , for-readers .initial:n = { true } @@ -1191,6 +1201,10 @@ subparagraphs) detailed or not. } } } + , watermark~ letter .tl_gset:N = \g__letgut_watermark_letter_tl + , watermark~ letter .initial:n = g + , watermark~ scale .tl_gset:N = \g__letgut_watermark_scale_tl + , watermark~ scale .initial:n = 1 , allcolorslinks .code:n = { \colorlet{letgut_allcolors_links}{#1}} , allcolorslinks .initial:V @@ -1253,7 +1267,7 @@ in the header is made a little bit bigger. \begin{lstlisting} \fancyhf{} \fancyhead[RO,LE]{\thepage} -\fancyhead[RE,LO]{\g__letgut_mark_tl} +\fancyhead[RE,LO]{\scshape \g__letgut_mark_tl} \end{lstlisting} \item The headers are left offset \begin{lstlisting} @@ -1419,6 +1433,7 @@ The table of contents is customized: \subsection{Rebus} \label{ImplementationRebus-osw8m3f0cpj0} \begin{lstlisting} +\int_new:N \g__letgut_rebus_int \NewDocumentCommand{\solution}{}{\tcblower} \NewDocumentCommand{\displaysolutions}{}{% \tcbstoprecording\tcbinputrecords% @@ -1453,25 +1468,27 @@ The table of contents is customized: }, } } -\NewTColorBox[auto~ counter]{rebus}{+!O{}}{% +\NewTColorBox{rebus}{+!O{}}{% + before~ title~ pre = {\int_gincr:N \g__letgut_rebus_int}, rebus~ style, fonttitle=\bfseries, title={Rébus}, - label={rebus@\thetcbcounter}, - after~ upper={\vpageref[ci-dessous]{solution@\thetcbcounter}}, + label={rebus@\int_use:N\g__letgut_rebus_int}, + after~ upper={\vpageref[ci-dessous]{solution@\int_use:N\g__letgut_rebus_int}}, after~ upper~ pre={ \par\bigskip\hfill\scriptsize\itshape Solution\c_space_tl }, lowerbox=ignored, - savelowerto=rebus-\thetcbcounter.tex, - record={\string\rebussolution*[\thetcbcounter][][]}, + savelowerto=rebus-\int_use:N\g__letgut_rebus_int.tex, + record={\string\rebussolution*[\int_use:N\g__letgut_rebus_int][][]}, #1 } \NewDocumentCommand{\rebussolution}{s +o o O{}}{% \IfValueTF{#2}{ \begin{tcolorbox}[ rebus~ style, + label=solution@\int_use:N\g__letgut_rebus_int, halign=justify, before~ title={\lefthand{}~Solution~ du~ rébus\c_space_tl}, title={ @@ -1543,7 +1560,7 @@ The number is added only if it is } \str_if_empty:NTF \g__letgut_@title_str { \tl_gset:Nn \g__letgut_mark_tl { - \textit{\c__letgut_La_lettre_gutenberg_tl} + \c__letgut_la_lettre_gutenberg_plain_tl } }{ \tl_gset:Nn \g__letgut_mark_tl { @@ -1581,7 +1598,7 @@ Lettre. { \begin{picture}(0,0) \put(-2cm,-25.275cm){ - \includegraphics*[scale=0.96]{ + \__letgut_orig_includegraphics*[scale=0.96]{ \c__letgut_banner_file_tl.pdf } } @@ -1597,9 +1614,11 @@ following code has to be postponed after the former (hence here \begin{lstlisting} \msg_term:nn{letgut}{Banner~file~not~provided} - \RequirePackage[pagecolor={\g__letgut_pagecolor_clist}]{ - letgut-banner - } + \RequirePackage[ + , pagecolor = { \g__letgut_pagecolor_clist } + , watermark~ letter = { \g__letgut_watermark_letter_tl } + , watermark~ scale = { \g__letgut_watermark_scale_tl } + ]{letgut-banner} } \end{lstlisting} @@ -2093,7 +2112,7 @@ items are correct. \begin{lstlisting} \NewDocumentCommand {\francophony} { } { \raisebox{-1.5pt}{ - \includegraphics*[width=\f@size pt]{ + \__letgut_orig_includegraphics*[width=\f@size pt]{ letgut-francophony-icon } } @@ -2868,7 +2887,11 @@ full name of the authors. \citeauthor } \RenewDocumentCommand {\citeauthor} { O{} O{} m } { - \AtNextCite{\DeclareNameAlias{labelname}{given-family}} + \AtNextCite{ + \DeclareNameAlias{labelname}{given-family} + \protected\def\mkbibnamefamily#1{% + \textnohyphenation{#1}}% + } \__letgut_old_citeauthor[#1][#2]{#3} } \end{lstlisting} @@ -2876,7 +2899,7 @@ full name of the authors. \subsection{Book reviews} \label{ImplementationBookreviews-ekzg55h0jlj0} \begin{lstlisting} -\tl_new:N \g__letgut_bookreview_frontcover_tl +\tl_new:N \l__letgut_bookreview_frontcover_tl \tl_new:N \g__letgut_bookreview_bibkey_tl \end{lstlisting} The keys options are created. @@ -2884,7 +2907,7 @@ The keys options are created. \keys_define:nn { letgut/bookreview } { title .tl_gset:N = \g__letgut_bookreview_title_tl, - frontcover .tl_gset:N = \g__letgut_bookreview_frontcover_tl, + frontcover .tl_set:N = \l__letgut_bookreview_frontcover_tl, bibkey .tl_gset:N = \g__letgut_bookreview_bibkey_tl, reviewer .tl_gset:N = \g__letgut_bookreview_reviewer_tl, price .tl_gset:N = \g__letgut_bookreview_price_tl, @@ -2907,9 +2930,10 @@ We create the new environment for the book reviews. \cs_generate_variant:Nn \msg_error:nnnn { nnVV } \NewDocumentEnvironment{bookreview}{ m } { + \tl_gclear:N \g__letgut_bookreview_price_tl \keys_set:nn { letgut/bookreview } { #1 } \section{\g__letgut_bookreview_title_tl} - \tl_if_empty:NTF \g__letgut_bookreview_frontcover_tl { + \tl_if_empty:NTF \l__letgut_bookreview_frontcover_tl { \msg_warning:nnV{letgut}{frontcover-missing}{ \g__letgut_bookreview_title_tl } @@ -2921,7 +2945,7 @@ extensions of the \lstinline+graphicx+ package. \begin{lstlisting} \clist_map_inline:Nn \Gin@extensions { - \file_if_exist:nT{\g__letgut_bookreview_frontcover_tl##1}{ + \file_if_exist:nT{\l__letgut_bookreview_frontcover_tl##1}{ \bool_set_true:N \l__letgut_tmpa_bool \clist_map_break: } @@ -2932,8 +2956,8 @@ extensions of the \lstinline+graphicx+ package. % \raggedleft \raisebox{-\totalheight}{ \fbox{ - \includegraphics[width=-\c__letgut_title_hoffset_dim]{ - \g__letgut_bookreview_frontcover_tl + \includegraphics*[width=-\c__letgut_title_hoffset_dim]{ + \l__letgut_bookreview_frontcover_tl } } } @@ -2943,7 +2967,7 @@ extensions of the \lstinline+graphicx+ package. {letgut} {frontcover-file-not-found} {\g__letgut_bookreview_title_tl} - {\g__letgut_bookreview_frontcover_tl} + {\l__letgut_bookreview_frontcover_tl} } } \noindent @@ -3094,9 +3118,9 @@ the current directory and is non empty. This will be applied to both the \begin{lstlisting} \cs_new_protected:Npn \__letgut_attach_non_empty_existing_file:n #1 { - \file_get_size:nN {./#1} \tmpa_tl - \quark_if_no_value:NF \tmpa_tl { - \tl_if_eq:NnF \tmpa_tl {0} { + \file_get_size:nN {./#1.tex} \l__letgut_tmpa_tl + \quark_if_no_value:NF \l__letgut_tmpa_tl { + \tl_if_eq:NnF \l__letgut_tmpa_tl {0} { \seq_gput_left:Nn \g__letgut_included_files_seq { \attachfile[ description={Source~ nécessaire~ (fichier~ `#1.tex`)}, @@ -3114,7 +3138,9 @@ the current directory and is non empty. This will be applied to both the \FloatBarrier \lstset{ style=__letgut_reset_listings_styles } \acresetall% - \input{#2}% + \begin{refsection} + \input{#2}% + \end{refsection} \bool_if:NT \g__letgut_included_files_attached_bool { \IfBooleanF {#1}{ \__letgut_attach_non_empty_existing_file:n { @@ -3140,7 +3166,7 @@ the current directory and is non empty. This will be applied to both the } } \seq_remove_duplicates:N \g__letgut_included_files_seq - \marginpar{\seq_use:Nn \g__letgut_included_files_seq { } } + \seq_use:Nn \g__letgut_included_files_seq { \c_space_tl } \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 @@ -3162,7 +3188,7 @@ to the \pdf{} (if desired, otherwise, use the starred version). \clist_set:Nx \l__letgut_tmpa_clist {\Gin@extensions} \cs_new_protected:Npn \__letgut_includegraphics:nnn #1 #2 #3 { - \file_if_exist:nTF {#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 { @@ -3172,16 +3198,15 @@ to the \pdf{} (if desired, otherwise, use the starred version). présent~ article~ (fichier~ `#3`) }, mimetype=image - ] - {#3} + ]{./#3} } } } - \__letgut_orig_includegraphics[#2]{#3} + \__letgut_orig_includegraphics[#2]{./#3} }{ \bool_gset_false:N \g__letgut_tmpa_bool \clist_map_inline:Nn \l__letgut_tmpa_clist {% - \file_if_exist:nTF {#3##1} { + \file_if_exist:nT {./#3##1} { \clist_map_break:n { \bool_if:NT \g__letgut_included_files_attached_bool { \IfBooleanF {#1}{ @@ -3189,8 +3214,7 @@ to the \pdf{} (if desired, otherwise, use the starred version). \attachfile[ description={Fichier~ image~ inclus~ dans~ le~ présent~ article~ (fichier~ `#3##1`)}, mimetype=image/##1 - ] - {#3##1} + ]{./#3##1} } } } @@ -3199,11 +3223,11 @@ to the \pdf{} (if desired, otherwise, use the starred version). } } } - \bool_if:NF \g__letgut_tmpa_bool { - \@latex@error{File~ `#3'~ not~ found}% - {I~ could~ not~ locate~ the~ file~ with~ any~ of~ these~ extensions:^^J% - \clist_use:Nn \l__letgut_tmpa_clist { ~ }^^J\@ehc}% - } + % \bool_if:NF \g__letgut_tmpa_bool { + % \@latex@error{File~ `#3'~ not~ found}% + % {I~ could~ not~ locate~ the~ file~ with~ any~ of~ these~ extensions:^^J% + % \clist_use:Nn \l__letgut_tmpa_clist { ~ }^^J\@ehc}% + % } } } \RenewDocumentCommand {\includegraphics} {s O{} m } { @@ -3927,41 +3951,18 @@ will be displayed. style=__letgut_terminal_listings_style, language=terminal, }, - every~ listing~ line={% - \textcolor{__letgut_terminal_prompt}{% - \ttfamily% - \bfseries% - \__letgut_unselectable:n {#1\c_space_tl} - } - }, + fontupper=\ttfamily, + fontlower=\ttfamily, }, } \end{lstlisting} -We define now the command +We now define the command. \begin{lstlisting} \cs_new_protected:Npn \__letgut_terminal:nnnn #1 #2 #3 #4 { \bool_set_false:N \l__letgut_tmpa_bool - \tl_if_empty:nF {#3}{ - \tcbset{tempfile=\jobname-stdin.tex} - \exp_args:Nx \scantokens - { - \token_to_str:N\begin{tcbwritetemp} - #3 - \token_to_str:N\end{tcbwritetemp} - } - } - \tl_if_empty:nF {#4}{ - \tcbset{tempfile=\jobname-stdout.tex} - \exp_args:Nx \scantokens - { - \token_to_str:N\begin{tcbwritetemp} - #4 - \token_to_str:N\end{tcbwritetemp} - } - } \tl_if_empty:nTF {#3}{ \tl_if_empty:nTF {#4}{ \bool_set_true:N \l__letgut_tmpa_bool @@ -3970,24 +3971,25 @@ We define now the command } }{ \tcbset{colback=__letgut_background_terminal_stdin} - \tl_if_empty:nTF {#4}{ - }{ + \tl_if_empty:nF {#4}{ \tcbset{ bicolor, - middle=0mm, - boxsep=0mm, colbacklower=__letgut_background_terminal_stdout, } } } \bool_if:NF \l__letgut_tmpa_bool { - \begin{tcolorbox}[terminal={#1},#2] + \begin{tcolorbox}[terminal,#2] \lstset{aboveskip=0pt} \tl_if_empty:nF {#3}{ - \tcbset{ - tempfile=\jobname-stdin.tex, + \tl_if_empty:nF {#1}{ + \textcolor{__letgut_terminal_prompt}{% + \ttfamily% + \bfseries% + \__letgut_unselectable:n {#1\c_space_tl} + } } - \tcbusetemplisting + #3 \tl_if_empty:nF {#4}{ \tcblower } @@ -3997,13 +3999,12 @@ We define now the command \lstset{aboveskip=0pt} } \tcbset{ - tempfile=\jobname-stdout.tex, every~ listing~ line={}, listing~ options~ app={ language={} } } - \tcbusetemplisting + #4 } \end{tcolorbox} } @@ -4021,14 +4022,14 @@ We close the \lstinline+\AddToHook{begindocument/before}+ argument. \subsubsection{Unicode characters with positions above 256} \label{ImplementationListingsUnicodecharacterswithpositionsabove256-4l6h55h0jlj0} -Unicode characters with positions above 256 causes troubles in +Unicode characters with positions above 256 cause troubles in listings. Here is a workaround for some of them (see \url{https://tex.stackexchange.com/a/25396}). \begin{lstlisting} \lst@InputCatcodes \def\lst@DefEC{% - \lst@CCECUse \lst@ProcessLetter + \lst@CCECUse \lst@ProcessLetter ^^80^^81^^82^^83^^84^^85^^86^^87^^88^^89^^8a^^8b^^8c^^8d^^8e^^8f% ^^90^^91^^92^^93^^94^^95^^96^^97^^98^^99^^9a^^9b^^9c^^9d^^9e^^9f% ^^a0^^a1^^a2^^a3^^a4^^a5^^a6^^a7^^a8^^a9^^aa^^ab^^ac^^ad^^ae^^af% @@ -4037,11 +4038,16 @@ listings. Here is a workaround for some of them (see ^^d0^^d1^^d2^^d3^^d4^^d5^^d6^^d7^^d8^^d9^^da^^db^^dc^^dd^^de^^df% ^^e0^^e1^^e2^^e3^^e4^^e5^^e6^^e7^^e8^^e9^^ea^^eb^^ec^^ed^^ee^^ef% ^^f0^^f1^^f2^^f3^^f4^^f5^^f6^^f7^^f8^^f9^^fa^^fb^^fc^^fd^^fe^^ff% - ^^^^201c^^^^201d% for “ and ” + ^^^^201c% for “ + ^^^^201d% for ” ^^^^215b% for ⅛ ^^^^2122% for ™ ^^^^2019% for ’ ^^^^0153% for œ + ^^^^0152% for Œ + ^^^^20ac% for € + ^^^^27e8% for ⟨ + ^^^^27e9% for ⟩ ^^00% } \lst@RestoreCatcodes @@ -4088,7 +4094,7 @@ several purposes: \end{itemize} \begin{lstlisting} -\ProvidesFile{letgut.lbx}[2024-03-07 v0.9.9 letgut localization] +\ProvidesFile{letgut.lbx}[2024-10-07 v0.9.10 letgut localization] \InheritBibliographyExtras{french} \DeclareBibliographyStrings{ inherit = {french}, @@ -4102,7 +4108,7 @@ We create the new bibliography driver \lstinline+bookreview+ (that seems to create the corresponding new entry). \begin{lstlisting} -\ProvidesFile{letgut.dbx}[2024-03-07 v0.9.9 letgut data model macros] +\ProvidesFile{letgut.dbx}[2024-10-07 v0.9.10 letgut data model macros] \DeclareBibliographyDriver{bookreview}{% \usebibmacro{bibindex}% \usebibmacro{begentry}% @@ -4157,7 +4163,7 @@ create the corresponding new entry). We provide a specific \lstinline+biblatex+ citation style . \begin{lstlisting} -\ProvidesFile{letgut.cbx}[2024-03-07 v0.9.9 letgut base citation style] +\ProvidesFile{letgut.cbx}[2024-10-07 v0.9.10 letgut base citation style] \RequireCitationStyle{numeric} \end{lstlisting} @@ -4313,14 +4319,16 @@ de l'association. Il peut aussi y être question du \ctan. % Hey, Emacs! This is a -*- mode: latex -*- file! \enlargethispage{1.5cm} -\small +\scriptsize \vspace*{-1cm} \hspace*{-1.5cm}% +\ExplSyntaxOn \raisebox{-\height+0.7\baselineskip}{% \begin{minipage}[t]{.6\textwidth}%\vspace{0pt}% - \includegraphics*[width=\linewidth]{logo-gut.pdf} + \__letgut_orig_includegraphics*[width=\linewidth]{logo-gut.pdf} \end{minipage}% }% +\ExplSyntaxOff \hfill% \begin{minipage}[t]{.5\textwidth}%\vspace{0pt}% \footnotesize\raggedleft% @@ -4328,7 +4336,7 @@ de l'association. Il peut aussi y être question du \ctan. 15 rue des Halles -- \textsc{bp} 74\\ 75001 Paris\\ France\\ - \url{secretariat[at]gutenberg[dot]eu[dot]org} + \url{secretariat[at]gutenberg-asso[dot]fr} \end{minipage}% \begin{description} @@ -4349,7 +4357,7 @@ de l'association. Il peut aussi y être question du \ctan. \alertbox{% Cette association est la vôtre : faites-nous part de vos idées, de vos envies, de vos préoccupations - à l'adresse \url{secretariat[at]gutenberg[dot]eu[dot]org}.% + à l'adresse \url{secretariat[at]gutenberg-asso[dot]fr}.% } % \section[Association GUTenberg (tout sur l')] @@ -4412,7 +4420,7 @@ Les règlements peuvent s'effectuer par : \item \textbf{virement bancaire}% \footnote{Nous vous remercions de \textbf{privilégier} le \textbf{virement bancaire}.\label{fn:1}} (\textsc{iban} : - FR76 1870 7000 3003 0191 3568 475)% + FR76 3000 3001 0900 0372 6086 280)% \leavevmode \alertbox{% @@ -4427,9 +4435,13 @@ Les règlements peuvent s'effectuer par : \vfill +\mbox{} + +\vfill{} + \begin{center} \begin{tblr}{ - width=.75\linewidth, + width=.9\linewidth, colspec={ % < (Just not to disturb the parentheses % balancing detection of my editor.) @@ -4450,7 +4462,7 @@ Les règlements peuvent s'effectuer par : & \person{Bideault, Patrick} \\ Comité de rédaction : & {Patrick Bideault, Denis Bitouzé, \\ - Céline Chevalier \& Maxime Chupin} \\ + Céline Chevalier, Maxime Chupin \& Bastien Dumont} \\ Adresse de la rédaction : & { Association \gut\\ @@ -4461,8 +4473,6 @@ Les règlements peuvent s'effectuer par : \acs{issn} : & \letgutissn \end{tblr} \end{center} -\vfill -\mbox{} \clearpage \end{lstlisting} diff --git a/Master/texmf-dist/doc/lualatex/letgut/letgut.pdf b/Master/texmf-dist/doc/lualatex/letgut/letgut.pdf Binary files differindex 7b9adbc8e2a..343f249e1a1 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.tex b/Master/texmf-dist/doc/lualatex/letgut/letgut.tex index 14f005d8d79..773feef4595 100644 --- a/Master/texmf-dist/doc/lualatex/letgut/letgut.tex +++ b/Master/texmf-dist/doc/lualatex/letgut/letgut.tex @@ -377,6 +377,28 @@ Les options de la \letgutcls{} peuvent être spécifiées de deux façons : défaut. \end{docKey} +\begin{docKeys}[doc new={2024-10-07}] + { + { + doc name = watermark letter, + doc description = {\valinitdef[g]}, + }, + { + doc name = watermark scale, + doc description = {\valinitdef[1]}, + }, + }% + La première page de la \lettre{} comporte, en filigrane et en gris clair, + (entre autre) un (très grand) \enquote{g}, composé avec la fonte + \enquote{normale}. + \begin{itemize} + \item La clé \refKey{watermark letter} permet de spécifier une lettre autre + qu'un \enquote{g} et/ou composé avec une fonte autre que \enquote{normale}. + \item La clé \refKey{watermark scale} permet de spécifier échelle autre que~1 + pour cette lettre (par exemple si celle-ci s'avère par défaut trop grande). + \end{itemize} +\end{docKeys} + \subsection{Options autres} \label{sec:options-autres} @@ -716,7 +738,7 @@ Unicode a prévu le caractère \Ucode[symbole numéro]{2116}. { doc name = gut }, { doc name = assogut, doc new={2023-01-14} }, { doc name = Assogut, doc new={2023-01-14} }, - { doc name = lettresn doc new={2023-01-14} }, + { doc name = lettres, doc new={2023-01-14} }, { doc name = lettresgut, doc new={2023-01-14} }, { doc name = cahier }, { doc name = cahiers }, @@ -1109,54 +1131,21 @@ fournit la commande à arguments \enquote{verbatim} suivante. Ainsi le code suivant : \begingroup -\lstset{basicstyle=\ttfamily\scriptsize} -\begin{ltx-code}[listing options app={% - deletekeywords={[3]{latex,width,height,string,label,by,example,system,tex}},% - deletetexcs={edef,rlap,smash,expandafter,string}% -}] -\terminal{time rg foobar -g "*.sty" "/home/bitouze/texlive/2022"}{ -/home/bitouze/texlive/2022/texmf-dist/tex/latex/skeyval/skeyval.sty -445:% \usepackage[option1,option2]{foobar} -447:% \expandafter\show\csname foobar.sty.poxkeys\endcsname - -/home/bitouze/texlive/2022/texmf-dist/tex/latex/thmtools/thm-restate.sty -197:%%% support for keyval-style: restate=foobar - -/home/bitouze/texlive/2022/texmf-dist/tex/latex/pinlabel/pinlabel.sty -284:\edef\foobar{[width=\@p@swidth sp,height=\@p@sheight sp]{\@p@dffile}}% -286:\@message{\string\@includegraphics@\foobar}% -287:\rlap{\smash{\expandafter\@includegraphics@\foobar}}% - -/home/bitouze/texlive/2022/texmf-dist/tex/latex/theoremref/theoremref.sty -129: its label by ``\thlabel{foobar}''. For example, - -/home/bitouze/texlive/2022/texmf-dist/tex/latex/qrbill/qrbill.sty -12:%% Marei Peischl (peiTeX) and Alex Antener (foobar LLC). -rg -g 0,25s user 0,23s system 320% cpu 0,150 total +% \lstset{basicstyle=\ttfamily\scriptsize} +\begin{ltx-code} +\terminal{lualatex}{ +This is LuaHBTeX, Version 1.18.0 (TeX Live 2024) + restricted system commands enabled. +** } \end{ltx-code} donne-t-il : -\terminal{time rg foobar -g "*.sty" "/home/bitouze/texlive/2022"}{ -/home/bitouze/texlive/2022/texmf-dist/tex/latex/skeyval/skeyval.sty -445:% \usepackage[option1,option2]{foobar} -447:% \expandafter\show\csname foobar.sty.poxkeys\endcsname - -/home/bitouze/texlive/2022/texmf-dist/tex/latex/thmtools/thm-restate.sty -197:%%% support for keyval-style: restate=foobar - -/home/bitouze/texlive/2022/texmf-dist/tex/latex/pinlabel/pinlabel.sty -284:\edef\foobar{[width=\@p@swidth sp,height=\@p@sheight sp]{\@p@dffile}}% -286:\@message{\string\@includegraphics@\foobar}% -287:\rlap{\smash{\expandafter\@includegraphics@\foobar}}% - -/home/bitouze/texlive/2022/texmf-dist/tex/latex/theoremref/theoremref.sty -129: its label by ``\thlabel{foobar}''. For example, - -/home/bitouze/texlive/2022/texmf-dist/tex/latex/qrbill/qrbill.sty -12:%% Marei Peischl (peiTeX) and Alex Antener (foobar LLC). -rg -g 0,25s user 0,23s system 320% cpu 0,150 total +\terminal{lualatex}{ +This is LuaHBTeX, Version 1.18.0 (TeX Live 2024) + restricted system commands enabled. +** } \endgroup @@ -1290,7 +1279,7 @@ Les fiches de lecture d'un livre sont créées au moyen de l'environnement fichier local de configuration, cf. \vpageref{sec:fichier-local-de}) au moyen de la commande : \begin{ltx-code} -\addbibressource{£\meta{bibliographie}£.bib} +\addbibresource{£\meta{bibliographie}£.bib} \end{ltx-code} \end{dbwarning} \end{docKey} diff --git a/Master/texmf-dist/source/lualatex/letgut/letgut-banner.org b/Master/texmf-dist/source/lualatex/letgut/letgut-banner.org index b9c59dcee83..f618599196d 100644 --- a/Master/texmf-dist/source/lualatex/letgut/letgut-banner.org +++ b/Master/texmf-dist/source/lualatex/letgut/letgut-banner.org @@ -2,7 +2,7 @@ #+TITLE: Support for the banner of the newsletter "La Lettre de GUTenberg" #+AUTHOR: Association GUTenberg -#+EMAIL: secretariat@gutenberg.eu.org +#+EMAIL: secretariat@gutenberg-asso.fr #+DESCRIPTION: ... #+KEYWORDS: ... #+LANGUAGE: en @@ -23,6 +23,9 @@ #+export_file_name: ../../../doc/lualatex/letgut/letgut-banner-code * Readme file +:PROPERTIES: +:CUSTOM_ID: Readmefile-dlkgxqt0fck0 +:END: #+begin_src markdown :tangle no :exports none letgut-banner - Support for the banner of the newsletter @@ -31,12 +34,12 @@ About ------- - This package automatically draw the banner of the newsletter "La Lettre de + This package automatically draws the banner of the newsletter "La Lettre de GUTenberg" with the current main font. Release ------- - 2022-03-17 v0.9 + 2024-10-07 v0.10 Development ----------- @@ -50,13 +53,13 @@ letgut:| Package for the banner of the newsletter | "La Lettre de GUTenberg" Author:| Association GUTenberg - E-mail:| secretariat@gutenberg.eu.org + E-mail:| secretariat@gutenberg-asso.fr License:| Released under the LaTeX Project Public License | v1.3c or later See:| http://www.latex-project.org/lppl.txt -Copyright (C) 1994-2022 by Association GUTenberg - <secretariat@gutenberg.eu.org> +Copyright (C) 1994-2024 by Association GUTenberg + <secretariat@gutenberg-asso.fr> This work may be distributed and/or modified under the conditions of the LaTeX Project Public License (LPPL), either @@ -70,8 +73,14 @@ by Association GUTenberg. #+end_src * Implementation +:PROPERTIES: +:CUSTOM_ID: Implementation-ckogxqt0fck0 +:END: ** Identification +:PROPERTIES: +:CUSTOM_ID: ImplementationIdentification-gwqgxqt0fck0 +:END: #+begin_src This is file `letgut-banner.sty, @@ -93,21 +102,17 @@ Now, we can announce the package name and its version: #+begin_src latex \ProvidesExplPackage{letgut-banner} -{2022-03-17} -{0.9} +{2024-10-07} +{0.10} { Package for the banner of the newsletter "La Lettre de GUTenberg" } #+end_src ** Packages loaded - -In order to provide class options, we load the \package{l3keys2e} which provides -\LaTeXe{} option processing using \LaTeX3 keys: - - #+begin_src latex -\RequirePackage{l3keys2e} - #+end_src +:PROPERTIES: +:CUSTOM_ID: ImplementationPackagesloaded-etvgxqt0fck0 +:END: Till the Lua-based color will be added to the core \package{l3color} approach, we have to rely on \package{xcolor} @@ -123,32 +128,19 @@ reader who wants to copy the interesting text be able to select it (see below). \RequirePackage{accsupp} #+end_src -What follows has to be done at this end of the preamble, otherwise the font set -with ~\setmainfont~ in the preamble isn't taken in account in the banner. - -We define an option for the color of the text in the "L" (that has to be the -same as the page color of the document). - -#+begin_src latex - \keys_define:nn { letgut-banner } - { - , pagecolor .clist_gset:N = \g__letgutbanner_pagecolor_clist - , pagecolor .initial:n = { 1,1,1 } - } - \ProcessKeysOptions { letgut-banner } -#+end_src - -#+begin_src latex -\AddToHook{begindocument}{ -#+end_src - #+begin_src latex \cs_generate_variant:Nn \color_fill:nn { nV } #+end_src ** Declarations +:PROPERTIES: +:CUSTOM_ID: ImplementationDeclarations-u0ygxqt0fck0 +:END: *** Dimensions +:PROPERTIES: +:CUSTOM_ID: ImplementationDeclarationsDimensions-9t0hxqt0fck0 +:END: #+begin_src latex \dim_new:N \g__letgutbanner_area_height_dim @@ -163,6 +155,7 @@ same as the page color of the document). \dim_if_exist:NF \g__letgutbanner_first_page_shrink_dim { \dim_new:N \g__letgutbanner_first_page_shrink_dim } + \dim_new:N \g__letgutbanner_textwidth_dim #+end_src - Dimensions of the page. If the present package is used with the @@ -179,11 +172,9 @@ same as the page color of the document). { 25cm } } \dim_if_exist:NTF \c__letgut_textwidth_dim { - \dim_const:NV \c__letgutbanner_textwidth_dim - \c__letgut_textwidth_dim + \dim_gset_eq:NN \g__letgutbanner_textwidth_dim \c__letgut_textwidth_dim }{ - \dim_const:Nn \c__letgutbanner_textwidth_dim - { 14cm } + \dim_gset:Nn \g__letgutbanner_textwidth_dim { 14cm } } \dim_if_exist:NTF \c__letgut_lmargin_dim { \dim_const:NV \c__letgutbanner_lmargin_dim @@ -260,7 +251,7 @@ same as the page color of the document). margin and the width ($d$) of the "L": $=w+l-(l-d)/2=w+(l+d)/2$). #+begin_src latex \dim_const:Nn \c__letgutbanner_banner_width_dim { - \c__letgutbanner_textwidth_dim + \g__letgutbanner_textwidth_dim + ( \c__letgutbanner_banner_thickness_dim @@ -285,7 +276,7 @@ same as the page color of the document). #+begin_src latex \dim_const:Nn \c__letgutbanner_banner_horizontal_contents_width_dim { - \c__letgutbanner_textwidth_dim + \g__letgutbanner_textwidth_dim - ( \c__letgutbanner_banner_thickness_dim - @@ -297,6 +288,9 @@ same as the page color of the document). #+end_src *** Boxes +:PROPERTIES: +:CUSTOM_ID: ImplementationDeclarationsBoxes-s83hxqt0fck0 +:END: New boxes, for each of the letters in the word "LETTRE" (!), and then for the rest of the content listed in the banner. @@ -312,6 +306,9 @@ rest of the content listed in the banner. #+end_src *** Floating point numbers +:PROPERTIES: +:CUSTOM_ID: ImplementationDeclarationsFloatingpointnumbers-e75hxqt0fck0 +:END: - Minimum percentage of the common height of the letters of the word "LETTRE" that their line spacing must represent. @@ -324,13 +321,16 @@ rest of the content listed in the banner. \fp_const:Nn \c__letgutbanner_leading_La_factor_fp { 1.5 } #+end_src -** Application des dimensions de la page +** Applying the page dimensions +:PROPERTIES: +:CUSTOM_ID: ImplementationApplyingthepagedimensions-187hxqt0fck0 +:END: #+begin_src latex \geometry{ asymmetric, textheight = \c__letgutbanner_textheight_dim, - textwidth = \c__letgutbanner_textwidth_dim, + textwidth = \g__letgutbanner_textwidth_dim, lmargin = \c__letgutbanner_lmargin_dim, tmargin = \c__letgutbanner_tmargin_dim, head = \c__letgutbanner_head_dim, @@ -342,6 +342,9 @@ rest of the content listed in the banner. #+end_src ** Filling of the boxes +:PROPERTIES: +:CUSTOM_ID: ImplementationFillingoftheboxes-q49hxqt0fck0 +:END: #+begin_src latex \hbox_gset:Nn \g__letgutbanner_L_box { \textbf{L} } \hbox_gset:Nn \g__letgutbanner_E_box { \textbf{E} } @@ -354,7 +357,43 @@ rest of the content listed in the banner. \hbox_gset:Nn \g__letgutbanner_g_box { \textbf{g} } #+end_src +** Options of the package +:PROPERTIES: +:CUSTOM_ID: ImplementationOptionsofthepackage-21ri36v0fck0 +:END: + +We define: + +- an option for the color of the text in the "L" (that has to be the same as the + page color of the document), +- an option that let us choose another letter than “g” as the watermark letter. + +#+begin_src latex + \keys_define:nn { letgut-banner } + { + , pagecolor .clist_gset:N = \g__letgutbanner_pagecolor_clist + , pagecolor .initial:n = { 1,1,1 } + , watermark~ letter .code:n = { + \hbox_gset:Nn \g__letgutbanner_g_box { \textbf{#1} } + } + , watermark~ scale .tl_gset:N = \g__letgutbanner_watermark_scale_tl + , watermark~ scale .initial:n = 1 + } + \ProcessKeyOptions [ letgut-banner ] +#+end_src + +What follows has to be done at this end of the preamble, otherwise the font set +with ~\setmainfont~ in the preamble isn't taken in account in the banner. + +#+begin_src latex +\AddToHook{begindocument}{ +#+end_src + + ** Computations +:PROPERTIES: +:CUSTOM_ID: ImplementationComputations-r7bhxqt0fck0 +:END: Determination of the widths of each of the letter boxes of the word "LETTRE". #+begin_src latex @@ -622,9 +661,13 @@ as well. #+end_src Resize the box containing "g" to the width of the text. #+begin_src latex - \box_gresize_to_wd:Nn \g__letgutbanner_g_box { - \c__letgutbanner_textwidth_dim + \box_gresize_to_wd:Nn \g__letgutbanner_g_box { + \fp_to_dim:n { + \g__letgutbanner_watermark_scale_tl + * + \g__letgutbanner_textwidth_dim } + } #+end_src Calculates the size by which the height of the text box on the 1st page must be reduced so that the banner does not encroach on the text. Relative to the top of @@ -647,6 +690,7 @@ the page: .5\baselineskip } #+end_src + Automatic addition on the 1st page (only) of the banner. #+begin_src latex \AddToHookNext{shipout/background}{ @@ -681,85 +725,91 @@ We put now the big "L" at the right place. The color should not be systematically white, but should be identical to the one chosen for the page background. #+begin_src latex - % \color_fill:nV {rgb}{ \g__letgutbanner_pagecolor_clist } - \color[rgb]{ \g__letgutbanner_pagecolor_clist } - \put( - \g__letgutbanner_banner_padding_dim - , - \g__letgutbanner_La_yoffset_dim - ){ - \box_use:N \g__letgutbanner_La_box - } - \put( - \g__letgutbanner_banner_padding_dim - , - \c__letgutbanner_first_letter_yoffset_dim - -0\g__letgutbanner_between_letters_yoffset_dim - ){ - \box_use:N \g__letgutbanner_L_box - } - \put( - \g__letgutbanner_banner_padding_dim - , - \c__letgutbanner_first_letter_yoffset_dim - -1\g__letgutbanner_between_letters_yoffset_dim - ){ - \box_use:N \g__letgutbanner_E_box - } - \put( - \g__letgutbanner_banner_padding_dim - , - \c__letgutbanner_first_letter_yoffset_dim - -2\g__letgutbanner_between_letters_yoffset_dim - ){ - \box_use:N \g__letgutbanner_T_box - } - \put( - \g__letgutbanner_banner_padding_dim - , - \c__letgutbanner_first_letter_yoffset_dim - -3\g__letgutbanner_between_letters_yoffset_dim - ){ - \box_use:N \g__letgutbanner_T_box - } - \put( - \g__letgutbanner_banner_padding_dim - , - \c__letgutbanner_first_letter_yoffset_dim - -4\g__letgutbanner_between_letters_yoffset_dim - ){ - \box_use:N \g__letgutbanner_R_box - } - \put( - \g__letgutbanner_banner_padding_dim - , - \c__letgutbanner_first_letter_yoffset_dim - -5\g__letgutbanner_between_letters_yoffset_dim - ){ - \box_use:N \g__letgutbanner_E_box - } - \put( - \c__letgutbanner_banner_thickness_dim - , - \c__letgutbanner_GUTenberg_yoffset_dim - ){ - \box_use:N \g__letgutbanner_GUTenberg_box - } - % \color_fill:n {black!10} - \color{ black!10 } - \put( - .5\c__letgutbanner_lmargin_dim+.5\c__letgutbanner_banner_thickness_dim - , - .5\paperheight - + - .5\c__letgutbanner_banner_height_dim - - - \c__letgutbanner_tmargin_dim - ){ - \box_move_down:nn {.5\c__letgutbanner_textheight_dim} - {\box_use:N \g__letgutbanner_g_box} + % \color_fill:nV {rgb}{ \g__letgutbanner_pagecolor_clist } + \color[rgb]{ \g__letgutbanner_pagecolor_clist } + \put( + \g__letgutbanner_banner_padding_dim + , + \g__letgutbanner_La_yoffset_dim + ){ + \box_use:N \g__letgutbanner_La_box + } + \put( + \g__letgutbanner_banner_padding_dim + , + \c__letgutbanner_first_letter_yoffset_dim + -0\g__letgutbanner_between_letters_yoffset_dim + ){ + \box_use:N \g__letgutbanner_L_box + } + \put( + \g__letgutbanner_banner_padding_dim + , + \c__letgutbanner_first_letter_yoffset_dim + -1\g__letgutbanner_between_letters_yoffset_dim + ){ + \box_use:N \g__letgutbanner_E_box + } + \put( + \g__letgutbanner_banner_padding_dim + , + \c__letgutbanner_first_letter_yoffset_dim + -2\g__letgutbanner_between_letters_yoffset_dim + ){ + \box_use:N \g__letgutbanner_T_box + } + \put( + \g__letgutbanner_banner_padding_dim + , + \c__letgutbanner_first_letter_yoffset_dim + -3\g__letgutbanner_between_letters_yoffset_dim + ){ + \box_use:N \g__letgutbanner_T_box + } + \put( + \g__letgutbanner_banner_padding_dim + , + \c__letgutbanner_first_letter_yoffset_dim + -4\g__letgutbanner_between_letters_yoffset_dim + ){ + \box_use:N \g__letgutbanner_R_box + } + \put( + \g__letgutbanner_banner_padding_dim + , + \c__letgutbanner_first_letter_yoffset_dim + -5\g__letgutbanner_between_letters_yoffset_dim + ){ + \box_use:N \g__letgutbanner_E_box + } + \put( + \c__letgutbanner_banner_thickness_dim + , + \c__letgutbanner_GUTenberg_yoffset_dim + ){ + \box_use:N \g__letgutbanner_GUTenberg_box + } + % \color_fill:n {black!10} + \color{ black!10 } + \put( + .5\c__letgutbanner_lmargin_dim + + + .5\c__letgutbanner_banner_thickness_dim + + + \fp_to_dim:n { + (1-\g__letgutbanner_watermark_scale_tl)/2*\g__letgutbanner_textwidth_dim + } + , + .5\paperheight + + + .5\c__letgutbanner_banner_height_dim + - + \c__letgutbanner_tmargin_dim + ){ + \box_move_down:nn {.5\c__letgutbanner_textheight_dim} + {\box_use:N \g__letgutbanner_g_box} + } } -} #+end_src We end the part which isn't selectable. #+begin_src latex @@ -789,6 +839,9 @@ textheight of the first page of the height of the horizontal bar of the "L". #+end_src * Example file (=letgut-banner-example.tex=) +:PROPERTIES: +:CUSTOM_ID: Examplefileletgutbannerexampletex-heehxqt0fck0 +:END: #+begin_src latex :tangle ../../../doc/lualatex/letgut/letgut-banner-example.tex :exports none \documentclass[twoside]{article} diff --git a/Master/texmf-dist/source/lualatex/letgut/letgut.org b/Master/texmf-dist/source/lualatex/letgut/letgut.org index 2a96939cd7b..f0c4246487d 100644 --- a/Master/texmf-dist/source/lualatex/letgut/letgut.org +++ b/Master/texmf-dist/source/lualatex/letgut/letgut.org @@ -2,7 +2,7 @@ #+TITLE: Support for the newsletter “La Lettre GUTenberg” #+AUTHOR: Association GUTenberg -#+EMAIL: secretariat@gutenberg.eu.org +#+EMAIL: secretariat@gutenberg-asso.fr #+DESCRIPTION: ... #+KEYWORDS: ... #+LANGUAGE: en @@ -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.9 2024-03-07} + \version{0.9.10 2024-10-07} % ------------------------------------------------------------------------- % This field contains the name of the author(s). % The value is optional. @@ -64,7 +64,7 @@ new versions of the class on CTAN. % This field contains the email address of the uploader. % The value is an email address. % The value is restricted to 255 characters. - \email{secretariat@gutenberg.eu.org} + \email{secretariat@gutenberg-asso.fr} % ------------------------------------------------------------------------- % This field contains the name of the uploader. % The value is restricted to 255 characters. @@ -131,8 +131,18 @@ new versions of the class on CTAN. % The value is optional. % The value is restricted to 8192 characters. \begin{announcement} + ### Changed + - Multiple rebuses handled + - Paper clips (links to source files of the articles) not in the magin anymore and separated by spaces + - Watermark letter and scale can now be specified + ### Fixed - Private scratch variables not declared. + - Wrong output with \terminal + - Title of publication in small capitals + - Options of `letgut-banner` never taken in account + - Not all included graphics attached to the PDF + - Variables wrongly local or not reset + - `\citeauthor` displayed family name in small caps \end{announcement} % ------------------------------------------------------------------------- % This field contains the one-liner for the package. @@ -202,6 +212,21 @@ new versions of the class on CTAN. ## [Unreleased] + ## [0.9.10] - 2024-10-07 + + ### Changed + - Multiple rebuses handled + - Paper clips (links to source files of the articles) not in the magin anymore and separated by spaces + - Watermark letter and scale can now be specified + + ### Fixed + - Wrong output with \terminal + - Title of publication in small capitals + - Options of `letgut-banner` never taken in account + - Not all included graphics attached to the PDF + - Variables wrongly local or not reset + - `\citeauthor` displayed family name in small caps + ## [0.9.9] - 2024-03-07 ### Fixed @@ -325,7 +350,7 @@ to the newsletter “La Lettre GUTenberg” of GUTenberg, the French TeX User Gr Release ------- -2024-03-07 v0.9.9 +2024-10-07 v0.9.10 Development ----------- @@ -399,13 +424,13 @@ the corresponding `.tex` file (which doesn't derive from an Org Mode file). % -------:| ---------------------------------------------------- % letgut:| Class for the newsletter “La Lettre GUTenberg” % Author:| Association GUTenberg -% E-mail:| secretariat@gutenberg.eu.org +% E-mail:| secretariat@gutenberg-asso.fr % License:| Released under the LaTeX Project Public License % | v1.3c or later % See:| http://www.latex-project.org/lppl.txt % % Copyright (C) 1994-2024 by Association GUTenberg -% <secretariat@gutenberg.eu.org> +% <secretariat@gutenberg-asso.fr> % % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License (LPPL), either @@ -449,15 +474,22 @@ 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_Lettre_plain_tl { Lettre } + \tl_const:Nn \c__letgut_Lettre_tl { \emph{ \c__letgut_Lettre_plain_tl } } \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_plain_tl { + \c__letgut_Lettre_plain_tl~\c_space_tl \c__letgut_gutenberg_tl + } \tl_const:Nn \c__letgut_Lettre_gutenberg_tl { \c__letgut_Lettre_tl~\c_space_tl \c__letgut_gutenberg_tl } + \tl_const:Nn \c__letgut_la_lettre_gutenberg_plain_tl { + la~ \c__letgut_Lettre_gutenberg_plain_tl + } \tl_const:Nn \c__letgut_la_lettre_gutenberg_tl { la~ \c__letgut_Lettre_gutenberg_tl } @@ -471,8 +503,8 @@ Now, we can announce the class name and its version: #+begin_src latex \ProvidesExplClass{letgut} - {2024-03-07} - {0.9.9} + {2024-10-07} + {0.9.10} { Class for the newsletter “The GUTenberg Letter” } @@ -1578,7 +1610,10 @@ We now define the options of the class: - ~date~ for the date of the issue, either empty (hence the current (month) date) or at the format ~YYYY-MM~ or as free input, - ~pagecolor~ (relevant only with the (default) ~screen~ load time option) for - a color of the page other than the default one, + a color of the page other than the default one (used behind the scene by the + ~letgut-banner~ package), +- ~watermark letter~ for another letter than the “g” in watermark, +- ~watermark scale~ for the case the letter in watermark is too big, - ~allcolorslinks~ for the color of (all) the links, - ~membership-reminder~ that typesets a membership reminder on the first page, - ~editorial~ depending on the editorial is wanted or not, @@ -1587,7 +1622,7 @@ We now define the options of the class: subparagraphs) detailed or not. #+begin_src latex - \DeclareKeys[ letgut ] + \keys_define:nn { letgut } { , for-readers .bool_gset:N = \g__letgut_for_readers_bool , for-readers .initial:n = { true } @@ -1624,6 +1659,10 @@ We now define the options of the class: } } } + , watermark~ letter .tl_gset:N = \g__letgut_watermark_letter_tl + , watermark~ letter .initial:n = g + , watermark~ scale .tl_gset:N = \g__letgut_watermark_scale_tl + , watermark~ scale .initial:n = 1 , allcolorslinks .code:n = { \colorlet{letgut_allcolors_links}{#1}} , allcolorslinks .initial:V @@ -1688,7 +1727,7 @@ We now define the headers. #+begin_src latex \fancyhf{} \fancyhead[RO,LE]{\thepage} - \fancyhead[RE,LO]{\g__letgut_mark_tl} + \fancyhead[RE,LO]{\scshape \g__letgut_mark_tl} #+end_src - The headers are left offset #+begin_src latex @@ -1889,6 +1928,7 @@ We now define the headers. :END: #+begin_src latex + \int_new:N \g__letgut_rebus_int \NewDocumentCommand{\solution}{}{\tcblower} \NewDocumentCommand{\displaysolutions}{}{% \tcbstoprecording\tcbinputrecords% @@ -1923,25 +1963,27 @@ We now define the headers. }, } } - \NewTColorBox[auto~ counter]{rebus}{+!O{}}{% + \NewTColorBox{rebus}{+!O{}}{% + before~ title~ pre = {\int_gincr:N \g__letgut_rebus_int}, rebus~ style, fonttitle=\bfseries, title={Rébus}, - label={rebus@\thetcbcounter}, - after~ upper={\vpageref[ci-dessous]{solution@\thetcbcounter}}, + label={rebus@\int_use:N\g__letgut_rebus_int}, + after~ upper={\vpageref[ci-dessous]{solution@\int_use:N\g__letgut_rebus_int}}, after~ upper~ pre={ \par\bigskip\hfill\scriptsize\itshape Solution\c_space_tl }, lowerbox=ignored, - savelowerto=rebus-\thetcbcounter.tex, - record={\string\rebussolution*[\thetcbcounter][][]}, + savelowerto=rebus-\int_use:N\g__letgut_rebus_int.tex, + record={\string\rebussolution*[\int_use:N\g__letgut_rebus_int][][]}, #1 } \NewDocumentCommand{\rebussolution}{s +o o O{}}{% \IfValueTF{#2}{ \begin{tcolorbox}[ rebus~ style, + label=solution@\int_use:N\g__letgut_rebus_int, halign=justify, before~ title={\lefthand{}~Solution~ du~ rébus\c_space_tl}, title={ @@ -2014,23 +2056,23 @@ $>0$. # detection of my editor.) #+begin_src latex - > \c_zero_int - {numéro~ \int_use:N\g__letgut_number_int{}~ --~ } - \g__letgut_date_tl - } - \str_if_empty:NTF \g__letgut_@title_str { - \tl_gset:Nn \g__letgut_mark_tl { - \textit{\c__letgut_La_lettre_gutenberg_tl} - } - }{ - \tl_gset:Nn \g__letgut_mark_tl { - \g__letgut_@title_str + > \c_zero_int + {numéro~ \int_use:N\g__letgut_number_int{}~ --~ } + \g__letgut_date_tl + } + \str_if_empty:NTF \g__letgut_@title_str { + \tl_gset:Nn \g__letgut_mark_tl { + \c__letgut_la_lettre_gutenberg_plain_tl + } + }{ + \tl_gset:Nn \g__letgut_mark_tl { + \g__letgut_@title_str + } + } + \tl_gput_right:Nn \g__letgut_mark_tl { + ,~\g__letgut_title_tl + } } - } - \tl_gput_right:Nn \g__letgut_mark_tl { - ,~\g__letgut_title_tl - } - } #+end_src ** First page handling @@ -2059,7 +2101,7 @@ Lettre. { \begin{picture}(0,0) \put(-2cm,-25.275cm){ - \includegraphics*[scale=0.96]{ + \__letgut_orig_includegraphics*[scale=0.96]{ \c__letgut_banner_file_tl.pdf } } @@ -2074,11 +2116,13 @@ following code has to be postponed after the former (hence here ~\AddToHook{begindocument}~ and with ~\AddToHook{begindocument/before}~). #+begin_src latex - \msg_term:nn{letgut}{Banner~file~not~provided} - \RequirePackage[pagecolor={\g__letgut_pagecolor_clist}]{ - letgut-banner + \msg_term:nn{letgut}{Banner~file~not~provided} + \RequirePackage[ + , pagecolor = { \g__letgut_pagecolor_clist } + , watermark~ letter = { \g__letgut_watermark_letter_tl } + , watermark~ scale = { \g__letgut_watermark_scale_tl } + ]{letgut-banner} } - } #+end_src Here starts what is automatically added at the beginning of the document. @@ -2595,7 +2639,7 @@ We define the command that lets us specify the newsletter setup. #+begin_src latex \NewDocumentCommand {\francophony} { } { \raisebox{-1.5pt}{ - \includegraphics*[width=\f@size pt]{ + \__letgut_orig_includegraphics*[width=\f@size pt]{ letgut-francophony-icon } } @@ -3385,7 +3429,11 @@ full name of the authors. \citeauthor } \RenewDocumentCommand {\citeauthor} { O{} O{} m } { - \AtNextCite{\DeclareNameAlias{labelname}{given-family}} + \AtNextCite{ + \DeclareNameAlias{labelname}{given-family} + \protected\def\mkbibnamefamily#1{% + \textnohyphenation{#1}}% + } \__letgut_old_citeauthor[#1][#2]{#3} } #+end_src @@ -3396,7 +3444,7 @@ full name of the authors. :END: #+begin_src latex - \tl_new:N \g__letgut_bookreview_frontcover_tl + \tl_new:N \l__letgut_bookreview_frontcover_tl \tl_new:N \g__letgut_bookreview_bibkey_tl #+end_src The keys options are created. @@ -3404,7 +3452,7 @@ The keys options are created. \keys_define:nn { letgut/bookreview } { title .tl_gset:N = \g__letgut_bookreview_title_tl, - frontcover .tl_gset:N = \g__letgut_bookreview_frontcover_tl, + frontcover .tl_set:N = \l__letgut_bookreview_frontcover_tl, bibkey .tl_gset:N = \g__letgut_bookreview_bibkey_tl, reviewer .tl_gset:N = \g__letgut_bookreview_reviewer_tl, price .tl_gset:N = \g__letgut_bookreview_price_tl, @@ -3423,17 +3471,18 @@ All these options, when used, must receive a value. We create the new environment for the book reviews. #+begin_src latex - \cs_generate_variant:Nn \msg_warning:nnn { nnV } - \cs_generate_variant:Nn \msg_error:nnnn { nnVV } - \NewDocumentEnvironment{bookreview}{ m } - { - \keys_set:nn { letgut/bookreview } { #1 } - \section{\g__letgut_bookreview_title_tl} - \tl_if_empty:NTF \g__letgut_bookreview_frontcover_tl { - \msg_warning:nnV{letgut}{frontcover-missing}{ - \g__letgut_bookreview_title_tl - } - }{ + \cs_generate_variant:Nn \msg_warning:nnn { nnV } + \cs_generate_variant:Nn \msg_error:nnnn { nnVV } + \NewDocumentEnvironment{bookreview}{ m } + { + \tl_gclear:N \g__letgut_bookreview_price_tl + \keys_set:nn { letgut/bookreview } { #1 } + \section{\g__letgut_bookreview_title_tl} + \tl_if_empty:NTF \l__letgut_bookreview_frontcover_tl { + \msg_warning:nnV{letgut}{frontcover-missing}{ + \g__letgut_bookreview_title_tl + } + }{ #+end_src We check if the front cover file is available against the list of accepted @@ -3441,7 +3490,7 @@ extensions of the ~graphicx~ package. #+begin_src latex \clist_map_inline:Nn \Gin@extensions { - \file_if_exist:nT{\g__letgut_bookreview_frontcover_tl##1}{ + \file_if_exist:nT{\l__letgut_bookreview_frontcover_tl##1}{ \bool_set_true:N \l__letgut_tmpa_bool \clist_map_break: } @@ -3452,8 +3501,8 @@ extensions of the ~graphicx~ package. % \raggedleft \raisebox{-\totalheight}{ \fbox{ - \includegraphics[width=-\c__letgut_title_hoffset_dim]{ - \g__letgut_bookreview_frontcover_tl + \includegraphics*[width=-\c__letgut_title_hoffset_dim]{ + \l__letgut_bookreview_frontcover_tl } } } @@ -3463,7 +3512,7 @@ extensions of the ~graphicx~ package. {letgut} {frontcover-file-not-found} {\g__letgut_bookreview_title_tl} - {\g__letgut_bookreview_frontcover_tl} + {\l__letgut_bookreview_frontcover_tl} } } \noindent @@ -3628,9 +3677,9 @@ the current directory and is non empty. This will be applied to both the #+begin_src latex \cs_new_protected:Npn \__letgut_attach_non_empty_existing_file:n #1 { - \file_get_size:nN {./#1} \tmpa_tl - \quark_if_no_value:NF \tmpa_tl { - \tl_if_eq:NnF \tmpa_tl {0} { + \file_get_size:nN {./#1.tex} \l__letgut_tmpa_tl + \quark_if_no_value:NF \l__letgut_tmpa_tl { + \tl_if_eq:NnF \l__letgut_tmpa_tl {0} { \seq_gput_left:Nn \g__letgut_included_files_seq { \attachfile[ description={Source~ nécessaire~ (fichier~ `#1.tex`)}, @@ -3648,7 +3697,9 @@ the current directory and is non empty. This will be applied to both the \FloatBarrier \lstset{ style=__letgut_reset_listings_styles } \acresetall% - \input{#2}% + \begin{refsection} + \input{#2}% + \end{refsection} \bool_if:NT \g__letgut_included_files_attached_bool { \IfBooleanF {#1}{ \__letgut_attach_non_empty_existing_file:n { @@ -3674,7 +3725,7 @@ the current directory and is non empty. This will be applied to both the } } \seq_remove_duplicates:N \g__letgut_included_files_seq - \marginpar{\seq_use:Nn \g__letgut_included_files_seq { } } + \seq_use:Nn \g__letgut_included_files_seq { \c_space_tl } \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 @@ -3699,7 +3750,7 @@ to the \pdf{} (if desired, otherwise, use the starred version). \clist_set:Nx \l__letgut_tmpa_clist {\Gin@extensions} \cs_new_protected:Npn \__letgut_includegraphics:nnn #1 #2 #3 { - \file_if_exist:nTF {#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 { @@ -3709,16 +3760,15 @@ to the \pdf{} (if desired, otherwise, use the starred version). présent~ article~ (fichier~ `#3`) }, mimetype=image - ] - {#3} + ]{./#3} } } } - \__letgut_orig_includegraphics[#2]{#3} + \__letgut_orig_includegraphics[#2]{./#3} }{ \bool_gset_false:N \g__letgut_tmpa_bool \clist_map_inline:Nn \l__letgut_tmpa_clist {% - \file_if_exist:nTF {#3##1} { + \file_if_exist:nT {./#3##1} { \clist_map_break:n { \bool_if:NT \g__letgut_included_files_attached_bool { \IfBooleanF {#1}{ @@ -3726,8 +3776,7 @@ to the \pdf{} (if desired, otherwise, use the starred version). \attachfile[ description={Fichier~ image~ inclus~ dans~ le~ présent~ article~ (fichier~ `#3##1`)}, mimetype=image/##1 - ] - {#3##1} + ]{./#3##1} } } } @@ -3736,11 +3785,11 @@ to the \pdf{} (if desired, otherwise, use the starred version). } } } - \bool_if:NF \g__letgut_tmpa_bool { - \@latex@error{File~ `#3'~ not~ found}% - {I~ could~ not~ locate~ the~ file~ with~ any~ of~ these~ extensions:^^J% - \clist_use:Nn \l__letgut_tmpa_clist { ~ }^^J\@ehc}% - } + % \bool_if:NF \g__letgut_tmpa_bool { + % \@latex@error{File~ `#3'~ not~ found}% + % {I~ could~ not~ locate~ the~ file~ with~ any~ of~ these~ extensions:^^J% + % \clist_use:Nn \l__letgut_tmpa_clist { ~ }^^J\@ehc}% + % } } } \RenewDocumentCommand {\includegraphics} {s O{} m } { @@ -4478,41 +4527,18 @@ We define some colors used in the terminal listings. style=__letgut_terminal_listings_style, language=terminal, }, - every~ listing~ line={% - \textcolor{__letgut_terminal_prompt}{% - \ttfamily% - \bfseries% - \__letgut_unselectable:n {#1\c_space_tl} - } - }, + fontupper=\ttfamily, + fontlower=\ttfamily, }, } #+end_src - We define now the command + We now define the command. #+begin_src latex \cs_new_protected:Npn \__letgut_terminal:nnnn #1 #2 #3 #4 { \bool_set_false:N \l__letgut_tmpa_bool - \tl_if_empty:nF {#3}{ - \tcbset{tempfile=\jobname-stdin.tex} - \exp_args:Nx \scantokens - { - \token_to_str:N\begin{tcbwritetemp} - #3 - \token_to_str:N\end{tcbwritetemp} - } - } - \tl_if_empty:nF {#4}{ - \tcbset{tempfile=\jobname-stdout.tex} - \exp_args:Nx \scantokens - { - \token_to_str:N\begin{tcbwritetemp} - #4 - \token_to_str:N\end{tcbwritetemp} - } - } \tl_if_empty:nTF {#3}{ \tl_if_empty:nTF {#4}{ \bool_set_true:N \l__letgut_tmpa_bool @@ -4521,24 +4547,25 @@ We define some colors used in the terminal listings. } }{ \tcbset{colback=__letgut_background_terminal_stdin} - \tl_if_empty:nTF {#4}{ - }{ + \tl_if_empty:nF {#4}{ \tcbset{ bicolor, - middle=0mm, - boxsep=0mm, colbacklower=__letgut_background_terminal_stdout, } } } \bool_if:NF \l__letgut_tmpa_bool { - \begin{tcolorbox}[terminal={#1},#2] + \begin{tcolorbox}[terminal,#2] \lstset{aboveskip=0pt} \tl_if_empty:nF {#3}{ - \tcbset{ - tempfile=\jobname-stdin.tex, + \tl_if_empty:nF {#1}{ + \textcolor{__letgut_terminal_prompt}{% + \ttfamily% + \bfseries% + \__letgut_unselectable:n {#1\c_space_tl} + } } - \tcbusetemplisting + #3 \tl_if_empty:nF {#4}{ \tcblower } @@ -4548,13 +4575,12 @@ We define some colors used in the terminal listings. \lstset{aboveskip=0pt} } \tcbset{ - tempfile=\jobname-stdout.tex, every~ listing~ line={}, listing~ options~ app={ language={} } } - \tcbusetemplisting + #4 } \end{tcolorbox} } @@ -4575,14 +4601,14 @@ We define some colors used in the terminal listings. :CUSTOM_ID: ImplementationListingsUnicodecharacterswithpositionsabove256-4l6h55h0jlj0 :END: -Unicode characters with positions above 256 causes troubles in +Unicode characters with positions above 256 cause troubles in listings. Here is a workaround for some of them (see https://tex.stackexchange.com/a/25396). #+begin_src latex \lst@InputCatcodes \def\lst@DefEC{% - \lst@CCECUse \lst@ProcessLetter + \lst@CCECUse \lst@ProcessLetter ^^80^^81^^82^^83^^84^^85^^86^^87^^88^^89^^8a^^8b^^8c^^8d^^8e^^8f% ^^90^^91^^92^^93^^94^^95^^96^^97^^98^^99^^9a^^9b^^9c^^9d^^9e^^9f% ^^a0^^a1^^a2^^a3^^a4^^a5^^a6^^a7^^a8^^a9^^aa^^ab^^ac^^ad^^ae^^af% @@ -4591,11 +4617,16 @@ https://tex.stackexchange.com/a/25396). ^^d0^^d1^^d2^^d3^^d4^^d5^^d6^^d7^^d8^^d9^^da^^db^^dc^^dd^^de^^df% ^^e0^^e1^^e2^^e3^^e4^^e5^^e6^^e7^^e8^^e9^^ea^^eb^^ec^^ed^^ee^^ef% ^^f0^^f1^^f2^^f3^^f4^^f5^^f6^^f7^^f8^^f9^^fa^^fb^^fc^^fd^^fe^^ff% - ^^^^201c^^^^201d% for “ and ” + ^^^^201c% for “ + ^^^^201d% for ” ^^^^215b% for ⅛ ^^^^2122% for ™ ^^^^2019% for ’ ^^^^0153% for œ + ^^^^0152% for Œ + ^^^^20ac% for € + ^^^^27e8% for ⟨ + ^^^^27e9% for ⟩ ^^00% } \lst@RestoreCatcodes @@ -4646,7 +4677,7 @@ several purposes: - the books advertisements. #+begin_src latex :tangle ../../../tex/lualatex/letgut/letgut.lbx :exports both -\ProvidesFile{letgut.lbx}[2024-03-07 v0.9.9 letgut localization] +\ProvidesFile{letgut.lbx}[2024-10-07 v0.9.10 letgut localization] \InheritBibliographyExtras{french} \DeclareBibliographyStrings{ inherit = {french}, @@ -4660,7 +4691,7 @@ several purposes: create the corresponding new entry). #+begin_src latex :tangle ../../../tex/lualatex/letgut/letgut.dbx :exports both - \ProvidesFile{letgut.dbx}[2024-03-07 v0.9.9 letgut data model macros] + \ProvidesFile{letgut.dbx}[2024-10-07 v0.9.10 letgut data model macros] \DeclareBibliographyDriver{bookreview}{% \usebibmacro{bibindex}% \usebibmacro{begentry}% @@ -4715,7 +4746,7 @@ several purposes: We provide a specific ~biblatex~ citation style . #+begin_src latex :tangle ../../../tex/lualatex/letgut/letgut.cbx :exports both - \ProvidesFile{letgut.cbx}[2024-03-07 v0.9.9 letgut base citation style] + \ProvidesFile{letgut.cbx}[2024-10-07 v0.9.10 letgut base citation style] \RequireCitationStyle{numeric} #+end_src @@ -4879,162 +4910,166 @@ well... :CUSTOM_ID: ProvidedfilesInformationsabout\gutenberg-hqah55h0jlj0 :END: - #+begin_src latex :tangle ../../../tex/lualatex/letgut/informations-gut.tex :exports both - % Hey, Emacs! This is a -*- mode: latex -*- file! +#+begin_src latex :tangle ../../../tex/lualatex/letgut/informations-gut.tex :exports both + % Hey, Emacs! This is a -*- mode: latex -*- file! - \enlargethispage{1.5cm} - \small - \vspace*{-1cm} - \hspace*{-1.5cm}% - \raisebox{-\height+0.7\baselineskip}{% - \begin{minipage}[t]{.6\textwidth}%\vspace{0pt}% - \includegraphics*[width=\linewidth]{logo-gut.pdf} - \end{minipage}% - }% - \hfill% - \begin{minipage}[t]{.5\textwidth}%\vspace{0pt}% - \footnotesize\raggedleft% - Association \gut{}\\ - 15 rue des Halles -- \textsc{bp} 74\\ - 75001 Paris\\ - France\\ - \url{secretariat[at]gutenberg[dot]eu[dot]org} - \end{minipage}% - - \begin{description} - \item[Site Internet :] \url{https://www.gutenberg-asso.fr/} - \item[\Cahiers{} :] \url{http://www.numdam.org/journals/CG/} - \item[Problèmes techniques :] - \leavevmode - \begin{description} - \item[la liste \texttt{gut} :] - \url{https://www.gutenberg-asso.fr/-Listes-de-diffusion-} - \item[le site \hologo{TeX}nique de questions et réponses :] - \url{https://texnique.fr/} - \item[la foire aux questions :] - \url{https://faq.gutenberg-asso.fr/} - \end{description} - \end{description} - % - \alertbox{% - Cette association est la vôtre : faites-nous part de - vos idées, de vos envies, de vos préoccupations - à l'adresse \url{secretariat[at]gutenberg[dot]eu[dot]org}.% - } + \enlargethispage{1.5cm} + \scriptsize + \vspace*{-1cm} + \hspace*{-1.5cm}% + \ExplSyntaxOn + \raisebox{-\height+0.7\baselineskip}{% + \begin{minipage}[t]{.6\textwidth}%\vspace{0pt}% + \__letgut_orig_includegraphics*[width=\linewidth]{logo-gut.pdf} + \end{minipage}% + }% + \ExplSyntaxOff + \hfill% + \begin{minipage}[t]{.5\textwidth}%\vspace{0pt}% + \footnotesize\raggedleft% + Association \gut{}\\ + 15 rue des Halles -- \textsc{bp} 74\\ + 75001 Paris\\ + France\\ + \url{secretariat[at]gutenberg-asso[dot]fr} + \end{minipage}% - % \section[Association GUTenberg (tout sur l')] - % {Adhésion à l'association} - \title{Adhésion à l'association} - \label{letgut_label_adhesions} - - \begin{itemize} - \item % Adhésions et abonnements - Les adhésions sont à renouveler en début d'année - pour l'année civile. - % \item Il n'y a pas de lettre de rappel, chaque membre - % doit faire son renouvellement annuel; %\hspace*{1em} - % merci de renvoyer spontanément le bulletin ci-dessous - % en début d'année. - \item Les administrations peuvent joindre un bon de commande - revêtu de la signature de la personne responsable ; - les étudiants doivent joindre un justificatif. - % \item Si vous souhaitez que vos coordonnées restent - % confidentielles, merci de le signaler. - \end{itemize} - - \vspace*{-0.7cm} - \section{Tarifs \the\year} - - Les membres de \gut\ peuvent adhérer à l'association - internationale, le \acf{tug}, et recevoir son bulletin - \tugboat{} à un tarif préférentiel : - \begin{description} - \item[tarif normal :] 65~€ (au lieu de 85~\$) - \item[tarif étudiant :] 40~€ (au lieu de 55~\$) - \end{description} - % (49~€50}, étudiants et demandeurs d'emploi : - % 29~€, au lieu de 85\$ et % 65\$). Voir - % \url{% - % https://www.gutenberg-asso.fr/?Adherer-en-ligne% - % }. - - \footnotesize - \begin{center} - \begin{tabular}{lr} - \toprule - \textbf{Type d'adhésion} & \textbf{Prix} \\ - \midrule - Membre individuel & 30~€ \\ - Membre individuel + adhésion \acs{tug} & 95~€ \\ - Membre individuel étudiant/demandeur d'emploi & 15~€ \\ - Membre individuel étudiant + adhésion \acs{tug} & 55~€ \\ - Association d'étudiants & 65~€ \\ - Organisme à but non lucratif & 130~€ \\ - Organisme à but lucratif & 229~€ \\ - \bottomrule - \end{tabular} - \end{center} - - \section{Règlements} - - Les règlements peuvent s'effectuer par : - \begin{itemize} - \item \textbf{virement bancaire}% - \footnote{Nous vous remercions de \textbf{privilégier} - le \textbf{virement bancaire}.\label{fn:1}} (\textsc{iban} : - FR76 1870 7000 3003 0191 3568 475)% - \leavevmode - - \alertbox{% - Veillez à bien \emph{indiquer vos nom et prénom} - dans les références du virement !% - } - \item Paypal\footnotemark[\value{footnote}] : - \url{https://www.gutenberg-asso.fr/?Adherer-en-ligne} - \item bulletin et chèque\footnotemark[\value{footnote}] : - \url{https://www.gutenberg-asso.fr/?Adherer-a-l-association} - \end{itemize} + \begin{description} + \item[Site Internet :] \url{https://www.gutenberg-asso.fr/} + \item[\Cahiers{} :] \url{http://www.numdam.org/journals/CG/} + \item[Problèmes techniques :] + \leavevmode + \begin{description} + \item[la liste \texttt{gut} :] + \url{https://www.gutenberg-asso.fr/-Listes-de-diffusion-} + \item[le site \hologo{TeX}nique de questions et réponses :] + \url{https://texnique.fr/} + \item[la foire aux questions :] + \url{https://faq.gutenberg-asso.fr/} + \end{description} + \end{description} + % + \alertbox{% + Cette association est la vôtre : faites-nous part de + vos idées, de vos envies, de vos préoccupations + à l'adresse \url{secretariat[at]gutenberg-asso[dot]fr}.% + } - \vfill + % \section[Association GUTenberg (tout sur l')] + % {Adhésion à l'association} + \title{Adhésion à l'association} + \label{letgut_label_adhesions} + + \begin{itemize} + \item % Adhésions et abonnements + Les adhésions sont à renouveler en début d'année + pour l'année civile. + % \item Il n'y a pas de lettre de rappel, chaque membre + % doit faire son renouvellement annuel; %\hspace*{1em} + % merci de renvoyer spontanément le bulletin ci-dessous + % en début d'année. + \item Les administrations peuvent joindre un bon de commande + revêtu de la signature de la personne responsable ; + les étudiants doivent joindre un justificatif. + % \item Si vous souhaitez que vos coordonnées restent + % confidentielles, merci de le signaler. + \end{itemize} + + \vspace*{-0.7cm} + \section{Tarifs \the\year} + + Les membres de \gut\ peuvent adhérer à l'association + internationale, le \acf{tug}, et recevoir son bulletin + \tugboat{} à un tarif préférentiel : + \begin{description} + \item[tarif normal :] 65~€ (au lieu de 85~\$) + \item[tarif étudiant :] 40~€ (au lieu de 55~\$) + \end{description} + % (49~€50}, étudiants et demandeurs d'emploi : + % 29~€, au lieu de 85\$ et % 65\$). Voir + % \url{% + % https://www.gutenberg-asso.fr/?Adherer-en-ligne% + % }. + + \footnotesize + \begin{center} + \begin{tabular}{lr} + \toprule + \textbf{Type d'adhésion} & \textbf{Prix} \\ + \midrule + Membre individuel & 30~€ \\ + Membre individuel + adhésion \acs{tug} & 95~€ \\ + Membre individuel étudiant/demandeur d'emploi & 15~€ \\ + Membre individuel étudiant + adhésion \acs{tug} & 55~€ \\ + Association d'étudiants & 65~€ \\ + Organisme à but non lucratif & 130~€ \\ + Organisme à but lucratif & 229~€ \\ + \bottomrule + \end{tabular} + \end{center} + + \section{Règlements} + + Les règlements peuvent s'effectuer par : + \begin{itemize} + \item \textbf{virement bancaire}% + \footnote{Nous vous remercions de \textbf{privilégier} + le \textbf{virement bancaire}.\label{fn:1}} (\textsc{iban} : + FR76 3000 3001 0900 0372 6086 280)% + \leavevmode + + \alertbox{% + Veillez à bien \emph{indiquer vos nom et prénom} + dans les références du virement !% + } + \item Paypal\footnotemark[\value{footnote}] : + \url{https://www.gutenberg-asso.fr/?Adherer-en-ligne} + \item bulletin et chèque\footnotemark[\value{footnote}] : + \url{https://www.gutenberg-asso.fr/?Adherer-a-l-association} + \end{itemize} - \begin{center} - \begin{tblr}{ - width=.75\linewidth, - colspec={ - % < (Just not to disturb the parentheses - % balancing detection of my editor.) - >{\bfseries}r@{ }X - }, - vline{1,3}={solid}, - hline{1,7}={solid}, - rowsep=0mm, - row{1} = {abovesep+=.25cm}, - row{2} = {belowsep+=.125cm}, - row{6} = {belowsep+=.25cm}, - % colsep=2.5mm, - } - \SetCell[c=2]{c} \emph{La \lettregut}\\ - \SetCell[c=2]{c} \mdseries Bulletin irrégulomestriel - de l'association \gut\\ - Directeur de la publication : - & \person{Bideault, Patrick} \\ - Comité de rédaction : - & {Patrick Bideault, Denis Bitouzé, \\ - Céline Chevalier \& Maxime Chupin} \\ - Adresse de la rédaction : & - { - Association \gut\\ - 15 rue des Halles -- \textsc{bp} 74\\ - 75001 Paris - } - \\ - \acs{issn} : & \letgutissn - \end{tblr} - \end{center} - \vfill - \mbox{} - \clearpage - #+end_src + \vfill + + \mbox{} + + \vfill{} + + \begin{center} + \begin{tblr}{ + width=.9\linewidth, + colspec={ + % < (Just not to disturb the parentheses + % balancing detection of my editor.) + >{\bfseries}r@{ }X + }, + vline{1,3}={solid}, + hline{1,7}={solid}, + rowsep=0mm, + row{1} = {abovesep+=.25cm}, + row{2} = {belowsep+=.125cm}, + row{6} = {belowsep+=.25cm}, + % colsep=2.5mm, + } + \SetCell[c=2]{c} \emph{La \lettregut}\\ + \SetCell[c=2]{c} \mdseries Bulletin irrégulomestriel + de l'association \gut\\ + Directeur de la publication : + & \person{Bideault, Patrick} \\ + Comité de rédaction : + & {Patrick Bideault, Denis Bitouzé, \\ + Céline Chevalier, Maxime Chupin \& Bastien Dumont} \\ + Adresse de la rédaction : & + { + Association \gut\\ + 15 rue des Halles -- \textsc{bp} 74\\ + 75001 Paris + } + \\ + \acs{issn} : & \letgutissn + \end{tblr} + \end{center} + \clearpage +#+end_src ** Acronyms :PROPERTIES: diff --git a/Master/texmf-dist/tex/lualatex/letgut/informations-gut.tex b/Master/texmf-dist/tex/lualatex/letgut/informations-gut.tex index 85e0d6a9f1e..46d125c38d9 100644 --- a/Master/texmf-dist/tex/lualatex/letgut/informations-gut.tex +++ b/Master/texmf-dist/tex/lualatex/letgut/informations-gut.tex @@ -1,14 +1,16 @@ % Hey, Emacs! This is a -*- mode: latex -*- file! \enlargethispage{1.5cm} -\small +\scriptsize \vspace*{-1cm} \hspace*{-1.5cm}% +\ExplSyntaxOn \raisebox{-\height+0.7\baselineskip}{% \begin{minipage}[t]{.6\textwidth}%\vspace{0pt}% - \includegraphics*[width=\linewidth]{logo-gut.pdf} + \__letgut_orig_includegraphics*[width=\linewidth]{logo-gut.pdf} \end{minipage}% }% +\ExplSyntaxOff \hfill% \begin{minipage}[t]{.5\textwidth}%\vspace{0pt}% \footnotesize\raggedleft% @@ -16,7 +18,7 @@ 15 rue des Halles -- \textsc{bp} 74\\ 75001 Paris\\ France\\ - \url{secretariat[at]gutenberg[dot]eu[dot]org} + \url{secretariat[at]gutenberg-asso[dot]fr} \end{minipage}% \begin{description} @@ -37,7 +39,7 @@ \alertbox{% Cette association est la vôtre : faites-nous part de vos idées, de vos envies, de vos préoccupations - à l'adresse \url{secretariat[at]gutenberg[dot]eu[dot]org}.% + à l'adresse \url{secretariat[at]gutenberg-asso[dot]fr}.% } % \section[Association GUTenberg (tout sur l')] @@ -100,7 +102,7 @@ Les règlements peuvent s'effectuer par : \item \textbf{virement bancaire}% \footnote{Nous vous remercions de \textbf{privilégier} le \textbf{virement bancaire}.\label{fn:1}} (\textsc{iban} : - FR76 1870 7000 3003 0191 3568 475)% + FR76 3000 3001 0900 0372 6086 280)% \leavevmode \alertbox{% @@ -115,9 +117,13 @@ Les règlements peuvent s'effectuer par : \vfill +\mbox{} + +\vfill{} + \begin{center} \begin{tblr}{ - width=.75\linewidth, + width=.9\linewidth, colspec={ % < (Just not to disturb the parentheses % balancing detection of my editor.) @@ -138,7 +144,7 @@ Les règlements peuvent s'effectuer par : & \person{Bideault, Patrick} \\ Comité de rédaction : & {Patrick Bideault, Denis Bitouzé, \\ - Céline Chevalier \& Maxime Chupin} \\ + Céline Chevalier, Maxime Chupin \& Bastien Dumont} \\ Adresse de la rédaction : & { Association \gut\\ @@ -149,6 +155,4 @@ Les règlements peuvent s'effectuer par : \acs{issn} : & \letgutissn \end{tblr} \end{center} -\vfill -\mbox{} \clearpage diff --git a/Master/texmf-dist/tex/lualatex/letgut/letgut-banner.sty b/Master/texmf-dist/tex/lualatex/letgut/letgut-banner.sty index e070792feee..bc275a02235 100644 --- a/Master/texmf-dist/tex/lualatex/letgut/letgut-banner.sty +++ b/Master/texmf-dist/tex/lualatex/letgut/letgut-banner.sty @@ -1,20 +1,12 @@ \NeedsTeXFormat{LaTeX2e}[2020-10-01] \ProvidesExplPackage{letgut-banner} -{2022-03-17} -{0.9} +{2024-10-07} +{0.10} { Package for the banner of the newsletter "La Lettre de GUTenberg" } -\RequirePackage{l3keys2e} \RequirePackage{xcolor} \RequirePackage{accsupp} -\keys_define:nn { letgut-banner } -{ - , pagecolor .clist_gset:N = \g__letgutbanner_pagecolor_clist - , pagecolor .initial:n = { 1,1,1 } -} -\ProcessKeysOptions { letgut-banner } -\AddToHook{begindocument}{ \cs_generate_variant:Nn \color_fill:nn { nV } \dim_new:N \g__letgutbanner_area_height_dim \dim_new:N \g__letgutbanner_La_height_dim @@ -28,6 +20,7 @@ \dim_if_exist:NF \g__letgutbanner_first_page_shrink_dim { \dim_new:N \g__letgutbanner_first_page_shrink_dim } +\dim_new:N \g__letgutbanner_textwidth_dim \cs_generate_variant:Nn \dim_const:Nn { NV } \dim_if_exist:NTF \c__letgut_textheight_dim { \dim_const:NV \c__letgutbanner_textheight_dim @@ -37,11 +30,9 @@ { 25cm } } \dim_if_exist:NTF \c__letgut_textwidth_dim { - \dim_const:NV \c__letgutbanner_textwidth_dim - \c__letgut_textwidth_dim + \dim_gset_eq:NN \g__letgutbanner_textwidth_dim \c__letgut_textwidth_dim }{ - \dim_const:Nn \c__letgutbanner_textwidth_dim - { 14cm } + \dim_gset:Nn \g__letgutbanner_textwidth_dim { 14cm } } \dim_if_exist:NTF \c__letgut_lmargin_dim { \dim_const:NV \c__letgutbanner_lmargin_dim @@ -101,7 +92,7 @@ } \dim_const:Nn \c__letgutbanner_banner_padding_dim { .25cm } \dim_const:Nn \c__letgutbanner_banner_width_dim { - \c__letgutbanner_textwidth_dim + \g__letgutbanner_textwidth_dim + ( \c__letgutbanner_banner_thickness_dim @@ -117,7 +108,7 @@ } \dim_const:Nn \c__letgutbanner_banner_horizontal_contents_width_dim { - \c__letgutbanner_textwidth_dim + \g__letgutbanner_textwidth_dim - ( \c__letgutbanner_banner_thickness_dim - @@ -139,7 +130,7 @@ \geometry{ asymmetric, textheight = \c__letgutbanner_textheight_dim, - textwidth = \c__letgutbanner_textwidth_dim, + textwidth = \g__letgutbanner_textwidth_dim, lmargin = \c__letgutbanner_lmargin_dim, tmargin = \c__letgutbanner_tmargin_dim, head = \c__letgutbanner_head_dim, @@ -157,6 +148,18 @@ \textbf{\textit{GUTenberg}} } \hbox_gset:Nn \g__letgutbanner_g_box { \textbf{g} } +\keys_define:nn { letgut-banner } +{ + , pagecolor .clist_gset:N = \g__letgutbanner_pagecolor_clist + , pagecolor .initial:n = { 1,1,1 } + , watermark~ letter .code:n = { + \hbox_gset:Nn \g__letgutbanner_g_box { \textbf{#1} } + } + , watermark~ scale .tl_gset:N = \g__letgutbanner_watermark_scale_tl + , watermark~ scale .initial:n = 1 +} +\ProcessKeyOptions [ letgut-banner ] +\AddToHook{begindocument}{ \dim_const:Nn \c__letgutbanner_L_width_dim { \box_wd:N \g__letgutbanner_L_box } @@ -295,7 +298,11 @@ \g__letgutbanner_largest_LETR_box_height_dim } \box_gresize_to_wd:Nn \g__letgutbanner_g_box { - \c__letgutbanner_textwidth_dim + \fp_to_dim:n { + \g__letgutbanner_watermark_scale_tl + * + \g__letgutbanner_textwidth_dim + } } \dim_gset:Nn \g__letgutbanner_first_page_shrink_dim { \c__letgutbanner_tmargin_dim @@ -398,7 +405,13 @@ % \color_fill:n {black!10} \color{ black!10 } \put( - .5\c__letgutbanner_lmargin_dim+.5\c__letgutbanner_banner_thickness_dim + .5\c__letgutbanner_lmargin_dim + + + .5\c__letgutbanner_banner_thickness_dim + + + \fp_to_dim:n { + (1-\g__letgutbanner_watermark_scale_tl)/2*\g__letgutbanner_textwidth_dim + } , .5\paperheight + diff --git a/Master/texmf-dist/tex/lualatex/letgut/letgut.cbx b/Master/texmf-dist/tex/lualatex/letgut/letgut.cbx index 4a9bad72996..bd5c5f17bb1 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}[2024-03-07 v0.9.9 letgut base citation style] +\ProvidesFile{letgut.cbx}[2024-10-07 v0.9.10 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 55157bc4b3c..721b776bf50 100644 --- a/Master/texmf-dist/tex/lualatex/letgut/letgut.cls +++ b/Master/texmf-dist/tex/lualatex/letgut/letgut.cls @@ -6,13 +6,13 @@ % -------:| ---------------------------------------------------- % letgut:| Class for the newsletter “La Lettre GUTenberg” % Author:| Association GUTenberg -% E-mail:| secretariat@gutenberg.eu.org +% E-mail:| secretariat@gutenberg-asso.fr % License:| Released under the LaTeX Project Public License % | v1.3c or later % See:| http://www.latex-project.org/lppl.txt % % Copyright (C) 1994-2024 by Association GUTenberg -% <secretariat@gutenberg.eu.org> +% <secretariat@gutenberg-asso.fr> % % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License (LPPL), either @@ -31,15 +31,22 @@ % ]{expl3} \NeedsTeXFormat{LaTeX2e}[2020-10-01] \ExplSyntaxOn -\tl_const:Nn \c__letgut_Lettre_tl { \emph{ Lettre } } +\tl_const:Nn \c__letgut_Lettre_plain_tl { Lettre } +\tl_const:Nn \c__letgut_Lettre_tl { \emph{ \c__letgut_Lettre_plain_tl } } \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_plain_tl { + \c__letgut_Lettre_plain_tl~\c_space_tl \c__letgut_gutenberg_tl +} \tl_const:Nn \c__letgut_Lettre_gutenberg_tl { \c__letgut_Lettre_tl~\c_space_tl \c__letgut_gutenberg_tl } +\tl_const:Nn \c__letgut_la_lettre_gutenberg_plain_tl { + la~ \c__letgut_Lettre_gutenberg_plain_tl +} \tl_const:Nn \c__letgut_la_lettre_gutenberg_tl { la~ \c__letgut_Lettre_gutenberg_tl } @@ -48,8 +55,8 @@ } \ExplSyntaxOff \ProvidesExplClass{letgut} -{2024-03-07} -{0.9.9} +{2024-10-07} +{0.9.10} { Class for the newsletter “The GUTenberg Letter” } @@ -642,7 +649,7 @@ \pagecolor[rgb]{\c__letgut_default_pagecolor_screen_clist} \clist_set_eq:NN \g__letgut_pagecolor_clist \c__letgut_default_pagecolor_screen_clist -\DeclareKeys[ letgut ] +\keys_define:nn { letgut } { , for-readers .bool_gset:N = \g__letgut_for_readers_bool , for-readers .initial:n = { true } @@ -679,6 +686,10 @@ } } } + , watermark~ letter .tl_gset:N = \g__letgut_watermark_letter_tl + , watermark~ letter .initial:n = g + , watermark~ scale .tl_gset:N = \g__letgut_watermark_scale_tl + , watermark~ scale .initial:n = 1 , allcolorslinks .code:n = { \colorlet{letgut_allcolors_links}{#1}} , allcolorslinks .initial:V @@ -722,7 +733,7 @@ } \fancyhf{} \fancyhead[RO,LE]{\thepage} -\fancyhead[RE,LO]{\g__letgut_mark_tl} +\fancyhead[RE,LO]{\scshape \g__letgut_mark_tl} \fancyheadoffset[L]{\c__letgut_hoffset_dim} \pagestyle{fancy} \reversemarginpar @@ -838,6 +849,7 @@ #1, coltitle=\l__letgut_toc_color_announce_tl, } +\int_new:N \g__letgut_rebus_int \NewDocumentCommand{\solution}{}{\tcblower} \NewDocumentCommand{\displaysolutions}{}{% \tcbstoprecording\tcbinputrecords% @@ -872,25 +884,27 @@ }, } } -\NewTColorBox[auto~ counter]{rebus}{+!O{}}{% +\NewTColorBox{rebus}{+!O{}}{% + before~ title~ pre = {\int_gincr:N \g__letgut_rebus_int}, rebus~ style, fonttitle=\bfseries, title={Rébus}, - label={rebus@\thetcbcounter}, - after~ upper={\vpageref[ci-dessous]{solution@\thetcbcounter}}, + label={rebus@\int_use:N\g__letgut_rebus_int}, + after~ upper={\vpageref[ci-dessous]{solution@\int_use:N\g__letgut_rebus_int}}, after~ upper~ pre={ \par\bigskip\hfill\scriptsize\itshape Solution\c_space_tl }, lowerbox=ignored, - savelowerto=rebus-\thetcbcounter.tex, - record={\string\rebussolution*[\thetcbcounter][][]}, + savelowerto=rebus-\int_use:N\g__letgut_rebus_int.tex, + record={\string\rebussolution*[\int_use:N\g__letgut_rebus_int][][]}, #1 } \NewDocumentCommand{\rebussolution}{s +o o O{}}{% \IfValueTF{#2}{ \begin{tcolorbox}[ rebus~ style, + label=solution@\int_use:N\g__letgut_rebus_int, halign=justify, before~ title={\lefthand{}~Solution~ du~ rébus\c_space_tl}, title={ @@ -938,7 +952,7 @@ } \str_if_empty:NTF \g__letgut_@title_str { \tl_gset:Nn \g__letgut_mark_tl { - \textit{\c__letgut_La_lettre_gutenberg_tl} + \c__letgut_la_lettre_gutenberg_plain_tl } }{ \tl_gset:Nn \g__letgut_mark_tl { @@ -956,7 +970,7 @@ { \begin{picture}(0,0) \put(-2cm,-25.275cm){ - \includegraphics*[scale=0.96]{ + \__letgut_orig_includegraphics*[scale=0.96]{ \c__letgut_banner_file_tl.pdf } } @@ -964,9 +978,11 @@ } }{ \msg_term:nn{letgut}{Banner~file~not~provided} - \RequirePackage[pagecolor={\g__letgut_pagecolor_clist}]{ - letgut-banner - } + \RequirePackage[ + , pagecolor = { \g__letgut_pagecolor_clist } + , watermark~ letter = { \g__letgut_watermark_letter_tl } + , watermark~ scale = { \g__letgut_watermark_scale_tl } + ]{letgut-banner} } \AddToHook{begindocument/end} { @@ -1282,7 +1298,7 @@ } \NewDocumentCommand {\francophony} { } { \raisebox{-1.5pt}{ - \includegraphics*[width=\f@size pt]{ + \__letgut_orig_includegraphics*[width=\f@size pt]{ letgut-francophony-icon } } @@ -1850,15 +1866,19 @@ \citeauthor } \RenewDocumentCommand {\citeauthor} { O{} O{} m } { - \AtNextCite{\DeclareNameAlias{labelname}{given-family}} + \AtNextCite{ + \DeclareNameAlias{labelname}{given-family} + \protected\def\mkbibnamefamily#1{% + \textnohyphenation{#1}}% + } \__letgut_old_citeauthor[#1][#2]{#3} } -\tl_new:N \g__letgut_bookreview_frontcover_tl +\tl_new:N \l__letgut_bookreview_frontcover_tl \tl_new:N \g__letgut_bookreview_bibkey_tl \keys_define:nn { letgut/bookreview } { title .tl_gset:N = \g__letgut_bookreview_title_tl, - frontcover .tl_gset:N = \g__letgut_bookreview_frontcover_tl, + frontcover .tl_set:N = \l__letgut_bookreview_frontcover_tl, bibkey .tl_gset:N = \g__letgut_bookreview_bibkey_tl, reviewer .tl_gset:N = \g__letgut_bookreview_reviewer_tl, price .tl_gset:N = \g__letgut_bookreview_price_tl, @@ -1871,15 +1891,16 @@ title .value_required:n = true, \cs_generate_variant:Nn \msg_error:nnnn { nnVV } \NewDocumentEnvironment{bookreview}{ m } { + \tl_gclear:N \g__letgut_bookreview_price_tl \keys_set:nn { letgut/bookreview } { #1 } \section{\g__letgut_bookreview_title_tl} - \tl_if_empty:NTF \g__letgut_bookreview_frontcover_tl { + \tl_if_empty:NTF \l__letgut_bookreview_frontcover_tl { \msg_warning:nnV{letgut}{frontcover-missing}{ \g__letgut_bookreview_title_tl } }{ \clist_map_inline:Nn \Gin@extensions { - \file_if_exist:nT{\g__letgut_bookreview_frontcover_tl##1}{ + \file_if_exist:nT{\l__letgut_bookreview_frontcover_tl##1}{ \bool_set_true:N \l__letgut_tmpa_bool \clist_map_break: } @@ -1890,8 +1911,8 @@ title .value_required:n = true, % \raggedleft \raisebox{-\totalheight}{ \fbox{ - \includegraphics[width=-\c__letgut_title_hoffset_dim]{ - \g__letgut_bookreview_frontcover_tl + \includegraphics*[width=-\c__letgut_title_hoffset_dim]{ + \l__letgut_bookreview_frontcover_tl } } } @@ -1901,7 +1922,7 @@ title .value_required:n = true, {letgut} {frontcover-file-not-found} {\g__letgut_bookreview_title_tl} - {\g__letgut_bookreview_frontcover_tl} + {\l__letgut_bookreview_frontcover_tl} } } \noindent @@ -1991,9 +2012,9 @@ title .value_required:n = true, } } \cs_new_protected:Npn \__letgut_attach_non_empty_existing_file:n #1 { - \file_get_size:nN {./#1} \tmpa_tl - \quark_if_no_value:NF \tmpa_tl { - \tl_if_eq:NnF \tmpa_tl {0} { + \file_get_size:nN {./#1.tex} \l__letgut_tmpa_tl + \quark_if_no_value:NF \l__letgut_tmpa_tl { + \tl_if_eq:NnF \l__letgut_tmpa_tl {0} { \seq_gput_left:Nn \g__letgut_included_files_seq { \attachfile[ description={Source~ nécessaire~ (fichier~ `#1.tex`)}, @@ -2008,7 +2029,9 @@ title .value_required:n = true, \FloatBarrier \lstset{ style=__letgut_reset_listings_styles } \acresetall% - \input{#2}% + \begin{refsection} + \input{#2}% + \end{refsection} \bool_if:NT \g__letgut_included_files_attached_bool { \IfBooleanF {#1}{ \__letgut_attach_non_empty_existing_file:n { @@ -2034,7 +2057,7 @@ title .value_required:n = true, } } \seq_remove_duplicates:N \g__letgut_included_files_seq - \marginpar{\seq_use:Nn \g__letgut_included_files_seq { } } + \seq_use:Nn \g__letgut_included_files_seq { \c_space_tl } \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 @@ -2048,7 +2071,7 @@ title .value_required:n = true, \clist_set:Nx \l__letgut_tmpa_clist {\Gin@extensions} \cs_new_protected:Npn \__letgut_includegraphics:nnn #1 #2 #3 { - \file_if_exist:nTF {#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 { @@ -2058,16 +2081,15 @@ title .value_required:n = true, présent~ article~ (fichier~ `#3`) }, mimetype=image - ] - {#3} + ]{./#3} } } } - \__letgut_orig_includegraphics[#2]{#3} + \__letgut_orig_includegraphics[#2]{./#3} }{ \bool_gset_false:N \g__letgut_tmpa_bool \clist_map_inline:Nn \l__letgut_tmpa_clist {% - \file_if_exist:nTF {#3##1} { + \file_if_exist:nT {./#3##1} { \clist_map_break:n { \bool_if:NT \g__letgut_included_files_attached_bool { \IfBooleanF {#1}{ @@ -2075,8 +2097,7 @@ title .value_required:n = true, \attachfile[ description={Fichier~ image~ inclus~ dans~ le~ présent~ article~ (fichier~ `#3##1`)}, mimetype=image/##1 - ] - {#3##1} + ]{./#3##1} } } } @@ -2085,11 +2106,11 @@ title .value_required:n = true, } } } - \bool_if:NF \g__letgut_tmpa_bool { - \@latex@error{File~ `#3'~ not~ found}% - {I~ could~ not~ locate~ the~ file~ with~ any~ of~ these~ extensions:^^J% - \clist_use:Nn \l__letgut_tmpa_clist { ~ }^^J\@ehc}% - } + % \bool_if:NF \g__letgut_tmpa_bool { + % \@latex@error{File~ `#3'~ not~ found}% + % {I~ could~ not~ locate~ the~ file~ with~ any~ of~ these~ extensions:^^J% + % \clist_use:Nn \l__letgut_tmpa_clist { ~ }^^J\@ehc}% + % } } } \RenewDocumentCommand {\includegraphics} {s O{} m } { @@ -2569,36 +2590,13 @@ overlay={ style=__letgut_terminal_listings_style, language=terminal, }, - every~ listing~ line={% - \textcolor{__letgut_terminal_prompt}{% - \ttfamily% - \bfseries% - \__letgut_unselectable:n {#1\c_space_tl} - } - }, + fontupper=\ttfamily, + fontlower=\ttfamily, }, } \cs_new_protected:Npn \__letgut_terminal:nnnn #1 #2 #3 #4 { \bool_set_false:N \l__letgut_tmpa_bool - \tl_if_empty:nF {#3}{ - \tcbset{tempfile=\jobname-stdin.tex} - \exp_args:Nx \scantokens - { - \token_to_str:N\begin{tcbwritetemp} - #3 - \token_to_str:N\end{tcbwritetemp} - } - } - \tl_if_empty:nF {#4}{ - \tcbset{tempfile=\jobname-stdout.tex} - \exp_args:Nx \scantokens - { - \token_to_str:N\begin{tcbwritetemp} - #4 - \token_to_str:N\end{tcbwritetemp} - } - } \tl_if_empty:nTF {#3}{ \tl_if_empty:nTF {#4}{ \bool_set_true:N \l__letgut_tmpa_bool @@ -2607,24 +2605,25 @@ overlay={ } }{ \tcbset{colback=__letgut_background_terminal_stdin} - \tl_if_empty:nTF {#4}{ - }{ + \tl_if_empty:nF {#4}{ \tcbset{ bicolor, - middle=0mm, - boxsep=0mm, colbacklower=__letgut_background_terminal_stdout, } } } \bool_if:NF \l__letgut_tmpa_bool { - \begin{tcolorbox}[terminal={#1},#2] + \begin{tcolorbox}[terminal,#2] \lstset{aboveskip=0pt} \tl_if_empty:nF {#3}{ - \tcbset{ - tempfile=\jobname-stdin.tex, + \tl_if_empty:nF {#1}{ + \textcolor{__letgut_terminal_prompt}{% + \ttfamily% + \bfseries% + \__letgut_unselectable:n {#1\c_space_tl} + } } - \tcbusetemplisting + #3 \tl_if_empty:nF {#4}{ \tcblower } @@ -2634,13 +2633,12 @@ overlay={ \lstset{aboveskip=0pt} } \tcbset{ - tempfile=\jobname-stdout.tex, every~ listing~ line={}, listing~ options~ app={ language={} } } - \tcbusetemplisting + #4 } \end{tcolorbox} } @@ -2651,7 +2649,7 @@ overlay={ } \lst@InputCatcodes \def\lst@DefEC{% - \lst@CCECUse \lst@ProcessLetter + \lst@CCECUse \lst@ProcessLetter ^^80^^81^^82^^83^^84^^85^^86^^87^^88^^89^^8a^^8b^^8c^^8d^^8e^^8f% ^^90^^91^^92^^93^^94^^95^^96^^97^^98^^99^^9a^^9b^^9c^^9d^^9e^^9f% ^^a0^^a1^^a2^^a3^^a4^^a5^^a6^^a7^^a8^^a9^^aa^^ab^^ac^^ad^^ae^^af% @@ -2660,11 +2658,16 @@ overlay={ ^^d0^^d1^^d2^^d3^^d4^^d5^^d6^^d7^^d8^^d9^^da^^db^^dc^^dd^^de^^df% ^^e0^^e1^^e2^^e3^^e4^^e5^^e6^^e7^^e8^^e9^^ea^^eb^^ec^^ed^^ee^^ef% ^^f0^^f1^^f2^^f3^^f4^^f5^^f6^^f7^^f8^^f9^^fa^^fb^^fc^^fd^^fe^^ff% - ^^^^201c^^^^201d% for “ and ” + ^^^^201c% for “ + ^^^^201d% for ” ^^^^215b% for ⅛ ^^^^2122% for ™ ^^^^2019% for ’ ^^^^0153% for œ + ^^^^0152% for Œ + ^^^^20ac% for € + ^^^^27e8% for ⟨ + ^^^^27e9% for ⟩ ^^00% } \lst@RestoreCatcodes diff --git a/Master/texmf-dist/tex/lualatex/letgut/letgut.dbx b/Master/texmf-dist/tex/lualatex/letgut/letgut.dbx index fba8c6ffd01..9e41a37c48e 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}[2024-03-07 v0.9.9 letgut data model macros] +\ProvidesFile{letgut.dbx}[2024-10-07 v0.9.10 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 c02329ca2cc..60aafb8acfe 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}[2024-03-07 v0.9.9 letgut localization] +\ProvidesFile{letgut.lbx}[2024-10-07 v0.9.10 letgut localization] \InheritBibliographyExtras{french} \DeclareBibliographyStrings{ inherit = {french}, |