summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/lualatex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2022-04-05 22:15:26 +0000
committerKarl Berry <karl@freefriends.org>2022-04-05 22:15:26 +0000
commit6d0c6f724ad2952e20446c2431d265cdfc75788c (patch)
tree2b849513fc9a4d1ac57dee12fa84fbe731197e77 /Master/texmf-dist/doc/lualatex
parent7285fff5ec4ef65da7f999cdccc0a92ed6ba843f (diff)
letgut (22mar22)
git-svn-id: svn://tug.org/texlive/trunk@62949 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/doc/lualatex')
-rw-r--r--Master/texmf-dist/doc/lualatex/letgut/CHANGELOG.md8
-rw-r--r--Master/texmf-dist/doc/lualatex/letgut/README.md2
-rw-r--r--Master/texmf-dist/doc/lualatex/letgut/letgut-banner-code.pdfbin0 -> 189834 bytes
-rw-r--r--Master/texmf-dist/doc/lualatex/letgut/letgut-banner-code.tex806
-rw-r--r--Master/texmf-dist/doc/lualatex/letgut/letgut-code.pdfbin444403 -> 444452 bytes
-rw-r--r--Master/texmf-dist/doc/lualatex/letgut/letgut-code.tex18
-rw-r--r--Master/texmf-dist/doc/lualatex/letgut/letgut.pdfbin309781 -> 309776 bytes
-rw-r--r--Master/texmf-dist/doc/lualatex/letgut/letgut.tex2
8 files changed, 824 insertions, 12 deletions
diff --git a/Master/texmf-dist/doc/lualatex/letgut/CHANGELOG.md b/Master/texmf-dist/doc/lualatex/letgut/CHANGELOG.md
index 3aa86a94252..a1090d00528 100644
--- a/Master/texmf-dist/doc/lualatex/letgut/CHANGELOG.md
+++ b/Master/texmf-dist/doc/lualatex/letgut/CHANGELOG.md
@@ -7,6 +7,12 @@ Versioning](http://semver.org/spec/v2.0.0.html).
## [Unreleased]
+## [0.9.1] - 2022-03-22
+
+### Changed
+File renamed (Karl Berry request)
+
## [0.9] - 2022-03-18
-### Added First public testing release
+### Added
+First public testing release
diff --git a/Master/texmf-dist/doc/lualatex/letgut/README.md b/Master/texmf-dist/doc/lualatex/letgut/README.md
index 83e3c69e9d6..9d38f9500d2 100644
--- a/Master/texmf-dist/doc/lualatex/letgut/README.md
+++ b/Master/texmf-dist/doc/lualatex/letgut/README.md
@@ -9,7 +9,7 @@ GUTenberg” with the current main font.
Release
-------
-2022-03-18 v0.9
+2022-03-22 v0.9.1
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
new file mode 100644
index 00000000000..4d8ed777808
--- /dev/null
+++ b/Master/texmf-dist/doc/lualatex/letgut/letgut-banner-code.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/lualatex/letgut/letgut-banner-code.tex b/Master/texmf-dist/doc/lualatex/letgut/letgut-banner-code.tex
new file mode 100644
index 00000000000..aab61f02767
--- /dev/null
+++ b/Master/texmf-dist/doc/lualatex/letgut/letgut-banner-code.tex
@@ -0,0 +1,806 @@
+% Created 2022-03-22 mar. 11:25
+% Intended LaTeX compiler: lualatex
+\documentclass{letgut}
+ \setmainfont{KpRoman}
+\setsansfont{KpSans}
+\setmonofont[Scale = MatchLowercase]{RobotoMono}
+\letgutsetup{editorial=false}
+\input{listings-conf}
+\author{Association GUTenberg}
+\date{\today}
+\title{Support for the banner of the newsletter “La Lettre de GUTenberg”}
+\begin{document}
+
+
+\section{Identification}
+\label{sec:org4c9ba67}
+
+\begin{lstlisting}
+% This is file `letgut.cls',
+% generated with the Emacs Org-babel utility.
+%
+% The original source file is letgut-banner.org
+%
+% -------------:| ---------------------------------------------------
+% letgut-banner:| Package for the banner of the newsletter
+% | “La Lettre GUTenberg”
+% Author:| Association GUTenberg
+% E-mail:| secretariat@gutenberg.eu.org
+% 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>
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License (LPPL), either
+% version 1.3c of this license or (at your option) any later
+% version. The latest version of this license is in the file:
+%
+% http://www.latex-project.org/lppl.txt
+%
+% This work is “maintained” (as per LPPL maintenance status)
+% by Association GUTenberg.
+\end{lstlisting}
+
+\section{Implementation}
+\label{sec:orgb1ea800}
+
+These document classes can only be used with \LaTeXe, so we make
+sure that an appropriate message is displayed when another \TeX{}
+format is used.
+
+\begin{lstlisting}
+\NeedsTeXFormat{LaTeX2e}[2020-10-01]
+\end{lstlisting}
+
+Now, we can announce the package name and its version:
+
+\begin{lstlisting}
+\ProvidesExplPackage{letgut-banner}
+{2022-03-22}
+{0.9.1}
+{
+ Package for the banner of the newsletter “La Lettre de GUTenberg”
+}
+\end{lstlisting}
+
+\subsection{Packages loaded}
+\label{sec:org09b0cd2}
+
+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}
+
+Till the Lua-based color will be added to the core \package{l3color} approach,
+we have to rely on \package{xcolor}
+
+\begin{lstlisting}
+\RequirePackage{xcolor}
+\end{lstlisting}
+
+We want the material added to the first page to be not selectable in order to let the
+reader who wants to copy the interesting text be able to select it (see below).
+
+\begin{lstlisting}
+\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:org61842b5}
+
+\subsubsection{Dimensions}
+\label{sec:org447090b}
+
+\begin{lstlisting}
+\dim_new:N \g__letgutbanner_area_height_dim
+\dim_new:N \g__letgutbanner_La_height_dim
+\dim_new:N \g__letgutbanner_La_depth_dim
+\dim_new:N \g__letgutbanner_La_yoffset_dim
+\dim_new:N \g__letgutbanner_banner_vertical_contents_width_dim
+\dim_new:N \g__letgutbanner_largest_LETR_box_height_dim
+\dim_new:N \g__letgutbanner_between_letters_yoffset_dim
+\dim_new:N \g__letgutbanner_between_letters_vertical_space_dim
+\dim_new:N \g__letgutbanner_banner_padding_dim
+\dim_if_exist:NF \g__letgutbanner_first_page_shrink_dim {
+ \dim_new:N \g__letgutbanner_first_page_shrink_dim
+}
+\end{lstlisting}
+
+\begin{itemize}
+\item Dimensions of the page. If the present package is used with the
+\class*{letgut}, they are borrowed from it. Otherwise, they are set to default
+values. For this, we first generate a variant of \lstinline+\dim_const:Nn+ (see
+\url{https://github.com/latex3/latex3/issues/947\#issuecomment-860950569}).
+\begin{lstlisting}
+\cs_generate_variant:Nn \dim_const:Nn { NV }
+\dim_if_exist:NTF \c__letgut_textheight_dim {
+ \dim_const:NV \c__letgutbanner_textheight_dim
+ \c__letgut_textheight_dim
+}{
+ \dim_const:Nn \c__letgutbanner_textheight_dim
+ { 25cm }
+}
+\dim_if_exist:NTF \c__letgut_textwidth_dim {
+ \dim_const:NV \c__letgutbanner_textwidth_dim
+ \c__letgut_textwidth_dim
+}{
+ \dim_const:Nn \c__letgutbanner_textwidth_dim
+ { 14cm }
+}
+\dim_if_exist:NTF \c__letgut_lmargin_dim {
+ \dim_const:NV \c__letgutbanner_lmargin_dim
+ \c__letgut_lmargin_dim
+}{
+ \dim_const:Nn \c__letgutbanner_lmargin_dim
+ { 5cm }
+}
+\dim_if_exist:NTF \c__letgut_tmargin_dim {
+ \dim_const:NV \c__letgutbanner_tmargin_dim
+ \c__letgut_tmargin_dim
+}{
+ \dim_const:Nn \c__letgutbanner_tmargin_dim
+ { 2.92cm }
+ % \dim_const:Nn \c__letgutbanner_tmargin_dim
+ % { 3cm }
+}
+\dim_if_exist:NTF \c__letgut_head_dim {
+ \dim_const:NV \c__letgutbanner_head_dim
+ \c__letgut_head_dim
+}{
+ \dim_const:Nn \c__letgutbanner_head_dim
+ { 0.6cm }
+}
+\dim_if_exist:NTF \c__letgut_headsep_dim {
+ \dim_const:NV \c__letgutbanner_headsep_dim
+ \c__letgut_headsep_dim
+}{
+ \dim_const:Nn \c__letgutbanner_headsep_dim
+ { 0.82cm }
+ % \dim_const:Nn \c__letgutbanner_headsep_dim
+ % { 0.9cm }
+}
+\dim_if_exist:NTF \c__letgut_marginparwidth_dim {
+ \dim_const:NV \c__letgutbanner_marginparwidth_dim
+ \c__letgut_marginparwidth_dim
+}{
+ \dim_const:Nn \c__letgutbanner_marginparwidth_dim
+ { 3.74cm }
+}
+\end{lstlisting}
+\item Dimensions of the banner. If the present package is used with the
+\class*{letgut}, they are borrowed from it. Otherwise, they are set to
+default values.
+\begin{itemize}
+\item Thickness of the “L”.
+\begin{lstlisting}
+\dim_if_exist:NTF \c__letgut_banner_thickness_dim {
+ \dim_const:NV \c__letgutbanner_banner_thickness_dim
+ \c__letgut_banner_thickness_dim
+}{
+ \dim_const:Nn \c__letgutbanner_banner_thickness_dim
+ { 4cm }
+}
+\end{lstlisting}
+\item Height of the “L” (that of the text area plus 3cm).
+\begin{lstlisting}
+\dim_if_exist:NTF \c__letgut_banner_height_dim {
+ \dim_const:NV \c__letgutbanner_banner_height_dim
+ \c__letgut_banner_height_dim
+}{
+ \dim_const:Nn \c__letgutbanner_banner_height_dim {
+ \c__letgutbanner_textheight_dim
+ +
+ 3cm
+ }
+}
+\end{lstlisting}
+\item Initial padding of the text embedded in the vertical bar of the “L”.
+\begin{lstlisting}
+\dim_const:Nn \c__letgutbanner_banner_padding_dim { .25cm }
+\end{lstlisting}
+\item Width of the “L” (the width (\(w\)) of the text zone plus the width (\(l\)) of
+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
+ +
+ (
+ \c__letgutbanner_banner_thickness_dim
+ +
+ \c__letgutbanner_lmargin_dim
+ )/2
+}
+\end{lstlisting}
+\item Initial width of the text embedded in the “L” vertical bar.
+\begin{lstlisting}
+\dim_const:Nn
+\c__letgutbanner_banner_vertical_contents_width_dim {
+ \c__letgutbanner_banner_thickness_dim
+ -
+ 2\c__letgutbanner_banner_padding_dim
+}
+\end{lstlisting}
+\item Width of the text embedded in the horizontal bar of the “L” (of the text
+area plus half the difference between that of the left margin and that of
+the thickness of the “L”, minus the padding -- and not 2 times the
+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
+ - (
+ \c__letgutbanner_banner_thickness_dim
+ -
+ \c__letgutbanner_lmargin_dim
+ )/2
+ -
+ \c__letgutbanner_banner_padding_dim
+}
+\end{lstlisting}
+\end{itemize}
+\end{itemize}
+
+\subsubsection{Boxes}
+\label{sec:org5711d86}
+
+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}
+\box_new:N \g__letgutbanner_L_box
+\box_new:N \g__letgutbanner_E_box
+\box_new:N \g__letgutbanner_T_box
+\box_new:N \g__letgutbanner_R_box
+\box_new:N \g__letgutbanner_La_box
+\box_new:N \g__letgutbanner_GUTenberg_box
+\box_new:N \g__letgutbanner_largest_LETR_box
+\box_new:N \g__letgutbanner_g_box
+\end{lstlisting}
+
+\subsubsection{Floating point numbers}
+\label{sec:orge5b5c6b}
+
+\begin{itemize}
+\item Minimum percentage of the common height of the letters of the word “LETTRE”
+that their line spacing must represent.
+\end{itemize}
+\begin{lstlisting}
+\fp_const:Nn \c__letgutbanner_leading_minimum_percent_fp { 0.15 }
+\end{lstlisting}
+\begin{itemize}
+\item Factor applied to the line spacing between “La” and the 1st letter of
+“LETTRE” compared to that between the letters of “LETTRE”.
+\end{itemize}
+\begin{lstlisting}
+\fp_const:Nn \c__letgutbanner_leading_La_factor_fp { 1.5 }
+\end{lstlisting}
+
+\subsection{Application des dimensions de la page}
+\label{sec:orgbda0ae2}
+
+\begin{lstlisting}
+\geometry{
+ asymmetric,
+ textheight = \c__letgutbanner_textheight_dim,
+ textwidth = \c__letgutbanner_textwidth_dim,
+ lmargin = \c__letgutbanner_lmargin_dim,
+ tmargin = \c__letgutbanner_tmargin_dim,
+ head = \c__letgutbanner_head_dim,
+ headsep = \c__letgutbanner_headsep_dim,
+ marginparwidth= \c__letgutbanner_marginparwidth_dim,
+ % showframe,
+ % verbose,
+}
+\end{lstlisting}
+
+\subsection{Filling of the boxes}
+\label{sec:orgb3e9382}
+\begin{lstlisting}
+\hbox_gset:Nn \g__letgutbanner_L_box { \textbf{L} }
+\hbox_gset:Nn \g__letgutbanner_E_box { \textbf{E} }
+\hbox_gset:Nn \g__letgutbanner_T_box { \textbf{T} }
+\hbox_gset:Nn \g__letgutbanner_R_box { \textbf{R} }
+\hbox_gset:Nn \g__letgutbanner_La_box { \textbf{\textit{La}} }
+\hbox_gset:Nn \g__letgutbanner_GUTenberg_box {
+ \textbf{\textit{GUTenberg}}
+}
+\hbox_gset:Nn \g__letgutbanner_g_box { \textbf{g} }
+\end{lstlisting}
+
+\subsection{Computations}
+\label{sec:orgdd18dd8}
+
+Determination of the widths of each of the letter boxes of the word “LETTRE”.
+\begin{lstlisting}
+\dim_const:Nn \c__letgutbanner_L_width_dim {
+ \box_wd:N \g__letgutbanner_L_box
+}
+\dim_const:Nn \c__letgutbanner_E_width_dim {
+ \box_wd:N \g__letgutbanner_E_box
+}
+\dim_const:Nn \c__letgutbanner_T_width_dim {
+ \box_wd:N \g__letgutbanner_T_box
+}
+\dim_const:Nn \c__letgutbanner_R_width_dim {
+ \box_wd:N \g__letgutbanner_R_box
+}
+\end{lstlisting}
+Determination of the largest of these widths, stored in the scratch dimension
+\lstinline+\g_tmpa_dim+.
+\begin{lstlisting}
+\dim_gset:Nn \g_tmpa_dim {
+ \fp_eval:n {
+ max (
+ \c__letgutbanner_L_width_dim,
+ \c__letgutbanner_E_width_dim,
+ \c__letgutbanner_T_width_dim,
+ \c__letgutbanner_R_width_dim,
+ )
+ }pt
+}
+\end{lstlisting}
+Determination of the (1st) box whose width is the largest of all (\lstinline+argmax+, as
+it were).
+\begin{lstlisting}
+\box_gset_eq:NN \g__letgutbanner_largest_LETR_box \dim_case:nnF
+{ \g_tmpa_dim }
+{
+ { \c__letgutbanner_L_width_dim } { \g__letgutbanner_L_box }
+ { \c__letgutbanner_E_width_dim } { \g__letgutbanner_E_box }
+ { \c__letgutbanner_T_width_dim } { \g__letgutbanner_T_box }
+ { \c__letgutbanner_R_width_dim } { \g__letgutbanner_R_box }
+}
+{ No~ idea! }
+\end{lstlisting}
+Resize the box containing “GUTenberg” to the width of the text embedded in the
+horizontal bar of the “L”.
+\begin{lstlisting}
+\box_gresize_to_wd:Nn \g__letgutbanner_GUTenberg_box {
+ \c__letgutbanner_banner_horizontal_contents_width_dim
+}
+\end{lstlisting}
+Determination of the height and depth of the box containing “GUTenberg” resized.
+\begin{lstlisting}
+\dim_const:Nn \c__letgutbanner_GUTenberg_height_dim {
+ \box_ht:N \g__letgutbanner_GUTenberg_box
+}
+\dim_const:Nn \c__letgutbanner_GUTenberg_depth_dim {
+ \box_dp:N \g__letgutbanner_GUTenberg_box
+}
+\end{lstlisting}
+Determining the size of the vertical offset of the box containing the resized
+“GUTenberg”, so that it is vertically centered in the horizontal bar of the “L”:
+the box positioned in \(0\) would be at the very bottom of the box containing the
+banner so with base line at the bottom the horizontal bar of the “L” so we raise
+it first by its depth (\(d\)) and then by half the difference between the heights
+(\(H\)) of the horizontal bar of the “L” and (\(h+d\)) total of the box containing
+“GUTenberg” resized (\(=d+H/2-(h+d)/2=(H-h+d)/2\)).
+\begin{lstlisting}
+\dim_const:Nn \c__letgutbanner_GUTenberg_yoffset_dim {
+ (
+ \c__letgutbanner_banner_thickness_dim
+ -
+ \c__letgutbanner_GUTenberg_height_dim
+ +
+ \c__letgutbanner_GUTenberg_depth_dim
+ )/2
+}
+\end{lstlisting}
+Once the height of the zone devoted to “La LETTRE” in the vertical bar of the
+“L” has been fixed, the line spacing between the letters of the word “LETTRE”
+depends in fact only on the width occupied by the widest of them, by definition
+equal to the width allocated to the text embedded in the vertical bar of the
+“L”. The latter, stored in \lstinline+\g__letgutbanner_banner_vertical_contents_width_dim+, is
+initially fixed:
+\begin{lstlisting}
+\dim_gset:Nn
+\g__letgutbanner_banner_vertical_contents_width_dim
+\c__letgutbanner_banner_vertical_contents_width_dim
+\end{lstlisting}
+but, to avoid this line spacing being too small (or even negative), we test that
+it is greater than a certain threshold, equal to a certain minimum percentage of
+the height common to the letters of the word “LETTRE”, stored in:
+
+\lstinline+\c__letgutbanner_leading_minimum_percent_fp+
+
+and fixed at 0.15. If this is not the
+case, we reduce (by 1pt):
+
+\lstinline+\g__letgutbanner_banner_vertical_contents_width_dim+
+
+and loop until it is the case.
+\begin{lstlisting}
+\dim_do_until:nNnn {
+ \g__letgutbanner_between_letters_vertical_space_dim
+}
+>
+{
+ \fp_use:N\c__letgutbanner_leading_minimum_percent_fp
+ \g__letgutbanner_largest_LETR_box_height_dim
+}{
+\end{lstlisting}
+Resize the largest of these boxes to the width of the text embedded in the “L”.
+\begin{lstlisting}
+\box_gresize_to_wd:Nn \g__letgutbanner_largest_LETR_box {
+ \g__letgutbanner_banner_vertical_contents_width_dim
+}
+\end{lstlisting}
+Height of this resized larger box.
+\begin{lstlisting}
+\dim_gset:Nn \g__letgutbanner_largest_LETR_box_height_dim {
+ \box_ht:N \g__letgutbanner_largest_LETR_box
+}
+\end{lstlisting}
+Resize the boxes for each of the letters in the word “LETTRE” so that they are
+all the same height as the widest of them.
+\begin{lstlisting}
+\box_gresize_to_ht:Nn \g__letgutbanner_L_box {
+ \g__letgutbanner_largest_LETR_box_height_dim
+}
+\box_gresize_to_ht:Nn \g__letgutbanner_E_box {
+ \g__letgutbanner_largest_LETR_box_height_dim
+}
+\box_gresize_to_ht:Nn \g__letgutbanner_T_box {
+ \g__letgutbanner_largest_LETR_box_height_dim
+}
+\box_gresize_to_ht:Nn \g__letgutbanner_R_box {
+ \g__letgutbanner_largest_LETR_box_height_dim
+}
+\end{lstlisting}
+Resize the box containing “La” to the width of the text embedded in the “L”
+vertical bar.
+\begin{lstlisting}
+\box_gresize_to_wd:Nn \g__letgutbanner_La_box {
+ \g__letgutbanner_banner_vertical_contents_width_dim
+}
+\end{lstlisting}
+Determine the height (\(h\)) and depth (\(d\)) of the resized box containing “La”.
+\begin{lstlisting}
+\dim_gset:Nn \g__letgutbanner_La_height_dim {
+ \box_ht:N \g__letgutbanner_La_box
+}
+\dim_gset:Nn \g__letgutbanner_La_depth_dim {
+ \box_dp:N \g__letgutbanner_La_box
+}
+\end{lstlisting}
+Determining the size of the vertical offset of the resized box containing “La”
+so that its top is, relative to the top of the “L”, offset by the same amount as
+the bottom of the box containing “GUTenberg” is offset from the bottom of the
+“L” (i.e., the distance from the top of the page to the top of “La” and the
+distance from the bottom of the page to the baseline of “GUTenberg” are
+identical).
+\begin{lstlisting}
+\dim_gset:Nn \g__letgutbanner_La_yoffset_dim {
+ \c__letgutbanner_banner_height_dim
+ -
+ \c__letgutbanner_GUTenberg_yoffset_dim
+ -
+ \g__letgutbanner_La_height_dim
+ +
+ \g__letgutbanner_La_depth_dim
+}
+\end{lstlisting}
+For the following, the area containing the letters of the word “LETTRE” aligned
+vertically is fixed, defined as follows:
+\begin{itemize}
+\item its top is the baseline of “La”,
+\item its bottom is the baseline of “GUTenberg”.
+\end{itemize}
+Determination of the height of this area.
+\begin{lstlisting}
+\dim_gset:Nn \g__letgutbanner_area_height_dim {
+ \g__letgutbanner_La_yoffset_dim
+ -
+ \g__letgutbanner_La_depth_dim
+ -
+ \c__letgutbanner_GUTenberg_yoffset_dim
+}
+\end{lstlisting}
+Determining the vertical jump (\(s\)) between the letters in the word “LETTRE”
+with the constraints that:
+\begin{itemize}
+\item the top of the 1st letter (“L”) is \(3e/2\) below the top of the area (where
+\(e\) is the common vertical space separating the letters of the word
+“LETTRE”),
+\item the baseline of the last letter (“E”) is merged with the bottom of the area,
+\item this jump must not be less than 20 \% of the common height \(h\) to all these
+letters i.e.:
+
+\lstinline+\g__letgutbanner_largest_LETR_box_height_dim+
+
+otherwise the size of the largest of these boxes is reduced to less than the
+width of the text embedded in the “L”.
+\end{itemize}
+
+The sum of :
+\begin{itemize}
+\item the 5 vertical spaces (\(5e\)) between the letters in the word “LETTRE”,
+\item the 6 common heights (\(6h\)) to all these letters,
+\item \(3e/2\),
+\end{itemize}
+must equal the height (\(H\)) of the zone. So we have \(H=3e/2+5e+6h\), that is
+\(e=2(H-6h)/13\). Once initialized, the vertical jump between the letters is
+\(s=e+h\) that is \(s=(2H+h)/13\). Therefore:
+
+\begin{enumerate}
+\item Determine the vertical half-space between the letters.
+\begin{lstlisting}
+\dim_set:Nn \l_tmpa_dim {
+ (
+ \g__letgutbanner_area_height_dim
+ -
+ 6\g__letgutbanner_largest_LETR_box_height_dim
+ )/13
+}
+\end{lstlisting}
+\item Vertical space between letters.
+\begin{lstlisting}
+\dim_gset:Nn \g__letgutbanner_between_letters_vertical_space_dim {
+ 2\l_tmpa_dim
+}
+\end{lstlisting}
+\item If this space does not check the condition explained above, we reduce:
+
+\lstinline+\g__letgutbanner_banner_vertical_contents_width_dim+
+
+and loop.
+\begin{lstlisting}
+\dim_gsub:Nn \g__letgutbanner_banner_vertical_contents_width_dim {
+ 1pt
+ }
+}
+\end{lstlisting}
+\end{enumerate}
+The width allocated to the text embedded in the vertical bar of the “L” may have
+been re-evaluated, so the padding (which must be symmetrical) may have changed
+as well.
+\begin{lstlisting}
+\dim_gset:Nn \g__letgutbanner_banner_padding_dim {
+ (
+ \c__letgutbanner_banner_thickness_dim
+ -
+ \g__letgutbanner_banner_vertical_contents_width_dim
+ )/2
+}
+\end{lstlisting}
+\begin{enumerate}
+\item Determination of the vertical offset of the 1st letter (“L”).
+\begin{lstlisting}
+\dim_const:Nn \c__letgutbanner_first_letter_yoffset_dim {
+ \g__letgutbanner_La_yoffset_dim
+ -
+ \g__letgutbanner_largest_LETR_box_height_dim
+ -
+ \fp_use:N \c__letgutbanner_leading_La_factor_fp
+ \g__letgutbanner_between_letters_vertical_space_dim
+}
+\end{lstlisting}
+\item Determination of the vertical jump between letters.
+\begin{lstlisting}
+\dim_gset:Nn \g__letgutbanner_between_letters_yoffset_dim {
+ \g__letgutbanner_between_letters_vertical_space_dim
+ +
+ \g__letgutbanner_largest_LETR_box_height_dim
+}
+\end{lstlisting}
+\end{enumerate}
+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
+}
+\end{lstlisting}
+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
+the page:
+\begin{itemize}
+\item the top of the horizontal bar of “L” is at a distance equal to the sum of :
+\begin{itemize}
+\item the distance between this top of page and the top of the vertical bar of
+“L”, equal to the height (\(p\)) of the paper minus the height (\(l\)) of “L”
+\end{itemize}
+\end{itemize}
+\begin{lstlisting}
+\dim_gset:Nn \g__letgutbanner_first_page_shrink_dim {
+ \c__letgutbanner_tmargin_dim
+ +
+ \c__letgutbanner_textheight_dim
+ +
+ \c__letgutbanner_banner_thickness_dim
+ -
+ .5\paperheight
+ -
+ .5\c__letgutbanner_banner_height_dim
+ +
+ .5\baselineskip
+}
+\end{lstlisting}
+Automatic addition on the 1st page (only) of the banner.
+\begin{lstlisting}
+\AddToHookNext{shipout/background}{
+\end{lstlisting}
+We want the material added to this page to be not selectable in order to let the
+reader who wants to copy the interesting text be able to select it.
+\begin{lstlisting}
+\BeginAccSupp{ActualText={}}
+\end{lstlisting}
+We put now the big “L” at the right place.
+\begin{lstlisting}
+\put(
+.5\c__letgutbanner_lmargin_dim-.5\c__letgutbanner_banner_thickness_dim
+,
+-.5\paperheight-.5\c__letgutbanner_banner_height_dim
+){
+ \put(0,0){
+ \rule{
+ \c__letgutbanner_banner_width_dim
+ }{
+ \c__letgutbanner_banner_thickness_dim
+ }
+ }
+ \put(0,0){
+ \rule{
+ \c__letgutbanner_banner_thickness_dim
+ }{
+ \c__letgutbanner_banner_height_dim
+ }
+ }
+\end{lstlisting}
+The color should not be systematically white, but should be identical to the one
+chosen for the page background.
+\begin{lstlisting}
+ % \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}
+ }
+}
+\end{lstlisting}
+We end the part which isn't selectable.
+\begin{lstlisting}
+\EndAccSupp{}
+}
+\end{lstlisting}
+
+We close \lstinline+\AddToHook{begindocument}+.
+
+\begin{lstlisting}
+}
+\end{lstlisting}
+
+If the package is used with another class than \class{letgut}, we reduce the
+textheight of the first page of the height of the horizontal bar of the “L”.
+
+\begin{lstlisting}
+\@ifclassloaded{letgut}{
+}{
+ \AddToHook{begindocument/end}{%
+ \enlargethispage{
+ - \g__letgutbanner_first_page_shrink_dim
+ }
+ \thispagestyle{empty}
+ }
+}
+\end{lstlisting}
+
+\section{Example file (\texttt{letgut-banner-example.tex})}
+\label{sec:org4c5e60d}
+
+\begin{lstlisting}
+\documentclass[twoside]{article}
+\usepackage{fontspec}
+\usepackage[a4paper]{geometry}
+\usepackage{fancyhdr}
+\usepackage{letgut-banner}
+\usepackage{lipsum}
+\setmainfont{TeX Gyre Schola}
+\fancyhf{}
+\fancyhead[RO,LE]{\thepage}
+\fancyhead[RE,LO]{Test~\textsf{letgut-banner}}
+\pagestyle{fancy}
+\begin{document}
+\lipsum[1-20]
+\end{document}
+\end{lstlisting}
+\end{document}
diff --git a/Master/texmf-dist/doc/lualatex/letgut/letgut-code.pdf b/Master/texmf-dist/doc/lualatex/letgut/letgut-code.pdf
index bf4c676520e..12da2cdac84 100644
--- a/Master/texmf-dist/doc/lualatex/letgut/letgut-code.pdf
+++ b/Master/texmf-dist/doc/lualatex/letgut/letgut-code.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/lualatex/letgut/letgut-code.tex b/Master/texmf-dist/doc/lualatex/letgut/letgut-code.tex
index 347a2a5c798..672935a5fb0 100644
--- a/Master/texmf-dist/doc/lualatex/letgut/letgut-code.tex
+++ b/Master/texmf-dist/doc/lualatex/letgut/letgut-code.tex
@@ -1,4 +1,4 @@
-% Created 2022-03-18 ven. 19:02
+% Created 2022-03-22 mar. 11:24
% Intended LaTeX compiler: lualatex
\documentclass{letgut}
\setmainfont{KpRoman}
@@ -88,8 +88,8 @@ Now, we can announce the class name and its version:
\begin{lstlisting}
\ProvidesExplClass{letgut}
-{2022-03-18}
-{0.9}
+{2022-03-22}
+{0.9.1}
{
Class~ for~ the~ newsletter~
“\c__letgut_La_lettre_gutenberg_tl”
@@ -1928,7 +1928,7 @@ items are correct.
\NewDocumentCommand {\francophony} { } {
\raisebox{-1.5pt}{
\includegraphics[width=\f@size pt]{
- Flag_of_La_Francophonie-crop
+ letgut-francophony-icon
}
}
}
@@ -2497,7 +2497,7 @@ full name of the authors.
\end{lstlisting}
The keys options are created.
\begin{lstlisting}
-\keys_define:nn { gzt/bookreview }
+\keys_define:nn { letgut/bookreview }
{
title .tl_gset:N = \g__letgut_bookreview_title_tl,
frontcover .tl_gset:N = \g__letgut_bookreview_frontcover_tl,
@@ -2523,7 +2523,7 @@ We create the new environment for the book reviews.
\cs_generate_variant:Nn \msg_error:nnnn { nnVV }
\NewDocumentEnvironment{bookreview}{ m }
{
- \keys_set:nn { gzt/bookreview } { #1 }
+ \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}{
@@ -2992,7 +2992,7 @@ several purposes:
\end{itemize}
\begin{lstlisting}
-\ProvidesFile{letgut.lbx}[2022-03-18 v0.9 letgut localization]
+\ProvidesFile{letgut.lbx}[2022-03-22 v0.9.1 letgut localization]
\InheritBibliographyExtras{french}
\DeclareBibliographyStrings{
inherit = {french},
@@ -3006,7 +3006,7 @@ We create the new bibliography driver \lstinline+bookreview+ (that seems to
create the corresponding new entry).
\begin{lstlisting}
-\ProvidesFile{letgut.dbx}[2022-03-18 v0.9 letgut data model macros]
+\ProvidesFile{letgut.dbx}[2022-03-22 v0.9.1 letgut data model macros]
\DeclareBibliographyDriver{bookreview}{%
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
@@ -3061,7 +3061,7 @@ create the corresponding new entry).
We provide a specific \lstinline+biblatex+ citation style .
\begin{lstlisting}
-\ProvidesFile{letgut.cbx}[2022-03-18 v0.9 letgut base citation style]
+\ProvidesFile{letgut.cbx}[2022-03-22 v0.9.1 letgut base citation style]
\RequireCitationStyle{numeric}
\end{lstlisting}
diff --git a/Master/texmf-dist/doc/lualatex/letgut/letgut.pdf b/Master/texmf-dist/doc/lualatex/letgut/letgut.pdf
index 76847e9bce9..e0d2740a0bc 100644
--- a/Master/texmf-dist/doc/lualatex/letgut/letgut.pdf
+++ b/Master/texmf-dist/doc/lualatex/letgut/letgut.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/lualatex/letgut/letgut.tex b/Master/texmf-dist/doc/lualatex/letgut/letgut.tex
index 4d8c219baa4..f782959e7c8 100644
--- a/Master/texmf-dist/doc/lualatex/letgut/letgut.tex
+++ b/Master/texmf-dist/doc/lualatex/letgut/letgut.tex
@@ -88,7 +88,7 @@
}
\author{Association GUTenberg}
\date{%
- Version 0.9 en date du \today%
+ Version 0.9.1 en date du \today%
\texorpdfstring{%
\\
\url{https://framagit.org/gutenberg/classe-lettre-gut}%