texlive[63637] Master/texmf-dist: letgut (18jun22)

commits+karl at tug.org commits+karl at tug.org
Sat Jun 18 22:02:54 CEST 2022


Revision: 63637
          http://tug.org/svn/texlive?view=revision&revision=63637
Author:   karl
Date:     2022-06-18 22:02:54 +0200 (Sat, 18 Jun 2022)
Log Message:
-----------
letgut (18jun22)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/lualatex/letgut/CHANGELOG.md
    trunk/Master/texmf-dist/doc/lualatex/letgut/README.md
    trunk/Master/texmf-dist/doc/lualatex/letgut/letgut-banner-code.pdf
    trunk/Master/texmf-dist/doc/lualatex/letgut/letgut-banner-code.tex
    trunk/Master/texmf-dist/doc/lualatex/letgut/letgut-code.pdf
    trunk/Master/texmf-dist/doc/lualatex/letgut/letgut-code.tex
    trunk/Master/texmf-dist/doc/lualatex/letgut/letgut.pdf
    trunk/Master/texmf-dist/doc/lualatex/letgut/letgut.tex
    trunk/Master/texmf-dist/doc/lualatex/letgut/listings-conf.tex
    trunk/Master/texmf-dist/doc/lualatex/letgut/localconf.tex
    trunk/Master/texmf-dist/source/lualatex/letgut/HOWTO.md
    trunk/Master/texmf-dist/source/lualatex/letgut/letgut-banner.org
    trunk/Master/texmf-dist/source/lualatex/letgut/letgut.org
    trunk/Master/texmf-dist/tex/lualatex/letgut/informations-gut.tex
    trunk/Master/texmf-dist/tex/lualatex/letgut/letgut-acronyms.tex
    trunk/Master/texmf-dist/tex/lualatex/letgut/letgut-banner.sty
    trunk/Master/texmf-dist/tex/lualatex/letgut/letgut-francophony-icon.pdf
    trunk/Master/texmf-dist/tex/lualatex/letgut/letgut.cbx
    trunk/Master/texmf-dist/tex/lualatex/letgut/letgut.cls
    trunk/Master/texmf-dist/tex/lualatex/letgut/letgut.dbx
    trunk/Master/texmf-dist/tex/lualatex/letgut/letgut.lbx

Added Paths:
-----------
    trunk/Master/texmf-dist/doc/lualatex/letgut/exemple-nouveautes.tex
    trunk/Master/texmf-dist/tex/lualatex/letgut/letgut-lstlang.sty

Modified: trunk/Master/texmf-dist/doc/lualatex/letgut/CHANGELOG.md
===================================================================
--- trunk/Master/texmf-dist/doc/lualatex/letgut/CHANGELOG.md	2022-06-18 18:21:10 UTC (rev 63636)
+++ trunk/Master/texmf-dist/doc/lualatex/letgut/CHANGELOG.md	2022-06-18 20:02:54 UTC (rev 63637)
@@ -3,16 +3,44 @@
 
 The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
 and this project adheres to [Semantic
-Versioning](http://semver.org/spec/v2.0.0.html).
+Versioning](https://semver.org/spec/v2.0.0.html).
 
 ## [Unreleased]
 
+## [0.9.2] - 2022-06-18
+
+### Added
+- Listings for commands in terminals.
+- Aliases of frequently used commands.
+- New commands for frequently used terms or expressions.
+- Command for specifying LaTeX packages that benefit from syntax highlighting.
+- Own ~listings~' language driver file for LaTeX packages syntax highlighting.
+- Commands for keyboard keys of accentuated characters.
+- ~detailedtoc~ option for Lettre's structure checking.
+- Mimic the multiple option of the footmisc package.
+- Command ~\inputarticle~ (instead of ~\input~) for the input of articles.
+- ⅛ as a short equivalent of ~\lstinline~.
+- Some tweaks and improvements.
+
+### Changed
+- Last names of persons and authors not in small caps anymore.
+- \tl isn't an acronym anymore and now typesets “TeX Live”.
+- All the acronyms reset at the beginning of each ~\inputarticle~-ed article.
+- All options now possibly load-time ones.
+- Unlikely to change input files searched:
+  1. in the parent directory if not in the current one,
+  2. in the TDS.
+- Right ISSN in case of “paper” version of la Lettre.
+
+### Fixed
+Several bugs.
+
 ## [0.9.1] - 2022-03-22
 
 ### Changed
-File renamed (Karl Berry request)
+File renamed (Karl Berry request).
 
 ## [0.9] - 2022-03-18
 
 ### Added
-First public testing release
+First public testing release.

Modified: trunk/Master/texmf-dist/doc/lualatex/letgut/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/lualatex/letgut/README.md	2022-06-18 18:21:10 UTC (rev 63636)
+++ trunk/Master/texmf-dist/doc/lualatex/letgut/README.md	2022-06-18 20:02:54 UTC (rev 63637)
@@ -1,17 +1,16 @@
-letgut-banner - Support for the banner of the newsletter
-                “La Lettre de GUTenberg”
-=============================================================
+letgut - Support for the newsletter “La Lettre GUTenberg”
+=========================================================
 
 About
 -------
-This package automatically draw the banner of the newsletter “La Lettre de
-GUTenberg” with the current main font.
+This bundle includes a LaTeX class, a `.sty` file and an acronym file dedicated
+to the newsletter “La Lettre GUTenberg” of GUTenberg, the French TeX User Group.
 
 Release
 -------
-2022-03-22 v0.9.1
+2022-06-18 v0.9.2
 
 Development
 -----------
-Follow development, submit issues, and suggest improvements at
-https://framagit.org/gutenberg/classe-lettre-gut.
+Follow development, submit issues and suggest improvements at
+https://framagit.org/gutenberg/letgut.

Added: trunk/Master/texmf-dist/doc/lualatex/letgut/exemple-nouveautes.tex
===================================================================
--- trunk/Master/texmf-dist/doc/lualatex/letgut/exemple-nouveautes.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/lualatex/letgut/exemple-nouveautes.tex	2022-06-18 20:02:54 UTC (rev 63637)
@@ -0,0 +1,21 @@
+\documentclass[for-authors]{letgut}
+\letgutsetup{final  , paper}
+\setmainfont{KpRoman}
+\setsansfont{KpSans}
+% \setmonofont{TeX Gyre Cursor}
+\setmonofont[Scale = MatchLowercase]{RobotoMono}
+
+\begin{document}
+\begin{ctannews}
+\item[nl-interval] vise à simplifier le processus de représentation
+graphique des intervalles de l'axe réel.
+\item*[matapli] est une classe \hologo{LaTeX} destinée à la composition
+de la revue Matapli (conçue par \person{Chupin, Maxime}, secrétaire
+adjoint de \gutenberg{}).
+\end{ctannews}
+\end{document}
+
+%%% Local Variables:
+%%% mode: latex
+%%% TeX-master: t
+%%% End:


Property changes on: trunk/Master/texmf-dist/doc/lualatex/letgut/exemple-nouveautes.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/doc/lualatex/letgut/letgut-banner-code.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/lualatex/letgut/letgut-banner-code.tex
===================================================================
--- trunk/Master/texmf-dist/doc/lualatex/letgut/letgut-banner-code.tex	2022-06-18 18:21:10 UTC (rev 63636)
+++ trunk/Master/texmf-dist/doc/lualatex/letgut/letgut-banner-code.tex	2022-06-18 20:02:54 UTC (rev 63637)
@@ -1,4 +1,4 @@
-% Created 2022-03-22 mar. 11:25
+% Created 2022-06-18 sam. 17:48
 % Intended LaTeX compiler: lualatex
 \documentclass{letgut}
                                 \setmainfont{KpRoman}
@@ -8,45 +8,51 @@
 \input{listings-conf}
 \author{Association GUTenberg}
 \date{\today}
-\title{Support for the banner of the newsletter “La Lettre de GUTenberg”}
+\title{Support for the banner of the newsletter "La Lettre de GUTenberg"}
 \begin{document}
 
 
-\section{Identification}
+\section{Readme file}
 \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 at 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 at 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}
+\begin{verbatim}
+-------:| ---------------------------------------------------
+ letgut:| Package for the banner of the newsletter
+	| "La Lettre de GUTenberg"
+ Author:| Association GUTenberg
+ E-mail:| secretariat at 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 at 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{verbatim}
+
 \section{Implementation}
-\label{sec:orgb1ea800}
+\label{sec:org4c5e60d}
 
+\subsection{Identification}
+\label{sec:org09b0cd2}
+
+\begin{verbatim}
+This is file `letgut-banner.sty,
+generated with the Emacs Org-babel utility.
+
+The original source file is letgut-banner.org
+%% 
+\end{verbatim}
+
 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.
@@ -59,15 +65,15 @@
 
 \begin{lstlisting}
 \ProvidesExplPackage{letgut-banner}
-{2022-03-22}
-{0.9.1}
+{2022-03-17}
+{0.9}
 {
-  Package for the banner of the newsletter “La Lettre de GUTenberg”
+  Package for the banner of the newsletter "La Lettre de GUTenberg"
 }
 \end{lstlisting}
 
 \subsection{Packages loaded}
-\label{sec:org09b0cd2}
+\label{sec:org447090b}
 
 In order to provide class options, we load the \package{l3keys2e} which provides
 \LaTeXe{} option processing using \LaTeX3 keys:
@@ -93,7 +99,7 @@
 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
+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}
@@ -114,10 +120,10 @@
 \end{lstlisting}
 
 \subsection{Declarations}
-\label{sec:org61842b5}
+\label{sec:orgbda0ae2}
 
 \subsubsection{Dimensions}
-\label{sec:org447090b}
+\label{sec:org5711d86}
 
 \begin{lstlisting}
 \dim_new:N \g__letgutbanner_area_height_dim
@@ -199,7 +205,7 @@
 \class*{letgut}, they are borrowed from it. Otherwise, they are set to
 default values.
 \begin{itemize}
-\item Thickness of the “L”.
+\item Thickness of the "L".
 \begin{lstlisting}
 \dim_if_exist:NTF \c__letgut_banner_thickness_dim {
   \dim_const:NV \c__letgutbanner_banner_thickness_dim
@@ -209,7 +215,7 @@
   { 4cm }
 }
 \end{lstlisting}
-\item Height of the “L” (that of the text area plus 3cm).
+\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
@@ -222,13 +228,13 @@
   }
 }
 \end{lstlisting}
-\item Initial padding of the text embedded in the vertical bar of the “L”.
+\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
+\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\)).
+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
@@ -240,7 +246,7 @@
   )/2
 }
 \end{lstlisting}
-\item Initial width of the text embedded in the “L” vertical bar.
+\item Initial width of the text embedded in the "L" vertical bar.
 \begin{lstlisting}
 \dim_const:Nn
 \c__letgutbanner_banner_vertical_contents_width_dim {
@@ -249,10 +255,10 @@
   2\c__letgutbanner_banner_padding_dim
 }
 \end{lstlisting}
-\item Width of the text embedded in the horizontal bar of the “L” (of the text
+\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”).
+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 {
@@ -270,9 +276,9 @@
 \end{itemize}
 
 \subsubsection{Boxes}
-\label{sec:org5711d86}
+\label{sec:orge5b5c6b}
 
-New boxes, for each of the letters in the word “LETTRE” (!), and then for the
+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
@@ -286,10 +292,10 @@
 \end{lstlisting}
 
 \subsubsection{Floating point numbers}
-\label{sec:orge5b5c6b}
+\label{sec:org61842b5}
 
 \begin{itemize}
-\item Minimum percentage of the common height of the letters of the word “LETTRE”
+\item Minimum percentage of the common height of the letters of the word "LETTRE"
 that their line spacing must represent.
 \end{itemize}
 \begin{lstlisting}
@@ -296,8 +302,8 @@
 \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”.
+\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 }
@@ -304,7 +310,7 @@
 \end{lstlisting}
 
 \subsection{Application des dimensions de la page}
-\label{sec:orgbda0ae2}
+\label{sec:orgb3e9382}
 
 \begin{lstlisting}
 \geometry{
@@ -322,7 +328,7 @@
 \end{lstlisting}
 
 \subsection{Filling of the boxes}
-\label{sec:orgb3e9382}
+\label{sec:orgdd18dd8}
 \begin{lstlisting}
 \hbox_gset:Nn \g__letgutbanner_L_box { \textbf{L} }
 \hbox_gset:Nn \g__letgutbanner_E_box { \textbf{E} }
@@ -336,9 +342,9 @@
 \end{lstlisting}
 
 \subsection{Computations}
-\label{sec:orgdd18dd8}
+\label{sec:orgb1ea800}
 
-Determination of the widths of each of the letter boxes of the word “LETTRE”.
+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
@@ -380,14 +386,14 @@
 }
 { No~ idea! }
 \end{lstlisting}
-Resize the box containing “GUTenberg” to the width of the text embedded in the
-horizontal bar of the “L”.
+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.
+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
@@ -397,12 +403,12 @@
 }
 \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”:
+"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
+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\)).
+(\(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 {
   (
@@ -414,11 +420,11 @@
   )/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”
+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
+"L". The latter, stored in \lstinline+\g__letgutbanner_banner_vertical_contents_width_dim+, is
 initially fixed:
 \begin{lstlisting}
 \dim_gset:Nn
@@ -427,7 +433,7 @@
 \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:
+the height common to the letters of the word "LETTRE", stored in:
 
 \lstinline+\c__letgutbanner_leading_minimum_percent_fp+
 
@@ -447,7 +453,7 @@
   \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”.
+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
@@ -459,7 +465,7 @@
   \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
+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 {
@@ -475,7 +481,7 @@
   \g__letgutbanner_largest_LETR_box_height_dim
 }
 \end{lstlisting}
-Resize the box containing “La” to the width of the text embedded in the “L”
+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 {
@@ -482,7 +488,7 @@
   \g__letgutbanner_banner_vertical_contents_width_dim
 }
 \end{lstlisting}
-Determine the height (\(h\)) and depth (\(d\)) of the resized box containing “La”.
+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
@@ -491,11 +497,11 @@
   \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
+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 {
@@ -508,11 +514,11 @@
   \g__letgutbanner_La_depth_dim
 }
 \end{lstlisting}
-For the following, the area containing the letters of the word “LETTRE” aligned
+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”.
+\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}
@@ -524,13 +530,13 @@
   \c__letgutbanner_GUTenberg_yoffset_dim
 }
 \end{lstlisting}
-Determining the vertical jump (\(s\)) between the letters in the word “LETTRE”
+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
+\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,
+"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.:
 
@@ -537,12 +543,12 @@
 \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”.
+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 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}
@@ -579,7 +585,7 @@
 }
 \end{lstlisting}
 \end{enumerate}
-The width allocated to the text embedded in the vertical bar of the “L” may have
+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}
@@ -592,7 +598,7 @@
 }
 \end{lstlisting}
 \begin{enumerate}
-\item Determination of the vertical offset of the 1st letter (“L”).
+\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
@@ -612,7 +618,7 @@
 }
 \end{lstlisting}
 \end{enumerate}
-Resize the box containing “g” to the width of the text.
+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
@@ -622,10 +628,10 @@
 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 :
+\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”
+"L", equal to the height (\(p\)) of the paper minus the height (\(l\)) of "L"
 \end{itemize}
 \end{itemize}
 \begin{lstlisting}
@@ -652,7 +658,7 @@
 \begin{lstlisting}
 \BeginAccSupp{ActualText={}}
 \end{lstlisting}
-We put now the big “L” at the right place.
+We put now the big "L" at the right place.
 \begin{lstlisting}
 \put(
 .5\c__letgutbanner_lmargin_dim-.5\c__letgutbanner_banner_thickness_dim
@@ -770,7 +776,7 @@
 \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”.
+textheight of the first page of the height of the horizontal bar of the "L".
 
 \begin{lstlisting}
 \@ifclassloaded{letgut}{
@@ -785,22 +791,5 @@
 \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}
+\label{sec:orgaf6d8ec}
+\end{document}
\ No newline at end of file

Modified: trunk/Master/texmf-dist/doc/lualatex/letgut/letgut-code.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/lualatex/letgut/letgut-code.tex
===================================================================
--- trunk/Master/texmf-dist/doc/lualatex/letgut/letgut-code.tex	2022-06-18 18:21:10 UTC (rev 63636)
+++ trunk/Master/texmf-dist/doc/lualatex/letgut/letgut-code.tex	2022-06-18 20:02:54 UTC (rev 63637)
@@ -1,4 +1,4 @@
-% Created 2022-03-22 mar. 11:24
+% Created 2022-06-18 sam. 17:48
 % Intended LaTeX compiler: lualatex
 \documentclass{letgut}
                                 \setmainfont{KpRoman}
@@ -6,6 +6,7 @@
 \setmonofont[Scale = MatchLowercase]{RobotoMono}
 \letgutsetup{editorial=false}
 \input{listings-conf}
+\letgutsetup{detailedtoc}
 \author{Association GUTenberg}
 \date{\today}
 \title{Support for the newsletter “La Lettre GUTenberg”}
@@ -56,7 +57,7 @@
 \end{lstlisting}
 
 \section{Implementation}
-\label{sec:orga99a9b5}
+\label{sec:org59fbe1b}
 
 These document classes can only be used with \LaTeXe, so we make
 sure that an appropriate message is displayed when another \TeX{}
@@ -88,11 +89,10 @@
 
 \begin{lstlisting}
 \ProvidesExplClass{letgut}
-{2022-03-22}
-{0.9.1}
+{2022-03-17}
+{0.9}
 {
-  Class~ for~ the~ newsletter~
-  “\c__letgut_La_lettre_gutenberg_tl”
+  Class for the newsletter “The GUTenberg Letter”
 }
 \end{lstlisting}
 
@@ -184,6 +184,10 @@
 \begin{lstlisting}
 \bool_new:N \l__letgut_in_footnote_bool
 \end{lstlisting}
+\item For testing whether we currently ask the draft or the final version.
+\begin{lstlisting}
+\bool_new:N \g__letgut_draft_bool
+\end{lstlisting}
 \end{itemize}
 
 \subsubsection{Dimensions}
@@ -402,11 +406,27 @@
 \label{sec:orgb1ea800}
 
 \begin{lstlisting}
+\tl_const:Nn \c__letgut_online_issn_tl {
+  2742-6149~ (version~ numérique)
+}
+\tl_const:Nn \c__letgut_paper_issn_tl {
+  1257–2217~ (version~ papier)
+}
 \tl_const:Nn \c__letgut_cahier_tl { \emph{ Cahier } }
 \tl_const:Nn \c__letgut_cahiers_tl {
   \c__letgut_cahier_tl \emph{ s }
 }
+\tl_const:Nn \c__letgut_gnu_linux_tl { \software{GNU/Linux} }
+\tl_const:Nn \c__letgut_macOS_tl { \software{macOS} }
+\tl_const:Nn \c__letgut_windows_tl { \software{Windows} }
+\tl_const:Nn \c__letgut_package_tl { package }
+\tl_const:Nn \c__letgut_class_tl { classe }
+\tl_const:Nn \c__letgut_file_tl { fichier }
+\tl_const:Nn \c__letgut_software_tl { logiciel }
 \tl_const:Nn \c__letgut_tugboat_tl { \emph{ TUGboat } }
+\tl_const:Nn \c__letgut_tex_live_tl {
+  \hologo{ TeX }\nobreakspace Live
+}
 \tl_const:Nn \c__letgut_banner_file_tl { bandeau }
 \tl_const:Nn \c__letgut_editorial_file_tl { editorial }
 \tl_const:Nn \c__letgut_informations_gutenberg_file_tl {
@@ -414,6 +434,7 @@
 }
 \tl_const:Nn \c__letgut_acronyms_file_tl { letgut-acronyms }
 \tl_const:Nn \c__letgut_local_config_file_tl { localconf }
+\tl_const:Nn \c__letgut_lstlanguage_file_tl { letgut-lstlang.sty }
 \tl_const:Nn \c__letgut_contents_name_tl { Sommaire }
 \tl_const:Nn \c__letgut_draftwatermark_text_tl {
  \textnormal{Brouillon}
@@ -429,7 +450,7 @@
   Si~ vous~ avez~ oublié,~ ce~ n'est~ ni~ trop~ tard~
   ni~ difficile~ :
   \par
-  \url{http://gutenberg.eu.org/?Adherer-en-ligne}
+  \url{https://www.gutenberg-asso.fr/?Adherer-en-ligne}
   \bool_if:NT \g__letgut_informations_bool {
     \file_if_exist:nT
     {./\c__letgut_informations_gutenberg_file_tl}{
@@ -447,7 +468,8 @@
   Ne~ pas~ omettre~ les~ informations~ sur~
   \c__letgut_gutenberg_tl{}~ !\\(dans~ un~
   \file*{\c__letgut_informations_gutenberg_file_tl.tex}~
-  situé~ dans~ le~ dossier~ courant)
+  situé~ soit~ dans~ le~ dossier~ courant, soit~ dans~ le~
+  dossier~ parent)
 }
 \tl_const:Nn \c__letgut_default_alert_box_color_tl {
   gray9
@@ -507,19 +529,110 @@
 \item \lstinline+for-authors+, (only) the author(s) of an article of the “Lettre”.
 \end{itemize}
 
+\subsection{Date handling}
+\label{sec:org464c4b7}
+
 \begin{lstlisting}
-\keys_define:nn { letgut }
+\int_new:N \g__letgut_date_month_int
+\int_new:N \g__letgut_date_year_int
+
+\int_gset:Nn \g__letgut_date_month_int {\the\month}
+\int_gset:Nn \g__letgut_date_year_int  {\the\year}
+
+\tl_new:N \g__letgut_date_month_tl
+\tl_new:N \g__letgut_date_tl
+
+\cs_new_protected:Npn \__letgut_date_parse:n #1
 {
-  , for-readers .bool_gset:N = \g__letgut_for_readers_bool
-  , for-readers .initial:n = { true }
-  , for-readers .default:n = { true }
-  , for-authors .bool_gset_inverse:N = \g__letgut_for_readers_bool
+  \__letgut_if_is_iso_date:nTF {#1}
+  {
+    \__letgut_date_parse:www #1 \q_stop
+  }{
+    \msg_term:nnn{letgut}{Not~month~iso~date}{#1}
+    \tl_gset:Nn \g__letgut_date_tl { #1 }
+  }
 }
-\ProcessKeysOptions { letgut }
+
+\prg_new_protected_conditional:Npnn
+\__letgut_if_is_iso_date:n #1 { T, F, TF }
+{
+  \regex_match:nnTF { ^\d{4}-(\d{1,2}) } {#1}
+  { \prg_return_true: }
+  { \prg_return_false: }
+}
+
+\prg_new_protected_conditional:Npnn
+\__letgut_if_is_int:n #1 { T, F, TF }
+{
+  \regex_match:nnTF { ^[\+\-]?[\d]+$ } {#1}
+  { \prg_return_true: }
+  { \prg_return_false: }
+}
+
+\cs_new_protected:Npn \__letgut_month_name:n #1
+{
+  % \text_titlecase_first:n {
+  \int_case:nnF
+  { #1 }
+  {
+    { 1 }{ janvier }
+    { 2 }{ février }
+    { 3 }{ mars }
+    { 4 }{ avril }
+    { 5 }{ mai }
+    { 6 }{ juin }
+    { 7 }{ juillet }
+    { 8 }{ août }
+    { 9 }{ septembre }
+    { 10 }{ octobre }
+    { 11 }{ novembre }
+    { 12 }{ décembre }
+  }
+  { Month~ Error! }
+  % }
+}
+
+\cs_new_protected:Npn \__letgut_date_parse:www #1-#2
+\q_stop
+{
+  \int_compare:nTF
+  {
+    \the\year <= #1 <= \the\year+1
 \end{lstlisting}
 
+\begin{lstlisting}
+}{
+  \int_gset:Nn \g__letgut_date_year_int {#1}
+}{
+  \int_gset:Nn \g__letgut_date_year_int {\the\year}
+}
+\__letgut_if_is_int:nTF {#2}
+{
+  \int_compare:nTF
+  {
+    1 <= #2 <= 12
+\end{lstlisting}
+
+\begin{lstlisting}
+    }
+    {\int_gset:Nn \g__letgut_date_month_int {#2}}
+    {\int_gset:Nn \g__letgut_date_month_int {\the\month}}
+  }{
+    \int_gset:Nn \g__letgut_date_month_int  {\the\month}
+  }
+  \tl_gset:Nn \g__letgut_date_month_tl {
+    \__letgut_month_name:n { \g__letgut_date_month_int }
+  }
+  \tl_gset:Nn \g__letgut_date_tl {
+    \tl_use:N \g__letgut_date_month_tl
+    \c_space_tl
+    \int_use:N \g__letgut_date_year_int
+  }
+}
+\end{lstlisting}
+
 \subsection{Class and package loading}
-\label{sec:org464c4b7}
+\label{sec:orgbefd239}
 
 The \letgutcls{} is based on the \lstinline+article+ class. It is by default two sided
 because of the alternating headers, and will by typeset with \lstinline+11pt+ as global
@@ -562,6 +675,10 @@
 \begin{lstlisting}
 \RequirePackage{graphicx}
 \end{lstlisting}
+\item Biolinum font.
+\begin{lstlisting}
+\RequirePackage{biolinum}
+\end{lstlisting}
 \item Extending the array and tabular environments.
 \begin{lstlisting}
 \RequirePackage{array}
@@ -700,7 +817,7 @@
 \end{lstlisting}
 
 \subsection{Settings for the loaded packages}
-\label{sec:orgbefd239}
+\label{sec:org5c102e6}
 
 \begin{itemize}
 \item We switch to the French typographic conventions for \package{siunitx}.
@@ -707,7 +824,7 @@
 \begin{lstlisting}
 \sisetup{
   , locale=FR
-  , mode=text
+  , mode=match
 }
 \end{lstlisting}
 \item Concerning floats, we ask:
@@ -748,211 +865,6 @@
 \begin{lstlisting}
 \renewcommand*\frenchtablename{Tableau}
 \end{lstlisting}
-\item We fix some defaults for the listings : we define a style for all the listings
-which resets all the \TeX{} control sequences/keywords and then load all the
-basic (La)\TeX{} dialects of \TeX{}. But we start with a dialect which is missing in
-the \package*{listings}.
-\begin{lstlisting}
-\lstdefinelanguage[classes]{TeX}[LaTeX]{TeX}{%
-  % Control sequences
-  moretexcs={%
-    abovecaptionskip,abstractname,appendix,appendixname,
-    arraycolsep,arrayrulewidth,author,backmatter,baselinestretch,
-    belowcaptionskip,bf,bibindent,bibname,bigskipamount,
-    bottomfraction,brokenpenalty,cal,chapter,chaptermark,
-    chaptername,clubpenalty,columnsep,columnseprule,contentsname,
-    date,dblfloatpagefraction,dblfloatsep,dbltextfloatsep,
-    dbltopfraction,descriptionlabel,displaywidowpenalty,
-    doublerulesep,evensidemargin,fboxrule,fboxsep,figurename,
-    floatpagefraction,floatsep,footins,footnoterule,footnotesep,
-    footnotesize,footskip,frontmatter,headheight,headsep,huge,Huge,
-    indexname,indexspace,interlinepenalty,intextsep,it,jot,
-    labelenumi,labelenumii,labelenumiii,labelenumiv,labelitemfont,
-    labelitemi,labelitemii,labelitemiii,labelitemiv,labelsep,
-    labelwidth,large,Large,LARGE,leftmargin,leftmargini,
-    leftmarginii,leftmarginiii,leftmarginiv,leftmarginv,
-    leftmarginvi,lineskip,listfigurename,listoffigures,
-    listoftables,listtablename,mainmatter,maketitle,marginparpush,
-    marginparsep,marginparwidth,maxdepth,medskipamount,mit,
-    newblock,normallineskip,normalsize,oddsidemargin,paragraph,
-    paragraphmark,parindent,parskip,part,partname,partopsep,
-    postdisplaypenalty,predisplaypenalty,refname,rm,sc,scriptsize,
-    section,sectionmark,sf,sl,small,smallskipamount,subitem,
-    subparagraph,subparagraphmark,subsection,subsectionmark,
-    subsubitem,subsubsection,subsubsectionmark,tabbingsep,
-    tabcolsep,tablename,tableofcontents,textfloatsep,textfraction,
-    textheight,textwidth,thechapter,theenumi,theenumii,theenumiii,
-    theenumiv,theequation,theparagraph,thepart,thesection,
-    thesubparagraph,thesubsection,thesubsubsection,tiny,title,
-    today,topfraction,topmargin,topskip,tt,widowpenalty,
-  },%
-  % Keywords of class 1 : keywords that contain other characters
-  % (since of the same class as the ones specified as
-  % 'otherkeywords')
-  morekeywords={%
-    %
-  },%
-  % Keywords of class 2 : environments names
-  morekeywords=[2]{%
-    abstract,description,figure,quotation,quote,table,
-    thebibliography,theindex,titlepage,verse%
-  },%
-  % Keywords of class 3 : mandatory arguments (not environments)
-  % & optional arguments which are keys (in key=value)
-  morekeywords=[3]{%
-  },%
-  % Keywords of class 4 : values of keys (in key=value)
-  morekeywords=[4]{%
-  },%
-  % Keywords of class 5 : arguments specifications (after “:”
-  % in expl3 syntax)
-  morekeywords=[5]{%
-  },%
-  % Keywords of class 6 : current package name (and possibly
-  % derived packages)
-  morekeywords=[6]{%
-    a0poster,aalok,aastex631,abntex2,achemso,acmart,acmconf,
-    active-conf,adfathesis,afparticle,afthesis,aguplus,aiaa-tc,
-    akklecture,akkscript,akktecdoc,akletter,myletter,ametsoc,
-    amsart,amsbook,amsdtx,amsldoc,amsproc,aomart,apa,apa6,
-    apa6e,apa7,arabart,arabbook,arabrep,arabrep1,articleingud,
-    asaetr,ascelike,asmeconf,asmejour,assignment,aucklandthesis,
-    bangorcsthesis,bangorexam,barticle,bbook,bletter,
-    bankstatement,article,book,letter,ltnews,ltxdoc,ltxguide,
-    minimal,proc,report,slides,source2edoc,basque-book,beamer,
-    beamerswitch,beaulivre,beilstein,argetabelle,bewerbung,
-    bgteubner,BHCexam,bitart,bitbook,bjfuthesis,BMSTU-IU8,
-    bookcover,bookest,bookshelf,br-lex,brandeis-dissertation,
-    brandeis-problemset,brandeis-thesis,buctcover,buctthesis,
-    bxjsarticle,bxjsbook,bxjsreport,bxjsslide,cascadilla,cd,
-    cd-cover,articoletteracdp,letteracdp,cesenaexam,cheatsheet,
-    chemmacros-manual,chletter,cje,cnbwp,cnltx-doc,codedoc,
-    colorart,colorbook,combine,cc,ConcProg,confproc,contracard,
-    courseoutline,coursepaper,cquthesis,csbulletin,csbulobalka,
-    csbulv1,ctexart,ctexbeamer,ctexbook,ctexrep,ctxdoc,curve,
-    cv4tw,cweb,idcc,ijdc-v14,ijdc-v9,dinbrief,disser,gost732,
-    dithesis,droit-fr,dtk,dvdcoll,easybook,ebsthesis,agecon,
-    ajae,apecon,ecca,erae,itaxpf,jrurstud,njf,oegatb,pocoec,
-    regstud,worlddev,ecv,einfart,ejpecp,elbioimp,elegantbook,
-    elegantnote,elegantpaper,elpres,cas-dc,cas-sc,elsarticle,
-    elteikthesis,emisa,emulateapj,erdc,eskd,eskdgraph,eskdtab,
-    eskdtext,estcpmm,europasscv,europecv,exam,exam-n,examdesign,
-    exesheet,extarticle,extbook,extletter,extproc,extreport,
-    facsimile,factura,fancyhandout,fancyslides,fbithesis,fcavtex,
-    fdudoc,fduthesis-en,fduthesis,fei,ffslides,fithesis,
-    fithesis2,fithesis3,fithesis4,flacards,flashcards,frletter,
-    g-brief,g-brief2,gaceta,gammas,gatech-thesis,gmdocc,
-    gradstudentresume,grant-afosr,grant-aro,grant-darpa,grant-doe,
-    grant-nih,grant-nrl,grant-nsf,grant-onr,grant,graphpaper,
-    gridslides,gsemthesis,guitartabs,gzt,gztarticle,h2020proposal,
-    hgbarticle,hgbreport,hgbthesis,harnon-cv,hausarbeit-jura,
-    hcart,hcletter,hcreport,hcslides,hecthese,hepthesis,hitec,
-    hithesis,hitreport,hitszthesis,hletter,hpsdiss,fsbispit,
-    huawei,hustthesis,icsv,IEEEconf,IEEEtran,ijmart,ijsra,
-    image-gallery,IMTEKda,inkpaper,invoice-class,iodhbwm,iscram,
-    isov2,isodoc,iwhdp,jacow,jlreq,jmlr,jmlrbook,jnuexam,jpsj2,
-    jura,jurabook,juraovw,juraurtl,kdgcoursetext,kdgmasterthesis,
-    kdpcover,kerntest,kluwer,knittingpattern,scrartcl,scrarticle,
-    scrbook,scrdoc,scrletter,scrlttr2,scrreport,scrreprt,komacv,
-    oblivoir-utf,oblivoir-xl,oblivoir,xoblivoir,ksp-thesis,l3doc,
-    labbook,leadsheet,leaflet,lebhart,lectures,letgut,lettre,limap,
-    limecv,lion-msc,lni,lps,lt3graph-packagedoc,ltxdockit,
-    ltxguidex,abstbook,beletter,flashcard,iagproc,cours,fiche,
-    matapli,matc3mem,mcmthesis,ltxmdf,medstarbeamer,meetingmins,
-    memoir,mensa-tex,mentis,metanorma,milog,minimart,minimbook,
-    mla,mluexercise,mnras,moderncv,modernposter,msu-thesis,
-    mucproc,mugsthesis,muling,musuos,muthesis,third-rep,mwart,
-    mwbk,mwrep,mycv,nature,ncc,nccproc,sibjnm,nddiss2e,
-    ndsu-thesis,newlfm,nih,nihbiosketch,njurepo,nlctdoc,nostarch,
-    nrc1,nrc2,artikel1,artikel2,artikel3,boek,boek3,brief,
-    rapport1,rapport3,nwejm,nwejmart,octavo,onrannual,
-    oup-authoring-template,journal,paper,papertex,pbsheet,pecha,
-    petiteannonce,philosophersimprint,pittetd,pkuthss,plari,play,
-    postcards,powerdot,FUpowerdot,ppr-prv,pracjourn,pressrelease,
-    proposal,reporting,dfgproposal,dfgreporting,euproposal,
-    eureporting,prosper,protocol,prtec,upmgr,wkmgr,pst-doc,
-    ptptex,qcm,quantumarticle,qyxf-book,ReadableCV,recipe,
-    RecipeBook,recipecard,refart,refrep,resphilosophica,revtex4-2,
-    revtex4,revtex4-1,rtklage,ryersonSGSThesis,ryethesis,sageep,
-    sapthesis,schuleab,schulein,schuleit,schulekl,schuleub,
-    schuleue,schullsg,schullzk,schulma-ab,schulma-gutachten,
-    schulma-klausur,schulma-komp,schulma-mdlprf,schulma-praes,
-    schwalbe,sciposter,screenplay,scrjrnl,sdapsclassic,sduthesis,
-    seminar,semproc,sesamanuel,seuthesix,sffms,cassete,etiketka,
-    shtthesis,caesar_book,sides,simplecv,simplivre,skbarticle,
-    skbbeamer,skbbook,skblncsbeamer,skblncsppt,skbmoderncv,skdoc,
-    skeyval-testclass,skrapport,smfart,smfbook,SPhdThesis,spie,
-    sr-vorl,sslides,stage,standalone,usthesis,hwexam,mikoslides,
-    omdoc,smglom,subfiles,suftesi,sugconf,tabriz-thesis,talk,
-    tcldoc,tclldoc,powersem,thesis-ekf,thesis-gwu,thuthesis,
-    tikz-kalender,tikzposter,tlc-article,TOPletter,toptesi,
-    tudabeamer,tudaexercise,tudaleaflet,tudaletter,tudaposter,
-    tudapub,tudasciposter,tudscrartcl,tudscrbook,tudscrdoc,
-    tudscrmanual,tudscrposter,tudscrreprt,tufte-book,tufte-handout,
-    ltugboat,ltugproc,tui,turabian,turabian-researchpaper,
-    turabian-thesis,my-thesis,ua-thesis,uafthesis,
-    uantwerpenbamathesis,uantwerpencoursetext,uantwerpenexam,
-    uantwerpenletter,uantwerpenphdthesis,uantwerpenreport,
-    ucalgmthesis,ucbthesis,ucdavisthesis,ucsmonograph,ucthesis,
-    udesoftec,uebungsblatt,uestcthesis,uhhassignment,uiucredborder,
-    uiucthesis,ulthese,legislation,umich-thesis,umthesis,
-    unam-thesis,unifith,unitn-bimrep,univie-ling-expose,
-    univie-ling-paper,univie-ling-thesis,univie-ling-wlg,
-    unizgklasa,uothesis,UoWthesis,upmethodology-document,URbeamer,
-    URletter,uspatent,ut-thesis,utexasthesis,uwmslide,uwthesis,
-    verifica,webquiz,willowtreebook,withargs-packagedoc,
-    wsemclassic,xduthesis,xebaposter,xmuthesis,xsim-manual,
-    yaletter,yathesis,ycbook,ydoc,york-thesis,
-  },%
-  otherkeywords={},%
-  alsoletter={0123456789-},%
-  alsodigit={},%
-  sensitive%
-}[keywords,tex,comments]%
-\end{lstlisting}
-
-\begin{lstlisting}
-\lstdefinestyle{__letgut_all_reset}{
-  basicstyle=\ttfamily,
-  language=TeX,%
-  texcs={},%
-  keywords={},%
-  keywords=[2]{},%
-  keywords=[3]{},%
-  keywords=[4]{},%
-  keywords=[5]{},%
-  otherkeywords={},%
-  alsoletter={},%
-  alsodigit={},%
-  alsolanguage=[AlLaTeX]TeX,%
-  alsolanguage=[LaTeX]TeX,%
-  alsolanguage=[plain]TeX,%
-  alsolanguage=[common]TeX,%
-  alsolanguage=[primitive]TeX,%
-  alsolanguage=[classes]TeX,%
-\end{lstlisting}
-Because of a current issue involving \package{parskip} and
-\package{listings}
-(\url{https://github.com/FrankMittelbach/fmitex-parskip/issues/3}), we have to
-set the skip below the displayed listings to a zero length.
-\begin{lstlisting}
-belowskip=0pt,
-}
-\lstset{
-  style=__letgut_all_reset
-}
-\end{lstlisting}
-This style is applied automatically at the beginning of each \lstinline+\input+
-file. Hence, the keywords defined in a previous file (by loading some
-peticular (La)\TeX{} dialects, i.e. control sequences and keywords specific to
-some class or packages) won't interfere with the ones of the current file.
-\begin{lstlisting}
-\AddToHook{cmd/input/before}{
-  \lstset{%
-    style=__letgut_all_reset,%
-  }
-}
-\end{lstlisting}
 \item The \lstinline+\printbibliography+ command is redefined in order its \lstinline+heading+ is by
 default set to \lstinline+subbibliography+.
 \begin{lstlisting}
@@ -1012,7 +924,7 @@
 \item We want the hyperlinks to be as unobtrusive as possible.
 \begin{lstlisting}
 \bool_if:NTF \g__letgut_paper_bool {
-  \hypersetup{draft}
+  \hypersetup{hidelinks}
 }{
   \hypersetup{%
     colorlinks,%
@@ -1021,10 +933,19 @@
 }
 \end{lstlisting}
 
-A preset of acronyms is input (if found).
+A preset of acronyms is input (if found, firstly in the current directory,
+secondly in the parent directory, thirdly in the TDS).
 \begin{lstlisting}
-\file_if_exist:nT {\c__letgut_acronyms_file_tl}{
-  \file_input:n {\c__letgut_acronyms_file_tl}
+\file_if_exist:nTF {./\c__letgut_acronyms_file_tl}{
+  \file_input:n {./\c__letgut_acronyms_file_tl}
+}{
+  \file_if_exist:nTF {../\c__letgut_acronyms_file_tl}{
+    \file_input:n {../\c__letgut_acronyms_file_tl}
+  }{
+    \file_if_exist:nT {\c__letgut_acronyms_file_tl}{
+      \file_input:n {\c__letgut_acronyms_file_tl}
+    }
+  }
 }
 \end{lstlisting}
 
@@ -1051,7 +972,8 @@
       {
 	\Huge
 \end{lstlisting}
-Currently, we can't use \package{l3color}'s \lstinline+\color_fill:n+\footnote{See \url{https://github.com/ho-tex/luacolor/issues/4\#issuecomment-848774260}.}
+Currently, we can't use \package{l3color}'s \lstinline+\color_fill:n+ (see
+\url{https://github.com/ho-tex/luacolor/issues/4\#issuecomment-848774260})
 and we have to rely on \package{xcolor}'s \lstinline+\color+.
 \begin{lstlisting}
 % \color_fill:n {black!10}
@@ -1101,108 +1023,6 @@
 }
 \end{lstlisting}
 
-\subsection{Date handling}
-\label{sec:org5c102e6}
-
-\begin{lstlisting}
-\int_new:N \g__letgut_date_month_int
-\int_new:N \g__letgut_date_year_int
-
-\int_gset:Nn \g__letgut_date_month_int {\the\month}
-\int_gset:Nn \g__letgut_date_year_int  {\the\year}
-
-\tl_new:N \g__letgut_date_month_tl
-\tl_new:N \g__letgut_date_tl
-
-\cs_new_protected:Npn \__letgut_date_parse:n #1
-{
-  \__letgut_if_is_iso_date:nTF {#1}
-  {
-    \__letgut_date_parse:www #1 \q_stop
-  }{
-    \msg_term:nnn{letgut}{Not~month~iso~date}{#1}
-    \tl_gset:Nn \g__letgut_date_tl { #1 }
-  }
-}
-
-\prg_new_protected_conditional:Npnn
-\__letgut_if_is_iso_date:n #1 { T, F, TF }
-{
-  \regex_match:nnTF { ^\d{4}-(\d{1,2}) } {#1}
-  { \prg_return_true: }
-  { \prg_return_false: }
-}
-
-\prg_new_protected_conditional:Npnn
-\__letgut_if_is_int:n #1 { T, F, TF }
-{
-  \regex_match:nnTF { ^[\+\-]?[\d]+$ } {#1}
-  { \prg_return_true: }
-  { \prg_return_false: }
-}
-
-\cs_new_protected:Npn \__letgut_month_name:n #1
-{
-  % \text_titlecase_first:n {
-  \int_case:nnF
-  { #1 }
-  {
-    { 1 }{ janvier }
-    { 2 }{ février }
-    { 3 }{ mars }
-    { 4 }{ avril }
-    { 5 }{ mai }
-    { 6 }{ juin }
-    { 7 }{ juillet }
-    { 8 }{ août }
-    { 9 }{ septembre }
-    { 10 }{ octobre }
-    { 11 }{ novembre }
-    { 12 }{ décembre }
-  }
-  { Month~ Error! }
-  % }
-}
-
-\cs_new_protected:Npn \__letgut_date_parse:www #1-#2
-\q_stop
-{
-  \int_compare:nTF
-  {
-    \the\year <= #1 <= \the\year+1
-\end{lstlisting}
-
-\begin{lstlisting}
-}{
-  \int_gset:Nn \g__letgut_date_year_int {#1}
-}{
-  \int_gset:Nn \g__letgut_date_year_int {\the\year}
-}
-\__letgut_if_is_int:nTF {#2}
-{
-  \int_compare:nTF
-  {
-    1 <= #2 <= 12
-\end{lstlisting}
-
-\begin{lstlisting}
-    }
-    {\int_gset:Nn \g__letgut_date_month_int {#2}}
-    {\int_gset:Nn \g__letgut_date_month_int {\the\month}}
-  }{
-    \int_gset:Nn \g__letgut_date_month_int  {\the\month}
-  }
-  \tl_gset:Nn \g__letgut_date_month_tl {
-    \__letgut_month_name:n { \g__letgut_date_month_int }
-  }
-  \tl_gset:Nn \g__letgut_date_tl {
-    \tl_use:N \g__letgut_date_month_tl
-    \c_space_tl
-    \int_use:N \g__letgut_date_year_int
-  }
-}
-\end{lstlisting}
-
 \subsection{Page color default settings}
 \label{sec:orgbdbe3de}
 
@@ -1217,28 +1037,36 @@
 \subsection{Options}
 \label{sec:orgc4ef889}
 
-These options look to need to be specified rather at the end (throws an error if
-defined before the \lstinline+\__letgut_date_parse:n+'s definition):
+We now define the options of the class:
 
 \begin{itemize}
+\item \lstinline+for-readers~/~for-authors+, depending on the target audience,
+\item \lstinline+draft~/~final+ depending on the state of the document,
+\item \lstinline+paper~/~screen+ depending on the way the document will be read,
 \item \lstinline+number+ for the number of the issue,
 \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,
+\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,
+\item \lstinline+infomations+ depending on the GUTenberg informations are wanted or not,
+\item \lstinline+detailedtoc+ depending on the automatic ToC is wanted maximally (until
+subparagraphs) detailed or not.
 \end{itemize}
 
 \begin{lstlisting}
-\keys_define:nn { letgut/setup }
+\keys_define:nn { letgut }
 {
+  , for-readers .bool_gset:N = \g__letgut_for_readers_bool
+  , for-readers .initial:n = { true }
+  , for-readers .default:n = { true }
+  , for-authors .bool_gset_inverse:N = \g__letgut_for_readers_bool
   , draft .bool_gset:N = \g__letgut_draft_bool
   , draft .initial:n = { true }
   , draft .default:n = { true }
   , final .bool_gset_inverse:N = \g__letgut_draft_bool
-  , number .int_gset:N = \g__letgut_number_int
-  , date .code:n = { \__letgut_date_parse:n { #1 } }
-  , date .initial:x = {\the\year-\the\month}
   , paper .code:n = {
     \bool_gset_true:N \g__letgut_paper_bool
     \pagecolor[rgb]{\c__letgut_default_pagecolor_paper_clist}
@@ -1246,6 +1074,9 @@
       \c__letgut_default_pagecolor_paper_clist
   }
   , screen .bool_gset_inverse:N = \g__letgut_paper_bool
+  , number .int_gset:N = \g__letgut_number_int
+  , date .code:n = { \__letgut_date_parse:n { #1 } }
+  , date .initial:x = {\the\year-\the\month}
   , pagecolor .initial:V
     = \c__letgut_default_pagecolor_screen_clist
   , pagecolor .code:n = {
@@ -1273,9 +1104,16 @@
   , editorial .initial:n = { true }
   , informations .bool_gset:N = \g__letgut_informations_bool
   , informations .initial:n = { true }
+  , detailedtoc .bool_gset:N = \g__letgut_detailedtoc_bool
+  , detailedtoc .initial:n = { false }
 }
+\ProcessKeysOptions { letgut }
 \end{lstlisting}
 
+\begin{lstlisting}
+\definecolor{letgut_pagecolor}{rgb}{\g__letgut_pagecolor_clist}
+\end{lstlisting}
+
 \subsection{Headers}
 \label{sec:org0244c68}
 
@@ -1325,21 +1163,43 @@
 The table of contents is customized:
 
 \begin{itemize}
-\item only the titles of the articles are shown (but the bookmarks have their natural depth):
-\end{itemize}
-\begin{lstlisting}
-\etocsetnexttocdepth{0}
-\end{lstlisting}
-\begin{itemize}
 \item layout:
 \begin{lstlisting}
 \etocsetstyle {section}
 {}
-{\leavevmode\leftskip 2cm\relax}
-{\normalsize%
+{\leavevmode\leftskip 2.5cm\relax}
+{\mdseries\small%
   \etocname~\dotfill~\etocpage\par
 }
 {}
+\etocsetstyle {subsection}
+{}
+{\leavevmode\leftskip 3cm\relax}
+{\mdseries\footnotesize%
+  \etocname~\dotfill~\etocpage\par
+}
+{}
+\etocsetstyle {subsubsection}
+{}
+{\leavevmode\leftskip 3.5cm\relax}
+{\mdseries\scriptsize%
+  \etocname~\dotfill~\etocpage\par
+}
+{}
+\etocsetstyle {paragraph}
+{}
+{\leavevmode\leftskip 4cm\relax}
+{\mdseries\tiny%
+  \etocname~\dotfill~\etocpage\par
+}
+{}
+\etocsetstyle {subparagraph}
+{}
+{\leavevmode\leftskip 4.5cm\relax}
+{\mdseries\tiny%
+  \etocname~\dotfill~\etocpage\par
+}
+{}
 \end{lstlisting}
 \item its title is dropped:
 \end{itemize}
@@ -1457,7 +1317,8 @@
 Lettre.
 
 \begin{lstlisting}
-\bool_if:NT \g__letgut_for_readers_bool {
+\AddToHook{begindocument/before}{
+  \bool_if:NT \g__letgut_for_readers_bool {
 \end{lstlisting}
 
 \begin{lstlisting}
@@ -1607,8 +1468,17 @@
 \begin{lstlisting}
 \thispagestyle{empty}
 \end{lstlisting}
-\item The table of contents is automatically added and has a bookmark entry.
+\item The table of contents is automatically added and has a bookmark entry. By
+default only the titles of the articles are shown (but the bookmarks have
+their natural depth) but the \lstinline+detailedtoc+ option make its depth until
+subpargraphs (which may be useful in order to check the structure of the
+Lettre).
 \begin{lstlisting}
+\bool_if:NTF \g__letgut_detailedtoc_bool {
+  \etocsetnexttocdepth{5}
+}{
+  \etocsetnexttocdepth{0}
+}
 \pdfbookmark[1]{
   \c__letgut_contents_name_tl
 }{
@@ -1615,6 +1485,7 @@
   \c__letgut_contents_name_tl
 }
 \tableofcontents
+\etocsetnexttocdepth{1}
 \end{lstlisting}
 Should a title be displayed, the table of contents would be added after it,
 followed by a new page (otherwise, if \lstinline+\title+ used after \lstinline+\begin{document}+
@@ -1638,7 +1509,7 @@
     \pdfbookmark[1]{Éditorial}{
       \c__letgut_editorial_file_tl
     }
-    \file_input:n {./\c__letgut_editorial_file_tl}
+    \__letgut_input_article:n {./\c__letgut_editorial_file_tl}
     % % \int_set:N \l_tmpa_int {\pagenumber}
     % % \int_compare:nNnT \l_tmpa_int = 1 { \newpage }
 \end{lstlisting}
@@ -1700,19 +1571,33 @@
 \AddToHook{enddocument}
 {
 \end{lstlisting}
-Conditionally to the fact the \lstinline+informations+ option is not set to \lstinline+false+: if the
-\file*{informations-gut.tex} which contains the informations about
-\gutenberg. Otherwise, a warning is displayed.
+Conditionally to the fact the \lstinline+informations+ option is not set to \lstinline+false+: if
+the \file*{informations-gut.tex} which contains the informations about
+\gutenberg{} is found (firstly in the current directory, secondly in the parent
+directory, thirdly in the TDS). Otherwise, a warning is displayed.
 \begin{lstlisting}
 \bool_if:NT \g__letgut_informations_bool {
   \clearpage
   \phantomsection
-  \file_if_exist:nTF
-  {./\c__letgut_informations_gutenberg_file_tl}{
-    \file_input:n {./\c__letgut_informations_gutenberg_file_tl}
+  \file_if_exist:nTF {./\c__letgut_informations_gutenberg_file_tl}{
+    \__letgut_input_article:n {
+      ./\c__letgut_informations_gutenberg_file_tl
+    }
   }{
-    \msg_warning:nn{letgut}{Informations~file~missing}
-    \alertbox{ \c__letgut_missing_infomations_tl }
+    \file_if_exist:nTF {../\c__letgut_informations_gutenberg_file_tl}{
+      \__letgut_input_article:n {
+	../\c__letgut_informations_gutenberg_file_tl
+      }
+    }{
+      \file_if_exist:nTF {\c__letgut_informations_gutenberg_file_tl}{
+	\__letgut_input_article:n {
+	  \c__letgut_informations_gutenberg_file_tl
+	}
+      }{
+	\msg_warning:nn{letgut}{Informations~file~missing}
+	\alertbox{ \c__letgut_missing_infomations_tl }
+      }
+    }
   }
 }
 \end{lstlisting}
@@ -1728,6 +1613,7 @@
 
 \begin{lstlisting}
 }
+}
 \end{lstlisting}
 
 \subsection{Sections, subsections, etc.}
@@ -1765,11 +1651,18 @@
   {
     \leavevmode\leftskip 2cm\relax
   }
-  {\mdseries\normalsize
+  {
+    \bool_if:NTF \g__letgut_detailedtoc_bool {
+      \bfseries
+    }{
+      \mdseries
+    }
+    \normalsize
     \etocname
     \nobreak\leaders\hbox~ to~ 1ex{\hss.}\hfill
     \etocpage
-    \par}
+    \par
+  }
   {}
 \end{lstlisting}
 \item We also create the new level \lstinline+\subtitle+ for the subtitles of the
@@ -1879,7 +1772,7 @@
 
 \begin{lstlisting}
 \NewDocumentCommand \letgutsetup { m } {
-  \keys_set:nn { letgut/setup } { #1 }
+  \keys_set:nn { letgut } { #1 }
 }
 \end{lstlisting}
 
@@ -1994,7 +1887,8 @@
 \begin{lstlisting}
 \cs_new_protected:Nn \__letgut_person_last_name:n
 {
-  {\scshape \__letgut_titlecase_name:n {#1}}
+  {% \scshape
+    \__letgut_titlecase_name:n {#1}}
 }
 \cs_new_protected:Nn \__letgut_person_first_name_last_name:nn
 {
@@ -2013,7 +1907,7 @@
 \cs_new_protected:Npn \__letgut_process_list:n #1
 {
   \seq_clear:N \l__letgut_items_seq
-  \seq_set_split:Nnn \l_tmpa_seq {and} {#1}
+  \seq_set_split:Nnn \l_tmpa_seq {~and~} {#1}
   \seq_map_inline:Nn \l_tmpa_seq {
     \seq_set_from_clist:Nn \l_tmpb_seq {##1}
     \seq_pop_left:NN \l_tmpb_seq \l_letgut_last_name_tl
@@ -2124,7 +2018,7 @@
 {
   {\l__letgut_files_font_switch_tl #1}
 }
-\NewDocumentCommand{\package}{ s o m O{package} } {
+\NewDocumentCommand{\package}{ s o m O{\c__letgut_package_tl} } {
   \IfBooleanT{#1}{
     #4
     \c_space_tl
@@ -2131,7 +2025,7 @@
   }
   \__letgut_tex_stuff:nn {#2}{#3}
 }
-\NewDocumentCommand{\class}{ s o m O{classe} } {
+\NewDocumentCommand{\class}{ s o m O{\c__letgut_class_tl} } {
   \IfBooleanT{#1}{
     #4
     \c_space_tl
@@ -2138,7 +2032,7 @@
   }
   \__letgut_tex_stuff:nn {#2}{#3}
 }
-\NewDocumentCommand{\file}{ s m O{fichier} } {
+\NewDocumentCommand{\file}{ s m O{\c__letgut_file_tl} } {
   \IfBooleanT{#1}{
     #3
     \c_space_tl
@@ -2145,7 +2039,7 @@
   }
   \__letgut_file:n {#2}
 }
-\NewDocumentCommand {\software} { s O{} m O{logiciel} } {
+\NewDocumentCommand {\software} { s O{} m O{\c__letgut_software_tl} } {
   \IfBooleanT{#1}{
     #4
     \c_space_tl
@@ -2154,7 +2048,7 @@
 }
 \end{lstlisting}
 
-\subsubsection{Names, etc.}
+\subsubsection{Names, expressions, etc.}
 \label{sec:org45141b1}
 
 \begin{lstlisting}
@@ -2176,6 +2070,18 @@
  \NewExpandableDocumentCommand { \Cahiers } { } {
    \c__letgut_cahiers_tl
  }
+ \NewExpandableDocumentCommand { \cahier } { } {
+   \c__letgut_cahier_tl
+ }
+ \NewExpandableDocumentCommand { \cahiers } { } {
+   \c__letgut_cahiers_tl
+ }
+ \NewExpandableDocumentCommand { \cahiergut } { } {
+   \cahier \c_space_tl \gutenberg
+ }
+ \NewExpandableDocumentCommand { \cahiersgut } { } {
+   \cahiers \c_space_tl \gutenberg
+ }
  \NewExpandableDocumentCommand { \letgut } {  } {
    \class{letgut}
  }
@@ -2186,11 +2092,23 @@
    \c__letgut_tugboat_tl
  }
  \NewExpandableDocumentCommand { \knuth } {  } {
-   \person{Knuth, Donald~ E.}
+   \person{Knuth,~ Donald~ E.}
  }
  \NewExpandableDocumentCommand { \lamport } {  } {
-   \person{Lamport, Leslie}
+   \person{Lamport,~ Leslie}
  }
+ \NewExpandableDocumentCommand { \tl } {  } {
+   \c__letgut_tex_live_tl
+ }
+ \NewExpandableDocumentCommand { \linux } {  } {
+   \c__letgut_gnu_linux_tl
+ }
+ \NewExpandableDocumentCommand { \macos } {  } {
+   \c__letgut_macOS_tl
+ }
+ \NewExpandableDocumentCommand { \windows } {  } {
+   \c__letgut_windows_tl
+ }
 \end{lstlisting}
 
 \subsubsection{Foreign locutions}
@@ -2217,28 +2135,45 @@
 \begin{lstlisting}
 \AddToHook{begindocument/end}{
   \pdfstringdefDisableCommands{
-    \def\person#1{#1}
-    \def\author#1{#1}
-    \def\package#1{#1}
-    % \def\package*#1{package~#1}
-    \def\class#1{#1}
-    % \def\class*#1{classe~#1}
-    \def\file#1{#1}
-    % \def\file*#1{fichier~#1}
-    \def\software#1{#1}
-    % \def\software*#1{logiciel~#1}
-    \def\foreignloc#1{#1}
-    \def\lettre{Lettre}
-    \def\gutenberg{GUTenberg}
-    \def\gut{\gutenberg}
-    \def\lettregut{\lettre\c_space_tl\gutenberg}
-    \def\Cahier{Cahier}
-    \def\Cahiers{\Cahier s}
-    \def\letgut{letgut}
-    \def\letgutcls{classe~ letgut}
-    \def\knuth{Donald~ E.~ Knuth}
-    \def\lamport{Leslie~ Lamport}
-    \def\latinloc#1{#1}
+    \RenewExpandableDocumentCommand\person { m }{#1}
+    \RenewExpandableDocumentCommand\author{ m }{#1}
+    \RenewExpandableDocumentCommand \package { s O{} m }{
+      \IfBooleanT{#1}{\c__letgut_package_tl\c_space_tl}#3
+    }
+    \RenewExpandableDocumentCommand\class { s O{} m }{
+      \IfBooleanT{#1}{\c__letgut_class_tl\c_space_tl}#3
+    }
+    \RenewExpandableDocumentCommand\file { s m }{
+      \IfBooleanT{#1}{\c__letgut_file_tl\c_space_tl}#2
+    }
+    \RenewExpandableDocumentCommand\software { s O{} m }{
+      \IfBooleanT{#1}{\c__letgut_software_tl\c_space_tl}#3
+    }
+    \RenewExpandableDocumentCommand\foreignloc{ m }{#1}
+    \RenewExpandableDocumentCommand\latinloc{ m }{#1}
+    \RenewExpandableDocumentCommand\lettre{ }{Lettre}
+    \RenewExpandableDocumentCommand\gutenberg{ }{GUTenberg}
+    \RenewExpandableDocumentCommand\gut{ }{\gutenberg}
+    \RenewExpandableDocumentCommand\lettregut{ }{
+      \lettre\c_space_tl\gutenberg
+    }
+    \RenewExpandableDocumentCommand\Cahier{ }{Cahier}
+    \RenewExpandableDocumentCommand\Cahiers{ }{\Cahier s}
+    \RenewExpandableDocumentCommand\cahier{ }{Cahier}
+    \RenewExpandableDocumentCommand\cahiers{ }{\cahier s}
+    \RenewExpandableDocumentCommand\cahiergut{ }{
+      \cahier\c_space_tl\gutenberg
+    }
+    \RenewExpandableDocumentCommand\cahiersgut{ }{
+      \cahier s\c_space_tl\gutenberg
+    }
+    \RenewExpandableDocumentCommand\letgut{ }{letgut}
+    \RenewExpandableDocumentCommand\letgutcls{ }{classe~ letgut}
+    \RenewExpandableDocumentCommand\knuth{ }{Donald~ E.~ Knuth}
+    \RenewExpandableDocumentCommand\lamport{ }{Leslie~ Lamport}
+    \RenewExpandableDocumentCommand\linux{ }{GNU/Linux}
+    \RenewExpandableDocumentCommand\macos{ }{macOS}
+    \RenewExpandableDocumentCommand\windows{ }{Windows}
   }
 }
 \end{lstlisting}
@@ -2323,18 +2258,31 @@
 
 The first occurrences of the acronyms will be displayed in their short forms,
 with the long ones in footnotes. But what about acronyms whom first occurrences
-arise within footnotes? We want the to be displayed as their short forms
+arise within footnotes? We want them to be displayed as their short forms
 followed by their the long form in parentheses. For this, we have to add
 a boolean at the beginning (and reversed at the end) of the \lstinline+\footnote+ command
 to know whether we currently are in a footnote or not and display the acronym
 accordingly.
 
+BTW, we hack the \lstinline+\footnote+ command in order to mimic the \lstinline+multiple+ option of
+the \package{footmisc} package (consecutive \lstinline+\footnote+ commands make their
+corresponding footnote marks separated by commas). See
+\url{https://tex.stackexchange.com/a/62091}.
+
 \begin{lstlisting}
+\let\__letgut_next_token\relax
+\cs_new_protected:Npn \__letgut_next_token_is_footnote:
+{\if_meaning:w\footnote\__letgut_next_token\textsuperscript{,}\fi}
 \NewCommandCopy{\__letgut_old_footnote}{\footnote}
-\RenewDocumentCommand {\footnote} { m }{
+\RenewDocumentCommand {\footnote} { O{} m }{
   \bool_set_true:N \l__letgut_in_footnote_bool
-  \__letgut_old_footnote { #1 }
+  \tl_if_empty:nTF {#1}{
+    \__letgut_old_footnote { #2 }
+  }{
+    \__letgut_old_footnote [#1] { #2 }
+  }
   \bool_set_false:N \l__letgut_in_footnote_bool
+  \futurelet\__letgut_next_token\__letgut_next_token_is_footnote:
 }
 \end{lstlisting}
 We change a bit both the \lstinline+footnote+ acro template, the \lstinline+description+ list
@@ -2355,7 +2303,7 @@
 	\space
 	(
 	\acroifT {alt} { \acrotranslate {or} ~ \acrowrite {alt} ~ }
-	\acroifT {foreign} { \acrowrite {foreign} :~ }
+	\acroifT {foreign} { \acrowrite {foreign} }
 	\acrowrite {long}
 	\acrogroupcite
 	)
@@ -2565,7 +2513,7 @@
   \noindent
   \textsf{\fullcite{\g__letgut_bookreview_bibkey_tl}}
   \tl_if_empty:NF \g__letgut_bookreview_price_tl{
-    .\c_space_tl\EUR{\g__letgut_bookreview_price_tl}
+    .\c_space_tl\g__letgut_bookreview_price_tl\c_space_tl €
   }
   \par
 }{
@@ -2573,8 +2521,59 @@
 }
 \end{lstlisting}
 
+\subsection{Keyboard keys}
+\label{sec:org4c4b60b}
+
+We make use of the Linux Biolinum Keyboard font and extend somehow the \lstinline+\LKey+
+provided by the \package*{biolinum} in order to more easily write keyboard keys
+for usual characters on French keyboards.
+
+\begin{lstlisting}
+\DeclareRobustCommand*\LKey[1]{%
+\ifx#10\biolinumKeyGlyph{zero}%  % spurious space removed 2016/06/24
+\else\ifx#11\biolinumKeyGlyph{one}%
+\else\ifx#12\biolinumKeyGlyph{two}%
+\else\ifx#13\biolinumKeyGlyph{three}%
+\else\ifx#14\biolinumKeyGlyph{four}%
+\else\ifx#15\biolinumKeyGlyph{five}%
+\else\ifx#16\biolinumKeyGlyph{six}%
+\else\ifx#17\biolinumKeyGlyph{seven}%
+\else\ifx#18\biolinumKeyGlyph{eight}%
+\else\ifx#19\biolinumKeyGlyph{nine}%
+\else\ifx#1à\biolinumKeyGlyph{agrave}%
+\else\ifx#1À\biolinumKeyGlyph{Agrave}%
+\else\ifx#1â\biolinumKeyGlyph{acircumflex}%
+\else\ifx#1Â\biolinumKeyGlyph{Acircumflex}%
+\else\ifx#1é\biolinumKeyGlyph{eacute}%
+\else\ifx#1É\biolinumKeyGlyph{Eacute}%
+\else\ifx#1è\biolinumKeyGlyph{egrave}%
+\else\ifx#1È\biolinumKeyGlyph{Egrave}%
+\else\ifx#1ê\biolinumKeyGlyph{ecircumflex}%
+\else\ifx#1Ê\biolinumKeyGlyph{Ecircumflex}%
+\else\ifx#1ë\biolinumKeyGlyph{edieresis}%
+\else\ifx#1Ë\biolinumKeyGlyph{Edieresis}%
+\else\ifx#1î\biolinumKeyGlyph{icircumflex}%
+\else\ifx#1Î\biolinumKeyGlyph{Icircumflex}%
+\else\ifx#1ï\biolinumKeyGlyph{idieresis}%
+\else\ifx#1Ï\biolinumKeyGlyph{Idieresis}%
+\else\ifx#1ô\biolinumKeyGlyph{ocircumflex}%
+\else\ifx#1Ô\biolinumKeyGlyph{Ocircumflex}%
+\else\ifx#1ù\biolinumKeyGlyph{ugrave}%
+\else\ifx#1Ù\biolinumKeyGlyph{Ugrave}%
+\else\ifx#1û\biolinumKeyGlyph{ucircumflex}%
+\else\ifx#1Û\biolinumKeyGlyph{Ucircumflex}%
+\else\ifx#1ü\biolinumKeyGlyph{udieresis}%
+\else\ifx#1Ü\biolinumKeyGlyph{Udieresis}%
+\else\ifx#1ÿ\biolinumKeyGlyph{ydieresis}%
+\else\ifx#1Ÿ\biolinumKeyGlyph{Ydieresis}%
+\else\ifx#1ç\biolinumKeyGlyph{ccedilla}%
+\else\ifx#1Ç\biolinumKeyGlyph{Ccedilla}%
+\else\biolinumKeyGlyph{#1}%
+\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}
+\end{lstlisting}
+
 \subsection{Miscellanous}
-\label{sec:org00f0870}
+\label{sec:org562c2a3}
 
 \begin{itemize}
 \item We specify the possible hyphenations of \enquote{\gutenberg}.
@@ -2583,8 +2582,25 @@
 \hyphenation{GUT-enberg}
 \end{lstlisting}
 
+\subsubsection{ISSN}
+\label{sec:org61c4abd}
+
+\begin{lstlisting}
+\cs_new_protected:Npn \__letgut_issn:
+{
+  \bool_if:NTF \g__letgut_paper_bool {
+    \c__letgut_paper_issn_tl
+  }{
+    \c__letgut_online_issn_tl
+  }
+}
+\NewDocumentCommand{\letgutissn}{ }{
+  \__letgut_issn:
+}
+\end{lstlisting}
+
 \subsubsection{Non selectable text}
-\label{sec:org4c4b60b}
+\label{sec:org00f0870}
 
 We create a control sequence that makes its argument not selectable in the
 PDF. This will be used notably for the line numbers of the listings and the
@@ -2597,11 +2613,11 @@
 \end{lstlisting}
 
 \subsubsection{Typesetting of code, etc.}
-\label{sec:org61c4abd}
+\label{sec:org371597a}
 
 We provide a \lstinline+\meta+ macro that (poorly) mimics the one of the
 \package*{doc}. It is added at the very end of the preamble since other
-package that provide a better definition of this macro may have been loaded
+package that provide another definition of this macro may have been loaded
 (e.g. \package{tcolorbox}).
 \begin{lstlisting}
 \colorlet {__letgut_meta} {
@@ -2616,50 +2632,172 @@
     \textcolor{#1}{$\langle$#2$\rangle$}
     \egroup
 }
-\AddToHook{begindocument/before}{
-  \ProvideDocumentCommand{\meta}{ O{__letgut_meta} m } {
+\AddToHook{begindocument/end}{
+  \DeclareDocumentCommand{\meta}{ O{__letgut_meta} m } {
     \__letgut_meta:nn {#1}{#2}
   }
 }
 \end{lstlisting}
 
-\subsection{\LaTeX{} listings and examples}
-\label{sec:org371597a}
+\subsection{Listings}
+\label{sec:orgf79a2c2}
 
-We first define some colors used in the listings and examples.
+We define a style for all the listings which resets all the \TeX{} control
+sequences and keywords, and fix some defaults.
 
 \begin{lstlisting}
-\definecolor{__letgut_backgroundCode}{cmyk}{0,0,0,0.04}
-\definecolor{__letgut_borderCode}{cmyk}{0,0,0,0.2}
-\definecolor{__letgut_foregroundLinenumber}{cmyk}{0,0,0,0.5}
-\definecolor{__letgut_foregroundMention}{cmyk}{0,0,0,0}
-\definecolor{__letgut_backgroundResult}{cmyk}{0,0,0,0}
+\lstdefinestyle{__letgut_reset_listings_styles}{
+  basicstyle=\ttfamily,
+  breaklines,
+  language=TeX,%
+  texcs={},%
+  language={},%
+  keywords={},%
+  keywords=[2]{},%
+  keywords=[3]{},%
+  keywords=[4]{},%
+  keywords=[5]{},%
+  otherkeywords={},%
+  alsoletter={},%
+  alsodigit={},%
+  escapechar=£,
+  columns=fullflexible,
+  keepspaces=true,
+  upquote=true,
+  showstringspaces=false,
 \end{lstlisting}
 
-We now define the colors for the syntax highlighting and define the style of our
-listings.
+If line numbers are asked, they should always have the same layout and not be
+selectable (hence the \lstinline+\__letgut_unselectable:n+).
 
 \begin{lstlisting}
+numbersep=\c__letgut_number_sep_dim,
+numberstyle=\scriptsize\ttfamily
+\color{__letgut_foregroundLinenumber}
+\__letgut_unselectable:n,
+\end{lstlisting}
+
+Because of a current issue involving \package{parskip} and \package{listings}
+(\url{https://github.com/FrankMittelbach/fmitex-parskip/issues/3}), we have to
+set the skip below the displayed listings to a (almost) zero length. We do the
+same for the above skip.
+
+\begin{lstlisting}
+  aboveskip={0\p@ \@plus 6\p@},
+  belowskip={0\p@ \@plus 6\p@},
+}
+\end{lstlisting}
+
+We define as short equivalent of \lstinline+\lstinline+ the character
+\lstDeleteShortInline⅛\texttt{⅛} which is unlikely to be used in ordinary text.
+
+\begin{lstlisting}
+\lstMakeShortInline[breaklines=false]⅛
+\end{lstlisting}
+
+We start with an empty listings style.
+
+\begin{lstlisting}
+\lstset{ style=__letgut_reset_listings_styles }
+\end{lstlisting}
+
+We create our own \lstinline+\input+ command for the articles of the Lettre with the
+following characteristics:
+
+\begin{itemize}
+\item The previous style is applied automatically. Hence, the keywords defined in
+a previous file (by loading some peticular (La)\TeX{} dialects, i.e. control
+sequences and keywords specific to some class or packages) won't interfere
+with the ones of the current file.
+\item All the acronyms are reset (each acronym is developped at its first occurrence).
+\end{itemize}
+
+\begin{lstlisting}
+\cs_new_protected:Npn \__letgut_input_article:n #1
+{
+  \lstset{ style=__letgut_reset_listings_styles }
+  \acresetall%
+  \file_input:n{#1}%
+}
+\NewDocumentCommand{\inputarticle}{m}{
+  \__letgut_input_article:n { #1 }
+}
+\end{lstlisting}
+
+\subsubsection{\LaTeX{} listings and examples}
+\label{sec:orga99a9b5}
+
+We define the colors for the syntax highlighting of \LaTeX{} listings.
+
+\begin{lstlisting}
 \colorlet{__letgut_texcs}{blue}
 \colorlet{__letgut_comment}{gray}
-\colorlet{__letgut_argument-specification-separator}{red}
-\colorlet{__letgut_argument-specification}{cyan}
-\colorlet{__letgut_mandatory-argument}{purple}
+\colorlet{__letgut_argument_specification_separator}{red}
+\colorlet{__letgut_argument_specification}{cyan}
+\colorlet{__letgut_mandatory_argument}{purple}
 \colorlet{__letgut_environment}{teal}
-\colorlet{__letgut_key}{__letgut_mandatory-argument}
+\colorlet{__letgut_key}{__letgut_mandatory_argument}
 \colorlet{__letgut_value}{violet}
-\colorlet{__letgut_optional-argument}{__letgut_key}
+\colorlet{__letgut_optional_argument}{__letgut_key}
 \colorlet{__letgut_math}{green!50!black}
-\lstset{%
+\end{lstlisting}
+
+We add our own language files taken in account by the \package*{listings}. They
+will be considered after the other usual ones, if found. They are searched firstly
+in the current directory, secondly in the parent directory, thirdly in the TDS.
+
+\begin{lstlisting}
+\def\lstlanguagefiles{
+  lstlang0.sty,
+  lstlang1.sty,
+  lstlang2.sty,
+  lstlang3.sty,
+  ./\c__letgut_lstlanguage_file_tl,
+  ../\c__letgut_lstlanguage_file_tl,
+  \c__letgut_lstlanguage_file_tl
+}
+\end{lstlisting}
+
+We define a listing style specific to \LaTeX{} listings.
+
+\begin{lstlisting}
+\lstdefinestyle{__letgut_latex_listings_style}{
+  language=TeX,%
+  alsolanguage=[AlLaTeX]TeX,%
+  alsolanguage=[LaTeX]TeX,%
+  alsolanguage=[plain]TeX,%
+  alsolanguage=[common]TeX,%
+  alsolanguage=[primitive]TeX,%
+  alsolanguage=[extLaTeX]TeX,%
+  alsolanguage=[classes]TeX,%
   texcsstyle=*\color{__letgut_texcs},
   commentstyle=\color{__letgut_comment}\itshape,
-  keywordstyle=    \color{__letgut_argument-specification-separator},
+  keywordstyle=    \color{__letgut_argument_specification_separator},
   keywordstyle={[2]\color{__letgut_environment}},
   keywordstyle={[3]\color{__letgut_key}},
   keywordstyle={[4]\color{__letgut_value}},
-  keywordstyle={[5]\color{__letgut_argument-specification}},
+  keywordstyle={[5]\color{__letgut_argument_specification}},
   keywordstyle={[6]\color{__letgut_key}},
-  escapechar=£,
+  numbers=left,
+\end{lstlisting}
+
+The \lstinline+listings+ package defines some of the LaTeX's environments as keywords of
+order 1. This would force us to do the same in our own language driver file but
+would ruin our effort to stylize in a special way (in red) other keywords (see
+\lstinline+otherkeywords={...}+) that are stylized as keywords of order 1. Hence, we
+delete these keywords of order 1 and will add them as keywords of order 2 like
+all the environments in our own language driver file (in the \lstinline+extLaTeX+ dialect
+that we load by default).
+
+\begin{lstlisting}
+deletekeywords={%
+  array,center,displaymath,document,enumerate,eqnarray,%
+  equation,flushleft,flushright,itemize,list,lrbox,math,minipage,%
+  picture,sloppypar,tabbing,tabular,trivlist,verbatim,%
+},%
+\end{lstlisting}
+
+\begin{lstlisting}
   literate=*%
   {\\\\}{{{\color{__letgut_texcs}\textbackslash\textbackslash}}}{2}%
   {\\[}{{\textcolor{__letgut_math}{\textbackslash[}}}{2}%
@@ -2668,13 +2806,33 @@
 }
 \end{lstlisting}
 
+We first define some colors used in the listings and examples.
+
+\begin{lstlisting}
+\definecolor{__letgut_backgroundCode}{cmyk}{0,0,0,0.04}
+\definecolor{__letgut_borderCode}{cmyk}{0,0,0,0.2}
+\definecolor{__letgut_foregroundLinenumber}{cmyk}{0,0,0,0.5}
+\definecolor{__letgut_foregroundMention}{cmyk}{0,0,0,0}
+\definecolor{__letgut_backgroundResult}{cmyk}{0,0,0,0}
+\end{lstlisting}
+
 For the listings and examples, we rely on \package*{tcolorbox}, and more
 specifically on some of its libraries.
 
 \begin{lstlisting}
-\tcbuselibrary{listings,xparse,breakable,skins}
+\tcbuselibrary{listings,xparse,breakable,skins,hooks}
 \end{lstlisting}
 
+We want some common settings for all the \textasciitilde{}tcolorbox\textasciitilde{}es.
+
+\begin{lstlisting}
+\tcbset{
+  breakable,
+  sharp~ corners,
+  fonttitle=\sffamily\bfseries,
+}
+\end{lstlisting}
+
 The functions:
 
 \begin{itemize}
@@ -2716,7 +2874,7 @@
 }
 \end{lstlisting}
 
-We define the style of the codes and the results boxes.
+We define the style of the codes.
 
 \begin{lstlisting}
 \tl_set:Nn \l__letgut_reference_text_tl {
@@ -2725,33 +2883,21 @@
 \tcbset{
   __letgut_code/.style={
     listing~ options={
-      % style=tcblatex,
-      numbers=left,
-      numbersep=\c__letgut_number_sep_dim,
+      style=__letgut_latex_listings_style,
+    },
+    every~ float=\raggedleft,
+    colback=__letgut_backgroundCode,
+    boxrule=0.25mm,
+    colframe=__letgut_borderCode,
+    sidebyside~ align=top~ seam,
+    toprule~ at~ break=0mm,
+    bottomrule~ at~ break=0mm,
+    colbacktitle=__letgut_borderCode,
+    fonttitle=\sffamily\bfseries,
+    before~ title={
+      \tl_set:Nn \l__letgut__tex_stuff_font_switch_tl {\rmfamily}
+    },
 \end{lstlisting}
-We want the line numbers to not be selectable, hence the \lstinline+\__letgut_unselectable:n+:.
-\begin{lstlisting}
-numberstyle=
-  \scriptsize
-  \ttfamily
-  \color{__letgut_foregroundLinenumber}
-  \__letgut_unselectable:n,
-},
-every~ float=\raggedleft,
-colback=__letgut_backgroundCode,
-breakable,
-sharp~ corners,
-boxrule=0.25mm,
-colframe=__letgut_borderCode,
-sidebyside~ align=top~ seam,
-toprule~ at~ break=0mm,
-bottomrule~ at~ break=0mm,
-colbacktitle=__letgut_borderCode,
-fonttitle=\sffamily\bfseries,
-before~ title={
-  \tl_set:Nn \l__letgut__tex_stuff_font_switch_tl {\rmfamily}
-},
-\end{lstlisting}
 We define a custom \package*{tcolorbox}'s \lstinline+title addon+ option that let us
 specify an addon to the title which will added after the automatically
 generated title “Exemple \meta{number}”.
@@ -2773,6 +2919,9 @@
 result~ width/.store~ in=\l__letgut_result_width_dim,
 result~ width=\linewidth,
 },
+\end{lstlisting}
+We define more specifically the style of the codes with results.
+\begin{lstlisting}
 __letgut_code_result/.style={
   __letgut_code={#1},
   bicolor,
@@ -2949,8 +3098,324 @@
 }
 \end{lstlisting}
 
+Since the syntax highlighting is reset at each \lstinline+\input+, the \lstinline+ltx-code-*+
+environments above provide syntax highlighting only for the commands of the \TeX
+dialects specified in the class. So we provide a specific command that let us
+specify (the dialects of) the main language (\TeX by default) for which we want
+syntax highlighting. This assumes that the commands and keywords of these
+packages are listed (properly, according to the \lstinline+listings+ package syntax) in
+the `lstlang0.sty` or \lstinline+letgut-lstlang.sty+ files.
+
+\begin{lstlisting}
+\cs_new_protected:Npn \__letgut_tcbset:n #1
+{
+  \tcbset{
+    __letgut_code/.append~ style={
+      listing~ options~ app={
+	#1
+      }
+    }
+  }
+}
+\cs_new_protected:Npn \__letgut_alsolanguage_list:nn #1 #2
+{
+\end{lstlisting}
+To reduce syntax highlighting conflicts, we reset all previous ones each
+time a new one is asked.
+\begin{lstlisting}
+  \lstset{%
+    style=__letgut_reset_listings_styles,%
+  }
+  \tl_if_empty:nTF {#1} {
+    \tl_set:Nx \l_tmpa_tl {
+      alsolanguage={#2}
+    }
+    \exp_args:NV \__letgut_tcbset:n
+    {
+      \l_tmpa_tl
+    }
+  }{
+    \seq_set_from_clist:Nn \l_tmpa_seq {#1}
+    \seq_set_map_x:NNn \l_tmpb_seq \l_tmpa_seq {
+      alsolanguage={[##1]#2}
+    }
+    \tl_set:Nx \l_tmpa_tl
+    {
+      \seq_use:Nn \l_tmpb_seq {,}
+    }
+    \exp_args:NV \__letgut_tcbset:n
+    {
+      \l_tmpa_tl
+    }
+  }
+}
+\NewDocumentCommand{\syntaxhl}{ O{TeX} m}{%
+  \__letgut_alsolanguage_list:nn {#2} {#1}
+}
+\end{lstlisting}
+
+\subsubsection{Terminal listings}
+\label{sec:org14731c9}
+
+We define a command dedicated to terminal stdin and stdout.
+
+\begin{lstlisting}
+\AddToHook{begindocument/before}{
+\end{lstlisting}
+
+We define a listing style specific to these terminal commands.
+
+\begin{lstlisting}
+\definecolor{__letgut_terminal_prompt}{RGB}{204,0,0}
+\colorlet{__letgut_terminal_comment}{gray!80}
+\definecolor{__letgut_terminal_commands}{RGB}{241,124,81}
+\definecolor{__letgut_terminal_keywords}{RGB}{173,127,168}
+\definecolor{__letgut_terminal_variables}{RGB}{114,159,207}
+\colorlet{__letgut_terminal_utilities}{__letgut_terminal_commands}
+\definecolor{__letgut_terminal_strings}{RGB}{78,154,6}
+\end{lstlisting}
+
+\begin{lstlisting}
+\lstdefinestyle{__letgut_terminal_listings_style}{
+  commentstyle=    \color{__letgut_terminal_comment},
+  keywordstyle=    \color{__letgut_terminal_commands},
+  keywordstyle={[2]\color{__letgut_terminal_keywords}},
+  keywordstyle={[3]\color{__letgut_terminal_utilities}},
+  stringstyle=     \color{__letgut_terminal_strings},
+  literate=*%
+  {$}{{\textcolor{__letgut_terminal_variables}{\$}}}{1}%$
+}
+\end{lstlisting}
+
+We define a dialect which is missing in the \package*{listings}.
+
+\begin{lstlisting}
+\lstdefinelanguage{terminal}{%
+  morekeywords={%
+    alias,bg,bind,break,builtin,caller,cd,command,compgen,%
+    complete,compopt,continue,declare,dirs,disown,echo,enable,%
+    eval,exec,exit,export,fc,fg,getopts,hash,help,history,%
+    jobs,kill,let,local,logout,mapfile,popd,printf,pushd,pwd,%
+    read,readarray,readonly,return,set,shift,shopt,source,%
+    suspend,test,times,trap,type,typeset,ulimit,umask,unalias,%
+    unset,wait,%
+  },%
+  morekeywords=[2]{%
+    case,do,done,elif,else,esac,fi,for,function,if,in,select,%
+    then,time,until,while,%
+  },%
+  morekeywords=[3]{%
+    apropos,apt,apt-get,aptitude,aspell,at,awk,base32,base64,%
+    basename,bash,bc,bzip2,cal,cat,cfdisk,chattr,chgrp,%
+    chkconfig,chmod,chown,chpasswd,chroot,cksum,clear,cmp,comm,%
+    cp,cpio,cron,crontab,csplit,curl,cut,date,dc,dd,ddrescue,%
+    df,diff,diff3,dig,dir,dircolors,dirname,dmesg,dos2unix,%
+    dpkg,du,egrep,eject,env,ethtool,expand,expr,false,fdformat,%
+    fdisk,fgrep,file,find,fmt,fold,format,free,fsck,ftp,fuser,%
+    gawk,grep,groupadd,groupdel,groupmod,groups,gzip,head,%
+    hostname,htop,iconv,id,ifconfig,ifdown,ifup,import,install,%
+    iostat,ip,join,killall,less,link,ln,locate,logname,look,%
+    lpc,lpr,lprint,lprintd,lprintq,lprm,ls,lsattr,lsblk,lsof,%
+    lspci,make,man,mkdir,mkfifo,mkfile,mkisofs,mknod,mktemp,%
+    mmv,more,most,mount,mtools,mtr,mv,nc,netstat,nft,nice,nl,%
+    nohup,notify-send,nslookup,op,open,passwd,paste,pathchk,%
+    Perf,pgrep,ping,pkill,pr,printcap,printenv,ps,pv,quota,%
+    quotacheck,ram,rar,rcp,reboot,remsync,rename,renice,rev,rm,%
+    rmdir,rsync,scp,screen,sdiff,sed,seq,sftp,shuf,shutdown,%
+    sleep,slocate,sort,split,ss,ssh,stat,strace,su,sudo,sum,%
+    sync,tail,tar,tee,timeout,tmux,top,touch,tput,tr,%
+    traceroute,true,tsort,tty,umount,uname,unexpand,uniq,units,%
+    unix2dos,unrar,unshar,uptime,useradd,userdel,usermod,users,%
+    uudecode,uuencode,vdir,vi,vmstat,watch,wc,wget,whereis,%
+    which,who,whoami,write,xargs,xdg-open,xxd,xz,yes,zip,%
+  },%
+  alsoletter={2346-},%
+  morecomment=[l]\#,%
+  morestring=[d]",%
+  morestring=[d]',%
+  sensitive%
+}[keywords,comments,strings]%
+\end{lstlisting}
+
+We define some colors used in the terminal listings.
+
+\begin{lstlisting}
+\definecolor{__letgut_foreground_terminal_dark}{named}{black}
+\colorlet{__letgut_background_terminal_dark_stdin}{
+  letgut_pagecolor!95!gray
+}
+\colorlet{__letgut_background_terminal_dark_stdout}{
+  __letgut_background_terminal_dark_stdin!60
+}
+\definecolor{__letgut_foreground_terminal_light}{named}{black}
+\definecolor{__letgut_background_terminal_light_stdin}{rgb}{
+  0.99,0.975,0.98
+}
+\colorlet{__letgut_background_terminal_light_stdout}{
+  __letgut_background_terminal_light_stdin!40
+}
+\end{lstlisting}
+
+\begin{lstlisting}
+\bool_if:NTF \g__letgut_paper_bool {
+  \colorlet{__letgut_foreground_terminal}{
+    __letgut_foreground_terminal_light
+  }
+  \colorlet{__letgut_background_terminal_stdin}{
+    __letgut_background_terminal_light_stdin
+  }
+  \colorlet{__letgut_background_terminal_stdout}{
+    __letgut_background_terminal_light_stdout
+  }
+}{
+  \colorlet{__letgut_foreground_terminal}{
+    __letgut_foreground_terminal_dark
+  }
+  \colorlet{__letgut_background_terminal_stdin}{
+    __letgut_background_terminal_dark_stdin
+  }
+  \colorlet{__letgut_background_terminal_stdout}{
+    __letgut_background_terminal_dark_stdout
+  }
+}
+\end{lstlisting}
+
+We define the style of the \lstinline+tcolorbox+ in which the terminal stdin and stdout
+will be displayed.
+
+\begin{lstlisting}
+\tcbset{%
+  terminal/.style={%
+    colupper=__letgut_foreground_terminal,
+    collower=__letgut_foreground_terminal,
+    breakable,
+    segmentation~ at~ break=false,
+    boxrule=0mm,
+    before~ lower={\tcbset{every~ listing~ line={}}},
+    listing~ options={%
+      style=__letgut_terminal_listings_style,
+      language=terminal,
+    },
+    every~ listing~ line={%
+      \textcolor{__letgut_terminal_prompt}{%
+	\ttfamily%
+	\bfseries%
+	\__letgut_unselectable:n {#1\c_space_tl}
+      }
+    },
+  },
+}
+\end{lstlisting}
+
+We define now the command
+
+\begin{lstlisting}
+\cs_new_protected:Npn \__letgut_terminal:nnnn #1 #2 #3 #4
+{
+  \bool_set_false:N \l_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_tmpa_bool
+      }{
+	\tcbset{colback=__letgut_background_terminal_stdout}
+      }
+    }{
+      \tcbset{colback=__letgut_background_terminal_stdin}
+      \tl_if_empty:nTF {#4}{
+      }{
+	\tcbset{
+	  bicolor,
+	  middle=0mm,
+	  boxsep=0mm,
+	  colbacklower=__letgut_background_terminal_stdout,
+	}
+      }
+    }
+    \bool_if:NF \l_tmpa_bool {
+      \begin{tcolorbox}[terminal={#1},#2]
+	\lstset{aboveskip=0pt}
+	\tl_if_empty:nF {#3}{
+	  \tcbset{
+	    tempfile=\jobname-stdin.tex,
+	  }
+	  \tcbusetemplisting
+	  \tl_if_empty:nF {#4}{
+	    \tcblower
+	  }
+	}
+	\tl_if_empty:nF {#4}{
+	  \tl_if_empty:nF {#3}{
+	    \lstset{aboveskip=0pt}
+	  }
+	  \tcbset{
+	    tempfile=\jobname-stdout.tex,
+	    every~ listing~ line={},
+	    listing~ options~ app={
+	      language={}
+	    }
+	  }
+	  \tcbusetemplisting
+	}
+      \end{tcolorbox}
+    }
+  }
+  \NewDocumentCommand{\terminal}{ O{\$} O{} +v +v}{
+    \__letgut_terminal:nnnn {#1} {#2} {#3} {#4}
+  }
+\end{lstlisting}
+
+We close the \lstinline+\AddToHook{begindocument/before}+ argument.
+
+\begin{lstlisting}
+}
+\end{lstlisting}
+
+\subsubsection{Unicode characters with positions above 256}
+\label{sec:org4b9a54d}
+
+Unicode characters with positions above 256 causes troubles in
+listings. Here is a workaround for some of them (see
+\url{https://tex.stackexchange.com/a/25396}).
+
+\begin{lstlisting}
+\lst at InputCatcodes
+\def\lst at DefEC{%
+ \lst at CCECUse \lst at 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%
+  ^^b0^^b1^^b2^^b3^^b4^^b5^^b6^^b7^^b8^^b9^^ba^^bb^^bc^^bd^^be^^bf%
+  ^^c0^^c1^^c2^^c3^^c4^^c5^^c6^^c7^^c8^^c9^^ca^^cb^^cc^^cd^^ce^^cf%
+  ^^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 ”
+  ^^^^215b% for ⅛
+  ^^00%
+}
+\lst at RestoreCatcodes
+\end{lstlisting}
+
 \subsection{Local config file}
-\label{sec:org562c2a3}
+\label{sec:orgcc0dfe6}
 
 Each issue of the Lettre requires certain local configurations: configuration
 dedicated to the issue in question, particular packages used in the articles,
@@ -2957,13 +3422,13 @@
 specific configurations of the \package*{listings}, etc. In order to not clutter
 the main \file*{.tex} of the Lettre, a local configuration file named
 \file{localconf.tex}, if present in the current directory, is automatically
-included at the end of the end of the preamble. And since this file is input in
-the current category régime (\lstinline+\ExplSyntaxOn+), a \lstinline+\ExplSyntaxOff+ is
-automatically inserted at its beginning.
+included at the end the preamble. And since this file is input in the current
+category régime (\lstinline+\ExplSyntaxOn+), a \lstinline+\ExplSyntaxOff+ is automatically inserted
+at its beginning.
 
 \begin{lstlisting}
 \file_if_exist:nT {./\c__letgut_local_config_file_tl}{
-  \AddToHook { file/before/./\c__letgut_local_config_file_tl } {
+  \AddToHook { file/./\c__letgut_local_config_file_tl/before } {
     \ExplSyntaxOff
   }
   \file_input:n {./\c__letgut_local_config_file_tl}
@@ -2982,7 +3447,7 @@
 \end{lstlisting}
 
 \section{(biblatex) Data model}
-\label{sec:org14731c9}
+\label{sec:org7f2c4f3}
 
 We give the (\package{biblatex}) data model that enriches the default one for
 several purposes:
@@ -2992,7 +3457,7 @@
 \end{itemize}
 
 \begin{lstlisting}
-\ProvidesFile{letgut.lbx}[2022-03-22 v0.9.1 letgut localization]
+\ProvidesFile{letgut.lbx}[2022-06-18 v0.9.2 letgut localization]
 \InheritBibliographyExtras{french}
 \DeclareBibliographyStrings{
   inherit          = {french},
@@ -3006,7 +3471,7 @@
 create the corresponding new entry).
 
 \begin{lstlisting}
-\ProvidesFile{letgut.dbx}[2022-03-22 v0.9.1 letgut data model macros]
+\ProvidesFile{letgut.dbx}[2022-06-18 v0.9.2 letgut data model macros]
 \DeclareBibliographyDriver{bookreview}{%
   \usebibmacro{bibindex}%
   \usebibmacro{begentry}%
@@ -3061,7 +3526,7 @@
 We provide a specific \lstinline+biblatex+ citation style .
 
 \begin{lstlisting}
-\ProvidesFile{letgut.cbx}[2022-03-22 v0.9.1 letgut base citation style]
+\ProvidesFile{letgut.cbx}[2022-06-18 v0.9.2 letgut base citation style]
 \RequireCitationStyle{numeric}
 \end{lstlisting}
 
@@ -3091,12 +3556,14 @@
 \end{lstlisting}
 
 \section{Provided files}
-\label{sec:org59fbe1b}
+\label{sec:org8352527}
 
 \subsection{Example file of an issue of the newsletter}
-\label{sec:org4b9a54d}
+\label{sec:orgcce26ed}
 
 \begin{lstlisting}
+% Hey, Emacs!  This is a -*- mode: latex -*- file!
+
 \documentclass{letgut}
 
 \letgutsetup{
@@ -3158,6 +3625,13 @@
   % % `informations=false`.
   %
   % , informations=false
+  %
+  % % Lors de la conception d'un numéro de la Lettre,
+  % % il peut être utile d'avoir un plan détaillé au
+  % % maximum de l'ensemble du document. C'est ce que
+  % % permet l'option `detailedtoc`.
+  %
+  % , detailedtoc
 }
 
 \setmainfont{TeX Gyre Schola} % Par exemple
@@ -3172,7 +3646,6 @@
 \end{document}
 
 %%% Local Variables:
-%%% mode: latex
 %%% TeX-engine: luatex
 %%% TeX-master: t
 %%% End:
@@ -3179,7 +3652,7 @@
 \end{lstlisting}
 
 \subsection{Example of an editorial}
-\label{sec:orgf79a2c2}
+\label{sec:org1dc0753}
 
 \begin{lstlisting}
 Ceci est un intéressant éditorial de la \lettregut{}
@@ -3199,9 +3672,11 @@
 \end{lstlisting}
 
 \subsection{Informations about \gutenberg}
-\label{sec:orgcc0dfe6}
+\label{sec:org7df48b2}
 
 \begin{lstlisting}
+% Hey, Emacs!  This is a -*- mode: latex -*- file!
+
 \enlargethispage{1.5cm}
 \small
 \vspace*{-1cm}
@@ -3212,24 +3687,24 @@
   \end{minipage}%
 }%
 \hfill%
-\begin{minipage}[t]{.4\textwidth}%\vspace{0pt}%
+\begin{minipage}[t]{.5\textwidth}%\vspace{0pt}%
   \footnotesize\raggedleft%
   Association \gut{}\\
   15 rue des Halles -- \textsc{bp} 74\\
   75001 Paris\\
   France\\
-  \nolinkurl{secretariat at gutenberg.eu.org}
+  \url{secretariat[at]gutenberg[dot]eu[dot]org}
 \end{minipage}%
 
 \begin{description}
-\item[Site internet :] \url{https://www.gutenberg.eu.org/}
-\item[\Cahiers{} :] \url{http://cahiers.gutenberg.eu.org/}
+\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.eu.org/-Listes-de-diffusion-}
-  \item[le site \TeX nique de questions et réponses :]
+    \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.eu.org}
@@ -3237,9 +3712,9 @@
 \end{description}
 %
 \alertbox{%
-  Cette association est la vôtre: faites-nous part de
+  Cette association est la vôtre : faites-nous part de
   vos idées, de vos envies, de vos préoccupations
-  à l'adresse \nolinkurl{secretariat at gutenberg.eu.org}.%
+  à l'adresse \url{secretariat[at]gutenberg[dot]eu[dot]org}.%
 }
 
 % \section[Association GUTenberg (tout sur l')]
@@ -3262,19 +3737,20 @@
   %   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
-\emph{\acs{tug}boat} à un tarif préférentiel :
+\tugboat{} à un tarif préférentiel :
 \begin{description}
-\item[tarif normal :] \EUR{65} (au lieu de 85~\$)
-\item[tarif étudiant :] \EUR{40} (au lieu de 55~\$)
+\item[tarif normal :] 65~€ (au lieu de 85~\$)
+\item[tarif étudiant :] 40~€ (au lieu de 55~\$)
 \end{description}
-% (\EUR{49,50}, étudiants et demandeurs d'emploi :
-% \EUR{29}, au lieu de 85\$ et % 65\$).  Voir
+% (49~€50}, étudiants et demandeurs d'emploi :
+% 29~€, au lieu de 85\$ et % 65\$).  Voir
 % \url{%
-% https://www.gutenberg.eu.org/?Adherer-a-l-association%
+% https://www.gutenberg-asso.fr/?Adherer-en-ligne%
 % }.
 
 \footnotesize
@@ -3283,13 +3759,13 @@
     \toprule
     \textbf{Type d'adhésion}                        & \textbf{Prix} \\
     \midrule
-    Membre individuel                               & \EUR{30}      \\
-    Membre individuel + adhésion \acs{tug}          & \EUR{95}      \\
-    Membre individuel étudiant/demandeur d'emploi   & \EUR{15}      \\
-    Membre individuel étudiant + adhésion \acs{tug} & \EUR{55}      \\
-    Association d'étudiants                         & \EUR{65}      \\
-    Organisme à but non lucratif                    & \EUR{130}     \\
-    Organisme à but lucratif                        & \EUR{229}     \\
+    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}
@@ -3300,7 +3776,7 @@
 \begin{itemize}
 \item \textbf{virement bancaire}%
   \footnote{Nous vous remercions de \textbf{privilégier}
-    le \textbf{virement bancaire}.\label{fn:1}} (IBAN :
+    le \textbf{virement bancaire}.\label{fn:1}} (\textsc{iban} :
   FR76 1870 7000 3003 0191 3568 475)%
   \leavevmode
 
@@ -3309,9 +3785,9 @@
     dans les références du virement !%
   }
 \item Paypal\footnotemark[\value{footnote}] :
-  \url{https://www.gutenberg.eu.org/?Adherer-en-ligne}
+  \url{https://www.gutenberg-asso.fr/?Adherer-en-ligne}
 \item bulletin et chèque\footnotemark[\value{footnote}] :
-  \url{https://www.gutenberg.eu.org/?Adherer-a-l-association}
+  \url{https://www.gutenberg-asso.fr/?Adherer-a-l-association}
 \end{itemize}
 
 \vfill
@@ -3338,8 +3814,8 @@
     Directeur de la publication :
     & \person{Bideault, Patrick} \\
     Comité de rédaction :
-    & {Patrick \bsc{Bideault}, Denis \bsc{Bitouzé},  \\
-      Céline \bsc{Chevalier} \& Maxime \bsc{Chupin}} \\
+    & {Patrick Bideault, Denis Bitouzé,  \\
+      Céline Chevalier \& Maxime Chupin} \\
     Adresse de la rédaction : &
     {
       Association \gut\\
@@ -3347,15 +3823,3710 @@
       75001 Paris
     }
     \\
-    \acs{issn} : & 2742-6149 (version numérique)
+    \acs{issn} : & \letgutissn
   \end{tblr}
 \end{center}
 \vfill
 \mbox{}
 \clearpage
+\end{lstlisting}
 
-%%% Local Variables:
-%%% mode: latex
-%%% End:
+\subsection{Acronyms}
+\label{sec:orgd354b5f}
+
+\begin{lstlisting}
+% Hey, Emacs!  This is a -*- mode: latex -*- file!
+
+%%%%%%%%%%%%%%%%%%%%%
+% Acronymes anglais %
+%%%%%%%%%%%%%%%%%%%%%
+\letgutacro%
+{CTAN}%
+{\href{https://www.ctan.org/}{Comprehensive \hologo{TeX} Archive
+    Network}}%
+[réseau complet d'archives \hologo{TeX}]
+
+\letgutacro%
+{PDF}%
+{Portable Document Format}%
+[format de document portable]
+
+\letgutacro%
+{URL}%
+{Uniform Resource Locator}%
+[localisateur uniforme de ressource ou, plus clairement, format des
+  adresses du Web]
+
+\letgutacro%
+{ORCID}%
+{Open Researcher and Contributor \textsc{id}}%
+[identifiant ouvert pour chercheur et contributeur]
+
+\letgutacro%[extra-foreign=souvent librement traduit en \enquote{foire
+	   %aux questions}]
+{FAQ}%
+{Frequently Asked Questions}%
+[questions fréquemment posées]
+
+\letgutacro%
+{SVG}%
+{Scalable Vector Graphics}%
+[graphiques vectoriels extensibles]
+
+\letgutacro%
+{DNS}%
+{Domain Name System}%
+[système de noms de domaine]
+
+\letgutacro%
+{VPS}%
+{Virtual Private Server}%
+[serveur dédié virtuel]
+
+\letgutacro%
+{LDAP}%
+{Lightweight Directory Access Protocol}%
+[protocole d'accès à répertoire léger, sytème garantissant
+  l'authentification d'utilisateurs de plusieurs services dispersés]
+
+\letgutacro%
+{OTF}%
+{Open Type Format}%
+[]
+
+\letgutacro%
+{DOI}%
+{Digital Object Identifier}%
+[identifiant numérique d'objet]
+
+\letgutacro%
+{ISSN}%
+{International Standard Serial Number}%
+[numéro international normalisé des publications en série]
+
+\letgutacro%
+{TUG}%
+{\hologo{TeX} User Group}%
+[groupe (international) d'utilisateurs de \hologo{TeX}]
+
+\letgutacro%
+{WCAG}%
+{Web Content Accessibility Guidelines}%
+[directives sur l'accessibilité du contenu Web]
+
+\letgutacro%
+{HTML}%
+{HyperText Markup Language}%
+[langage de balises pour l'hypertexte]
+
+\letgutacro%
+{CSS}%
+{Cascading Style Sheets}%
+[feuilles de style en cascade]
+
+\letgutacro%
+{UTF}%
+{Universal (Character Set) Transformation Format}%
+[format de transformation (du jeu) universel (de caractères codés)]
+
+\letgutacro%[short=\emph{Ti\emph{k}Z},short-format=\em,foreign-babel=german,foreign-locale=allemand]
+{TIKZ}%
+{Ti\emph{k}Z ist \emph{kein} Zeichenprogramm}%
+[Ti\emph{k}Z \emph{n'}est \emph{pas} un programme de dessin]
+
+\letgutacro%
+{PGF}%
+{Portable Graphics Format}%
+[format de graphiques portable]
+
+\letgutacro%
+{GPL}%
+{\textsc{gnu} General Public License}%
+[licence publique générale \textsc{gnu}]
+
+\letgutacro%
+{OFL}%
+{SIL Open Font License}%
+[]
+
+\letgutacro%
+{DVI}%
+{DeVice-Independent}%
+[indépendant du type de périphérique]
+
+\letgutacro%
+{PS}%
+{PostScript}%
+[]
+
+\letgutacro%
+{DVIPS}%
+{\acs{dvi}-to-\acs{ps} (translator)}%
+[(convertisseur) \acs{dvi} vers \acs{ps}]
+
+\letgutacro%
+{IPA}%
+{International Phonetic Alphabet}%
+[alphabet phonétique international]
+
+\letgutacro%
+{TIPA}%
+{\hologo{TeX} \acs{ipa} or Tokyo \acs{ipa}}%
+[alphabet phonétique international]
+
+\letgutacro%
+{XML}%
+{eXtensible Markup Language}%
+[langage de balisage extensible]
+
+\letgutacro%
+{APA}%
+{American Psychological Association}%
+[association américaine de psychologie]
+
+\letgutacro%
+{OS}%
+{Operating System}%
+[système d'exploitation]
+
+\letgutacro%
+{BSD}%
+{Berkeley Software Distribution}%
+[collection de logiciels de Berkeley]
+
+\letgutacro%
+{IMAP}%
+{Internet Message Access Protocol}%
+[]
+
+\letgutacro%
+{SMTP}%
+{Simple Mail Transfer Protocol}%
+[protocole simple de transfert de courrier]
+
+\letgutacro%
+{RTF}%
+{Rich Text Format}%
+[format de texte enrichi]
+
+\letgutacro%
+{WYSIWYG}%
+{What You See Is What You Get}%
+[ce que vous voyez est ce que vous obtenez]
+
+\letgutacro%
+{ISO}%
+{\href{https://www.iso.org/home.html}{International Organization for
+    Standardization}}%
+[\href{https://www.iso.org/fr/home.html}{organisation internationale de
+  normalisation}]
+
+\letgutacro%
+{OFF}%
+{Open Font Format}%
+[format de fonte ouvert]
+
+\letgutacro%
+{CSV}%
+{Comma-separated values}%
+[valeurs séparées par des virgules]
+
+\letgutacro%
+{YAML}%
+{\textsc{yaml} Ain’t Markup Language}%
+[\textsc{yaml} n'est pas un langage de balisage (acronyme récursif)]
+
+\letgutacro%
+{UCA}%
+{Unicode Collation Algorithm}%
+[algorithme de tris d'Unicode]
+
+\letgutacro%
+{NFSS}%
+{New Font Selection Scheme}%
+[nouveau schéma de sélection de fonte]
+
+\letgutacro%
+{ASCII}%
+{American Standard Code for Information Interchange}%
+[code américain normalisé pour l'échange d'information]
+
+\letgutacro%
+{TDS}%
+{\TeX{} Directory Structure}%
+[structure de répertoire de \TeX{}]
+
+%%%%%%%%%%%%%%%%%%%%%%
+% Acronymes français %
+%%%%%%%%%%%%%%%%%%%%%%
+\letgutacro%
+{SMAI}%
+{\href{http://smai.emath.fr/}{Société de Mathématiques Appliquées et
+    Industrielles}}%
+
+\letgutacro%
+{AG}%
+{Assemblée Générale}%
+
+\letgutacro%
+{CA}%
+{Conseil d'Administration}%
+
+\letgutacro%
+{SHS}%
+{Sciences Humaines et Sociales}%
+
+\letgutacro%
+{IREM}%
+{\href{https://www.univ-irem.fr/}{Instituts de Recherche sur
+    l'Enseignement des Mathématiques}}%
+
+\letgutacro%
+{MEEF}%
+{Métiers de l'Enseignement, de l'Éducation et de la Formation}%
+
+\letgutacro%
+{ECM}%
+{\href{https://texnique.fr/osqa/faq/\#custom-id-ecm}{Exemple Complet
+    Minimal}}%
+
+\letgutacro%
+{INSPÉ}%
+{\href{https://www.reseau-inspe.fr/}{Instituts Nationaux Supérieurs du
+    Professorat et de l'Éducation}}%
+
+\letgutacro%[short=\textsc{gra}pp\textsc{a},short-format=\upshape]
+{GRAppA}%
+{Groupe de recherche en Apprentissage Automatique}%
+
+\letgutacro%
+{BBB}%
+{BigBlueButton}%
+
+\letgutacro%
+{CV}%
+{Curriculum Vitæ}%
+
+\letgutacro%
+{RGPD}%
+{Règlement Général sur la Protection des Données}%
+
+\letgutacro%
+{NDLR}%
+{Note de la Rédaction}%
+
+\letgutacro%
+{BTS}%
+{Brevet de Technicien Supérieur}%
+
+\letgutacro%
+{APMEP}%
+{Association des Professeurs de Mathématiques de l'Enseignement Public}%
+
+\letgutacro%
+{PAO}%
+{Publication Assistée par Ordinateur}%
 \end{lstlisting}
+
+\subsection{Language driver file}
+\label{sec:orgc985cc3}
+
+\begin{lstlisting}
+ % \lst at definelanguage[...]{TeX}{%
+ %   % Control sequences names
+ %   moretexcs={%
+ %   },%
+ %   % Keywords of class 1 : keywords that contain other characters
+ %   % (since of the same class as the ones specified as 'otherkeywords')
+ %   morekeywords={%
+ %   },%
+ %   % Keywords of class 2 : environments names
+ %   morekeywords=[2]{%
+ %   },%
+ %   % Keywords of class 3 : mandatory arguments (not environments) &
+ %   % optional arguments which are keys (in key=value)
+ %   morekeywords=[3]{%
+ %   },%
+ %   % Keywords of class 4 : values of keys (in key=value)
+ %   morekeywords=[4]{%
+ %   },%
+ %   % Keywords of class 5 : arguments specifications (after ":" in expl3
+ %   % syntax)
+ %   morekeywords=[5]{%
+ %    },%
+ %   % Keywords of class 6 : current package name (and possibly derived
+ %   % packages)
+ %    morekeywords=[6]{%
+ %      %
+ %   },%
+ %   % otherkeywords={},
+ %   % alsoletter={},
+ %   % alsodigit={},%
+ %   % alsoother={},%
+ %   sensitive,%
+ % }[keywords,tex,comments%]
+
+ \lst at definelanguage[letgut]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     letgutsetup,title,subtitle,author,francophony,person,author,%
+     package,package*,class,class*,software,software*,file,file*,%
+     foreignloc,latinloc,gutenberg,gut,lettre,lettregut,Cahier,%
+     Cahiers,letgut,letgutcls,knuth,lamport,tugboat,item*,letgutacro,%
+     separator,alertbox,terminal,inputarticle,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+     ctannews,ltx-code,ltx-code-result,ltx-code-external-result,%
+     bookreview,%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+     for-authors,for-readers,draft,final,screen,paper,number,date,%
+     pagecolor,allcolorslinks,membership-reminder,editorial,informations,%
+     title,addon,result width,reference,text,title,reviewer,bibkey,%
+     frontcover,price,result,and,%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     letgut%
+   },%
+   % otherkeywords={},%
+   alsoletter={-\ },%
+   % alsodigit={},%
+   alsoother={*},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ % LaTeX texcs and keywords that are missing in `listings` driver file
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\lst at definelanguage[extLaTeX]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     Huge,LARGE,Large,LoadClass,NewCommandCopy,RequirePackage,%
+     ShowCommand,abovecaptionskip,abstractname,appendix,appendixname,%
+     arraycolsep,arrayrulewidth,author,backmatter,baselinestretch,%
+     belowcaptionskip,bf,bibindent,bibname,bigskipamount,bottomfraction,%
+     brokenpenalty,cal,chapter,chaptermark,chaptername,clubpenalty,%
+     columnsep,columnseprule,contentsname,date,dblfloatpagefraction,%
+     dblfloatsep,dbltextfloatsep,dbltopfraction,descriptionlabel,%
+     displaywidowpenalty,doublerulesep,evensidemargin,fboxrule,fboxsep,%
+     figurename,floatpagefraction,floatsep,footins,footnoterule,%
+     footnotesep,footnotesize,footskip,frontmatter,headheight,headsep,%
+     huge,indexname,indexspace,interlinepenalty,intextsep,it,jot,%
+     labelenumi,labelenumii,labelenumiii,labelenumiv,labelitemfont,%
+     labelitemi,labelitemii,labelitemiii,labelitemiv,labelsep,%
+     labelwidth,large,leftmargin,leftmargini,leftmarginii,leftmarginiii,%
+     leftmarginiv,leftmarginv,leftmarginvi,lineskip,listfigurename,%
+     listoffigures,listoftables,listtablename,mainmatter,maketitle,%
+     marginparpush,marginparsep,marginparwidth,maxdepth,medskipamount,%
+     mit,newblock,normallineskip,normalsize,oddsidemargin,paragraph,%
+     paragraphmark,parindent,parskip,part,partname,partopsep,%
+     postdisplaypenalty,predisplaypenalty,refname,rm,sc,scriptsize,%
+     section,sectionmark,setlength,sf,sl,small,smallskipamount,%
+     subitem,subparagraph,subparagraphmark,subsection,subsectionmark,%
+     subsubitem,subsubsection,subsubsectionmark,tabbingsep,tabcolsep,%
+     tablename,tableofcontents,textfloatsep,textfraction,textheight,%
+     textwidth,thechapter,theenumi,theenumii,theenumiii,theenumiv,%
+     theequation,theparagraph,thepart,thesection,thesubparagraph,%
+     thesubsection,thesubsubsection,tiny,title,today,topfraction,%
+     topmargin,topskip,tt,widowpenalty,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+     abstract,array,center,description,displaymath,document,enumerate,%
+     eqnarray,equation,figure,flushleft,flushright,itemize,list,lrbox,math,%
+     minipage,picture,quotation,quote,sloppypar,tabbing,table,tabular,%
+     thebibliography,theindex,titlepage,trivlist,verbatim,verse,%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+     % c,cc,ccc,cccc,X,l,
+     empty,%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     %
+   },
+   otherkeywords={|},%
+   % alsoletter={},% alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[listings]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     lstDeleteShortInline,lstMakeShortInline,lstalias,lstaspectfiles,%
+     lstdefineformat,lstdefinelanguage,lst at definelanguage,lstdefinestyle,%
+     lstindexmacro,lstinline,lstinputlisting,lstlanguagefiles,%
+     lstlgrindeffile,lstlistingname,lstlistingnamestyle,%
+     lstlistlistingname,lstlistoflistings,lstloadlanguages,lstname,%
+     lstnewenvironment,lstset,theHlstnumber,thelstlabel,thelstlisting,%
+     thelstnumber,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+     lstlisting,%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+     0.21,ABAP,ACM,ACMscript,ACSL,Ada,Algol,Ant,Assembler,Awk,%
+     Basic,C,C++,CIL,Caml,Clean,Cobol,Comal 80,Comsol,Delphi,%
+     Eiffel,Elan,Euphoria,Fortran,GAP,GCL,Gnuplot,Go,HTML,Haskell,%
+     IDL,JVMIS,Java,LLVM,Lingo,Lisp,Logo,Lua,ML,Mathematica,Matlab,%
+     Mercury,MetaPost,Miranda,Mizar,Modula-2,MuPAD,NASTRAN,OCL,%
+     OORexx,Oberon-2,Octave,Oz,PHP,PL/I,POV,PSTricks,Pascal,Perl,%
+     Plasm,PostScript,Prolog,Promela,Python,R,RSL,Reduce,Rexx,Ruby,%
+     S,SAS,SHELXL,SPARQL,SQL,Scala,Scilab,Simula,Swift,TeX,%
+     VBScript,VHDL,VRML,Verilog,XML,XSLT,[03]Fortran,[08]Fortran,%
+     [1.0]Mathematica,[11.0]Mathematica,[11]C++,[1974]Cobol,[1985]Cobol,%
+     [2005]Ada,[3.0]Mathematica,[5.0]Lua,[5.1]Lua,[5.2]Lua,%
+     [5.2]Mathematica,[5.3]Lua,[60]Algol,[67]Simula,[68]Algol,%
+     [77]Fortran,[83]Ada,[90]Fortran,[95]Ada,[95]Fortran,[97]VRML,%
+     [AMS]VHDL,[ANSI]C,[ANSI]C++,[AlLaTeX]TeX,[AspectJ]Java,[Auto]Lisp,%
+     [Borland6]Pascal,[CII]Simula,[CORBA]IDL,[DEC]Simula,[GNU]C++,%
+     [Handel]C,[IBM]Simula,[ISO]C++,[LaTeX]TeX,[Motorola68k]Assembler,%
+     [OMG]OCL,[Objective]C,[Objective]Caml,[PLUS]S,[POSIX]Awk,[R/2
+     4.3]ABAP,[R/2 5.0]ABAP,[R/3 3.1]ABAP,[R/3 4.6C]ABAP,[R/3 6.10]ABAP,%
+     [Sharp]C,[Standard]Pascal,[VM/XA]Rexx,[Visual]Basic,[Visual]C++,%
+     [WinXP]command.com,[XSC]Pascal,[common]TeX,[decorative]OCL,%
+     [empty]IDL,[empty]Java,[empty]Lisp,[empty]Rexx,[empty]S,%
+     [empty]VHDL,[empty]make,[empty]tcl,[gnu]Awk,[gnu]make,[ibm]Cobol,%
+     [light]Caml,[plain]TeX,[primitive]TeX,[tk]tcl,[x86masm]Assembler,%
+     abovecaptionskip,aboveskip,alsodigit,alsolanguage,alsoletter,%
+     alsoother,backgroundcolor,basewidth,bash,basicstyle,%
+     belowcaptionskip,belowskip,boxpos,breakatwhitespace,breakautoindent,%
+     breakindent,breaklines,caption,captionpos,classoffset,columns,%
+     command.com,comment,comments,commentstyle,consecutivenumbers,csh,%
+     defaultdialect,deletecomment,deletedelim,deletedirectives,%
+     deleteemph,deleteendkeywords,deletehyperref,deleteindex,%
+     deletekeywordcomment,deletekeywords,deleteprocnamekeys,deletestring,%
+     deletetxcs,delim,directives,directivestyle,draft,elisp,emph,%
+     emphstyle,emptylines,erlang,escapebegin,escapechar,escapeend,%
+     escapeinside,extendedchars,fancyvrb,fillcolor,final,firstline,%
+     firstnumber,flexiblecolumns,float,floatplacement,fontadjust,%
+     formats,formfeed,frame,frameround,framerule,framesep,frameshape,%
+     framexbottommargin,framexleftmargin,framexrightmargin,%
+     framextopmargin,fvcmdparams,gobble,hansl,hyper,hyperanchor,%
+     hyperlink,hyperref,identifierstyle,includerangemarker,index,%
+     indexprocnames,indexstyle,inform,inputencoding,inputpath,%
+     keepspaces,keywordcomment,keywordcommentsemicolon,keywords,%
+     keywordsprefix,keywordstyle,ksh,label,language,lastline,lgrind,%
+     lgrindef,linerange,lineskip,linewidth,literate,make,makemacrouse,%
+     markfirstintag,mathescape,morecomment,moredelim,moredirectives,%
+     moreemph,moreendkeywords,morefvcmdparams,morehyperref,moreindex,%
+     morekeywordcomment,morekeywords,moreprocnamekeys,morestring,%
+     moretexcs,multicols,name,ndkeywords,ndkeywordstyle,noaspects,%
+     nolol,numberblanklines,numberbychapter,numberfirstline,numbers,%
+     numbersep,numberstyle,otherkeywords,podcomment,postbreak,prebreak,%
+     print,printpod,procnamekeys,procnames,procnamestyle,%
+     rangebeginprefix,rangebeginsuffix,rangeendprefix,rangeendsuffix,%
+     rangeprefix,rangesuffix,resetmargins,rulecolor,rulesep,%
+     rulesepcolor,savemem,sensitive,%
+     sh,showlines,showspaces,showstringspaces,showtabs,stepnumber,%
+     string,stringstyle,style,tab,tabsize,tag,tagstyle,tcl,texcl,%
+     texcs,texcsstyle,title,upquote,usekeywordsintag,xleftmargin,%
+     xrightmargin,LaTeX,TeX,tex%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+     b,c,t,none,left,right,%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     listings,%
+   },%
+   % otherkeywords={},%
+   alsoletter={@021.[]},%
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[xcolor]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     color,pagecolor,definecolor,colorlet,textcolor,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+     red,green,blue,cyan,magenta,yellow,black,gray,white,darkgray,%
+     lightgray,brown,lime,olive,orange,pink,purple,teal,violet },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     xcolor },%
+   % otherkeywords={},
+   % alsoletter={},
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[expl3]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     .bool_gset,%
+     ExplFileDate,ExplFileDescription,ExplFileName,ExplFileVersion,%
+     ExplSyntaxOff,ExplSyntaxOn,GetIdInfo,ProvidesExplClass,%
+     ProvidesExplFile,ProvidesExplPackage,bool_case_false,bool_case_true,%
+     bool_const,bool_do_until,bool_do_while,bool_gset,bool_gset_eq,%
+     bool_gset_false,bool_gset_inverse,bool_gset_true,bool_if,%
+     bool_if_exist,bool_if_exist_p,bool_if_p,bool_lazy_all,%
+     bool_lazy_all_p,bool_lazy_and,bool_lazy_and_p,bool_lazy_any,%
+     bool_lazy_any_p,bool_lazy_or,bool_lazy_or_p,bool_log,bool_new,%
+     bool_not_p,bool_set,bool_set_eq,bool_set_false,bool_set_inverse,%
+     bool_set_true,bool_show,bool_to_str,bool_until_do,bool_while_do,%
+     bool_xor,bool_xor_p,box_autosize_to_wd_and_ht,%
+     box_autosize_to_wd_and_ht_plus_dp,box_clear,box_clear_new,box_clip,%
+     box_dp,box_gautosize_to_wd_and_ht,box_gautosize_to_wd_and_ht_plus_dp,%
+     box_gclear,box_gclear_new,box_gclip,box_gresize_to_ht,%
+     box_gresize_to_ht_plus_dp,box_gresize_to_wd,box_gresize_to_wd_and_ht,%
+     box_gresize_to_wd_and_ht_plus_dp,box_grotate,box_gscale,box_gset_dp,%
+     box_gset_eq,box_gset_eq_drop,box_gset_ht,box_gset_to_last,%
+     box_gset_trim,box_gset_viewport,box_gset_wd,box_ht,box_ht_plus_dp,%
+     box_if_empty,box_if_empty_p,box_if_exist,box_if_exist_p,%
+     box_if_horizontal,box_if_horizontal_p,box_if_vertical,%
+     box_if_vertical_p,box_log,box_move_down,box_move_left,%
+     box_move_right,box_move_up,box_new,box_resize_to_ht,%
+     box_resize_to_ht_plus_dp,box_resize_to_wd,box_resize_to_wd_and_ht,%
+     box_resize_to_wd_and_ht_plus_dp,box_rotate,box_scale,box_set_dp,%
+     box_set_eq,box_set_eq_drop,box_set_ht,box_set_to_last,box_set_trim,%
+     box_set_viewport,box_set_wd,box_show,box_use,box_use_drop,box_wd,%
+     c_alignment_token,c_ampersand_str,c_atsign_str,c_backslash_str,%
+     c_catcode_active_space_tl,c_catcode_active_tl,c_catcode_letter_token,%
+     c_catcode_other_space_tl,c_catcode_other_token,c_circumflex_str,%
+     c_code_cctab,c_colon_str,c_document_cctab,c_dollar_str,c_e_fp,%
+     c_empty_box,c_empty_clist,c_empty_coffin,c_empty_prop,c_empty_seq,%
+     c_empty_tl,c_false_bool,c_group_begin_token,c_group_end_token,%
+     c_hash_str,c_inf_fp,c_initex_cctab,c_left_brace_str,c_log_iow,%
+     c_math_subscript_token,c_math_superscript_token,c_math_toggle_token,%
+     c_max_char_int,c_max_dim,c_max_int,c_max_muskip,c_max_register_int,%
+     c_max_skip,c_minus_inf_fp,c_minus_zero_fp,c_nan_fp,c_novalue_tl,%
+     c_one_degree_fp,c_one_fp,c_one_int,c_other_cctab,c_parameter_token,%
+     c_percent_str,c_pi_fp,c_right_brace_str,c_space_tl,c_space_token,%
+     c_str_cctab,c_sys_backend_str,c_sys_day_int,c_sys_engine_exec_str,%
+     c_sys_engine_format_str,c_sys_engine_str,c_sys_engine_version_str,%
+     c_sys_hour_int,c_sys_jobname_str,c_sys_minute_int,c_sys_month_int,%
+     c_sys_output_str,c_sys_platform_str,c_sys_shell_escape_int,%
+     c_sys_year_int,c_term_iow,c_tilde_str,c_true_bool,c_underscore_str,%
+     c_zero_dim,c_zero_fp,c_zero_int,c_zero_muskip,c_zero_skip,%
+     c_zero_str,cctab_begin,cctab_const,cctab_end,cctab_gset,%
+     cctab_if_exist,cctab_if_exist_p,cctab_item,cctab_new,cctab_select,%
+     char_foldcase,char_generate,char_gset_active_eq,char_lowercase,%
+     char_set_active_eq,char_set_catcode,char_set_catcode_active,%
+     char_set_catcode_alignment,char_set_catcode_comment,%
+     char_set_catcode_end_line,char_set_catcode_escape,%
+     char_set_catcode_group_begin,char_set_catcode_group_end,%
+     char_set_catcode_ignore,char_set_catcode_invalid,%
+     char_set_catcode_letter,char_set_catcode_math_subscript,%
+     char_set_catcode_math_superscript,char_set_catcode_math_toggle,%
+     char_set_catcode_other,char_set_catcode_parameter,%
+     char_set_catcode_space,char_set_lccode,char_set_mathcode,%
+     char_set_sfcode,char_set_uccode,char_show_value_catcode,%
+     char_show_value_lccode,char_show_value_mathcode,%
+     char_show_value_sfcode,char_show_value_uccode,char_str_foldcase,%
+     char_str_lowercase,char_str_titlecase,char_str_uppercase,%
+     char_titlecase,char_to_nfd,char_to_utfviii_bytes,char_uppercase,%
+     char_value_catcode,char_value_lccode,char_value_mathcode,%
+     char_value_sfcode,char_value_uccode,clist_clear,clist_clear_new,%
+     clist_concat,clist_const,clist_count,clist_gclear,clist_gclear_new,%
+     clist_gconcat,clist_get,clist_gpop,clist_gpush,clist_gput_left,%
+     clist_gput_right,clist_gremove_all,clist_gremove_duplicates,%
+     clist_greverse,clist_gset,clist_gset_eq,clist_gset_from_seq,%
+     clist_gsort,clist_if_empty,clist_if_empty_p,clist_if_exist,%
+     clist_if_exist_p,clist_if_in,clist_item,clist_log,clist_map_break,%
+     clist_map_function,clist_map_inline,clist_map_tokens,%
+     clist_map_variable,clist_new,clist_pop,clist_push,clist_put_left,%
+     clist_put_right,clist_rand_item,clist_remove_all,%
+     clist_remove_duplicates,clist_reverse,clist_set,clist_set_eq,%
+     clist_set_from_seq,clist_show,clist_sort,clist_use,coffin_attach,%
+     coffin_clear,coffin_display_handles,coffin_dp,coffin_gattach,%
+     coffin_gclear,coffin_gjoin,coffin_gresize,coffin_grotate,%
+     coffin_gscale,coffin_gset_eq,coffin_gset_horizontal_pole,%
+     coffin_gset_vertical_pole,coffin_ht,coffin_if_exist,%
+     coffin_if_exist_p,coffin_join,coffin_log,coffin_log_structure,%
+     coffin_mark_handle,coffin_new,coffin_resize,coffin_rotate,%
+     coffin_scale,coffin_set_eq,coffin_set_horizontal_pole,%
+     coffin_set_vertical_pole,coffin_show,coffin_show_structure,%
+     coffin_typeset,coffin_wd,color_ensure_current,color_export,%
+     color_fill,color_group_begin,color_group_end,color_log,color_math,%
+     color_model_new,color_profile_apply,color_select,color_set,%
+     color_set_eq,color_show,color_stroke,cs_argument_spec,cs,cs_end,%
+     cs_generate_from_arg_count,cs_generate_variant,cs_gset,cs_gset_eq,%
+     cs_gset_nopar,cs_gset_protected,cs_gset_protected_nopar,cs_if_eq,%
+     cs_if_eq_p,cs_if_exist,cs_if_exist_p,cs_if_exist_use,cs_if_free,%
+     cs_if_free_p,cs_log,cs_meaning,cs_new,cs_new_eq,cs_new_nopar,%
+     cs_new_protected,cs_new_protected_nopar,cs_prefix_spec,%
+     cs_replacement_spec,cs_set,cs_set_eq,cs_set_nopar,cs_set_protected,%
+     cs_set_protected_nopar,cs_show,cs_split_function,cs_to_str,%
+     cs_undefine,debug_off,debug_on,debug_resume,debug_suspend,dim_abs,%
+     dim_add,dim_case,dim_compare,dim_compare_p,dim_const,dim_do_until,%
+     dim_do_while,dim_eval,dim_gadd,dim_gset,dim_gset_eq,dim_gsub,%
+     dim_gzero,dim_gzero_new,dim_if_exist,dim_if_exist_p,dim_log,%
+     dim_max,dim_min,dim_new,dim_ratio,dim_set,dim_set_eq,dim_show,%
+     dim_sign,dim_step_function,dim_step_inline,dim_step_variable,%
+     dim_sub,dim_to_decimal,dim_to_decimal_in_bp,dim_to_decimal_in_sp,%
+     dim_to_decimal_in_unit,dim_to_fp,dim_until_do,dim_use,dim_while_do,%
+     dim_zero,dim_zero_new,draw_begin,draw_end,else,exp_after,exp_args,%
+     exp_args_generate,exp_end,exp_end_continue_f,exp_last_two_unbraced,%
+     exp_last_unbraced,exp_not,exp_stop_f,expandafter,expanded,fi,%
+     file_compare_timestamp,file_compare_timestamp_p,file_full_name,%
+     file_get,file_get_full_name,file_get_hex_dump,file_get_mdfive_hash,%
+     file_get_size,file_get_timestamp,file_hex_dump,file_if_exist,%
+     file_if_exist_input,file_input,file_input_stop,file_log_list,%
+     file_mdfive_hash,file_parse_full_name,file_parse_full_name_apply,%
+     file_show_list,file_size,file_timestamp,flag_clear,flag_clear_new,%
+     flag_height,flag_if_exist,flag_if_exist_p,flag_if_raised,%
+     flag_if_raised_p,flag_log,flag_new,flag_raise,flag_raise_if_clear,%
+     flag_show,fp_abs,fp_add,fp_compare,fp_compare_p,fp_const,%
+     fp_do_until,fp_do_while,fp_eval,fp_format,fp_gadd,fp_gset,%
+     fp_gset_eq,fp_gsub,fp_gzero,fp_gzero_new,fp_if_exist,fp_if_exist_p,%
+     fp_if_nan,fp_if_nan_p,fp_log,fp_max,fp_min,fp_new,fp_set,%
+     fp_set_eq,fp_show,fp_sign,fp_step_function,fp_step_inline,%
+     fp_step_variable,fp_sub,fp_to_decimal,fp_to_dim,fp_to_int,%
+     fp_to_scientific,fp_to_tl,fp_trap,fp_until_do,fp_use,fp_while_do,%
+     fp_zero,fp_zero_new,fparray_count,fparray_gset,fparray_gzero,%
+     fparray_item,fparray_item_to_tl,fparray_new,g_file_curr_dir_str,%
+     g_file_curr_ext_str,g_file_curr_name_str,g_msg_module_name_prop,%
+     g_msg_module_type_prop,g_peek_token,g_tmpa_bool,g_tmpa_box,%
+     g_tmpa_clist,g_tmpa_coffin,g_tmpa_dim,g_tmpa_fp,g_tmpa_int,%
+     g_tmpa_ior,g_tmpa_iow,g_tmpa_muskip,g_tmpa_prop,g_tmpa_regex,%
+     g_tmpa_seq,g_tmpa_skip,g_tmpa_str,g_tmpa_tl,g_tmpb_bool,g_tmpb_box,%
+     g_tmpb_clist,g_tmpb_coffin,g_tmpb_dim,g_tmpb_fp,g_tmpb_int,%
+     g_tmpb_ior,g_tmpb_iow,g_tmpb_muskip,g_tmpb_prop,g_tmpb_regex,%
+     g_tmpb_seq,g_tmpb_skip,g_tmpb_str,g_tmpb_tl,group_align_safe_begin,%
+     group_align_safe_end,group_begin,group_end,group_insert_after,%
+     group_log_list,group_show_list,hbox,hbox_gset,hbox_gset_end,%
+     hbox_gset_to_wd,hbox_overlap_center,hbox_overlap_left,%
+     hbox_overlap_right,hbox_set,hbox_set_end,hbox_set_to_wd,hbox_to_wd,%
+     hbox_to_zero,hbox_unpack,hbox_unpack_drop,hcoffin_gset,%
+     hcoffin_gset_end,hcoffin_set,hcoffin_set_end,if,if_bool,%
+     if_box_empty,if_case,if_catcode,if_charcode,if_cs_exist,if_dim,%
+     if_eof,if_false,if_hbox,if_int_compare,if_int_odd,if_meaning,%
+     if_mode_horizontal,if_mode_inner,if_mode_math,if_mode_vertical,%
+     if_predicate,if_true,if_vbox,int_abs,int_add,int_case,int_compare,%
+     int_compare_p,int_const,int_decr,int_div_round,int_div_truncate,%
+     int_do_until,int_do_while,int_eval,int_from_alph,int_from_base,%
+     int_from_bin,int_from_hex,int_from_oct,int_from_roman,int_gadd,%
+     int_gdecr,int_gincr,int_gset,int_gset_eq,int_gsub,int_gzero,%
+     int_gzero_new,int_if_even,int_if_even_p,int_if_exist,int_if_exist_p,%
+     int_if_odd,int_if_odd_p,int_incr,int_log,int_max,int_min,int_mod,%
+     int_new,int_rand,int_set,int_set_eq,int_show,int_sign,%
+     int_step_...,int_step_function,int_step_inline,int_step_variable,%
+     int_sub,int_to_Alph,int_to_Base,int_to_Hex,int_to_Roman,%
+     int_to_alph,int_to_arabic,int_to_base,int_to_bin,int_to_hex,%
+     int_to_oct,int_to_roman,int_to_symbols,int_until_do,int_use,%
+     int_value,int_while_do,int_zero,int_zero_new,%
+     intarray_const_from_clist,intarray_count,intarray_gset,%
+     intarray_gset_rand,intarray_gzero,intarray_item,intarray_log,%
+     intarray_new,intarray_rand_item,intarray_show,intarray_to_clist,%
+     ior_close,ior_get,ior_get_term,ior_if_eof,ior_if_eof_p,ior_log,%
+     ior_log_list,ior_map_break,ior_map_inline,ior_map_variable,ior_new,%
+     ior_open,ior_shell_open,ior_show,ior_show_list,ior_str_get,%
+     ior_str_get_term,ior_str_map_inline,ior_str_map_variable,%
+     iow_allow_break,iow_char,iow_close,iow_indent,iow_log,iow_log_list,%
+     iow_new,iow_newline,iow_now,iow_open,iow_shipout,iow_shipout_x,%
+     iow_show,iow_show_list,iow_term,iow_wrap,keys_define,%
+     keys_if_choice_exist,keys_if_choice_exist_p,keys_if_exist,%
+     keys_if_exist_p,keys_log,keys_set,keys_set_filter,keys_set_groups,%
+     keys_set_known,keys_show,keyval_parse,l_char_active_seq,%
+     l_char_special_seq,l_color_fixed_model_tl,l_color_math_active_tl,%
+     l_file_search_path_seq,l_iow_line_count_int,l_keys_choice_int,%
+     l_keys_choice_tl,l_keys_key_str,l_keys_path_str,%
+     l_keys_usage_load_prop,l_keys_usage_preamble_prop,l_keys_value_tl,%
+     l_my_int,l_peek_token,l_text_accents_tl,l_text_case_exclude_arg_tl,%
+     l_text_expand_exclude_tl,l_text_letterlike_tl,l_text_math_arg_tl,%
+     l_text_math_delims_tl,l_text_titlecase_check_letter_bool,l_tmpa_bool,%
+     l_tmpa_box,l_tmpa_clist,l_tmpa_coffin,l_tmpa_dim,l_tmpa_fp,%
+     l_tmpa_int,l_tmpa_muskip,l_tmpa_prop,l_tmpa_regex,l_tmpa_seq,%
+     l_tmpa_skip,l_tmpa_str,l_tmpa_tl,l_tmpb_bool,l_tmpb_box,%
+     l_tmpb_clist,l_tmpb_coffin,l_tmpb_dim,l_tmpb_fp,l_tmpb_int,%
+     l_tmpb_muskip,l_tmpb_prop,l_tmpb_regex,l_tmpb_seq,l_tmpb_skip,%
+     l_tmpb_str,l_tmpb_tl,legacy_if,legacy_if_gset,legacy_if_gset_false,%
+     legacy_if_gset_true,legacy_if_p,legacy_if_set,legacy_if_set_false,%
+     legacy_if_set_true,lua_escape,lua_now,lua_shipout,lua_shipout_e,%
+     mode_if_horizontal,mode_if_horizontal_p,mode_if_inner,%
+     mode_if_inner_p,mode_if_math,mode_if_math_p,mode_if_vertical,%
+     mode_if_vertical_p,mode_leave_vertical,msg_critical,%
+     msg_critical_text,msg_error,msg_error_text,msg_expandable_error,%
+     msg_fatal,msg_fatal_text,msg_gset,msg_if_exist,msg_if_exist_p,%
+     msg_info,msg_info_text,msg_line_context,msg_line_number,msg_log,%
+     msg_log_eval,msg_module_name,msg_module_type,msg_new,msg_none,%
+     msg_note,msg_redirect_class,msg_redirect_module,msg_redirect_name,%
+     msg_see_documentation_text,msg_set,msg_show,msg_show_eval,%
+     msg_show_item,msg_show_item_unbraced,msg_term,msg_warning,%
+     msg_warning_text,muskip_add,muskip_const,muskip_eval,muskip_gadd,%
+     muskip_gset,muskip_gset_eq,muskip_gsub,muskip_gzero,%
+     muskip_gzero_new,muskip_if_exist,muskip_if_exist_p,muskip_log,%
+     muskip_new,muskip_set,muskip_set_eq,muskip_show,muskip_sub,%
+     muskip_use,muskip_zero,muskip_zero_new,pdf_destination,%
+     pdf_object_if_exist,pdf_object_if_exist_p,pdf_object_new,%
+     pdf_object_ref,pdf_object_ref_last,pdf_object_unnamed_write,%
+     pdf_object_write,pdf_pageobject_ref,pdf_pagobject_ref,pdf_uncompress,%
+     pdf_version,pdf_version_compare,pdf_version_compare_p,%
+     pdf_version_gset,pdf_version_major,pdf_version_min_gset,%
+     pdf_version_minor,peek_N_type,peek_after,peek_analysis_map_break,%
+     peek_analysis_map_inline,peek_catcode,peek_catcode_collect_inline,%
+     peek_catcode_remove,peek_charcode,peek_charcode_collect_inline,%
+     peek_charcode_remove,peek_gafter,peek_meaning,%
+     peek_meaning_collect_inline,peek_meaning_remove,peek_regex,%
+     peek_regex_remove_once,peek_regex_replace_once,peek_remove_filler,%
+     peek_remove_spaces,prg_break,prg_break_point,prg_do_nothing,%
+     prg_generate_conditional_variant,prg_map_break,prg_new_conditional,%
+     prg_new_eq_conditional,prg_new_protected_conditional,prg_replicate,%
+     prg_return_false,prg_return_true,prg_set_conditional,%
+     prg_set_eq_conditional,prg_set_protected_conditional,prop_clear,%
+     prop_clear_new,prop_concat,prop_const_from_keyval,prop_count,%
+     prop_gclear,prop_gclear_new,prop_gconcat,prop_get,prop_gpop,%
+     prop_gput,prop_gput_from_keyval,prop_gput_if_new,prop_gremove,%
+     prop_gset_eq,prop_gset_from_keyval,prop_if_empty,prop_if_empty_p,%
+     prop_if_exist,prop_if_exist_p,prop_if_in,prop_if_in_p,prop_item,%
+     prop_log,prop_map_break,prop_map_function,prop_map_inline,%
+     prop_map_tokens,prop_new,prop_pop,prop_put,prop_put_from_keyval,%
+     prop_put_if_new,prop_rand_key_value,prop_remove,prop_set_eq,%
+     prop_set_from_keyval,prop_show,prop_to_keyval,q_mark,q_nil,%
+     q_no_value,q_recursion_stop,q_recursion_tail,q_stop,quark_if_nil,%
+     quark_if_nil_p,quark_if_no_value,quark_if_no_value_p,%
+     quark_if_recursion_tail_break,quark_if_recursion_tail_stop,%
+     quark_if_recursion_tail_stop_do,quark_new,regex_const,regex_count,%
+     regex_extract_all,regex_extract_once,regex_gset,regex_log,%
+     regex_match,regex_match_case,regex_new,regex_replace,%
+     regex_replace_all,regex_replace_case_all,regex_replace_case_once,%
+     regex_replace_once,regex_set,regex_show,regex_split,reverse_if,%
+     s_stop,scan_new,scan_stop,seq_clear,seq_clear_new,seq_concat,%
+     seq_const_from_clist,seq_count,seq_gclear,seq_gclear_new,%
+     seq_gconcat,seq_get,seq_get_left,seq_get_right,seq_gpop,%
+     seq_gpop_item,seq_gpop_left,seq_gpop_right,seq_gpush,seq_gput_left,%
+     seq_gput_right,seq_gremove_all,seq_gremove_duplicates,seq_greverse,%
+     seq_gset_eq,seq_gset_filter,seq_gset_from_clist,%
+     seq_gset_from_function,seq_gset_from_inline_x,seq_gset_item,%
+     seq_gset_map,seq_gset_map_x,seq_gset_split,%
+     seq_gset_split_keep_spaces,seq_gshuffle,seq_gsort,seq_if_empty,%
+     seq_if_empty_p,seq_if_exist,seq_if_exist_p,seq_if_in,seq_item,%
+     seq_log,seq_map_break,seq_map_function,seq_map_indexed_function,%
+     seq_map_indexed_inline,seq_map_inline,seq_map_tokens,%
+     seq_map_variable,seq_mapthread_function,seq_new,seq_pop,%
+     seq_pop_item,seq_pop_left,seq_pop_right,seq_push,seq_put_left,%
+     seq_put_right,seq_rand_item,seq_remove_all,seq_remove_duplicates,%
+     seq_reverse,seq_set_eq,seq_set_filter,seq_set_from_clist,%
+     seq_set_from_function,seq_set_from_inline_x,seq_set_item,seq_set_map,%
+     seq_set_map_x,seq_set_split,seq_set_split_keep_spaces,seq_show,%
+     seq_shuffle,seq_sort,seq_use,skip_add,skip_const,skip_eval,%
+     skip_gadd,skip_gset,skip_gset_eq,skip_gsub,skip_gzero,%
+     skip_gzero_new,skip_horizontal,skip_if_eq,skip_if_eq_p,%
+     skip_if_exist,skip_if_exist_p,skip_if_finite,skip_if_finite_p,%
+     skip_log,skip_new,skip_set,skip_set_eq,skip_show,skip_sub,%
+     skip_use,skip_vertical,skip_zero,skip_zero_new,sort_return_same,%
+     sort_return_swapped,str_case,str_case_e,str_clear,str_clear_new,%
+     str_compare,str_compare_p,str_concat,str_const,str_convert_pdfname,%
+     str_count,str_count_ignore_spaces,str_count_spaces,str_foldcase,%
+     str_gclear,str_gconcat,str_gput_left,str_gput_right,str_gremove_all,%
+     str_gremove_once,str_greplace_all,str_greplace_once,str_gset,%
+     str_gset_convert,str_gset_eq,str_head,str_head_ignore_spaces,%
+     str_if_empty,str_if_empty_p,str_if_eq,str_if_eq_p,str_if_exist,%
+     str_if_exist_p,str_if_in,str_item,str_item_ignore_spaces,str_log,%
+     str_lowercase,str_map_break,str_map_function,str_map_inline,%
+     str_map_tokens,str_map_variable,str_new,str_put_left,str_put_right,%
+     str_range,str_range_ignore_spaces,str_remove_all,str_remove_once,%
+     str_replace_all,str_replace_once,str_set,str_set_convert,str_set_eq,%
+     str_show,str_tail,str_tail_ignore_spaces,str_uppercase,str_use,%
+     sys_finalise,sys_get_shell,sys_gset_rand_seed,sys_if_engine_luatex,%
+     sys_if_engine_luatex_p,sys_if_engine_pdftex,sys_if_engine_pdftex_p,%
+     sys_if_engine_ptex,sys_if_engine_ptex_p,sys_if_engine_uptex,%
+     sys_if_engine_uptex_p,sys_if_engine_xetex,sys_if_engine_xetex_p,%
+     sys_if_output_dvi,sys_if_output_dvi_p,sys_if_output_pdf,%
+     sys_if_output_pdf_p,sys_if_platform_unix,sys_if_platform_unix_p,%
+     sys_if_platform_windows,sys_if_platform_windows_p,sys_if_rand_exist,%
+     sys_if_rand_exist_p,sys_if_shell,sys_if_shell_p,%
+     sys_if_shell_restricted,sys_if_shell_restricted_p,%
+     sys_if_shell_unrestricted,sys_if_shell_unrestricted_p,%
+     sys_load_backend,sys_load_debug,sys_rand_seed,sys_shell_now,%
+     sys_shell_shipout,sys_timer,text_declare_expand_equivalent,%
+     text_declare_purify_equivalent,text_expand,text_lowercase,%
+     text_purify,text_titlecase,text_titlecase_first,text_uppercase,%
+     tl_analysis_log,tl_analysis_map_inline,tl_analysis_show,%
+     tl_build_begin,tl_build_clear,tl_build_end,tl_build_gbegin,%
+     tl_build_gclear,tl_build_gend,tl_build_get,tl_build_gput_left,%
+     tl_build_gput_right,tl_build_put_left,tl_build_put_right,tl_case,%
+     tl_clear,tl_clear_new,tl_concat,tl_const,tl_count,tl_count_tokens,%
+     tl_gclear,tl_gclear_new,tl_gconcat,tl_gput_left,tl_gput_right,%
+     tl_gremove_all,tl_gremove_once,tl_greplace_all,tl_greplace_once,%
+     tl_greverse,tl_gset,tl_gset_eq,tl_gset_rescan,tl_gsort,%
+     tl_gtrim_spaces,tl_head,tl_if_blank,tl_if_blank_p,tl_if_empty,%
+     tl_if_empty_p,tl_if_eq,tl_if_eq_p,tl_if_exist,tl_if_exist_p,%
+     tl_if_head_eq_catcode,tl_if_head_eq_catcode_p,tl_if_head_eq_charcode,%
+     tl_if_head_eq_charcode_p,tl_if_head_eq_meaning,%
+     tl_if_head_eq_meaning_p,tl_if_head_is_N_type,tl_if_head_is_N_type_p,%
+     tl_if_head_is_group,tl_if_head_is_group_p,tl_if_head_is_space,%
+     tl_if_head_is_space_p,tl_if_in,tl_if_novalue,tl_if_novalue_p,%
+     tl_if_single,tl_if_single_p,tl_if_single_token,tl_if_single_token_p,%
+     tl_item,tl_log,tl_map_break,tl_map_function,tl_map_inline,%
+     tl_map_tokens,tl_map_variable,tl_new,tl_put_left,tl_put_right,%
+     tl_rand_item,tl_range,tl_range_braced,tl_range_unbraced,%
+     tl_remove_all,tl_remove_once,tl_replace_all,tl_replace_once,%
+     tl_rescan,tl_reverse,tl_reverse_items,tl_set,tl_set_eq,%
+     tl_set_rescan,tl_show,tl_sort,tl_tail,tl_to_str,tl_trim_spaces,%
+     tl_trim_spaces_apply,tl_use,token_case_catcode,token_case_charcode,%
+     token_case_meaning,token_if_active,token_if_active_p,%
+     token_if_alignment,token_if_alignment_p,token_if_chardef,%
+     token_if_chardef_p,token_if_cs,token_if_cs_p,token_if_dim_register,%
+     token_if_dim_register_p,token_if_eq_catcode,token_if_eq_catcode_p,%
+     token_if_eq_charcode,token_if_eq_charcode_p,token_if_eq_meaning,%
+     token_if_eq_meaning_p,token_if_expandable,token_if_expandable_p,%
+     token_if_font_selection,token_if_font_selection_p,%
+     token_if_group_begin,token_if_group_begin_p,token_if_group_end,%
+     token_if_group_end_p,token_if_int_register,token_if_int_register_p,%
+     token_if_letter,token_if_letter_p,token_if_long_macro,%
+     token_if_long_macro_p,token_if_macro,token_if_macro_p,%
+     token_if_math_subscript,token_if_math_subscript_p,%
+     token_if_math_superscript,token_if_math_superscript_p,%
+     token_if_math_toggle,token_if_math_toggle_p,token_if_mathchardef,%
+     token_if_mathchardef_p,token_if_muskip_register,%
+     token_if_muskip_register_p,token_if_other,token_if_other_p,%
+     token_if_parameter,token_if_parameter_p,token_if_primitive,%
+     token_if_primitive_p,token_if_protected_long_macro,%
+     token_if_protected_long_macro_p,token_if_protected_macro,%
+     token_if_protected_macro_p,token_if_skip_register,%
+     token_if_skip_register_p,token_if_space,token_if_space_p,%
+     token_if_toks_register,token_if_toks_register_p,token_to_meaning,%
+     token_to_str,unvcopy,use,use_i,use_i_delimit_by_q_nil,%
+     use_i_delimit_by_q_recursion_stop,use_i_delimit_by_q_stop,use_i_ii,%
+     use_ii,use_ii_i,use_iii,use_iv,use_none,use_none_delimit_by_q_nil,%
+     use_none_delimit_by_q_recursion_stop,use_none_delimit_by_q_stop,%
+     use_none_delimit_by_s_stop,vbox,vbox_gset,vbox_gset_end,%
+     vbox_gset_split_to_ht,vbox_gset_to_ht,vbox_gset_top,vbox_set,%
+     vbox_set_end,vbox_set_split_to_ht,vbox_set_to_ht,vbox_set_top,%
+     vbox_to_ht,vbox_to_zero,vbox_top,vbox_unpack,vbox_unpack_drop,%
+     vcoffin_gset,vcoffin_gset_end,vcoffin_set,vcoffin_set_end,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+     name,alternative-model,alternative-values,%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+     cmyk,%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+     D,N,Nn,NF,NN,Nx,NT,NTF,NNn,NnV,Nnn,Npn,Nnnn,V,c,e,en,f,n,nF,%
+     nn,nT,nnn,nnF,nnV,nTF,nnnn,nNnF,nNnT,nnVV,o,p,v,w,x,%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     expl3,%
+   },
+   otherkeywords={:,~},%
+   alsoletter={_-.},%
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[pdftex]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     pdfinfo,pdfcatalog,pdfpageattr,pdfpagesattr,pdfpageresources,%
+     pdfcolorstack,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     pdftex,%
+   },%
+   % otherkeywords={},
+   % alsoletter={},
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[luatex]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     pdfextension,ifluatex,directlua,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+     colorstack },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     luatex,%
+   },%
+   % otherkeywords={},
+   % alsoletter={},
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[dvips]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+     color,push,%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     dvips,%
+   },%
+   % otherkeywords={},
+   % alsoletter={},
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[xetex]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+     pdfcolorstack,%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     xetex,%
+   },%
+   % otherkeywords={},
+   % alsoletter={},
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[inputenc]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+     latin1 },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     inputenc,%
+   },%
+   % otherkeywords={},%
+   alsoletter={1},%
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[pdfmanagement-testphase]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     pdfmanagement_add,DeclareDocumentMetadata,AddToDocumentProperties,%
+     ShowDocumentProperties,GetDocumentProperties,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{% Keys or optional arguments
+     pdfmanagement-testphase,uncompress,geometry,top-level,backend,Info,%
+     ThisPage,pdfversion,pdfstandard,paper,topic,Title,Rotate,%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+     dvipdfmx,%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+     nnn,%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     pdfmanagement-testphase,%
+   },
+   otherkeywords={:},%
+   alsoletter={_-},%
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[rotating]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+     sidewaystable,%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     rotating,%
+   },%
+   % alsoletter={},
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[fontenc]{TeX}%
+ {%
+   % Control sequences names
+   moretexcs={%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+     T1 },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     fontenc,%
+   },%
+   % otherkeywords={},
+   % alsoletter={1},%
+   alsodigit={1},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[babel]{TeX}%
+ {%
+   % Control sequences names
+   moretexcs={%
+     foreignlanguage,selectlanguage,iflanguage,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+     otherlanguage,%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+     UKenglish,USenglish,acadian,afrikaans,american,arabic,australian,%
+     austrian,azerbaijani,bahasa,bahasai,basque,bgreek,brazil,%
+     brazilian,breton,british,bulgarian,canadian,canadien,catalan,%
+     croatian,czech,danish,dutch,english,esperanto,estonian,ethiop,%
+     farsi,finnish,francais,french,frenchle,friulan,galician,german,%
+     germanb,greek,hebrew,hindi,ibygreek,icelandic,indon,indonesian,%
+     interlingua,irish,italian,japanese,latin,latvian,lithuanian,%
+     lowersorbian,magyar,malay,melayu (bahasam),mongolian,naustrian,%
+     newzealand,ngerman,norsk,nynorsk,pinyin,polish,polutonikogreek,%
+     portuges,portuguese,romanian,romansh,russian,samin,scottish,%
+     serbian,serbianc,slovak,slovene,spanglish,spanish,swedish,thai,%
+     thaicjk,turkish,turkmen,ukrainian,uppersorbian,vietnamese,%
+     welsh,%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     babel,%
+   },%
+   % otherkeywords={},
+   % alsoletter={},
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[babel-french]{TeX}%
+ {%
+   % Control sequences names
+   moretexcs={%
+     og,fg,up,bsc,ier,iers,iere,ieres,ieme,iemes,primo,secundo,%
+     tertio,quarto,FrenchEnumerate,No,Nos,no,nos,degre,nombre,%
+     frenchabstractname,frenchbibname,frenchrefname,frenchprefacename,%
+     frenchchaptername,frenchappendixname,frenchcontentsname,%
+     frenchlistfigurename,frenchlisttablename,frenchindexname,%
+     frenchglossaryname,frenchfigurename,frenchtablename,frenchpartname,%
+     frenchenclname,frenchccname,frenchheadtoname,frenchpagename,%
+     frenchseename,frenchalsoname,frenchproofname%,%
+     frquote,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     babel-french,%
+   },%
+   % otherkeywords={},%
+   alsoletter={-},%
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[kantlipsum]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     kant,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     kantlipsum,%
+   },%
+   % otherkeywords={},
+   % alsoletter={},
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[hyperxmp]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     hyperxmp,%
+   },%
+   % otherkeywords={},
+   % alsoletter={},
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[hyperref]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     hypersetup,href,phantomsection,pdfstringdefDisableCommands,url,%
+     nolinkurl,hyperbaseurl,hyperimage,hyperdef,hyperref,hyperlink,%
+     hypertarget,hyperget,autoref,autopageref,ref*,pageref*,autoref*,%
+     autopageref*,pdfstringdef,pdfbookmark,currentpdfbookmark,%
+     subpdfbookmark,belowpdfbookmark,texorpdfstring,thispdfpagelabel,%
+     hypercalcbp,nameref,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+     allbordercolors,allcolors,anchorcolor,backref,baseurl,bookmarks,%
+     bookmarksnumbered,bookmarksopen,bookmarksopenlevel,bookmarkstype,%
+     breaklinks,CJKbookmarks,citebordercolor,citecolor,colorlinks,debug,%
+     destlabel,draft,driverfallback,dvipdfm,dvipdfmx,dvips,dvipsone,%
+     dviwindo,encap,extension,filebordercolor,filecolor,final,%
+     frenchlinks,hidelinks,hyperfigures,hyperfootnotes,hyperindex,%
+     hypertex,hypertexnames,implicit,latex2html,linkbordercolor,%
+     linkcolor,linktoc,linktocpage,menubordercolor,menucolor,nativepdf,%
+     naturalnames,nesting,next-anchor,pageanchor,pagebackref,pdfauthor,%
+     pdfborder,pdfborderstyle,pdfcenterwindow,pdfcreator,pdfdirection,%
+     pdfdisplaydoctitle,pdfduplex,pdffitwindow,pdfhighlight,pdfinfo,%
+     pdfkeywords,pdflang,pdfmark,pdfmenubar,pdfnewwindow,%
+     pdfnonfullscreenpagemode,pdfnumcopies,pdfpagelabels,pdfpagelayout,%
+     pdfpagemode,pdfpagescrop,pdfpagetransition,pdfpicktraybypdfsize,%
+     pdfprintarea,pdfprintclip,pdfprintpagerange,pdfprintscaling,%
+     pdfproducer,pdfremotestartview,pdfstartpage,pdfstartview,pdfsubject,%
+     pdftex,pdftitle,pdftoolbar,pdftrapped,pdfview,pdfviewarea,%
+     pdfviewclip,pdfwindowui,plainpages,ps2pdf,psdextra,raiselinks,%
+     runbordercolor,runcolor,setpagesize,tex4ht,textures,unicode,%
+     urlbordercolor,urlcolor,verbose,vtex,xetex,%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     hyperref,%
+   },%
+   % otherkeywords={},%
+   alsoletter={*},%
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[graphicx]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     includegraphics,includegraphics*,definecolor,color,textcolor,%
+     mathcolor,pagecolor,nopagecolor,colorbox,fcolorbox,rotatebox,%
+     scalebox,reflectbox,resizebox,resizebox*,graphicspath,%
+     DeclareGraphicsExtensions,DeclareGraphicsRule },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+     draft,final,hiresbb,demo,setpagesize,nosetpagesize,dvips,xdvi,%
+     dvipdf,dvipdfm,dvipdfmx,xetex,pdftex,luatex,dvisvgm,dvipsone,%
+     dviwindo,emtex,dviwin,oztex,textures,pctexps,pctexwin,pctexhp,%
+     pctex32,truetex,tcidvi,vtex,debugshow,hiderotate,hidescale,alt,%
+     %
+     bb,bbllx,bblly,bburx,bbury,natwidth,natheight,hiresbb,pagebox,%
+     viewport,trim,angle,origin,width,height,totalheight,%
+     keepaspectratio,scale,clip,draft,type,ext,read,command,quiet,%
+     page,interpolate,decodearray,origin,x,y,units,%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+     mediabox,cropbox,bleedbox,trimbox,artbox,true,false,%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     graphicx,%
+   },%
+   % otherkeywords={},%
+   alsoletter={23},%
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[geometry]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     geometry,newgeometry,restoregeometry,savegeometry,loadgeometry,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+     paper,papername,paperwidth,paperheight,papersize,landscape,%
+     portrait,layout,layoutwidth,layoutheight,layoutsize,layouthoffset,%
+     layoutvoffset,layoutoffset,hscale,vscale,scale,width,totalwidth,%
+     height,totalheight,total,textwidth,textheight,text,body,lines,%
+     includehead,includefoot,includeheadfoot,includemp,includeall,%
+     ignorehead,ignorefoot,ignoreheadfoot,ignoremp,ignoreall,%
+     heightrounded,hdivide,vdivide,divide,left,lmargin,inner,right,%
+     rmargin,outer,top,tmargin,bottom,bmargin,hmargin,vmargin,margin,%
+     hmarginratio,vmarginratio,marginratio,ratio,hcentering,vcentering,%
+     centering,twoside,asymmetric,headheight,head,headsep,footskip,%
+     foot,nohead,nofoot,noheadfoot,footnotesep,marginparwidth,%
+     marginparsep,nomarginpar,columnsep,hoffset,voffset,offset,%
+     twocolumn,onecolumn,reversemp,reversemarginpar,verbose,reset,mag,%
+     truedimen,pass,showframe,showcrop,%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+     a0paper,a1paper,a2paper,a3paper,a4paper,a5paper,a6paper,b0paper,%
+     b1paper,b2paper,b3paper,b4paper,b5paper,b6paper,c0paper,c1paper,%
+     c2paper,c3paper,c4paper,c5paper,c6paper,b0j,b1j,b2j,b3j,b4j,%
+     b5j,b6j,ansiapaper,ansibpaper,ansicpaper,ansidpaper,ansiepaper,%
+     letterpaper,executivepaper,legalpaper,screen,dvips,dvipdfm,pdftex,%
+     luatex,xetex,vtex,dvipdfmx,xdvipdfmx,%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     geometry,%
+   },%
+   % otherkeywords={},%
+   alsoletter={0123456},%
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[newpax]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     newpaxsetup,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+     addannots,%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+     false,%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     newpax,%
+   },%
+   % otherkeywords={},
+   % alsoletter={},
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[tikz]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     usetikzlibrary,draw,node,matrix,fill,foreach,tikz,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+     tikzpicture,%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+     pic,rotate,xshift,yshift,every node,inner sep,blend mode,fill,%
+     fit,circle,anchor,in,count,x,y,matrix,of,math,nodes,above
+     right,at,--,-|,|-,%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+     multiply,lightgray,base,%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     tikz,%
+   },%
+   % otherkeywords={},%
+   alsoletter={-| \ },%
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[tikzducks]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     duck,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+     alien,aodai,baguette,basket,beard,beret,bill,body,book,%
+     bookcolour,bowtie,bubblecolour,bunny,buttons,cake,cap,cape,%
+     cheese,chef,cocktail,conicalhat,crazyhair,cricket,crown,crozier,%
+     crystalball,darthvader,devil,easter,egga,eggb,eggc,eye,eyebrow,%
+     flavoura,flavourb,flavourc,football,glasses,graduate,grumpy,%
+     handbag,harlequin,hat,head,helmet,hockey,horsetail,icecream,%
+     inear,invisible,jacket,kingcrown,lapel,laughing,lightsaber,%
+     longhair,magichat,magicstars,magicwand,mask,milkshake,mohican,%
+     mullet,name,neckerchief,necklace,niuqelrah,overleaf,parrot,%
+     parting,peakedcap,pickaxe,pizza,prison,queencrown,recedinghair,%
+     ribbon,rollingpin,sailor,santa,sheep,shorthair,shovel,signback,%
+     signcolour,signpost,snowduck,speech,squareglasses,stethoscope,%
+     strawhat,sunglasses,tail,tassel,think,tie,tophat,torch,tshirt,%
+     umbrella,umbrellaclosed,unicorn,vampire,viking,water,wine,wing,%
+     witch,woggle,%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+     blue,green,red,yellow,%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     tikzducks,%
+   },%
+   % otherkeywords={},
+   % alsoletter={},
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[tikzlings]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     anteater,bear,bee,cat,chicken,coati,elephant,hippo,koala,%
+     marmot,mole,mouse,owl,panda,penguin,pig,rhino,sheep,sloth,%
+     squirrel,snowman,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+     3D,eye,contour,back,globalwarming,whiskers,schroedinger,%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     tikzlings,%
+   },%
+   % otherkeywords={},%
+   alsoletter={3},%
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[amsmath]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     cdots,ddots,vdots,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+     pmatrix,%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     amsmath,%
+   },%
+   % otherkeywords={},
+   % alsoletter={},
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ % xparse
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \lst at definelanguage[xparse]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     NewDocumentCommand,RenewDocumentCommand,ProvideDocumentCommand,%
+     DeclareDocumentCommand,NewDocumentEnvironment,%
+     RenewDocumentEnvironment,ProvideDocumentEnvironment,%
+     DeclareDocumentEnvironment,NewExpandableDocumentCommand,%
+     RenewExpandableDocumentCommand,ProvideExpandableDocumentCommand,%
+     DeclareExpandableDocumentCommand,IfNoValueT,IfNoValueF,IfNoValueTF,%
+     IfValueT,IfValueF,IfValueTF,IfBooleanT,IfBooleanF,IfBooleanTF,%
+     BooleanTrue,BooleanFalse,ProcessedArgument,ReverseBoolean,%
+     SplitArgument,SplitList,ProcessList,TrimSpaces,%
+     GetDocumentCommandArgSpec,GetDocumentEnvironmentArgSpec,%
+     ShowDocumentCommandArgSpec,ShowDocumentEnvironmentArgSpec,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+     log-declarations,%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     xparse,%
+   },%
+   % otherkeywords={},%
+   alsoletter={-},%
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ % colortbl
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \lst at definelanguage[colortbl]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     columncolor,rowcolor,cellcolor,arrayrulecolor,doublerulesepcolor,%
+     minrowclearance,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     colortbl,%
+   },%
+   % otherkeywords={},
+   % alsoletter={},
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ % multirow
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \lst at definelanguage[multirow]{TeX}%
+ {%
+   % Control sequences names
+   moretexcs={%
+     multirow,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     multirow,%
+   },%
+   % otherkeywords={},
+   % alsoletter={},
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ % nicematrix
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \lst at definelanguage[nicematrix]{TeX}%
+ {%
+   % Control sequences names
+   moretexcs={%
+     Cdots,Ddots,Vdots,Body,CodeBefore,CodeAfter,Block,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+     pNiceMatrix,NiceMatrix,NiceTabular,bNiceArray,%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+     hvlines,rules/width,baseline,colortbl-like,margin,right-margin,%
+     create-cell-nodes,rounded-corners,draw,%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     nicematrix,%
+   },
+   otherkeywords={&},%
+   alsoletter={/},%
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ % booktabs
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \lst at definelanguage[booktabs]{TeX}%
+ {%
+   % Control sequences names
+   moretexcs={%
+     toprule,midrule,bottomrule,cmidrule,addlinespace,morecmidrules,%
+     specialrule,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     booktabs,%
+   },%
+   % otherkeywords={},
+   % alsoletter={},
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ % strands
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \lst at definelanguage[strands]{TeX}%
+ {%
+   % Control sequences names
+   moretexcs={%
+     strands,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     strands,%
+   },%
+   % otherkeywords={},
+   % alsoletter={},
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ % cartonaugh
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \lst at definelanguage[cartonaugh]{TeX}%
+ {%
+   % Control sequences names
+   moretexcs={%
+     maxterms,minterms,terms,implicant,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+     cartonaugh,%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     cartonaugh,%
+   },%
+   % otherkeywords={},
+   % alsoletter={},
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ % xistercian
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \lst at definelanguage[xistercian]{TeX}%
+ {%
+   % Control sequences names
+   moretexcs={%
+     cisterciannum,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+     xistercian,%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     xistercian,%
+   },%
+   % otherkeywords={},
+   % alsoletter={},
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ % aboensis
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \lst at definelanguage[aboensis]{TeX}%
+ {%
+   % Control sequences names
+   moretexcs={%
+     abcursivefamily,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     aboensis,%
+   },%
+   % otherkeywords={},
+   % alsoletter={},
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ % tabularray
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \lst at definelanguage[tabularray]{TeX}%
+ {%
+   % Control sequences names
+   moretexcs={%
+     ,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+     tblr,%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+     width,colspec,row,bg,fg,font,column,hlines,X,%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+     odd,%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     tabularray,%
+   },%
+   % otherkeywords={},
+   % alsoletter={},
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ % ninecolors
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \lst at definelanguage[ninecolors]{TeX}%
+ {%
+   % Control sequences names
+   moretexcs={%
+     NineColors,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+     gray1,red1,brown1,yellow1,olive1,green1,teal1,cyan1,azure1,%
+     blue1,violet1,magenta1,purple1,gray2,red2,brown2,yellow2,olive2,%
+     green2,teal2,cyan2,azure2,blue2,violet2,magenta2,purple2,gray3,%
+     red3,brown3,yellow3,olive3,green3,teal3,cyan3,azure3,blue3,%
+     violet3,magenta3,purple3,gray4,red4,brown4,yellow4,olive4,%
+     green4,teal4,cyan4,azure4,blue4,violet4,magenta4,purple4,gray5,%
+     red5,brown5,yellow5,olive5,green5,teal5,cyan5,azure5,blue5,%
+     violet5,magenta5,purple5,gray6,red6,brown6,yellow6,olive6,%
+     green6,teal6,cyan6,azure6,blue6,violet6,magenta6,purple6,gray7,%
+     red7,brown7,yellow7,olive7,green7,teal7,cyan7,azure7,blue7,%
+     violet7,magenta7,purple7,gray8,red8,brown8,yellow8,olive8,%
+     green8,teal8,cyan8,azure8,blue8,violet8,magenta8,purple8,gray9,%
+     red9,brown9,yellow9,olive9,green9,teal9,cyan9,azure9,blue9,%
+     violet9,magenta9,purple9,gray1,red1,brown1,yellow1,olive1,%
+     green1,teal1,cyan1,azure1,blue1,violet1,magenta1,purple1,gray2,%
+     red2,brown2,yellow2,olive2,green2,teal2,cyan2,azure2,blue2,%
+     violet2,magenta2,purple2,gray3,red3,brown3,yellow3,olive3,%
+     green3,teal3,cyan3,azure3,blue3,violet3,magenta3,purple3,gray4,%
+     red4,brown4,yellow4,olive4,green4,teal4,cyan4,azure4,blue4,%
+     violet4,magenta4,purple4,gray5,red5,brown5,yellow5,olive5,%
+     green5,teal5,cyan5,azure5,blue5,violet5,magenta5,purple5,gray6,%
+     red6,brown6,yellow6,olive6,green6,teal6,cyan6,azure6,blue6,%
+     violet6,magenta6,purple6,gray7,red7,brown7,yellow7,olive7,%
+     green7,teal7,cyan7,azure7,blue7,violet7,magenta7,purple7,gray8,%
+     red8,brown8,yellow8,olive8,green8,teal8,cyan8,azure8,blue8,%
+     violet8,magenta8,purple8,gray9,red9,brown9,yellow9,olive9,%
+     green9,teal9,cyan9,azure9,blue9,violet9,magenta9,purple9,%
+     saturation,%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+     low,medium,high,%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     ninecolors,%
+   },%
+   % otherkeywords={},%
+   alsoletter={123456789},%
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[fontspec]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     EncodingAccent,EncodingCommand,EncodingComposite,%
+     EncodingCompositeCommand,EncodingSymbol,IfFontExistsTF,%
+     IfFontFeatureActiveTF,UndeclareAccent,UndeclareCommand,%
+     UndeclareComposite,UndeclareSymbol,addfontfeature,addfontfeatures,%
+     aliasfontfeature,aliasfontfeatureoption,defaultfontfeatures,fontspec,%
+     liningnums,newAATfeature,newfontface,newfontfamily,newfontfeature,%
+     newfontlanguage,newfontscript,newopentypefeature,oldstylenums,%
+     providefontface,providefontfamily,renewfontface,renewfontfamily,%
+     setboldmathrm,setfontface,setfontfamily,setmainfont,setmathrm,%
+     setmathsf,setmathtt,setmonofont,setromanfont,setsansfont,strong,%
+     strongfontdeclare,strongresetsetmainfont,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+     Alternate,Annotation,AutoFakeBold,AutoFakeSlant,BoldFeatures,%
+     BoldFont,BoldItalicFeatures,BoldItalicFont,BoldSlantedFeatures,%
+     BoldSlantedFont,BoldSwashFeatures,BoldSwashFont,CJKShape,%
+     CharacterVariant,CharacterWidth,Color,Colour,Contextuals,%
+     Diacritics,Extension,FakeBold,FakeSlant,FakeStretch,Font,FontFace,%
+     Fractions,HyphenChar,IgnoreFontspecFileItalicFeatures,ItalicFont,%
+     Kerning,Language,LetterSpace,Letters,Ligatures,LocalForms,%
+     NFSSFamily,Numbers,OpticalSize,Ornament,Path,PunctuationSpace,%
+     RawFeature,Scale,ScaleAgain,Script,Size,SizeFeatures,%
+     SlantedFeatures,SlantedFont,SmallCapsFeatures,SmallCapsFont,Style,%
+     StylisticAlternates,StylisticSet,SwashFeatures,SwashFont,%
+     UprightFeatures,UprightFont,Variant,Vertical,VerticalPosition,%
+     WordSpace,Mapping,Renderer,Traditional,Simplified,JIS1978,JIS1983,%
+     JIS1990,Expert,NLC,%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+     AboveBase,Alternate,AlternateHalf,AlternateMetrics,%
+     AlternateProportional,Alternates,AlternatesForRotation,Arabic,%
+     ArabicOff,BelowBase,Common,Contextual,Cursive,Denominator,%
+     Discretionary,Expert,Full,Half,HalfMetrics,Historic,%
+     HorizontalKana,Inferior,Inner,Italic,JIS1978,JIS1983,JIS1990,%
+     KanaAlternates,Kerning,LineFinal,Lining,LiningOff,Lowercase,%
+     LowercaseOff,MarkToBase,MarkToMark,Monospaced,MonospacedOff,NLC,%
+     Numerator,Off,OldStyle,OldStyleOff,On,Ordinal,PetiteCaps,%
+     Proportional,ProportionalMetrics,ProportionalOff,Quarter,Rare,%
+     Required,Reset,ResetAll,RotatedGlyphs,Ruby,ScientificInferior,%
+     Simplified,SlashedZero,SlashedZeroOff,SmallCaps,Superior,Swash,%
+     TeX,Thurd,Titling,Traditional,Unicase,Uppercase,UppercaseOff,%
+     UppercasePetiteCaps,UppercaseSmallCaps,VerticalKana,WordFinal,%
+     WordInitial,ResetAll,c2sc,scmp,sinf,sups,zero,ss06,ss01,%
+     ss04,-liga,frac,titl,swsh,hist,hlig%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     fontspec%
+   },%
+   % otherkeywords={},%
+   alsoletter={20614-},%
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[ProfCollege]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     Thales,Pourcentage,ResolEquation%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+     Twitter,Scratch,%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+     Auteur,Logo,Calculer,%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+     Place,Drapeau,Avancer,Repeter,Tournerg,FinBlocRepeter,%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     ProfCollege,%
+   },%
+   % otherkeywords={},
+   % alsoletter={},
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[tkz-euclide]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     tkzDefPoint,tkzInterCC,tkzGetPoints,tkzDrawCircles,tkzDrawPolygon,%
+     tkzDrawPoints,tkzMarkSegments,tkzLabelSegments,tkzLabelPoints,%
+     tkzLabelPoints,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+     tikzpicture,%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+     mark,swap,above,scale,%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     tkz-euclide },%
+   % otherkeywords={},
+   % alsoletter={},
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[tkz-fct]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     tkzInit,tkzDrawX,tkzDrawY,tkzFct,tkzDefPoint,tkzDrawPoint,%
+     tkzPointShowCoord,tkzDefPoint,tkzDrawPoint,tkzPointShowCoord,%
+     tkzRep,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+     tikzpicture,%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+     xmin,xmax,ymin,ymax,samples,domain,xlabel,ylabel,xscale,yscale%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     tkz-fct },%
+   % otherkeywords={},
+   % alsoletter={},
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[tkz-tab]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     tkzTabInit,tkzTabLine,tkzTabVar,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+     tikzpicture,%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+     lgt,espcl,t,d,z,+,-,-D+/,+/,-/,+D/,scale,%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     tkz-tab },%
+   % otherkeywords={},%
+   alsoletter={+-/},%
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[mecaso]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     KineticT,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     mecaso },%
+   % otherkeywords={},
+   % alsoletter={},
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[hanzibox]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     hanzibox*,hanziboxset,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+     frametype,pinyinline,%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+     none,true,%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     hanzibox },%
+   % otherkeywords={},%
+   % alsoletter={},%
+   % alsodigit={},%
+   alsoother={*},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[tikz-bagua]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     Bagua*,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     tikz-bagua },%
+   % otherkeywords={},%
+   % alsoletter={},%
+   % alsodigit={},%
+   alsoother={*},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[bodeplot]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     addBodeZPKPlots },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+     BodePlot,%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+     ylabel,ytick,distance,height,width,magnitude,z,p,k,%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+     true,black,thick,linear,red,dashed,thick,asymptotic,blue,%
+     dotted,thick,%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     bodeplot },%
+   % otherkeywords={},%
+   alsoletter={/},%
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[formal-grammar]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     highlight,firstcase,gralt,nonterm },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+     grammar },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     formal-grammar },%
+   % otherkeywords={},
+   % alsoletter={},
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[numerica-plus]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     nmcRecur,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+     do,see1,f_,%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     numerica-plus },%
+   % otherkeywords={},%
+   alsoletter={_1},%
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[pascaltriangle]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     pascal,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     pascaltriangle },%
+   % otherkeywords={},
+   % alsoletter={},
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[pgf-interference]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     pgfinterferencepattern,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters
+   % (since of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+     slits,wavelength,slit-distance,intensity,ruler,scale,%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     pgf-interference%
+   },%
+   % otherkeywords={},%
+   alsoletter={-},%
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[clistmap]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     ExplSyntaxOn,ExplSyntaxOff,clistmap,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+     first_math,serial_rest_math_and,%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+     nnn,N,%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     clistmap },%
+   % otherkeywords={},%
+   alsoletter={_},%
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[hexboard]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     hexmove,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+     hexgamelabels,%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     hexboard },%
+   % otherkeywords={},
+   % alsoletter={},
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[robotarm]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     robotArm,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+     tikzpicture },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+     config,q1,q2,q3,%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     robotarm },%
+   % otherkeywords={},%
+   alsoletter={123},%
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[amsfonts]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     mathbb,mathfrak,angle,Box,dasharrow,dashleftarrow,dashrightarrow,%
+     Diamond,hbar,Join,leadsto,lhd,llcorner,lozenge,lrcorner,mho,%
+     rhd,rightleftharpoons,rightsquigarrow,sqsubset,sqsupset,square,%
+     trianglelefteq,trianglerighteq,ulcorner,unlhd,unrhd,urcorner,%
+     vartriangleleft,vartriangleright,widehat{arg},widetilde{arg},yen,%
+     checkmark,circledR,maltese,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     amsfonts },%
+   % otherkeywords={},
+   % alsoletter={},
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[biolinum]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     biolinum,biolinumOsF,biolinumLF,biolinumkey,sufigures,textsu,%
+     textsuperior,oldstylenums,liningnums,oldstylenumsf,liningnumsf,%
+     tabularnums,proportionalnums,tabularnumsf,proportionalnumsf,%
+     DeclareTextGlyphY,biolinumGlyph,biolinumKeyGlyph,LKey,LKeyPad,%
+     LKeyF,LKeyAltF,LKeyStrgAltF,LKeyCtrlAltF,LKeyStrgX,LKeyCtrlX,%
+     LKeyShiftX,LKeyAltX,LKeyAltGrX,LKeyShiftStrgX,LKeyShiftCtrlX,%
+     LKeyShiftAltX,LKeyShiftAltGrX,LKeyStrgAltX,LKeyCtrlAltX,%
+     LKeyStrgAltEnt,LKeyCtrlAltEnt,LKeyReset,LKeyTux,LKeyWin,LKeyMenu,%
+     LKeyStrg,LKeyCtrl,LKeyAlt,LKeyAltGr,LKeyShift,LKeyTab,LKeyEnter,%
+     LKeyCapsLock,LKeyPos,LKeyEntf,LKeyEinf,LKeyLeer,LKeyEsc,LKeyEnde,%
+     LKeyCommand,LKeyOptionKey,LKeyBack,LKeyUp,LKeyDown,LKeyLeft,%
+     LKeyRight,LKeyPgUp,LKeyPgDown,LKeyAt,LKeyFn,LKeyHome,LKeyDel,%
+     LKeySpace,LKeyScreenUp,LKeyScreenDown,LKeyIns,LKeyEnd,LKeyGNU,%
+     LKeyPageUp,LKeyPageDown,LMouseEmpty,LMouseN,LMouseL,LMouseM,%
+     LMouseR,LMouseLR,LMouseIIEmpty,LMouseIIN,LMouseIIL,LMouseIIR,%
+     LMouseIILR,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+     sfdefault,type1,nofontspec,lining,nf,lf,oldstyle,osf,sflining,%
+     sflf,sfoldstyle,sfosf,osfss,tabular,t,p,sftabular,sft,%
+     sfproportional,sfp,scaled,scale,defaultfeatures,space,uni0020,%
+     exclam,uni0021,quotedbl,uni0022,numbersign,uni0023,dollar,%
+     uni0024,percent,uni0025,ampersand,uni0026,quotesingle,uni0027,%
+     parenleft,uni0028,parenright,uni0029,asterisk,uni002A,plus,%
+     uni002B,comma,uni002C,hyphen,uni002D,period,uni002E,slash,%
+     uni002F,zero,uni0030,one,uni0031,two,uni0032,three,uni0033,%
+     four,uni0034,five,uni0035,six,uni0036,seven,uni0037,eight,%
+     uni0038,nine,uni0039,colon,uni003A,semicolon,uni003B,less,%
+     uni003C,equal,uni003D,greater,uni003E,question,uni003F,at,%
+     bracketleft,uni005B,backslash,uni005C,bracketright,uni005D,%
+     asciicircum,uni005E,underscore,uni005F,grave,uni0060,uni007A,%
+     braceleft,uni007B,bar,uni007C,braceright,uni007D,asciitilde,%
+     uni007E,exclamdown,uni00A1,cent,uni00A2,sterling,uni00A3,%
+     currency,uni00A4,yen,uni00A5,brokenbar,uni00A6,section,uni00A7,%
+     dieresis,uni00A8,guillemotleft,uni00AB,uni00AD,degree,uni00B0,%
+     plusminus,uni00B1,acute,uni00B4,uni00B5,periodcentered,uni00B7,%
+     cedilla,uni00B8,guillemotright,uni00BB,Agrave,uni00C0,Aacute,%
+     uni00C1,Acircumflex,uni00C2,Atilde,uni00C3,Adieresis,uni00C4,%
+     Aring,uni00C5,Ccedilla,uni00C7,Egrave,uni00C8,Eacute,uni00C9,%
+     Ecircumflex,uni00CA,Edieresis,uni00CB,Igrave,uni00CC,Iacute,%
+     uni00CD,Icircumflex,uni00CE,Idieresis,uni00CF,Eth,uni00D0,Ntilde,%
+     uni00D1,Ograve,uni00D2,Oacute,uni00D3,Ocircumflex,uni00D4,Otilde,%
+     uni00D5,Odieresis,uni00D6,multiply,uni00D7,Oslash,uni00D8,Ugrave,%
+     uni00D9,Uacute,uni00DA,Ucircumflex,uni00DB,Udieresis,uni00DC,%
+     Yacute,uni00DD,Thorn,uni00DE,germandbls,uni00DF,agrave,uni00E0,%
+     aacute,uni00E1,acircumflex,uni00E2,atilde,uni00E3,adieresis,%
+     uni00E4,aring,uni00E5,ae,uni00E6,ccedilla,uni00E7,egrave,%
+     uni00E8,eacute,uni00E9,ecircumflex,uni00EA,edieresis,uni00EB,%
+     igrave,uni00EC,iacute,uni00ED,icircumflex,uni00EE,idieresis,%
+     uni00EF,eth,uni00F0,ntilde,uni00F1,ograve,uni00F2,oacute,%
+     uni00F3,ocircumflex,uni00F4,otilde,uni00F5,odieresis,uni00F6,%
+     divide,uni00F7,oslash,uni00F8,ugrave,uni00F9,uacute,uni00FA,%
+     ucircumflex,uni00FB,udieresis,uni00FC,yacute,uni00FD,thorn,%
+     uni00FE,ydieresis,uni00FF,Amacron,uni0100,amacron,uni0101,Abreve,%
+     uni0102,abreve,uni0103,Aogonek,uni0104,aogonek,uni0105,Cacute,%
+     uni0106,cacute,uni0107,Ccircumflex,uni0108,ccircumflex,uni0109,%
+     Cdotaccent,uni010A,cdotaccent,uni010B,Ccaron,uni010C,ccaron,%
+     uni010D,Dcaron,uni010E,dcaron,uni010F,Dcroat,uni0110,dcroat,%
+     uni0111,Emacron,uni0112,emacron,uni0113,Ebreve,uni0114,ebreve,%
+     uni0115,Edotaccent,uni0116,edotaccent,uni0117,Eogonek,uni0118,%
+     eogonek,uni0119,Ecaron,uni011A,ecaron,uni011B,Gcircumflex,%
+     uni011C,gcircumflex,uni011D,Gbreve,uni011E,gbreve,uni011F,%
+     Gdotaccent,uni0120,gdotaccent,uni0121,Gcommaaccent,uni0122,%
+     gcommaaccent,uni0123,Hcircumflex,uni0124,hcircumflex,uni0125,Hbar,%
+     uni0126,hbar,uni0127,Itilde,uni0128,itilde,uni0129,Imacron,%
+     uni012A,imacron,uni012B,Ibreve,uni012C,ibreve,uni012D,Iogonek,%
+     uni012E,iogonek,uni012F,Idotaccent,uni0130,dotlessi,uni0131,IJ,%
+     uni0132,ij,uni0133,Jcircumflex,uni0134,jcircumflex,uni0135,%
+     Kcommaaccent,uni0136,kcommaaccent,uni0137,kgreenlandic,uni0138,%
+     Lacute,uni0139,lacute,uni013A,Lcommaaccent,uni013B,lcommaaccent,%
+     uni013C,Lcaron,uni013D,lcaron,uni013E,Ldot,uni013F,ldot,uni0140,%
+     Lslash,uni0141,lslash,uni0142,Nacute,uni0143,nacute,uni0144,%
+     Ncommaaccent,uni0145,ncommaaccent,uni0146,Ncaron,uni0147,ncaron,%
+     uni0148,napostrophe,uni0149,Omacron,uni014C,omacron,uni014D,%
+     Obreve,uni014E,obreve,uni014F,Ohungarumlaut,uni0150,ohungarumlaut,%
+     uni0151,Racute,uni0154,racute,uni0155,Rcommaaccent,uni0156,%
+     rcommaaccent,uni0157,Rcaron,uni0158,rcaron,uni0159,Sacute,%
+     uni015A,sacute,uni015B,Scircumflex,uni015C,scircumflex,uni015D,%
+     Scedilla,uni015E,scedilla,uni015F,Scaron,uni0160,scaron,uni0161,%
+     Tcedilla,uni0162,tcedilla,uni0163,Tcaron,uni0164,tcaron,uni0165,%
+     Tbar,uni0166,tbar,uni0167,Utilde,uni0168,utilde,uni0169,Umacron,%
+     uni016A,umacron,uni016B,Ubreve,uni016C,ubreve,uni016D,Uring,%
+     uni016E,uring,uni016F,Uhungarumlaut,uni0170,uhungarumlaut,uni0171,%
+     Uogonek,uni0172,uogonek,uni0173,Wcircumflex,uni0174,wcircumflex,%
+     uni0175,Ycircumflex,uni0176,ycircumflex,uni0177,Ydieresis,uni0178,%
+     Zacute,uni0179,zacute,uni017A,Zdotaccent,uni017B,zdotaccent,%
+     uni017C,Zcaron,uni017D,zcaron,uni017E,h.superior,uni02B0,%
+     hhook.superior,uni02B1,j.superior,uni02B2,r.superior,uni02B3,%
+     rturned.superior,uni02B4,rhookturned.superior,uni02B5,%
+     Rsmallinverted.superior,uni02B6,w.superior,uni02B7,y.superior,%
+     uni02B8,uni02B9,uni02BA,uni02BB,afii57929,uni02BC,afii64937,%
+     uni02BD,uni02BE,uni02BF,uni02C0,uni02C1,uni02C2,uni02C3,uni02C4,%
+     uni02C5,circumflex,uni02C6,caron,uni02C7,uni02C8,uni02C9,uni02CA,%
+     uni02CB,uni02CC,uni02CD,uni02CE,uni02CF,uni02D0,uni02D1,uni02D2,%
+     uni02D3,uni02D4,uni02D5,uni02D6,uni02D7,breve,uni02D8,dotaccent,%
+     uni02D9,ring,uni02DA,ogonek,uni02DB,tilde,uni02DC,hungarumlaut,%
+     uni02DD,uni02DE,uni02DF,gammalatin.superior,uni02E0,l.superior,%
+     uni02E1,s.superior,uni02E2,x.superior,uni02E3,%
+     glottalstopreversed.superior,uni02E4,uni02EC,uni02ED,uni02EE,%
+     gravecomb,uni0300,acutecomb,uni0301,uni0302,tildecomb,uni0303,%
+     uni0304,uni0305,uni0306,uni0307,uni0308,hookabovecomb,uni0309,%
+     uni030A,uni030B,uni030C,uni030D,uni030E,uni030F,uni0310,uni0311,%
+     uni0312,uni0313,uni0314,uni0315,uni0316,uni0317,uni0318,uni0319,%
+     uni031A,uni031B,uni031C,uni031D,uni031E,uni031F,uni0320,uni0321,%
+     uni0322,dotbelowcomb,uni0323,uni0324,uni0325,uni0326,uni0327,%
+     uni0328,uni0329,uni032A,uni032B,uni032C,uni032D,uni032E,uni032F,%
+     uni0330,uni0331,uni0338,uni0342,uni0343,uni0351,uni0357,uni0358,%
+     uni0359,uni035A,uni035B,uni035C,uni035D,uni035E,uni035F,uni0360,%
+     uni0361,uni0362,uni0363,uni0374,uni0375,afii57799,uni05B0,%
+     afii57801,uni05B1,afii57800,uni05B2,afii57802,uni05B3,afii57793,%
+     uni05B4,afii57794,uni05B5,afii57795,uni05B6,afii57798,uni05B7,%
+     afii57797,uni05B8,afii57806,uni05B9,uni05BA,afii57796,uni05BB,%
+     afii57807,uni05BC,afii57839,uni05BD,afii57645,uni05BE,afii57841,%
+     uni05BF,afii57842,uni05C0,afii57804,uni05C1,afii57803,uni05C2,%
+     afii57658,uni05C3,uni05C6,afii57664,uni05D0,afii57665,uni05D1,%
+     afii57666,uni05D2,afii57667,uni05D3,afii57668,uni05D4,afii57669,%
+     uni05D5,afii57670,uni05D6,afii57671,uni05D7,afii57672,uni05D8,%
+     afii57673,uni05D9,afii57674,uni05DA,afii57675,uni05DB,afii57676,%
+     uni05DC,afii57677,uni05DD,afii57678,uni05DE,afii57679,uni05DF,%
+     afii57680,uni05E0,afii57681,uni05E1,afii57682,uni05E2,afii57683,%
+     uni05E3,afii57684,uni05E4,afii57685,uni05E5,afii57686,uni05E6,%
+     afii57687,uni05E7,afii57688,uni05E8,afii57689,uni05E9,afii57690,%
+     uni05EA,afii57716,uni05F0,afii57717,uni05F1,afii57718,uni05F2,%
+     arrowleft,uni2190,arrowup,uni2191,arrowright,uni2192,arrowdown,%
+     uni2193,arrowboth,uni2194,arrowupdn,uni2195,uni2196,uni2197,%
+     uni2198,uni2199,uni219A,uni219B,uni21A5,uni21A7,uni21BC,uni21BD,%
+     uni21C0,uni21C1,arrowdblleft,uni21D0,arrowdblup,uni21D1,%
+     arrowdblright,uni21D2,arrowdbldown,uni21D3,arrowdblboth,uni21D4,%
+     uni21D5,Nwarrow,uni21D6,Nearrow,uni21D7,Searrow,uni21D8,Swarrow,%
+     uni21D9,uni2318,uni2325,uni2326,uni2327,uni232B,uni237D,uni2380,%
+     uni2423,filledbox,uni25A0,H22073,uni25A1,triagup,uni25B2,uni25B3,%
+     uni25B6,uni25B7,triagdn,uni25BC,uni25BD,uni25C0,uni25C1,uni25C6,%
+     uni25C7,uni25C9,lozenge,uni25CA,circle,uni25CB,uni25CE,H18533,%
+     uni25CF,uni25D0,uni25D1,uni25D2,uni25D3,uni25D4,uni25D5,uni25D6,%
+     uni25D7,openbullet,uni25E6,uni2605,uni2619,uni261B,uni261E,%
+     uni2627,uni262F,uni2639,uni263A,uni263B,uni263C,uni263D,uni263E,%
+     uni263F,female,uni2640,uni2641,male,uni2642,uni2643,uni2644,%
+     uni2645,uni2646,uni2647,uni2648,uni2649,uni264A,uni264B,uni264C,%
+     uni264D,uni264E,uni264F,uni2650,uni2651,uni2652,uni2653,uni2660,%
+     uni2663,uni2665,uni2666,uni2669,musicalnote,uni266A,%
+     musicalnotedbl,uni266B,uni266C,uni2695,uni2698,uni26A2,uni26A3,%
+     uni26A4,uni26A5,uni26AD,uni2767,uni2776,uni2777,uni2778,uni2779,%
+     uni277A,uni277B,uni277C,uni277D,uni277E,uni277F,T_u_x,uniE000,%
+     uniE104,uniE128,uniE129,uniE12A,uniE130,uniE131,uniE132,uniE133,%
+     uniE134,uniE135,uniE138,uniE139,uniE13A,uniE13C,uniE13D,uniE168,%
+     B_a_c_k,uniE16E,S_t_r_g,uniE170,A_l_t,uniE171,A_l_t_G_r,uniE172,%
+     C_t_r_l,uniE173,S_h_i_f_t,uniE174,T_a_b,uniE175,E_n_t_e_r,%
+     uniE176,C_a_p_s_l_o_c_k,uniE177,F_1,uniE178,F_2,uniE179,F_3,%
+     uniE17A,F_4,uniE17B,F_5,uniE17C,F_6,uniE17D,F_7,uniE17E,F_8,%
+     uniE17F,F_9,uniE180,F_1_0,uniE181,F_1_1,uniE182,F_1_2,uniE183,%
+     F_1_3,uniE184,F_1_4,uniE185,F_1_5,uniE186,F_1_6,uniE187,uniE188,%
+     H_o_m_e,uniE189,D_e_l,uniE18A,I_n_s,uniE18B,uniE18C,E_n_d,%
+     uniE18E,G_N_U,uniE190,P_o_s_1,uniE191,E_n_t_f,uniE192,E_i_n_f,%
+     uniE193,L_e_e_r,uniE194,E_s_c,uniE195,E_n_d_e,uniE196,uniE198,%
+     uniE199,uniE19A,uniE19B,uniE1A0,uniE1A1,uniE1A2,uniE1A3,uniE1A4,%
+     uniE1A5,uniE1A6,uniE1A7,uniE1A8,uniE1A9,uniE1AA,uniE1AB,uniE1AC,%
+     uniE1AD,uniE1AE,uniE1B0,uniE1B1,grave.cap,uniE358,acute.cap,%
+     uniE359,circumflex.cap,uniE35A,caron.cap,uniE35B,breve.cap,%
+     uniE35C,hungarumlaut.cap,uniE35D,space_uni030F.cap,uniE35E,%
+     breveinvertedcmb.cap,uniE35F,breve.cyrcap,uniE360,breve.cyr,%
+     uniE361,dieresis.cap,uniE362,hookabovecomb.cap,uniE363,uniFFFD,%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     biolinum },%
+   % otherkeywords={},
+   % alsoletter={},
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[biblatex]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     cite,Cite,parencite,Parencite,footcite,footcitetext,smartcite,%
+     Smartcite,textcite,Textcite,supercite,cites,Cites,parencites,%
+     Parencites,footcitesfootcitetexts,textcites,Textcites,supercites,%
+     autocite,Autocite,autocite*,Autocite*,autocites,Autocites,%
+     citeauthor,Citeauthor,citetitle,citetitle*,citeyear,citeurl,%
+     parentext,brackettext,nocite,fullcite,footfullcite,volcite,%
+     Volcite,pvolcite,Pvolcite,fvolcite,ftvolcite,tvolcite,Tvolcite,%
+     avolcite,Avolcite,notecite,Notecite,pnotecite,Pnotecite,fnotecite,%
+     citename,citelist,citefield,printbibliography,bibliography,%
+     citedate,ExecuteBibliographyOptions,defbibnote,psq,psqq,%
+     addbibresource,AtNextCite,DeclareNameAlias,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+     abstract,addendum,afterword,annotation,annotator,author,%
+     authortype,bookauthor,bookpagination,booksubtitle,booktitle,%
+     booktitleaddon,chapter,commentator,date,doi,edition,editor,%
+     editora,editorb,editorc,editortype,editoratype,editorbtype,%
+     editorctype,eid,eprint,eprintclass,eprinttype,eventdate,%
+     eventtitle,file,foreword,holder,howpublished,indextitle,%
+     institution,introduction,isan,isbn,ismn,isrn,issn,issue,%
+     issuesubtitle,issuetitle,iswc,journalsubtitle,journaltitle,label,%
+     language,library,location,mainsubtitle,maintitle,maintitleaddon,%
+     month,nameaddon,note,number,organization,origdate,origlanguage,%
+     origlocation,origpublisher,origtitle,pages,pagetotal,pagination,%
+     part,publisher,pubstate,reprinttitle,series,shortauthor,%
+     shorteditor,shorthand,shorthandintro,shortjournal,shortseries,%
+     shorttitle,subtitle,title,titleaddon,translator,type,url,urldate,%
+     venue,version,volume,volumes,year,crossref,entryset,entrysubtype,%
+     execute,gender,hyphenation,indexsorttitle,keywords,options,%
+     presort,sortkey,sortname,sorttitle,sortyear,xref,annote,%
+     archiveprefix,journal,key,pdf,primaryclass,school,address,%
+     datamodel,%
+     %
+     backend,style,citestyle,bibstyle,sorting,maxnames,minnames,%
+     maxitems,minitems,backref,abbreviate,firstinits,prenote,postnote,%
+     useprefix,autopunct,giveninits,labelname,given-family,%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+     submitted,inpress,danish dutch,american,USenglish,english,british,%
+     UKenglish,canadian,australian,newzealand,finnish,french,francais,%
+     canadien,german,ngerman,austrian,naustrian,greek,italian,norsk,%
+     nynorsk,brazil,portuges,spanish,swedish,%
+     %
+     biber,numeric,numeric-comp,numeric-verb,alphabetic,alphabetic-verb,%
+     authoryear,authoryear-comp,authoryear-ibid,authoryear-icomp,%
+     authortitle,authortitle-comp,authortitle-ibid,authortitle-icomp,%
+     authortitle-terse,authortitle-tcomp,authortitle-ticomp,verbose,%
+     verbose-ibid,verbose-note,verbose-inote,verbose-trad1,verbose-trad2,%
+     verbose-trad3,reading,draft,debug,and,inline,footnote,%
+     superscript,plain,nyt,ynt,none,false,true,%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     biblatex },%
+   % directives
+   directives={%
+     article,book,inbook,bookinbook,suppbook,booklet,collection,%
+     conference,incollection,suppcollection,manual,misc,online,patent,%
+     periodical,suppperiodical,proceedings,inproceedings,reference,%
+     inreference,report,thesis,unpublished,masterthesis,phdthesis,%
+     string,comment,%
+   },%
+   % otherkeywords={},%
+   alsoletter={-},%
+   % alsodigit={},%
+   delim=*[directive]@,sensitive=false,%
+ }[keywords,directives,tex,comments]%
+
+ \lst at definelanguage[lthooks]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     AddToHook,BeforeBeginEnvironment,AtBeginEnvironment,AtEndEnvironment,%
+     AfterEndEnvironment,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+     % begin,end,
+     before,after,begindocument,begindocument/before,%
+     begindocument/end,enddocument,enddocument/afterlastpage,%
+     enddocument/afteraux,enddocument/info,enddocument/end,env,%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     lthooks },%
+   % otherkeywords={},%
+   alsoletter={/},%
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[l3keys2e]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     ProcessKeysOptions,ProcessKeysPackageOptions,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     l3keys2e },%
+   % otherkeywords={},%
+   alsoletter={23},%
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[varioref]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     vref,vpageref,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     varioref },%
+   % otherkeywords={},
+   % alsoletter={},
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[hologo]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     hologo },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+   },%
+   % Keywords of class 4 : values of keys (in key=va ,lue)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     hologo%
+   },%
+   % otherkeywords={},
+   % alsoletter={},
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[acro]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     Ac,Aca,Acap,Acf,Acfp,Acl,Aclp,Acp,AcroAcronymsMap,AcroAddRow,%
+     AcroMapBreak,AcroNeedPackage,AcroPropertiesMap,AcroPropertiesSet,%
+     AcroRerun,AcroStyle,AcroTemplateName,AcroTemplateType,AcronymID,%
+     AcronymTable,Acs,Acsp,BeginAccSupp,Dacs,DeclareAcroArticle,%
+     DeclareAcroEnding,DeclareAcroPreset,DeclareAcroProperty,%
+     DeclareAcroPropertyAlias,DeclareAcroTranslation,DeclareAcronym,Iac,%
+     Iaca,Iacf,Iacl,Iacs,MakeAcroPropertyAlias,NewAcroCommand,%
+     NewAcroPreset,NewAcroTemplate,RenewAcroCommand,RenewAcroPreset,%
+     RenewAcroTemplate,SetupAcroTemplate,SetupNextAcroTemplate,%
+     UseAcroTemplate,abbrdot,ac,aca,acap,acbarrier,acdot,acf,acfg,%
+     acflike,acfootnote,acfp,acg,aciftrailing,acl,aclg,aclp,acp,%
+     acreset,acresetall,acrocite,acrodefinite,acrodonotuse,acrodotfill,%
+     acroendfootnote,acroformat,acrofull,acrogroupcite,acroheading,%
+     acroifT,acroifTF,acroifallTF,acroifanyT,acroifanyTF,%
+     acroifbooleanTF,acroifchapterF add,acroifchapterTF,acroiffirstT,%
+     acroiffirstTF addchap,acroifpagesTF,acroifsingleTF,acroifstarredTF,%
+     acroiftagTF,acroifusedTF,acroindefinite,acrolistname,acroneedpages,%
+     acronopagerange,acronymsmap,acronymsmapF,acronymsmapTF,acropagefill,%
+     acropages,acroplural,acropossessive,acropreamble,acroshow,%
+     acrotranslate,acroupper,acrowrite,acs,acsetup,acsp,acspace,%
+     acswitchoff,acswitchon,acuse,dacs,declareAcronym,iac,iaca,iacf,%
+     iacl,iacs,iacsg,printacronyms,%
+     %
+     acro_locale,acro_if_foreign,acro_if_locale,__acro_foreign_language,%
+     acro_property_get,acro_property_if_set,acro_property_get,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+     activate,addsec,addsec*,all,alt,alt,alt-acc,alt-format,%
+     alt-indefinite,alt-plural,alt-plural-form,barriers,before-citation,%
+     caption,%
+     case-insensitive,%case-sensitive,%chapter,chapter*,cite,clear,cmd,%
+     deactivate,define,description,disable,display,exclude,extra,%
+     extra-acc,extra-foreign,extra-format,extra-long,fill,first,%
+     first-long,first-long-format,first-style,first-style ,floats,%
+     footnote,foreign,foreign,foreign-acc,foreign-babel,foreign-format ,%
+     foreign-locale,foreign-plural,foreign-plural-form,format,format,%
+     group,heading,id,include,index,index,index-cmd,index-sort,%
+     language,link-only-first,list,list,list-acc,list-format,%
+     list/display,lists,load-style,local,locale,lof,long,long,%
+     long-acc,long-format,long-indefinite,long-plural,long-plural-ending,%
+     long-plural-form,long-post,long-short,longtable,longtabu,lppl,%
+     ltxtable,make-links,maketitle,method,name,no-index,none,options,%
+     pages,pdf,pdf,pdfcomment,pdfcomment/cmd,pdfcomment/use,pdfstring,%
+     post,pre,preamble,preset,replace,reset,section,section*,short,%
+     short,short,short-acc,short-format,short-indefinite,short-long,%
+     short-plural,short-plural-ending,short-plural-form ,show,single,%
+     single,single,single-acc threshold,single-format
+     title,single-style,%
+     single-style,sort,sort,subsequent-style,subsequent-style,%
+     supertabular,tabular,tabularx,tag,upgrade,use,use-id-as-short,%
+     uselist,version,%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     acro%
+   },%
+   % otherkeywords={},%
+   alsoletter={-_},%
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[csquotes]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     enquote,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+     displayquote,%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     csquotes%
+   },%
+   % otherkeywords={},
+   % alsoletter={},
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ % tcolorbox
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \lst at definelanguage[tcolorbox]{TeX}%
+ {%
+   % Control sequences names
+   moretexcs={%
+     tcbuselibrary,newtcbtheorem,tcbset%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+     %
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+     absquote,boxarraystore,dispExample,dispExample*,dispListing,%
+     dispListing*,docCommand,docCommand*,docCommands,docEnvironment,%
+     docEnvironment*,docEnvironments,docKey,docKey*,docKeys,%
+     docPathOperation,docPathOperation*,docPathOperations,extcolorbox,%
+     extikzpicture,fooauxenv,foocolorbox,foocolorbox*,posterboxenv,%
+     tcbclipframe,tcbclipinterior,tcbcliptitle,tcbexternal,%
+     tcbinvclipframe,tcbitemize,tcblisting,tcboutputlisting,%
+     tcboxeditemize,tcboxedraster,tcbposter,tcbraster,tcbverbatimwrite,%
+     tcbwritetemp,tcolorbox,%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+     Crefname,IfBooleanF,IfBooleanT,IfBooleanTF,IfNoValueF,IfNoValueT,%
+     IfNoValueTF,IfValueF,IfValueT,IfValueTF,PassOptionsToClass,%
+     PassOptionsToPackage,above*,above,actual,adapt,add,adjust,%
+     adjusted,after,alert,alerted,algorithm,align*,align,all,ams,%
+     and,angular,annotate,app,arara,arc,array,as,at,attach,auto,%
+     autoparskip,balanced,base,basedim,baseline,beamer,bean,before,%
+     beforeafter,% begin,
+     below,between,biber,bibtex,bicolor,blank,%
+     blanker,blankest,blend,body,bold,bookmark*,bookmark,borderline,%
+     both,bottom*,bottom,bottomrule,bottomsep,bottomtitle,bounding,%
+     box,boxed,boxes,boxrule,boxsep,break*,break,breakable,broken,%
+     by,caption,capture,center,check,circular,clear,clip,code,%
+     colback,colbacklower,colbacktitle,colframe,collower,colon,color,%
+     colorize,colors,colspacing,coltext,coltitle,column*,column,%
+     columns,colupper,command,comment,compilable,compiler,compress,%
+     content,corner,corners,counter*,counter,counters,coverage,%
+     crefname,current,curved,dash,default,definition,delimiters,%
+     description,detach,directory,do,doc,docexample,documentation,%
+     downwards,draft,draftmode,draw,drop,dvips,east,empty,% end,
+     %
+     enforce,engine,english,enhanced,enlarge,enlargement,enlargepage,%
+     entry,environment,environments,equal,equation*,equation,error,%
+     even,every,example!,example,extend,extension,external,%
+     externalize,extras,extrude,fade,fading,file,fill,filled,finally,%
+     finish,first,fit,fitting,fixed,flexible,flip,float*,float,%
+     floatplacement,flush,flushleft,flushright,font,fontlower,fontsize,%
+     fonttitle,fontupper,for,force,format,formatter,frame,freelance,%
+     freelancefirst,freelancelast,freelancemiddle,freestyle,freeze,from,%
+     full,fuzzy,gap,gather*,gather,geometry,german,goal,graphical,%
+     graphics,group,grow,halign,halo,hanging,hbox,head,height,%
+     hidden,hide,higher,highlight,hooks,horizontal,hyperlink,hyperref,%
+     hypertarget,hyperurl*,hyperurl,hyphenationfix,if,ignore,image,in,%
+     indent,index*,index,inherit,initially,input,inputencoding,inside,%
+     interior,into,invisible,inwards,is,jigsaw,jpg,key,keypath,keys,%
+     keywords,label,language,large,last,latex,layer,layers,left*,%
+     left,lefthand,leftlower,leftright,leftrule,lefttitle,leftupper,%
+     length,lengths,level,lifted,limit,line*,line,lines,list,%
+     listing!,listing,listings,listingsutf,lower*,lower,lowerbox,%
+     lowered,lualatex,m,macros,magazine,makeindex,many,marginnote,%
+     marker,math,maxfontdiff,maxfontdiffgap,maxstep,maxwidthdiff,%
+     maxwidthdiffgap,method,midday,middle,minimum,minipage,minted,%
+     most,move,multicolumn,multirow,n,name,nameref,natural,new,%
+     nirvana,no,nobeforeafter,nobreak,node,nodes,nodisplayskip,%
+     nofloat,none,noparskip,nophantom,north,northeast,northwest,not,%
+     notitle,number,octogon,odd,of,offset,on,oneside*,oneside,only,%
+     opacity,opacityback,opacitybacklower,opacitybacktitle,opacityfill,%
+     opacityframe,opacitylower,opacitytext,opacitytitle,opacityupper,%
+     option,options,or,orientation,out,outer,outside,outwards,over,%
+     overlay,overlays,oversize,overzoom,pad,page*,page,pages,%
+     pageshort,parameter,parbox,parenthesis,parfillskip,parskip,path,%
+     paths,pdf,pdflatex,percent,phantom,phantomlabel,placeholder,%
+     plain,plus,png,poster,pre,preamble,preclass,prefix,process,%
+     pspdf,quote,raise,raised,raster,ratio,record,recording,remake,%
+     remember,remove,reset,restore,right*,right,righthand,rightlower,%
+     rightrule,righttitle,rightupper,rotate,rounded,row,rows,%
+     rowspacing,rowspan,run,runner,runs,safety,savedelimiter,%
+     savelowerto,saveto,scale,scope,segmentation,semi,separated,%
+     separator,sequence,settings,shade,shading,shadow,sharp,sharpish,%
+     shield,show,showframe,shrink,side,sidebyside,sidewards,sign,%
+     size,skin,skins,skip,small,smart,sort,source,south,southeast,%
+     southwest,space,spacing,span,spartan,split,spread,square,%
+     squeezed,stack,standard,step,store,stretch,style,subskin,%
+     subtitle,supplement,switch,system,tabulars*,tabulars,tabularx*,%
+     tabularx,tcbimage,tcbox,preamble tcbset,tempfile,terminator,text,%
+     theorem,theorems,tight,tikz,tikznode,tile,title*,title,titlebox,%
+     titled,titlerule,to,toggle,top*,top,toprule,topsep,toptitle,%
+     type,unbreakable,unbroken,underlay,updated,upper*,upper,upperbox,%
+     upwards*,upwards,use,utf,valign,value,values,varwidth,verbatim,%
+     vertical,vfill,vignette,visible,void,warning,watermark,west,%
+     widget,width,with,within,xelatex,xmax,xmin,xparse,xshift,ymax,%
+     ymin,yshift*,yshift,yshifttext,zoom,%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+     all,and,apart,areasize*,areasize,as-is,auto,base,baselineskip,%
+     beamer,beamerfirst,beamerlast,beamermiddle,bicolor,bicolorfirst,%
+     bicolorlast,bicolormiddle,both,bottom,break,broken,center,change,%
+     clipped,colon,copy,dash,direct,doc,downhill,draft,east,empty,%
+     emptyfirst,emptylast,emptymiddle,enhanced,enhancedfirst,%
+     enhancedlast,enhancedmiddle,evenpage,false,fbox,figures,final,%
+     first,fitbox,flush,fontsize*,fontsize,forced,freelance,%
+     freelancefirst,freelancelast,freelancemiddle,hang,hbox,hybrid*,%
+     hybrid,ignored,invisible,jigsaw,justify,landscape*,landscape,%
+     last,left,limited,listings,margin,maximum,middle,minimal,%
+     minimum,minipage,minted,none,normal,north,northeast,northwest,%
+     off,on,path,pathfirst,pathfirstjigsaw,pathjigsaw,pathlast,%
+     pathlastjigsaw,pathmiddle,pathmiddlejigsaw,pgf,pgfchapter,%
+     pgfsection,plain,portrait*,portrait,right,rows,scale*,scale,%
+     seam,small,south,southeast,southwest,spartan,squeeze,standard,%
+     tables,tight,tile,tilefirst,tilelast,tilemiddle,title,top,true,%
+     unbroken,unlimited,uphill,visible,west,widget,widgetfirst,%
+     widgetlast,widgetmiddle,red,black,white,none,%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     tcolorbox%
+   },%
+   % otherkeywords={},%
+   alsoletter={ \ },%
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ % Classes (La)TeX
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \lst at definelanguage[classes]{TeX}{%
+   % Control sequences
+   moretexcs={%
+   },%
+   % Keywords of class 1 : keywords that contain other characters
+   % (since of the same class as the ones specified as
+   % 'otherkeywords')
+   morekeywords={%
+     %
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments)
+   % & optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after “:”
+   % in expl3 syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly
+   % derived packages)
+   morekeywords=[6]{%
+     a0poster,aalok,aastex631,abntex2,achemso,acmart,acmconf,
+     active-conf,adfathesis,afparticle,afthesis,aguplus,aiaa-tc,
+     akklecture,akkscript,akktecdoc,akletter,myletter,ametsoc,
+     amsart,amsbook,amsdtx,amsldoc,amsproc,aomart,apa,apa6,
+     apa6e,apa7,arabart,arabbook,arabrep,arabrep1,articleingud,
+     asaetr,ascelike,asmeconf,asmejour,assignment,aucklandthesis,
+     bangorcsthesis,bangorexam,barticle,bbook,bletter,
+     bankstatement,article,book,letter,ltnews,ltxdoc,ltxguide,
+     minimal,proc,report,slides,source2edoc,basque-book,beamer,
+     beamerswitch,beaulivre,beilstein,argetabelle,bewerbung,
+     bgteubner,BHCexam,bitart,bitbook,bjfuthesis,BMSTU-IU8,
+     bookcover,bookest,bookshelf,br-lex,brandeis-dissertation,
+     brandeis-problemset,brandeis-thesis,buctcover,buctthesis,
+     bxjsarticle,bxjsbook,bxjsreport,bxjsslide,cascadilla,cd,
+     cd-cover,articoletteracdp,letteracdp,cesenaexam,cheatsheet,
+     chemmacros-manual,chletter,cje,cnbwp,cnltx-doc,codedoc,
+     colorart,colorbook,combine,cc,ConcProg,confproc,contracard,
+     courseoutline,coursepaper,cquthesis,csbulletin,csbulobalka,
+     csbulv1,ctexart,ctexbeamer,ctexbook,ctexrep,ctxdoc,curve,
+     cv4tw,cweb,idcc,ijdc-v14,ijdc-v9,dinbrief,disser,gost732,
+     dithesis,droit-fr,dtk,dvdcoll,easybook,ebsthesis,agecon,
+     ajae,apecon,ecca,erae,itaxpf,jrurstud,njf,oegatb,pocoec,
+     regstud,worlddev,ecv,einfart,ejpecp,elbioimp,elegantbook,
+     elegantnote,elegantpaper,elpres,cas-dc,cas-sc,elsarticle,
+     elteikthesis,emisa,emulateapj,erdc,eskd,eskdgraph,eskdtab,
+     eskdtext,estcpmm,europasscv,europecv,exam,exam-n,examdesign,
+     exesheet,extarticle,extbook,extletter,extproc,extreport,
+     facsimile,factura,fancyhandout,fancyslides,fbithesis,fcavtex,
+     fdudoc,fduthesis-en,fduthesis,fei,ffslides,fithesis,
+     fithesis2,fithesis3,fithesis4,flacards,flashcards,frletter,
+     g-brief,g-brief2,gaceta,gammas,gatech-thesis,gmdocc,
+     gradstudentresume,grant-afosr,grant-aro,grant-darpa,grant-doe,
+     grant-nih,grant-nrl,grant-nsf,grant-onr,grant,graphpaper,
+     gridslides,gsemthesis,guitartabs,gzt,gztarticle,h2020proposal,
+     hgbarticle,hgbreport,hgbthesis,harnon-cv,hausarbeit-jura,
+     hcart,hcletter,hcreport,hcslides,hecthese,hepthesis,hitec,
+     hithesis,hitreport,hitszthesis,hletter,hpsdiss,fsbispit,
+     huawei,hustthesis,icsv,IEEEconf,IEEEtran,ijmart,ijsra,
+     image-gallery,IMTEKda,inkpaper,invoice-class,iodhbwm,iscram,
+     isov2,isodoc,iwhdp,jacow,jlreq,jmlr,jmlrbook,jnuexam,jpsj2,
+     jura,jurabook,juraovw,juraurtl,kdgcoursetext,kdgmasterthesis,
+     kdpcover,kerntest,kluwer,knittingpattern,scrartcl,scrarticle,
+     scrbook,scrdoc,scrletter,scrlttr2,scrreport,scrreprt,komacv,
+     oblivoir-utf,oblivoir-xl,oblivoir,xoblivoir,ksp-thesis,l3doc,
+     labbook,leadsheet,leaflet,lebhart,lectures,letgut,lettre,limap,
+     limecv,lion-msc,lni,lps,lt3graph-packagedoc,ltxdockit,
+     ltxguidex,abstbook,beletter,flashcard,iagproc,cours,fiche,
+     matapli,matc3mem,mcmthesis,ltxmdf,medstarbeamer,meetingmins,
+     memoir,mensa-tex,mentis,metanorma,milog,minimart,minimbook,
+     mla,mluexercise,mnras,moderncv,modernposter,msu-thesis,
+     mucproc,mugsthesis,muling,musuos,muthesis,third-rep,mwart,
+     mwbk,mwrep,mycv,nature,ncc,nccproc,sibjnm,nddiss2e,
+     ndsu-thesis,newlfm,nih,nihbiosketch,njurepo,nlctdoc,nostarch,
+     nrc1,nrc2,artikel1,artikel2,artikel3,boek,boek3,brief,
+     rapport1,rapport3,nwejm,nwejmart,octavo,onrannual,
+     oup-authoring-template,journal,paper,papertex,pbsheet,pecha,
+     petiteannonce,philosophersimprint,pittetd,pkuthss,plari,play,
+     postcards,powerdot,FUpowerdot,ppr-prv,pracjourn,pressrelease,
+     proposal,reporting,dfgproposal,dfgreporting,euproposal,
+     eureporting,prosper,protocol,prtec,upmgr,wkmgr,pst-doc,
+     ptptex,qcm,quantumarticle,qyxf-book,ReadableCV,recipe,
+     RecipeBook,recipecard,refart,refrep,resphilosophica,revtex4-2,
+     revtex4,revtex4-1,rtklage,ryersonSGSThesis,ryethesis,sageep,
+     sapthesis,schuleab,schulein,schuleit,schulekl,schuleub,
+     schuleue,schullsg,schullzk,schulma-ab,schulma-gutachten,
+     schulma-klausur,schulma-komp,schulma-mdlprf,schulma-praes,
+     schwalbe,sciposter,screenplay,scrjrnl,sdapsclassic,sduthesis,
+     seminar,semproc,sesamanuel,seuthesix,sffms,cassete,etiketka,
+     shtthesis,caesar_book,sides,simplecv,simplivre,skbarticle,
+     skbbeamer,skbbook,skblncsbeamer,skblncsppt,skbmoderncv,skdoc,
+     skeyval-testclass,skrapport,smfart,smfbook,SPhdThesis,spie,
+     sr-vorl,sslides,stage,standalone,usthesis,hwexam,mikoslides,
+     omdoc,smglom,subfiles,suftesi,sugconf,tabriz-thesis,talk,
+     tcldoc,tclldoc,powersem,thesis-ekf,thesis-gwu,thuthesis,
+     tikz-kalender,tikzposter,tlc-article,TOPletter,toptesi,
+     tudabeamer,tudaexercise,tudaleaflet,tudaletter,tudaposter,
+     tudapub,tudasciposter,tudscrartcl,tudscrbook,tudscrdoc,
+     tudscrmanual,tudscrposter,tudscrreprt,tufte-book,tufte-handout,
+     ltugboat,ltugproc,tui,turabian,turabian-researchpaper,
+     turabian-thesis,my-thesis,ua-thesis,uafthesis,
+     uantwerpenbamathesis,uantwerpencoursetext,uantwerpenexam,
+     uantwerpenletter,uantwerpenphdthesis,uantwerpenreport,
+     ucalgmthesis,ucbthesis,ucdavisthesis,ucsmonograph,ucthesis,
+     udesoftec,uebungsblatt,uestcthesis,uhhassignment,uiucredborder,
+     uiucthesis,ulthese,legislation,umich-thesis,umthesis,
+     unam-thesis,unifith,unitn-bimrep,univie-ling-expose,
+     univie-ling-paper,univie-ling-thesis,univie-ling-wlg,
+     unizgklasa,uothesis,UoWthesis,upmethodology-document,URbeamer,
+     URletter,uspatent,ut-thesis,utexasthesis,uwmslide,uwthesis,
+     verifica,webquiz,willowtreebook,withargs-packagedoc,
+     wsemclassic,xduthesis,xebaposter,xmuthesis,xsim-manual,
+     yaletter,yathesis,ycbook,ydoc,york-thesis,
+   },%
+   % otherkeywords={},%
+   alsoletter={0123456789-},%
+   % alsodigit={},%
+   sensitive%
+ }[keywords,tex,comments]%
+\end{lstlisting}
 \end{document}
\ No newline at end of file

Modified: trunk/Master/texmf-dist/doc/lualatex/letgut/letgut.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/lualatex/letgut/letgut.tex
===================================================================
--- trunk/Master/texmf-dist/doc/lualatex/letgut/letgut.tex	2022-06-18 18:21:10 UTC (rev 63636)
+++ trunk/Master/texmf-dist/doc/lualatex/letgut/letgut.tex	2022-06-18 20:02:54 UTC (rev 63637)
@@ -15,27 +15,6 @@
   % ,final
 }
 
-\lstset{
-  language=TeX,%
-  alsolanguage=[geometry]TeX,%
-  alsolanguage=[LaTeX]TeX,%
-  alsolanguage=[plain]TeX,%
-  alsolanguage=[common]TeX,%
-  alsolanguage=[primitive]TeX,%
-  alsolanguage=[xcolor]TeX,%
-  alsolanguage=[listings]TeX,%
-  alsolanguage=[biblatex]TeX,%
-  alsolanguage=[hyperref]TeX,%
-  alsolanguage=[extLaTeX]TeX,%
-  alsolanguage=[letgut]TeX,%
-  alsolanguage=[hologo]TeX,%
-  alsolanguage=[acro]TeX,%
-  alsolanguage=[tcolorbox]TeX,%
-  alsolanguage=[csquotes]TeX,%
-  alsolanguage=[varioref]TeX,%
-  alsolanguage=[babel-french]TeX,%
-}
-
 % Bibliographie
 \addbibresource{letgut.bib}
 
@@ -88,7 +67,7 @@
 }
 \author{Association GUTenberg}
 \date{%
-  Version 0.9.1 en date du \today%
+  Version 0.9.2 en date du \today%
   \texorpdfstring{%
     \\
     \url{https://framagit.org/gutenberg/classe-lettre-gut}%
@@ -101,6 +80,23 @@
 % \makeindex[title=Index des concepts,extout=pdx,extin=pnd,columnseprule]
 \begin{document}
 
+\syntaxhl{%
+  LaTeX,%
+  acro,%
+  babel-french,%
+  biblatex,%
+  biolinum,%
+  % classes,%
+  csquotes,%
+  % graphicx,%
+  hologo,%
+  hyperref,%
+  letgut,%
+  listings,%
+  tcolorbox,%
+  varioref,%
+}
+
 \title{Introduction}
 \label{sec:introduction}
 L'association \gutenberg{} publie la \lettregut{}, son bulletin irrégulomestriel,
@@ -144,21 +140,34 @@
 \section{Options}
 \label{sec:options}
 
-La \letgutcls{} fournit deux types d'\meta{options} :
+\subsection{Spécification}
+\label{sec:specification}
 
-\begin{description}
-\item[\foreignloc{load-time} :] à spécifier \emph{exclusivement} au chargement
-  de la classe, selon la syntaxe usuelle
-  ×\documentclass[×\meta{options}×]{letgut}×
-\item[\emph{non} \foreignloc{load-time} :] à spécifier \emph{exclusivement} en
-  argument de la commande dédiée \refCom{letgutsetup}.
-\end{description}
+Les options de la \letgutcls{} peuvent être spécifiées de deux façons :
+\begin{enumerate}
+\item en argument de la commande dédiée \refCom{letgutsetup} ;
+\item à la compilation, au moyen de la commande (à lancer dans un terminal) :
+\begingroup
+\lstset{basicstyle=\ttfamily\small}
+\terminal{lualatex '\PassOptionsToClass{£\meta{options}£}{letgut} \input{£\meta{fichier}£}'}{}
+\endgroup
+\end{enumerate}
 
-\subsection{Options \foreignloc{load-time}}
-\label{sec:fore-time-meta}
+\begin{dbwarning}{Options de \letgut{} : pas en argument optionnel
+    de \docAuxCommand{documentclass}}{}
+  On évitera de passer les options de la \letgutcls{} en argument optionnel de
+  la commande \docAuxCommand{documentclass} et ce, de sorte à éviter les
+  conflits d'options avec les différents packages chargés.
+\end{dbwarning}
 
-Ces options, au nombre de deux, sont \enquote{contraires} l'une de l'autre.
+\begin{docCommand}{letgutsetup}{\marg{options}}
+  \index{configuration}%
+  Cette commande permet de spécifier les \meta{options} de la \letgutcls{}.
+\end{docCommand}
 
+\subsection{Liste des options}
+\label{sec:liste-des-options}
+
 \begin{docKeys}
   {
     {
@@ -189,16 +198,6 @@
   \end{itemize}
 \end{docKeys}
 
-\subsection{Options non \foreignloc{load-time}}
-\label{sec:emphn-fore-time}
-
-\begin{docCommand}{letgutsetup}{\marg{options}}
-  \index{configuration}%
-  Cette commande permet de spécifier les \meta{options} \emph{non} \foreignloc{load-time} de la \letgutcls{}.
-\end{docCommand}
-
-Ces \meta{options} sont les suivantes :
-
 \begin{docKeys}
   {
     {
@@ -269,7 +268,7 @@
       \begin{itemize}
       \item n'est pas employée (les mois et année en cours sont alors
         utilisés) ;
-      \item est employée sous la forme \refKey*{date}×=×\meta{année}×-×\meta{mois}
+      \item est employée sous la forme \refKey*{date}⅛=⅛\meta{année}⅛-⅛\meta{mois}
         où \meta{année} et \meta{mois} doivent être des nombres entiers
         positifs. Les garde-fous suivants sont mis en place :
         \begin{itemize}
@@ -280,7 +279,7 @@
         \end{itemize}
       \end{itemize}
     \item \enquote{\meta{texte}} si l'option est employée sous la forme
-      \refKey*{date}×=×\meta{texte}.
+      \refKey*{date}⅛=⅛\meta{texte}.
     \end{itemize}
   \end{docKey}
 }
@@ -311,19 +310,37 @@
 \begin{docKey}{editorial}{}{\valinitdef[\docValue*{true}][\docValue*{true}]}
   Cette clé booléenne importe automatiquement en tout début de la \lettre{}
   (néanmoins après le titre et le sommaire) le \file*{editorial.tex} contenant
-  l'éditorial. Si aucun \file*{editorial.tex} n'est trouvé dans le répertoire
-  courant, un avertissement est émis lors de la compilation et une boîte
-  d'alerte est affichée en 1\iere{} page.
+  l'éditorial. Si aucun \file*{editorial.tex} n'est trouvé, un avertissement est
+  émis lors de la compilation et une boîte d'alerte est affichée en 1\iere{}
+  page.
 \end{docKey}
 
 \begin{docKey}{informations}{}{\valinitdef[\docValue*{true}][\docValue*{true}]}
   Cette clé booléenne importe automatiquement en dernière page de la \lettre{}
   le \file*{informations-gut.tex} contenant toutes les informations sur
-  \gut{}. Si aucun \file*{informations-gut.tex} n'est trouvé dans le
-  répertoire courant, un avertissement est émis lors de la compilation et une
-  boîte d'alerte est affichée en dernière page.
+  \gut{}. Si aucun \file*{informations-gut.tex} n'est trouvé, un avertissement
+  est émis lors de la compilation et une boîte d'alerte est affichée en dernière
+  page.
 \end{docKey}
 
+\begin{docKey}{detailedtoc}{}{\valinitdef[\docValue*{false}][\docValue*{true}]}
+  Par défaut, la table des matières automatiquement insérée en début de document
+  a pour niveau de profondeur celui des titres (saisis via la \refCom{title}),
+  et seulement les titres des articles. La clé booléenne \refKey{detailedtoc}
+  a pour effet que cette table des matières est détaillée au maximum (son niveau
+  de profondeur allant jusqu'aux sous-paragraphes), ce qui peut être utile lors
+  de la conception d'un numéro de la \lettre{}.
+\end{docKey}
+
+\begin{dbremark}{Tables des matières locales}{}
+  Chaque article peut contenir une table des matières locale, affichée au moyen
+  de la commande \docAuxCommand{localtableofcontents} (fournie par le
+  \package*{etoc} chargé en sous-main par la \letgutcls{}). Le niveau de
+  profondeur est par défaut celui des sections mais cela peut être modifié en la
+  faisant précéder de la commande \docAuxCommand{etocsetnexttocdepth} (dont
+  l'argument est par exemple ⅛subsection⅛).
+\end{dbremark}
+
 \section{Titre et titres courants}
 \label{sec:titre}
 Si la commande \docAuxCommand{title}\marg{titre} est
@@ -344,7 +361,7 @@
 \begin{dbwarning}{\docAuxCommand{title} et \docAuxCommand{author}
     $\neq$ avant et après \lstinline+\\begin\{document\}+}{}
   Les commandes \docAuxCommand{title} et \docAuxCommand{author} ne se comportent
-  pas de la même façon avant et après \lstinline+\begin{document}+ (cf. sections
+  pas de la même façon avant et après ⅛\begin{document}⅛ (cf. sections
     \nameref{sec:structuration} \vpageref{sec:structuration} et
     \nameref{sec:sign-des-articl} \vpageref{sec:sign-des-articl}).
 \end{dbwarning}
@@ -354,6 +371,26 @@
   l'est en sous-main par la classe.
 \end{dbwarning}
 
+\section{Importation d'articles}
+\label{sec:import-dart}
+
+\begin{dbwarning}{Importation de fichiers d'articles}{}
+  Si le contenu d'un article est stocké dans un \meta{fichier enfant}\file{.tex},
+  on l'importera dans un fichier parent recourant à la \letgutcls{} :
+  \begin{itemize}
+  \item \emph{non pas} au moyen de la commande ordinaire \docAuxCommand{input} ;
+  \item \emph{mais}  au moyen de la commande \refCom{inputarticle}.
+  \end{itemize}
+\end{dbwarning}
+
+\begin{docCommand}{inputarticle}{\marg{fichier enfant}}
+  Cette commande permet d'importer le contenu d'un article stocké dans un
+  \meta{fichier enfant}\file{.tex}.
+
+  En plus de l'importation proprement dite, cette commande procède à un certain
+  nombre de réinitialisations.
+\end{docCommand}
+
 \section{Structuration}
 \label{sec:structuration}
 
@@ -401,13 +438,10 @@
   \package{csquotes}, chargés en sous-main par la \letgutcls{}.
 \end{dbremark}
 
-\bgroup
-\lstset{deletekeywords=[3]{section,nameref}}
-\begin{ltx-code-result}[title addon=références croisées aux rubriques]
+\begin{ltx-code-result}[title addon=références croisées aux rubriques,listing options app={deletekeywords={[3]{nameref,section}}}]
 On lira avec intérêt la section \enquote{\nameref{sec:acronymes}}
 \vpageref{sec:acronymes}.
 \end{ltx-code-result}
-\egroup
 
 \section[Personnes et auteurs]{Noms de personnes et d'auteurs d'articles}
 \label{sec:sign-des-articl}
@@ -448,29 +482,21 @@
   \item[pour un individu unique] selon l'un des formats suivants :
   \begin{itemize}
   \item \meta{nom}
-  \item \meta{nom}×, ×\meta{prénom}
-  \item \meta{nom}×, ×\meta{prénom}×, ×\meta{titre}
+  \item \meta{nom}⅛, ⅛\meta{prénom}
+  \item \meta{nom}⅛, ⅛\meta{prénom}⅛, ⅛\meta{titre}
   \end{itemize}
 \item[pour des individus multiples :]\leavevmode
   \begin{itemize}
   \item selon le même schéma que pour un individu unique ;
   \item les \meta{données} de chacun des individus étant séparées par le mot clé
-    \lstinline+and+.
+    ⅛and⅛.
   \end{itemize}
   \end{description}
 \end{docCommands}
 
 Indépendamment de la casse utilisée en entrée, pour chaque \meta{nom} et
-\meta{prénom} :
-\begin{itemize}
-\item chacune des initiales et des premières lettres après un espace ou un tiret
-  est affiché en grande capitale ;
-\item le reste est affiché en :
-  \begin{itemize}
-  \item petites capitales pour un \meta{nom} ;
-  \item bas de casse pour un \meta{prénom}.
-  \end{itemize}
-\end{itemize}
+\meta{prénom}, chacune des initiales et des premières lettres après un espace ou
+un tiret est affiché en grande capitale.
 
 \begin{ltx-code-result}[title addon=personnes]
 On peut dire merci à
@@ -477,17 +503,12 @@
 \person{Knuth, Donald E., dieu and Lamport, Leslie} !
 \end{ltx-code-result}
 
-\bgroup
-\lstset{deletekeywords=[3]{author},deletekeywords=[4]{TeX,},deletekeywords=[5]{e}}
-\begin{ltx-code-result}[title addon=auteur]
+\begin{ltx-code-result}[title addon=auteur,listing options app={deletekeywords={[3]{author}}}]
 \begin{displayquote} % Fourni par `csquotes' chargé par `letgut'
   Wait, wait, I never said that.
   \author{knuth, dONALD e.}
 \end{displayquote}
 \end{ltx-code-result}
-  % The \TeX{} family of programs seems to be nice and healthy
-  % as it continues to approach perfection.
-\egroup
 
 \section{Aide à la saisie et homogénéisation de la mise en forme}
 \label{sec:aide-la-saisie}
@@ -537,16 +558,13 @@
   défaut, est respectivement \enquote{package} et \enquote{classe}.
 \end{docCommands}
 
-\bgroup
-\lstset{deletekeywords=[4]{tables,}}
-\begin{ltx-code-result}[title addon=packages et classes]
+\begin{ltx-code-result}[title addon=packages et classes,listing options app={deletekeywords={[4]{tables}}}]
 La \class*{letgut} s'appuie entre autres sur le \package*{etoc}
 (qui permet de personnaliser les tables des matières).
 
 Une des classes s'appuyant sur le \package*[]{etoc} est
-\class[https://framagit.org/gutenberg/classe-lettre-gut]{letgut}.
+\class[https://framagit.org/gutenberg/letgut/]{letgut}.
 \end{ltx-code-result}
-\egroup
 
 \begin{docCommands}
   {
@@ -582,14 +600,11 @@
   \enquote{fichier}.
 \end{docCommands}
 
-\bgroup
-\lstset{deletekeywords=[3]{file,plus,l}}
-\begin{ltx-code-result}[title addon=logiciels et fichiers]
+\begin{ltx-code-result}[title addon=logiciels et fichiers,listing options app={deletekeywords={[3]{file,plus,l,tex}}}]
 Le \file*{test.tex} a été ouvert dans le
 \software*[https://www.gnu.org/software/emacs/]{Emacs}, plus
 précisément dans \software*{Emacs}[l'éditeur de texte].
 \end{ltx-code-result}
-\egroup
 
 \begin{dbwarning}{Commandes pas toutes bienvenues en \docAuxCommand{title} et
     \docAuxCommand{subtitle}}{}
@@ -606,13 +621,10 @@
   Cette commande est conçue pour afficher une \meta{locution} latine.
 \end{docCommand}
 
-\bgroup
-\lstset{deletekeywords=[3]{options}}
-\begin{ltx-code-result}[title addon=locutions étrangères]
-Ce ne sont pas toutes des \foreignloc{load-time options} :
-\latinloc{errare humanum est} !
+\begin{ltx-code-result}[title addon=locutions étrangères,listing options app={deletekeywords={[3]{options}}}]
+Attention aux \foreignloc{load-time options} !
+Mais... \latinloc{errare humanum est}.
 \end{ltx-code-result}
-\egroup
 
 \subsection{Termes et expressions}
 \label{sec:termes}
@@ -623,13 +635,19 @@
     { doc name = gut },
     { doc name = lettre },
     { doc name = lettregut },
-    { doc name = Cahier },
-    { doc name = Cahiers },
+    { doc name = cahier },
+    { doc name = cahiers },
+    { doc name = cahiergut },
+    { doc name = cahiersgut },
     { doc name = letgut },
     { doc name = letgutcls },
     { doc name = knuth },
     { doc name = lamport },
+    { doc name = tl },
     { doc name = tugboat },
+    { doc name = linux },
+    { doc name = macos },
+    { doc name = windows },
   }
   %
   Ce que ces commandes affichent est répertorié dans le \vref{tab:raccourcis}.
@@ -639,17 +657,23 @@
   \centering
   \begin{tabular}{ll}
     \toprule
-    \refCom{gutenberg} & \gutenberg \\
-    \refCom{gut}       & \gut       \\
-    \refCom{lettre}    & \lettre    \\
-    \refCom{lettregut} & \lettregut \\
-    \refCom{Cahier}    & \Cahier    \\
-    \refCom{Cahiers}   & \Cahiers   \\ \midrule
-    \refCom{letgut}    & \letgut    \\
-    \refCom{letgutcls} & \letgutcls \\ \midrule
-    \refCom{knuth}     & \knuth     \\
-    \refCom{lamport}   & \lamport   \\
-    \refCom{tugboat}   & \tugboat   \\ \bottomrule
+    \refCom{gutenberg}  & \gutenberg  \\
+    \refCom{gut}        & \gut        \\
+    \refCom{lettre}     & \lettre     \\
+    \refCom{lettregut}  & \lettregut  \\
+    \refCom{cahier}     & \cahier     \\
+    \refCom{cahiergut}  & \cahiergut  \\
+    \refCom{cahiers}    & \cahiers    \\
+    \refCom{cahiersgut} & \cahiersgut \\ \midrule
+    \refCom{letgut}     & \letgut     \\
+    \refCom{letgutcls}  & \letgutcls  \\ \midrule
+    \refCom{knuth}      & \knuth      \\
+    \refCom{lamport}    & \lamport    \\
+    \refCom{tl}    & \tl    \\
+    \refCom{tugboat}    & \tugboat    \\ \midrule
+    \refCom{linux}      & \linux      \\
+    \refCom{macos}      & \macos      \\
+    \refCom{windows}      & \windows      \\ \bottomrule
   \end{tabular}
   \caption{Effet des commandes de raccourcis}
   \label{tab:raccourcis}
@@ -672,9 +696,56 @@
   (préfixe pas en grandes capitales).
 \end{dbwarning}
 
-\section{Exemples de codes \hologo{(La)TeX}, possiblement avec résultats}
+\subsection{Touches de clavier}
+\label{sec:touches-de-clavier}
+
+Afin de disposer d'un moyen simple, riche et élégant pour composer des touches
+de clavier, la \letgutcls{} s'appuie sur le \package*{biolinum} et notamment sa
+commande ⅛\LKey⅛. Cette dernière a été légèrement étendue de façon à faciliter
+la saisie pour toutes les touches des diacritiques utilisés en français.
+
+\begin{ltx-code-result}[title addon=touches de clavier]
+% De base (échantillon) :
+\LKey{A} \LKey{Z} \LKey{0} \LKey{9}
+
+\LKeyF{1} \LKeyF{12}
+
+\LKeyCtrl \LKeyAlt \LKeyAltGr \LKeyShift \LKeyEnter \LKeyTab
+
+\LKeyCtrlX{A} \LKeyShiftX{A} \LKeyAltX{A} \LKeyAltGrX{A}
+
+\LKeyAt \LKeyScreenUp \LKeyScreenDown \LKeyCommand \LKeyOptionKey
+
+\LMouseN \LMouseL \LMouseM \LMouseR
+
+\LKey{exclam} \LKey{numbersign} \LKey{percent} \LKey{backslash}
+
+% Ajoutés par la classe `letgut`
+\LKey{à} \LKey{À} \LKey{â} \LKey{Â} \LKey{é} \LKey{É}
+\LKey{è} \LKey{È} \LKey{ê} \LKey{Ê} \LKey{ë} \LKey{Ë}
+\LKey{î} \LKey{Î} \LKey{ï} \LKey{Ï}
+\LKey{ô} \LKey{Ô}
+\LKey{ù} \LKey{Ù} \LKey{û} \LKey{Û} \LKey{ü} \LKey{Ü}
+\LKey{ÿ} \LKey{Ÿ} \LKey{ç} \LKey{Ç}
+\end{ltx-code-result}
+
+\begin{dbwarning}{Touche de clavier du symbole € manquant}{}
+  La touche de clavier du symbole € n'est pas fournie par le
+  \package*{biolinum}.
+\end{dbwarning}
+
+\section{Codes informatiques}
+\label{sec:code-informatique}
+
+Cette section est consacrée aux outils spécifiques à la \letgutcls{} permettant
+de faire figurer du code informatique dans la \lettre{}.
+
+\subsection{Codes \hologo{(La)TeX}}
 \label{sec:exemples-de-codes}
 
+\subsubsection{Exemples de codes \hologo{(La)TeX}, possiblement avec résultats}
+\label{sec:listings-}
+
 Afin de présenter aisément et de façon homogène les exemples de codes
 \hologo{(La)TeX}, possiblement avec leurs résultats, la \letgutcls{} fournit les
 environnements \enquote{verbatim} suivants.
@@ -719,7 +790,7 @@
     ces codes et résulats :
     \begin{itemize}
     \item l'un sous l'autre par défaut ;
-    \item l'un à gauche de l'autre si l'option \lstinline+sidebyside+ est
+    \item l'un à gauche de l'autre si l'option ⅛sidebyside⅛ est
       employée.
     \end{itemize}
   \end{enumerate}
@@ -727,7 +798,7 @@
 
 \begin{dbwarning}{Exemples de codes avec résultats : possiblement
     flottants}{exemples-flottants}
-  Si l'option \lstinline+sidebyside+ est passée à l'un ou l'autre des
+  Si l'option ⅛sidebyside⅛ est passée à l'un ou l'autre des
   environnements \refEnv{ltx-code-result} et \refEnv{ltx-code-external-result},
   l'exemple :
   \begin{itemize}
@@ -752,7 +823,7 @@
 \begin{itemize}
 \item (toutes) celles acceptées par l'environnement
   \docAuxEnvironment{tcblisting} et la commande \docAuxCommand{newtcblisting}
-  fournis par la bibliothèque \lstinline+listings+ du
+  fournis par la bibliothèque ⅛listings⅛ du
   \package*{tcolorbox}\footnote{Et, aussi, les commandes
     \docAuxCommand{DeclareTCBListing} et assimilées fournies par la bibliothèque
     \lstinline+xparse+ de ce package.}. Elles permettent notamment de surcharger
@@ -760,14 +831,11 @@
   \begin{itemize}
   \item de faire figurer l'éventuel résultat, non pas sous le code comme c'est
     le cas par défaut, mais en regard (à droite) au moyen de l'option
-    \lstinline+sidebyside+ ;
+    ⅛sidebyside⅛ ;
   \item de supprimer les numéros de ligne au moyen de l'option
-\bgroup
-\lstset{deletekeywords=[3]{none},morekeywords=[4]{none},morekeywords=[3]{listing}}
 \begin{ltx-code}
 listing options={numbers=none}
 \end{ltx-code}
-\egroup
   \end{itemize}
 \item trois spécifiques à ces environnements :
   \begin{docKey*}{title addon}{=\meta{supplément au titre}}{\valinitdef}
@@ -785,7 +853,7 @@
     \begin{itemize}
     \item avec l'un ou l'autre des environnements \refEnv{ltx-code-result} et
       \refEnv{ltx-code-external-result} ;
-    \item lorsque l'option \lstinline+sidebyside+ leur est passée ;
+    \item lorsque l'option ⅛sidebyside⅛ leur est passée ;
     \item lorsque l'exemple s'avère se trouver sur une page autre que
       celle de son point d'insertion.
     \end{itemize}
@@ -795,17 +863,193 @@
       s'affranchir de ce texte en recourant à \lstinline+reference text=\{\}+.}.
     \begin{dbwarning}{\refKey{reference text} avant \lstinline+sidebyside+}{}
       Pour qu'elle soit prise en compte, l'option \refKey{reference text} doit
-      être passée \emph{avant} l'option \lstinline+sidebyside+.
+      être passée \emph{avant} l'option ⅛sidebyside⅛.
     \end{dbwarning}
   \end{docKey*}
 \end{itemize}
 
-\begin{dbwarning}{Caractère d'échappement}{}
+\subsubsection{Coloration syntaxique}
+\label{sec:coloration}
+
+Par défaut, en début de document et de chaque fichier importé au moyen de
+\refCom{inputarticle}, le langage supposé dans ces exemples de codes est
+\hologo{TeX}, chargé (seulement) avec ses \enquote{dialectes} :
+\begin{itemize}
+\item ⅛primitive⅛, ⅛common⅛, ⅛plain⅛, ⅛LaTeX⅛, ⅛AlLaTeX⅛ fournis par le
+  \package*{listings} ;
+\item ⅛classes⅛ fourni par \letgutcls{} (répertoriant les classes disponibles
+  sur le \ctan{}).
+\end{itemize}
+Une conséquence notable est la suivante :
+\begin{dbwarning}{Coloration syntaxique réduite par défaut}{}
+  La coloration syntaxique dans les exemples de codes n'est par défaut active
+  que pour le langage \hologo{TeX} et ses dialectes ⅛primitive⅛, ⅛common⅛,
+  ⅛plain⅛, ⅛LaTeX⅛, ⅛AlLaTeX⅛ et ⅛classes⅛.
+\end{dbwarning}
+
+Il est néanmoins possible de spécifier d'autres langages et dialectes au moyen
+de la commande \refCom{syntaxhl} suivante, à insérer avant le début de l'exemple
+de code concerné.
+
+\begin{docCommands}[
+doc name = syntaxhl,
+doc parameter = \marg{liste de dialectes},
+]
+{
+  { },
+  { doc parameter = \oarg{langage}\marg{liste de dialectes} },
+}
+Cette comande permet de spécifier :
+\begin{itemize}
+\item un \meta{langage} (par défaut \hologo{TeX}) ;
+\item une \meta{liste de dialectes}, séparés par des virgules ;
+\end{itemize}
+auxquels on souhaite que s'applique la coloration syntaxique.
+\end{docCommands}
+
+\begin{dbwarning}{Dialectes colorés syntaxiquement seulement si définis}{}
+  Ceci suppose que ces langages et dialectes sont définis (et saisis selon la
+  syntaxe du \package*{listings}) dans le \file*{letgut-lstlang.sty} situé :
+  \begin{itemize}
+  \item soit dans le dossier de la \lettre{} en cours ;
+  \item soit dans le dossier parent de celui de la \lettre{} en cours ;
+  \item soit  dans un dossier de la \tds{}
+  \end{itemize}
+\end{dbwarning}
+
+Pour le langage \hologo{TeX}, ces dialectes sont essentiellement les classes et
+les packages \hologo{(La)TeX} et un exemple de déclaration de tel dialecte est
+fourni section~\enquote{\nameref{sec:exemple-de-decl}},
+\vpageref{sec:exemple-de-decl}.
+
+\subsection{Entrées et sorties dans un terminal}
+\label{sec:entrees-sorties}
+
+Afin de présenter aisément et de façon homogène des exemples de commandes
+entrées et éventuellement de leurs sorties correspondantes, la \letgutcls{}
+fournit la commande à arguments \enquote{verbatim} suivante.
+
+\begin{docCommand}{terminal}{\oarg{prompt}\oarg{options}\marg{stdin}\marg{stdout}}
+  %
+  Cette commande affiche les codes en entrée (\meta{stdin}) et en sortie
+  (\meta{stdout}), chacun des deux étant possiblement vide.
+
+  Le \meta{prompt}, ou \enquote{invite de commande}, est par défaut le symbole
+  \texttt{\$} affiché en rouge.
+
+  Il est possible de surcharger les réglages par défaut de cette commande au
+  moyen d'\meta{options} qui sont (toutes) celles acceptées par l'environnement
+  \docAuxEnvironment{tcblisting} et la commande \docAuxCommand{newtcblisting}
+  fournis par la bibliothèque ⅛listings⅛ du \package*{tcolorbox}\footnote{Et,
+    aussi, les commandes \docAuxCommand{DeclareTCBListing} et assimilées
+    fournies par la bibliothèque \lstinline+xparse+ de ce package.}.
+\end{docCommand}
+
+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 at swidth sp,height=\@p at sheight sp]{\@p at 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
+}
+\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 at swidth sp,height=\@p at sheight sp]{\@p at 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
+}
+\endgroup
+
+\subsection{Caractères d'échappement et de raccourci pour les
+  extraits de code}
+\label{sec:caract-dech-et}
+
+\begin{dbwarning}{Caractère d'échappement des listings}{}
   \lstset{escapechar=}%
-  La \letgutcls{} définit ×£× comme caractère d'échappement dans \LaTeX{} au
-  sein d'un code \LaTeX{}.
+  La \letgutcls{} définit ⅛£⅛ comme caractère d'échappement dans \LaTeX{} au
+  sein d'un listing.
 \end{dbwarning}
 
+Au besoin, on pourra désactiver ce caractère actif au moyen de
+\begin{ltx-code}
+\lstset{escapechar=}
+\end{ltx-code}
+
+\begin{dbwarning}{Équivalent court de \docAuxCommand{lstinline}}{}
+  Les extraits de code peuvent être saisis au moyen de la commande
+  \docAuxCommand{lstinline} du \package*{listings} mais, pour
+  simplifier la tâche, la \letgutcls{} définit comme équivalent court
+  de \docAuxCommand{lstinline} le caractère unicode %
+  \lstDeleteShortInline⅛%
+  \texttt{⅛} %
+  \lstMakeShortInline⅛%
+  (U+215B)\footnote{Peu susceptible d'être utilisé dans du texte
+    ordinaire.}.
+\end{dbwarning}
+
+Autrement dit, la \letgutcls{} contient l'instruction\footnote{À peu
+  de choses près.} :
+  \lstDeleteShortInline⅛
+\begin{ltx-code}
+\lstMakeShortInline£\texttt{⅛}£
+\end{ltx-code}
+
+  Au besoin, on pourra désactiver ce caractère actif au moyen de :
+\begin{ltx-code}
+\lstDeleteShortInline£\texttt{⅛}£
+\end{ltx-code}
+
+\begin{dbremark}{Obtention du caractère \texttt{⅛}}{}
+Le caractère %
+\texttt{⅛} %
+s'obtient :
+\begin{itemize}
+\item sous \linux{} : \LKeyShiftAltGrX{2}\footnote{Touche \LKey{2} du clavier principal.} ;
+\item sous \macos{} : à l'aide du visualiseur de caractères\footnote{Et
+    possiblement de raccourcis claviers personnels.} ;
+\item sous \windows{} : \LKeyAltX{8}+\LKey{5}+\LKey{3}+\LKey{9}.
+\end{itemize}
+\end{dbremark}
+  \lstMakeShortInline⅛%
+
 \section{Nouveautés apparues sur le \ctan}
 \label{sec:rubr-cons-aux}
 
@@ -840,18 +1084,15 @@
   automatiquement situé en regard dans la marge, les signale comme telles.
 \end{docCommands}
 
-\bgroup
-\lstset{deletekeywords=[3]{l},deletekeywords=[6]{hologo,matapli}}
-\begin{ltx-code-external-result}[title addon=nouveautés]{exemple-nouveautes}
+\begin{ltx-code-external-result}[title addon=nouveautés,listing options app={deletekeywords={[6]{hologo,matapli}}}]{exemple-nouveautes}
 \begin{ctannews}
-\item[nl-interval] vise à simplifier le processus de représentation
-  graphique des intervalles de l'axe réel.
+\item[nl-interval] vise à simplifier le processus de
+  représentation graphique des intervalles de l'axe réel.
 \item*[matapli] classe \hologo{LaTeX} destinée à la composition
   de la revue Matapli (conçue par \person{Chupin, Maxime},
   secrétaire adjoint de \gutenberg{}).
 \end{ctannews}
 \end{ltx-code-external-result}
-\egroup
 
 \begin{docCommand}{francophony}{}
   Cette commande affiche le logo de la francophonie, ainsi : \francophony.
@@ -930,10 +1171,10 @@
   être employé au moyen des commandes fournies par le \package*{acro}, par
   exemple :
   \begin{itemize}
-  \item ×\ac{×\meta{court}×}×\footnote{Acronyme automatiquement affiché sous sa
+  \item ⅛\ac{⅛\meta{court}⅛}⅛\footnote{Acronyme automatiquement affiché sous sa
       forme complète à sa 1\iere{} occurrence, sous sa forme courte à ses
       occurrences suivantes.} ;
-  \item ×\acs{×\meta{court}×}×\footnote{Acronyme affiché sous sa forme courte
+  \item ⅛\acs{⅛\meta{court}⅛}⅛\footnote{Acronyme affiché sous sa forme courte
       seulement.}.
   \end{itemize}
   Toutefois, pour simplifier l'usage de ces acronymes, la \letgutcls{} crée
@@ -942,7 +1183,7 @@
     Sauf si elle existe déjà, auquel cas la création d'une telle commande est
     silencieusement escamotée. Ainsi par exemple, l'acronyme
     %
-    \lstinline!\\letgutacro[...]\{TIKZ\}\{...\}[...]!
+    \lstinline+\\letgutacro[...]\{TIKZ\}\{...\}[...]+
     %
     fourni par \letgut{} (cf. \vpageref{liste-acronymes}) ne surcharge-t-il
     pas la commande \docAuxCommand{tikz} fournie notamment par le
@@ -951,8 +1192,8 @@
   %
   qui agit comme :
   \begin{itemize}
-  \item ×\ac{×\meta{court}×}× en version non étoilée ;
-  \item ×\acs{×\meta{court}×}× en version étoilée.
+  \item ⅛\ac{⅛\meta{court}⅛}⅛ en version non étoilée ;
+  \item ⅛\acs{⅛\meta{court}⅛}⅛ en version étoilée.
   \end{itemize}
 \end{docCommand}
 Ainsi, l'acronyme utilisé via \docAuxCommand{\meta{court}} figure, pour ses
@@ -980,9 +1221,7 @@
 
 Ainsi, avec les définitions suivantes en préambule :
 
-\bgroup
-\lstset{deletekeywords={and},deletekeywords=[3]{and,emph,n,german},deletekeywords=[4]{and,TeX}}
-\begin{ltx-code}[title addon=définition d'acronymes,drop lifted shadow]
+\begin{ltx-code}[title addon=définition d'acronymes,listing options app={deletekeywords={[3]{TeX,LaTeX,emph,n,no}}}]
 % Acronyme français
 \letgutacro{LD}{\LaTeX{} dépendant}
 
@@ -1013,13 +1252,10 @@
 {Ti\emph{k}Z ist \emph{kein} Zeichenprogramm}
 [Ti\emph{k}Z \emph{n'}est \emph{pas} un programme de dessin]
 \end{ltx-code}
-\egroup
 
 a-t-on :
 
-\bgroup
-\lstset{deletekeywords=[3]{cd,tikz,on},deletekeywords=[4]{on},deletekeywords=[6]{cd}}
-\begin{ltx-code-result}[title addon=utilisation d'acronymes]
+\begin{ltx-code-result}[title addon=utilisation d'acronymes,listing options app={deletekeywords={cd},deletekeywords={[3]{cd,tikz,LaTeX,on}},deletekeywords={[6]{cd}},deletekeywords={itemize},morekeywords={[2]{itemize}}}]
 On dispose désormais pour \enquote{\LaTeX{} dépendant}
 d'un acronyme qu'on peut utiliser par exemple
 \begin{itemize}
@@ -1035,28 +1271,21 @@
 \item \ac{tikz}, \ac{tikz}. % Noter le non emploi de `\tikz'
 \end{itemize}
 \end{ltx-code-result}
-\egroup
 
 Les noms des commandes sous-jacentes ne doivent contenir que des lettres, mais
 celles-ci peuvent être accentuées. Ainsi, avec la définition suivante en
 préambule :
 
-\bgroup
-\lstset{deletekeywords=[3]{and}}
 \begin{ltx-code}[title addon=définition d'acronyme avec lettres
   accentuées,drop lifted shadow]
 \letgutacro{CPGÉ}{Classes Préparatoires aux Grandes Écoles}
 \end{ltx-code}
-\egroup
 
 a-t-on :
 
-\bgroup
-\lstset{deletekeywords=[3]{l}}
-\begin{ltx-code-result}[title addon=utilisation d'acronyme avec lettres accentuées]
+\begin{ltx-code-result}[title addon=utilisation d'acronyme avec lettres accentuées,listing options app={deletekeywords={[3]{l}}}]
 On peut également employer l'acronyme \cpgé{}, \cpgé{}.
 \end{ltx-code-result}
-\egroup
 
 La \letgutcls{} fournit un \file*{letgut-acronyms.tex} dans lequel sont définis
 plusieurs acronymes anglais et français, directement utilisables. Ceux-ci sont
@@ -1091,8 +1320,6 @@
   \end{itemize}
 \end{docCommand}
 
-\bgroup
-\lstset{deletekeywords=[5]{en}}
 \begin{ltx-code-result}[title addon=boîtes d'alertes]
 \alertbox{%
   Adhérez, adhérez, il en restera toujours quelque chose !%
@@ -1103,7 +1330,6 @@
   Il en restera toujours quelque chose...%
 }
 \end{ltx-code-result}
-\egroup
 
 \section{Fichier local de configuration}
 \label{sec:fichier-local-de}
@@ -1188,14 +1414,8 @@
 % }%
 }) :
 
-% \begin{listingshell}
-% docker run --rm -it -v $(pwd):/workdir danteev/texlive lualatex mon-fichier
-% \end{listingshell}
+\terminal{docker run -i --rm --name latex -v "$PWD":/usr/src/app -w /usr/src/app registry.gitlab.com/islandoftex/images/texlive:latest-with-cache lualatex mon-fichier}{}%$
 
-\begin{listingshell}
-docker run -i --rm --name latex -v "$PWD":/usr/src/app -w /usr/src/app registry.gitlab.com/islandoftex/images/texlive:latest-with-cache lualatex mon-fichier
-\end{listingshell}
-
 La toute première fois, cela provoque le téléchargement de plusieurs fichiers,
 dont celui assez lourd de l'image d'une version allégée de la \tl{}~2021
 (délestée des sources et des documentations) puis lance la compilation
@@ -1220,9 +1440,7 @@
   \lstinline[language=bash]+source ~/.bashrc+ (ou assimilé) afin de pouvoir en
   bénéficier dans un terminal déjà ouvert.} :
 
-\begin{listingshell}
-docker-latexmk-lua mon-fichier
-\end{listingshell}
+\terminal{docker-latexmk-lua mon-fichier}{}
 
 \title{Packages chargés par \letgut{}}
 \label{sec:packages-charges-par}
@@ -1280,7 +1498,7 @@
 \item[babel] support multilingue.
   \begin{description}
   \item[Options :] \docAuxKey*{english}, \docAuxKey*{french} ;
-  \item[Configuration] \lstinline+\renewcommand*\frenchtablename{Tableau}+.
+  \item[Configuration] ⅛\renewcommand*\frenchtablename{Tableau}⅛.
   \end{description}
 \item[varioref] références de pages intelligentes.
   \begin{description}
@@ -1320,11 +1538,11 @@
   \item[Options :]\leavevmode{}
     \begin{itemize}
     \item \docAuxKey*{first-style=footnote} ;
-    \item \docAuxKey*{format/short=}\lstinline|\scshape| ;
-    \item \docAuxKey*{format/foreign=}\lstinline|\em| ;
+    \item \docAuxKey*{format/short=}⅛\scshape⅛ ;
+    \item \docAuxKey*{format/foreign=}⅛\em⅛ ;
     \item \docAuxKey*{foreign/display} ;
     \item \docAuxKey*{locale/display} ;
-    \item \docAuxKey*{locale/format=}\lstinline|\upshape|.
+    \item \docAuxKey*{locale/format=}⅛\upshape⅛.
     \end{itemize}
   \end{description}
 \item[hyperref] prise en charge étendue de l'hypertexte.
@@ -1384,6 +1602,100 @@
 \item[letgut-banner] bannière de la 1\iere{} page de la \lettre{}.
 \end{ctannews}
 
+\section{Exemple de déclaration de dialecte du langage \hologo{TeX}}
+\label{sec:exemple-de-decl}
+
+Nous fournissons ci-dessous un exemple de déclaration de dialecte (ici le
+package \hologo{(La)TeX} \package{graphicx}) du langage \hologo{TeX}
+(cf. section~\enquote{\nameref{sec:coloration}}, \vpageref{sec:coloration}).
+
+\begin{ltx-code}[listing options app={deletekeywords={[3]{
+  ,draft
+  ,final
+  ,setpagesize
+  ,dvips
+  ,dvipdfm
+  ,dvipdfmx
+  ,xetex
+  ,pdftex
+  ,dvipsone
+  ,dviwindo
+  ,textures
+  ,vtex
+  ,alt
+  ,width
+  ,height
+  ,totalheight
+  ,scale
+  ,clip
+  ,draft
+  ,type
+  ,command
+  ,page
+}}},
+listing options app={deletekeywords={[4]{
+  ,draft
+  ,final
+  ,dvips
+  ,dvipdfm
+  ,dvipdfmx
+  ,xetex
+  ,pdftex
+  ,luatex
+  ,vtex
+  ,scale
+  ,true
+  ,false
+}}}]
+\lst at definelanguage[graphicx]{TeX}[LaTeX]{TeX}{%
+  % Control sequences names
+  moretexcs={%
+    DeclareGraphicsExtensions,DeclareGraphicsRule,graphicspath,%
+    includegraphics*,includegraphics,reflectbox,resizebox*,%
+    resizebox,rotatebox,scalebox,%
+  },%
+  % Keywords of class 1 : keywords that contain other characters
+  % (since of the same class as the ones specified as
+  % 'otherkeywords')
+  morekeywords={%
+  },%
+  % Keywords of class 2 : environments names
+  morekeywords=[2]{%
+  },%
+  % Keywords of class 3 : mandatory arguments (not environments)
+  % & optional arguments which are keys (in key=value)
+  morekeywords=[3]{%
+    draft,final,hiresbb,demo,setpagesize,nosetpagesize,dvips,xdvi,%
+    dvipdf,dvipdfm,dvipdfmx,xetex,pdftex,luatex,dvisvgm,dvipsone,%
+    dviwindo,emtex,dviwin,oztex,textures,pctexps,pctexwin,pctexhp,%
+    pctex32,truetex,tcidvi,vtex,debugshow,hiderotate,hidescale,%
+    alt,%
+    %
+    bb,bbllx,bblly,bburx,bbury,natwidth,natheight,hiresbb,pagebox,%
+    viewport,trim,angle,origin,width,height,totalheight,%
+    keepaspectratio,scale,clip,type,ext,read,command,quiet,page,%
+    interpolate,decodearray,origin,x,y,units,%
+  },%
+  % Keywords of class 4 : values of keys (in key=value)
+  morekeywords=[4]{%
+    mediabox,cropbox,bleedbox,trimbox,artbox,true,false,%
+  },%
+  % Keywords of class 5 : arguments specifications (after ":"
+  % in expl3 syntax)
+  morekeywords=[5]{%
+  },%
+  % Keywords of class 6 : current package name (and possibly
+  % derived packages)
+  morekeywords=[6]{%
+    graphicx,%
+  },%
+  % otherkeywords={},%
+  alsoletter={23},%
+  % alsodigit={},%
+  sensitive,%
+}[keywords,tex,comments]%
+\end{ltx-code}
+
 \printacronyms[
 , heading=title
 % , template=longtable

Modified: trunk/Master/texmf-dist/doc/lualatex/letgut/listings-conf.tex
===================================================================
--- trunk/Master/texmf-dist/doc/lualatex/letgut/listings-conf.tex	2022-06-18 18:21:10 UTC (rev 63636)
+++ trunk/Master/texmf-dist/doc/lualatex/letgut/listings-conf.tex	2022-06-18 20:02:54 UTC (rev 63637)
@@ -1,40 +1,7 @@
-\lstset{
-  backgroundcolor=\color{__letgut_backgroundCode},
-  rulecolor=\color{__letgut_borderCode},
-  frame=single,
-  aboveskip=\medskipamount,
-  breaklines=false,
-}
-
-\lstset{
-  language=TeX,%
-  alsolanguage=[geometry]TeX,%
-  alsolanguage=[LaTeX]TeX,%
-  alsolanguage=[plain]TeX,%
-  alsolanguage=[common]TeX,%
-  alsolanguage=[primitive]TeX,%
-  alsolanguage=[classes]TeX,%
-  alsolanguage=[xcolor]TeX,%
-  alsolanguage=[listings]TeX,%
-  alsolanguage=[biblatex]TeX,%
-  alsolanguage=[hyperref]TeX,%
-  alsolanguage=[xparse]TeX,%
-  alsolanguage=[lthooks]TeX,%
-  alsolanguage=[extLaTeX]TeX,%
-  alsolanguage=[letgut]TeX,%
-  alsolanguage=[hologo]TeX,%
-  alsolanguage=[acro]TeX,%
-  alsolanguage=[tcolorbox]TeX,%
-  alsolanguage=[graphicx]TeX,%
-  alsolanguage=[csquotes]TeX,%
-  alsolanguage=[varioref]TeX,%
-  alsolanguage=[babel-french]TeX,%
-  alsolanguage=[l3keys2e]TeX,%
-  alsolanguage=[expl3]TeX,%
-}
-
 % We need to disable `escapechar=£' enabled by the class in order to avoid this
 % to make a mess in the listing which contains it.
 \lstset{
   escapechar=,%
 }
+% Strangely, we can't rely on \syntaxhl{expl3}. To be checked!
+\lstset{alsolanguage=[expl3]TeX}

Modified: trunk/Master/texmf-dist/doc/lualatex/letgut/localconf.tex
===================================================================
--- trunk/Master/texmf-dist/doc/lualatex/letgut/localconf.tex	2022-06-18 18:21:10 UTC (rev 63636)
+++ trunk/Master/texmf-dist/doc/lualatex/letgut/localconf.tex	2022-06-18 20:02:54 UTC (rev 63637)
@@ -22,26 +22,9 @@
   \let\/\relax%
 }
 
-\makeatletter
-\lst at InputCatcodes
-\def\lst at DefEC{%
- \lst at CCECUse \lst at 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%
-  ^^b0^^b1^^b2^^b3^^b4^^b5^^b6^^b7^^b8^^b9^^ba^^bb^^bc^^bd^^be^^bf%
-  ^^c0^^c1^^c2^^c3^^c4^^c5^^c6^^c7^^c8^^c9^^ca^^cb^^cc^^cd^^ce^^cf%
-  ^^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% nouveaux pour “ et ”
-  ^^00}
-\lst at RestoreCatcodes
-\makeatother
-
 \ExplSyntaxOn
 
-\lstMakeShortInline×
+\lstset{style=__letgut_latex_listings_style}
 
 \lstdefinelanguage{extrabash}{%
   morekeywords={%
@@ -78,35 +61,6 @@
   keywords~ bold=false
 }%
 
-\DeclareTotalTCBox{\commandshell}{ v }{ commandshell}{#1}
-\newtcblisting{listingshell}[1][]{%
-  % colback=black,
-  % colupper=white,
-  colback=white,
-  colupper=black,
-  colframe=yellow!75!black,
-  breakable,
-  listing~ only,
-  listing~ options={%
-    style=tcblatex,
-    language=bash,
-    alsolanguage=extrabash,%
-    basicstyle=\footnotesize\ttfamily,
-    escapeinside={(*@}{@*)},
-    upquote=true,
-    showstringspaces=false
-  },
-  every~ listing~ line={%
-    \textcolor{red}{%
-      \small\ttfamily\bfseries%
-      \BeginAccSupp{method=plain,ActualText={}}
-      \$~
-      \EndAccSupp{}%
-    }
-  },
-  #1
-}
-
 \renewcommand*{\tcbdocnew}[1]{
   \scriptsize\sffamily\textcolor{green!50!black}{\bfseries
 Nouv. :} #1}

Modified: trunk/Master/texmf-dist/source/lualatex/letgut/HOWTO.md
===================================================================
--- trunk/Master/texmf-dist/source/lualatex/letgut/HOWTO.md	2022-06-18 18:21:10 UTC (rev 63636)
+++ trunk/Master/texmf-dist/source/lualatex/letgut/HOWTO.md	2022-06-18 20:02:54 UTC (rev 63637)
@@ -6,18 +6,18 @@
 
 from the Org Mode source files `letgut.org` and `letgut-banner.org`:
 
-- it is necessary a reasonably recent version of Emacs,
-- it is then sufficient to run (in a directory containing the `letgut.el` file
+- it is necessary to have a reasonably recent version of Emacs,
+- it is then sufficient to run (in a directory containing the `build-letgut.el` file
   to be found in the current directory):
   - for the `letgut` class:
 
-        emacs -Q letgut.org --batch -l letgut.el -f org-babel-tangle --kill
-        emacs -Q letgut.org --batch -l letgut.el -f org-latex-export-to-pdf --kill
+        emacs -Q letgut.org --batch -l build-letgut.el -f org-babel-tangle --kill
+        emacs -Q letgut.org --batch -l build-letgut.el -f org-latex-export-to-pdf --kill
 
   - for the `letgut-banner` package:
 
-        emacs -Q letgut-banner.org --batch -l letgut.el -f org-babel-tangle --kill
-        emacs -Q letgut-banner.org --batch -l letgut.el -f org-latex-export-to-pdf --kill
+        emacs -Q letgut-banner.org --batch -l build-letgut.el -f org-babel-tangle --kill
+        emacs -Q letgut-banner.org --batch -l build-letgut.el -f org-latex-export-to-pdf --kill
 
 This creates the files `letgut.cls`, `letgut-banner.sty`, `letgut-code.tex` and
 `letgut-banner-code.tex`.

Modified: trunk/Master/texmf-dist/source/lualatex/letgut/letgut-banner.org
===================================================================
--- trunk/Master/texmf-dist/source/lualatex/letgut/letgut-banner.org	2022-06-18 18:21:10 UTC (rev 63636)
+++ trunk/Master/texmf-dist/source/lualatex/letgut/letgut-banner.org	2022-06-18 20:02:54 UTC (rev 63637)
@@ -1,6 +1,6 @@
 # Hey, Emacs!  This is a -*- mode: org -*- file!
 
-#+TITLE:     Support for the banner of the newsletter “La Lettre de GUTenberg”
+#+TITLE:     Support for the banner of the newsletter "La Lettre de GUTenberg"
 #+AUTHOR:    Association GUTenberg
 #+EMAIL:     secretariat at gutenberg.eu.org
 #+DESCRIPTION: ...
@@ -19,24 +19,24 @@
 # #+LaTeX_HEADER: \input{codehigh-conf}
 # #+LaTeX_HEADER: \letgutsetup{editorial=false,final}
 
-#+PROPERTY: header-args :padline no :tangle letgut-banner.sty :exports both :noweb yes :eval always
-#+export_file_name: letgut-banner-code
+#+PROPERTY: header-args :padline no :tangle ../../../tex/lualatex/letgut/letgut-banner.sty :exports both :noweb yes :eval always
+#+export_file_name: ../../../doc/lualatex/letgut/letgut-banner-code
 
-* Readme file :noexport:
+* Readme file
 
-#+begin_src markdown :tangle README.md :exports none
+#+begin_src markdown :tangle no :exports none
   letgut-banner - Support for the banner of the newsletter
-                  “La Lettre de GUTenberg”
+                  "La Lettre de GUTenberg"
   =============================================================
 
   About
   -------
-  This package automatically draw the banner of the newsletter “La Lettre de
-  GUTenberg” with the current main font.
+  This package automatically draw the banner of the newsletter "La Lettre de
+  GUTenberg" with the current main font.
 
   Release
   -------
-  2022-03-22 v0.9.1
+  2022-03-17 v0.9
 
   Development
   -----------
@@ -44,39 +44,43 @@
   https://framagit.org/gutenberg/classe-lettre-gut.
 #+end_src
 
-* Identification
+#+NAME: preamble
+#+begin_src
+-------:| ---------------------------------------------------
+ letgut:| Package for the banner of the newsletter
+        | "La Lettre de GUTenberg"
+ Author:| Association GUTenberg
+ E-mail:| secretariat at gutenberg.eu.org
+License:| Released under the LaTeX Project Public License
+        |  v1.3c or later
+    See:| http://www.latex-project.org/lppl.txt
 
-#+begin_src latex
-% 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 at 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 at 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.
+Copyright (C) 1994-2022 by Association GUTenberg
+                  <secretariat at 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_src
 
 * Implementation
 
+** Identification
+
+#+begin_src
+  This is file `letgut-banner.sty,
+  generated with the Emacs Org-babel utility.
+
+  The original source file is letgut-banner.org
+  %% <<preamble>>
+#+end_src
+
 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.
@@ -89,10 +93,10 @@
 
 #+begin_src latex
 \ProvidesExplPackage{letgut-banner}
-{2022-03-22}
-{0.9.1}
+{2022-03-17}
+{0.9}
 {
-  Package for the banner of the newsletter “La Lettre de GUTenberg”
+  Package for the banner of the newsletter "La Lettre de GUTenberg"
 }
 #+end_src
 
@@ -122,7 +126,7 @@
 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
+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
@@ -224,7 +228,7 @@
 - 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.
-  - Thickness of the “L”.
+  - Thickness of the "L".
       #+begin_src latex
         \dim_if_exist:NTF \c__letgut_banner_thickness_dim {
           \dim_const:NV \c__letgutbanner_banner_thickness_dim
@@ -234,7 +238,7 @@
           { 4cm }
         }
         #+end_src
-  - Height of the “L” (that of the text area plus 3cm).
+  - Height of the "L" (that of the text area plus 3cm).
       #+begin_src latex
         \dim_if_exist:NTF \c__letgut_banner_height_dim {
           \dim_const:NV \c__letgutbanner_banner_height_dim
@@ -247,13 +251,13 @@
           }
         }
       #+end_src
-  - Initial padding of the text embedded in the vertical bar of the “L”.
+  - Initial padding of the text embedded in the vertical bar of the "L".
       #+begin_src latex
       \dim_const:Nn \c__letgutbanner_banner_padding_dim  { .25cm }
       #+end_src
-  - Width of the “L” (the width ($w$) of the text zone plus the width ($l$) of
+  - 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$).
+    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
@@ -265,7 +269,7 @@
           )/2
         }
       #+end_src
-  - Initial width of the text embedded in the “L” vertical bar.
+  - Initial width of the text embedded in the "L" vertical bar.
       #+begin_src latex
         \dim_const:Nn
         \c__letgutbanner_banner_vertical_contents_width_dim {
@@ -274,10 +278,10 @@
           2\c__letgutbanner_banner_padding_dim
         }
       #+end_src
-  - Width of the text embedded in the horizontal bar of the “L” (of the text
+  - 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”).
+    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_src latex
         \dim_const:Nn
         \c__letgutbanner_banner_horizontal_contents_width_dim {
@@ -294,7 +298,7 @@
 
 *** Boxes
 
-New boxes, for each of the letters in the word “LETTRE” (!), and then for the
+New boxes, for each of the letters in the word "LETTRE" (!), and then for the
 rest of the content listed in the banner.
 #+begin_src latex
 \box_new:N \g__letgutbanner_L_box
@@ -309,13 +313,13 @@
 
 *** Floating point numbers
 
-- Minimum percentage of the common height of the letters of the word “LETTRE”
+- Minimum percentage of the common height of the letters of the word "LETTRE"
   that their line spacing must represent.
 #+begin_src latex
 \fp_const:Nn \c__letgutbanner_leading_minimum_percent_fp { 0.15 }
 #+end_src
-- Factor applied to the line spacing between “La” and the 1st letter of
-  “LETTRE” compared to that between the letters of “LETTRE”.
+- Factor applied to the line spacing between "La" and the 1st letter of
+  "LETTRE" compared to that between the letters of "LETTRE".
 #+begin_src latex
 \fp_const:Nn \c__letgutbanner_leading_La_factor_fp { 1.5 }
 #+end_src
@@ -352,7 +356,7 @@
 
 ** Computations
 
-Determination of the widths of each of the letter boxes of the word “LETTRE”.
+Determination of the widths of each of the letter boxes of the word "LETTRE".
 #+begin_src latex
   \dim_const:Nn \c__letgutbanner_L_width_dim {
     \box_wd:N \g__letgutbanner_L_box
@@ -394,14 +398,14 @@
 }
 { No~ idea! }
 #+end_src
-Resize the box containing “GUTenberg” to the width of the text embedded in the
-horizontal bar of the “L”.
+Resize the box containing "GUTenberg" to the width of the text embedded in the
+horizontal bar of the "L".
 #+begin_src latex
   \box_gresize_to_wd:Nn \g__letgutbanner_GUTenberg_box {
     \c__letgutbanner_banner_horizontal_contents_width_dim
   }
 #+end_src
-Determination of the height and depth of the box containing “GUTenberg” resized.
+Determination of the height and depth of the box containing "GUTenberg" resized.
 #+begin_src latex
   \dim_const:Nn \c__letgutbanner_GUTenberg_height_dim {
     \box_ht:N \g__letgutbanner_GUTenberg_box
@@ -411,12 +415,12 @@
   }
 #+end_src
 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”:
+"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
+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$).
+($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_src latex
   \dim_const:Nn \c__letgutbanner_GUTenberg_yoffset_dim {
     (
@@ -428,11 +432,11 @@
     )/2
   }
 #+end_src
-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”
+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 ~\g__letgutbanner_banner_vertical_contents_width_dim~, is
+"L". The latter, stored in ~\g__letgutbanner_banner_vertical_contents_width_dim~, is
 initially fixed:
 #+begin_src latex
   \dim_gset:Nn
@@ -441,7 +445,7 @@
 #+end_src
 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:
+the height common to the letters of the word "LETTRE", stored in:
 
 ~\c__letgutbanner_leading_minimum_percent_fp~
 
@@ -461,7 +465,7 @@
     \g__letgutbanner_largest_LETR_box_height_dim
   }{
 #+end_src
-Resize the largest of these boxes to the width of the text embedded in the “L”.
+Resize the largest of these boxes to the width of the text embedded in the "L".
 #+begin_src latex
   \box_gresize_to_wd:Nn \g__letgutbanner_largest_LETR_box {
     \g__letgutbanner_banner_vertical_contents_width_dim
@@ -473,7 +477,7 @@
     \box_ht:N \g__letgutbanner_largest_LETR_box
   }
 #+end_src
-Resize the boxes for each of the letters in the word “LETTRE” so that they are
+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_src latex
   \box_gresize_to_ht:Nn \g__letgutbanner_L_box {
@@ -489,7 +493,7 @@
     \g__letgutbanner_largest_LETR_box_height_dim
   }
 #+end_src
-Resize the box containing “La” to the width of the text embedded in the “L”
+Resize the box containing "La" to the width of the text embedded in the "L"
 vertical bar.
 #+begin_src latex
   \box_gresize_to_wd:Nn \g__letgutbanner_La_box {
@@ -496,7 +500,7 @@
     \g__letgutbanner_banner_vertical_contents_width_dim
   }
 #+end_src
-Determine the height ($h$) and depth ($d$) of the resized box containing “La”.
+Determine the height ($h$) and depth ($d$) of the resized box containing "La".
 #+begin_src latex
   \dim_gset:Nn \g__letgutbanner_La_height_dim {
     \box_ht:N \g__letgutbanner_La_box
@@ -505,11 +509,11 @@
     \box_dp:N \g__letgutbanner_La_box
   }
 #+end_src
-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
+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_src latex
   \dim_gset:Nn \g__letgutbanner_La_yoffset_dim {
@@ -522,10 +526,10 @@
     \g__letgutbanner_La_depth_dim
   }
 #+end_src
-For the following, the area containing the letters of the word “LETTRE” aligned
+For the following, the area containing the letters of the word "LETTRE" aligned
 vertically is fixed, defined as follows:
-  - its top is the baseline of “La”,
-  - its bottom is the baseline of “GUTenberg”.
+  - its top is the baseline of "La",
+  - its bottom is the baseline of "GUTenberg".
 Determination of the height of this area.
 #+begin_src latex
   \dim_gset:Nn \g__letgutbanner_area_height_dim {
@@ -536,12 +540,12 @@
     \c__letgutbanner_GUTenberg_yoffset_dim
   }
 #+end_src
-Determining the vertical jump ($s$) between the letters in the word “LETTRE”
+Determining the vertical jump ($s$) between the letters in the word "LETTRE"
 with the constraints that:
-  - the top of the 1st letter (“L”) is $3e/2$ below the top of the area (where
+  - 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”),
-  - the baseline of the last letter (“E”) is merged with the bottom of the area,
+    "LETTRE"),
+  - the baseline of the last letter ("E") is merged with the bottom of the area,
   - this jump must not be less than 20 % of the common height $h$ to all these
     letters i.e.:
 
@@ -548,10 +552,10 @@
     ~\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”.
+    width of the text embedded in the "L".
 
 The sum of :
-  - the 5 vertical spaces ($5e$) between the letters in the word “LETTRE”,
+  - the 5 vertical spaces ($5e$) between the letters in the word "LETTRE",
   - the 6 common heights ($6h$) to all these letters,
   - $3e/2$,
 must equal the height ($H$) of the zone. So we have $H=3e/2+5e+6h$, that is
@@ -585,7 +589,7 @@
        }
      }
    #+end_src
-The width allocated to the text embedded in the vertical bar of the “L” may have
+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_src latex
@@ -597,7 +601,7 @@
      )/2
    }
    #+end_src
-4. Determination of the vertical offset of the 1st letter (“L”).
+4. Determination of the vertical offset of the 1st letter ("L").
    #+begin_src latex
      \dim_const:Nn \c__letgutbanner_first_letter_yoffset_dim {
        \g__letgutbanner_La_yoffset_dim
@@ -616,7 +620,7 @@
        \g__letgutbanner_largest_LETR_box_height_dim
      }
    #+end_src
-Resize the box containing “g” to the width of the text.
+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
@@ -625,9 +629,9 @@
 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:
-  - the top of the horizontal bar of “L” is at a distance equal to the sum of :
+  - the top of the horizontal bar of "L" is at a distance equal to the sum of :
     - 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”
+      "L", equal to the height ($p$) of the paper minus the height ($l$) of "L"
 #+begin_src latex
   \dim_gset:Nn \g__letgutbanner_first_page_shrink_dim {
     \c__letgutbanner_tmargin_dim
@@ -652,7 +656,7 @@
 #+begin_src latex
   \BeginAccSupp{ActualText={}}
 #+end_src
-We put now the big “L” at the right place.
+We put now the big "L" at the right place.
 #+begin_src latex
   \put(
   .5\c__letgutbanner_lmargin_dim-.5\c__letgutbanner_banner_thickness_dim
@@ -770,7 +774,7 @@
 #+end_src
 
 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”.
+textheight of the first page of the height of the horizontal bar of the "L".
 
 #+begin_src latex
 \@ifclassloaded{letgut}{
@@ -786,7 +790,7 @@
 
 * Example file (=letgut-banner-example.tex=)
 
-#+begin_src latex :tangle letgut-banner-example.tex :exports both
+#+begin_src latex :tangle ../../../doc/lualatex/letgut/letgut-banner-example.tex :exports none
   \documentclass[twoside]{article}
   \usepackage{fontspec}
   \usepackage[a4paper]{geometry}

Modified: trunk/Master/texmf-dist/source/lualatex/letgut/letgut.org
===================================================================
--- trunk/Master/texmf-dist/source/lualatex/letgut/letgut.org	2022-06-18 18:21:10 UTC (rev 63636)
+++ trunk/Master/texmf-dist/source/lualatex/letgut/letgut.org	2022-06-18 20:02:54 UTC (rev 63637)
@@ -17,17 +17,18 @@
 #+LaTeX_HEADER: \letgutsetup{editorial=false}
 #+LaTeX_HEADER: \input{listings-conf}
 # #+LaTeX_HEADER: \input{codehigh-conf}
+#+LaTeX_HEADER: \letgutsetup{detailedtoc}
 # #+LaTeX_HEADER: \letgutsetup{editorial=false,final}
 
-#+PROPERTY: header-args :padline no :tangle letgut.cls :exports both :noweb yes :eval always
-#+export_file_name: letgut-code
+#+PROPERTY: header-args :padline no :mkdirp yes :tangle ../../../tex/lualatex/letgut/letgut.cls :exports both :noweb yes :eval always
+#+export_file_name: ../../../doc/lualatex/letgut/letgut-code
 
 * Ctanomat file                                                    :noexport:
 
-We crete here a ~ctanomat~ description file in order to simplify the upload of
+We create here a ~ctanomat~ description file in order to simplify the upload of
 new versions of the class on CTAN.
 
-#+begin_src markdown :tangle letgut.pkg
+#+begin_src markdown :tangle ../../../letgut.pkg
   % This is a description file for ctan-o-mat.
   % It manages uploads of a package to
   % CTAN -- the Comprehensive TeX Archive Network.
@@ -50,7 +51,7 @@
   % This field contains the version of the package.
   % The value is optional.
   % The value is restricted to 32 characters.
-  \version{0.9.1 2022-03-22}
+  \version{0.9.2 2022-06-18}
   % -------------------------------------------------------------------------
   % This field contains the name of the author(s).
   % The value is optional.
@@ -89,7 +90,7 @@
   % The value is a URL.
   % The value is restricted to 255 characters.
   % Multiple values are allowed.
-  \bugtracker{https://framagit.org/gutenberg/classe-lettre-gut/-/issues}
+  \bugtracker{https://framagit.org/gutenberg/letgut/-/issues}
   % -------------------------------------------------------------------------
   % This field contains the support channel.
   % The value is optional.
@@ -103,7 +104,7 @@
   % The value is a URL.
   % The value is restricted to 255 characters.
   % Multiple values are allowed.
-  \repository{https://framagit.org/gutenberg/classe-lettre-gut/}
+  \repository{https://framagit.org/gutenberg/letgut/}
   % -------------------------------------------------------------------------
   % This field contains the developer's channel.
   % The value is optional.
@@ -110,7 +111,7 @@
   % The value is a URL.
   % The value is restricted to 255 characters.
   % Multiple values are allowed.
-  \development{https://framagit.org/gutenberg/classe-lettre-gut/-/merge_requests}
+  \development{https://framagit.org/gutenberg/letgut/-/merge_requests}
   % -------------------------------------------------------------------------
   % This field contains the update indicator; true for update.
   % The value is optional.
@@ -127,6 +128,33 @@
   % The value is optional.
   % The value is restricted to 8192 characters.
   \begin{announcement}
+  ## [0.9.2] - 2022-06-18
+
+  ### Added
+  - Listings for commands in terminals.
+  - Aliases of frequently used commands.
+  - New commands for frequently used terms or expressions.
+  - Command for specifying LaTeX packages that benefit from syntax highlighting.
+  - Own ~listings~' language driver file for LaTeX packages syntax highlighting.
+  - Commands for keyboard keys of accentuated characters.
+  - ~detailedtoc~ option for Lettre's structure checking.
+  - Mimic the multiple option of the footmisc package.
+  - Command ~\inputarticle~ (instead of ~\input~) for the input of articles.
+  - ⅛ as a short equivalent of ~\lstinline~.
+  - Some tweaks and improvements.
+
+  ### Changed
+  - Last names of persons and authors not in small caps anymore.
+  - \tl isn't an acronym anymore and now typesets “TeX Live”.
+  - All the acronyms reset at the beginning of each ~\inputarticle~-ed article.
+  - All options now possibly load-time ones.
+  - Unlikely to change input files searched:
+    1. in the parent directory if not in the current one,
+    2. in the TDS.
+  - Right ISSN in case of “paper” version of la Lettre.
+
+  ### Fixed
+  Several bugs.
   \end{announcement}
   % -------------------------------------------------------------------------
   % This field contains the one-liner for the package.
@@ -183,30 +211,58 @@
 
 * Changelog file :noexport:
 
-#+begin_src markdown :tangle CHANGELOG.md
+#+begin_src markdown :tangle ../../../doc/lualatex/letgut/CHANGELOG.md
   # Changelog
   All notable changes to this project will be documented in this file.
 
   The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
   and this project adheres to [Semantic
-  Versioning](http://semver.org/spec/v2.0.0.html).
+  Versioning](https://semver.org/spec/v2.0.0.html).
 
   ## [Unreleased]
 
+  ## [0.9.2] - 2022-06-18
+
+  ### Added
+  - Listings for commands in terminals.
+  - Aliases of frequently used commands.
+  - New commands for frequently used terms or expressions.
+  - Command for specifying LaTeX packages that benefit from syntax highlighting.
+  - Own ~listings~' language driver file for LaTeX packages syntax highlighting.
+  - Commands for keyboard keys of accentuated characters.
+  - ~detailedtoc~ option for Lettre's structure checking.
+  - Mimic the multiple option of the footmisc package.
+  - Command ~\inputarticle~ (instead of ~\input~) for the input of articles.
+  - ⅛ as a short equivalent of ~\lstinline~.
+  - Some tweaks and improvements.
+
+  ### Changed
+  - Last names of persons and authors not in small caps anymore.
+  - \tl isn't an acronym anymore and now typesets “TeX Live”.
+  - All the acronyms reset at the beginning of each ~\inputarticle~-ed article.
+  - All options now possibly load-time ones.
+  - Unlikely to change input files searched:
+    1. in the parent directory if not in the current one,
+    2. in the TDS.
+  - Right ISSN in case of “paper” version of la Lettre.
+
+  ### Fixed
+  Several bugs.
+
   ## [0.9.1] - 2022-03-22
 
   ### Changed
-  File renamed (Karl Berry request)
+  File renamed (Karl Berry request).
 
   ## [0.9] - 2022-03-18
 
   ### Added
-  First public testing release
+  First public testing release.
 #+end_src
 
 * Readme file :noexport:
 
-#+begin_src markdown :tangle README.md
+#+begin_src markdown :tangle ../../../doc/lualatex/letgut/README.md
 letgut - Support for the newsletter “La Lettre GUTenberg”
 =========================================================
 
@@ -217,12 +273,12 @@
 
 Release
 -------
-2022-03-22 v0.9.1
+2022-06-18 v0.9.2
 
 Development
 -----------
 Follow development, submit issues and suggest improvements at
-https://framagit.org/gutenberg/classe-lettre-gut.
+https://framagit.org/gutenberg/letgut.
 #+end_src
 
 * How to :noexport:
@@ -232,8 +288,8 @@
 - tangle the \file*{letgut.cls} and \file*{letgut-banner.sty},
 - build the:
   - documented codes \file*{letgut-code.pdf} and \file*{letgut-banner-code.pdf}
-    of the classe and the package,
-  - \file*{letgut.pdf} of the class
+    of the class and the package,
+  - \file*{letgut.pdf} of the class,
 
 from the \software[https://orgmode.org/]{Org Mode} source files
 \file*{letgut.org} and \file*{letgut-banner.org}.
@@ -247,18 +303,18 @@
 
 from the Org Mode source files `letgut.org` and `letgut-banner.org`:
 
-- it is necessary a reasonably recent version of Emacs,
-- it is then sufficient to run (in a directory containing the `letgut.el` file
+- it is necessary to have a reasonably recent version of Emacs,
+- it is then sufficient to run (in a directory containing the `build-letgut.el` file
   to be found in the current directory):
   - for the `letgut` class:
 
-        emacs -Q letgut.org --batch -l letgut.el -f org-babel-tangle --kill
-        emacs -Q letgut.org --batch -l letgut.el -f org-latex-export-to-pdf --kill
+        emacs -Q letgut.org --batch -l build-letgut.el -f org-babel-tangle --kill
+        emacs -Q letgut.org --batch -l build-letgut.el -f org-latex-export-to-pdf --kill
 
   - for the `letgut-banner` package:
 
-        emacs -Q letgut-banner.org --batch -l letgut.el -f org-babel-tangle --kill
-        emacs -Q letgut-banner.org --batch -l letgut.el -f org-latex-export-to-pdf --kill
+        emacs -Q letgut-banner.org --batch -l build-letgut.el -f org-babel-tangle --kill
+        emacs -Q letgut-banner.org --batch -l build-letgut.el -f org-latex-export-to-pdf --kill
 
 This creates the files `letgut.cls`, `letgut-banner.sty`, `letgut-code.tex` and
 `letgut-banner-code.tex`.
@@ -347,11 +403,10 @@
 
 #+begin_src latex
   \ProvidesExplClass{letgut}
-  {2022-03-22}
-  {0.9.1}
+  {2022-03-17}
+  {0.9}
   {
-    Class~ for~ the~ newsletter~
-    “\c__letgut_La_lettre_gutenberg_tl”
+    Class for the newsletter “The GUTenberg Letter”
   }
 #+end_src
 
@@ -438,6 +493,10 @@
    #+begin_src latex
     \bool_new:N \l__letgut_in_footnote_bool
    #+end_src
+- For testing whether we currently ask the draft or the final version.
+   #+begin_src latex
+    \bool_new:N \g__letgut_draft_bool
+   #+end_src
 
 *** Dimensions
 
@@ -642,60 +701,78 @@
 **** Constant ones
 
  #+begin_src latex
-   \tl_const:Nn \c__letgut_cahier_tl { \emph{ Cahier } }
-   \tl_const:Nn \c__letgut_cahiers_tl {
-     \c__letgut_cahier_tl \emph{ s }
-   }
-   \tl_const:Nn \c__letgut_tugboat_tl { \emph{ TUGboat } }
-   \tl_const:Nn \c__letgut_banner_file_tl { bandeau }
-   \tl_const:Nn \c__letgut_editorial_file_tl { editorial }
-   \tl_const:Nn \c__letgut_informations_gutenberg_file_tl {
-     informations-gut
-   }
-   \tl_const:Nn \c__letgut_acronyms_file_tl { letgut-acronyms }
-   \tl_const:Nn \c__letgut_local_config_file_tl { localconf }
-   \tl_const:Nn \c__letgut_contents_name_tl { Sommaire }
-   \tl_const:Nn \c__letgut_draftwatermark_text_tl {
-    \textnormal{Brouillon}
-   }
-   \tl_const:Nn \c__letgut_membership_reminder_tl {
-     {\LARGE
-       \bfseries
-       Avez-vous~ pensé~ à~ régler~ votre~ cotisation~ ?
-       % \the\year~ ?
-       \par
-       \medskip
-     }
-     Si~ vous~ avez~ oublié,~ ce~ n'est~ ni~ trop~ tard~
-     ni~ difficile~ :
-     \par
-     \url{http://gutenberg.eu.org/?Adherer-en-ligne}
-     \bool_if:NT \g__letgut_informations_bool {
-       \file_if_exist:nT
-       {./\c__letgut_informations_gutenberg_file_tl}{
-         \par
-         Voir~ aussi~ page~ \pageref{letgut_label_adhesions}.
-       }
-     }
-   }
-   \tl_const:Nn \c__letgut_missing_editorial_tl {
-     Ne~ pas~ omettre~ l'éditorial~ !\\(à~ faire~ figurer~
-     dans~ un~ \file*{\c__letgut_editorial_file_tl.tex}~
-     dans~ le~ dossier~ courant)
-   }
-   \tl_const:Nn \c__letgut_missing_infomations_tl {
-     Ne~ pas~ omettre~ les~ informations~ sur~
-     \c__letgut_gutenberg_tl{}~ !\\(dans~ un~
-     \file*{\c__letgut_informations_gutenberg_file_tl.tex}~
-     situé~ dans~ le~ dossier~ courant)
-   }
-   \tl_const:Nn \c__letgut_default_alert_box_color_tl {
-     gray9
-   }
-   \tl_const:Nn \c__letgut_default_allcolors_links_color_tl
-   {
-     teal!60!black
-   }
+                       \tl_const:Nn \c__letgut_online_issn_tl {
+                         2742-6149~ (version~ numérique)
+                       }
+                       \tl_const:Nn \c__letgut_paper_issn_tl {
+                         1257–2217~ (version~ papier)
+                       }
+                       \tl_const:Nn \c__letgut_cahier_tl { \emph{ Cahier } }
+                       \tl_const:Nn \c__letgut_cahiers_tl {
+                         \c__letgut_cahier_tl \emph{ s }
+                       }
+                       \tl_const:Nn \c__letgut_gnu_linux_tl { \software{GNU/Linux} }
+                       \tl_const:Nn \c__letgut_macOS_tl { \software{macOS} }
+                       \tl_const:Nn \c__letgut_windows_tl { \software{Windows} }
+                       \tl_const:Nn \c__letgut_package_tl { package }
+                       \tl_const:Nn \c__letgut_class_tl { classe }
+                       \tl_const:Nn \c__letgut_file_tl { fichier }
+                       \tl_const:Nn \c__letgut_software_tl { logiciel }
+                       \tl_const:Nn \c__letgut_tugboat_tl { \emph{ TUGboat } }
+                       \tl_const:Nn \c__letgut_tex_live_tl {
+                         \hologo{ TeX }\nobreakspace Live
+                       }
+                       \tl_const:Nn \c__letgut_banner_file_tl { bandeau }
+                       \tl_const:Nn \c__letgut_editorial_file_tl { editorial }
+                       \tl_const:Nn \c__letgut_informations_gutenberg_file_tl {
+                         informations-gut
+                       }
+                       \tl_const:Nn \c__letgut_acronyms_file_tl { letgut-acronyms }
+                       \tl_const:Nn \c__letgut_local_config_file_tl { localconf }
+                       \tl_const:Nn \c__letgut_lstlanguage_file_tl { letgut-lstlang.sty }
+                       \tl_const:Nn \c__letgut_contents_name_tl { Sommaire }
+                       \tl_const:Nn \c__letgut_draftwatermark_text_tl {
+                        \textnormal{Brouillon}
+                       }
+                       \tl_const:Nn \c__letgut_membership_reminder_tl {
+                         {\LARGE
+                           \bfseries
+                           Avez-vous~ pensé~ à~ régler~ votre~ cotisation~ ?
+                           % \the\year~ ?
+                           \par
+                           \medskip
+                         }
+                         Si~ vous~ avez~ oublié,~ ce~ n'est~ ni~ trop~ tard~
+                         ni~ difficile~ :
+                         \par
+                         \url{https://www.gutenberg-asso.fr/?Adherer-en-ligne}
+                         \bool_if:NT \g__letgut_informations_bool {
+                           \file_if_exist:nT
+                           {./\c__letgut_informations_gutenberg_file_tl}{
+                             \par
+                             Voir~ aussi~ page~ \pageref{letgut_label_adhesions}.
+                           }
+                         }
+                       }
+                       \tl_const:Nn \c__letgut_missing_editorial_tl {
+                         Ne~ pas~ omettre~ l'éditorial~ !\\(à~ faire~ figurer~
+                         dans~ un~ \file*{\c__letgut_editorial_file_tl.tex}~
+                         dans~ le~ dossier~ courant)
+                       }
+                       \tl_const:Nn \c__letgut_missing_infomations_tl {
+                         Ne~ pas~ omettre~ les~ informations~ sur~
+                         \c__letgut_gutenberg_tl{}~ !\\(dans~ un~
+                         \file*{\c__letgut_informations_gutenberg_file_tl.tex}~
+                         situé~ soit~ dans~ le~ dossier~ courant, soit~ dans~ le~
+                         dossier~ parent)
+                       }
+                       \tl_const:Nn \c__letgut_default_alert_box_color_tl {
+                         gray9
+                       }
+                       \tl_const:Nn \c__letgut_default_allcolors_links_color_tl
+                       {
+                         teal!60!black
+                       }
  #+end_src
 
 **** Variables ones
@@ -740,15 +817,111 @@
 - ~for-readers~ (the default), for the “normal” “Lettre”,
 - ~for-authors~, (only) the author(s) of an article of the “Lettre”.
 
+** Date handling
+
 #+begin_src latex
-  \keys_define:nn { letgut }
+  \int_new:N \g__letgut_date_month_int
+  \int_new:N \g__letgut_date_year_int
+
+  \int_gset:Nn \g__letgut_date_month_int {\the\month}
+  \int_gset:Nn \g__letgut_date_year_int  {\the\year}
+
+  \tl_new:N \g__letgut_date_month_tl
+  \tl_new:N \g__letgut_date_tl
+
+  \cs_new_protected:Npn \__letgut_date_parse:n #1
   {
-    , for-readers .bool_gset:N = \g__letgut_for_readers_bool
-    , for-readers .initial:n = { true }
-    , for-readers .default:n = { true }
-    , for-authors .bool_gset_inverse:N = \g__letgut_for_readers_bool
+    \__letgut_if_is_iso_date:nTF {#1}
+    {
+      \__letgut_date_parse:www #1 \q_stop
+    }{
+      \msg_term:nnn{letgut}{Not~month~iso~date}{#1}
+      \tl_gset:Nn \g__letgut_date_tl { #1 }
+    }
   }
-  \ProcessKeysOptions { letgut }
+
+  \prg_new_protected_conditional:Npnn
+  \__letgut_if_is_iso_date:n #1 { T, F, TF }
+  {
+    \regex_match:nnTF { ^\d{4}-(\d{1,2}) } {#1}
+    { \prg_return_true: }
+    { \prg_return_false: }
+  }
+
+  \prg_new_protected_conditional:Npnn
+  \__letgut_if_is_int:n #1 { T, F, TF }
+  {
+    \regex_match:nnTF { ^[\+\-]?[\d]+$ } {#1}
+    { \prg_return_true: }
+    { \prg_return_false: }
+  }
+
+  \cs_new_protected:Npn \__letgut_month_name:n #1
+  {
+    % \text_titlecase_first:n {
+    \int_case:nnF
+    { #1 }
+    {
+      { 1 }{ janvier }
+      { 2 }{ février }
+      { 3 }{ mars }
+      { 4 }{ avril }
+      { 5 }{ mai }
+      { 6 }{ juin }
+      { 7 }{ juillet }
+      { 8 }{ août }
+      { 9 }{ septembre }
+      { 10 }{ octobre }
+      { 11 }{ novembre }
+      { 12 }{ décembre }
+    }
+    { Month~ Error! }
+    % }
+  }
+
+  \cs_new_protected:Npn \__letgut_date_parse:www #1-#2
+  \q_stop
+  {
+    \int_compare:nTF
+    {
+      \the\year <= #1 <= \the\year+1
+    #+end_src
+
+# >> (Just not to disturb the parentheses balancing
+#    detection of my editor.)
+
+    #+begin_src latex
+    }{
+      \int_gset:Nn \g__letgut_date_year_int {#1}
+    }{
+      \int_gset:Nn \g__letgut_date_year_int {\the\year}
+    }
+    \__letgut_if_is_int:nTF {#2}
+    {
+      \int_compare:nTF
+      {
+        1 <= #2 <= 12
+    #+end_src
+
+# >> (Just not to disturb the parentheses balancing
+#    detection of my editor.)
+
+    #+begin_src latex
+      }
+      {\int_gset:Nn \g__letgut_date_month_int {#2}}
+      {\int_gset:Nn \g__letgut_date_month_int {\the\month}}
+    }{
+      \int_gset:Nn \g__letgut_date_month_int  {\the\month}
+    }
+    \tl_gset:Nn \g__letgut_date_month_tl {
+      \__letgut_month_name:n { \g__letgut_date_month_int }
+    }
+    \tl_gset:Nn \g__letgut_date_tl {
+      \tl_use:N \g__letgut_date_month_tl
+      \c_space_tl
+      \int_use:N \g__letgut_date_year_int
+    }
+  }
 #+end_src
 
 ** Class and package loading
@@ -793,6 +966,10 @@
   #+begin_src latex
 \RequirePackage{graphicx}
   #+end_src
+- Biolinum font.
+  #+begin_src latex
+\RequirePackage{biolinum}
+  #+end_src
 - Extending the array and tabular environments.
   #+begin_src latex
 \RequirePackage{array}
@@ -931,7 +1108,7 @@
    #+begin_src latex
      \sisetup{
        , locale=FR
-       , mode=text
+       , mode=match
      }
    #+end_src
 - Concerning floats, we ask:
@@ -970,211 +1147,6 @@
        #+begin_src latex
          \renewcommand*\frenchtablename{Tableau}
        #+end_src
-- We fix some defaults for the listings : we define a style for all the listings
-  which resets all the \TeX{} control sequences/keywords and then load all the
-  basic (La)TeX dialects of TeX. But we start with a dialect which is missing in
-  the \package*{listings}.
-       #+begin_src latex
-         \lstdefinelanguage[classes]{TeX}[LaTeX]{TeX}{%
-           % Control sequences
-           moretexcs={%
-             abovecaptionskip,abstractname,appendix,appendixname,
-             arraycolsep,arrayrulewidth,author,backmatter,baselinestretch,
-             belowcaptionskip,bf,bibindent,bibname,bigskipamount,
-             bottomfraction,brokenpenalty,cal,chapter,chaptermark,
-             chaptername,clubpenalty,columnsep,columnseprule,contentsname,
-             date,dblfloatpagefraction,dblfloatsep,dbltextfloatsep,
-             dbltopfraction,descriptionlabel,displaywidowpenalty,
-             doublerulesep,evensidemargin,fboxrule,fboxsep,figurename,
-             floatpagefraction,floatsep,footins,footnoterule,footnotesep,
-             footnotesize,footskip,frontmatter,headheight,headsep,huge,Huge,
-             indexname,indexspace,interlinepenalty,intextsep,it,jot,
-             labelenumi,labelenumii,labelenumiii,labelenumiv,labelitemfont,
-             labelitemi,labelitemii,labelitemiii,labelitemiv,labelsep,
-             labelwidth,large,Large,LARGE,leftmargin,leftmargini,
-             leftmarginii,leftmarginiii,leftmarginiv,leftmarginv,
-             leftmarginvi,lineskip,listfigurename,listoffigures,
-             listoftables,listtablename,mainmatter,maketitle,marginparpush,
-             marginparsep,marginparwidth,maxdepth,medskipamount,mit,
-             newblock,normallineskip,normalsize,oddsidemargin,paragraph,
-             paragraphmark,parindent,parskip,part,partname,partopsep,
-             postdisplaypenalty,predisplaypenalty,refname,rm,sc,scriptsize,
-             section,sectionmark,sf,sl,small,smallskipamount,subitem,
-             subparagraph,subparagraphmark,subsection,subsectionmark,
-             subsubitem,subsubsection,subsubsectionmark,tabbingsep,
-             tabcolsep,tablename,tableofcontents,textfloatsep,textfraction,
-             textheight,textwidth,thechapter,theenumi,theenumii,theenumiii,
-             theenumiv,theequation,theparagraph,thepart,thesection,
-             thesubparagraph,thesubsection,thesubsubsection,tiny,title,
-             today,topfraction,topmargin,topskip,tt,widowpenalty,
-           },%
-           % Keywords of class 1 : keywords that contain other characters
-           % (since of the same class as the ones specified as
-           % 'otherkeywords')
-           morekeywords={%
-             %
-           },%
-           % Keywords of class 2 : environments names
-           morekeywords=[2]{%
-             abstract,description,figure,quotation,quote,table,
-             thebibliography,theindex,titlepage,verse%
-           },%
-           % Keywords of class 3 : mandatory arguments (not environments)
-           % & optional arguments which are keys (in key=value)
-           morekeywords=[3]{%
-           },%
-           % Keywords of class 4 : values of keys (in key=value)
-           morekeywords=[4]{%
-           },%
-           % Keywords of class 5 : arguments specifications (after “:”
-           % in expl3 syntax)
-           morekeywords=[5]{%
-           },%
-           % Keywords of class 6 : current package name (and possibly
-           % derived packages)
-           morekeywords=[6]{%
-             a0poster,aalok,aastex631,abntex2,achemso,acmart,acmconf,
-             active-conf,adfathesis,afparticle,afthesis,aguplus,aiaa-tc,
-             akklecture,akkscript,akktecdoc,akletter,myletter,ametsoc,
-             amsart,amsbook,amsdtx,amsldoc,amsproc,aomart,apa,apa6,
-             apa6e,apa7,arabart,arabbook,arabrep,arabrep1,articleingud,
-             asaetr,ascelike,asmeconf,asmejour,assignment,aucklandthesis,
-             bangorcsthesis,bangorexam,barticle,bbook,bletter,
-             bankstatement,article,book,letter,ltnews,ltxdoc,ltxguide,
-             minimal,proc,report,slides,source2edoc,basque-book,beamer,
-             beamerswitch,beaulivre,beilstein,argetabelle,bewerbung,
-             bgteubner,BHCexam,bitart,bitbook,bjfuthesis,BMSTU-IU8,
-             bookcover,bookest,bookshelf,br-lex,brandeis-dissertation,
-             brandeis-problemset,brandeis-thesis,buctcover,buctthesis,
-             bxjsarticle,bxjsbook,bxjsreport,bxjsslide,cascadilla,cd,
-             cd-cover,articoletteracdp,letteracdp,cesenaexam,cheatsheet,
-             chemmacros-manual,chletter,cje,cnbwp,cnltx-doc,codedoc,
-             colorart,colorbook,combine,cc,ConcProg,confproc,contracard,
-             courseoutline,coursepaper,cquthesis,csbulletin,csbulobalka,
-             csbulv1,ctexart,ctexbeamer,ctexbook,ctexrep,ctxdoc,curve,
-             cv4tw,cweb,idcc,ijdc-v14,ijdc-v9,dinbrief,disser,gost732,
-             dithesis,droit-fr,dtk,dvdcoll,easybook,ebsthesis,agecon,
-             ajae,apecon,ecca,erae,itaxpf,jrurstud,njf,oegatb,pocoec,
-             regstud,worlddev,ecv,einfart,ejpecp,elbioimp,elegantbook,
-             elegantnote,elegantpaper,elpres,cas-dc,cas-sc,elsarticle,
-             elteikthesis,emisa,emulateapj,erdc,eskd,eskdgraph,eskdtab,
-             eskdtext,estcpmm,europasscv,europecv,exam,exam-n,examdesign,
-             exesheet,extarticle,extbook,extletter,extproc,extreport,
-             facsimile,factura,fancyhandout,fancyslides,fbithesis,fcavtex,
-             fdudoc,fduthesis-en,fduthesis,fei,ffslides,fithesis,
-             fithesis2,fithesis3,fithesis4,flacards,flashcards,frletter,
-             g-brief,g-brief2,gaceta,gammas,gatech-thesis,gmdocc,
-             gradstudentresume,grant-afosr,grant-aro,grant-darpa,grant-doe,
-             grant-nih,grant-nrl,grant-nsf,grant-onr,grant,graphpaper,
-             gridslides,gsemthesis,guitartabs,gzt,gztarticle,h2020proposal,
-             hgbarticle,hgbreport,hgbthesis,harnon-cv,hausarbeit-jura,
-             hcart,hcletter,hcreport,hcslides,hecthese,hepthesis,hitec,
-             hithesis,hitreport,hitszthesis,hletter,hpsdiss,fsbispit,
-             huawei,hustthesis,icsv,IEEEconf,IEEEtran,ijmart,ijsra,
-             image-gallery,IMTEKda,inkpaper,invoice-class,iodhbwm,iscram,
-             isov2,isodoc,iwhdp,jacow,jlreq,jmlr,jmlrbook,jnuexam,jpsj2,
-             jura,jurabook,juraovw,juraurtl,kdgcoursetext,kdgmasterthesis,
-             kdpcover,kerntest,kluwer,knittingpattern,scrartcl,scrarticle,
-             scrbook,scrdoc,scrletter,scrlttr2,scrreport,scrreprt,komacv,
-             oblivoir-utf,oblivoir-xl,oblivoir,xoblivoir,ksp-thesis,l3doc,
-             labbook,leadsheet,leaflet,lebhart,lectures,letgut,lettre,limap,
-             limecv,lion-msc,lni,lps,lt3graph-packagedoc,ltxdockit,
-             ltxguidex,abstbook,beletter,flashcard,iagproc,cours,fiche,
-             matapli,matc3mem,mcmthesis,ltxmdf,medstarbeamer,meetingmins,
-             memoir,mensa-tex,mentis,metanorma,milog,minimart,minimbook,
-             mla,mluexercise,mnras,moderncv,modernposter,msu-thesis,
-             mucproc,mugsthesis,muling,musuos,muthesis,third-rep,mwart,
-             mwbk,mwrep,mycv,nature,ncc,nccproc,sibjnm,nddiss2e,
-             ndsu-thesis,newlfm,nih,nihbiosketch,njurepo,nlctdoc,nostarch,
-             nrc1,nrc2,artikel1,artikel2,artikel3,boek,boek3,brief,
-             rapport1,rapport3,nwejm,nwejmart,octavo,onrannual,
-             oup-authoring-template,journal,paper,papertex,pbsheet,pecha,
-             petiteannonce,philosophersimprint,pittetd,pkuthss,plari,play,
-             postcards,powerdot,FUpowerdot,ppr-prv,pracjourn,pressrelease,
-             proposal,reporting,dfgproposal,dfgreporting,euproposal,
-             eureporting,prosper,protocol,prtec,upmgr,wkmgr,pst-doc,
-             ptptex,qcm,quantumarticle,qyxf-book,ReadableCV,recipe,
-             RecipeBook,recipecard,refart,refrep,resphilosophica,revtex4-2,
-             revtex4,revtex4-1,rtklage,ryersonSGSThesis,ryethesis,sageep,
-             sapthesis,schuleab,schulein,schuleit,schulekl,schuleub,
-             schuleue,schullsg,schullzk,schulma-ab,schulma-gutachten,
-             schulma-klausur,schulma-komp,schulma-mdlprf,schulma-praes,
-             schwalbe,sciposter,screenplay,scrjrnl,sdapsclassic,sduthesis,
-             seminar,semproc,sesamanuel,seuthesix,sffms,cassete,etiketka,
-             shtthesis,caesar_book,sides,simplecv,simplivre,skbarticle,
-             skbbeamer,skbbook,skblncsbeamer,skblncsppt,skbmoderncv,skdoc,
-             skeyval-testclass,skrapport,smfart,smfbook,SPhdThesis,spie,
-             sr-vorl,sslides,stage,standalone,usthesis,hwexam,mikoslides,
-             omdoc,smglom,subfiles,suftesi,sugconf,tabriz-thesis,talk,
-             tcldoc,tclldoc,powersem,thesis-ekf,thesis-gwu,thuthesis,
-             tikz-kalender,tikzposter,tlc-article,TOPletter,toptesi,
-             tudabeamer,tudaexercise,tudaleaflet,tudaletter,tudaposter,
-             tudapub,tudasciposter,tudscrartcl,tudscrbook,tudscrdoc,
-             tudscrmanual,tudscrposter,tudscrreprt,tufte-book,tufte-handout,
-             ltugboat,ltugproc,tui,turabian,turabian-researchpaper,
-             turabian-thesis,my-thesis,ua-thesis,uafthesis,
-             uantwerpenbamathesis,uantwerpencoursetext,uantwerpenexam,
-             uantwerpenletter,uantwerpenphdthesis,uantwerpenreport,
-             ucalgmthesis,ucbthesis,ucdavisthesis,ucsmonograph,ucthesis,
-             udesoftec,uebungsblatt,uestcthesis,uhhassignment,uiucredborder,
-             uiucthesis,ulthese,legislation,umich-thesis,umthesis,
-             unam-thesis,unifith,unitn-bimrep,univie-ling-expose,
-             univie-ling-paper,univie-ling-thesis,univie-ling-wlg,
-             unizgklasa,uothesis,UoWthesis,upmethodology-document,URbeamer,
-             URletter,uspatent,ut-thesis,utexasthesis,uwmslide,uwthesis,
-             verifica,webquiz,willowtreebook,withargs-packagedoc,
-             wsemclassic,xduthesis,xebaposter,xmuthesis,xsim-manual,
-             yaletter,yathesis,ycbook,ydoc,york-thesis,
-           },%
-           otherkeywords={},%
-           alsoletter={0123456789-},%
-           alsodigit={},%
-           sensitive%
-         }[keywords,tex,comments]%
-                #+end_src
-
-         #+begin_src latex
-         \lstdefinestyle{__letgut_all_reset}{
-           basicstyle=\ttfamily,
-           language=TeX,%
-           texcs={},%
-           keywords={},%
-           keywords=[2]{},%
-           keywords=[3]{},%
-           keywords=[4]{},%
-           keywords=[5]{},%
-           otherkeywords={},%
-           alsoletter={},%
-           alsodigit={},%
-           alsolanguage=[AlLaTeX]TeX,%
-           alsolanguage=[LaTeX]TeX,%
-           alsolanguage=[plain]TeX,%
-           alsolanguage=[common]TeX,%
-           alsolanguage=[primitive]TeX,%
-           alsolanguage=[classes]TeX,%
-       #+end_src
-   Because of a current issue involving \package{parskip} and
-   \package{listings}
-   (\url{https://github.com/FrankMittelbach/fmitex-parskip/issues/3}), we have to
-   set the skip below the displayed listings to a zero length.
-       #+begin_src latex
-         belowskip=0pt,
-         }
-         \lstset{
-           style=__letgut_all_reset
-         }
-         #+end_src
-  This style is applied automatically at the beginning of each ~\input~
-  file. Hence, the keywords defined in a previous file (by loading some
-  peticular (La)TeX dialects, i.e. control sequences and keywords specific to
-  some class or packages) won't interfere with the ones of the current file.
-         #+begin_src latex
-           \AddToHook{cmd/input/before}{
-             \lstset{%
-               style=__letgut_all_reset,%
-             }
-           }
-   #+end_src
 - The ~\printbibliography~ command is redefined in order its ~heading~ is by
   default set to ~subbibliography~.
    #+begin_src latex
@@ -1232,7 +1204,7 @@
 - We want the hyperlinks to be as unobtrusive as possible.
    #+begin_src latex
      \bool_if:NTF \g__letgut_paper_bool {
-       \hypersetup{draft}
+       \hypersetup{hidelinks}
      }{
        \hypersetup{%
          colorlinks,%
@@ -1241,10 +1213,19 @@
      }
    #+end_src
 
-   A preset of acronyms is input (if found).
+   A preset of acronyms is input (if found, firstly in the current directory,
+   secondly in the parent directory, thirdly in the TDS).
    #+begin_src latex
-     \file_if_exist:nT {\c__letgut_acronyms_file_tl}{
-       \file_input:n {\c__letgut_acronyms_file_tl}
+     \file_if_exist:nTF {./\c__letgut_acronyms_file_tl}{
+       \file_input:n {./\c__letgut_acronyms_file_tl}
+     }{
+       \file_if_exist:nTF {../\c__letgut_acronyms_file_tl}{
+         \file_input:n {../\c__letgut_acronyms_file_tl}
+       }{
+         \file_if_exist:nT {\c__letgut_acronyms_file_tl}{
+           \file_input:n {\c__letgut_acronyms_file_tl}
+         }
+       }
      }
    #+end_src
 
@@ -1271,7 +1252,8 @@
             {
               \Huge
               #+end_src
-    Currently, we can't use \package{l3color}'s ~\color_fill:n~[fn:1]
+    Currently, we can't use \package{l3color}'s ~\color_fill:n~ (see
+    \url{https://github.com/ho-tex/luacolor/issues/4\#issuecomment-848774260})
     and we have to rely on \package{xcolor}'s ~\color~.
               #+begin_src latex
                 % \color_fill:n {black!10}
@@ -1335,113 +1317,6 @@
 }
 #+end_src
 
-** Date handling
-
-#+begin_src latex
-  \int_new:N \g__letgut_date_month_int
-  \int_new:N \g__letgut_date_year_int
-
-  \int_gset:Nn \g__letgut_date_month_int {\the\month}
-  \int_gset:Nn \g__letgut_date_year_int  {\the\year}
-
-  \tl_new:N \g__letgut_date_month_tl
-  \tl_new:N \g__letgut_date_tl
-
-  \cs_new_protected:Npn \__letgut_date_parse:n #1
-  {
-    \__letgut_if_is_iso_date:nTF {#1}
-    {
-      \__letgut_date_parse:www #1 \q_stop
-    }{
-      \msg_term:nnn{letgut}{Not~month~iso~date}{#1}
-      \tl_gset:Nn \g__letgut_date_tl { #1 }
-    }
-  }
-
-  \prg_new_protected_conditional:Npnn
-  \__letgut_if_is_iso_date:n #1 { T, F, TF }
-  {
-    \regex_match:nnTF { ^\d{4}-(\d{1,2}) } {#1}
-    { \prg_return_true: }
-    { \prg_return_false: }
-  }
-
-  \prg_new_protected_conditional:Npnn
-  \__letgut_if_is_int:n #1 { T, F, TF }
-  {
-    \regex_match:nnTF { ^[\+\-]?[\d]+$ } {#1}
-    { \prg_return_true: }
-    { \prg_return_false: }
-  }
-
-  \cs_new_protected:Npn \__letgut_month_name:n #1
-  {
-    % \text_titlecase_first:n {
-    \int_case:nnF
-    { #1 }
-    {
-      { 1 }{ janvier }
-      { 2 }{ février }
-      { 3 }{ mars }
-      { 4 }{ avril }
-      { 5 }{ mai }
-      { 6 }{ juin }
-      { 7 }{ juillet }
-      { 8 }{ août }
-      { 9 }{ septembre }
-      { 10 }{ octobre }
-      { 11 }{ novembre }
-      { 12 }{ décembre }
-    }
-    { Month~ Error! }
-    % }
-  }
-
-  \cs_new_protected:Npn \__letgut_date_parse:www #1-#2
-  \q_stop
-  {
-    \int_compare:nTF
-    {
-      \the\year <= #1 <= \the\year+1
-    #+end_src
-
-# >> (Just not to disturb the parentheses balancing
-#    detection of my editor.)
-
-    #+begin_src latex
-    }{
-      \int_gset:Nn \g__letgut_date_year_int {#1}
-    }{
-      \int_gset:Nn \g__letgut_date_year_int {\the\year}
-    }
-    \__letgut_if_is_int:nTF {#2}
-    {
-      \int_compare:nTF
-      {
-        1 <= #2 <= 12
-    #+end_src
-
-# >> (Just not to disturb the parentheses balancing
-#    detection of my editor.)
-
-    #+begin_src latex
-      }
-      {\int_gset:Nn \g__letgut_date_month_int {#2}}
-      {\int_gset:Nn \g__letgut_date_month_int {\the\month}}
-    }{
-      \int_gset:Nn \g__letgut_date_month_int  {\the\month}
-    }
-    \tl_gset:Nn \g__letgut_date_month_tl {
-      \__letgut_month_name:n { \g__letgut_date_month_int }
-    }
-    \tl_gset:Nn \g__letgut_date_tl {
-      \tl_use:N \g__letgut_date_month_tl
-      \c_space_tl
-      \int_use:N \g__letgut_date_year_int
-    }
-  }
-#+end_src
-
 ** Page color default settings
 
    By default, the page color will be the one linked to the ~screen~ option.
@@ -1454,26 +1329,34 @@
 
 ** Options
 
-These options look to need to be specified rather at the end (throws an error if
-defined before the ~\__letgut_date_parse:n~'s definition):
+We now define the options of the class:
 
+- ~for-readers~/~for-authors~, depending on the target audience,
+- ~draft~/~final~ depending on the state of the document,
+- ~paper~/~screen~ depending on the way the document will be read,
 - ~number~ for the number of the issue,
 - ~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,
+- ~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,
+- ~infomations~ depending on the GUTenberg informations are wanted or not,
+- ~detailedtoc~ depending on the automatic ToC is wanted maximally (until
+  subparagraphs) detailed or not.
 
 #+begin_src latex
-  \keys_define:nn { letgut/setup }
+  \keys_define:nn { letgut }
   {
+    , for-readers .bool_gset:N = \g__letgut_for_readers_bool
+    , for-readers .initial:n = { true }
+    , for-readers .default:n = { true }
+    , for-authors .bool_gset_inverse:N = \g__letgut_for_readers_bool
     , draft .bool_gset:N = \g__letgut_draft_bool
     , draft .initial:n = { true }
     , draft .default:n = { true }
     , final .bool_gset_inverse:N = \g__letgut_draft_bool
-    , number .int_gset:N = \g__letgut_number_int
-    , date .code:n = { \__letgut_date_parse:n { #1 } }
-    , date .initial:x = {\the\year-\the\month}
     , paper .code:n = {
       \bool_gset_true:N \g__letgut_paper_bool
       \pagecolor[rgb]{\c__letgut_default_pagecolor_paper_clist}
@@ -1481,6 +1364,9 @@
         \c__letgut_default_pagecolor_paper_clist
     }
     , screen .bool_gset_inverse:N = \g__letgut_paper_bool
+    , number .int_gset:N = \g__letgut_number_int
+    , date .code:n = { \__letgut_date_parse:n { #1 } }
+    , date .initial:x = {\the\year-\the\month}
     , pagecolor .initial:V
       = \c__letgut_default_pagecolor_screen_clist
     , pagecolor .code:n = {
@@ -1508,9 +1394,16 @@
     , editorial .initial:n = { true }
     , informations .bool_gset:N = \g__letgut_informations_bool
     , informations .initial:n = { true }
+    , detailedtoc .bool_gset:N = \g__letgut_detailedtoc_bool
+    , detailedtoc .initial:n = { false }
   }
+  \ProcessKeysOptions { letgut }
 #+end_src
 
+#+begin_src latex
+    \definecolor{letgut_pagecolor}{rgb}{\g__letgut_pagecolor_clist}
+#+end_src
+
 ** Headers
 
 We now define the headers.
@@ -1554,19 +1447,43 @@
 
    The table of contents is customized:
 
-- only the titles of the articles are shown (but the bookmarks have their natural depth):
-#+begin_src latex
-  \etocsetnexttocdepth{0}
-  #+end_src
 - layout:
   #+begin_src latex
   \etocsetstyle {section}
   {}
-  {\leavevmode\leftskip 2cm\relax}
-  {\normalsize%
+  {\leavevmode\leftskip 2.5cm\relax}
+  {\mdseries\small%
     \etocname~\dotfill~\etocpage\par
   }
   {}
+  \etocsetstyle {subsection}
+  {}
+  {\leavevmode\leftskip 3cm\relax}
+  {\mdseries\footnotesize%
+    \etocname~\dotfill~\etocpage\par
+  }
+  {}
+  \etocsetstyle {subsubsection}
+  {}
+  {\leavevmode\leftskip 3.5cm\relax}
+  {\mdseries\scriptsize%
+    \etocname~\dotfill~\etocpage\par
+  }
+  {}
+  \etocsetstyle {paragraph}
+  {}
+  {\leavevmode\leftskip 4cm\relax}
+  {\mdseries\tiny%
+    \etocname~\dotfill~\etocpage\par
+  }
+  {}
+  \etocsetstyle {subparagraph}
+  {}
+  {\leavevmode\leftskip 4.5cm\relax}
+  {\mdseries\tiny%
+    \etocname~\dotfill~\etocpage\par
+  }
+  {}
 #+end_src
 - its title is dropped:
 #+begin_src latex
@@ -1701,7 +1618,8 @@
 Lettre.
 
 #+begin_src latex
-  \bool_if:NT \g__letgut_for_readers_bool {
+    \AddToHook{begindocument/before}{
+      \bool_if:NT \g__letgut_for_readers_bool {
 #+end_src
 
 #+begin_src latex
@@ -1848,11 +1766,20 @@
 - No headers on the first page. This has to be inserted after the previous
   (customized) ~\maketitle~ since this command inserts a ~\newpage~ which would
   ruin the effort of ~\thispagestyle{empty}~ if inserted before.
-    #+begin_src latex
-      \thispagestyle{empty}
-    #+end_src
-- The table of contents is automatically added and has a bookmark entry.
       #+begin_src latex
+        \thispagestyle{empty}
+      #+end_src
+- The table of contents is automatically added and has a bookmark entry. By
+  default only the titles of the articles are shown (but the bookmarks have
+  their natural depth) but the ~detailedtoc~ option make its depth until
+  subpargraphs (which may be useful in order to check the structure of the
+  Lettre).
+      #+begin_src latex
+        \bool_if:NTF \g__letgut_detailedtoc_bool {
+          \etocsetnexttocdepth{5}
+        }{
+          \etocsetnexttocdepth{0}
+        }
         \pdfbookmark[1]{
           \c__letgut_contents_name_tl
         }{
@@ -1859,16 +1786,17 @@
           \c__letgut_contents_name_tl
         }
         \tableofcontents
-        #+end_src
+        \etocsetnexttocdepth{1}
+      #+end_src
   Should a title be displayed, the table of contents would be added after it,
   followed by a new page (otherwise, if ~\title~ used after ~\begin{document}~
   sees its title on the front page, it will overflow onto the banner).
-        #+begin_src latex
-          \bool_if:NTF \g__letgut_title_empty_bool {
-            \vspace*{1.5cm}
-          }{
-            \newpage
-          }
+      #+begin_src latex
+        \bool_if:NTF \g__letgut_title_empty_bool {
+          \vspace*{1.5cm}
+        }{
+          \newpage
+        }
       #+end_src
 - Conditionally to the fact the ~editorial~ option is not set to ~false~: if the
   \file*{editorial.tex} of the editorial is found, its content is input and
@@ -1882,7 +1810,7 @@
             \pdfbookmark[1]{Éditorial}{
               \c__letgut_editorial_file_tl
             }
-            \file_input:n {./\c__letgut_editorial_file_tl}
+            \__letgut_input_article:n {./\c__letgut_editorial_file_tl}
             % % \int_set:N \l_tmpa_int {\pagenumber}
             % % \int_compare:nNnT \l_tmpa_int = 1 { \newpage }
     #+end_src
@@ -1945,19 +1873,33 @@
   \AddToHook{enddocument}
   {
 #+end_src
-Conditionally to the fact the ~informations~ option is not set to ~false~: if the
-\file*{informations-gut.tex} which contains the informations about
-\gutenberg. Otherwise, a warning is displayed.
+Conditionally to the fact the ~informations~ option is not set to ~false~: if
+the \file*{informations-gut.tex} which contains the informations about
+\gutenberg{} is found (firstly in the current directory, secondly in the parent
+directory, thirdly in the TDS). Otherwise, a warning is displayed.
    #+begin_src latex
      \bool_if:NT \g__letgut_informations_bool {
        \clearpage
        \phantomsection
-       \file_if_exist:nTF
-       {./\c__letgut_informations_gutenberg_file_tl}{
-         \file_input:n {./\c__letgut_informations_gutenberg_file_tl}
+       \file_if_exist:nTF {./\c__letgut_informations_gutenberg_file_tl}{
+         \__letgut_input_article:n {
+           ./\c__letgut_informations_gutenberg_file_tl
+         }
        }{
-         \msg_warning:nn{letgut}{Informations~file~missing}
-         \alertbox{ \c__letgut_missing_infomations_tl }
+         \file_if_exist:nTF {../\c__letgut_informations_gutenberg_file_tl}{
+           \__letgut_input_article:n {
+             ../\c__letgut_informations_gutenberg_file_tl
+           }
+         }{
+           \file_if_exist:nTF {\c__letgut_informations_gutenberg_file_tl}{
+             \__letgut_input_article:n {
+               \c__letgut_informations_gutenberg_file_tl
+             }
+           }{
+             \msg_warning:nn{letgut}{Informations~file~missing}
+             \alertbox{ \c__letgut_missing_infomations_tl }
+           }
+         }
        }
      }
    #+end_src
@@ -1973,6 +1915,7 @@
 
 #+begin_src latex
   }
+  }
 #+end_src
 
 ** Sections, subsections, etc.
@@ -2006,11 +1949,18 @@
         {
           \leavevmode\leftskip 2cm\relax
         }
-        {\mdseries\normalsize
+        {
+          \bool_if:NTF \g__letgut_detailedtoc_bool {
+            \bfseries
+          }{
+            \mdseries
+          }
+          \normalsize
           \etocname
           \nobreak\leaders\hbox~ to~ 1ex{\hss.}\hfill
           \etocpage
-          \par}
+          \par
+        }
         {}
         #+end_src
 - We also create the new level ~\subtitle~ for the subtitles of the
@@ -2123,7 +2073,7 @@
 
 #+begin_src latex
 \NewDocumentCommand \letgutsetup { m } {
-  \keys_set:nn { letgut/setup } { #1 }
+  \keys_set:nn { letgut } { #1 }
 }
 #+end_src
 
@@ -2229,7 +2179,8 @@
 #+begin_src latex
   \cs_new_protected:Nn \__letgut_person_last_name:n
   {
-    {\scshape \__letgut_titlecase_name:n {#1}}
+    {% \scshape
+      \__letgut_titlecase_name:n {#1}}
   }
   \cs_new_protected:Nn \__letgut_person_first_name_last_name:nn
   {
@@ -2248,7 +2199,7 @@
   \cs_new_protected:Npn \__letgut_process_list:n #1
   {
     \seq_clear:N \l__letgut_items_seq
-    \seq_set_split:Nnn \l_tmpa_seq {and} {#1}
+    \seq_set_split:Nnn \l_tmpa_seq {~and~} {#1}
     \seq_map_inline:Nn \l_tmpa_seq {
       \seq_set_from_clist:Nn \l_tmpb_seq {##1}
       \seq_pop_left:NN \l_tmpb_seq \l_letgut_last_name_tl
@@ -2356,7 +2307,7 @@
      {
        {\l__letgut_files_font_switch_tl #1}
      }
-     \NewDocumentCommand{\package}{ s o m O{package} } {
+     \NewDocumentCommand{\package}{ s o m O{\c__letgut_package_tl} } {
        \IfBooleanT{#1}{
          #4
          \c_space_tl
@@ -2363,7 +2314,7 @@
        }
        \__letgut_tex_stuff:nn {#2}{#3}
      }
-     \NewDocumentCommand{\class}{ s o m O{classe} } {
+     \NewDocumentCommand{\class}{ s o m O{\c__letgut_class_tl} } {
        \IfBooleanT{#1}{
          #4
          \c_space_tl
@@ -2370,7 +2321,7 @@
        }
        \__letgut_tex_stuff:nn {#2}{#3}
      }
-     \NewDocumentCommand{\file}{ s m O{fichier} } {
+     \NewDocumentCommand{\file}{ s m O{\c__letgut_file_tl} } {
        \IfBooleanT{#1}{
          #3
          \c_space_tl
@@ -2377,7 +2328,7 @@
        }
        \__letgut_file:n {#2}
      }
-     \NewDocumentCommand {\software} { s O{} m O{logiciel} } {
+     \NewDocumentCommand {\software} { s O{} m O{\c__letgut_software_tl} } {
        \IfBooleanT{#1}{
          #4
          \c_space_tl
@@ -2386,7 +2337,7 @@
      }
  #+end_src
 
-*** Names, etc.
+*** Names, expressions, etc.
 
 #+begin_src latex
    \NewExpandableDocumentCommand { \gutenberg } {  } {
@@ -2407,6 +2358,18 @@
    \NewExpandableDocumentCommand { \Cahiers } { } {
      \c__letgut_cahiers_tl
    }
+   \NewExpandableDocumentCommand { \cahier } { } {
+     \c__letgut_cahier_tl
+   }
+   \NewExpandableDocumentCommand { \cahiers } { } {
+     \c__letgut_cahiers_tl
+   }
+   \NewExpandableDocumentCommand { \cahiergut } { } {
+     \cahier \c_space_tl \gutenberg
+   }
+   \NewExpandableDocumentCommand { \cahiersgut } { } {
+     \cahiers \c_space_tl \gutenberg
+   }
    \NewExpandableDocumentCommand { \letgut } {  } {
      \class{letgut}
    }
@@ -2417,11 +2380,23 @@
      \c__letgut_tugboat_tl
    }
    \NewExpandableDocumentCommand { \knuth } {  } {
-     \person{Knuth, Donald~ E.}
+     \person{Knuth,~ Donald~ E.}
    }
    \NewExpandableDocumentCommand { \lamport } {  } {
-     \person{Lamport, Leslie}
+     \person{Lamport,~ Leslie}
    }
+   \NewExpandableDocumentCommand { \tl } {  } {
+     \c__letgut_tex_live_tl
+   }
+   \NewExpandableDocumentCommand { \linux } {  } {
+     \c__letgut_gnu_linux_tl
+   }
+   \NewExpandableDocumentCommand { \macos } {  } {
+     \c__letgut_macOS_tl
+   }
+   \NewExpandableDocumentCommand { \windows } {  } {
+     \c__letgut_windows_tl
+   }
 #+end_src
 
 *** Foreign locutions
@@ -2444,32 +2419,49 @@
 We disabling some commands when their arguments have to go to bookmarks.
 
 #+begin_src latex
-  \AddToHook{begindocument/end}{
-    \pdfstringdefDisableCommands{
-      \def\person#1{#1}
-      \def\author#1{#1}
-      \def\package#1{#1}
-      % \def\package*#1{package~#1}
-      \def\class#1{#1}
-      % \def\class*#1{classe~#1}
-      \def\file#1{#1}
-      % \def\file*#1{fichier~#1}
-      \def\software#1{#1}
-      % \def\software*#1{logiciel~#1}
-      \def\foreignloc#1{#1}
-      \def\lettre{Lettre}
-      \def\gutenberg{GUTenberg}
-      \def\gut{\gutenberg}
-      \def\lettregut{\lettre\c_space_tl\gutenberg}
-      \def\Cahier{Cahier}
-      \def\Cahiers{\Cahier s}
-      \def\letgut{letgut}
-      \def\letgutcls{classe~ letgut}
-      \def\knuth{Donald~ E.~ Knuth}
-      \def\lamport{Leslie~ Lamport}
-      \def\latinloc#1{#1}
-    }
-  }
+      \AddToHook{begindocument/end}{
+        \pdfstringdefDisableCommands{
+          \RenewExpandableDocumentCommand\person { m }{#1}
+          \RenewExpandableDocumentCommand\author{ m }{#1}
+          \RenewExpandableDocumentCommand \package { s O{} m }{
+            \IfBooleanT{#1}{\c__letgut_package_tl\c_space_tl}#3
+          }
+          \RenewExpandableDocumentCommand\class { s O{} m }{
+            \IfBooleanT{#1}{\c__letgut_class_tl\c_space_tl}#3
+          }
+          \RenewExpandableDocumentCommand\file { s m }{
+            \IfBooleanT{#1}{\c__letgut_file_tl\c_space_tl}#2
+          }
+          \RenewExpandableDocumentCommand\software { s O{} m }{
+            \IfBooleanT{#1}{\c__letgut_software_tl\c_space_tl}#3
+          }
+          \RenewExpandableDocumentCommand\foreignloc{ m }{#1}
+          \RenewExpandableDocumentCommand\latinloc{ m }{#1}
+          \RenewExpandableDocumentCommand\lettre{ }{Lettre}
+          \RenewExpandableDocumentCommand\gutenberg{ }{GUTenberg}
+          \RenewExpandableDocumentCommand\gut{ }{\gutenberg}
+          \RenewExpandableDocumentCommand\lettregut{ }{
+            \lettre\c_space_tl\gutenberg
+          }
+          \RenewExpandableDocumentCommand\Cahier{ }{Cahier}
+          \RenewExpandableDocumentCommand\Cahiers{ }{\Cahier s}
+          \RenewExpandableDocumentCommand\cahier{ }{Cahier}
+          \RenewExpandableDocumentCommand\cahiers{ }{\cahier s}
+          \RenewExpandableDocumentCommand\cahiergut{ }{
+            \cahier\c_space_tl\gutenberg
+          }
+          \RenewExpandableDocumentCommand\cahiersgut{ }{
+            \cahier s\c_space_tl\gutenberg
+          }
+          \RenewExpandableDocumentCommand\letgut{ }{letgut}
+          \RenewExpandableDocumentCommand\letgutcls{ }{classe~ letgut}
+          \RenewExpandableDocumentCommand\knuth{ }{Donald~ E.~ Knuth}
+          \RenewExpandableDocumentCommand\lamport{ }{Leslie~ Lamport}
+          \RenewExpandableDocumentCommand\linux{ }{GNU/Linux}
+          \RenewExpandableDocumentCommand\macos{ }{macOS}
+          \RenewExpandableDocumentCommand\windows{ }{Windows}
+        }
+      }
 #+end_src
 
 *** Acronyms
@@ -2549,18 +2541,31 @@
 
 The first occurrences of the acronyms will be displayed in their short forms,
 with the long ones in footnotes. But what about acronyms whom first occurrences
-arise within footnotes? We want the to be displayed as their short forms
+arise within footnotes? We want them to be displayed as their short forms
 followed by their the long form in parentheses. For this, we have to add
 a boolean at the beginning (and reversed at the end) of the ~\footnote~ command
 to know whether we currently are in a footnote or not and display the acronym
 accordingly.
 
+BTW, we hack the ~\footnote~ command in order to mimic the ~multiple~ option of
+the \package{footmisc} package (consecutive ~\footnote~ commands make their
+corresponding footnote marks separated by commas). See
+https://tex.stackexchange.com/a/62091.
+
 #+begin_src latex
+  \let\__letgut_next_token\relax
+  \cs_new_protected:Npn \__letgut_next_token_is_footnote:
+  {\if_meaning:w\footnote\__letgut_next_token\textsuperscript{,}\fi}
   \NewCommandCopy{\__letgut_old_footnote}{\footnote}
-  \RenewDocumentCommand {\footnote} { m }{
+  \RenewDocumentCommand {\footnote} { O{} m }{
     \bool_set_true:N \l__letgut_in_footnote_bool
-    \__letgut_old_footnote { #1 }
+    \tl_if_empty:nTF {#1}{
+      \__letgut_old_footnote { #2 }
+    }{
+      \__letgut_old_footnote [#1] { #2 }
+    }
     \bool_set_false:N \l__letgut_in_footnote_bool
+    \futurelet\__letgut_next_token\__letgut_next_token_is_footnote:
   }
 #+end_src
 We change a bit both the ~footnote~ acro template, the ~description~ list
@@ -2581,7 +2586,7 @@
           \space
           (
           \acroifT {alt} { \acrotranslate {or} ~ \acrowrite {alt} ~ }
-          \acroifT {foreign} { \acrowrite {foreign} :~ }
+          \acroifT {foreign} { \acrowrite {foreign} }
           \acrowrite {long}
           \acrogroupcite
           )
@@ -2789,7 +2794,7 @@
     \noindent
     \textsf{\fullcite{\g__letgut_bookreview_bibkey_tl}}
     \tl_if_empty:NF \g__letgut_bookreview_price_tl{
-      .\c_space_tl\EUR{\g__letgut_bookreview_price_tl}
+      .\c_space_tl\g__letgut_bookreview_price_tl\c_space_tl €
     }
     \par
   }{
@@ -2797,6 +2802,56 @@
   }
 #+end_src
 
+** Keyboard keys
+
+We make use of the Linux Biolinum Keyboard font and extend somehow the ~\LKey~
+provided by the \package*{biolinum} in order to more easily write keyboard keys
+for usual characters on French keyboards.
+
+#+begin_src latex
+  \DeclareRobustCommand*\LKey[1]{%
+  \ifx#10\biolinumKeyGlyph{zero}%  % spurious space removed 2016/06/24
+  \else\ifx#11\biolinumKeyGlyph{one}%
+  \else\ifx#12\biolinumKeyGlyph{two}%
+  \else\ifx#13\biolinumKeyGlyph{three}%
+  \else\ifx#14\biolinumKeyGlyph{four}%
+  \else\ifx#15\biolinumKeyGlyph{five}%
+  \else\ifx#16\biolinumKeyGlyph{six}%
+  \else\ifx#17\biolinumKeyGlyph{seven}%
+  \else\ifx#18\biolinumKeyGlyph{eight}%
+  \else\ifx#19\biolinumKeyGlyph{nine}%
+  \else\ifx#1à\biolinumKeyGlyph{agrave}%
+  \else\ifx#1À\biolinumKeyGlyph{Agrave}%
+  \else\ifx#1â\biolinumKeyGlyph{acircumflex}%
+  \else\ifx#1Â\biolinumKeyGlyph{Acircumflex}%
+  \else\ifx#1é\biolinumKeyGlyph{eacute}%
+  \else\ifx#1É\biolinumKeyGlyph{Eacute}%
+  \else\ifx#1è\biolinumKeyGlyph{egrave}%
+  \else\ifx#1È\biolinumKeyGlyph{Egrave}%
+  \else\ifx#1ê\biolinumKeyGlyph{ecircumflex}%
+  \else\ifx#1Ê\biolinumKeyGlyph{Ecircumflex}%
+  \else\ifx#1ë\biolinumKeyGlyph{edieresis}%
+  \else\ifx#1Ë\biolinumKeyGlyph{Edieresis}%
+  \else\ifx#1î\biolinumKeyGlyph{icircumflex}%
+  \else\ifx#1Î\biolinumKeyGlyph{Icircumflex}%
+  \else\ifx#1ï\biolinumKeyGlyph{idieresis}%
+  \else\ifx#1Ï\biolinumKeyGlyph{Idieresis}%
+  \else\ifx#1ô\biolinumKeyGlyph{ocircumflex}%
+  \else\ifx#1Ô\biolinumKeyGlyph{Ocircumflex}%
+  \else\ifx#1ù\biolinumKeyGlyph{ugrave}%
+  \else\ifx#1Ù\biolinumKeyGlyph{Ugrave}%
+  \else\ifx#1û\biolinumKeyGlyph{ucircumflex}%
+  \else\ifx#1Û\biolinumKeyGlyph{Ucircumflex}%
+  \else\ifx#1ü\biolinumKeyGlyph{udieresis}%
+  \else\ifx#1Ü\biolinumKeyGlyph{Udieresis}%
+  \else\ifx#1ÿ\biolinumKeyGlyph{ydieresis}%
+  \else\ifx#1Ÿ\biolinumKeyGlyph{Ydieresis}%
+  \else\ifx#1ç\biolinumKeyGlyph{ccedilla}%
+  \else\ifx#1Ç\biolinumKeyGlyph{Ccedilla}%
+  \else\biolinumKeyGlyph{#1}%
+  \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}
+#+end_src
+
 ** Miscellanous
 
 - We specify the possible hyphenations of \enquote{\gutenberg}.
@@ -2804,6 +2859,22 @@
    \hyphenation{GUT-enberg}
 #+end_src
 
+*** ISSN
+
+#+begin_src latex
+  \cs_new_protected:Npn \__letgut_issn:
+  {
+    \bool_if:NTF \g__letgut_paper_bool {
+      \c__letgut_paper_issn_tl
+    }{
+      \c__letgut_online_issn_tl
+    }
+  }
+  \NewDocumentCommand{\letgutissn}{ }{
+    \__letgut_issn:
+  }
+#+end_src
+
 *** Non selectable text
 
 We create a control sequence that makes its argument not selectable in the
@@ -2820,7 +2891,7 @@
 
     We provide a ~\meta~ macro that (poorly) mimics the one of the
     \package*{doc}. It is added at the very end of the preamble since other
-    package that provide a better definition of this macro may have been loaded
+    package that provide another definition of this macro may have been loaded
     (e.g. \package{tcolorbox}).
  #+begin_src latex
    \colorlet {__letgut_meta} {
@@ -2835,49 +2906,168 @@
        \textcolor{#1}{$\langle$#2$\rangle$}
        \egroup
    }
-   \AddToHook{begindocument/before}{
-     \ProvideDocumentCommand{\meta}{ O{__letgut_meta} m } {
+   \AddToHook{begindocument/end}{
+     \DeclareDocumentCommand{\meta}{ O{__letgut_meta} m } {
        \__letgut_meta:nn {#1}{#2}
      }
    }
  #+end_src
 
-** LaTeX listings and examples
+** Listings
 
-We first define some colors used in the listings and examples.
+We define a style for all the listings which resets all the \TeX{} control
+sequences and keywords, and fix some defaults.
 
 #+begin_src latex
-  \definecolor{__letgut_backgroundCode}{cmyk}{0,0,0,0.04}
-  \definecolor{__letgut_borderCode}{cmyk}{0,0,0,0.2}
-  \definecolor{__letgut_foregroundLinenumber}{cmyk}{0,0,0,0.5}
-  \definecolor{__letgut_foregroundMention}{cmyk}{0,0,0,0}
-  \definecolor{__letgut_backgroundResult}{cmyk}{0,0,0,0}
+  \lstdefinestyle{__letgut_reset_listings_styles}{
+    basicstyle=\ttfamily,
+    breaklines,
+    language=TeX,%
+    texcs={},%
+    language={},%
+    keywords={},%
+    keywords=[2]{},%
+    keywords=[3]{},%
+    keywords=[4]{},%
+    keywords=[5]{},%
+    otherkeywords={},%
+    alsoletter={},%
+    alsodigit={},%
+    escapechar=£,
+    columns=fullflexible,
+    keepspaces=true,
+    upquote=true,
+    showstringspaces=false,
 #+end_src
 
-We now define the colors for the syntax highlighting and define the style of our
-listings.
+If line numbers are asked, they should always have the same layout and not be
+selectable (hence the ~\__letgut_unselectable:n~).
 
 #+begin_src latex
+    numbersep=\c__letgut_number_sep_dim,
+    numberstyle=\scriptsize\ttfamily
+    \color{__letgut_foregroundLinenumber}
+    \__letgut_unselectable:n,
+       #+end_src
+
+Because of a current issue involving \package{parskip} and \package{listings}
+(\url{https://github.com/FrankMittelbach/fmitex-parskip/issues/3}), we have to
+set the skip below the displayed listings to a (almost) zero length. We do the
+same for the above skip.
+
+#+begin_src latex
+    aboveskip={0\p@ \@plus 6\p@},
+    belowskip={0\p@ \@plus 6\p@},
+  }
+#+end_src
+
+We define as short equivalent of ~\lstinline~ the character
+\lstDeleteShortInline⅛\texttt{⅛} which is unlikely to be used in ordinary text.
+
+#+begin_src latex
+\lstMakeShortInline[breaklines=false]⅛
+#+end_src
+
+We start with an empty listings style.
+
+#+begin_src latex
+  \lstset{ style=__letgut_reset_listings_styles }
+         #+end_src
+
+We create our own ~\input~ command for the articles of the Lettre with the
+following characteristics:
+
+- The previous style is applied automatically. Hence, the keywords defined in
+  a previous file (by loading some peticular (La)TeX dialects, i.e. control
+  sequences and keywords specific to some class or packages) won't interfere
+  with the ones of the current file.
+- All the acronyms are reset (each acronym is developped at its first occurrence).
+
+#+begin_src latex
+  \cs_new_protected:Npn \__letgut_input_article:n #1
+  {
+    \lstset{ style=__letgut_reset_listings_styles }
+    \acresetall%
+    \file_input:n{#1}%
+  }
+  \NewDocumentCommand{\inputarticle}{m}{
+    \__letgut_input_article:n { #1 }
+  }
+#+end_src
+
+*** LaTeX listings and examples
+
+We define the colors for the syntax highlighting of LaTeX listings.
+
+#+begin_src latex
   \colorlet{__letgut_texcs}{blue}
   \colorlet{__letgut_comment}{gray}
-  \colorlet{__letgut_argument-specification-separator}{red}
-  \colorlet{__letgut_argument-specification}{cyan}
-  \colorlet{__letgut_mandatory-argument}{purple}
+  \colorlet{__letgut_argument_specification_separator}{red}
+  \colorlet{__letgut_argument_specification}{cyan}
+  \colorlet{__letgut_mandatory_argument}{purple}
   \colorlet{__letgut_environment}{teal}
-  \colorlet{__letgut_key}{__letgut_mandatory-argument}
+  \colorlet{__letgut_key}{__letgut_mandatory_argument}
   \colorlet{__letgut_value}{violet}
-  \colorlet{__letgut_optional-argument}{__letgut_key}
+  \colorlet{__letgut_optional_argument}{__letgut_key}
   \colorlet{__letgut_math}{green!50!black}
-  \lstset{%
+#+end_src
+
+We add our own language files taken in account by the \package*{listings}. They
+will be considered after the other usual ones, if found. They are searched firstly
+in the current directory, secondly in the parent directory, thirdly in the TDS.
+
+#+begin_src latex
+  \def\lstlanguagefiles{
+    lstlang0.sty,
+    lstlang1.sty,
+    lstlang2.sty,
+    lstlang3.sty,
+    ./\c__letgut_lstlanguage_file_tl,
+    ../\c__letgut_lstlanguage_file_tl,
+    \c__letgut_lstlanguage_file_tl
+  }
+#+end_src
+
+We define a listing style specific to LaTeX listings.
+
+#+begin_src latex
+  \lstdefinestyle{__letgut_latex_listings_style}{
+    language=TeX,%
+    alsolanguage=[AlLaTeX]TeX,%
+    alsolanguage=[LaTeX]TeX,%
+    alsolanguage=[plain]TeX,%
+    alsolanguage=[common]TeX,%
+    alsolanguage=[primitive]TeX,%
+    alsolanguage=[extLaTeX]TeX,%
+    alsolanguage=[classes]TeX,%
     texcsstyle=*\color{__letgut_texcs},
     commentstyle=\color{__letgut_comment}\itshape,
-    keywordstyle=    \color{__letgut_argument-specification-separator},
+    keywordstyle=    \color{__letgut_argument_specification_separator},
     keywordstyle={[2]\color{__letgut_environment}},
     keywordstyle={[3]\color{__letgut_key}},
     keywordstyle={[4]\color{__letgut_value}},
-    keywordstyle={[5]\color{__letgut_argument-specification}},
+    keywordstyle={[5]\color{__letgut_argument_specification}},
     keywordstyle={[6]\color{__letgut_key}},
-    escapechar=£,
+    numbers=left,
+#+end_src
+
+The ~listings~ package defines some of the LaTeX's environments as keywords of
+order 1. This would force us to do the same in our own language driver file but
+would ruin our effort to stylize in a special way (in red) other keywords (see
+~otherkeywords={...}~) that are stylized as keywords of order 1. Hence, we
+delete these keywords of order 1 and will add them as keywords of order 2 like
+all the environments in our own language driver file (in the ~extLaTeX~ dialect
+that we load by default).
+
+#+begin_src latex
+  deletekeywords={%
+    array,center,displaymath,document,enumerate,eqnarray,%
+    equation,flushleft,flushright,itemize,list,lrbox,math,minipage,%
+    picture,sloppypar,tabbing,tabular,trivlist,verbatim,%
+  },%
+#+end_src
+
+#+begin_src latex
     literate=*%
     {\\\\}{{{\color{__letgut_texcs}\textbackslash\textbackslash}}}{2}%
     {\\[}{{\textcolor{__letgut_math}{\textbackslash[}}}{2}%
@@ -2886,13 +3076,33 @@
   }
 #+end_src
 
+We first define some colors used in the listings and examples.
+
+#+begin_src latex
+  \definecolor{__letgut_backgroundCode}{cmyk}{0,0,0,0.04}
+  \definecolor{__letgut_borderCode}{cmyk}{0,0,0,0.2}
+  \definecolor{__letgut_foregroundLinenumber}{cmyk}{0,0,0,0.5}
+  \definecolor{__letgut_foregroundMention}{cmyk}{0,0,0,0}
+  \definecolor{__letgut_backgroundResult}{cmyk}{0,0,0,0}
+  #+end_src
+
 For the listings and examples, we rely on \package*{tcolorbox}, and more
 specifically on some of its libraries.
 
 #+begin_src latex
-  \tcbuselibrary{listings,xparse,breakable,skins}
+  \tcbuselibrary{listings,xparse,breakable,skins,hooks}
 #+end_src
 
+We want some common settings for all the ~tcolorbox~es.
+
+#+begin_src latex
+  \tcbset{
+    breakable,
+    sharp~ corners,
+    fonttitle=\sffamily\bfseries,
+  }
+#+end_src
+
 The functions:
 
 - ~\__letgut_code_result_mention_box:n~ draws the mentions “code” and “résultat”
@@ -2932,7 +3142,7 @@
   }
 #+end_src
 
-We define the style of the codes and the results boxes.
+We define the style of the codes.
 
 #+begin_src latex
   \tl_set:Nn \l__letgut_reference_text_tl {
@@ -2941,33 +3151,21 @@
   \tcbset{
     __letgut_code/.style={
       listing~ options={
-        % style=tcblatex,
-        numbers=left,
-        numbersep=\c__letgut_number_sep_dim,
+        style=__letgut_latex_listings_style,
+      },
+      every~ float=\raggedleft,
+      colback=__letgut_backgroundCode,
+      boxrule=0.25mm,
+      colframe=__letgut_borderCode,
+      sidebyside~ align=top~ seam,
+      toprule~ at~ break=0mm,
+      bottomrule~ at~ break=0mm,
+      colbacktitle=__letgut_borderCode,
+      fonttitle=\sffamily\bfseries,
+      before~ title={
+        \tl_set:Nn \l__letgut__tex_stuff_font_switch_tl {\rmfamily}
+      },
       #+end_src
-      We want the line numbers to not be selectable, hence the ~\__letgut_unselectable:n~:.
-      #+begin_src latex
-        numberstyle=
-          \scriptsize
-          \ttfamily
-          \color{__letgut_foregroundLinenumber}
-          \__letgut_unselectable:n,
-        },
-        every~ float=\raggedleft,
-        colback=__letgut_backgroundCode,
-        breakable,
-        sharp~ corners,
-        boxrule=0.25mm,
-        colframe=__letgut_borderCode,
-        sidebyside~ align=top~ seam,
-        toprule~ at~ break=0mm,
-        bottomrule~ at~ break=0mm,
-        colbacktitle=__letgut_borderCode,
-        fonttitle=\sffamily\bfseries,
-        before~ title={
-          \tl_set:Nn \l__letgut__tex_stuff_font_switch_tl {\rmfamily}
-        },
-      #+end_src
 We define a custom \package*{tcolorbox}'s ~title addon~ option that let us
 specify an addon to the title which will added after the automatically
 generated title “Exemple \meta{number}”.
@@ -2989,6 +3187,9 @@
         result~ width/.store~ in=\l__letgut_result_width_dim,
         result~ width=\linewidth,
         },
+      #+end_src
+We define more specifically the style of the codes with results.
+      #+begin_src latex
         __letgut_code_result/.style={
           __letgut_code={#1},
           bicolor,
@@ -3161,8 +3362,322 @@
         \skip_set_eq:NN \intextsep \c__letgut_reduced_intextsep_skip
       }
     }
+  #+end_src
+
+Since the syntax highlighting is reset at each ~\input~, the ~ltx-code-*~
+environments above provide syntax highlighting only for the commands of the \TeX
+dialects specified in the class. So we provide a specific command that let us
+specify (the dialects of) the main language (\TeX by default) for which we want
+syntax highlighting. This assumes that the commands and keywords of these
+packages are listed (properly, according to the ~listings~ package syntax) in
+the `lstlang0.sty` or ~letgut-lstlang.sty~ files.
+
+  #+begin_src latex
+    \cs_new_protected:Npn \__letgut_tcbset:n #1
+    {
+      \tcbset{
+        __letgut_code/.append~ style={
+          listing~ options~ app={
+            #1
+          }
+        }
+      }
+    }
+    \cs_new_protected:Npn \__letgut_alsolanguage_list:nn #1 #2
+    {
+      #+end_src
+      To reduce syntax highlighting conflicts, we reset all previous ones each
+      time a new one is asked.
+      #+begin_src latex
+      \lstset{%
+        style=__letgut_reset_listings_styles,%
+      }
+      \tl_if_empty:nTF {#1} {
+        \tl_set:Nx \l_tmpa_tl {
+          alsolanguage={#2}
+        }
+        \exp_args:NV \__letgut_tcbset:n
+        {
+          \l_tmpa_tl
+        }
+      }{
+        \seq_set_from_clist:Nn \l_tmpa_seq {#1}
+        \seq_set_map_x:NNn \l_tmpb_seq \l_tmpa_seq {
+          alsolanguage={[##1]#2}
+        }
+        \tl_set:Nx \l_tmpa_tl
+        {
+          \seq_use:Nn \l_tmpb_seq {,}
+        }
+        \exp_args:NV \__letgut_tcbset:n
+        {
+          \l_tmpa_tl
+        }
+      }
+    }
+    \NewDocumentCommand{\syntaxhl}{ O{TeX} m}{%
+      \__letgut_alsolanguage_list:nn {#2} {#1}
+    }
+  #+end_src
+
+*** Terminal listings
+
+We define a command dedicated to terminal stdin and stdout.
+
+#+begin_src latex
+\AddToHook{begindocument/before}{
 #+end_src
 
+We define a listing style specific to these terminal commands.
+
+  #+begin_src latex
+  \definecolor{__letgut_terminal_prompt}{RGB}{204,0,0}
+  \colorlet{__letgut_terminal_comment}{gray!80}
+  \definecolor{__letgut_terminal_commands}{RGB}{241,124,81}
+  \definecolor{__letgut_terminal_keywords}{RGB}{173,127,168}
+  \definecolor{__letgut_terminal_variables}{RGB}{114,159,207}
+  \colorlet{__letgut_terminal_utilities}{__letgut_terminal_commands}
+  \definecolor{__letgut_terminal_strings}{RGB}{78,154,6}
+#+end_src
+
+  #+begin_src latex
+  \lstdefinestyle{__letgut_terminal_listings_style}{
+    commentstyle=    \color{__letgut_terminal_comment},
+    keywordstyle=    \color{__letgut_terminal_commands},
+    keywordstyle={[2]\color{__letgut_terminal_keywords}},
+    keywordstyle={[3]\color{__letgut_terminal_utilities}},
+    stringstyle=     \color{__letgut_terminal_strings},
+    literate=*%
+    {$}{{\textcolor{__letgut_terminal_variables}{\$}}}{1}%$
+  }
+#+end_src
+
+We define a dialect which is missing in the \package*{listings}.
+
+#+begin_src latex
+  \lstdefinelanguage{terminal}{%
+    morekeywords={%
+      alias,bg,bind,break,builtin,caller,cd,command,compgen,%
+      complete,compopt,continue,declare,dirs,disown,echo,enable,%
+      eval,exec,exit,export,fc,fg,getopts,hash,help,history,%
+      jobs,kill,let,local,logout,mapfile,popd,printf,pushd,pwd,%
+      read,readarray,readonly,return,set,shift,shopt,source,%
+      suspend,test,times,trap,type,typeset,ulimit,umask,unalias,%
+      unset,wait,%
+    },%
+    morekeywords=[2]{%
+      case,do,done,elif,else,esac,fi,for,function,if,in,select,%
+      then,time,until,while,%
+    },%
+    morekeywords=[3]{%
+      apropos,apt,apt-get,aptitude,aspell,at,awk,base32,base64,%
+      basename,bash,bc,bzip2,cal,cat,cfdisk,chattr,chgrp,%
+      chkconfig,chmod,chown,chpasswd,chroot,cksum,clear,cmp,comm,%
+      cp,cpio,cron,crontab,csplit,curl,cut,date,dc,dd,ddrescue,%
+      df,diff,diff3,dig,dir,dircolors,dirname,dmesg,dos2unix,%
+      dpkg,du,egrep,eject,env,ethtool,expand,expr,false,fdformat,%
+      fdisk,fgrep,file,find,fmt,fold,format,free,fsck,ftp,fuser,%
+      gawk,grep,groupadd,groupdel,groupmod,groups,gzip,head,%
+      hostname,htop,iconv,id,ifconfig,ifdown,ifup,import,install,%
+      iostat,ip,join,killall,less,link,ln,locate,logname,look,%
+      lpc,lpr,lprint,lprintd,lprintq,lprm,ls,lsattr,lsblk,lsof,%
+      lspci,make,man,mkdir,mkfifo,mkfile,mkisofs,mknod,mktemp,%
+      mmv,more,most,mount,mtools,mtr,mv,nc,netstat,nft,nice,nl,%
+      nohup,notify-send,nslookup,op,open,passwd,paste,pathchk,%
+      Perf,pgrep,ping,pkill,pr,printcap,printenv,ps,pv,quota,%
+      quotacheck,ram,rar,rcp,reboot,remsync,rename,renice,rev,rm,%
+      rmdir,rsync,scp,screen,sdiff,sed,seq,sftp,shuf,shutdown,%
+      sleep,slocate,sort,split,ss,ssh,stat,strace,su,sudo,sum,%
+      sync,tail,tar,tee,timeout,tmux,top,touch,tput,tr,%
+      traceroute,true,tsort,tty,umount,uname,unexpand,uniq,units,%
+      unix2dos,unrar,unshar,uptime,useradd,userdel,usermod,users,%
+      uudecode,uuencode,vdir,vi,vmstat,watch,wc,wget,whereis,%
+      which,who,whoami,write,xargs,xdg-open,xxd,xz,yes,zip,%
+    },%
+    alsoletter={2346-},%
+    morecomment=[l]\#,%
+    morestring=[d]",%
+    morestring=[d]',%
+    sensitive%
+  }[keywords,comments,strings]%
+#+end_src
+
+We define some colors used in the terminal listings.
+
+  #+begin_src latex
+    \definecolor{__letgut_foreground_terminal_dark}{named}{black}
+    \colorlet{__letgut_background_terminal_dark_stdin}{
+      letgut_pagecolor!95!gray
+    }
+    \colorlet{__letgut_background_terminal_dark_stdout}{
+      __letgut_background_terminal_dark_stdin!60
+    }
+    \definecolor{__letgut_foreground_terminal_light}{named}{black}
+    \definecolor{__letgut_background_terminal_light_stdin}{rgb}{
+      0.99,0.975,0.98
+    }
+    \colorlet{__letgut_background_terminal_light_stdout}{
+      __letgut_background_terminal_light_stdin!40
+    }
+#+end_src
+
+  #+begin_src latex
+    \bool_if:NTF \g__letgut_paper_bool {
+      \colorlet{__letgut_foreground_terminal}{
+        __letgut_foreground_terminal_light
+      }
+      \colorlet{__letgut_background_terminal_stdin}{
+        __letgut_background_terminal_light_stdin
+      }
+      \colorlet{__letgut_background_terminal_stdout}{
+        __letgut_background_terminal_light_stdout
+      }
+    }{
+      \colorlet{__letgut_foreground_terminal}{
+        __letgut_foreground_terminal_dark
+      }
+      \colorlet{__letgut_background_terminal_stdin}{
+        __letgut_background_terminal_dark_stdin
+      }
+      \colorlet{__letgut_background_terminal_stdout}{
+        __letgut_background_terminal_dark_stdout
+      }
+    }
+  #+end_src
+
+  We define the style of the ~tcolorbox~ in which the terminal stdin and stdout
+  will be displayed.
+
+  #+begin_src latex
+    \tcbset{%
+      terminal/.style={%
+        colupper=__letgut_foreground_terminal,
+        collower=__letgut_foreground_terminal,
+        breakable,
+        segmentation~ at~ break=false,
+        boxrule=0mm,
+        before~ lower={\tcbset{every~ listing~ line={}}},
+        listing~ options={%
+          style=__letgut_terminal_listings_style,
+          language=terminal,
+        },
+        every~ listing~ line={%
+          \textcolor{__letgut_terminal_prompt}{%
+            \ttfamily%
+            \bfseries%
+            \__letgut_unselectable:n {#1\c_space_tl}
+          }
+        },
+      },
+    }
+  #+end_src
+
+  We define now the command
+
+  #+begin_src latex
+    \cs_new_protected:Npn \__letgut_terminal:nnnn #1 #2 #3 #4
+    {
+      \bool_set_false:N \l_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_tmpa_bool
+          }{
+            \tcbset{colback=__letgut_background_terminal_stdout}
+          }
+        }{
+          \tcbset{colback=__letgut_background_terminal_stdin}
+          \tl_if_empty:nTF {#4}{
+          }{
+            \tcbset{
+              bicolor,
+              middle=0mm,
+              boxsep=0mm,
+              colbacklower=__letgut_background_terminal_stdout,
+            }
+          }
+        }
+        \bool_if:NF \l_tmpa_bool {
+          \begin{tcolorbox}[terminal={#1},#2]
+            \lstset{aboveskip=0pt}
+            \tl_if_empty:nF {#3}{
+              \tcbset{
+                tempfile=\jobname-stdin.tex,
+              }
+              \tcbusetemplisting
+              \tl_if_empty:nF {#4}{
+                \tcblower
+              }
+            }
+            \tl_if_empty:nF {#4}{
+              \tl_if_empty:nF {#3}{
+                \lstset{aboveskip=0pt}
+              }
+              \tcbset{
+                tempfile=\jobname-stdout.tex,
+                every~ listing~ line={},
+                listing~ options~ app={
+                  language={}
+                }
+              }
+              \tcbusetemplisting
+            }
+          \end{tcolorbox}
+        }
+      }
+      \NewDocumentCommand{\terminal}{ O{\$} O{} +v +v}{
+        \__letgut_terminal:nnnn {#1} {#2} {#3} {#4}
+      }
+  #+end_src
+
+  We close the ~\AddToHook{begindocument/before}~ argument.
+
+  #+begin_src latex
+}
+  #+end_src
+
+*** Unicode characters with positions above 256
+
+Unicode characters with positions above 256 causes troubles in
+listings. Here is a workaround for some of them (see
+https://tex.stackexchange.com/a/25396).
+
+  #+begin_src latex
+    \lst at InputCatcodes
+    \def\lst at DefEC{%
+     \lst at CCECUse \lst at 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%
+      ^^b0^^b1^^b2^^b3^^b4^^b5^^b6^^b7^^b8^^b9^^ba^^bb^^bc^^bd^^be^^bf%
+      ^^c0^^c1^^c2^^c3^^c4^^c5^^c6^^c7^^c8^^c9^^ca^^cb^^cc^^cd^^ce^^cf%
+      ^^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 ”
+      ^^^^215b% for ⅛
+      ^^00%
+    }
+    \lst at RestoreCatcodes
+  #+end_src
+
 ** Local config file
 
 Each issue of the Lettre requires certain local configurations: configuration
@@ -3170,13 +3685,13 @@
 specific configurations of the \package*{listings}, etc. In order to not clutter
 the main \file*{.tex} of the Lettre, a local configuration file named
 \file{localconf.tex}, if present in the current directory, is automatically
-included at the end of the end of the preamble. And since this file is input in
-the current category régime (~\ExplSyntaxOn~), a ~\ExplSyntaxOff~ is
-automatically inserted at its beginning.
+included at the end the preamble. And since this file is input in the current
+category régime (~\ExplSyntaxOn~), a ~\ExplSyntaxOff~ is automatically inserted
+at its beginning.
 
 #+begin_src latex
   \file_if_exist:nT {./\c__letgut_local_config_file_tl}{
-    \AddToHook { file/before/./\c__letgut_local_config_file_tl } {
+    \AddToHook { file/./\c__letgut_local_config_file_tl/before } {
       \ExplSyntaxOff
     }
     \file_input:n {./\c__letgut_local_config_file_tl}
@@ -3201,22 +3716,22 @@
 - the books reviews,
 - the books advertisements.
 
-#+begin_src latex :tangle letgut.lbx :exports both
-  \ProvidesFile{letgut.lbx}[2022-03-22 v0.9.1 letgut localization]
-  \InheritBibliographyExtras{french}
-  \DeclareBibliographyStrings{
-    inherit          = {french},
-    number           = {{\no}{\no}},
-    volume           = {{volume}{vol\adddot}},
-    volumes          = {{volumes}{vol\adddot}},
-  }
+#+begin_src latex :tangle ../../../tex/lualatex/letgut/letgut.lbx :exports both
+\ProvidesFile{letgut.lbx}[2022-06-18 v0.9.2 letgut localization]
+\InheritBibliographyExtras{french}
+\DeclareBibliographyStrings{
+  inherit          = {french},
+  number           = {{\no}{\no}},
+  volume           = {{volume}{vol\adddot}},
+  volumes          = {{volumes}{vol\adddot}},
+}
  #+end_src
 
   We create the new bibliography driver ~bookreview~ (that seems to
   create the corresponding new entry).
 
-  #+begin_src latex :tangle letgut.dbx :exports both
-  \ProvidesFile{letgut.dbx}[2022-03-22 v0.9.1 letgut data model macros]
+  #+begin_src latex :tangle ../../../tex/lualatex/letgut/letgut.dbx :exports both
+  \ProvidesFile{letgut.dbx}[2022-06-18 v0.9.2 letgut data model macros]
   \DeclareBibliographyDriver{bookreview}{%
     \usebibmacro{bibindex}%
     \usebibmacro{begentry}%
@@ -3270,8 +3785,8 @@
 
 We provide a specific ~biblatex~ citation style .
 
-#+begin_src latex :tangle letgut.cbx :exports both
-  \ProvidesFile{letgut.cbx}[2022-03-22 v0.9.1 letgut base citation style]
+#+begin_src latex :tangle ../../../tex/lualatex/letgut/letgut.cbx :exports both
+  \ProvidesFile{letgut.cbx}[2022-06-18 v0.9.2 letgut base citation style]
   \RequireCitationStyle{numeric}
 #+end_src
 
@@ -3278,13 +3793,13 @@
 The books reviewed have their titles not only emphasized, but in bold face as
 well...
 
-#+begin_src latex :tangle letgut.cbx :exports both
+#+begin_src latex :tangle ../../../tex/lualatex/letgut/letgut.cbx :exports both
   \DeclareFieldFormat[bookreview]{title}{\textbf{\emph{#1}}}
 #+end_src
 
 ... but not their subtitles.
 
-#+begin_src latex :tangle letgut.cbx :exports both
+#+begin_src latex :tangle ../../../tex/lualatex/letgut/letgut.cbx :exports both
   \renewbibmacro*{title}{%
     \ifboolexpr{
       test {\iffieldundef{title}}
@@ -3304,7 +3819,9 @@
 
 ** Example file of an issue of the newsletter
 
- #+begin_src latex :tangle lettre-example.tex :exports both
+ #+begin_src latex :tangle ../../../doc/lualatex/letgut/lettre-example.tex :exports both
+   % Hey, Emacs!  This is a -*- mode: latex -*- file!
+
    \documentclass{letgut}
 
    \letgutsetup{
@@ -3366,6 +3883,13 @@
      % % `informations=false`.
      %
      % , informations=false
+     %
+     % % Lors de la conception d'un numéro de la Lettre,
+     % % il peut être utile d'avoir un plan détaillé au
+     % % maximum de l'ensemble du document. C'est ce que
+     % % permet l'option `detailedtoc`.
+     %
+     % , detailedtoc
    }
 
    \setmainfont{TeX Gyre Schola} % Par exemple
@@ -3380,7 +3904,6 @@
    \end{document}
 
    %%% Local Variables:
-   %%% mode: latex
    %%% TeX-engine: luatex
    %%% TeX-master: t
    %%% End:
@@ -3388,7 +3911,7 @@
 
 ** Example of an editorial
 
- #+begin_src latex :tangle editorial.tex :exports both
+ #+begin_src latex :tangle ../../../doc/lualatex/letgut/editorial.tex :exports both
    Ceci est un intéressant éditorial de la \lettregut{}
    dans lequel on peut causer de l'\ag{} et du \ca{}
    de l'association. Il peut aussi y être question du \ctan.
@@ -3407,7 +3930,9 @@
 
 ** Informations about \gutenberg
 
- #+begin_src latex :tangle informations-gut.tex :exports both
+ #+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}
@@ -3418,24 +3943,24 @@
      \end{minipage}%
    }%
    \hfill%
-   \begin{minipage}[t]{.4\textwidth}%\vspace{0pt}%
+   \begin{minipage}[t]{.5\textwidth}%\vspace{0pt}%
      \footnotesize\raggedleft%
      Association \gut{}\\
      15 rue des Halles -- \textsc{bp} 74\\
      75001 Paris\\
      France\\
-     \nolinkurl{secretariat at gutenberg.eu.org}
+     \url{secretariat[at]gutenberg[dot]eu[dot]org}
    \end{minipage}%
 
    \begin{description}
-   \item[Site internet :] \url{https://www.gutenberg.eu.org/}
-   \item[\Cahiers{} :] \url{http://cahiers.gutenberg.eu.org/}
+   \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.eu.org/-Listes-de-diffusion-}
-     \item[le site \TeX nique de questions et réponses :]
+       \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.eu.org}
@@ -3443,9 +3968,9 @@
    \end{description}
    %
    \alertbox{%
-     Cette association est la vôtre: faites-nous part de
+     Cette association est la vôtre : faites-nous part de
      vos idées, de vos envies, de vos préoccupations
-     à l'adresse \nolinkurl{secretariat at gutenberg.eu.org}.%
+     à l'adresse \url{secretariat[at]gutenberg[dot]eu[dot]org}.%
    }
 
    % \section[Association GUTenberg (tout sur l')]
@@ -3468,19 +3993,20 @@
      %   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
-   \emph{\acs{tug}boat} à un tarif préférentiel :
+   \tugboat{} à un tarif préférentiel :
    \begin{description}
-   \item[tarif normal :] \EUR{65} (au lieu de 85~\$)
-   \item[tarif étudiant :] \EUR{40} (au lieu de 55~\$)
+   \item[tarif normal :] 65~€ (au lieu de 85~\$)
+   \item[tarif étudiant :] 40~€ (au lieu de 55~\$)
    \end{description}
-   % (\EUR{49,50}, étudiants et demandeurs d'emploi :
-   % \EUR{29}, au lieu de 85\$ et % 65\$).  Voir
+   % (49~€50}, étudiants et demandeurs d'emploi :
+   % 29~€, au lieu de 85\$ et % 65\$).  Voir
    % \url{%
-   % https://www.gutenberg.eu.org/?Adherer-a-l-association%
+   % https://www.gutenberg-asso.fr/?Adherer-en-ligne%
    % }.
 
    \footnotesize
@@ -3489,13 +4015,13 @@
        \toprule
        \textbf{Type d'adhésion}                        & \textbf{Prix} \\
        \midrule
-       Membre individuel                               & \EUR{30}      \\
-       Membre individuel + adhésion \acs{tug}          & \EUR{95}      \\
-       Membre individuel étudiant/demandeur d'emploi   & \EUR{15}      \\
-       Membre individuel étudiant + adhésion \acs{tug} & \EUR{55}      \\
-       Association d'étudiants                         & \EUR{65}      \\
-       Organisme à but non lucratif                    & \EUR{130}     \\
-       Organisme à but lucratif                        & \EUR{229}     \\
+       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}
@@ -3506,7 +4032,7 @@
    \begin{itemize}
    \item \textbf{virement bancaire}%
      \footnote{Nous vous remercions de \textbf{privilégier}
-       le \textbf{virement bancaire}.\label{fn:1}} (IBAN :
+       le \textbf{virement bancaire}.\label{fn:1}} (\textsc{iban} :
      FR76 1870 7000 3003 0191 3568 475)%
      \leavevmode
 
@@ -3515,9 +4041,9 @@
        dans les références du virement !%
      }
    \item Paypal\footnotemark[\value{footnote}] :
-     \url{https://www.gutenberg.eu.org/?Adherer-en-ligne}
+     \url{https://www.gutenberg-asso.fr/?Adherer-en-ligne}
    \item bulletin et chèque\footnotemark[\value{footnote}] :
-     \url{https://www.gutenberg.eu.org/?Adherer-a-l-association}
+     \url{https://www.gutenberg-asso.fr/?Adherer-a-l-association}
    \end{itemize}
 
    \vfill
@@ -3544,8 +4070,8 @@
        Directeur de la publication :
        & \person{Bideault, Patrick} \\
        Comité de rédaction :
-       & {Patrick \bsc{Bideault}, Denis \bsc{Bitouzé},  \\
-         Céline \bsc{Chevalier} \& Maxime \bsc{Chupin}} \\
+       & {Patrick Bideault, Denis Bitouzé,  \\
+         Céline Chevalier \& Maxime Chupin} \\
        Adresse de la rédaction : &
        {
          Association \gut\\
@@ -3553,18 +4079,3707 @@
          75001 Paris
        }
        \\
-       \acs{issn} : & 2742-6149 (version numérique)
+       \acs{issn} : & \letgutissn
      \end{tblr}
    \end{center}
    \vfill
    \mbox{}
    \clearpage
-
-   %%% Local Variables:
-   %%% mode: latex
-   %%% End:
  #+end_src
 
-* Footnotes
+** Acronyms
 
-[fn:1]See \url{https://github.com/ho-tex/luacolor/issues/4\#issuecomment-848774260}.
+#+begin_src latex :tangle ../../../tex/lualatex/letgut/letgut-acronyms.tex :exports both
+% Hey, Emacs!  This is a -*- mode: latex -*- file!
+
+%%%%%%%%%%%%%%%%%%%%%
+% Acronymes anglais %
+%%%%%%%%%%%%%%%%%%%%%
+\letgutacro%
+{CTAN}%
+{\href{https://www.ctan.org/}{Comprehensive \hologo{TeX} Archive
+    Network}}%
+[réseau complet d'archives \hologo{TeX}]
+
+\letgutacro%
+{PDF}%
+{Portable Document Format}%
+[format de document portable]
+
+\letgutacro%
+{URL}%
+{Uniform Resource Locator}%
+[localisateur uniforme de ressource ou, plus clairement, format des
+  adresses du Web]
+
+\letgutacro%
+{ORCID}%
+{Open Researcher and Contributor \textsc{id}}%
+[identifiant ouvert pour chercheur et contributeur]
+
+\letgutacro%[extra-foreign=souvent librement traduit en \enquote{foire
+           %aux questions}]
+{FAQ}%
+{Frequently Asked Questions}%
+[questions fréquemment posées]
+
+\letgutacro%
+{SVG}%
+{Scalable Vector Graphics}%
+[graphiques vectoriels extensibles]
+
+\letgutacro%
+{DNS}%
+{Domain Name System}%
+[système de noms de domaine]
+
+\letgutacro%
+{VPS}%
+{Virtual Private Server}%
+[serveur dédié virtuel]
+
+\letgutacro%
+{LDAP}%
+{Lightweight Directory Access Protocol}%
+[protocole d'accès à répertoire léger, sytème garantissant
+  l'authentification d'utilisateurs de plusieurs services dispersés]
+
+\letgutacro%
+{OTF}%
+{Open Type Format}%
+[]
+
+\letgutacro%
+{DOI}%
+{Digital Object Identifier}%
+[identifiant numérique d'objet]
+
+\letgutacro%
+{ISSN}%
+{International Standard Serial Number}%
+[numéro international normalisé des publications en série]
+
+\letgutacro%
+{TUG}%
+{\hologo{TeX} User Group}%
+[groupe (international) d'utilisateurs de \hologo{TeX}]
+
+\letgutacro%
+{WCAG}%
+{Web Content Accessibility Guidelines}%
+[directives sur l'accessibilité du contenu Web]
+
+\letgutacro%
+{HTML}%
+{HyperText Markup Language}%
+[langage de balises pour l'hypertexte]
+
+\letgutacro%
+{CSS}%
+{Cascading Style Sheets}%
+[feuilles de style en cascade]
+
+\letgutacro%
+{UTF}%
+{Universal (Character Set) Transformation Format}%
+[format de transformation (du jeu) universel (de caractères codés)]
+
+\letgutacro%[short=\emph{Ti\emph{k}Z},short-format=\em,foreign-babel=german,foreign-locale=allemand]
+{TIKZ}%
+{Ti\emph{k}Z ist \emph{kein} Zeichenprogramm}%
+[Ti\emph{k}Z \emph{n'}est \emph{pas} un programme de dessin]
+
+\letgutacro%
+{PGF}%
+{Portable Graphics Format}%
+[format de graphiques portable]
+
+\letgutacro%
+{GPL}%
+{\textsc{gnu} General Public License}%
+[licence publique générale \textsc{gnu}]
+
+\letgutacro%
+{OFL}%
+{SIL Open Font License}%
+[]
+
+\letgutacro%
+{DVI}%
+{DeVice-Independent}%
+[indépendant du type de périphérique]
+
+\letgutacro%
+{PS}%
+{PostScript}%
+[]
+
+\letgutacro%
+{DVIPS}%
+{\acs{dvi}-to-\acs{ps} (translator)}%
+[(convertisseur) \acs{dvi} vers \acs{ps}]
+
+\letgutacro%
+{IPA}%
+{International Phonetic Alphabet}%
+[alphabet phonétique international]
+
+\letgutacro%
+{TIPA}%
+{\hologo{TeX} \acs{ipa} or Tokyo \acs{ipa}}%
+[alphabet phonétique international]
+
+\letgutacro%
+{XML}%
+{eXtensible Markup Language}%
+[langage de balisage extensible]
+
+\letgutacro%
+{APA}%
+{American Psychological Association}%
+[association américaine de psychologie]
+
+\letgutacro%
+{OS}%
+{Operating System}%
+[système d'exploitation]
+
+\letgutacro%
+{BSD}%
+{Berkeley Software Distribution}%
+[collection de logiciels de Berkeley]
+
+\letgutacro%
+{IMAP}%
+{Internet Message Access Protocol}%
+[]
+
+\letgutacro%
+{SMTP}%
+{Simple Mail Transfer Protocol}%
+[protocole simple de transfert de courrier]
+
+\letgutacro%
+{RTF}%
+{Rich Text Format}%
+[format de texte enrichi]
+
+\letgutacro%
+{WYSIWYG}%
+{What You See Is What You Get}%
+[ce que vous voyez est ce que vous obtenez]
+
+\letgutacro%
+{ISO}%
+{\href{https://www.iso.org/home.html}{International Organization for
+    Standardization}}%
+[\href{https://www.iso.org/fr/home.html}{organisation internationale de
+  normalisation}]
+
+\letgutacro%
+{OFF}%
+{Open Font Format}%
+[format de fonte ouvert]
+
+\letgutacro%
+{CSV}%
+{Comma-separated values}%
+[valeurs séparées par des virgules]
+
+\letgutacro%
+{YAML}%
+{\textsc{yaml} Ain’t Markup Language}%
+[\textsc{yaml} n'est pas un langage de balisage (acronyme récursif)]
+
+\letgutacro%
+{UCA}%
+{Unicode Collation Algorithm}%
+[algorithme de tris d'Unicode]
+
+\letgutacro%
+{NFSS}%
+{New Font Selection Scheme}%
+[nouveau schéma de sélection de fonte]
+
+\letgutacro%
+{ASCII}%
+{American Standard Code for Information Interchange}%
+[code américain normalisé pour l'échange d'information]
+
+\letgutacro%
+{TDS}%
+{\TeX{} Directory Structure}%
+[structure de répertoire de \TeX{}]
+
+%%%%%%%%%%%%%%%%%%%%%%
+% Acronymes français %
+%%%%%%%%%%%%%%%%%%%%%%
+\letgutacro%
+{SMAI}%
+{\href{http://smai.emath.fr/}{Société de Mathématiques Appliquées et
+    Industrielles}}%
+
+\letgutacro%
+{AG}%
+{Assemblée Générale}%
+
+\letgutacro%
+{CA}%
+{Conseil d'Administration}%
+
+\letgutacro%
+{SHS}%
+{Sciences Humaines et Sociales}%
+
+\letgutacro%
+{IREM}%
+{\href{https://www.univ-irem.fr/}{Instituts de Recherche sur
+    l'Enseignement des Mathématiques}}%
+
+\letgutacro%
+{MEEF}%
+{Métiers de l'Enseignement, de l'Éducation et de la Formation}%
+
+\letgutacro%
+{ECM}%
+{\href{https://texnique.fr/osqa/faq/\#custom-id-ecm}{Exemple Complet
+    Minimal}}%
+
+\letgutacro%
+{INSPÉ}%
+{\href{https://www.reseau-inspe.fr/}{Instituts Nationaux Supérieurs du
+    Professorat et de l'Éducation}}%
+
+\letgutacro%[short=\textsc{gra}pp\textsc{a},short-format=\upshape]
+{GRAppA}%
+{Groupe de recherche en Apprentissage Automatique}%
+
+\letgutacro%
+{BBB}%
+{BigBlueButton}%
+
+\letgutacro%
+{CV}%
+{Curriculum Vitæ}%
+
+\letgutacro%
+{RGPD}%
+{Règlement Général sur la Protection des Données}%
+
+\letgutacro%
+{NDLR}%
+{Note de la Rédaction}%
+
+\letgutacro%
+{BTS}%
+{Brevet de Technicien Supérieur}%
+
+\letgutacro%
+{APMEP}%
+{Association des Professeurs de Mathématiques de l'Enseignement Public}%
+
+\letgutacro%
+{PAO}%
+{Publication Assistée par Ordinateur}%
+#+end_src
+
+** Language driver file
+
+#+begin_src latex :tangle ../../../tex/lualatex/letgut/letgut-lstlang.sty :exports both
+   % \lst at definelanguage[...]{TeX}{%
+   %   % Control sequences names
+   %   moretexcs={%
+   %   },%
+   %   % Keywords of class 1 : keywords that contain other characters
+   %   % (since of the same class as the ones specified as 'otherkeywords')
+   %   morekeywords={%
+   %   },%
+   %   % Keywords of class 2 : environments names
+   %   morekeywords=[2]{%
+   %   },%
+   %   % Keywords of class 3 : mandatory arguments (not environments) &
+   %   % optional arguments which are keys (in key=value)
+   %   morekeywords=[3]{%
+   %   },%
+   %   % Keywords of class 4 : values of keys (in key=value)
+   %   morekeywords=[4]{%
+   %   },%
+   %   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   %   % syntax)
+   %   morekeywords=[5]{%
+   %    },%
+   %   % Keywords of class 6 : current package name (and possibly derived
+   %   % packages)
+   %    morekeywords=[6]{%
+   %      %
+   %   },%
+   %   % otherkeywords={},
+   %   % alsoletter={},
+   %   % alsodigit={},%
+   %   % alsoother={},%
+   %   sensitive,%
+   % }[keywords,tex,comments%]
+
+   \lst at definelanguage[letgut]{TeX}{%
+     % Control sequences names
+     moretexcs={%
+       letgutsetup,title,subtitle,author,francophony,person,author,%
+       package,package*,class,class*,software,software*,file,file*,%
+       foreignloc,latinloc,gutenberg,gut,lettre,lettregut,Cahier,%
+       Cahiers,letgut,letgutcls,knuth,lamport,tugboat,item*,letgutacro,%
+       separator,alertbox,terminal,inputarticle,%
+     },%
+     % Keywords of class 1 : keywords that contain other characters (since
+     % of the same class as the ones specified as 'otherkeywords')
+     morekeywords={%
+     },%
+     % Keywords of class 2 : environments names
+     morekeywords=[2]{%
+       ctannews,ltx-code,ltx-code-result,ltx-code-external-result,%
+       bookreview,%
+     },%
+     % Keywords of class 3 : mandatory arguments (not environments) &
+     % optional arguments which are keys (in key=value)
+     morekeywords=[3]{%
+       for-authors,for-readers,draft,final,screen,paper,number,date,%
+       pagecolor,allcolorslinks,membership-reminder,editorial,informations,%
+       title,addon,result width,reference,text,title,reviewer,bibkey,%
+       frontcover,price,result,and,%
+     },%
+     % Keywords of class 4 : values of keys (in key=value)
+     morekeywords=[4]{%
+     },%
+     % Keywords of class 5 : arguments specifications (after ":" in expl3
+     % syntax)
+     morekeywords=[5]{%
+     },%
+     % Keywords of class 6 : current package name (and possibly derived
+     % packages)
+     morekeywords=[6]{%
+       letgut%
+     },%
+     % otherkeywords={},%
+     alsoletter={-\ },%
+     % alsodigit={},%
+     alsoother={*},%
+     % alsoother={},%
+     sensitive,%
+   }[keywords,tex,comments]%
+
+   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+   % LaTeX texcs and keywords that are missing in `listings` driver file
+   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+  \lst at definelanguage[extLaTeX]{TeX}{%
+     % Control sequences names
+     moretexcs={%
+       Huge,LARGE,Large,LoadClass,NewCommandCopy,RequirePackage,%
+       ShowCommand,abovecaptionskip,abstractname,appendix,appendixname,%
+       arraycolsep,arrayrulewidth,author,backmatter,baselinestretch,%
+       belowcaptionskip,bf,bibindent,bibname,bigskipamount,bottomfraction,%
+       brokenpenalty,cal,chapter,chaptermark,chaptername,clubpenalty,%
+       columnsep,columnseprule,contentsname,date,dblfloatpagefraction,%
+       dblfloatsep,dbltextfloatsep,dbltopfraction,descriptionlabel,%
+       displaywidowpenalty,doublerulesep,evensidemargin,fboxrule,fboxsep,%
+       figurename,floatpagefraction,floatsep,footins,footnoterule,%
+       footnotesep,footnotesize,footskip,frontmatter,headheight,headsep,%
+       huge,indexname,indexspace,interlinepenalty,intextsep,it,jot,%
+       labelenumi,labelenumii,labelenumiii,labelenumiv,labelitemfont,%
+       labelitemi,labelitemii,labelitemiii,labelitemiv,labelsep,%
+       labelwidth,large,leftmargin,leftmargini,leftmarginii,leftmarginiii,%
+       leftmarginiv,leftmarginv,leftmarginvi,lineskip,listfigurename,%
+       listoffigures,listoftables,listtablename,mainmatter,maketitle,%
+       marginparpush,marginparsep,marginparwidth,maxdepth,medskipamount,%
+       mit,newblock,normallineskip,normalsize,oddsidemargin,paragraph,%
+       paragraphmark,parindent,parskip,part,partname,partopsep,%
+       postdisplaypenalty,predisplaypenalty,refname,rm,sc,scriptsize,%
+       section,sectionmark,setlength,sf,sl,small,smallskipamount,%
+       subitem,subparagraph,subparagraphmark,subsection,subsectionmark,%
+       subsubitem,subsubsection,subsubsectionmark,tabbingsep,tabcolsep,%
+       tablename,tableofcontents,textfloatsep,textfraction,textheight,%
+       textwidth,thechapter,theenumi,theenumii,theenumiii,theenumiv,%
+       theequation,theparagraph,thepart,thesection,thesubparagraph,%
+       thesubsection,thesubsubsection,tiny,title,today,topfraction,%
+       topmargin,topskip,tt,widowpenalty,%
+     },%
+     % Keywords of class 1 : keywords that contain other characters (since
+     % of the same class as the ones specified as 'otherkeywords')
+     morekeywords={%
+     },%
+     % Keywords of class 2 : environments names
+     morekeywords=[2]{%
+       abstract,array,center,description,displaymath,document,enumerate,%
+       eqnarray,equation,figure,flushleft,flushright,itemize,list,lrbox,math,%
+       minipage,picture,quotation,quote,sloppypar,tabbing,table,tabular,%
+       thebibliography,theindex,titlepage,trivlist,verbatim,verse,%
+     },%
+     % Keywords of class 3 : mandatory arguments (not environments) &
+     % optional arguments which are keys (in key=value)
+     morekeywords=[3]{%
+       % c,cc,ccc,cccc,X,l,
+       empty,%
+     },%
+     % Keywords of class 4 : values of keys (in key=value)
+     morekeywords=[4]{%
+     },%
+     % Keywords of class 5 : arguments specifications (after ":" in expl3
+     % syntax)
+     morekeywords=[5]{%
+     },%
+     % Keywords of class 6 : current package name (and possibly derived
+     % packages)
+     morekeywords=[6]{%
+       %
+     },
+     otherkeywords={|},%
+     % alsoletter={},% alsodigit={},%
+     % alsoother={},%
+     sensitive,%
+   }[keywords,tex,comments]%
+
+   \lst at definelanguage[listings]{TeX}{%
+     % Control sequences names
+     moretexcs={%
+       lstDeleteShortInline,lstMakeShortInline,lstalias,lstaspectfiles,%
+       lstdefineformat,lstdefinelanguage,lst at definelanguage,lstdefinestyle,%
+       lstindexmacro,lstinline,lstinputlisting,lstlanguagefiles,%
+       lstlgrindeffile,lstlistingname,lstlistingnamestyle,%
+       lstlistlistingname,lstlistoflistings,lstloadlanguages,lstname,%
+       lstnewenvironment,lstset,theHlstnumber,thelstlabel,thelstlisting,%
+       thelstnumber,%
+     },%
+     % Keywords of class 1 : keywords that contain other characters (since
+     % of the same class as the ones specified as 'otherkeywords')
+     morekeywords={%
+     },%
+     % Keywords of class 2 : environments names
+     morekeywords=[2]{%
+       lstlisting,%
+     },%
+     % Keywords of class 3 : mandatory arguments (not environments) &
+     % optional arguments which are keys (in key=value)
+     morekeywords=[3]{%
+       0.21,ABAP,ACM,ACMscript,ACSL,Ada,Algol,Ant,Assembler,Awk,%
+       Basic,C,C++,CIL,Caml,Clean,Cobol,Comal 80,Comsol,Delphi,%
+       Eiffel,Elan,Euphoria,Fortran,GAP,GCL,Gnuplot,Go,HTML,Haskell,%
+       IDL,JVMIS,Java,LLVM,Lingo,Lisp,Logo,Lua,ML,Mathematica,Matlab,%
+       Mercury,MetaPost,Miranda,Mizar,Modula-2,MuPAD,NASTRAN,OCL,%
+       OORexx,Oberon-2,Octave,Oz,PHP,PL/I,POV,PSTricks,Pascal,Perl,%
+       Plasm,PostScript,Prolog,Promela,Python,R,RSL,Reduce,Rexx,Ruby,%
+       S,SAS,SHELXL,SPARQL,SQL,Scala,Scilab,Simula,Swift,TeX,%
+       VBScript,VHDL,VRML,Verilog,XML,XSLT,[03]Fortran,[08]Fortran,%
+       [1.0]Mathematica,[11.0]Mathematica,[11]C++,[1974]Cobol,[1985]Cobol,%
+       [2005]Ada,[3.0]Mathematica,[5.0]Lua,[5.1]Lua,[5.2]Lua,%
+       [5.2]Mathematica,[5.3]Lua,[60]Algol,[67]Simula,[68]Algol,%
+       [77]Fortran,[83]Ada,[90]Fortran,[95]Ada,[95]Fortran,[97]VRML,%
+       [AMS]VHDL,[ANSI]C,[ANSI]C++,[AlLaTeX]TeX,[AspectJ]Java,[Auto]Lisp,%
+       [Borland6]Pascal,[CII]Simula,[CORBA]IDL,[DEC]Simula,[GNU]C++,%
+       [Handel]C,[IBM]Simula,[ISO]C++,[LaTeX]TeX,[Motorola68k]Assembler,%
+       [OMG]OCL,[Objective]C,[Objective]Caml,[PLUS]S,[POSIX]Awk,[R/2
+       4.3]ABAP,[R/2 5.0]ABAP,[R/3 3.1]ABAP,[R/3 4.6C]ABAP,[R/3 6.10]ABAP,%
+       [Sharp]C,[Standard]Pascal,[VM/XA]Rexx,[Visual]Basic,[Visual]C++,%
+       [WinXP]command.com,[XSC]Pascal,[common]TeX,[decorative]OCL,%
+       [empty]IDL,[empty]Java,[empty]Lisp,[empty]Rexx,[empty]S,%
+       [empty]VHDL,[empty]make,[empty]tcl,[gnu]Awk,[gnu]make,[ibm]Cobol,%
+       [light]Caml,[plain]TeX,[primitive]TeX,[tk]tcl,[x86masm]Assembler,%
+       abovecaptionskip,aboveskip,alsodigit,alsolanguage,alsoletter,%
+       alsoother,backgroundcolor,basewidth,bash,basicstyle,%
+       belowcaptionskip,belowskip,boxpos,breakatwhitespace,breakautoindent,%
+       breakindent,breaklines,caption,captionpos,classoffset,columns,%
+       command.com,comment,comments,commentstyle,consecutivenumbers,csh,%
+       defaultdialect,deletecomment,deletedelim,deletedirectives,%
+       deleteemph,deleteendkeywords,deletehyperref,deleteindex,%
+       deletekeywordcomment,deletekeywords,deleteprocnamekeys,deletestring,%
+       deletetxcs,delim,directives,directivestyle,draft,elisp,emph,%
+       emphstyle,emptylines,erlang,escapebegin,escapechar,escapeend,%
+       escapeinside,extendedchars,fancyvrb,fillcolor,final,firstline,%
+       firstnumber,flexiblecolumns,float,floatplacement,fontadjust,%
+       formats,formfeed,frame,frameround,framerule,framesep,frameshape,%
+       framexbottommargin,framexleftmargin,framexrightmargin,%
+       framextopmargin,fvcmdparams,gobble,hansl,hyper,hyperanchor,%
+       hyperlink,hyperref,identifierstyle,includerangemarker,index,%
+       indexprocnames,indexstyle,inform,inputencoding,inputpath,%
+       keepspaces,keywordcomment,keywordcommentsemicolon,keywords,%
+       keywordsprefix,keywordstyle,ksh,label,language,lastline,lgrind,%
+       lgrindef,linerange,lineskip,linewidth,literate,make,makemacrouse,%
+       markfirstintag,mathescape,morecomment,moredelim,moredirectives,%
+       moreemph,moreendkeywords,morefvcmdparams,morehyperref,moreindex,%
+       morekeywordcomment,morekeywords,moreprocnamekeys,morestring,%
+       moretexcs,multicols,name,ndkeywords,ndkeywordstyle,noaspects,%
+       nolol,numberblanklines,numberbychapter,numberfirstline,numbers,%
+       numbersep,numberstyle,otherkeywords,podcomment,postbreak,prebreak,%
+       print,printpod,procnamekeys,procnames,procnamestyle,%
+       rangebeginprefix,rangebeginsuffix,rangeendprefix,rangeendsuffix,%
+       rangeprefix,rangesuffix,resetmargins,rulecolor,rulesep,%
+       rulesepcolor,savemem,sensitive,%
+       sh,showlines,showspaces,showstringspaces,showtabs,stepnumber,%
+       string,stringstyle,style,tab,tabsize,tag,tagstyle,tcl,texcl,%
+       texcs,texcsstyle,title,upquote,usekeywordsintag,xleftmargin,%
+       xrightmargin,LaTeX,TeX,tex%
+     },%
+     % Keywords of class 4 : values of keys (in key=value)
+     morekeywords=[4]{%
+       b,c,t,none,left,right,%
+     },%
+     % Keywords of class 5 : arguments specifications (after ":" in expl3
+     % syntax)
+     morekeywords=[5]{%
+     },%
+     % Keywords of class 6 : current package name (and possibly derived
+     % packages)
+     morekeywords=[6]{%
+       listings,%
+     },%
+     % otherkeywords={},%
+     alsoletter={@021.[]},%
+     % alsodigit={},%
+     % alsoother={},%
+     sensitive,%
+   }[keywords,tex,comments]%
+
+   \lst at definelanguage[xcolor]{TeX}{%
+     % Control sequences names
+     moretexcs={%
+       color,pagecolor,definecolor,colorlet,textcolor,%
+     },%
+     % Keywords of class 1 : keywords that contain other characters (since
+     % of the same class as the ones specified as 'otherkeywords')
+     morekeywords={%
+     },%
+     % Keywords of class 2 : environments names
+     morekeywords=[2]{%
+     },%
+     % Keywords of class 3 : mandatory arguments (not environments) &
+     % optional arguments which are keys (in key=value)
+     morekeywords=[3]{%
+       red,green,blue,cyan,magenta,yellow,black,gray,white,darkgray,%
+       lightgray,brown,lime,olive,orange,pink,purple,teal,violet },%
+     % Keywords of class 4 : values of keys (in key=value)
+     morekeywords=[4]{%
+     },%
+     % Keywords of class 5 : arguments specifications (after ":" in expl3
+     % syntax)
+     morekeywords=[5]{%
+     },%
+     % Keywords of class 6 : current package name (and possibly derived
+     % packages)
+     morekeywords=[6]{%
+       xcolor },%
+     % otherkeywords={},
+     % alsoletter={},
+     % alsodigit={},%
+     % alsoother={},%
+     sensitive,%
+   }[keywords,tex,comments]%
+
+   \lst at definelanguage[expl3]{TeX}{%
+     % Control sequences names
+     moretexcs={%
+       .bool_gset,%
+       ExplFileDate,ExplFileDescription,ExplFileName,ExplFileVersion,%
+       ExplSyntaxOff,ExplSyntaxOn,GetIdInfo,ProvidesExplClass,%
+       ProvidesExplFile,ProvidesExplPackage,bool_case_false,bool_case_true,%
+       bool_const,bool_do_until,bool_do_while,bool_gset,bool_gset_eq,%
+       bool_gset_false,bool_gset_inverse,bool_gset_true,bool_if,%
+       bool_if_exist,bool_if_exist_p,bool_if_p,bool_lazy_all,%
+       bool_lazy_all_p,bool_lazy_and,bool_lazy_and_p,bool_lazy_any,%
+       bool_lazy_any_p,bool_lazy_or,bool_lazy_or_p,bool_log,bool_new,%
+       bool_not_p,bool_set,bool_set_eq,bool_set_false,bool_set_inverse,%
+       bool_set_true,bool_show,bool_to_str,bool_until_do,bool_while_do,%
+       bool_xor,bool_xor_p,box_autosize_to_wd_and_ht,%
+       box_autosize_to_wd_and_ht_plus_dp,box_clear,box_clear_new,box_clip,%
+       box_dp,box_gautosize_to_wd_and_ht,box_gautosize_to_wd_and_ht_plus_dp,%
+       box_gclear,box_gclear_new,box_gclip,box_gresize_to_ht,%
+       box_gresize_to_ht_plus_dp,box_gresize_to_wd,box_gresize_to_wd_and_ht,%
+       box_gresize_to_wd_and_ht_plus_dp,box_grotate,box_gscale,box_gset_dp,%
+       box_gset_eq,box_gset_eq_drop,box_gset_ht,box_gset_to_last,%
+       box_gset_trim,box_gset_viewport,box_gset_wd,box_ht,box_ht_plus_dp,%
+       box_if_empty,box_if_empty_p,box_if_exist,box_if_exist_p,%
+       box_if_horizontal,box_if_horizontal_p,box_if_vertical,%
+       box_if_vertical_p,box_log,box_move_down,box_move_left,%
+       box_move_right,box_move_up,box_new,box_resize_to_ht,%
+       box_resize_to_ht_plus_dp,box_resize_to_wd,box_resize_to_wd_and_ht,%
+       box_resize_to_wd_and_ht_plus_dp,box_rotate,box_scale,box_set_dp,%
+       box_set_eq,box_set_eq_drop,box_set_ht,box_set_to_last,box_set_trim,%
+       box_set_viewport,box_set_wd,box_show,box_use,box_use_drop,box_wd,%
+       c_alignment_token,c_ampersand_str,c_atsign_str,c_backslash_str,%
+       c_catcode_active_space_tl,c_catcode_active_tl,c_catcode_letter_token,%
+       c_catcode_other_space_tl,c_catcode_other_token,c_circumflex_str,%
+       c_code_cctab,c_colon_str,c_document_cctab,c_dollar_str,c_e_fp,%
+       c_empty_box,c_empty_clist,c_empty_coffin,c_empty_prop,c_empty_seq,%
+       c_empty_tl,c_false_bool,c_group_begin_token,c_group_end_token,%
+       c_hash_str,c_inf_fp,c_initex_cctab,c_left_brace_str,c_log_iow,%
+       c_math_subscript_token,c_math_superscript_token,c_math_toggle_token,%
+       c_max_char_int,c_max_dim,c_max_int,c_max_muskip,c_max_register_int,%
+       c_max_skip,c_minus_inf_fp,c_minus_zero_fp,c_nan_fp,c_novalue_tl,%
+       c_one_degree_fp,c_one_fp,c_one_int,c_other_cctab,c_parameter_token,%
+       c_percent_str,c_pi_fp,c_right_brace_str,c_space_tl,c_space_token,%
+       c_str_cctab,c_sys_backend_str,c_sys_day_int,c_sys_engine_exec_str,%
+       c_sys_engine_format_str,c_sys_engine_str,c_sys_engine_version_str,%
+       c_sys_hour_int,c_sys_jobname_str,c_sys_minute_int,c_sys_month_int,%
+       c_sys_output_str,c_sys_platform_str,c_sys_shell_escape_int,%
+       c_sys_year_int,c_term_iow,c_tilde_str,c_true_bool,c_underscore_str,%
+       c_zero_dim,c_zero_fp,c_zero_int,c_zero_muskip,c_zero_skip,%
+       c_zero_str,cctab_begin,cctab_const,cctab_end,cctab_gset,%
+       cctab_if_exist,cctab_if_exist_p,cctab_item,cctab_new,cctab_select,%
+       char_foldcase,char_generate,char_gset_active_eq,char_lowercase,%
+       char_set_active_eq,char_set_catcode,char_set_catcode_active,%
+       char_set_catcode_alignment,char_set_catcode_comment,%
+       char_set_catcode_end_line,char_set_catcode_escape,%
+       char_set_catcode_group_begin,char_set_catcode_group_end,%
+       char_set_catcode_ignore,char_set_catcode_invalid,%
+       char_set_catcode_letter,char_set_catcode_math_subscript,%
+       char_set_catcode_math_superscript,char_set_catcode_math_toggle,%
+       char_set_catcode_other,char_set_catcode_parameter,%
+       char_set_catcode_space,char_set_lccode,char_set_mathcode,%
+       char_set_sfcode,char_set_uccode,char_show_value_catcode,%
+       char_show_value_lccode,char_show_value_mathcode,%
+       char_show_value_sfcode,char_show_value_uccode,char_str_foldcase,%
+       char_str_lowercase,char_str_titlecase,char_str_uppercase,%
+       char_titlecase,char_to_nfd,char_to_utfviii_bytes,char_uppercase,%
+       char_value_catcode,char_value_lccode,char_value_mathcode,%
+       char_value_sfcode,char_value_uccode,clist_clear,clist_clear_new,%
+       clist_concat,clist_const,clist_count,clist_gclear,clist_gclear_new,%
+       clist_gconcat,clist_get,clist_gpop,clist_gpush,clist_gput_left,%
+       clist_gput_right,clist_gremove_all,clist_gremove_duplicates,%
+       clist_greverse,clist_gset,clist_gset_eq,clist_gset_from_seq,%
+       clist_gsort,clist_if_empty,clist_if_empty_p,clist_if_exist,%
+       clist_if_exist_p,clist_if_in,clist_item,clist_log,clist_map_break,%
+       clist_map_function,clist_map_inline,clist_map_tokens,%
+       clist_map_variable,clist_new,clist_pop,clist_push,clist_put_left,%
+       clist_put_right,clist_rand_item,clist_remove_all,%
+       clist_remove_duplicates,clist_reverse,clist_set,clist_set_eq,%
+       clist_set_from_seq,clist_show,clist_sort,clist_use,coffin_attach,%
+       coffin_clear,coffin_display_handles,coffin_dp,coffin_gattach,%
+       coffin_gclear,coffin_gjoin,coffin_gresize,coffin_grotate,%
+       coffin_gscale,coffin_gset_eq,coffin_gset_horizontal_pole,%
+       coffin_gset_vertical_pole,coffin_ht,coffin_if_exist,%
+       coffin_if_exist_p,coffin_join,coffin_log,coffin_log_structure,%
+       coffin_mark_handle,coffin_new,coffin_resize,coffin_rotate,%
+       coffin_scale,coffin_set_eq,coffin_set_horizontal_pole,%
+       coffin_set_vertical_pole,coffin_show,coffin_show_structure,%
+       coffin_typeset,coffin_wd,color_ensure_current,color_export,%
+       color_fill,color_group_begin,color_group_end,color_log,color_math,%
+       color_model_new,color_profile_apply,color_select,color_set,%
+       color_set_eq,color_show,color_stroke,cs_argument_spec,cs,cs_end,%
+       cs_generate_from_arg_count,cs_generate_variant,cs_gset,cs_gset_eq,%
+       cs_gset_nopar,cs_gset_protected,cs_gset_protected_nopar,cs_if_eq,%
+       cs_if_eq_p,cs_if_exist,cs_if_exist_p,cs_if_exist_use,cs_if_free,%
+       cs_if_free_p,cs_log,cs_meaning,cs_new,cs_new_eq,cs_new_nopar,%
+       cs_new_protected,cs_new_protected_nopar,cs_prefix_spec,%
+       cs_replacement_spec,cs_set,cs_set_eq,cs_set_nopar,cs_set_protected,%
+       cs_set_protected_nopar,cs_show,cs_split_function,cs_to_str,%
+       cs_undefine,debug_off,debug_on,debug_resume,debug_suspend,dim_abs,%
+       dim_add,dim_case,dim_compare,dim_compare_p,dim_const,dim_do_until,%
+       dim_do_while,dim_eval,dim_gadd,dim_gset,dim_gset_eq,dim_gsub,%
+       dim_gzero,dim_gzero_new,dim_if_exist,dim_if_exist_p,dim_log,%
+       dim_max,dim_min,dim_new,dim_ratio,dim_set,dim_set_eq,dim_show,%
+       dim_sign,dim_step_function,dim_step_inline,dim_step_variable,%
+       dim_sub,dim_to_decimal,dim_to_decimal_in_bp,dim_to_decimal_in_sp,%
+       dim_to_decimal_in_unit,dim_to_fp,dim_until_do,dim_use,dim_while_do,%
+       dim_zero,dim_zero_new,draw_begin,draw_end,else,exp_after,exp_args,%
+       exp_args_generate,exp_end,exp_end_continue_f,exp_last_two_unbraced,%
+       exp_last_unbraced,exp_not,exp_stop_f,expandafter,expanded,fi,%
+       file_compare_timestamp,file_compare_timestamp_p,file_full_name,%
+       file_get,file_get_full_name,file_get_hex_dump,file_get_mdfive_hash,%
+       file_get_size,file_get_timestamp,file_hex_dump,file_if_exist,%
+       file_if_exist_input,file_input,file_input_stop,file_log_list,%
+       file_mdfive_hash,file_parse_full_name,file_parse_full_name_apply,%
+       file_show_list,file_size,file_timestamp,flag_clear,flag_clear_new,%
+       flag_height,flag_if_exist,flag_if_exist_p,flag_if_raised,%
+       flag_if_raised_p,flag_log,flag_new,flag_raise,flag_raise_if_clear,%
+       flag_show,fp_abs,fp_add,fp_compare,fp_compare_p,fp_const,%
+       fp_do_until,fp_do_while,fp_eval,fp_format,fp_gadd,fp_gset,%
+       fp_gset_eq,fp_gsub,fp_gzero,fp_gzero_new,fp_if_exist,fp_if_exist_p,%
+       fp_if_nan,fp_if_nan_p,fp_log,fp_max,fp_min,fp_new,fp_set,%
+       fp_set_eq,fp_show,fp_sign,fp_step_function,fp_step_inline,%
+       fp_step_variable,fp_sub,fp_to_decimal,fp_to_dim,fp_to_int,%
+       fp_to_scientific,fp_to_tl,fp_trap,fp_until_do,fp_use,fp_while_do,%
+       fp_zero,fp_zero_new,fparray_count,fparray_gset,fparray_gzero,%
+       fparray_item,fparray_item_to_tl,fparray_new,g_file_curr_dir_str,%
+       g_file_curr_ext_str,g_file_curr_name_str,g_msg_module_name_prop,%
+       g_msg_module_type_prop,g_peek_token,g_tmpa_bool,g_tmpa_box,%
+       g_tmpa_clist,g_tmpa_coffin,g_tmpa_dim,g_tmpa_fp,g_tmpa_int,%
+       g_tmpa_ior,g_tmpa_iow,g_tmpa_muskip,g_tmpa_prop,g_tmpa_regex,%
+       g_tmpa_seq,g_tmpa_skip,g_tmpa_str,g_tmpa_tl,g_tmpb_bool,g_tmpb_box,%
+       g_tmpb_clist,g_tmpb_coffin,g_tmpb_dim,g_tmpb_fp,g_tmpb_int,%
+       g_tmpb_ior,g_tmpb_iow,g_tmpb_muskip,g_tmpb_prop,g_tmpb_regex,%
+       g_tmpb_seq,g_tmpb_skip,g_tmpb_str,g_tmpb_tl,group_align_safe_begin,%
+       group_align_safe_end,group_begin,group_end,group_insert_after,%
+       group_log_list,group_show_list,hbox,hbox_gset,hbox_gset_end,%
+       hbox_gset_to_wd,hbox_overlap_center,hbox_overlap_left,%
+       hbox_overlap_right,hbox_set,hbox_set_end,hbox_set_to_wd,hbox_to_wd,%
+       hbox_to_zero,hbox_unpack,hbox_unpack_drop,hcoffin_gset,%
+       hcoffin_gset_end,hcoffin_set,hcoffin_set_end,if,if_bool,%
+       if_box_empty,if_case,if_catcode,if_charcode,if_cs_exist,if_dim,%
+       if_eof,if_false,if_hbox,if_int_compare,if_int_odd,if_meaning,%
+       if_mode_horizontal,if_mode_inner,if_mode_math,if_mode_vertical,%
+       if_predicate,if_true,if_vbox,int_abs,int_add,int_case,int_compare,%
+       int_compare_p,int_const,int_decr,int_div_round,int_div_truncate,%
+       int_do_until,int_do_while,int_eval,int_from_alph,int_from_base,%
+       int_from_bin,int_from_hex,int_from_oct,int_from_roman,int_gadd,%
+       int_gdecr,int_gincr,int_gset,int_gset_eq,int_gsub,int_gzero,%
+       int_gzero_new,int_if_even,int_if_even_p,int_if_exist,int_if_exist_p,%
+       int_if_odd,int_if_odd_p,int_incr,int_log,int_max,int_min,int_mod,%
+       int_new,int_rand,int_set,int_set_eq,int_show,int_sign,%
+       int_step_...,int_step_function,int_step_inline,int_step_variable,%
+       int_sub,int_to_Alph,int_to_Base,int_to_Hex,int_to_Roman,%
+       int_to_alph,int_to_arabic,int_to_base,int_to_bin,int_to_hex,%
+       int_to_oct,int_to_roman,int_to_symbols,int_until_do,int_use,%
+       int_value,int_while_do,int_zero,int_zero_new,%
+       intarray_const_from_clist,intarray_count,intarray_gset,%
+       intarray_gset_rand,intarray_gzero,intarray_item,intarray_log,%
+       intarray_new,intarray_rand_item,intarray_show,intarray_to_clist,%
+       ior_close,ior_get,ior_get_term,ior_if_eof,ior_if_eof_p,ior_log,%
+       ior_log_list,ior_map_break,ior_map_inline,ior_map_variable,ior_new,%
+       ior_open,ior_shell_open,ior_show,ior_show_list,ior_str_get,%
+       ior_str_get_term,ior_str_map_inline,ior_str_map_variable,%
+       iow_allow_break,iow_char,iow_close,iow_indent,iow_log,iow_log_list,%
+       iow_new,iow_newline,iow_now,iow_open,iow_shipout,iow_shipout_x,%
+       iow_show,iow_show_list,iow_term,iow_wrap,keys_define,%
+       keys_if_choice_exist,keys_if_choice_exist_p,keys_if_exist,%
+       keys_if_exist_p,keys_log,keys_set,keys_set_filter,keys_set_groups,%
+       keys_set_known,keys_show,keyval_parse,l_char_active_seq,%
+       l_char_special_seq,l_color_fixed_model_tl,l_color_math_active_tl,%
+       l_file_search_path_seq,l_iow_line_count_int,l_keys_choice_int,%
+       l_keys_choice_tl,l_keys_key_str,l_keys_path_str,%
+       l_keys_usage_load_prop,l_keys_usage_preamble_prop,l_keys_value_tl,%
+       l_my_int,l_peek_token,l_text_accents_tl,l_text_case_exclude_arg_tl,%
+       l_text_expand_exclude_tl,l_text_letterlike_tl,l_text_math_arg_tl,%
+       l_text_math_delims_tl,l_text_titlecase_check_letter_bool,l_tmpa_bool,%
+       l_tmpa_box,l_tmpa_clist,l_tmpa_coffin,l_tmpa_dim,l_tmpa_fp,%
+       l_tmpa_int,l_tmpa_muskip,l_tmpa_prop,l_tmpa_regex,l_tmpa_seq,%
+       l_tmpa_skip,l_tmpa_str,l_tmpa_tl,l_tmpb_bool,l_tmpb_box,%
+       l_tmpb_clist,l_tmpb_coffin,l_tmpb_dim,l_tmpb_fp,l_tmpb_int,%
+       l_tmpb_muskip,l_tmpb_prop,l_tmpb_regex,l_tmpb_seq,l_tmpb_skip,%
+       l_tmpb_str,l_tmpb_tl,legacy_if,legacy_if_gset,legacy_if_gset_false,%
+       legacy_if_gset_true,legacy_if_p,legacy_if_set,legacy_if_set_false,%
+       legacy_if_set_true,lua_escape,lua_now,lua_shipout,lua_shipout_e,%
+       mode_if_horizontal,mode_if_horizontal_p,mode_if_inner,%
+       mode_if_inner_p,mode_if_math,mode_if_math_p,mode_if_vertical,%
+       mode_if_vertical_p,mode_leave_vertical,msg_critical,%
+       msg_critical_text,msg_error,msg_error_text,msg_expandable_error,%
+       msg_fatal,msg_fatal_text,msg_gset,msg_if_exist,msg_if_exist_p,%
+       msg_info,msg_info_text,msg_line_context,msg_line_number,msg_log,%
+       msg_log_eval,msg_module_name,msg_module_type,msg_new,msg_none,%
+       msg_note,msg_redirect_class,msg_redirect_module,msg_redirect_name,%
+       msg_see_documentation_text,msg_set,msg_show,msg_show_eval,%
+       msg_show_item,msg_show_item_unbraced,msg_term,msg_warning,%
+       msg_warning_text,muskip_add,muskip_const,muskip_eval,muskip_gadd,%
+       muskip_gset,muskip_gset_eq,muskip_gsub,muskip_gzero,%
+       muskip_gzero_new,muskip_if_exist,muskip_if_exist_p,muskip_log,%
+       muskip_new,muskip_set,muskip_set_eq,muskip_show,muskip_sub,%
+       muskip_use,muskip_zero,muskip_zero_new,pdf_destination,%
+       pdf_object_if_exist,pdf_object_if_exist_p,pdf_object_new,%
+       pdf_object_ref,pdf_object_ref_last,pdf_object_unnamed_write,%
+       pdf_object_write,pdf_pageobject_ref,pdf_pagobject_ref,pdf_uncompress,%
+       pdf_version,pdf_version_compare,pdf_version_compare_p,%
+       pdf_version_gset,pdf_version_major,pdf_version_min_gset,%
+       pdf_version_minor,peek_N_type,peek_after,peek_analysis_map_break,%
+       peek_analysis_map_inline,peek_catcode,peek_catcode_collect_inline,%
+       peek_catcode_remove,peek_charcode,peek_charcode_collect_inline,%
+       peek_charcode_remove,peek_gafter,peek_meaning,%
+       peek_meaning_collect_inline,peek_meaning_remove,peek_regex,%
+       peek_regex_remove_once,peek_regex_replace_once,peek_remove_filler,%
+       peek_remove_spaces,prg_break,prg_break_point,prg_do_nothing,%
+       prg_generate_conditional_variant,prg_map_break,prg_new_conditional,%
+       prg_new_eq_conditional,prg_new_protected_conditional,prg_replicate,%
+       prg_return_false,prg_return_true,prg_set_conditional,%
+       prg_set_eq_conditional,prg_set_protected_conditional,prop_clear,%
+       prop_clear_new,prop_concat,prop_const_from_keyval,prop_count,%
+       prop_gclear,prop_gclear_new,prop_gconcat,prop_get,prop_gpop,%
+       prop_gput,prop_gput_from_keyval,prop_gput_if_new,prop_gremove,%
+       prop_gset_eq,prop_gset_from_keyval,prop_if_empty,prop_if_empty_p,%
+       prop_if_exist,prop_if_exist_p,prop_if_in,prop_if_in_p,prop_item,%
+       prop_log,prop_map_break,prop_map_function,prop_map_inline,%
+       prop_map_tokens,prop_new,prop_pop,prop_put,prop_put_from_keyval,%
+       prop_put_if_new,prop_rand_key_value,prop_remove,prop_set_eq,%
+       prop_set_from_keyval,prop_show,prop_to_keyval,q_mark,q_nil,%
+       q_no_value,q_recursion_stop,q_recursion_tail,q_stop,quark_if_nil,%
+       quark_if_nil_p,quark_if_no_value,quark_if_no_value_p,%
+       quark_if_recursion_tail_break,quark_if_recursion_tail_stop,%
+       quark_if_recursion_tail_stop_do,quark_new,regex_const,regex_count,%
+       regex_extract_all,regex_extract_once,regex_gset,regex_log,%
+       regex_match,regex_match_case,regex_new,regex_replace,%
+       regex_replace_all,regex_replace_case_all,regex_replace_case_once,%
+       regex_replace_once,regex_set,regex_show,regex_split,reverse_if,%
+       s_stop,scan_new,scan_stop,seq_clear,seq_clear_new,seq_concat,%
+       seq_const_from_clist,seq_count,seq_gclear,seq_gclear_new,%
+       seq_gconcat,seq_get,seq_get_left,seq_get_right,seq_gpop,%
+       seq_gpop_item,seq_gpop_left,seq_gpop_right,seq_gpush,seq_gput_left,%
+       seq_gput_right,seq_gremove_all,seq_gremove_duplicates,seq_greverse,%
+       seq_gset_eq,seq_gset_filter,seq_gset_from_clist,%
+       seq_gset_from_function,seq_gset_from_inline_x,seq_gset_item,%
+       seq_gset_map,seq_gset_map_x,seq_gset_split,%
+       seq_gset_split_keep_spaces,seq_gshuffle,seq_gsort,seq_if_empty,%
+       seq_if_empty_p,seq_if_exist,seq_if_exist_p,seq_if_in,seq_item,%
+       seq_log,seq_map_break,seq_map_function,seq_map_indexed_function,%
+       seq_map_indexed_inline,seq_map_inline,seq_map_tokens,%
+       seq_map_variable,seq_mapthread_function,seq_new,seq_pop,%
+       seq_pop_item,seq_pop_left,seq_pop_right,seq_push,seq_put_left,%
+       seq_put_right,seq_rand_item,seq_remove_all,seq_remove_duplicates,%
+       seq_reverse,seq_set_eq,seq_set_filter,seq_set_from_clist,%
+       seq_set_from_function,seq_set_from_inline_x,seq_set_item,seq_set_map,%
+       seq_set_map_x,seq_set_split,seq_set_split_keep_spaces,seq_show,%
+       seq_shuffle,seq_sort,seq_use,skip_add,skip_const,skip_eval,%
+       skip_gadd,skip_gset,skip_gset_eq,skip_gsub,skip_gzero,%
+       skip_gzero_new,skip_horizontal,skip_if_eq,skip_if_eq_p,%
+       skip_if_exist,skip_if_exist_p,skip_if_finite,skip_if_finite_p,%
+       skip_log,skip_new,skip_set,skip_set_eq,skip_show,skip_sub,%
+       skip_use,skip_vertical,skip_zero,skip_zero_new,sort_return_same,%
+       sort_return_swapped,str_case,str_case_e,str_clear,str_clear_new,%
+       str_compare,str_compare_p,str_concat,str_const,str_convert_pdfname,%
+       str_count,str_count_ignore_spaces,str_count_spaces,str_foldcase,%
+       str_gclear,str_gconcat,str_gput_left,str_gput_right,str_gremove_all,%
+       str_gremove_once,str_greplace_all,str_greplace_once,str_gset,%
+       str_gset_convert,str_gset_eq,str_head,str_head_ignore_spaces,%
+       str_if_empty,str_if_empty_p,str_if_eq,str_if_eq_p,str_if_exist,%
+       str_if_exist_p,str_if_in,str_item,str_item_ignore_spaces,str_log,%
+       str_lowercase,str_map_break,str_map_function,str_map_inline,%
+       str_map_tokens,str_map_variable,str_new,str_put_left,str_put_right,%
+       str_range,str_range_ignore_spaces,str_remove_all,str_remove_once,%
+       str_replace_all,str_replace_once,str_set,str_set_convert,str_set_eq,%
+       str_show,str_tail,str_tail_ignore_spaces,str_uppercase,str_use,%
+       sys_finalise,sys_get_shell,sys_gset_rand_seed,sys_if_engine_luatex,%
+       sys_if_engine_luatex_p,sys_if_engine_pdftex,sys_if_engine_pdftex_p,%
+       sys_if_engine_ptex,sys_if_engine_ptex_p,sys_if_engine_uptex,%
+       sys_if_engine_uptex_p,sys_if_engine_xetex,sys_if_engine_xetex_p,%
+       sys_if_output_dvi,sys_if_output_dvi_p,sys_if_output_pdf,%
+       sys_if_output_pdf_p,sys_if_platform_unix,sys_if_platform_unix_p,%
+       sys_if_platform_windows,sys_if_platform_windows_p,sys_if_rand_exist,%
+       sys_if_rand_exist_p,sys_if_shell,sys_if_shell_p,%
+       sys_if_shell_restricted,sys_if_shell_restricted_p,%
+       sys_if_shell_unrestricted,sys_if_shell_unrestricted_p,%
+       sys_load_backend,sys_load_debug,sys_rand_seed,sys_shell_now,%
+       sys_shell_shipout,sys_timer,text_declare_expand_equivalent,%
+       text_declare_purify_equivalent,text_expand,text_lowercase,%
+       text_purify,text_titlecase,text_titlecase_first,text_uppercase,%
+       tl_analysis_log,tl_analysis_map_inline,tl_analysis_show,%
+       tl_build_begin,tl_build_clear,tl_build_end,tl_build_gbegin,%
+       tl_build_gclear,tl_build_gend,tl_build_get,tl_build_gput_left,%
+       tl_build_gput_right,tl_build_put_left,tl_build_put_right,tl_case,%
+       tl_clear,tl_clear_new,tl_concat,tl_const,tl_count,tl_count_tokens,%
+       tl_gclear,tl_gclear_new,tl_gconcat,tl_gput_left,tl_gput_right,%
+       tl_gremove_all,tl_gremove_once,tl_greplace_all,tl_greplace_once,%
+       tl_greverse,tl_gset,tl_gset_eq,tl_gset_rescan,tl_gsort,%
+       tl_gtrim_spaces,tl_head,tl_if_blank,tl_if_blank_p,tl_if_empty,%
+       tl_if_empty_p,tl_if_eq,tl_if_eq_p,tl_if_exist,tl_if_exist_p,%
+       tl_if_head_eq_catcode,tl_if_head_eq_catcode_p,tl_if_head_eq_charcode,%
+       tl_if_head_eq_charcode_p,tl_if_head_eq_meaning,%
+       tl_if_head_eq_meaning_p,tl_if_head_is_N_type,tl_if_head_is_N_type_p,%
+       tl_if_head_is_group,tl_if_head_is_group_p,tl_if_head_is_space,%
+       tl_if_head_is_space_p,tl_if_in,tl_if_novalue,tl_if_novalue_p,%
+       tl_if_single,tl_if_single_p,tl_if_single_token,tl_if_single_token_p,%
+       tl_item,tl_log,tl_map_break,tl_map_function,tl_map_inline,%
+       tl_map_tokens,tl_map_variable,tl_new,tl_put_left,tl_put_right,%
+       tl_rand_item,tl_range,tl_range_braced,tl_range_unbraced,%
+       tl_remove_all,tl_remove_once,tl_replace_all,tl_replace_once,%
+       tl_rescan,tl_reverse,tl_reverse_items,tl_set,tl_set_eq,%
+       tl_set_rescan,tl_show,tl_sort,tl_tail,tl_to_str,tl_trim_spaces,%
+       tl_trim_spaces_apply,tl_use,token_case_catcode,token_case_charcode,%
+       token_case_meaning,token_if_active,token_if_active_p,%
+       token_if_alignment,token_if_alignment_p,token_if_chardef,%
+       token_if_chardef_p,token_if_cs,token_if_cs_p,token_if_dim_register,%
+       token_if_dim_register_p,token_if_eq_catcode,token_if_eq_catcode_p,%
+       token_if_eq_charcode,token_if_eq_charcode_p,token_if_eq_meaning,%
+       token_if_eq_meaning_p,token_if_expandable,token_if_expandable_p,%
+       token_if_font_selection,token_if_font_selection_p,%
+       token_if_group_begin,token_if_group_begin_p,token_if_group_end,%
+       token_if_group_end_p,token_if_int_register,token_if_int_register_p,%
+       token_if_letter,token_if_letter_p,token_if_long_macro,%
+       token_if_long_macro_p,token_if_macro,token_if_macro_p,%
+       token_if_math_subscript,token_if_math_subscript_p,%
+       token_if_math_superscript,token_if_math_superscript_p,%
+       token_if_math_toggle,token_if_math_toggle_p,token_if_mathchardef,%
+       token_if_mathchardef_p,token_if_muskip_register,%
+       token_if_muskip_register_p,token_if_other,token_if_other_p,%
+       token_if_parameter,token_if_parameter_p,token_if_primitive,%
+       token_if_primitive_p,token_if_protected_long_macro,%
+       token_if_protected_long_macro_p,token_if_protected_macro,%
+       token_if_protected_macro_p,token_if_skip_register,%
+       token_if_skip_register_p,token_if_space,token_if_space_p,%
+       token_if_toks_register,token_if_toks_register_p,token_to_meaning,%
+       token_to_str,unvcopy,use,use_i,use_i_delimit_by_q_nil,%
+       use_i_delimit_by_q_recursion_stop,use_i_delimit_by_q_stop,use_i_ii,%
+       use_ii,use_ii_i,use_iii,use_iv,use_none,use_none_delimit_by_q_nil,%
+       use_none_delimit_by_q_recursion_stop,use_none_delimit_by_q_stop,%
+       use_none_delimit_by_s_stop,vbox,vbox_gset,vbox_gset_end,%
+       vbox_gset_split_to_ht,vbox_gset_to_ht,vbox_gset_top,vbox_set,%
+       vbox_set_end,vbox_set_split_to_ht,vbox_set_to_ht,vbox_set_top,%
+       vbox_to_ht,vbox_to_zero,vbox_top,vbox_unpack,vbox_unpack_drop,%
+       vcoffin_gset,vcoffin_gset_end,vcoffin_set,vcoffin_set_end,%
+     },%
+     % Keywords of class 1 : keywords that contain other characters (since
+     % of the same class as the ones specified as 'otherkeywords')
+     morekeywords={%
+     },%
+     % Keywords of class 2 : environments names
+     morekeywords=[2]{%
+     },%
+     % Keywords of class 3 : mandatory arguments (not environments) &
+     % optional arguments which are keys (in key=value)
+     morekeywords=[3]{%
+       name,alternative-model,alternative-values,%
+     },%
+     % Keywords of class 4 : values of keys (in key=value)
+     morekeywords=[4]{%
+       cmyk,%
+     },%
+     % Keywords of class 5 : arguments specifications (after ":" in expl3
+     % syntax)
+     morekeywords=[5]{%
+       D,N,Nn,NF,NN,Nx,NT,NTF,NNn,NnV,Nnn,Npn,Nnnn,V,c,e,en,f,n,nF,%
+       nn,nT,nnn,nnF,nnV,nTF,nnnn,nNnF,nNnT,nnVV,o,p,v,w,x,%
+     },%
+     % Keywords of class 6 : current package name (and possibly derived
+     % packages)
+     morekeywords=[6]{%
+       expl3,%
+     },
+     otherkeywords={:,~},%
+     alsoletter={_-.},%
+     % alsodigit={},%
+     % alsoother={},%
+     sensitive,%
+   }[keywords,tex,comments]%
+
+   \lst at definelanguage[pdftex]{TeX}{%
+     % Control sequences names
+     moretexcs={%
+       pdfinfo,pdfcatalog,pdfpageattr,pdfpagesattr,pdfpageresources,%
+       pdfcolorstack,%
+     },%
+     % Keywords of class 1 : keywords that contain other characters (since
+     % of the same class as the ones specified as 'otherkeywords')
+     morekeywords={%
+     },%
+     % Keywords of class 2 : environments names
+     morekeywords=[2]{%
+     },%
+     % Keywords of class 3 : mandatory arguments (not environments) &
+     % optional arguments which are keys (in key=value)
+     morekeywords=[3]{%
+     },%
+     % Keywords of class 4 : values of keys (in key=value)
+     morekeywords=[4]{%
+     },%
+     % Keywords of class 5 : arguments specifications (after ":" in expl3
+     % syntax)
+     morekeywords=[5]{%
+     },%
+     % Keywords of class 6 : current package name (and possibly derived
+     % packages)
+     morekeywords=[6]{%
+       pdftex,%
+     },%
+     % otherkeywords={},
+     % alsoletter={},
+     % alsodigit={},%
+     % alsoother={},%
+     sensitive,%
+   }[keywords,tex,comments]%
+
+   \lst at definelanguage[luatex]{TeX}{%
+     % Control sequences names
+     moretexcs={%
+       pdfextension,ifluatex,directlua,%
+     },%
+     % Keywords of class 1 : keywords that contain other characters (since
+     % of the same class as the ones specified as 'otherkeywords')
+     morekeywords={%
+     },%
+     % Keywords of class 2 : environments names
+     morekeywords=[2]{%
+     },%
+     % Keywords of class 3 : mandatory arguments (not environments) &
+     % optional arguments which are keys (in key=value)
+     morekeywords=[3]{%
+       colorstack },%
+     % Keywords of class 4 : values of keys (in key=value)
+     morekeywords=[4]{%
+     },%
+     % Keywords of class 5 : arguments specifications (after ":" in expl3
+     % syntax)
+     morekeywords=[5]{%
+     },%
+     % Keywords of class 6 : current package name (and possibly derived
+     % packages)
+     morekeywords=[6]{%
+       luatex,%
+     },%
+     % otherkeywords={},
+     % alsoletter={},
+     % alsodigit={},%
+     % alsoother={},%
+     sensitive,%
+   }[keywords,tex,comments]%
+
+   \lst at definelanguage[dvips]{TeX}{%
+     % Control sequences names
+     moretexcs={%
+     },%
+     % Keywords of class 1 : keywords that contain other characters (since
+     % of the same class as the ones specified as 'otherkeywords')
+     morekeywords={%
+     },%
+     % Keywords of class 2 : environments names
+     morekeywords=[2]{%
+     },%
+     % Keywords of class 3 : mandatory arguments (not environments) &
+     % optional arguments which are keys (in key=value)
+     morekeywords=[3]{%
+       color,push,%
+     },%
+     % Keywords of class 4 : values of keys (in key=value)
+     morekeywords=[4]{%
+     },%
+     % Keywords of class 5 : arguments specifications (after ":" in expl3
+     % syntax)
+     morekeywords=[5]{%
+     },%
+     % Keywords of class 6 : current package name (and possibly derived
+     % packages)
+     morekeywords=[6]{%
+       dvips,%
+     },%
+     % otherkeywords={},
+     % alsoletter={},
+     % alsodigit={},%
+     % alsoother={},%
+     sensitive,%
+   }[keywords,tex,comments]%
+
+   \lst at definelanguage[xetex]{TeX}{%
+     % Control sequences names
+     moretexcs={%
+     },%
+     % Keywords of class 1 : keywords that contain other characters (since
+     % of the same class as the ones specified as 'otherkeywords')
+     morekeywords={%
+     },%
+     % Keywords of class 2 : environments names
+     morekeywords=[2]{%
+     },%
+     % Keywords of class 3 : mandatory arguments (not environments) &
+     % optional arguments which are keys (in key=value)
+     morekeywords=[3]{%
+       pdfcolorstack,%
+     },%
+     % Keywords of class 4 : values of keys (in key=value)
+     morekeywords=[4]{%
+     },%
+     % Keywords of class 5 : arguments specifications (after ":" in expl3
+     % syntax)
+     morekeywords=[5]{%
+     },%
+     % Keywords of class 6 : current package name (and possibly derived
+     % packages)
+     morekeywords=[6]{%
+       xetex,%
+     },%
+     % otherkeywords={},
+     % alsoletter={},
+     % alsodigit={},%
+     % alsoother={},%
+     sensitive,%
+   }[keywords,tex,comments]%
+
+   \lst at definelanguage[inputenc]{TeX}{%
+     % Control sequences names
+     moretexcs={%
+     },%
+     % Keywords of class 1 : keywords that contain other characters (since
+     % of the same class as the ones specified as 'otherkeywords')
+     morekeywords={%
+     },%
+     % Keywords of class 2 : environments names
+     morekeywords=[2]{%
+     },%
+     % Keywords of class 3 : mandatory arguments (not environments) &
+     % optional arguments which are keys (in key=value)
+     morekeywords=[3]{%
+       latin1 },%
+     % Keywords of class 4 : values of keys (in key=value)
+     morekeywords=[4]{%
+     },%
+     % Keywords of class 5 : arguments specifications (after ":" in expl3
+     % syntax)
+     morekeywords=[5]{%
+     },%
+     % Keywords of class 6 : current package name (and possibly derived
+     % packages)
+     morekeywords=[6]{%
+       inputenc,%
+     },%
+     % otherkeywords={},%
+     alsoletter={1},%
+     % alsodigit={},%
+     % alsoother={},%
+     sensitive,%
+   }[keywords,tex,comments]%
+
+   \lst at definelanguage[pdfmanagement-testphase]{TeX}{%
+     % Control sequences names
+     moretexcs={%
+       pdfmanagement_add,DeclareDocumentMetadata,AddToDocumentProperties,%
+       ShowDocumentProperties,GetDocumentProperties,%
+     },%
+     % Keywords of class 1 : keywords that contain other characters (since
+     % of the same class as the ones specified as 'otherkeywords')
+     morekeywords={%
+     },%
+     % Keywords of class 2 : environments names
+     morekeywords=[2]{%
+     },%
+     % Keywords of class 3 : mandatory arguments (not environments) &
+     % optional arguments which are keys (in key=value)
+     morekeywords=[3]{% Keys or optional arguments
+       pdfmanagement-testphase,uncompress,geometry,top-level,backend,Info,%
+       ThisPage,pdfversion,pdfstandard,paper,topic,Title,Rotate,%
+     },%
+     % Keywords of class 4 : values of keys (in key=value)
+     morekeywords=[4]{%
+       dvipdfmx,%
+     },%
+     % Keywords of class 5 : arguments specifications (after ":" in expl3
+     % syntax)
+     morekeywords=[5]{%
+       nnn,%
+     },%
+     % Keywords of class 6 : current package name (and possibly derived
+     % packages)
+     morekeywords=[6]{%
+       pdfmanagement-testphase,%
+     },
+     otherkeywords={:},%
+     alsoletter={_-},%
+     % alsodigit={},%
+     % alsoother={},%
+     sensitive,%
+   }[keywords,tex,comments]%
+
+   \lst at definelanguage[rotating]{TeX}{%
+     % Control sequences names
+     moretexcs={%
+     },%
+     % Keywords of class 1 : keywords that contain other characters (since
+     % of the same class as the ones specified as 'otherkeywords')
+     morekeywords={%
+     },%
+     % Keywords of class 2 : environments names
+     morekeywords=[2]{%
+       sidewaystable,%
+     },%
+     % Keywords of class 3 : mandatory arguments (not environments) &
+     % optional arguments which are keys (in key=value)
+     morekeywords=[3]{%
+     },%
+     % Keywords of class 4 : values of keys (in key=value)
+     morekeywords=[4]{%
+     },%
+     % Keywords of class 5 : arguments specifications (after ":" in expl3
+     % syntax)
+     morekeywords=[5]{%
+     },%
+     % Keywords of class 6 : current package name (and possibly derived
+     % packages)
+     morekeywords=[6]{%
+       rotating,%
+     },%
+     % alsoletter={},
+     % alsodigit={},%
+     % alsoother={},%
+     sensitive,%
+   }[keywords,tex,comments]%
+
+   \lst at definelanguage[fontenc]{TeX}%
+   {%
+     % Control sequences names
+     moretexcs={%
+     },%
+     % Keywords of class 1 : keywords that contain other characters (since
+     % of the same class as the ones specified as 'otherkeywords')
+     morekeywords={%
+     },%
+     % Keywords of class 2 : environments names
+     morekeywords=[2]{%
+     },%
+     % Keywords of class 3 : mandatory arguments (not environments) &
+     % optional arguments which are keys (in key=value)
+     morekeywords=[3]{%
+       T1 },%
+     % Keywords of class 4 : values of keys (in key=value)
+     morekeywords=[4]{%
+     },%
+     % Keywords of class 5 : arguments specifications (after ":" in expl3
+     % syntax)
+     morekeywords=[5]{%
+     },%
+     % Keywords of class 6 : current package name (and possibly derived
+     % packages)
+     morekeywords=[6]{%
+       fontenc,%
+     },%
+     % otherkeywords={},
+     % alsoletter={1},%
+     alsodigit={1},%
+     % alsoother={},%
+     sensitive,%
+   }[keywords,tex,comments]%
+
+   \lst at definelanguage[babel]{TeX}%
+   {%
+     % Control sequences names
+     moretexcs={%
+       foreignlanguage,selectlanguage,iflanguage,%
+     },%
+     % Keywords of class 1 : keywords that contain other characters (since
+     % of the same class as the ones specified as 'otherkeywords')
+     morekeywords={%
+     },%
+     % Keywords of class 2 : environments names
+     morekeywords=[2]{%
+       otherlanguage,%
+     },%
+     % Keywords of class 3 : mandatory arguments (not environments) &
+     % optional arguments which are keys (in key=value)
+     morekeywords=[3]{%
+     },%
+     % Keywords of class 4 : values of keys (in key=value)
+     morekeywords=[4]{%
+       UKenglish,USenglish,acadian,afrikaans,american,arabic,australian,%
+       austrian,azerbaijani,bahasa,bahasai,basque,bgreek,brazil,%
+       brazilian,breton,british,bulgarian,canadian,canadien,catalan,%
+       croatian,czech,danish,dutch,english,esperanto,estonian,ethiop,%
+       farsi,finnish,francais,french,frenchle,friulan,galician,german,%
+       germanb,greek,hebrew,hindi,ibygreek,icelandic,indon,indonesian,%
+       interlingua,irish,italian,japanese,latin,latvian,lithuanian,%
+       lowersorbian,magyar,malay,melayu (bahasam),mongolian,naustrian,%
+       newzealand,ngerman,norsk,nynorsk,pinyin,polish,polutonikogreek,%
+       portuges,portuguese,romanian,romansh,russian,samin,scottish,%
+       serbian,serbianc,slovak,slovene,spanglish,spanish,swedish,thai,%
+       thaicjk,turkish,turkmen,ukrainian,uppersorbian,vietnamese,%
+       welsh,%
+     },%
+     % Keywords of class 5 : arguments specifications (after ":" in expl3
+     % syntax)
+     morekeywords=[5]{%
+     },%
+     % Keywords of class 6 : current package name (and possibly derived
+     % packages)
+     morekeywords=[6]{%
+       babel,%
+     },%
+     % otherkeywords={},
+     % alsoletter={},
+     % alsodigit={},%
+     % alsoother={},%
+     sensitive,%
+   }[keywords,tex,comments]%
+
+   \lst at definelanguage[babel-french]{TeX}%
+   {%
+     % Control sequences names
+     moretexcs={%
+       og,fg,up,bsc,ier,iers,iere,ieres,ieme,iemes,primo,secundo,%
+       tertio,quarto,FrenchEnumerate,No,Nos,no,nos,degre,nombre,%
+       frenchabstractname,frenchbibname,frenchrefname,frenchprefacename,%
+       frenchchaptername,frenchappendixname,frenchcontentsname,%
+       frenchlistfigurename,frenchlisttablename,frenchindexname,%
+       frenchglossaryname,frenchfigurename,frenchtablename,frenchpartname,%
+       frenchenclname,frenchccname,frenchheadtoname,frenchpagename,%
+       frenchseename,frenchalsoname,frenchproofname%,%
+       frquote,%
+     },%
+     % Keywords of class 1 : keywords that contain other characters (since
+     % of the same class as the ones specified as 'otherkeywords')
+     morekeywords={%
+     },%
+     % Keywords of class 2 : environments names
+     morekeywords=[2]{%
+     },%
+     % Keywords of class 3 : mandatory arguments (not environments) &
+     % optional arguments which are keys (in key=value)
+     morekeywords=[3]{%
+     },%
+     % Keywords of class 4 : values of keys (in key=value)
+     morekeywords=[4]{%
+     },%
+     % Keywords of class 5 : arguments specifications (after ":" in expl3
+     % syntax)
+     morekeywords=[5]{%
+     },%
+     % Keywords of class 6 : current package name (and possibly derived
+     % packages)
+     morekeywords=[6]{%
+       babel-french,%
+     },%
+     % otherkeywords={},%
+     alsoletter={-},%
+     % alsodigit={},%
+     % alsoother={},%
+     sensitive,%
+   }[keywords,tex,comments]%
+
+   \lst at definelanguage[kantlipsum]{TeX}{%
+     % Control sequences names
+     moretexcs={%
+       kant,%
+     },%
+     % Keywords of class 1 : keywords that contain other characters (since
+     % of the same class as the ones specified as 'otherkeywords')
+     morekeywords={%
+     },%
+     % Keywords of class 2 : environments names
+     morekeywords=[2]{%
+     },%
+     % Keywords of class 3 : mandatory arguments (not environments) &
+     % optional arguments which are keys (in key=value)
+     morekeywords=[3]{%
+     },%
+     % Keywords of class 4 : values of keys (in key=value)
+     morekeywords=[4]{%
+     },%
+     % Keywords of class 5 : arguments specifications (after ":" in expl3
+     % syntax)
+     morekeywords=[5]{%
+     },%
+     % Keywords of class 6 : current package name (and possibly derived
+     % packages)
+     morekeywords=[6]{%
+       kantlipsum,%
+     },%
+     % otherkeywords={},
+     % alsoletter={},
+     % alsodigit={},%
+     % alsoother={},%
+     sensitive,%
+   }[keywords,tex,comments]%
+
+   \lst at definelanguage[hyperxmp]{TeX}{%
+     % Control sequences names
+     moretexcs={%
+     },%
+     % Keywords of class 1 : keywords that contain other characters (since
+     % of the same class as the ones specified as 'otherkeywords')
+     morekeywords={%
+     },%
+     % Keywords of class 2 : environments names
+     morekeywords=[2]{%
+     },%
+     % Keywords of class 3 : mandatory arguments (not environments) &
+     % optional arguments which are keys (in key=value)
+     morekeywords=[3]{%
+     },%
+     % Keywords of class 4 : values of keys (in key=value)
+     morekeywords=[4]{%
+     },%
+     % Keywords of class 5 : arguments specifications (after ":" in expl3
+     % syntax)
+     morekeywords=[5]{%
+     },%
+     % Keywords of class 6 : current package name (and possibly derived
+     % packages)
+     morekeywords=[6]{%
+       hyperxmp,%
+     },%
+     % otherkeywords={},
+     % alsoletter={},
+     % alsodigit={},%
+     % alsoother={},%
+     sensitive,%
+   }[keywords,tex,comments]%
+
+   \lst at definelanguage[hyperref]{TeX}{%
+     % Control sequences names
+     moretexcs={%
+       hypersetup,href,phantomsection,pdfstringdefDisableCommands,url,%
+       nolinkurl,hyperbaseurl,hyperimage,hyperdef,hyperref,hyperlink,%
+       hypertarget,hyperget,autoref,autopageref,ref*,pageref*,autoref*,%
+       autopageref*,pdfstringdef,pdfbookmark,currentpdfbookmark,%
+       subpdfbookmark,belowpdfbookmark,texorpdfstring,thispdfpagelabel,%
+       hypercalcbp,nameref,%
+     },%
+     % Keywords of class 1 : keywords that contain other characters (since
+     % of the same class as the ones specified as 'otherkeywords')
+     morekeywords={%
+     },%
+     % Keywords of class 2 : environments names
+     morekeywords=[2]{%
+     },%
+     % Keywords of class 3 : mandatory arguments (not environments) &
+     % optional arguments which are keys (in key=value)
+     morekeywords=[3]{%
+       allbordercolors,allcolors,anchorcolor,backref,baseurl,bookmarks,%
+       bookmarksnumbered,bookmarksopen,bookmarksopenlevel,bookmarkstype,%
+       breaklinks,CJKbookmarks,citebordercolor,citecolor,colorlinks,debug,%
+       destlabel,draft,driverfallback,dvipdfm,dvipdfmx,dvips,dvipsone,%
+       dviwindo,encap,extension,filebordercolor,filecolor,final,%
+       frenchlinks,hidelinks,hyperfigures,hyperfootnotes,hyperindex,%
+       hypertex,hypertexnames,implicit,latex2html,linkbordercolor,%
+       linkcolor,linktoc,linktocpage,menubordercolor,menucolor,nativepdf,%
+       naturalnames,nesting,next-anchor,pageanchor,pagebackref,pdfauthor,%
+       pdfborder,pdfborderstyle,pdfcenterwindow,pdfcreator,pdfdirection,%
+       pdfdisplaydoctitle,pdfduplex,pdffitwindow,pdfhighlight,pdfinfo,%
+       pdfkeywords,pdflang,pdfmark,pdfmenubar,pdfnewwindow,%
+       pdfnonfullscreenpagemode,pdfnumcopies,pdfpagelabels,pdfpagelayout,%
+       pdfpagemode,pdfpagescrop,pdfpagetransition,pdfpicktraybypdfsize,%
+       pdfprintarea,pdfprintclip,pdfprintpagerange,pdfprintscaling,%
+       pdfproducer,pdfremotestartview,pdfstartpage,pdfstartview,pdfsubject,%
+       pdftex,pdftitle,pdftoolbar,pdftrapped,pdfview,pdfviewarea,%
+       pdfviewclip,pdfwindowui,plainpages,ps2pdf,psdextra,raiselinks,%
+       runbordercolor,runcolor,setpagesize,tex4ht,textures,unicode,%
+       urlbordercolor,urlcolor,verbose,vtex,xetex,%
+     },%
+     % Keywords of class 4 : values of keys (in key=value)
+     morekeywords=[4]{%
+     },%
+     % Keywords of class 5 : arguments specifications (after ":" in expl3
+     % syntax)
+     morekeywords=[5]{%
+     },%
+     % Keywords of class 6 : current package name (and possibly derived
+     % packages)
+     morekeywords=[6]{%
+       hyperref,%
+     },%
+     % otherkeywords={},%
+     alsoletter={*},%
+     % alsodigit={},%
+     % alsoother={},%
+     sensitive,%
+   }[keywords,tex,comments]%
+
+   \lst at definelanguage[graphicx]{TeX}{%
+     % Control sequences names
+     moretexcs={%
+       includegraphics,includegraphics*,definecolor,color,textcolor,%
+       mathcolor,pagecolor,nopagecolor,colorbox,fcolorbox,rotatebox,%
+       scalebox,reflectbox,resizebox,resizebox*,graphicspath,%
+       DeclareGraphicsExtensions,DeclareGraphicsRule },%
+     % Keywords of class 1 : keywords that contain other characters (since
+     % of the same class as the ones specified as 'otherkeywords')
+     morekeywords={%
+     },%
+     % Keywords of class 2 : environments names
+     morekeywords=[2]{%
+     },%
+     % Keywords of class 3 : mandatory arguments (not environments) &
+     % optional arguments which are keys (in key=value)
+     morekeywords=[3]{%
+       draft,final,hiresbb,demo,setpagesize,nosetpagesize,dvips,xdvi,%
+       dvipdf,dvipdfm,dvipdfmx,xetex,pdftex,luatex,dvisvgm,dvipsone,%
+       dviwindo,emtex,dviwin,oztex,textures,pctexps,pctexwin,pctexhp,%
+       pctex32,truetex,tcidvi,vtex,debugshow,hiderotate,hidescale,alt,%
+       %
+       bb,bbllx,bblly,bburx,bbury,natwidth,natheight,hiresbb,pagebox,%
+       viewport,trim,angle,origin,width,height,totalheight,%
+       keepaspectratio,scale,clip,draft,type,ext,read,command,quiet,%
+       page,interpolate,decodearray,origin,x,y,units,%
+     },%
+     % Keywords of class 4 : values of keys (in key=value)
+     morekeywords=[4]{%
+       mediabox,cropbox,bleedbox,trimbox,artbox,true,false,%
+     },%
+     % Keywords of class 5 : arguments specifications (after ":" in expl3
+     % syntax)
+     morekeywords=[5]{%
+     },%
+     % Keywords of class 6 : current package name (and possibly derived
+     % packages)
+     morekeywords=[6]{%
+       graphicx,%
+     },%
+     % otherkeywords={},%
+     alsoletter={23},%
+     % alsodigit={},%
+     % alsoother={},%
+     sensitive,%
+   }[keywords,tex,comments]%
+
+   \lst at definelanguage[geometry]{TeX}{%
+     % Control sequences names
+     moretexcs={%
+       geometry,newgeometry,restoregeometry,savegeometry,loadgeometry,%
+     },%
+     % Keywords of class 1 : keywords that contain other characters (since
+     % of the same class as the ones specified as 'otherkeywords')
+     morekeywords={%
+     },%
+     % Keywords of class 2 : environments names
+     morekeywords=[2]{%
+     },%
+     % Keywords of class 3 : mandatory arguments (not environments) &
+     % optional arguments which are keys (in key=value)
+     morekeywords=[3]{%
+       paper,papername,paperwidth,paperheight,papersize,landscape,%
+       portrait,layout,layoutwidth,layoutheight,layoutsize,layouthoffset,%
+       layoutvoffset,layoutoffset,hscale,vscale,scale,width,totalwidth,%
+       height,totalheight,total,textwidth,textheight,text,body,lines,%
+       includehead,includefoot,includeheadfoot,includemp,includeall,%
+       ignorehead,ignorefoot,ignoreheadfoot,ignoremp,ignoreall,%
+       heightrounded,hdivide,vdivide,divide,left,lmargin,inner,right,%
+       rmargin,outer,top,tmargin,bottom,bmargin,hmargin,vmargin,margin,%
+       hmarginratio,vmarginratio,marginratio,ratio,hcentering,vcentering,%
+       centering,twoside,asymmetric,headheight,head,headsep,footskip,%
+       foot,nohead,nofoot,noheadfoot,footnotesep,marginparwidth,%
+       marginparsep,nomarginpar,columnsep,hoffset,voffset,offset,%
+       twocolumn,onecolumn,reversemp,reversemarginpar,verbose,reset,mag,%
+       truedimen,pass,showframe,showcrop,%
+     },%
+     % Keywords of class 4 : values of keys (in key=value)
+     morekeywords=[4]{%
+       a0paper,a1paper,a2paper,a3paper,a4paper,a5paper,a6paper,b0paper,%
+       b1paper,b2paper,b3paper,b4paper,b5paper,b6paper,c0paper,c1paper,%
+       c2paper,c3paper,c4paper,c5paper,c6paper,b0j,b1j,b2j,b3j,b4j,%
+       b5j,b6j,ansiapaper,ansibpaper,ansicpaper,ansidpaper,ansiepaper,%
+       letterpaper,executivepaper,legalpaper,screen,dvips,dvipdfm,pdftex,%
+       luatex,xetex,vtex,dvipdfmx,xdvipdfmx,%
+     },%
+     % Keywords of class 5 : arguments specifications (after ":" in expl3
+     % syntax)
+     morekeywords=[5]{%
+     },%
+     % Keywords of class 6 : current package name (and possibly derived
+     % packages)
+     morekeywords=[6]{%
+       geometry,%
+     },%
+     % otherkeywords={},%
+     alsoletter={0123456},%
+     % alsodigit={},%
+     % alsoother={},%
+     sensitive,%
+   }[keywords,tex,comments]%
+
+   \lst at definelanguage[newpax]{TeX}{%
+     % Control sequences names
+     moretexcs={%
+       newpaxsetup,%
+     },%
+     % Keywords of class 1 : keywords that contain other characters (since
+     % of the same class as the ones specified as 'otherkeywords')
+     morekeywords={%
+     },%
+     % Keywords of class 2 : environments names
+     morekeywords=[2]{%
+     },%
+     % Keywords of class 3 : mandatory arguments (not environments) &
+     % optional arguments which are keys (in key=value)
+     morekeywords=[3]{%
+       addannots,%
+     },%
+     % Keywords of class 4 : values of keys (in key=value)
+     morekeywords=[4]{%
+       false,%
+     },%
+     % Keywords of class 5 : arguments specifications (after ":" in expl3
+     % syntax)
+     morekeywords=[5]{%
+     },%
+     % Keywords of class 6 : current package name (and possibly derived
+     % packages)
+     morekeywords=[6]{%
+       newpax,%
+     },%
+     % otherkeywords={},
+     % alsoletter={},
+     % alsodigit={},%
+     % alsoother={},%
+     sensitive,%
+   }[keywords,tex,comments]%
+
+   \lst at definelanguage[tikz]{TeX}{%
+     % Control sequences names
+     moretexcs={%
+       usetikzlibrary,draw,node,matrix,fill,foreach,tikz,%
+     },%
+     % Keywords of class 1 : keywords that contain other characters (since
+     % of the same class as the ones specified as 'otherkeywords')
+     morekeywords={%
+     },%
+     % Keywords of class 2 : environments names
+     morekeywords=[2]{%
+       tikzpicture,%
+     },%
+     % Keywords of class 3 : mandatory arguments (not environments) &
+     % optional arguments which are keys (in key=value)
+     morekeywords=[3]{%
+       pic,rotate,xshift,yshift,every node,inner sep,blend mode,fill,%
+       fit,circle,anchor,in,count,x,y,matrix,of,math,nodes,above
+       right,at,--,-|,|-,%
+     },%
+     % Keywords of class 4 : values of keys (in key=value)
+     morekeywords=[4]{%
+       multiply,lightgray,base,%
+     },%
+     % Keywords of class 5 : arguments specifications (after ":" in expl3
+     % syntax)
+     morekeywords=[5]{%
+     },%
+     % Keywords of class 6 : current package name (and possibly derived
+     % packages)
+     morekeywords=[6]{%
+       tikz,%
+     },%
+     % otherkeywords={},%
+     alsoletter={-| \ },%
+     % alsodigit={},%
+     % alsoother={},%
+     sensitive,%
+   }[keywords,tex,comments]%
+
+   \lst at definelanguage[tikzducks]{TeX}{%
+     % Control sequences names
+     moretexcs={%
+       duck,%
+     },%
+     % Keywords of class 1 : keywords that contain other characters (since
+     % of the same class as the ones specified as 'otherkeywords')
+     morekeywords={%
+     },%
+     % Keywords of class 2 : environments names
+     morekeywords=[2]{%
+     },%
+     % Keywords of class 3 : mandatory arguments (not environments) &
+     % optional arguments which are keys (in key=value)
+     morekeywords=[3]{%
+       alien,aodai,baguette,basket,beard,beret,bill,body,book,%
+       bookcolour,bowtie,bubblecolour,bunny,buttons,cake,cap,cape,%
+       cheese,chef,cocktail,conicalhat,crazyhair,cricket,crown,crozier,%
+       crystalball,darthvader,devil,easter,egga,eggb,eggc,eye,eyebrow,%
+       flavoura,flavourb,flavourc,football,glasses,graduate,grumpy,%
+       handbag,harlequin,hat,head,helmet,hockey,horsetail,icecream,%
+       inear,invisible,jacket,kingcrown,lapel,laughing,lightsaber,%
+       longhair,magichat,magicstars,magicwand,mask,milkshake,mohican,%
+       mullet,name,neckerchief,necklace,niuqelrah,overleaf,parrot,%
+       parting,peakedcap,pickaxe,pizza,prison,queencrown,recedinghair,%
+       ribbon,rollingpin,sailor,santa,sheep,shorthair,shovel,signback,%
+       signcolour,signpost,snowduck,speech,squareglasses,stethoscope,%
+       strawhat,sunglasses,tail,tassel,think,tie,tophat,torch,tshirt,%
+       umbrella,umbrellaclosed,unicorn,vampire,viking,water,wine,wing,%
+       witch,woggle,%
+     },%
+     % Keywords of class 4 : values of keys (in key=value)
+     morekeywords=[4]{%
+       blue,green,red,yellow,%
+     },%
+     % Keywords of class 5 : arguments specifications (after ":" in expl3
+     % syntax)
+     morekeywords=[5]{%
+     },%
+     % Keywords of class 6 : current package name (and possibly derived
+     % packages)
+     morekeywords=[6]{%
+       tikzducks,%
+     },%
+     % otherkeywords={},
+     % alsoletter={},
+     % alsodigit={},%
+     % alsoother={},%
+     sensitive,%
+   }[keywords,tex,comments]%
+
+   \lst at definelanguage[tikzlings]{TeX}{%
+     % Control sequences names
+     moretexcs={%
+       anteater,bear,bee,cat,chicken,coati,elephant,hippo,koala,%
+       marmot,mole,mouse,owl,panda,penguin,pig,rhino,sheep,sloth,%
+       squirrel,snowman,%
+     },%
+     % Keywords of class 1 : keywords that contain other characters (since
+     % of the same class as the ones specified as 'otherkeywords')
+     morekeywords={%
+     },%
+     % Keywords of class 2 : environments names
+     morekeywords=[2]{%
+     },%
+     % Keywords of class 3 : mandatory arguments (not environments) &
+     % optional arguments which are keys (in key=value)
+     morekeywords=[3]{%
+       3D,eye,contour,back,globalwarming,whiskers,schroedinger,%
+     },%
+     % Keywords of class 4 : values of keys (in key=value)
+     morekeywords=[4]{%
+     },%
+     % Keywords of class 5 : arguments specifications (after ":" in expl3
+     % syntax)
+     morekeywords=[5]{%
+     },%
+     % Keywords of class 6 : current package name (and possibly derived
+     % packages)
+     morekeywords=[6]{%
+       tikzlings,%
+     },%
+     % otherkeywords={},%
+     alsoletter={3},%
+     % alsodigit={},%
+     % alsoother={},%
+     sensitive,%
+   }[keywords,tex,comments]%
+
+   \lst at definelanguage[amsmath]{TeX}{%
+     % Control sequences names
+     moretexcs={%
+       cdots,ddots,vdots,%
+     },%
+     % Keywords of class 1 : keywords that contain other characters (since
+     % of the same class as the ones specified as 'otherkeywords')
+     morekeywords={%
+     },%
+     % Keywords of class 2 : environments names
+     morekeywords=[2]{%
+       pmatrix,%
+     },%
+     % Keywords of class 3 : mandatory arguments (not environments) &
+     % optional arguments which are keys (in key=value)
+     morekeywords=[3]{%
+     },%
+     % Keywords of class 4 : values of keys (in key=value)
+     morekeywords=[4]{%
+     },%
+     % Keywords of class 5 : arguments specifications (after ":" in expl3
+     % syntax)
+     morekeywords=[5]{%
+     },%
+     % Keywords of class 6 : current package name (and possibly derived
+     % packages)
+     morekeywords=[6]{%
+       amsmath,%
+     },%
+     % otherkeywords={},
+     % alsoletter={},
+     % alsodigit={},%
+     % alsoother={},%
+     sensitive,%
+   }[keywords,tex,comments]%
+
+   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+   % xparse
+   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+   \lst at definelanguage[xparse]{TeX}{%
+     % Control sequences names
+     moretexcs={%
+       NewDocumentCommand,RenewDocumentCommand,ProvideDocumentCommand,%
+       DeclareDocumentCommand,NewDocumentEnvironment,%
+       RenewDocumentEnvironment,ProvideDocumentEnvironment,%
+       DeclareDocumentEnvironment,NewExpandableDocumentCommand,%
+       RenewExpandableDocumentCommand,ProvideExpandableDocumentCommand,%
+       DeclareExpandableDocumentCommand,IfNoValueT,IfNoValueF,IfNoValueTF,%
+       IfValueT,IfValueF,IfValueTF,IfBooleanT,IfBooleanF,IfBooleanTF,%
+       BooleanTrue,BooleanFalse,ProcessedArgument,ReverseBoolean,%
+       SplitArgument,SplitList,ProcessList,TrimSpaces,%
+       GetDocumentCommandArgSpec,GetDocumentEnvironmentArgSpec,%
+       ShowDocumentCommandArgSpec,ShowDocumentEnvironmentArgSpec,%
+     },%
+     % Keywords of class 1 : keywords that contain other characters (since
+     % of the same class as the ones specified as 'otherkeywords')
+     morekeywords={%
+     },%
+     % Keywords of class 2 : environments names
+     morekeywords=[2]{%
+     },%
+     % Keywords of class 3 : mandatory arguments (not environments) &
+     % optional arguments which are keys (in key=value)
+     morekeywords=[3]{%
+       log-declarations,%
+     },%
+     % Keywords of class 4 : values of keys (in key=value)
+     morekeywords=[4]{%
+     },%
+     % Keywords of class 5 : arguments specifications (after ":" in expl3
+     % syntax)
+     morekeywords=[5]{%
+     },%
+     % Keywords of class 6 : current package name (and possibly derived
+     % packages)
+     morekeywords=[6]{%
+       xparse,%
+     },%
+     % otherkeywords={},%
+     alsoletter={-},%
+     % alsodigit={},%
+     % alsoother={},%
+     sensitive,%
+   }[keywords,tex,comments]%
+
+   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+   % colortbl
+   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+   \lst at definelanguage[colortbl]{TeX}{%
+     % Control sequences names
+     moretexcs={%
+       columncolor,rowcolor,cellcolor,arrayrulecolor,doublerulesepcolor,%
+       minrowclearance,%
+     },%
+     % Keywords of class 1 : keywords that contain other characters (since
+     % of the same class as the ones specified as 'otherkeywords')
+     morekeywords={%
+     },%
+     % Keywords of class 2 : environments names
+     morekeywords=[2]{%
+     },%
+     % Keywords of class 3 : mandatory arguments (not environments) &
+     % optional arguments which are keys (in key=value)
+     morekeywords=[3]{%
+     },%
+     % Keywords of class 4 : values of keys (in key=value)
+     morekeywords=[4]{%
+     },%
+     % Keywords of class 5 : arguments specifications (after ":" in expl3
+     % syntax)
+     morekeywords=[5]{%
+     },%
+     % Keywords of class 6 : current package name (and possibly derived
+     % packages)
+     morekeywords=[6]{%
+       colortbl,%
+     },%
+     % otherkeywords={},
+     % alsoletter={},
+     % alsodigit={},%
+     % alsoother={},%
+     sensitive,%
+   }[keywords,tex,comments]%
+
+   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+   % multirow
+   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+   \lst at definelanguage[multirow]{TeX}%
+   {%
+     % Control sequences names
+     moretexcs={%
+       multirow,%
+     },%
+     % Keywords of class 1 : keywords that contain other characters (since
+     % of the same class as the ones specified as 'otherkeywords')
+     morekeywords={%
+     },%
+     % Keywords of class 2 : environments names
+     morekeywords=[2]{%
+     },%
+     % Keywords of class 3 : mandatory arguments (not environments) &
+     % optional arguments which are keys (in key=value)
+     morekeywords=[3]{%
+     },%
+     % Keywords of class 4 : values of keys (in key=value)
+     morekeywords=[4]{%
+     },%
+     % Keywords of class 5 : arguments specifications (after ":" in expl3
+     % syntax)
+     morekeywords=[5]{%
+     },%
+     % Keywords of class 6 : current package name (and possibly derived
+     % packages)
+     morekeywords=[6]{%
+       multirow,%
+     },%
+     % otherkeywords={},
+     % alsoletter={},
+     % alsodigit={},%
+     % alsoother={},%
+     sensitive,%
+   }[keywords,tex,comments]%
+
+   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+   % nicematrix
+   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+   \lst at definelanguage[nicematrix]{TeX}%
+   {%
+     % Control sequences names
+     moretexcs={%
+       Cdots,Ddots,Vdots,Body,CodeBefore,CodeAfter,Block,%
+     },%
+     % Keywords of class 1 : keywords that contain other characters (since
+     % of the same class as the ones specified as 'otherkeywords')
+     morekeywords={%
+     },%
+     % Keywords of class 2 : environments names
+     morekeywords=[2]{%
+       pNiceMatrix,NiceMatrix,NiceTabular,bNiceArray,%
+     },%
+     % Keywords of class 3 : mandatory arguments (not environments) &
+     % optional arguments which are keys (in key=value)
+     morekeywords=[3]{%
+       hvlines,rules/width,baseline,colortbl-like,margin,right-margin,%
+       create-cell-nodes,rounded-corners,draw,%
+     },%
+     % Keywords of class 4 : values of keys (in key=value)
+     morekeywords=[4]{%
+     },%
+     % Keywords of class 5 : arguments specifications (after ":" in expl3
+     % syntax)
+     morekeywords=[5]{%
+     },%
+     % Keywords of class 6 : current package name (and possibly derived
+     % packages)
+     morekeywords=[6]{%
+       nicematrix,%
+     },
+     otherkeywords={&},%
+     alsoletter={/},%
+     % alsodigit={},%
+     % alsoother={},%
+     sensitive,%
+   }[keywords,tex,comments]%
+
+   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+   % booktabs
+   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+   \lst at definelanguage[booktabs]{TeX}%
+   {%
+     % Control sequences names
+     moretexcs={%
+       toprule,midrule,bottomrule,cmidrule,addlinespace,morecmidrules,%
+       specialrule,%
+     },%
+     % Keywords of class 1 : keywords that contain other characters (since
+     % of the same class as the ones specified as 'otherkeywords')
+     morekeywords={%
+     },%
+     % Keywords of class 2 : environments names
+     morekeywords=[2]{%
+     },%
+     % Keywords of class 3 : mandatory arguments (not environments) &
+     % optional arguments which are keys (in key=value)
+     morekeywords=[3]{%
+     },%
+     % Keywords of class 4 : values of keys (in key=value)
+     morekeywords=[4]{%
+     },%
+     % Keywords of class 5 : arguments specifications (after ":" in expl3
+     % syntax)
+     morekeywords=[5]{%
+     },%
+     % Keywords of class 6 : current package name (and possibly derived
+     % packages)
+     morekeywords=[6]{%
+       booktabs,%
+     },%
+     % otherkeywords={},
+     % alsoletter={},
+     % alsodigit={},%
+     % alsoother={},%
+     sensitive,%
+   }[keywords,tex,comments]%
+
+   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+   % strands
+   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+   \lst at definelanguage[strands]{TeX}%
+   {%
+     % Control sequences names
+     moretexcs={%
+       strands,%
+     },%
+     % Keywords of class 1 : keywords that contain other characters (since
+     % of the same class as the ones specified as 'otherkeywords')
+     morekeywords={%
+     },%
+     % Keywords of class 2 : environments names
+     morekeywords=[2]{%
+     },%
+     % Keywords of class 3 : mandatory arguments (not environments) &
+     % optional arguments which are keys (in key=value)
+     morekeywords=[3]{%
+     },%
+     % Keywords of class 4 : values of keys (in key=value)
+     morekeywords=[4]{%
+     },%
+     % Keywords of class 5 : arguments specifications (after ":" in expl3
+     % syntax)
+     morekeywords=[5]{%
+     },%
+     % Keywords of class 6 : current package name (and possibly derived
+     % packages)
+     morekeywords=[6]{%
+       strands,%
+     },%
+     % otherkeywords={},
+     % alsoletter={},
+     % alsodigit={},%
+     % alsoother={},%
+     sensitive,%
+   }[keywords,tex,comments]%
+
+   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+   % cartonaugh
+   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+   \lst at definelanguage[cartonaugh]{TeX}%
+   {%
+     % Control sequences names
+     moretexcs={%
+       maxterms,minterms,terms,implicant,%
+     },%
+     % Keywords of class 1 : keywords that contain other characters (since
+     % of the same class as the ones specified as 'otherkeywords')
+     morekeywords={%
+     },%
+     % Keywords of class 2 : environments names
+     morekeywords=[2]{%
+       cartonaugh,%
+     },%
+     % Keywords of class 3 : mandatory arguments (not environments) &
+     % optional arguments which are keys (in key=value)
+     morekeywords=[3]{%
+     },%
+     % Keywords of class 4 : values of keys (in key=value)
+     morekeywords=[4]{%
+     },%
+     % Keywords of class 5 : arguments specifications (after ":" in expl3
+     % syntax)
+     morekeywords=[5]{%
+     },%
+     % Keywords of class 6 : current package name (and possibly derived
+     % packages)
+     morekeywords=[6]{%
+       cartonaugh,%
+     },%
+     % otherkeywords={},
+     % alsoletter={},
+     % alsodigit={},%
+     % alsoother={},%
+     sensitive,%
+   }[keywords,tex,comments]%
+
+   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+   % xistercian
+   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+   \lst at definelanguage[xistercian]{TeX}%
+   {%
+     % Control sequences names
+     moretexcs={%
+       cisterciannum,%
+     },%
+     % Keywords of class 1 : keywords that contain other characters (since
+     % of the same class as the ones specified as 'otherkeywords')
+     morekeywords={%
+     },%
+     % Keywords of class 2 : environments names
+     morekeywords=[2]{%
+       xistercian,%
+     },%
+     % Keywords of class 3 : mandatory arguments (not environments) &
+     % optional arguments which are keys (in key=value)
+     morekeywords=[3]{%
+     },%
+     % Keywords of class 4 : values of keys (in key=value)
+     morekeywords=[4]{%
+     },%
+     % Keywords of class 5 : arguments specifications (after ":" in expl3
+     % syntax)
+     morekeywords=[5]{%
+     },%
+     % Keywords of class 6 : current package name (and possibly derived
+     % packages)
+     morekeywords=[6]{%
+       xistercian,%
+     },%
+     % otherkeywords={},
+     % alsoletter={},
+     % alsodigit={},%
+     % alsoother={},%
+     sensitive,%
+   }[keywords,tex,comments]%
+
+   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+   % aboensis
+   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+   \lst at definelanguage[aboensis]{TeX}%
+   {%
+     % Control sequences names
+     moretexcs={%
+       abcursivefamily,%
+     },%
+     % Keywords of class 1 : keywords that contain other characters (since
+     % of the same class as the ones specified as 'otherkeywords')
+     morekeywords={%
+     },%
+     % Keywords of class 2 : environments names
+     morekeywords=[2]{%
+     },%
+     % Keywords of class 3 : mandatory arguments (not environments) &
+     % optional arguments which are keys (in key=value)
+     morekeywords=[3]{%
+     },%
+     % Keywords of class 4 : values of keys (in key=value)
+     morekeywords=[4]{%
+     },%
+     % Keywords of class 5 : arguments specifications (after ":" in expl3
+     % syntax)
+     morekeywords=[5]{%
+     },%
+     % Keywords of class 6 : current package name (and possibly derived
+     % packages)
+     morekeywords=[6]{%
+       aboensis,%
+     },%
+     % otherkeywords={},
+     % alsoletter={},
+     % alsodigit={},%
+     % alsoother={},%
+     sensitive,%
+   }[keywords,tex,comments]%
+
+   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+   % tabularray
+   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+   \lst at definelanguage[tabularray]{TeX}%
+   {%
+     % Control sequences names
+     moretexcs={%
+       ,%
+     },%
+     % Keywords of class 1 : keywords that contain other characters (since
+     % of the same class as the ones specified as 'otherkeywords')
+     morekeywords={%
+     },%
+     % Keywords of class 2 : environments names
+     morekeywords=[2]{%
+       tblr,%
+     },%
+     % Keywords of class 3 : mandatory arguments (not environments) &
+     % optional arguments which are keys (in key=value)
+     morekeywords=[3]{%
+       width,colspec,row,bg,fg,font,column,hlines,X,%
+     },%
+     % Keywords of class 4 : values of keys (in key=value)
+     morekeywords=[4]{%
+       odd,%
+     },%
+     % Keywords of class 5 : arguments specifications (after ":" in expl3
+     % syntax)
+     morekeywords=[5]{%
+     },%
+     % Keywords of class 6 : current package name (and possibly derived
+     % packages)
+     morekeywords=[6]{%
+       tabularray,%
+     },%
+     % otherkeywords={},
+     % alsoletter={},
+     % alsodigit={},%
+     % alsoother={},%
+     sensitive,%
+   }[keywords,tex,comments]%
+
+   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+   % ninecolors
+   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+   \lst at definelanguage[ninecolors]{TeX}%
+   {%
+     % Control sequences names
+     moretexcs={%
+       NineColors,%
+     },%
+     % Keywords of class 1 : keywords that contain other characters (since
+     % of the same class as the ones specified as 'otherkeywords')
+     morekeywords={%
+     },%
+     % Keywords of class 2 : environments names
+     morekeywords=[2]{%
+     },%
+     % Keywords of class 3 : mandatory arguments (not environments) &
+     % optional arguments which are keys (in key=value)
+     morekeywords=[3]{%
+       gray1,red1,brown1,yellow1,olive1,green1,teal1,cyan1,azure1,%
+       blue1,violet1,magenta1,purple1,gray2,red2,brown2,yellow2,olive2,%
+       green2,teal2,cyan2,azure2,blue2,violet2,magenta2,purple2,gray3,%
+       red3,brown3,yellow3,olive3,green3,teal3,cyan3,azure3,blue3,%
+       violet3,magenta3,purple3,gray4,red4,brown4,yellow4,olive4,%
+       green4,teal4,cyan4,azure4,blue4,violet4,magenta4,purple4,gray5,%
+       red5,brown5,yellow5,olive5,green5,teal5,cyan5,azure5,blue5,%
+       violet5,magenta5,purple5,gray6,red6,brown6,yellow6,olive6,%
+       green6,teal6,cyan6,azure6,blue6,violet6,magenta6,purple6,gray7,%
+       red7,brown7,yellow7,olive7,green7,teal7,cyan7,azure7,blue7,%
+       violet7,magenta7,purple7,gray8,red8,brown8,yellow8,olive8,%
+       green8,teal8,cyan8,azure8,blue8,violet8,magenta8,purple8,gray9,%
+       red9,brown9,yellow9,olive9,green9,teal9,cyan9,azure9,blue9,%
+       violet9,magenta9,purple9,gray1,red1,brown1,yellow1,olive1,%
+       green1,teal1,cyan1,azure1,blue1,violet1,magenta1,purple1,gray2,%
+       red2,brown2,yellow2,olive2,green2,teal2,cyan2,azure2,blue2,%
+       violet2,magenta2,purple2,gray3,red3,brown3,yellow3,olive3,%
+       green3,teal3,cyan3,azure3,blue3,violet3,magenta3,purple3,gray4,%
+       red4,brown4,yellow4,olive4,green4,teal4,cyan4,azure4,blue4,%
+       violet4,magenta4,purple4,gray5,red5,brown5,yellow5,olive5,%
+       green5,teal5,cyan5,azure5,blue5,violet5,magenta5,purple5,gray6,%
+       red6,brown6,yellow6,olive6,green6,teal6,cyan6,azure6,blue6,%
+       violet6,magenta6,purple6,gray7,red7,brown7,yellow7,olive7,%
+       green7,teal7,cyan7,azure7,blue7,violet7,magenta7,purple7,gray8,%
+       red8,brown8,yellow8,olive8,green8,teal8,cyan8,azure8,blue8,%
+       violet8,magenta8,purple8,gray9,red9,brown9,yellow9,olive9,%
+       green9,teal9,cyan9,azure9,blue9,violet9,magenta9,purple9,%
+       saturation,%
+     },%
+     % Keywords of class 4 : values of keys (in key=value)
+     morekeywords=[4]{%
+       low,medium,high,%
+     },%
+     % Keywords of class 5 : arguments specifications (after ":" in expl3
+     % syntax)
+     morekeywords=[5]{%
+     },%
+     % Keywords of class 6 : current package name (and possibly derived
+     % packages)
+     morekeywords=[6]{%
+       ninecolors,%
+     },%
+     % otherkeywords={},%
+     alsoletter={123456789},%
+     % alsodigit={},%
+     % alsoother={},%
+     sensitive,%
+   }[keywords,tex,comments]%
+
+   \lst at definelanguage[fontspec]{TeX}{%
+     % Control sequences names
+     moretexcs={%
+       EncodingAccent,EncodingCommand,EncodingComposite,%
+       EncodingCompositeCommand,EncodingSymbol,IfFontExistsTF,%
+       IfFontFeatureActiveTF,UndeclareAccent,UndeclareCommand,%
+       UndeclareComposite,UndeclareSymbol,addfontfeature,addfontfeatures,%
+       aliasfontfeature,aliasfontfeatureoption,defaultfontfeatures,fontspec,%
+       liningnums,newAATfeature,newfontface,newfontfamily,newfontfeature,%
+       newfontlanguage,newfontscript,newopentypefeature,oldstylenums,%
+       providefontface,providefontfamily,renewfontface,renewfontfamily,%
+       setboldmathrm,setfontface,setfontfamily,setmainfont,setmathrm,%
+       setmathsf,setmathtt,setmonofont,setromanfont,setsansfont,strong,%
+       strongfontdeclare,strongresetsetmainfont,%
+     },%
+     % Keywords of class 1 : keywords that contain other characters (since
+     % of the same class as the ones specified as 'otherkeywords')
+     morekeywords={%
+     },%
+     % Keywords of class 2 : environments names
+     morekeywords=[2]{%
+     },%
+     % Keywords of class 3 : mandatory arguments (not environments) &
+     % optional arguments which are keys (in key=value)
+     morekeywords=[3]{%
+       Alternate,Annotation,AutoFakeBold,AutoFakeSlant,BoldFeatures,%
+       BoldFont,BoldItalicFeatures,BoldItalicFont,BoldSlantedFeatures,%
+       BoldSlantedFont,BoldSwashFeatures,BoldSwashFont,CJKShape,%
+       CharacterVariant,CharacterWidth,Color,Colour,Contextuals,%
+       Diacritics,Extension,FakeBold,FakeSlant,FakeStretch,Font,FontFace,%
+       Fractions,HyphenChar,IgnoreFontspecFileItalicFeatures,ItalicFont,%
+       Kerning,Language,LetterSpace,Letters,Ligatures,LocalForms,%
+       NFSSFamily,Numbers,OpticalSize,Ornament,Path,PunctuationSpace,%
+       RawFeature,Scale,ScaleAgain,Script,Size,SizeFeatures,%
+       SlantedFeatures,SlantedFont,SmallCapsFeatures,SmallCapsFont,Style,%
+       StylisticAlternates,StylisticSet,SwashFeatures,SwashFont,%
+       UprightFeatures,UprightFont,Variant,Vertical,VerticalPosition,%
+       WordSpace,Mapping,Renderer,Traditional,Simplified,JIS1978,JIS1983,%
+       JIS1990,Expert,NLC,%
+     },%
+     % Keywords of class 4 : values of keys (in key=value)
+     morekeywords=[4]{%
+       AboveBase,Alternate,AlternateHalf,AlternateMetrics,%
+       AlternateProportional,Alternates,AlternatesForRotation,Arabic,%
+       ArabicOff,BelowBase,Common,Contextual,Cursive,Denominator,%
+       Discretionary,Expert,Full,Half,HalfMetrics,Historic,%
+       HorizontalKana,Inferior,Inner,Italic,JIS1978,JIS1983,JIS1990,%
+       KanaAlternates,Kerning,LineFinal,Lining,LiningOff,Lowercase,%
+       LowercaseOff,MarkToBase,MarkToMark,Monospaced,MonospacedOff,NLC,%
+       Numerator,Off,OldStyle,OldStyleOff,On,Ordinal,PetiteCaps,%
+       Proportional,ProportionalMetrics,ProportionalOff,Quarter,Rare,%
+       Required,Reset,ResetAll,RotatedGlyphs,Ruby,ScientificInferior,%
+       Simplified,SlashedZero,SlashedZeroOff,SmallCaps,Superior,Swash,%
+       TeX,Thurd,Titling,Traditional,Unicase,Uppercase,UppercaseOff,%
+       UppercasePetiteCaps,UppercaseSmallCaps,VerticalKana,WordFinal,%
+       WordInitial,ResetAll,c2sc,scmp,sinf,sups,zero,ss06,ss01,%
+       ss04,-liga,frac,titl,swsh,hist,hlig%
+     },%
+     % Keywords of class 5 : arguments specifications (after ":" in expl3
+     % syntax)
+     morekeywords=[5]{%
+     },%
+     % Keywords of class 6 : current package name (and possibly derived
+     % packages)
+     morekeywords=[6]{%
+       fontspec%
+     },%
+     % otherkeywords={},%
+     alsoletter={20614-},%
+     % alsodigit={},%
+     % alsoother={},%
+     sensitive,%
+   }[keywords,tex,comments]%
+
+   \lst at definelanguage[ProfCollege]{TeX}{%
+     % Control sequences names
+     moretexcs={%
+       Thales,Pourcentage,ResolEquation%
+     },%
+     % Keywords of class 1 : keywords that contain other characters (since
+     % of the same class as the ones specified as 'otherkeywords')
+     morekeywords={%
+     },%
+     % Keywords of class 2 : environments names
+     morekeywords=[2]{%
+       Twitter,Scratch,%
+     },%
+     % Keywords of class 3 : mandatory arguments (not environments) &
+     % optional arguments which are keys (in key=value)
+     morekeywords=[3]{%
+       Auteur,Logo,Calculer,%
+     },%
+     % Keywords of class 4 : values of keys (in key=value)
+     morekeywords=[4]{%
+       Place,Drapeau,Avancer,Repeter,Tournerg,FinBlocRepeter,%
+     },%
+     % Keywords of class 5 : arguments specifications (after ":" in expl3
+     % syntax)
+     morekeywords=[5]{%
+     },%
+     % Keywords of class 6 : current package name (and possibly derived
+     % packages)
+     morekeywords=[6]{%
+       ProfCollege,%
+     },%
+     % otherkeywords={},
+     % alsoletter={},
+     % alsodigit={},%
+     % alsoother={},%
+     sensitive,%
+   }[keywords,tex,comments]%
+
+   \lst at definelanguage[tkz-euclide]{TeX}{%
+     % Control sequences names
+     moretexcs={%
+       tkzDefPoint,tkzInterCC,tkzGetPoints,tkzDrawCircles,tkzDrawPolygon,%
+       tkzDrawPoints,tkzMarkSegments,tkzLabelSegments,tkzLabelPoints,%
+       tkzLabelPoints,%
+     },%
+     % Keywords of class 1 : keywords that contain other characters (since
+     % of the same class as the ones specified as 'otherkeywords')
+     morekeywords={%
+     },%
+     % Keywords of class 2 : environments names
+     morekeywords=[2]{%
+       tikzpicture,%
+     },%
+     % Keywords of class 3 : mandatory arguments (not environments) &
+     % optional arguments which are keys (in key=value)
+     morekeywords=[3]{%
+       mark,swap,above,scale,%
+     },%
+     % Keywords of class 4 : values of keys (in key=value)
+     morekeywords=[4]{%
+     },%
+     % Keywords of class 5 : arguments specifications (after ":" in expl3
+     % syntax)
+     morekeywords=[5]{%
+     },%
+     % Keywords of class 6 : current package name (and possibly derived
+     % packages)
+     morekeywords=[6]{%
+       tkz-euclide },%
+     % otherkeywords={},
+     % alsoletter={},
+     % alsodigit={},%
+     % alsoother={},%
+     sensitive,%
+   }[keywords,tex,comments]%
+
+   \lst at definelanguage[tkz-fct]{TeX}{%
+     % Control sequences names
+     moretexcs={%
+       tkzInit,tkzDrawX,tkzDrawY,tkzFct,tkzDefPoint,tkzDrawPoint,%
+       tkzPointShowCoord,tkzDefPoint,tkzDrawPoint,tkzPointShowCoord,%
+       tkzRep,%
+     },%
+     % Keywords of class 1 : keywords that contain other characters (since
+     % of the same class as the ones specified as 'otherkeywords')
+     morekeywords={%
+     },%
+     % Keywords of class 2 : environments names
+     morekeywords=[2]{%
+       tikzpicture,%
+     },%
+     % Keywords of class 3 : mandatory arguments (not environments) &
+     % optional arguments which are keys (in key=value)
+     morekeywords=[3]{%
+       xmin,xmax,ymin,ymax,samples,domain,xlabel,ylabel,xscale,yscale%
+     },%
+     % Keywords of class 4 : values of keys (in key=value)
+     morekeywords=[4]{%
+     },%
+     % Keywords of class 5 : arguments specifications (after ":" in expl3
+     % syntax)
+     morekeywords=[5]{%
+     },%
+     % Keywords of class 6 : current package name (and possibly derived
+     % packages)
+     morekeywords=[6]{%
+       tkz-fct },%
+     % otherkeywords={},
+     % alsoletter={},
+     % alsodigit={},%
+     % alsoother={},%
+     sensitive,%
+   }[keywords,tex,comments]%
+
+   \lst at definelanguage[tkz-tab]{TeX}{%
+     % Control sequences names
+     moretexcs={%
+       tkzTabInit,tkzTabLine,tkzTabVar,%
+     },%
+     % Keywords of class 1 : keywords that contain other characters (since
+     % of the same class as the ones specified as 'otherkeywords')
+     morekeywords={%
+     },%
+     % Keywords of class 2 : environments names
+     morekeywords=[2]{%
+       tikzpicture,%
+     },%
+     % Keywords of class 3 : mandatory arguments (not environments) &
+     % optional arguments which are keys (in key=value)
+     morekeywords=[3]{%
+       lgt,espcl,t,d,z,+,-,-D+/,+/,-/,+D/,scale,%
+     },%
+     % Keywords of class 4 : values of keys (in key=value)
+     morekeywords=[4]{%
+     },%
+     % Keywords of class 5 : arguments specifications (after ":" in expl3
+     % syntax)
+     morekeywords=[5]{%
+     },%
+     % Keywords of class 6 : current package name (and possibly derived
+     % packages)
+     morekeywords=[6]{%
+       tkz-tab },%
+     % otherkeywords={},%
+     alsoletter={+-/},%
+     % alsodigit={},%
+     % alsoother={},%
+     sensitive,%
+   }[keywords,tex,comments]%
+
+   \lst at definelanguage[mecaso]{TeX}{%
+     % Control sequences names
+     moretexcs={%
+       KineticT,%
+     },%
+     % Keywords of class 1 : keywords that contain other characters (since
+     % of the same class as the ones specified as 'otherkeywords')
+     morekeywords={%
+     },%
+     % Keywords of class 2 : environments names
+     morekeywords=[2]{%
+     },%
+     % Keywords of class 3 : mandatory arguments (not environments) &
+     % optional arguments which are keys (in key=value)
+     morekeywords=[3]{%
+     },%
+     % Keywords of class 4 : values of keys (in key=value)
+     morekeywords=[4]{%
+     },%
+     % Keywords of class 5 : arguments specifications (after ":" in expl3
+     % syntax)
+     morekeywords=[5]{%
+     },%
+     % Keywords of class 6 : current package name (and possibly derived
+     % packages)
+     morekeywords=[6]{%
+       mecaso },%
+     % otherkeywords={},
+     % alsoletter={},
+     % alsodigit={},%
+     % alsoother={},%
+     sensitive,%
+   }[keywords,tex,comments]%
+
+   \lst at definelanguage[hanzibox]{TeX}{%
+     % Control sequences names
+     moretexcs={%
+       hanzibox*,hanziboxset,%
+     },%
+     % Keywords of class 1 : keywords that contain other characters (since
+     % of the same class as the ones specified as 'otherkeywords')
+     morekeywords={%
+     },%
+     % Keywords of class 2 : environments names
+     morekeywords=[2]{%
+     },%
+     % Keywords of class 3 : mandatory arguments (not environments) &
+     % optional arguments which are keys (in key=value)
+     morekeywords=[3]{%
+       frametype,pinyinline,%
+     },%
+     % Keywords of class 4 : values of keys (in key=value)
+     morekeywords=[4]{%
+       none,true,%
+     },%
+     % Keywords of class 5 : arguments specifications (after ":" in expl3
+     % syntax)
+     morekeywords=[5]{%
+     },%
+     % Keywords of class 6 : current package name (and possibly derived
+     % packages)
+     morekeywords=[6]{%
+       hanzibox },%
+     % otherkeywords={},%
+     % alsoletter={},%
+     % alsodigit={},%
+     alsoother={*},%
+     sensitive,%
+   }[keywords,tex,comments]%
+
+   \lst at definelanguage[tikz-bagua]{TeX}{%
+     % Control sequences names
+     moretexcs={%
+       Bagua*,%
+     },%
+     % Keywords of class 1 : keywords that contain other characters (since
+     % of the same class as the ones specified as 'otherkeywords')
+     morekeywords={%
+     },%
+     % Keywords of class 2 : environments names
+     morekeywords=[2]{%
+     },%
+     % Keywords of class 3 : mandatory arguments (not environments) &
+     % optional arguments which are keys (in key=value)
+     morekeywords=[3]{%
+     },%
+     % Keywords of class 4 : values of keys (in key=value)
+     morekeywords=[4]{%
+     },%
+     % Keywords of class 5 : arguments specifications (after ":" in expl3
+     % syntax)
+     morekeywords=[5]{%
+     },%
+     % Keywords of class 6 : current package name (and possibly derived
+     % packages)
+     morekeywords=[6]{%
+       tikz-bagua },%
+     % otherkeywords={},%
+     % alsoletter={},%
+     % alsodigit={},%
+     alsoother={*},%
+     sensitive,%
+   }[keywords,tex,comments]%
+
+   \lst at definelanguage[bodeplot]{TeX}{%
+     % Control sequences names
+     moretexcs={%
+       addBodeZPKPlots },%
+     % Keywords of class 1 : keywords that contain other characters (since
+     % of the same class as the ones specified as 'otherkeywords')
+     morekeywords={%
+     },%
+     % Keywords of class 2 : environments names
+     morekeywords=[2]{%
+       BodePlot,%
+     },%
+     % Keywords of class 3 : mandatory arguments (not environments) &
+     % optional arguments which are keys (in key=value)
+     morekeywords=[3]{%
+       ylabel,ytick,distance,height,width,magnitude,z,p,k,%
+     },%
+     % Keywords of class 4 : values of keys (in key=value)
+     morekeywords=[4]{%
+       true,black,thick,linear,red,dashed,thick,asymptotic,blue,%
+       dotted,thick,%
+     },%
+     % Keywords of class 5 : arguments specifications (after ":" in expl3
+     % syntax)
+     morekeywords=[5]{%
+     },%
+     % Keywords of class 6 : current package name (and possibly derived
+     % packages)
+     morekeywords=[6]{%
+       bodeplot },%
+     % otherkeywords={},%
+     alsoletter={/},%
+     % alsodigit={},%
+     % alsoother={},%
+     sensitive,%
+   }[keywords,tex,comments]%
+
+   \lst at definelanguage[formal-grammar]{TeX}{%
+     % Control sequences names
+     moretexcs={%
+       highlight,firstcase,gralt,nonterm },%
+     % Keywords of class 1 : keywords that contain other characters (since
+     % of the same class as the ones specified as 'otherkeywords')
+     morekeywords={%
+     },%
+     % Keywords of class 2 : environments names
+     morekeywords=[2]{%
+       grammar },%
+     % Keywords of class 3 : mandatory arguments (not environments) &
+     % optional arguments which are keys (in key=value)
+     morekeywords=[3]{%
+     },%
+     % Keywords of class 4 : values of keys (in key=value)
+     morekeywords=[4]{%
+     },%
+     % Keywords of class 5 : arguments specifications (after ":" in expl3
+     % syntax)
+     morekeywords=[5]{%
+     },%
+     % Keywords of class 6 : current package name (and possibly derived
+     % packages)
+     morekeywords=[6]{%
+       formal-grammar },%
+     % otherkeywords={},
+     % alsoletter={},
+     % alsodigit={},%
+     % alsoother={},%
+     sensitive,%
+   }[keywords,tex,comments]%
+
+   \lst at definelanguage[numerica-plus]{TeX}{%
+     % Control sequences names
+     moretexcs={%
+       nmcRecur,%
+     },%
+     % Keywords of class 1 : keywords that contain other characters (since
+     % of the same class as the ones specified as 'otherkeywords')
+     morekeywords={%
+     },%
+     % Keywords of class 2 : environments names
+     morekeywords=[2]{%
+     },%
+     % Keywords of class 3 : mandatory arguments (not environments) &
+     % optional arguments which are keys (in key=value)
+     morekeywords=[3]{%
+       do,see1,f_,%
+     },%
+     % Keywords of class 4 : values of keys (in key=value)
+     morekeywords=[4]{%
+     },%
+     % Keywords of class 5 : arguments specifications (after ":" in expl3
+     % syntax)
+     morekeywords=[5]{%
+     },%
+     % Keywords of class 6 : current package name (and possibly derived
+     % packages)
+     morekeywords=[6]{%
+       numerica-plus },%
+     % otherkeywords={},%
+     alsoletter={_1},%
+     % alsodigit={},%
+     % alsoother={},%
+     sensitive,%
+   }[keywords,tex,comments]%
+
+   \lst at definelanguage[pascaltriangle]{TeX}{%
+     % Control sequences names
+     moretexcs={%
+       pascal,%
+     },%
+     % Keywords of class 1 : keywords that contain other characters (since
+     % of the same class as the ones specified as 'otherkeywords')
+     morekeywords={%
+     },%
+     % Keywords of class 2 : environments names
+     morekeywords=[2]{%
+     },%
+     % Keywords of class 3 : mandatory arguments (not environments) &
+     % optional arguments which are keys (in key=value)
+     morekeywords=[3]{%
+     },%
+     % Keywords of class 4 : values of keys (in key=value)
+     morekeywords=[4]{%
+     },%
+     % Keywords of class 5 : arguments specifications (after ":" in expl3
+     % syntax)
+     morekeywords=[5]{%
+     },%
+     % Keywords of class 6 : current package name (and possibly derived
+     % packages)
+     morekeywords=[6]{%
+       pascaltriangle },%
+     % otherkeywords={},
+     % alsoletter={},
+     % alsodigit={},%
+     % alsoother={},%
+     sensitive,%
+   }[keywords,tex,comments]%
+
+   \lst at definelanguage[pgf-interference]{TeX}{%
+     % Control sequences names
+     moretexcs={%
+       pgfinterferencepattern,%
+     },%
+     % Keywords of class 1 : keywords that contain other characters
+     % (since of the same class as the ones specified as 'otherkeywords')
+     morekeywords={%
+     },%
+     % Keywords of class 2 : environments names
+     morekeywords=[2]{%
+     },%
+     % Keywords of class 3 : mandatory arguments (not environments) &
+     % optional arguments which are keys (in key=value)
+     morekeywords=[3]{%
+       slits,wavelength,slit-distance,intensity,ruler,scale,%
+     },%
+     % Keywords of class 4 : values of keys (in key=value)
+     morekeywords=[4]{%
+     },%
+     % Keywords of class 5 : arguments specifications (after ":" in expl3
+     % syntax)
+     morekeywords=[5]{%
+     },%
+     % Keywords of class 6 : current package name (and possibly derived
+     % packages)
+     morekeywords=[6]{%
+       pgf-interference%
+     },%
+     % otherkeywords={},%
+     alsoletter={-},%
+     % alsodigit={},%
+     % alsoother={},%
+     sensitive,%
+   }[keywords,tex,comments]%
+
+   \lst at definelanguage[clistmap]{TeX}{%
+     % Control sequences names
+     moretexcs={%
+       ExplSyntaxOn,ExplSyntaxOff,clistmap,%
+     },%
+     % Keywords of class 1 : keywords that contain other characters (since
+     % of the same class as the ones specified as 'otherkeywords')
+     morekeywords={%
+     },%
+     % Keywords of class 2 : environments names
+     morekeywords=[2]{%
+     },%
+     % Keywords of class 3 : mandatory arguments (not environments) &
+     % optional arguments which are keys (in key=value)
+     morekeywords=[3]{%
+       first_math,serial_rest_math_and,%
+     },%
+     % Keywords of class 4 : values of keys (in key=value)
+     morekeywords=[4]{%
+     },%
+     % Keywords of class 5 : arguments specifications (after ":" in expl3
+     % syntax)
+     morekeywords=[5]{%
+       nnn,N,%
+     },%
+     % Keywords of class 6 : current package name (and possibly derived
+     % packages)
+     morekeywords=[6]{%
+       clistmap },%
+     % otherkeywords={},%
+     alsoletter={_},%
+     % alsodigit={},%
+     % alsoother={},%
+     sensitive,%
+   }[keywords,tex,comments]%
+
+   \lst at definelanguage[hexboard]{TeX}{%
+     % Control sequences names
+     moretexcs={%
+       hexmove,%
+     },%
+     % Keywords of class 1 : keywords that contain other characters (since
+     % of the same class as the ones specified as 'otherkeywords')
+     morekeywords={%
+     },%
+     % Keywords of class 2 : environments names
+     morekeywords=[2]{%
+       hexgamelabels,%
+     },%
+     % Keywords of class 3 : mandatory arguments (not environments) &
+     % optional arguments which are keys (in key=value)
+     morekeywords=[3]{%
+     },%
+     % Keywords of class 4 : values of keys (in key=value)
+     morekeywords=[4]{%
+     },%
+     % Keywords of class 5 : arguments specifications (after ":" in expl3
+     % syntax)
+     morekeywords=[5]{%
+     },%
+     % Keywords of class 6 : current package name (and possibly derived
+     % packages)
+     morekeywords=[6]{%
+       hexboard },%
+     % otherkeywords={},
+     % alsoletter={},
+     % alsodigit={},%
+     % alsoother={},%
+     sensitive,%
+   }[keywords,tex,comments]%
+
+   \lst at definelanguage[robotarm]{TeX}{%
+     % Control sequences names
+     moretexcs={%
+       robotArm,%
+     },%
+     % Keywords of class 1 : keywords that contain other characters (since
+     % of the same class as the ones specified as 'otherkeywords')
+     morekeywords={%
+     },%
+     % Keywords of class 2 : environments names
+     morekeywords=[2]{%
+       tikzpicture },%
+     % Keywords of class 3 : mandatory arguments (not environments) &
+     % optional arguments which are keys (in key=value)
+     morekeywords=[3]{%
+       config,q1,q2,q3,%
+     },%
+     % Keywords of class 4 : values of keys (in key=value)
+     morekeywords=[4]{%
+     },%
+     % Keywords of class 5 : arguments specifications (after ":" in expl3
+     % syntax)
+     morekeywords=[5]{%
+     },%
+     % Keywords of class 6 : current package name (and possibly derived
+     % packages)
+     morekeywords=[6]{%
+       robotarm },%
+     % otherkeywords={},%
+     alsoletter={123},%
+     % alsodigit={},%
+     % alsoother={},%
+     sensitive,%
+   }[keywords,tex,comments]%
+
+   \lst at definelanguage[amsfonts]{TeX}{%
+     % Control sequences names
+     moretexcs={%
+       mathbb,mathfrak,angle,Box,dasharrow,dashleftarrow,dashrightarrow,%
+       Diamond,hbar,Join,leadsto,lhd,llcorner,lozenge,lrcorner,mho,%
+       rhd,rightleftharpoons,rightsquigarrow,sqsubset,sqsupset,square,%
+       trianglelefteq,trianglerighteq,ulcorner,unlhd,unrhd,urcorner,%
+       vartriangleleft,vartriangleright,widehat{arg},widetilde{arg},yen,%
+       checkmark,circledR,maltese,%
+     },%
+     % Keywords of class 1 : keywords that contain other characters (since
+     % of the same class as the ones specified as 'otherkeywords')
+     morekeywords={%
+     },%
+     % Keywords of class 2 : environments names
+     morekeywords=[2]{%
+     },%
+     % Keywords of class 3 : mandatory arguments (not environments) &
+     % optional arguments which are keys (in key=value)
+     morekeywords=[3]{%
+     },%
+     % Keywords of class 4 : values of keys (in key=value)
+     morekeywords=[4]{%
+     },%
+     % Keywords of class 5 : arguments specifications (after ":" in expl3
+     % syntax)
+     morekeywords=[5]{%
+     },%
+     % Keywords of class 6 : current package name (and possibly derived
+     % packages)
+     morekeywords=[6]{%
+       amsfonts },%
+     % otherkeywords={},
+     % alsoletter={},
+     % alsodigit={},%
+     % alsoother={},%
+     sensitive,%
+   }[keywords,tex,comments]%
+
+   \lst at definelanguage[biolinum]{TeX}{%
+     % Control sequences names
+     moretexcs={%
+       biolinum,biolinumOsF,biolinumLF,biolinumkey,sufigures,textsu,%
+       textsuperior,oldstylenums,liningnums,oldstylenumsf,liningnumsf,%
+       tabularnums,proportionalnums,tabularnumsf,proportionalnumsf,%
+       DeclareTextGlyphY,biolinumGlyph,biolinumKeyGlyph,LKey,LKeyPad,%
+       LKeyF,LKeyAltF,LKeyStrgAltF,LKeyCtrlAltF,LKeyStrgX,LKeyCtrlX,%
+       LKeyShiftX,LKeyAltX,LKeyAltGrX,LKeyShiftStrgX,LKeyShiftCtrlX,%
+       LKeyShiftAltX,LKeyShiftAltGrX,LKeyStrgAltX,LKeyCtrlAltX,%
+       LKeyStrgAltEnt,LKeyCtrlAltEnt,LKeyReset,LKeyTux,LKeyWin,LKeyMenu,%
+       LKeyStrg,LKeyCtrl,LKeyAlt,LKeyAltGr,LKeyShift,LKeyTab,LKeyEnter,%
+       LKeyCapsLock,LKeyPos,LKeyEntf,LKeyEinf,LKeyLeer,LKeyEsc,LKeyEnde,%
+       LKeyCommand,LKeyOptionKey,LKeyBack,LKeyUp,LKeyDown,LKeyLeft,%
+       LKeyRight,LKeyPgUp,LKeyPgDown,LKeyAt,LKeyFn,LKeyHome,LKeyDel,%
+       LKeySpace,LKeyScreenUp,LKeyScreenDown,LKeyIns,LKeyEnd,LKeyGNU,%
+       LKeyPageUp,LKeyPageDown,LMouseEmpty,LMouseN,LMouseL,LMouseM,%
+       LMouseR,LMouseLR,LMouseIIEmpty,LMouseIIN,LMouseIIL,LMouseIIR,%
+       LMouseIILR,%
+     },%
+     % Keywords of class 1 : keywords that contain other characters (since
+     % of the same class as the ones specified as 'otherkeywords')
+     morekeywords={%
+     },%
+     % Keywords of class 2 : environments names
+     morekeywords=[2]{%
+     },%
+     % Keywords of class 3 : mandatory arguments (not environments) &
+     % optional arguments which are keys (in key=value)
+     morekeywords=[3]{%
+       sfdefault,type1,nofontspec,lining,nf,lf,oldstyle,osf,sflining,%
+       sflf,sfoldstyle,sfosf,osfss,tabular,t,p,sftabular,sft,%
+       sfproportional,sfp,scaled,scale,defaultfeatures,space,uni0020,%
+       exclam,uni0021,quotedbl,uni0022,numbersign,uni0023,dollar,%
+       uni0024,percent,uni0025,ampersand,uni0026,quotesingle,uni0027,%
+       parenleft,uni0028,parenright,uni0029,asterisk,uni002A,plus,%
+       uni002B,comma,uni002C,hyphen,uni002D,period,uni002E,slash,%
+       uni002F,zero,uni0030,one,uni0031,two,uni0032,three,uni0033,%
+       four,uni0034,five,uni0035,six,uni0036,seven,uni0037,eight,%
+       uni0038,nine,uni0039,colon,uni003A,semicolon,uni003B,less,%
+       uni003C,equal,uni003D,greater,uni003E,question,uni003F,at,%
+       bracketleft,uni005B,backslash,uni005C,bracketright,uni005D,%
+       asciicircum,uni005E,underscore,uni005F,grave,uni0060,uni007A,%
+       braceleft,uni007B,bar,uni007C,braceright,uni007D,asciitilde,%
+       uni007E,exclamdown,uni00A1,cent,uni00A2,sterling,uni00A3,%
+       currency,uni00A4,yen,uni00A5,brokenbar,uni00A6,section,uni00A7,%
+       dieresis,uni00A8,guillemotleft,uni00AB,uni00AD,degree,uni00B0,%
+       plusminus,uni00B1,acute,uni00B4,uni00B5,periodcentered,uni00B7,%
+       cedilla,uni00B8,guillemotright,uni00BB,Agrave,uni00C0,Aacute,%
+       uni00C1,Acircumflex,uni00C2,Atilde,uni00C3,Adieresis,uni00C4,%
+       Aring,uni00C5,Ccedilla,uni00C7,Egrave,uni00C8,Eacute,uni00C9,%
+       Ecircumflex,uni00CA,Edieresis,uni00CB,Igrave,uni00CC,Iacute,%
+       uni00CD,Icircumflex,uni00CE,Idieresis,uni00CF,Eth,uni00D0,Ntilde,%
+       uni00D1,Ograve,uni00D2,Oacute,uni00D3,Ocircumflex,uni00D4,Otilde,%
+       uni00D5,Odieresis,uni00D6,multiply,uni00D7,Oslash,uni00D8,Ugrave,%
+       uni00D9,Uacute,uni00DA,Ucircumflex,uni00DB,Udieresis,uni00DC,%
+       Yacute,uni00DD,Thorn,uni00DE,germandbls,uni00DF,agrave,uni00E0,%
+       aacute,uni00E1,acircumflex,uni00E2,atilde,uni00E3,adieresis,%
+       uni00E4,aring,uni00E5,ae,uni00E6,ccedilla,uni00E7,egrave,%
+       uni00E8,eacute,uni00E9,ecircumflex,uni00EA,edieresis,uni00EB,%
+       igrave,uni00EC,iacute,uni00ED,icircumflex,uni00EE,idieresis,%
+       uni00EF,eth,uni00F0,ntilde,uni00F1,ograve,uni00F2,oacute,%
+       uni00F3,ocircumflex,uni00F4,otilde,uni00F5,odieresis,uni00F6,%
+       divide,uni00F7,oslash,uni00F8,ugrave,uni00F9,uacute,uni00FA,%
+       ucircumflex,uni00FB,udieresis,uni00FC,yacute,uni00FD,thorn,%
+       uni00FE,ydieresis,uni00FF,Amacron,uni0100,amacron,uni0101,Abreve,%
+       uni0102,abreve,uni0103,Aogonek,uni0104,aogonek,uni0105,Cacute,%
+       uni0106,cacute,uni0107,Ccircumflex,uni0108,ccircumflex,uni0109,%
+       Cdotaccent,uni010A,cdotaccent,uni010B,Ccaron,uni010C,ccaron,%
+       uni010D,Dcaron,uni010E,dcaron,uni010F,Dcroat,uni0110,dcroat,%
+       uni0111,Emacron,uni0112,emacron,uni0113,Ebreve,uni0114,ebreve,%
+       uni0115,Edotaccent,uni0116,edotaccent,uni0117,Eogonek,uni0118,%
+       eogonek,uni0119,Ecaron,uni011A,ecaron,uni011B,Gcircumflex,%
+       uni011C,gcircumflex,uni011D,Gbreve,uni011E,gbreve,uni011F,%
+       Gdotaccent,uni0120,gdotaccent,uni0121,Gcommaaccent,uni0122,%
+       gcommaaccent,uni0123,Hcircumflex,uni0124,hcircumflex,uni0125,Hbar,%
+       uni0126,hbar,uni0127,Itilde,uni0128,itilde,uni0129,Imacron,%
+       uni012A,imacron,uni012B,Ibreve,uni012C,ibreve,uni012D,Iogonek,%
+       uni012E,iogonek,uni012F,Idotaccent,uni0130,dotlessi,uni0131,IJ,%
+       uni0132,ij,uni0133,Jcircumflex,uni0134,jcircumflex,uni0135,%
+       Kcommaaccent,uni0136,kcommaaccent,uni0137,kgreenlandic,uni0138,%
+       Lacute,uni0139,lacute,uni013A,Lcommaaccent,uni013B,lcommaaccent,%
+       uni013C,Lcaron,uni013D,lcaron,uni013E,Ldot,uni013F,ldot,uni0140,%
+       Lslash,uni0141,lslash,uni0142,Nacute,uni0143,nacute,uni0144,%
+       Ncommaaccent,uni0145,ncommaaccent,uni0146,Ncaron,uni0147,ncaron,%
+       uni0148,napostrophe,uni0149,Omacron,uni014C,omacron,uni014D,%
+       Obreve,uni014E,obreve,uni014F,Ohungarumlaut,uni0150,ohungarumlaut,%
+       uni0151,Racute,uni0154,racute,uni0155,Rcommaaccent,uni0156,%
+       rcommaaccent,uni0157,Rcaron,uni0158,rcaron,uni0159,Sacute,%
+       uni015A,sacute,uni015B,Scircumflex,uni015C,scircumflex,uni015D,%
+       Scedilla,uni015E,scedilla,uni015F,Scaron,uni0160,scaron,uni0161,%
+       Tcedilla,uni0162,tcedilla,uni0163,Tcaron,uni0164,tcaron,uni0165,%
+       Tbar,uni0166,tbar,uni0167,Utilde,uni0168,utilde,uni0169,Umacron,%
+       uni016A,umacron,uni016B,Ubreve,uni016C,ubreve,uni016D,Uring,%
+       uni016E,uring,uni016F,Uhungarumlaut,uni0170,uhungarumlaut,uni0171,%
+       Uogonek,uni0172,uogonek,uni0173,Wcircumflex,uni0174,wcircumflex,%
+       uni0175,Ycircumflex,uni0176,ycircumflex,uni0177,Ydieresis,uni0178,%
+       Zacute,uni0179,zacute,uni017A,Zdotaccent,uni017B,zdotaccent,%
+       uni017C,Zcaron,uni017D,zcaron,uni017E,h.superior,uni02B0,%
+       hhook.superior,uni02B1,j.superior,uni02B2,r.superior,uni02B3,%
+       rturned.superior,uni02B4,rhookturned.superior,uni02B5,%
+       Rsmallinverted.superior,uni02B6,w.superior,uni02B7,y.superior,%
+       uni02B8,uni02B9,uni02BA,uni02BB,afii57929,uni02BC,afii64937,%
+       uni02BD,uni02BE,uni02BF,uni02C0,uni02C1,uni02C2,uni02C3,uni02C4,%
+       uni02C5,circumflex,uni02C6,caron,uni02C7,uni02C8,uni02C9,uni02CA,%
+       uni02CB,uni02CC,uni02CD,uni02CE,uni02CF,uni02D0,uni02D1,uni02D2,%
+       uni02D3,uni02D4,uni02D5,uni02D6,uni02D7,breve,uni02D8,dotaccent,%
+       uni02D9,ring,uni02DA,ogonek,uni02DB,tilde,uni02DC,hungarumlaut,%
+       uni02DD,uni02DE,uni02DF,gammalatin.superior,uni02E0,l.superior,%
+       uni02E1,s.superior,uni02E2,x.superior,uni02E3,%
+       glottalstopreversed.superior,uni02E4,uni02EC,uni02ED,uni02EE,%
+       gravecomb,uni0300,acutecomb,uni0301,uni0302,tildecomb,uni0303,%
+       uni0304,uni0305,uni0306,uni0307,uni0308,hookabovecomb,uni0309,%
+       uni030A,uni030B,uni030C,uni030D,uni030E,uni030F,uni0310,uni0311,%
+       uni0312,uni0313,uni0314,uni0315,uni0316,uni0317,uni0318,uni0319,%
+       uni031A,uni031B,uni031C,uni031D,uni031E,uni031F,uni0320,uni0321,%
+       uni0322,dotbelowcomb,uni0323,uni0324,uni0325,uni0326,uni0327,%
+       uni0328,uni0329,uni032A,uni032B,uni032C,uni032D,uni032E,uni032F,%
+       uni0330,uni0331,uni0338,uni0342,uni0343,uni0351,uni0357,uni0358,%
+       uni0359,uni035A,uni035B,uni035C,uni035D,uni035E,uni035F,uni0360,%
+       uni0361,uni0362,uni0363,uni0374,uni0375,afii57799,uni05B0,%
+       afii57801,uni05B1,afii57800,uni05B2,afii57802,uni05B3,afii57793,%
+       uni05B4,afii57794,uni05B5,afii57795,uni05B6,afii57798,uni05B7,%
+       afii57797,uni05B8,afii57806,uni05B9,uni05BA,afii57796,uni05BB,%
+       afii57807,uni05BC,afii57839,uni05BD,afii57645,uni05BE,afii57841,%
+       uni05BF,afii57842,uni05C0,afii57804,uni05C1,afii57803,uni05C2,%
+       afii57658,uni05C3,uni05C6,afii57664,uni05D0,afii57665,uni05D1,%
+       afii57666,uni05D2,afii57667,uni05D3,afii57668,uni05D4,afii57669,%
+       uni05D5,afii57670,uni05D6,afii57671,uni05D7,afii57672,uni05D8,%
+       afii57673,uni05D9,afii57674,uni05DA,afii57675,uni05DB,afii57676,%
+       uni05DC,afii57677,uni05DD,afii57678,uni05DE,afii57679,uni05DF,%
+       afii57680,uni05E0,afii57681,uni05E1,afii57682,uni05E2,afii57683,%
+       uni05E3,afii57684,uni05E4,afii57685,uni05E5,afii57686,uni05E6,%
+       afii57687,uni05E7,afii57688,uni05E8,afii57689,uni05E9,afii57690,%
+       uni05EA,afii57716,uni05F0,afii57717,uni05F1,afii57718,uni05F2,%
+       arrowleft,uni2190,arrowup,uni2191,arrowright,uni2192,arrowdown,%
+       uni2193,arrowboth,uni2194,arrowupdn,uni2195,uni2196,uni2197,%
+       uni2198,uni2199,uni219A,uni219B,uni21A5,uni21A7,uni21BC,uni21BD,%
+       uni21C0,uni21C1,arrowdblleft,uni21D0,arrowdblup,uni21D1,%
+       arrowdblright,uni21D2,arrowdbldown,uni21D3,arrowdblboth,uni21D4,%
+       uni21D5,Nwarrow,uni21D6,Nearrow,uni21D7,Searrow,uni21D8,Swarrow,%
+       uni21D9,uni2318,uni2325,uni2326,uni2327,uni232B,uni237D,uni2380,%
+       uni2423,filledbox,uni25A0,H22073,uni25A1,triagup,uni25B2,uni25B3,%
+       uni25B6,uni25B7,triagdn,uni25BC,uni25BD,uni25C0,uni25C1,uni25C6,%
+       uni25C7,uni25C9,lozenge,uni25CA,circle,uni25CB,uni25CE,H18533,%
+       uni25CF,uni25D0,uni25D1,uni25D2,uni25D3,uni25D4,uni25D5,uni25D6,%
+       uni25D7,openbullet,uni25E6,uni2605,uni2619,uni261B,uni261E,%
+       uni2627,uni262F,uni2639,uni263A,uni263B,uni263C,uni263D,uni263E,%
+       uni263F,female,uni2640,uni2641,male,uni2642,uni2643,uni2644,%
+       uni2645,uni2646,uni2647,uni2648,uni2649,uni264A,uni264B,uni264C,%
+       uni264D,uni264E,uni264F,uni2650,uni2651,uni2652,uni2653,uni2660,%
+       uni2663,uni2665,uni2666,uni2669,musicalnote,uni266A,%
+       musicalnotedbl,uni266B,uni266C,uni2695,uni2698,uni26A2,uni26A3,%
+       uni26A4,uni26A5,uni26AD,uni2767,uni2776,uni2777,uni2778,uni2779,%
+       uni277A,uni277B,uni277C,uni277D,uni277E,uni277F,T_u_x,uniE000,%
+       uniE104,uniE128,uniE129,uniE12A,uniE130,uniE131,uniE132,uniE133,%
+       uniE134,uniE135,uniE138,uniE139,uniE13A,uniE13C,uniE13D,uniE168,%
+       B_a_c_k,uniE16E,S_t_r_g,uniE170,A_l_t,uniE171,A_l_t_G_r,uniE172,%
+       C_t_r_l,uniE173,S_h_i_f_t,uniE174,T_a_b,uniE175,E_n_t_e_r,%
+       uniE176,C_a_p_s_l_o_c_k,uniE177,F_1,uniE178,F_2,uniE179,F_3,%
+       uniE17A,F_4,uniE17B,F_5,uniE17C,F_6,uniE17D,F_7,uniE17E,F_8,%
+       uniE17F,F_9,uniE180,F_1_0,uniE181,F_1_1,uniE182,F_1_2,uniE183,%
+       F_1_3,uniE184,F_1_4,uniE185,F_1_5,uniE186,F_1_6,uniE187,uniE188,%
+       H_o_m_e,uniE189,D_e_l,uniE18A,I_n_s,uniE18B,uniE18C,E_n_d,%
+       uniE18E,G_N_U,uniE190,P_o_s_1,uniE191,E_n_t_f,uniE192,E_i_n_f,%
+       uniE193,L_e_e_r,uniE194,E_s_c,uniE195,E_n_d_e,uniE196,uniE198,%
+       uniE199,uniE19A,uniE19B,uniE1A0,uniE1A1,uniE1A2,uniE1A3,uniE1A4,%
+       uniE1A5,uniE1A6,uniE1A7,uniE1A8,uniE1A9,uniE1AA,uniE1AB,uniE1AC,%
+       uniE1AD,uniE1AE,uniE1B0,uniE1B1,grave.cap,uniE358,acute.cap,%
+       uniE359,circumflex.cap,uniE35A,caron.cap,uniE35B,breve.cap,%
+       uniE35C,hungarumlaut.cap,uniE35D,space_uni030F.cap,uniE35E,%
+       breveinvertedcmb.cap,uniE35F,breve.cyrcap,uniE360,breve.cyr,%
+       uniE361,dieresis.cap,uniE362,hookabovecomb.cap,uniE363,uniFFFD,%
+     },%
+     % Keywords of class 4 : values of keys (in key=value)
+     morekeywords=[4]{%
+     },%
+     % Keywords of class 5 : arguments specifications (after ":" in expl3
+     % syntax)
+     morekeywords=[5]{%
+     },%
+     % Keywords of class 6 : current package name (and possibly derived
+     % packages)
+     morekeywords=[6]{%
+       biolinum },%
+     % otherkeywords={},
+     % alsoletter={},
+     % alsodigit={},%
+     % alsoother={},%
+     sensitive,%
+   }[keywords,tex,comments]%
+
+   \lst at definelanguage[biblatex]{TeX}{%
+     % Control sequences names
+     moretexcs={%
+       cite,Cite,parencite,Parencite,footcite,footcitetext,smartcite,%
+       Smartcite,textcite,Textcite,supercite,cites,Cites,parencites,%
+       Parencites,footcitesfootcitetexts,textcites,Textcites,supercites,%
+       autocite,Autocite,autocite*,Autocite*,autocites,Autocites,%
+       citeauthor,Citeauthor,citetitle,citetitle*,citeyear,citeurl,%
+       parentext,brackettext,nocite,fullcite,footfullcite,volcite,%
+       Volcite,pvolcite,Pvolcite,fvolcite,ftvolcite,tvolcite,Tvolcite,%
+       avolcite,Avolcite,notecite,Notecite,pnotecite,Pnotecite,fnotecite,%
+       citename,citelist,citefield,printbibliography,bibliography,%
+       citedate,ExecuteBibliographyOptions,defbibnote,psq,psqq,%
+       addbibresource,AtNextCite,DeclareNameAlias,%
+     },%
+     % Keywords of class 1 : keywords that contain other characters (since
+     % of the same class as the ones specified as 'otherkeywords')
+     morekeywords={%
+     },%
+     % Keywords of class 2 : environments names
+     morekeywords=[2]{%
+     },%
+     % Keywords of class 3 : mandatory arguments (not environments) &
+     % optional arguments which are keys (in key=value)
+     morekeywords=[3]{%
+       abstract,addendum,afterword,annotation,annotator,author,%
+       authortype,bookauthor,bookpagination,booksubtitle,booktitle,%
+       booktitleaddon,chapter,commentator,date,doi,edition,editor,%
+       editora,editorb,editorc,editortype,editoratype,editorbtype,%
+       editorctype,eid,eprint,eprintclass,eprinttype,eventdate,%
+       eventtitle,file,foreword,holder,howpublished,indextitle,%
+       institution,introduction,isan,isbn,ismn,isrn,issn,issue,%
+       issuesubtitle,issuetitle,iswc,journalsubtitle,journaltitle,label,%
+       language,library,location,mainsubtitle,maintitle,maintitleaddon,%
+       month,nameaddon,note,number,organization,origdate,origlanguage,%
+       origlocation,origpublisher,origtitle,pages,pagetotal,pagination,%
+       part,publisher,pubstate,reprinttitle,series,shortauthor,%
+       shorteditor,shorthand,shorthandintro,shortjournal,shortseries,%
+       shorttitle,subtitle,title,titleaddon,translator,type,url,urldate,%
+       venue,version,volume,volumes,year,crossref,entryset,entrysubtype,%
+       execute,gender,hyphenation,indexsorttitle,keywords,options,%
+       presort,sortkey,sortname,sorttitle,sortyear,xref,annote,%
+       archiveprefix,journal,key,pdf,primaryclass,school,address,%
+       datamodel,%
+       %
+       backend,style,citestyle,bibstyle,sorting,maxnames,minnames,%
+       maxitems,minitems,backref,abbreviate,firstinits,prenote,postnote,%
+       useprefix,autopunct,giveninits,labelname,given-family,%
+     },%
+     % Keywords of class 4 : values of keys (in key=value)
+     morekeywords=[4]{%
+       submitted,inpress,danish dutch,american,USenglish,english,british,%
+       UKenglish,canadian,australian,newzealand,finnish,french,francais,%
+       canadien,german,ngerman,austrian,naustrian,greek,italian,norsk,%
+       nynorsk,brazil,portuges,spanish,swedish,%
+       %
+       biber,numeric,numeric-comp,numeric-verb,alphabetic,alphabetic-verb,%
+       authoryear,authoryear-comp,authoryear-ibid,authoryear-icomp,%
+       authortitle,authortitle-comp,authortitle-ibid,authortitle-icomp,%
+       authortitle-terse,authortitle-tcomp,authortitle-ticomp,verbose,%
+       verbose-ibid,verbose-note,verbose-inote,verbose-trad1,verbose-trad2,%
+       verbose-trad3,reading,draft,debug,and,inline,footnote,%
+       superscript,plain,nyt,ynt,none,false,true,%
+     },%
+     % Keywords of class 5 : arguments specifications (after ":" in expl3
+     % syntax)
+     morekeywords=[5]{%
+     },%
+     % Keywords of class 6 : current package name (and possibly derived
+     % packages)
+     morekeywords=[6]{%
+       biblatex },%
+     % directives
+     directives={%
+       article,book,inbook,bookinbook,suppbook,booklet,collection,%
+       conference,incollection,suppcollection,manual,misc,online,patent,%
+       periodical,suppperiodical,proceedings,inproceedings,reference,%
+       inreference,report,thesis,unpublished,masterthesis,phdthesis,%
+       string,comment,%
+     },%
+     % otherkeywords={},%
+     alsoletter={-},%
+     % alsodigit={},%
+     delim=*[directive]@,sensitive=false,%
+   }[keywords,directives,tex,comments]%
+
+   \lst at definelanguage[lthooks]{TeX}{%
+     % Control sequences names
+     moretexcs={%
+       AddToHook,BeforeBeginEnvironment,AtBeginEnvironment,AtEndEnvironment,%
+       AfterEndEnvironment,%
+     },%
+     % Keywords of class 1 : keywords that contain other characters (since
+     % of the same class as the ones specified as 'otherkeywords')
+     morekeywords={%
+     },%
+     % Keywords of class 2 : environments names
+     morekeywords=[2]{%
+     },%
+     % Keywords of class 3 : mandatory arguments (not environments) &
+     % optional arguments which are keys (in key=value)
+     morekeywords=[3]{%
+       % begin,end,
+       before,after,begindocument,begindocument/before,%
+       begindocument/end,enddocument,enddocument/afterlastpage,%
+       enddocument/afteraux,enddocument/info,enddocument/end,env,%
+     },%
+     % Keywords of class 4 : values of keys (in key=value)
+     morekeywords=[4]{%
+     },%
+     % Keywords of class 5 : arguments specifications (after ":" in expl3
+     % syntax)
+     morekeywords=[5]{%
+     },%
+     % Keywords of class 6 : current package name (and possibly derived
+     % packages)
+     morekeywords=[6]{%
+       lthooks },%
+     % otherkeywords={},%
+     alsoletter={/},%
+     % alsodigit={},%
+     % alsoother={},%
+     sensitive,%
+   }[keywords,tex,comments]%
+
+   \lst at definelanguage[l3keys2e]{TeX}{%
+     % Control sequences names
+     moretexcs={%
+       ProcessKeysOptions,ProcessKeysPackageOptions,%
+     },%
+     % Keywords of class 1 : keywords that contain other characters (since
+     % of the same class as the ones specified as 'otherkeywords')
+     morekeywords={%
+     },%
+     % Keywords of class 2 : environments names
+     morekeywords=[2]{%
+     },%
+     % Keywords of class 3 : mandatory arguments (not environments) &
+     % optional arguments which are keys (in key=value)
+     morekeywords=[3]{%
+     },%
+     % Keywords of class 4 : values of keys (in key=value)
+     morekeywords=[4]{%
+     },%
+     % Keywords of class 5 : arguments specifications (after ":" in expl3
+     % syntax)
+     morekeywords=[5]{%
+     },%
+     % Keywords of class 6 : current package name (and possibly derived
+     % packages)
+     morekeywords=[6]{%
+       l3keys2e },%
+     % otherkeywords={},%
+     alsoletter={23},%
+     % alsodigit={},%
+     % alsoother={},%
+     sensitive,%
+   }[keywords,tex,comments]%
+
+   \lst at definelanguage[varioref]{TeX}{%
+     % Control sequences names
+     moretexcs={%
+       vref,vpageref,%
+     },%
+     % Keywords of class 1 : keywords that contain other characters (since
+     % of the same class as the ones specified as 'otherkeywords')
+     morekeywords={%
+     },%
+     % Keywords of class 2 : environments names
+     morekeywords=[2]{%
+     },%
+     % Keywords of class 3 : mandatory arguments (not environments) &
+     % optional arguments which are keys (in key=value)
+     morekeywords=[3]{%
+     },%
+     % Keywords of class 4 : values of keys (in key=value)
+     morekeywords=[4]{%
+     },%
+     % Keywords of class 5 : arguments specifications (after ":" in expl3
+     % syntax)
+     morekeywords=[5]{%
+     },%
+     % Keywords of class 6 : current package name (and possibly derived
+     % packages)
+     morekeywords=[6]{%
+       varioref },%
+     % otherkeywords={},
+     % alsoletter={},
+     % alsodigit={},%
+     % alsoother={},%
+     sensitive,%
+   }[keywords,tex,comments]%
+
+   \lst at definelanguage[hologo]{TeX}{%
+     % Control sequences names
+     moretexcs={%
+       hologo },%
+     % Keywords of class 1 : keywords that contain other characters (since
+     % of the same class as the ones specified as 'otherkeywords')
+     morekeywords={%
+     },%
+     % Keywords of class 2 : environments names
+     morekeywords=[2]{%
+     },%
+     % Keywords of class 3 : mandatory arguments (not environments) &
+     % optional arguments which are keys (in key=value)
+     morekeywords=[3]{%
+     },%
+     % Keywords of class 4 : values of keys (in key=va ,lue)
+     morekeywords=[4]{%
+     },%
+     % Keywords of class 5 : arguments specifications (after ":" in expl3
+     % syntax)
+     morekeywords=[5]{%
+     },%
+     % Keywords of class 6 : current package name (and possibly derived
+     % packages)
+     morekeywords=[6]{%
+       hologo%
+     },%
+     % otherkeywords={},
+     % alsoletter={},
+     % alsodigit={},%
+     % alsoother={},%
+     sensitive,%
+   }[keywords,tex,comments]%
+
+   \lst at definelanguage[acro]{TeX}{%
+     % Control sequences names
+     moretexcs={%
+       Ac,Aca,Acap,Acf,Acfp,Acl,Aclp,Acp,AcroAcronymsMap,AcroAddRow,%
+       AcroMapBreak,AcroNeedPackage,AcroPropertiesMap,AcroPropertiesSet,%
+       AcroRerun,AcroStyle,AcroTemplateName,AcroTemplateType,AcronymID,%
+       AcronymTable,Acs,Acsp,BeginAccSupp,Dacs,DeclareAcroArticle,%
+       DeclareAcroEnding,DeclareAcroPreset,DeclareAcroProperty,%
+       DeclareAcroPropertyAlias,DeclareAcroTranslation,DeclareAcronym,Iac,%
+       Iaca,Iacf,Iacl,Iacs,MakeAcroPropertyAlias,NewAcroCommand,%
+       NewAcroPreset,NewAcroTemplate,RenewAcroCommand,RenewAcroPreset,%
+       RenewAcroTemplate,SetupAcroTemplate,SetupNextAcroTemplate,%
+       UseAcroTemplate,abbrdot,ac,aca,acap,acbarrier,acdot,acf,acfg,%
+       acflike,acfootnote,acfp,acg,aciftrailing,acl,aclg,aclp,acp,%
+       acreset,acresetall,acrocite,acrodefinite,acrodonotuse,acrodotfill,%
+       acroendfootnote,acroformat,acrofull,acrogroupcite,acroheading,%
+       acroifT,acroifTF,acroifallTF,acroifanyT,acroifanyTF,%
+       acroifbooleanTF,acroifchapterF add,acroifchapterTF,acroiffirstT,%
+       acroiffirstTF addchap,acroifpagesTF,acroifsingleTF,acroifstarredTF,%
+       acroiftagTF,acroifusedTF,acroindefinite,acrolistname,acroneedpages,%
+       acronopagerange,acronymsmap,acronymsmapF,acronymsmapTF,acropagefill,%
+       acropages,acroplural,acropossessive,acropreamble,acroshow,%
+       acrotranslate,acroupper,acrowrite,acs,acsetup,acsp,acspace,%
+       acswitchoff,acswitchon,acuse,dacs,declareAcronym,iac,iaca,iacf,%
+       iacl,iacs,iacsg,printacronyms,%
+       %
+       acro_locale,acro_if_foreign,acro_if_locale,__acro_foreign_language,%
+       acro_property_get,acro_property_if_set,acro_property_get,%
+     },%
+     % Keywords of class 1 : keywords that contain other characters (since
+     % of the same class as the ones specified as 'otherkeywords')
+     morekeywords={%
+     },%
+     % Keywords of class 2 : environments names
+     morekeywords=[2]{%
+     },%
+     % Keywords of class 3 : mandatory arguments (not environments) &
+     % optional arguments which are keys (in key=value)
+     morekeywords=[3]{%
+       activate,addsec,addsec*,all,alt,alt,alt-acc,alt-format,%
+       alt-indefinite,alt-plural,alt-plural-form,barriers,before-citation,%
+       caption,%
+       case-insensitive,%case-sensitive,%chapter,chapter*,cite,clear,cmd,%
+       deactivate,define,description,disable,display,exclude,extra,%
+       extra-acc,extra-foreign,extra-format,extra-long,fill,first,%
+       first-long,first-long-format,first-style,first-style ,floats,%
+       footnote,foreign,foreign,foreign-acc,foreign-babel,foreign-format ,%
+       foreign-locale,foreign-plural,foreign-plural-form,format,format,%
+       group,heading,id,include,index,index,index-cmd,index-sort,%
+       language,link-only-first,list,list,list-acc,list-format,%
+       list/display,lists,load-style,local,locale,lof,long,long,%
+       long-acc,long-format,long-indefinite,long-plural,long-plural-ending,%
+       long-plural-form,long-post,long-short,longtable,longtabu,lppl,%
+       ltxtable,make-links,maketitle,method,name,no-index,none,options,%
+       pages,pdf,pdf,pdfcomment,pdfcomment/cmd,pdfcomment/use,pdfstring,%
+       post,pre,preamble,preset,replace,reset,section,section*,short,%
+       short,short,short-acc,short-format,short-indefinite,short-long,%
+       short-plural,short-plural-ending,short-plural-form ,show,single,%
+       single,single,single-acc threshold,single-format
+       title,single-style,%
+       single-style,sort,sort,subsequent-style,subsequent-style,%
+       supertabular,tabular,tabularx,tag,upgrade,use,use-id-as-short,%
+       uselist,version,%
+     },%
+     % Keywords of class 4 : values of keys (in key=value)
+     morekeywords=[4]{%
+     },%
+     % Keywords of class 5 : arguments specifications (after ":" in expl3
+     % syntax)
+     morekeywords=[5]{%
+     },%
+     % Keywords of class 6 : current package name (and possibly derived
+     % packages)
+     morekeywords=[6]{%
+       acro%
+     },%
+     % otherkeywords={},%
+     alsoletter={-_},%
+     % alsodigit={},%
+     % alsoother={},%
+     sensitive,%
+   }[keywords,tex,comments]%
+
+   \lst at definelanguage[csquotes]{TeX}{%
+     % Control sequences names
+     moretexcs={%
+       enquote,%
+     },%
+     % Keywords of class 1 : keywords that contain other characters (since
+     % of the same class as the ones specified as 'otherkeywords')
+     morekeywords={%
+     },%
+     % Keywords of class 2 : environments names
+     morekeywords=[2]{%
+       displayquote,%
+     },%
+     % Keywords of class 3 : mandatory arguments (not environments) &
+     % optional arguments which are keys (in key=value)
+     morekeywords=[3]{%
+     },%
+     % Keywords of class 4 : values of keys (in key=value)
+     morekeywords=[4]{%
+     },%
+     % Keywords of class 5 : arguments specifications (after ":" in expl3
+     % syntax)
+     morekeywords=[5]{%
+     },%
+     % Keywords of class 6 : current package name (and possibly derived
+     % packages)
+     morekeywords=[6]{%
+       csquotes%
+     },%
+     % otherkeywords={},
+     % alsoletter={},
+     % alsodigit={},%
+     % alsoother={},%
+     sensitive,%
+   }[keywords,tex,comments]%
+
+   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+   % tcolorbox
+   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+   \lst at definelanguage[tcolorbox]{TeX}%
+   {%
+     % Control sequences names
+     moretexcs={%
+       tcbuselibrary,newtcbtheorem,tcbset%
+     },%
+     % Keywords of class 1 : keywords that contain other characters (since
+     % of the same class as the ones specified as 'otherkeywords')
+     morekeywords={%
+       %
+     },%
+     % Keywords of class 2 : environments names
+     morekeywords=[2]{%
+       absquote,boxarraystore,dispExample,dispExample*,dispListing,%
+       dispListing*,docCommand,docCommand*,docCommands,docEnvironment,%
+       docEnvironment*,docEnvironments,docKey,docKey*,docKeys,%
+       docPathOperation,docPathOperation*,docPathOperations,extcolorbox,%
+       extikzpicture,fooauxenv,foocolorbox,foocolorbox*,posterboxenv,%
+       tcbclipframe,tcbclipinterior,tcbcliptitle,tcbexternal,%
+       tcbinvclipframe,tcbitemize,tcblisting,tcboutputlisting,%
+       tcboxeditemize,tcboxedraster,tcbposter,tcbraster,tcbverbatimwrite,%
+       tcbwritetemp,tcolorbox,%
+     },%
+     % Keywords of class 3 : mandatory arguments (not environments) &
+     % optional arguments which are keys (in key=value)
+     morekeywords=[3]{%
+       Crefname,IfBooleanF,IfBooleanT,IfBooleanTF,IfNoValueF,IfNoValueT,%
+       IfNoValueTF,IfValueF,IfValueT,IfValueTF,PassOptionsToClass,%
+       PassOptionsToPackage,above*,above,actual,adapt,add,adjust,%
+       adjusted,after,alert,alerted,algorithm,align*,align,all,ams,%
+       and,angular,annotate,app,arara,arc,array,as,at,attach,auto,%
+       autoparskip,balanced,base,basedim,baseline,beamer,bean,before,%
+       beforeafter,% begin,
+       below,between,biber,bibtex,bicolor,blank,%
+       blanker,blankest,blend,body,bold,bookmark*,bookmark,borderline,%
+       both,bottom*,bottom,bottomrule,bottomsep,bottomtitle,bounding,%
+       box,boxed,boxes,boxrule,boxsep,break*,break,breakable,broken,%
+       by,caption,capture,center,check,circular,clear,clip,code,%
+       colback,colbacklower,colbacktitle,colframe,collower,colon,color,%
+       colorize,colors,colspacing,coltext,coltitle,column*,column,%
+       columns,colupper,command,comment,compilable,compiler,compress,%
+       content,corner,corners,counter*,counter,counters,coverage,%
+       crefname,current,curved,dash,default,definition,delimiters,%
+       description,detach,directory,do,doc,docexample,documentation,%
+       downwards,draft,draftmode,draw,drop,dvips,east,empty,% end,
+       %
+       enforce,engine,english,enhanced,enlarge,enlargement,enlargepage,%
+       entry,environment,environments,equal,equation*,equation,error,%
+       even,every,example!,example,extend,extension,external,%
+       externalize,extras,extrude,fade,fading,file,fill,filled,finally,%
+       finish,first,fit,fitting,fixed,flexible,flip,float*,float,%
+       floatplacement,flush,flushleft,flushright,font,fontlower,fontsize,%
+       fonttitle,fontupper,for,force,format,formatter,frame,freelance,%
+       freelancefirst,freelancelast,freelancemiddle,freestyle,freeze,from,%
+       full,fuzzy,gap,gather*,gather,geometry,german,goal,graphical,%
+       graphics,group,grow,halign,halo,hanging,hbox,head,height,%
+       hidden,hide,higher,highlight,hooks,horizontal,hyperlink,hyperref,%
+       hypertarget,hyperurl*,hyperurl,hyphenationfix,if,ignore,image,in,%
+       indent,index*,index,inherit,initially,input,inputencoding,inside,%
+       interior,into,invisible,inwards,is,jigsaw,jpg,key,keypath,keys,%
+       keywords,label,language,large,last,latex,layer,layers,left*,%
+       left,lefthand,leftlower,leftright,leftrule,lefttitle,leftupper,%
+       length,lengths,level,lifted,limit,line*,line,lines,list,%
+       listing!,listing,listings,listingsutf,lower*,lower,lowerbox,%
+       lowered,lualatex,m,macros,magazine,makeindex,many,marginnote,%
+       marker,math,maxfontdiff,maxfontdiffgap,maxstep,maxwidthdiff,%
+       maxwidthdiffgap,method,midday,middle,minimum,minipage,minted,%
+       most,move,multicolumn,multirow,n,name,nameref,natural,new,%
+       nirvana,no,nobeforeafter,nobreak,node,nodes,nodisplayskip,%
+       nofloat,none,noparskip,nophantom,north,northeast,northwest,not,%
+       notitle,number,octogon,odd,of,offset,on,oneside*,oneside,only,%
+       opacity,opacityback,opacitybacklower,opacitybacktitle,opacityfill,%
+       opacityframe,opacitylower,opacitytext,opacitytitle,opacityupper,%
+       option,options,or,orientation,out,outer,outside,outwards,over,%
+       overlay,overlays,oversize,overzoom,pad,page*,page,pages,%
+       pageshort,parameter,parbox,parenthesis,parfillskip,parskip,path,%
+       paths,pdf,pdflatex,percent,phantom,phantomlabel,placeholder,%
+       plain,plus,png,poster,pre,preamble,preclass,prefix,process,%
+       pspdf,quote,raise,raised,raster,ratio,record,recording,remake,%
+       remember,remove,reset,restore,right*,right,righthand,rightlower,%
+       rightrule,righttitle,rightupper,rotate,rounded,row,rows,%
+       rowspacing,rowspan,run,runner,runs,safety,savedelimiter,%
+       savelowerto,saveto,scale,scope,segmentation,semi,separated,%
+       separator,sequence,settings,shade,shading,shadow,sharp,sharpish,%
+       shield,show,showframe,shrink,side,sidebyside,sidewards,sign,%
+       size,skin,skins,skip,small,smart,sort,source,south,southeast,%
+       southwest,space,spacing,span,spartan,split,spread,square,%
+       squeezed,stack,standard,step,store,stretch,style,subskin,%
+       subtitle,supplement,switch,system,tabulars*,tabulars,tabularx*,%
+       tabularx,tcbimage,tcbox,preamble tcbset,tempfile,terminator,text,%
+       theorem,theorems,tight,tikz,tikznode,tile,title*,title,titlebox,%
+       titled,titlerule,to,toggle,top*,top,toprule,topsep,toptitle,%
+       type,unbreakable,unbroken,underlay,updated,upper*,upper,upperbox,%
+       upwards*,upwards,use,utf,valign,value,values,varwidth,verbatim,%
+       vertical,vfill,vignette,visible,void,warning,watermark,west,%
+       widget,width,with,within,xelatex,xmax,xmin,xparse,xshift,ymax,%
+       ymin,yshift*,yshift,yshifttext,zoom,%
+     },%
+     % Keywords of class 4 : values of keys (in key=value)
+     morekeywords=[4]{%
+       all,and,apart,areasize*,areasize,as-is,auto,base,baselineskip,%
+       beamer,beamerfirst,beamerlast,beamermiddle,bicolor,bicolorfirst,%
+       bicolorlast,bicolormiddle,both,bottom,break,broken,center,change,%
+       clipped,colon,copy,dash,direct,doc,downhill,draft,east,empty,%
+       emptyfirst,emptylast,emptymiddle,enhanced,enhancedfirst,%
+       enhancedlast,enhancedmiddle,evenpage,false,fbox,figures,final,%
+       first,fitbox,flush,fontsize*,fontsize,forced,freelance,%
+       freelancefirst,freelancelast,freelancemiddle,hang,hbox,hybrid*,%
+       hybrid,ignored,invisible,jigsaw,justify,landscape*,landscape,%
+       last,left,limited,listings,margin,maximum,middle,minimal,%
+       minimum,minipage,minted,none,normal,north,northeast,northwest,%
+       off,on,path,pathfirst,pathfirstjigsaw,pathjigsaw,pathlast,%
+       pathlastjigsaw,pathmiddle,pathmiddlejigsaw,pgf,pgfchapter,%
+       pgfsection,plain,portrait*,portrait,right,rows,scale*,scale,%
+       seam,small,south,southeast,southwest,spartan,squeeze,standard,%
+       tables,tight,tile,tilefirst,tilelast,tilemiddle,title,top,true,%
+       unbroken,unlimited,uphill,visible,west,widget,widgetfirst,%
+       widgetlast,widgetmiddle,red,black,white,none,%
+     },%
+     % Keywords of class 5 : arguments specifications (after ":" in expl3
+     % syntax)
+     morekeywords=[5]{%
+     },%
+     % Keywords of class 6 : current package name (and possibly derived
+     % packages)
+     morekeywords=[6]{%
+       tcolorbox%
+     },%
+     % otherkeywords={},%
+     alsoletter={ \ },%
+     % alsodigit={},%
+     % alsoother={},%
+     sensitive,%
+   }[keywords,tex,comments]%
+
+   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+   % Classes (La)TeX
+   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+   \lst at definelanguage[classes]{TeX}{%
+     % Control sequences
+     moretexcs={%
+     },%
+     % Keywords of class 1 : keywords that contain other characters
+     % (since of the same class as the ones specified as
+     % 'otherkeywords')
+     morekeywords={%
+       %
+     },%
+     % Keywords of class 2 : environments names
+     morekeywords=[2]{%
+     },%
+     % Keywords of class 3 : mandatory arguments (not environments)
+     % & optional arguments which are keys (in key=value)
+     morekeywords=[3]{%
+     },%
+     % Keywords of class 4 : values of keys (in key=value)
+     morekeywords=[4]{%
+     },%
+     % Keywords of class 5 : arguments specifications (after “:”
+     % in expl3 syntax)
+     morekeywords=[5]{%
+     },%
+     % Keywords of class 6 : current package name (and possibly
+     % derived packages)
+     morekeywords=[6]{%
+       a0poster,aalok,aastex631,abntex2,achemso,acmart,acmconf,
+       active-conf,adfathesis,afparticle,afthesis,aguplus,aiaa-tc,
+       akklecture,akkscript,akktecdoc,akletter,myletter,ametsoc,
+       amsart,amsbook,amsdtx,amsldoc,amsproc,aomart,apa,apa6,
+       apa6e,apa7,arabart,arabbook,arabrep,arabrep1,articleingud,
+       asaetr,ascelike,asmeconf,asmejour,assignment,aucklandthesis,
+       bangorcsthesis,bangorexam,barticle,bbook,bletter,
+       bankstatement,article,book,letter,ltnews,ltxdoc,ltxguide,
+       minimal,proc,report,slides,source2edoc,basque-book,beamer,
+       beamerswitch,beaulivre,beilstein,argetabelle,bewerbung,
+       bgteubner,BHCexam,bitart,bitbook,bjfuthesis,BMSTU-IU8,
+       bookcover,bookest,bookshelf,br-lex,brandeis-dissertation,
+       brandeis-problemset,brandeis-thesis,buctcover,buctthesis,
+       bxjsarticle,bxjsbook,bxjsreport,bxjsslide,cascadilla,cd,
+       cd-cover,articoletteracdp,letteracdp,cesenaexam,cheatsheet,
+       chemmacros-manual,chletter,cje,cnbwp,cnltx-doc,codedoc,
+       colorart,colorbook,combine,cc,ConcProg,confproc,contracard,
+       courseoutline,coursepaper,cquthesis,csbulletin,csbulobalka,
+       csbulv1,ctexart,ctexbeamer,ctexbook,ctexrep,ctxdoc,curve,
+       cv4tw,cweb,idcc,ijdc-v14,ijdc-v9,dinbrief,disser,gost732,
+       dithesis,droit-fr,dtk,dvdcoll,easybook,ebsthesis,agecon,
+       ajae,apecon,ecca,erae,itaxpf,jrurstud,njf,oegatb,pocoec,
+       regstud,worlddev,ecv,einfart,ejpecp,elbioimp,elegantbook,
+       elegantnote,elegantpaper,elpres,cas-dc,cas-sc,elsarticle,
+       elteikthesis,emisa,emulateapj,erdc,eskd,eskdgraph,eskdtab,
+       eskdtext,estcpmm,europasscv,europecv,exam,exam-n,examdesign,
+       exesheet,extarticle,extbook,extletter,extproc,extreport,
+       facsimile,factura,fancyhandout,fancyslides,fbithesis,fcavtex,
+       fdudoc,fduthesis-en,fduthesis,fei,ffslides,fithesis,
+       fithesis2,fithesis3,fithesis4,flacards,flashcards,frletter,
+       g-brief,g-brief2,gaceta,gammas,gatech-thesis,gmdocc,
+       gradstudentresume,grant-afosr,grant-aro,grant-darpa,grant-doe,
+       grant-nih,grant-nrl,grant-nsf,grant-onr,grant,graphpaper,
+       gridslides,gsemthesis,guitartabs,gzt,gztarticle,h2020proposal,
+       hgbarticle,hgbreport,hgbthesis,harnon-cv,hausarbeit-jura,
+       hcart,hcletter,hcreport,hcslides,hecthese,hepthesis,hitec,
+       hithesis,hitreport,hitszthesis,hletter,hpsdiss,fsbispit,
+       huawei,hustthesis,icsv,IEEEconf,IEEEtran,ijmart,ijsra,
+       image-gallery,IMTEKda,inkpaper,invoice-class,iodhbwm,iscram,
+       isov2,isodoc,iwhdp,jacow,jlreq,jmlr,jmlrbook,jnuexam,jpsj2,
+       jura,jurabook,juraovw,juraurtl,kdgcoursetext,kdgmasterthesis,
+       kdpcover,kerntest,kluwer,knittingpattern,scrartcl,scrarticle,
+       scrbook,scrdoc,scrletter,scrlttr2,scrreport,scrreprt,komacv,
+       oblivoir-utf,oblivoir-xl,oblivoir,xoblivoir,ksp-thesis,l3doc,
+       labbook,leadsheet,leaflet,lebhart,lectures,letgut,lettre,limap,
+       limecv,lion-msc,lni,lps,lt3graph-packagedoc,ltxdockit,
+       ltxguidex,abstbook,beletter,flashcard,iagproc,cours,fiche,
+       matapli,matc3mem,mcmthesis,ltxmdf,medstarbeamer,meetingmins,
+       memoir,mensa-tex,mentis,metanorma,milog,minimart,minimbook,
+       mla,mluexercise,mnras,moderncv,modernposter,msu-thesis,
+       mucproc,mugsthesis,muling,musuos,muthesis,third-rep,mwart,
+       mwbk,mwrep,mycv,nature,ncc,nccproc,sibjnm,nddiss2e,
+       ndsu-thesis,newlfm,nih,nihbiosketch,njurepo,nlctdoc,nostarch,
+       nrc1,nrc2,artikel1,artikel2,artikel3,boek,boek3,brief,
+       rapport1,rapport3,nwejm,nwejmart,octavo,onrannual,
+       oup-authoring-template,journal,paper,papertex,pbsheet,pecha,
+       petiteannonce,philosophersimprint,pittetd,pkuthss,plari,play,
+       postcards,powerdot,FUpowerdot,ppr-prv,pracjourn,pressrelease,
+       proposal,reporting,dfgproposal,dfgreporting,euproposal,
+       eureporting,prosper,protocol,prtec,upmgr,wkmgr,pst-doc,
+       ptptex,qcm,quantumarticle,qyxf-book,ReadableCV,recipe,
+       RecipeBook,recipecard,refart,refrep,resphilosophica,revtex4-2,
+       revtex4,revtex4-1,rtklage,ryersonSGSThesis,ryethesis,sageep,
+       sapthesis,schuleab,schulein,schuleit,schulekl,schuleub,
+       schuleue,schullsg,schullzk,schulma-ab,schulma-gutachten,
+       schulma-klausur,schulma-komp,schulma-mdlprf,schulma-praes,
+       schwalbe,sciposter,screenplay,scrjrnl,sdapsclassic,sduthesis,
+       seminar,semproc,sesamanuel,seuthesix,sffms,cassete,etiketka,
+       shtthesis,caesar_book,sides,simplecv,simplivre,skbarticle,
+       skbbeamer,skbbook,skblncsbeamer,skblncsppt,skbmoderncv,skdoc,
+       skeyval-testclass,skrapport,smfart,smfbook,SPhdThesis,spie,
+       sr-vorl,sslides,stage,standalone,usthesis,hwexam,mikoslides,
+       omdoc,smglom,subfiles,suftesi,sugconf,tabriz-thesis,talk,
+       tcldoc,tclldoc,powersem,thesis-ekf,thesis-gwu,thuthesis,
+       tikz-kalender,tikzposter,tlc-article,TOPletter,toptesi,
+       tudabeamer,tudaexercise,tudaleaflet,tudaletter,tudaposter,
+       tudapub,tudasciposter,tudscrartcl,tudscrbook,tudscrdoc,
+       tudscrmanual,tudscrposter,tudscrreprt,tufte-book,tufte-handout,
+       ltugboat,ltugproc,tui,turabian,turabian-researchpaper,
+       turabian-thesis,my-thesis,ua-thesis,uafthesis,
+       uantwerpenbamathesis,uantwerpencoursetext,uantwerpenexam,
+       uantwerpenletter,uantwerpenphdthesis,uantwerpenreport,
+       ucalgmthesis,ucbthesis,ucdavisthesis,ucsmonograph,ucthesis,
+       udesoftec,uebungsblatt,uestcthesis,uhhassignment,uiucredborder,
+       uiucthesis,ulthese,legislation,umich-thesis,umthesis,
+       unam-thesis,unifith,unitn-bimrep,univie-ling-expose,
+       univie-ling-paper,univie-ling-thesis,univie-ling-wlg,
+       unizgklasa,uothesis,UoWthesis,upmethodology-document,URbeamer,
+       URletter,uspatent,ut-thesis,utexasthesis,uwmslide,uwthesis,
+       verifica,webquiz,willowtreebook,withargs-packagedoc,
+       wsemclassic,xduthesis,xebaposter,xmuthesis,xsim-manual,
+       yaletter,yathesis,ycbook,ydoc,york-thesis,
+     },%
+     % otherkeywords={},%
+     alsoletter={0123456789-},%
+     % alsodigit={},%
+     sensitive%
+   }[keywords,tex,comments]%
+  #+end_src

Modified: trunk/Master/texmf-dist/tex/lualatex/letgut/informations-gut.tex
===================================================================
--- trunk/Master/texmf-dist/tex/lualatex/letgut/informations-gut.tex	2022-06-18 18:21:10 UTC (rev 63636)
+++ trunk/Master/texmf-dist/tex/lualatex/letgut/informations-gut.tex	2022-06-18 20:02:54 UTC (rev 63637)
@@ -1,3 +1,5 @@
+% Hey, Emacs!  This is a -*- mode: latex -*- file!
+
 \enlargethispage{1.5cm}
 \small
 \vspace*{-1cm}
@@ -8,24 +10,24 @@
   \end{minipage}%
 }%
 \hfill%
-\begin{minipage}[t]{.4\textwidth}%\vspace{0pt}%
+\begin{minipage}[t]{.5\textwidth}%\vspace{0pt}%
   \footnotesize\raggedleft%
   Association \gut{}\\
   15 rue des Halles -- \textsc{bp} 74\\
   75001 Paris\\
   France\\
-  \nolinkurl{secretariat at gutenberg.eu.org}
+  \url{secretariat[at]gutenberg[dot]eu[dot]org}
 \end{minipage}%
 
 \begin{description}
-\item[Site internet :] \url{https://www.gutenberg.eu.org/}
-\item[\Cahiers{} :] \url{http://cahiers.gutenberg.eu.org/}
+\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.eu.org/-Listes-de-diffusion-}
-  \item[le site \TeX nique de questions et réponses :]
+    \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.eu.org}
@@ -33,9 +35,9 @@
 \end{description}
 %
 \alertbox{%
-  Cette association est la vôtre: faites-nous part de
+  Cette association est la vôtre : faites-nous part de
   vos idées, de vos envies, de vos préoccupations
-  à l'adresse \nolinkurl{secretariat at gutenberg.eu.org}.%
+  à l'adresse \url{secretariat[at]gutenberg[dot]eu[dot]org}.%
 }
 
 % \section[Association GUTenberg (tout sur l')]
@@ -58,19 +60,20 @@
   %   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
-\emph{\acs{tug}boat} à un tarif préférentiel :
+\tugboat{} à un tarif préférentiel :
 \begin{description}
-\item[tarif normal :] \EUR{65} (au lieu de 85~\$)
-\item[tarif étudiant :] \EUR{40} (au lieu de 55~\$)
+\item[tarif normal :] 65~€ (au lieu de 85~\$)
+\item[tarif étudiant :] 40~€ (au lieu de 55~\$)
 \end{description}
-% (\EUR{49,50}, étudiants et demandeurs d'emploi :
-% \EUR{29}, au lieu de 85\$ et % 65\$).  Voir
+% (49~€50}, étudiants et demandeurs d'emploi :
+% 29~€, au lieu de 85\$ et % 65\$).  Voir
 % \url{%
-% https://www.gutenberg.eu.org/?Adherer-a-l-association%
+% https://www.gutenberg-asso.fr/?Adherer-en-ligne%
 % }.
 
 \footnotesize
@@ -79,13 +82,13 @@
     \toprule
     \textbf{Type d'adhésion}                        & \textbf{Prix} \\
     \midrule
-    Membre individuel                               & \EUR{30}      \\
-    Membre individuel + adhésion \acs{tug}          & \EUR{95}      \\
-    Membre individuel étudiant/demandeur d'emploi   & \EUR{15}      \\
-    Membre individuel étudiant + adhésion \acs{tug} & \EUR{55}      \\
-    Association d'étudiants                         & \EUR{65}      \\
-    Organisme à but non lucratif                    & \EUR{130}     \\
-    Organisme à but lucratif                        & \EUR{229}     \\
+    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}
@@ -96,7 +99,7 @@
 \begin{itemize}
 \item \textbf{virement bancaire}%
   \footnote{Nous vous remercions de \textbf{privilégier}
-    le \textbf{virement bancaire}.\label{fn:1}} (IBAN :
+    le \textbf{virement bancaire}.\label{fn:1}} (\textsc{iban} :
   FR76 1870 7000 3003 0191 3568 475)%
   \leavevmode
 
@@ -105,9 +108,9 @@
     dans les références du virement !%
   }
 \item Paypal\footnotemark[\value{footnote}] :
-  \url{https://www.gutenberg.eu.org/?Adherer-en-ligne}
+  \url{https://www.gutenberg-asso.fr/?Adherer-en-ligne}
 \item bulletin et chèque\footnotemark[\value{footnote}] :
-  \url{https://www.gutenberg.eu.org/?Adherer-a-l-association}
+  \url{https://www.gutenberg-asso.fr/?Adherer-a-l-association}
 \end{itemize}
 
 \vfill
@@ -134,8 +137,8 @@
     Directeur de la publication :
     & \person{Bideault, Patrick} \\
     Comité de rédaction :
-    & {Patrick \bsc{Bideault}, Denis \bsc{Bitouzé},  \\
-      Céline \bsc{Chevalier} \& Maxime \bsc{Chupin}} \\
+    & {Patrick Bideault, Denis Bitouzé,  \\
+      Céline Chevalier \& Maxime Chupin} \\
     Adresse de la rédaction : &
     {
       Association \gut\\
@@ -143,13 +146,9 @@
       75001 Paris
     }
     \\
-    \acs{issn} : & 2742-6149 (version numérique)
+    \acs{issn} : & \letgutissn
   \end{tblr}
 \end{center}
 \vfill
 \mbox{}
 \clearpage
-
-%%% Local Variables:
-%%% mode: latex
-%%% End:

Modified: trunk/Master/texmf-dist/tex/lualatex/letgut/letgut-acronyms.tex
===================================================================
--- trunk/Master/texmf-dist/tex/lualatex/letgut/letgut-acronyms.tex	2022-06-18 18:21:10 UTC (rev 63636)
+++ trunk/Master/texmf-dist/tex/lualatex/letgut/letgut-acronyms.tex	2022-06-18 20:02:54 UTC (rev 63637)
@@ -1,198 +1,291 @@
+% Hey, Emacs!  This is a -*- mode: latex -*- file!
+
 %%%%%%%%%%%%%%%%%%%%%
 % Acronymes anglais %
 %%%%%%%%%%%%%%%%%%%%%
-\letgutacro
-{CTAN}
-{\href{https://www.ctan.org/}{Comprehensive \TeX{} Archive Network}}
-[réseau complet d'archives \TeX{}]
+\letgutacro%
+{CTAN}%
+{\href{https://www.ctan.org/}{Comprehensive \hologo{TeX} Archive
+    Network}}%
+[réseau complet d'archives \hologo{TeX}]
 
-\letgutacro
-{PDF}
-{Portable Document Format}
+\letgutacro%
+{PDF}%
+{Portable Document Format}%
 [format de document portable]
 
-\letgutacro
-{URL}
-{Uniform Resource Locator}
-[localisateur uniforme de ressource]
+\letgutacro%
+{URL}%
+{Uniform Resource Locator}%
+[localisateur uniforme de ressource ou, plus clairement, format des
+  adresses du Web]
 
-\letgutacro
-{ORCID}
-{Open Researcher and Contributor \textsc{id}}
+\letgutacro%
+{ORCID}%
+{Open Researcher and Contributor \textsc{id}}%
 [identifiant ouvert pour chercheur et contributeur]
 
-\letgutacro[extra-foreign=souvent librement traduit en \enquote{foire aux questions}]
-{FAQ}
-{Frequently Asked Questions}
+\letgutacro%[extra-foreign=souvent librement traduit en \enquote{foire
+           %aux questions}]
+{FAQ}%
+{Frequently Asked Questions}%
 [questions fréquemment posées]
 
-\letgutacro
-{SVG}
-{Scalable Vector Graphics}
+\letgutacro%
+{SVG}%
+{Scalable Vector Graphics}%
 [graphiques vectoriels extensibles]
 
-\letgutacro
-{DNS}
-{Domain Name System}
+\letgutacro%
+{DNS}%
+{Domain Name System}%
 [système de noms de domaine]
 
-\letgutacro
-{VPS}
-{Virtual Private Server}
+\letgutacro%
+{VPS}%
+{Virtual Private Server}%
 [serveur dédié virtuel]
 
-\letgutacro
-{LDAP}
-{Lightweight Directory Access Protocol}
-[protocole d'accès à répertoire léger, sytème garantissant l'authentification
-d'utilisateurs de plusieurs services dispersés]
+\letgutacro%
+{LDAP}%
+{Lightweight Directory Access Protocol}%
+[protocole d'accès à répertoire léger, sytème garantissant
+  l'authentification d'utilisateurs de plusieurs services dispersés]
 
-\letgutacro
-{OTF}
-{Open Type Format}
+\letgutacro%
+{OTF}%
+{Open Type Format}%
 []
 
-\letgutacro
-{DOI}
-{Digital Object Identifier}
+\letgutacro%
+{DOI}%
+{Digital Object Identifier}%
 [identifiant numérique d'objet]
 
-\letgutacro
-{ISSN}
-{International Standard Serial Number}
+\letgutacro%
+{ISSN}%
+{International Standard Serial Number}%
 [numéro international normalisé des publications en série]
 
-\letgutacro
-{TUG}
-{\TeX{} User Group}
-[groupe (international) d'utilisateurs de \TeX{}]
+\letgutacro%
+{TUG}%
+{\hologo{TeX} User Group}%
+[groupe (international) d'utilisateurs de \hologo{TeX}]
 
-\letgutacro
-{TL}
-{\TeX{}~Live}
-[]
-
-\letgutacro
-{WCAG}
-{Web Content Accessibility Guidelines}
+\letgutacro%
+{WCAG}%
+{Web Content Accessibility Guidelines}%
 [directives sur l'accessibilité du contenu Web]
 
-\letgutacro
-{HTML}
-{HyperText Markup Language}
+\letgutacro%
+{HTML}%
+{HyperText Markup Language}%
 [langage de balises pour l'hypertexte]
 
-\letgutacro
-{CSS}
-{Cascading Style Sheets}
+\letgutacro%
+{CSS}%
+{Cascading Style Sheets}%
 [feuilles de style en cascade]
 
-\letgutacro
-{UTF}
-{Universal (Character Set) Transformation Format}
+\letgutacro%
+{UTF}%
+{Universal (Character Set) Transformation Format}%
 [format de transformation (du jeu) universel (de caractères codés)]
 
-\letgutacro[short=\emph{Ti\emph{k}Z},short-format=\em,foreign-babel=german,foreign-locale=allemand]
-{TIKZ}
-{Ti\emph{k}Z ist \emph{kein} Zeichenprogramm}
+\letgutacro%[short=\emph{Ti\emph{k}Z},short-format=\em,foreign-babel=german,foreign-locale=allemand]
+{TIKZ}%
+{Ti\emph{k}Z ist \emph{kein} Zeichenprogramm}%
 [Ti\emph{k}Z \emph{n'}est \emph{pas} un programme de dessin]
 
-\letgutacro
-{PGF}
-{Portable Graphics Format}
-[format de graphiques portables]
+\letgutacro%
+{PGF}%
+{Portable Graphics Format}%
+[format de graphiques portable]
 
-\letgutacro
-{GPL}
-{\textsc{gnu} General Public License}
+\letgutacro%
+{GPL}%
+{\textsc{gnu} General Public License}%
 [licence publique générale \textsc{gnu}]
 
-\letgutacro
-{OFL}
-{SIL Open Font License}
+\letgutacro%
+{OFL}%
+{SIL Open Font License}%
 []
 
-\letgutacro
-{DVI}
-{DeVice-Independent}
+\letgutacro%
+{DVI}%
+{DeVice-Independent}%
 [indépendant du type de périphérique]
 
-\letgutacro
-{PS}
-{PostScript}
+\letgutacro%
+{PS}%
+{PostScript}%
 []
 
-\letgutacro
-{DVIPS}
-{\acs{dvi}-to-\acs{ps} (translator)}
+\letgutacro%
+{DVIPS}%
+{\acs{dvi}-to-\acs{ps} (translator)}%
 [(convertisseur) \acs{dvi} vers \acs{ps}]
 
-\letgutacro
-{IPA}
-{International Phonetic Alphabet}
+\letgutacro%
+{IPA}%
+{International Phonetic Alphabet}%
 [alphabet phonétique international]
 
-\letgutacro
-{TIPA}
-{\TeX{} \acs{ipa} or Tokyo \acs{ipa}}
+\letgutacro%
+{TIPA}%
+{\hologo{TeX} \acs{ipa} or Tokyo \acs{ipa}}%
 [alphabet phonétique international]
 
+\letgutacro%
+{XML}%
+{eXtensible Markup Language}%
+[langage de balisage extensible]
+
+\letgutacro%
+{APA}%
+{American Psychological Association}%
+[association américaine de psychologie]
+
+\letgutacro%
+{OS}%
+{Operating System}%
+[système d'exploitation]
+
+\letgutacro%
+{BSD}%
+{Berkeley Software Distribution}%
+[collection de logiciels de Berkeley]
+
+\letgutacro%
+{IMAP}%
+{Internet Message Access Protocol}%
+[]
+
+\letgutacro%
+{SMTP}%
+{Simple Mail Transfer Protocol}%
+[protocole simple de transfert de courrier]
+
+\letgutacro%
+{RTF}%
+{Rich Text Format}%
+[format de texte enrichi]
+
+\letgutacro%
+{WYSIWYG}%
+{What You See Is What You Get}%
+[ce que vous voyez est ce que vous obtenez]
+
+\letgutacro%
+{ISO}%
+{\href{https://www.iso.org/home.html}{International Organization for
+    Standardization}}%
+[\href{https://www.iso.org/fr/home.html}{organisation internationale de
+  normalisation}]
+
+\letgutacro%
+{OFF}%
+{Open Font Format}%
+[format de fonte ouvert]
+
+\letgutacro%
+{CSV}%
+{Comma-separated values}%
+[valeurs séparées par des virgules]
+
+\letgutacro%
+{YAML}%
+{\textsc{yaml} Ain’t Markup Language}%
+[\textsc{yaml} n'est pas un langage de balisage (acronyme récursif)]
+
+\letgutacro%
+{UCA}%
+{Unicode Collation Algorithm}%
+[algorithme de tris d'Unicode]
+
+\letgutacro%
+{NFSS}%
+{New Font Selection Scheme}%
+[nouveau schéma de sélection de fonte]
+
+\letgutacro%
+{ASCII}%
+{American Standard Code for Information Interchange}%
+[code américain normalisé pour l'échange d'information]
+
+\letgutacro%
+{TDS}%
+{\TeX{} Directory Structure}%
+[structure de répertoire de \TeX{}]
+
 %%%%%%%%%%%%%%%%%%%%%%
 % Acronymes français %
 %%%%%%%%%%%%%%%%%%%%%%
+\letgutacro%
+{SMAI}%
+{\href{http://smai.emath.fr/}{Société de Mathématiques Appliquées et
+    Industrielles}}%
 
-\letgutacro
-{SMAI}
-{\href{http://smai.emath.fr/}{Société de Mathématiques Appliquées et Industrielles}}
+\letgutacro%
+{AG}%
+{Assemblée Générale}%
 
-\letgutacro
-{AG}
-{Assemblée Générale}
+\letgutacro%
+{CA}%
+{Conseil d'Administration}%
 
-\letgutacro
-{CA}
-{Conseil d'Administration}
+\letgutacro%
+{SHS}%
+{Sciences Humaines et Sociales}%
 
-\letgutacro
-{SHS}
-{Sciences Humaines et Sociales}
+\letgutacro%
+{IREM}%
+{\href{https://www.univ-irem.fr/}{Instituts de Recherche sur
+    l'Enseignement des Mathématiques}}%
 
-\letgutacro
-{IREM}
-{\href{https://www.univ-irem.fr/}{Instituts de Recherche sur l'Enseignement des Mathématiques}}
+\letgutacro%
+{MEEF}%
+{Métiers de l'Enseignement, de l'Éducation et de la Formation}%
 
-\letgutacro
-{MEEF}
-{Métiers de l'Enseignement, de l'Éducation et de la Formation}
+\letgutacro%
+{ECM}%
+{\href{https://texnique.fr/osqa/faq/\#custom-id-ecm}{Exemple Complet
+    Minimal}}%
 
-\letgutacro
-{ECM}
-{\href{https://texnique.fr/osqa/faq/\#custom-id-ecm}{Exemple Complet Minimal}}
+\letgutacro%
+{INSPÉ}%
+{\href{https://www.reseau-inspe.fr/}{Instituts Nationaux Supérieurs du
+    Professorat et de l'Éducation}}%
 
-\letgutacro
-{INSPÉ}
-{Instituts Nationaux Supérieurs du Professorat et de l'Éducation}
+\letgutacro%[short=\textsc{gra}pp\textsc{a},short-format=\upshape]
+{GRAppA}%
+{Groupe de recherche en Apprentissage Automatique}%
 
-\letgutacro[short=\textsc{gra}pp\textsc{a},short-format=\upshape]
-{GRAppA}
-{Groupe de recherche en Apprentissage Automatique}
+\letgutacro%
+{BBB}%
+{BigBlueButton}%
 
-\letgutacro
-{BBB}
-{BigBlueButton}
+\letgutacro%
+{CV}%
+{Curriculum Vitæ}%
 
-\letgutacro
-{CV}
-{Curriculum Vitæ}
+\letgutacro%
+{RGPD}%
+{Règlement Général sur la Protection des Données}%
 
-\letgutacro
-{RGPD}
-{Règlement Général sur la Protection des Données}
+\letgutacro%
+{NDLR}%
+{Note de la Rédaction}%
 
-\letgutacro
-{NDLR}
-{Notre de la Rédaction}
+\letgutacro%
+{BTS}%
+{Brevet de Technicien Supérieur}%
 
-%%% Local Variables:
-%%% mode: latex
-%%% End:
+\letgutacro%
+{APMEP}%
+{Association des Professeurs de Mathématiques de l'Enseignement Public}%
+
+\letgutacro%
+{PAO}%
+{Publication Assistée par Ordinateur}%

Modified: trunk/Master/texmf-dist/tex/lualatex/letgut/letgut-banner.sty
===================================================================
--- trunk/Master/texmf-dist/tex/lualatex/letgut/letgut-banner.sty	2022-06-18 18:21:10 UTC (rev 63636)
+++ trunk/Master/texmf-dist/tex/lualatex/letgut/letgut-banner.sty	2022-06-18 20:02:54 UTC (rev 63637)
@@ -1,35 +1,9 @@
-% 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 at 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 at 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.
 \NeedsTeXFormat{LaTeX2e}[2020-10-01]
 \ProvidesExplPackage{letgut-banner}
-{2022-03-22}
-{0.9.1}
+{2022-03-17}
+{0.9}
 {
-  Package for the banner of the newsletter “La Lettre de GUTenberg”
+  Package for the banner of the newsletter "La Lettre de GUTenberg"
 }
 \RequirePackage{l3keys2e}
 \RequirePackage{xcolor}

Modified: trunk/Master/texmf-dist/tex/lualatex/letgut/letgut-francophony-icon.pdf
===================================================================
(Binary files differ)

Added: trunk/Master/texmf-dist/tex/lualatex/letgut/letgut-lstlang.sty
===================================================================
--- trunk/Master/texmf-dist/tex/lualatex/letgut/letgut-lstlang.sty	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/lualatex/letgut/letgut-lstlang.sty	2022-06-18 20:02:54 UTC (rev 63637)
@@ -0,0 +1,3396 @@
+% \lst at definelanguage[...]{TeX}{%
+ %   % Control sequences names
+ %   moretexcs={%
+ %   },%
+ %   % Keywords of class 1 : keywords that contain other characters
+ %   % (since of the same class as the ones specified as 'otherkeywords')
+ %   morekeywords={%
+ %   },%
+ %   % Keywords of class 2 : environments names
+ %   morekeywords=[2]{%
+ %   },%
+ %   % Keywords of class 3 : mandatory arguments (not environments) &
+ %   % optional arguments which are keys (in key=value)
+ %   morekeywords=[3]{%
+ %   },%
+ %   % Keywords of class 4 : values of keys (in key=value)
+ %   morekeywords=[4]{%
+ %   },%
+ %   % Keywords of class 5 : arguments specifications (after ":" in expl3
+ %   % syntax)
+ %   morekeywords=[5]{%
+ %    },%
+ %   % Keywords of class 6 : current package name (and possibly derived
+ %   % packages)
+ %    morekeywords=[6]{%
+ %      %
+ %   },%
+ %   % otherkeywords={},
+ %   % alsoletter={},
+ %   % alsodigit={},%
+ %   % alsoother={},%
+ %   sensitive,%
+ % }[keywords,tex,comments%]
+
+ \lst at definelanguage[letgut]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     letgutsetup,title,subtitle,author,francophony,person,author,%
+     package,package*,class,class*,software,software*,file,file*,%
+     foreignloc,latinloc,gutenberg,gut,lettre,lettregut,Cahier,%
+     Cahiers,letgut,letgutcls,knuth,lamport,tugboat,item*,letgutacro,%
+     separator,alertbox,terminal,inputarticle,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+     ctannews,ltx-code,ltx-code-result,ltx-code-external-result,%
+     bookreview,%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+     for-authors,for-readers,draft,final,screen,paper,number,date,%
+     pagecolor,allcolorslinks,membership-reminder,editorial,informations,%
+     title,addon,result width,reference,text,title,reviewer,bibkey,%
+     frontcover,price,result,and,%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     letgut%
+   },%
+   % otherkeywords={},%
+   alsoletter={-\ },%
+   % alsodigit={},%
+   alsoother={*},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ % LaTeX texcs and keywords that are missing in `listings` driver file
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\lst at definelanguage[extLaTeX]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     Huge,LARGE,Large,LoadClass,NewCommandCopy,RequirePackage,%
+     ShowCommand,abovecaptionskip,abstractname,appendix,appendixname,%
+     arraycolsep,arrayrulewidth,author,backmatter,baselinestretch,%
+     belowcaptionskip,bf,bibindent,bibname,bigskipamount,bottomfraction,%
+     brokenpenalty,cal,chapter,chaptermark,chaptername,clubpenalty,%
+     columnsep,columnseprule,contentsname,date,dblfloatpagefraction,%
+     dblfloatsep,dbltextfloatsep,dbltopfraction,descriptionlabel,%
+     displaywidowpenalty,doublerulesep,evensidemargin,fboxrule,fboxsep,%
+     figurename,floatpagefraction,floatsep,footins,footnoterule,%
+     footnotesep,footnotesize,footskip,frontmatter,headheight,headsep,%
+     huge,indexname,indexspace,interlinepenalty,intextsep,it,jot,%
+     labelenumi,labelenumii,labelenumiii,labelenumiv,labelitemfont,%
+     labelitemi,labelitemii,labelitemiii,labelitemiv,labelsep,%
+     labelwidth,large,leftmargin,leftmargini,leftmarginii,leftmarginiii,%
+     leftmarginiv,leftmarginv,leftmarginvi,lineskip,listfigurename,%
+     listoffigures,listoftables,listtablename,mainmatter,maketitle,%
+     marginparpush,marginparsep,marginparwidth,maxdepth,medskipamount,%
+     mit,newblock,normallineskip,normalsize,oddsidemargin,paragraph,%
+     paragraphmark,parindent,parskip,part,partname,partopsep,%
+     postdisplaypenalty,predisplaypenalty,refname,rm,sc,scriptsize,%
+     section,sectionmark,setlength,sf,sl,small,smallskipamount,%
+     subitem,subparagraph,subparagraphmark,subsection,subsectionmark,%
+     subsubitem,subsubsection,subsubsectionmark,tabbingsep,tabcolsep,%
+     tablename,tableofcontents,textfloatsep,textfraction,textheight,%
+     textwidth,thechapter,theenumi,theenumii,theenumiii,theenumiv,%
+     theequation,theparagraph,thepart,thesection,thesubparagraph,%
+     thesubsection,thesubsubsection,tiny,title,today,topfraction,%
+     topmargin,topskip,tt,widowpenalty,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+     abstract,array,center,description,displaymath,document,enumerate,%
+     eqnarray,equation,figure,flushleft,flushright,itemize,list,lrbox,math,%
+     minipage,picture,quotation,quote,sloppypar,tabbing,table,tabular,%
+     thebibliography,theindex,titlepage,trivlist,verbatim,verse,%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+     % c,cc,ccc,cccc,X,l,
+     empty,%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     %
+   },
+   otherkeywords={|},%
+   % alsoletter={},% alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[listings]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     lstDeleteShortInline,lstMakeShortInline,lstalias,lstaspectfiles,%
+     lstdefineformat,lstdefinelanguage,lst at definelanguage,lstdefinestyle,%
+     lstindexmacro,lstinline,lstinputlisting,lstlanguagefiles,%
+     lstlgrindeffile,lstlistingname,lstlistingnamestyle,%
+     lstlistlistingname,lstlistoflistings,lstloadlanguages,lstname,%
+     lstnewenvironment,lstset,theHlstnumber,thelstlabel,thelstlisting,%
+     thelstnumber,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+     lstlisting,%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+     0.21,ABAP,ACM,ACMscript,ACSL,Ada,Algol,Ant,Assembler,Awk,%
+     Basic,C,C++,CIL,Caml,Clean,Cobol,Comal 80,Comsol,Delphi,%
+     Eiffel,Elan,Euphoria,Fortran,GAP,GCL,Gnuplot,Go,HTML,Haskell,%
+     IDL,JVMIS,Java,LLVM,Lingo,Lisp,Logo,Lua,ML,Mathematica,Matlab,%
+     Mercury,MetaPost,Miranda,Mizar,Modula-2,MuPAD,NASTRAN,OCL,%
+     OORexx,Oberon-2,Octave,Oz,PHP,PL/I,POV,PSTricks,Pascal,Perl,%
+     Plasm,PostScript,Prolog,Promela,Python,R,RSL,Reduce,Rexx,Ruby,%
+     S,SAS,SHELXL,SPARQL,SQL,Scala,Scilab,Simula,Swift,TeX,%
+     VBScript,VHDL,VRML,Verilog,XML,XSLT,[03]Fortran,[08]Fortran,%
+     [1.0]Mathematica,[11.0]Mathematica,[11]C++,[1974]Cobol,[1985]Cobol,%
+     [2005]Ada,[3.0]Mathematica,[5.0]Lua,[5.1]Lua,[5.2]Lua,%
+     [5.2]Mathematica,[5.3]Lua,[60]Algol,[67]Simula,[68]Algol,%
+     [77]Fortran,[83]Ada,[90]Fortran,[95]Ada,[95]Fortran,[97]VRML,%
+     [AMS]VHDL,[ANSI]C,[ANSI]C++,[AlLaTeX]TeX,[AspectJ]Java,[Auto]Lisp,%
+     [Borland6]Pascal,[CII]Simula,[CORBA]IDL,[DEC]Simula,[GNU]C++,%
+     [Handel]C,[IBM]Simula,[ISO]C++,[LaTeX]TeX,[Motorola68k]Assembler,%
+     [OMG]OCL,[Objective]C,[Objective]Caml,[PLUS]S,[POSIX]Awk,[R/2
+     4.3]ABAP,[R/2 5.0]ABAP,[R/3 3.1]ABAP,[R/3 4.6C]ABAP,[R/3 6.10]ABAP,%
+     [Sharp]C,[Standard]Pascal,[VM/XA]Rexx,[Visual]Basic,[Visual]C++,%
+     [WinXP]command.com,[XSC]Pascal,[common]TeX,[decorative]OCL,%
+     [empty]IDL,[empty]Java,[empty]Lisp,[empty]Rexx,[empty]S,%
+     [empty]VHDL,[empty]make,[empty]tcl,[gnu]Awk,[gnu]make,[ibm]Cobol,%
+     [light]Caml,[plain]TeX,[primitive]TeX,[tk]tcl,[x86masm]Assembler,%
+     abovecaptionskip,aboveskip,alsodigit,alsolanguage,alsoletter,%
+     alsoother,backgroundcolor,basewidth,bash,basicstyle,%
+     belowcaptionskip,belowskip,boxpos,breakatwhitespace,breakautoindent,%
+     breakindent,breaklines,caption,captionpos,classoffset,columns,%
+     command.com,comment,comments,commentstyle,consecutivenumbers,csh,%
+     defaultdialect,deletecomment,deletedelim,deletedirectives,%
+     deleteemph,deleteendkeywords,deletehyperref,deleteindex,%
+     deletekeywordcomment,deletekeywords,deleteprocnamekeys,deletestring,%
+     deletetxcs,delim,directives,directivestyle,draft,elisp,emph,%
+     emphstyle,emptylines,erlang,escapebegin,escapechar,escapeend,%
+     escapeinside,extendedchars,fancyvrb,fillcolor,final,firstline,%
+     firstnumber,flexiblecolumns,float,floatplacement,fontadjust,%
+     formats,formfeed,frame,frameround,framerule,framesep,frameshape,%
+     framexbottommargin,framexleftmargin,framexrightmargin,%
+     framextopmargin,fvcmdparams,gobble,hansl,hyper,hyperanchor,%
+     hyperlink,hyperref,identifierstyle,includerangemarker,index,%
+     indexprocnames,indexstyle,inform,inputencoding,inputpath,%
+     keepspaces,keywordcomment,keywordcommentsemicolon,keywords,%
+     keywordsprefix,keywordstyle,ksh,label,language,lastline,lgrind,%
+     lgrindef,linerange,lineskip,linewidth,literate,make,makemacrouse,%
+     markfirstintag,mathescape,morecomment,moredelim,moredirectives,%
+     moreemph,moreendkeywords,morefvcmdparams,morehyperref,moreindex,%
+     morekeywordcomment,morekeywords,moreprocnamekeys,morestring,%
+     moretexcs,multicols,name,ndkeywords,ndkeywordstyle,noaspects,%
+     nolol,numberblanklines,numberbychapter,numberfirstline,numbers,%
+     numbersep,numberstyle,otherkeywords,podcomment,postbreak,prebreak,%
+     print,printpod,procnamekeys,procnames,procnamestyle,%
+     rangebeginprefix,rangebeginsuffix,rangeendprefix,rangeendsuffix,%
+     rangeprefix,rangesuffix,resetmargins,rulecolor,rulesep,%
+     rulesepcolor,savemem,sensitive,%
+     sh,showlines,showspaces,showstringspaces,showtabs,stepnumber,%
+     string,stringstyle,style,tab,tabsize,tag,tagstyle,tcl,texcl,%
+     texcs,texcsstyle,title,upquote,usekeywordsintag,xleftmargin,%
+     xrightmargin,LaTeX,TeX,tex%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+     b,c,t,none,left,right,%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     listings,%
+   },%
+   % otherkeywords={},%
+   alsoletter={@021.[]},%
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[xcolor]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     color,pagecolor,definecolor,colorlet,textcolor,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+     red,green,blue,cyan,magenta,yellow,black,gray,white,darkgray,%
+     lightgray,brown,lime,olive,orange,pink,purple,teal,violet },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     xcolor },%
+   % otherkeywords={},
+   % alsoletter={},
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[expl3]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     .bool_gset,%
+     ExplFileDate,ExplFileDescription,ExplFileName,ExplFileVersion,%
+     ExplSyntaxOff,ExplSyntaxOn,GetIdInfo,ProvidesExplClass,%
+     ProvidesExplFile,ProvidesExplPackage,bool_case_false,bool_case_true,%
+     bool_const,bool_do_until,bool_do_while,bool_gset,bool_gset_eq,%
+     bool_gset_false,bool_gset_inverse,bool_gset_true,bool_if,%
+     bool_if_exist,bool_if_exist_p,bool_if_p,bool_lazy_all,%
+     bool_lazy_all_p,bool_lazy_and,bool_lazy_and_p,bool_lazy_any,%
+     bool_lazy_any_p,bool_lazy_or,bool_lazy_or_p,bool_log,bool_new,%
+     bool_not_p,bool_set,bool_set_eq,bool_set_false,bool_set_inverse,%
+     bool_set_true,bool_show,bool_to_str,bool_until_do,bool_while_do,%
+     bool_xor,bool_xor_p,box_autosize_to_wd_and_ht,%
+     box_autosize_to_wd_and_ht_plus_dp,box_clear,box_clear_new,box_clip,%
+     box_dp,box_gautosize_to_wd_and_ht,box_gautosize_to_wd_and_ht_plus_dp,%
+     box_gclear,box_gclear_new,box_gclip,box_gresize_to_ht,%
+     box_gresize_to_ht_plus_dp,box_gresize_to_wd,box_gresize_to_wd_and_ht,%
+     box_gresize_to_wd_and_ht_plus_dp,box_grotate,box_gscale,box_gset_dp,%
+     box_gset_eq,box_gset_eq_drop,box_gset_ht,box_gset_to_last,%
+     box_gset_trim,box_gset_viewport,box_gset_wd,box_ht,box_ht_plus_dp,%
+     box_if_empty,box_if_empty_p,box_if_exist,box_if_exist_p,%
+     box_if_horizontal,box_if_horizontal_p,box_if_vertical,%
+     box_if_vertical_p,box_log,box_move_down,box_move_left,%
+     box_move_right,box_move_up,box_new,box_resize_to_ht,%
+     box_resize_to_ht_plus_dp,box_resize_to_wd,box_resize_to_wd_and_ht,%
+     box_resize_to_wd_and_ht_plus_dp,box_rotate,box_scale,box_set_dp,%
+     box_set_eq,box_set_eq_drop,box_set_ht,box_set_to_last,box_set_trim,%
+     box_set_viewport,box_set_wd,box_show,box_use,box_use_drop,box_wd,%
+     c_alignment_token,c_ampersand_str,c_atsign_str,c_backslash_str,%
+     c_catcode_active_space_tl,c_catcode_active_tl,c_catcode_letter_token,%
+     c_catcode_other_space_tl,c_catcode_other_token,c_circumflex_str,%
+     c_code_cctab,c_colon_str,c_document_cctab,c_dollar_str,c_e_fp,%
+     c_empty_box,c_empty_clist,c_empty_coffin,c_empty_prop,c_empty_seq,%
+     c_empty_tl,c_false_bool,c_group_begin_token,c_group_end_token,%
+     c_hash_str,c_inf_fp,c_initex_cctab,c_left_brace_str,c_log_iow,%
+     c_math_subscript_token,c_math_superscript_token,c_math_toggle_token,%
+     c_max_char_int,c_max_dim,c_max_int,c_max_muskip,c_max_register_int,%
+     c_max_skip,c_minus_inf_fp,c_minus_zero_fp,c_nan_fp,c_novalue_tl,%
+     c_one_degree_fp,c_one_fp,c_one_int,c_other_cctab,c_parameter_token,%
+     c_percent_str,c_pi_fp,c_right_brace_str,c_space_tl,c_space_token,%
+     c_str_cctab,c_sys_backend_str,c_sys_day_int,c_sys_engine_exec_str,%
+     c_sys_engine_format_str,c_sys_engine_str,c_sys_engine_version_str,%
+     c_sys_hour_int,c_sys_jobname_str,c_sys_minute_int,c_sys_month_int,%
+     c_sys_output_str,c_sys_platform_str,c_sys_shell_escape_int,%
+     c_sys_year_int,c_term_iow,c_tilde_str,c_true_bool,c_underscore_str,%
+     c_zero_dim,c_zero_fp,c_zero_int,c_zero_muskip,c_zero_skip,%
+     c_zero_str,cctab_begin,cctab_const,cctab_end,cctab_gset,%
+     cctab_if_exist,cctab_if_exist_p,cctab_item,cctab_new,cctab_select,%
+     char_foldcase,char_generate,char_gset_active_eq,char_lowercase,%
+     char_set_active_eq,char_set_catcode,char_set_catcode_active,%
+     char_set_catcode_alignment,char_set_catcode_comment,%
+     char_set_catcode_end_line,char_set_catcode_escape,%
+     char_set_catcode_group_begin,char_set_catcode_group_end,%
+     char_set_catcode_ignore,char_set_catcode_invalid,%
+     char_set_catcode_letter,char_set_catcode_math_subscript,%
+     char_set_catcode_math_superscript,char_set_catcode_math_toggle,%
+     char_set_catcode_other,char_set_catcode_parameter,%
+     char_set_catcode_space,char_set_lccode,char_set_mathcode,%
+     char_set_sfcode,char_set_uccode,char_show_value_catcode,%
+     char_show_value_lccode,char_show_value_mathcode,%
+     char_show_value_sfcode,char_show_value_uccode,char_str_foldcase,%
+     char_str_lowercase,char_str_titlecase,char_str_uppercase,%
+     char_titlecase,char_to_nfd,char_to_utfviii_bytes,char_uppercase,%
+     char_value_catcode,char_value_lccode,char_value_mathcode,%
+     char_value_sfcode,char_value_uccode,clist_clear,clist_clear_new,%
+     clist_concat,clist_const,clist_count,clist_gclear,clist_gclear_new,%
+     clist_gconcat,clist_get,clist_gpop,clist_gpush,clist_gput_left,%
+     clist_gput_right,clist_gremove_all,clist_gremove_duplicates,%
+     clist_greverse,clist_gset,clist_gset_eq,clist_gset_from_seq,%
+     clist_gsort,clist_if_empty,clist_if_empty_p,clist_if_exist,%
+     clist_if_exist_p,clist_if_in,clist_item,clist_log,clist_map_break,%
+     clist_map_function,clist_map_inline,clist_map_tokens,%
+     clist_map_variable,clist_new,clist_pop,clist_push,clist_put_left,%
+     clist_put_right,clist_rand_item,clist_remove_all,%
+     clist_remove_duplicates,clist_reverse,clist_set,clist_set_eq,%
+     clist_set_from_seq,clist_show,clist_sort,clist_use,coffin_attach,%
+     coffin_clear,coffin_display_handles,coffin_dp,coffin_gattach,%
+     coffin_gclear,coffin_gjoin,coffin_gresize,coffin_grotate,%
+     coffin_gscale,coffin_gset_eq,coffin_gset_horizontal_pole,%
+     coffin_gset_vertical_pole,coffin_ht,coffin_if_exist,%
+     coffin_if_exist_p,coffin_join,coffin_log,coffin_log_structure,%
+     coffin_mark_handle,coffin_new,coffin_resize,coffin_rotate,%
+     coffin_scale,coffin_set_eq,coffin_set_horizontal_pole,%
+     coffin_set_vertical_pole,coffin_show,coffin_show_structure,%
+     coffin_typeset,coffin_wd,color_ensure_current,color_export,%
+     color_fill,color_group_begin,color_group_end,color_log,color_math,%
+     color_model_new,color_profile_apply,color_select,color_set,%
+     color_set_eq,color_show,color_stroke,cs_argument_spec,cs,cs_end,%
+     cs_generate_from_arg_count,cs_generate_variant,cs_gset,cs_gset_eq,%
+     cs_gset_nopar,cs_gset_protected,cs_gset_protected_nopar,cs_if_eq,%
+     cs_if_eq_p,cs_if_exist,cs_if_exist_p,cs_if_exist_use,cs_if_free,%
+     cs_if_free_p,cs_log,cs_meaning,cs_new,cs_new_eq,cs_new_nopar,%
+     cs_new_protected,cs_new_protected_nopar,cs_prefix_spec,%
+     cs_replacement_spec,cs_set,cs_set_eq,cs_set_nopar,cs_set_protected,%
+     cs_set_protected_nopar,cs_show,cs_split_function,cs_to_str,%
+     cs_undefine,debug_off,debug_on,debug_resume,debug_suspend,dim_abs,%
+     dim_add,dim_case,dim_compare,dim_compare_p,dim_const,dim_do_until,%
+     dim_do_while,dim_eval,dim_gadd,dim_gset,dim_gset_eq,dim_gsub,%
+     dim_gzero,dim_gzero_new,dim_if_exist,dim_if_exist_p,dim_log,%
+     dim_max,dim_min,dim_new,dim_ratio,dim_set,dim_set_eq,dim_show,%
+     dim_sign,dim_step_function,dim_step_inline,dim_step_variable,%
+     dim_sub,dim_to_decimal,dim_to_decimal_in_bp,dim_to_decimal_in_sp,%
+     dim_to_decimal_in_unit,dim_to_fp,dim_until_do,dim_use,dim_while_do,%
+     dim_zero,dim_zero_new,draw_begin,draw_end,else,exp_after,exp_args,%
+     exp_args_generate,exp_end,exp_end_continue_f,exp_last_two_unbraced,%
+     exp_last_unbraced,exp_not,exp_stop_f,expandafter,expanded,fi,%
+     file_compare_timestamp,file_compare_timestamp_p,file_full_name,%
+     file_get,file_get_full_name,file_get_hex_dump,file_get_mdfive_hash,%
+     file_get_size,file_get_timestamp,file_hex_dump,file_if_exist,%
+     file_if_exist_input,file_input,file_input_stop,file_log_list,%
+     file_mdfive_hash,file_parse_full_name,file_parse_full_name_apply,%
+     file_show_list,file_size,file_timestamp,flag_clear,flag_clear_new,%
+     flag_height,flag_if_exist,flag_if_exist_p,flag_if_raised,%
+     flag_if_raised_p,flag_log,flag_new,flag_raise,flag_raise_if_clear,%
+     flag_show,fp_abs,fp_add,fp_compare,fp_compare_p,fp_const,%
+     fp_do_until,fp_do_while,fp_eval,fp_format,fp_gadd,fp_gset,%
+     fp_gset_eq,fp_gsub,fp_gzero,fp_gzero_new,fp_if_exist,fp_if_exist_p,%
+     fp_if_nan,fp_if_nan_p,fp_log,fp_max,fp_min,fp_new,fp_set,%
+     fp_set_eq,fp_show,fp_sign,fp_step_function,fp_step_inline,%
+     fp_step_variable,fp_sub,fp_to_decimal,fp_to_dim,fp_to_int,%
+     fp_to_scientific,fp_to_tl,fp_trap,fp_until_do,fp_use,fp_while_do,%
+     fp_zero,fp_zero_new,fparray_count,fparray_gset,fparray_gzero,%
+     fparray_item,fparray_item_to_tl,fparray_new,g_file_curr_dir_str,%
+     g_file_curr_ext_str,g_file_curr_name_str,g_msg_module_name_prop,%
+     g_msg_module_type_prop,g_peek_token,g_tmpa_bool,g_tmpa_box,%
+     g_tmpa_clist,g_tmpa_coffin,g_tmpa_dim,g_tmpa_fp,g_tmpa_int,%
+     g_tmpa_ior,g_tmpa_iow,g_tmpa_muskip,g_tmpa_prop,g_tmpa_regex,%
+     g_tmpa_seq,g_tmpa_skip,g_tmpa_str,g_tmpa_tl,g_tmpb_bool,g_tmpb_box,%
+     g_tmpb_clist,g_tmpb_coffin,g_tmpb_dim,g_tmpb_fp,g_tmpb_int,%
+     g_tmpb_ior,g_tmpb_iow,g_tmpb_muskip,g_tmpb_prop,g_tmpb_regex,%
+     g_tmpb_seq,g_tmpb_skip,g_tmpb_str,g_tmpb_tl,group_align_safe_begin,%
+     group_align_safe_end,group_begin,group_end,group_insert_after,%
+     group_log_list,group_show_list,hbox,hbox_gset,hbox_gset_end,%
+     hbox_gset_to_wd,hbox_overlap_center,hbox_overlap_left,%
+     hbox_overlap_right,hbox_set,hbox_set_end,hbox_set_to_wd,hbox_to_wd,%
+     hbox_to_zero,hbox_unpack,hbox_unpack_drop,hcoffin_gset,%
+     hcoffin_gset_end,hcoffin_set,hcoffin_set_end,if,if_bool,%
+     if_box_empty,if_case,if_catcode,if_charcode,if_cs_exist,if_dim,%
+     if_eof,if_false,if_hbox,if_int_compare,if_int_odd,if_meaning,%
+     if_mode_horizontal,if_mode_inner,if_mode_math,if_mode_vertical,%
+     if_predicate,if_true,if_vbox,int_abs,int_add,int_case,int_compare,%
+     int_compare_p,int_const,int_decr,int_div_round,int_div_truncate,%
+     int_do_until,int_do_while,int_eval,int_from_alph,int_from_base,%
+     int_from_bin,int_from_hex,int_from_oct,int_from_roman,int_gadd,%
+     int_gdecr,int_gincr,int_gset,int_gset_eq,int_gsub,int_gzero,%
+     int_gzero_new,int_if_even,int_if_even_p,int_if_exist,int_if_exist_p,%
+     int_if_odd,int_if_odd_p,int_incr,int_log,int_max,int_min,int_mod,%
+     int_new,int_rand,int_set,int_set_eq,int_show,int_sign,%
+     int_step_...,int_step_function,int_step_inline,int_step_variable,%
+     int_sub,int_to_Alph,int_to_Base,int_to_Hex,int_to_Roman,%
+     int_to_alph,int_to_arabic,int_to_base,int_to_bin,int_to_hex,%
+     int_to_oct,int_to_roman,int_to_symbols,int_until_do,int_use,%
+     int_value,int_while_do,int_zero,int_zero_new,%
+     intarray_const_from_clist,intarray_count,intarray_gset,%
+     intarray_gset_rand,intarray_gzero,intarray_item,intarray_log,%
+     intarray_new,intarray_rand_item,intarray_show,intarray_to_clist,%
+     ior_close,ior_get,ior_get_term,ior_if_eof,ior_if_eof_p,ior_log,%
+     ior_log_list,ior_map_break,ior_map_inline,ior_map_variable,ior_new,%
+     ior_open,ior_shell_open,ior_show,ior_show_list,ior_str_get,%
+     ior_str_get_term,ior_str_map_inline,ior_str_map_variable,%
+     iow_allow_break,iow_char,iow_close,iow_indent,iow_log,iow_log_list,%
+     iow_new,iow_newline,iow_now,iow_open,iow_shipout,iow_shipout_x,%
+     iow_show,iow_show_list,iow_term,iow_wrap,keys_define,%
+     keys_if_choice_exist,keys_if_choice_exist_p,keys_if_exist,%
+     keys_if_exist_p,keys_log,keys_set,keys_set_filter,keys_set_groups,%
+     keys_set_known,keys_show,keyval_parse,l_char_active_seq,%
+     l_char_special_seq,l_color_fixed_model_tl,l_color_math_active_tl,%
+     l_file_search_path_seq,l_iow_line_count_int,l_keys_choice_int,%
+     l_keys_choice_tl,l_keys_key_str,l_keys_path_str,%
+     l_keys_usage_load_prop,l_keys_usage_preamble_prop,l_keys_value_tl,%
+     l_my_int,l_peek_token,l_text_accents_tl,l_text_case_exclude_arg_tl,%
+     l_text_expand_exclude_tl,l_text_letterlike_tl,l_text_math_arg_tl,%
+     l_text_math_delims_tl,l_text_titlecase_check_letter_bool,l_tmpa_bool,%
+     l_tmpa_box,l_tmpa_clist,l_tmpa_coffin,l_tmpa_dim,l_tmpa_fp,%
+     l_tmpa_int,l_tmpa_muskip,l_tmpa_prop,l_tmpa_regex,l_tmpa_seq,%
+     l_tmpa_skip,l_tmpa_str,l_tmpa_tl,l_tmpb_bool,l_tmpb_box,%
+     l_tmpb_clist,l_tmpb_coffin,l_tmpb_dim,l_tmpb_fp,l_tmpb_int,%
+     l_tmpb_muskip,l_tmpb_prop,l_tmpb_regex,l_tmpb_seq,l_tmpb_skip,%
+     l_tmpb_str,l_tmpb_tl,legacy_if,legacy_if_gset,legacy_if_gset_false,%
+     legacy_if_gset_true,legacy_if_p,legacy_if_set,legacy_if_set_false,%
+     legacy_if_set_true,lua_escape,lua_now,lua_shipout,lua_shipout_e,%
+     mode_if_horizontal,mode_if_horizontal_p,mode_if_inner,%
+     mode_if_inner_p,mode_if_math,mode_if_math_p,mode_if_vertical,%
+     mode_if_vertical_p,mode_leave_vertical,msg_critical,%
+     msg_critical_text,msg_error,msg_error_text,msg_expandable_error,%
+     msg_fatal,msg_fatal_text,msg_gset,msg_if_exist,msg_if_exist_p,%
+     msg_info,msg_info_text,msg_line_context,msg_line_number,msg_log,%
+     msg_log_eval,msg_module_name,msg_module_type,msg_new,msg_none,%
+     msg_note,msg_redirect_class,msg_redirect_module,msg_redirect_name,%
+     msg_see_documentation_text,msg_set,msg_show,msg_show_eval,%
+     msg_show_item,msg_show_item_unbraced,msg_term,msg_warning,%
+     msg_warning_text,muskip_add,muskip_const,muskip_eval,muskip_gadd,%
+     muskip_gset,muskip_gset_eq,muskip_gsub,muskip_gzero,%
+     muskip_gzero_new,muskip_if_exist,muskip_if_exist_p,muskip_log,%
+     muskip_new,muskip_set,muskip_set_eq,muskip_show,muskip_sub,%
+     muskip_use,muskip_zero,muskip_zero_new,pdf_destination,%
+     pdf_object_if_exist,pdf_object_if_exist_p,pdf_object_new,%
+     pdf_object_ref,pdf_object_ref_last,pdf_object_unnamed_write,%
+     pdf_object_write,pdf_pageobject_ref,pdf_pagobject_ref,pdf_uncompress,%
+     pdf_version,pdf_version_compare,pdf_version_compare_p,%
+     pdf_version_gset,pdf_version_major,pdf_version_min_gset,%
+     pdf_version_minor,peek_N_type,peek_after,peek_analysis_map_break,%
+     peek_analysis_map_inline,peek_catcode,peek_catcode_collect_inline,%
+     peek_catcode_remove,peek_charcode,peek_charcode_collect_inline,%
+     peek_charcode_remove,peek_gafter,peek_meaning,%
+     peek_meaning_collect_inline,peek_meaning_remove,peek_regex,%
+     peek_regex_remove_once,peek_regex_replace_once,peek_remove_filler,%
+     peek_remove_spaces,prg_break,prg_break_point,prg_do_nothing,%
+     prg_generate_conditional_variant,prg_map_break,prg_new_conditional,%
+     prg_new_eq_conditional,prg_new_protected_conditional,prg_replicate,%
+     prg_return_false,prg_return_true,prg_set_conditional,%
+     prg_set_eq_conditional,prg_set_protected_conditional,prop_clear,%
+     prop_clear_new,prop_concat,prop_const_from_keyval,prop_count,%
+     prop_gclear,prop_gclear_new,prop_gconcat,prop_get,prop_gpop,%
+     prop_gput,prop_gput_from_keyval,prop_gput_if_new,prop_gremove,%
+     prop_gset_eq,prop_gset_from_keyval,prop_if_empty,prop_if_empty_p,%
+     prop_if_exist,prop_if_exist_p,prop_if_in,prop_if_in_p,prop_item,%
+     prop_log,prop_map_break,prop_map_function,prop_map_inline,%
+     prop_map_tokens,prop_new,prop_pop,prop_put,prop_put_from_keyval,%
+     prop_put_if_new,prop_rand_key_value,prop_remove,prop_set_eq,%
+     prop_set_from_keyval,prop_show,prop_to_keyval,q_mark,q_nil,%
+     q_no_value,q_recursion_stop,q_recursion_tail,q_stop,quark_if_nil,%
+     quark_if_nil_p,quark_if_no_value,quark_if_no_value_p,%
+     quark_if_recursion_tail_break,quark_if_recursion_tail_stop,%
+     quark_if_recursion_tail_stop_do,quark_new,regex_const,regex_count,%
+     regex_extract_all,regex_extract_once,regex_gset,regex_log,%
+     regex_match,regex_match_case,regex_new,regex_replace,%
+     regex_replace_all,regex_replace_case_all,regex_replace_case_once,%
+     regex_replace_once,regex_set,regex_show,regex_split,reverse_if,%
+     s_stop,scan_new,scan_stop,seq_clear,seq_clear_new,seq_concat,%
+     seq_const_from_clist,seq_count,seq_gclear,seq_gclear_new,%
+     seq_gconcat,seq_get,seq_get_left,seq_get_right,seq_gpop,%
+     seq_gpop_item,seq_gpop_left,seq_gpop_right,seq_gpush,seq_gput_left,%
+     seq_gput_right,seq_gremove_all,seq_gremove_duplicates,seq_greverse,%
+     seq_gset_eq,seq_gset_filter,seq_gset_from_clist,%
+     seq_gset_from_function,seq_gset_from_inline_x,seq_gset_item,%
+     seq_gset_map,seq_gset_map_x,seq_gset_split,%
+     seq_gset_split_keep_spaces,seq_gshuffle,seq_gsort,seq_if_empty,%
+     seq_if_empty_p,seq_if_exist,seq_if_exist_p,seq_if_in,seq_item,%
+     seq_log,seq_map_break,seq_map_function,seq_map_indexed_function,%
+     seq_map_indexed_inline,seq_map_inline,seq_map_tokens,%
+     seq_map_variable,seq_mapthread_function,seq_new,seq_pop,%
+     seq_pop_item,seq_pop_left,seq_pop_right,seq_push,seq_put_left,%
+     seq_put_right,seq_rand_item,seq_remove_all,seq_remove_duplicates,%
+     seq_reverse,seq_set_eq,seq_set_filter,seq_set_from_clist,%
+     seq_set_from_function,seq_set_from_inline_x,seq_set_item,seq_set_map,%
+     seq_set_map_x,seq_set_split,seq_set_split_keep_spaces,seq_show,%
+     seq_shuffle,seq_sort,seq_use,skip_add,skip_const,skip_eval,%
+     skip_gadd,skip_gset,skip_gset_eq,skip_gsub,skip_gzero,%
+     skip_gzero_new,skip_horizontal,skip_if_eq,skip_if_eq_p,%
+     skip_if_exist,skip_if_exist_p,skip_if_finite,skip_if_finite_p,%
+     skip_log,skip_new,skip_set,skip_set_eq,skip_show,skip_sub,%
+     skip_use,skip_vertical,skip_zero,skip_zero_new,sort_return_same,%
+     sort_return_swapped,str_case,str_case_e,str_clear,str_clear_new,%
+     str_compare,str_compare_p,str_concat,str_const,str_convert_pdfname,%
+     str_count,str_count_ignore_spaces,str_count_spaces,str_foldcase,%
+     str_gclear,str_gconcat,str_gput_left,str_gput_right,str_gremove_all,%
+     str_gremove_once,str_greplace_all,str_greplace_once,str_gset,%
+     str_gset_convert,str_gset_eq,str_head,str_head_ignore_spaces,%
+     str_if_empty,str_if_empty_p,str_if_eq,str_if_eq_p,str_if_exist,%
+     str_if_exist_p,str_if_in,str_item,str_item_ignore_spaces,str_log,%
+     str_lowercase,str_map_break,str_map_function,str_map_inline,%
+     str_map_tokens,str_map_variable,str_new,str_put_left,str_put_right,%
+     str_range,str_range_ignore_spaces,str_remove_all,str_remove_once,%
+     str_replace_all,str_replace_once,str_set,str_set_convert,str_set_eq,%
+     str_show,str_tail,str_tail_ignore_spaces,str_uppercase,str_use,%
+     sys_finalise,sys_get_shell,sys_gset_rand_seed,sys_if_engine_luatex,%
+     sys_if_engine_luatex_p,sys_if_engine_pdftex,sys_if_engine_pdftex_p,%
+     sys_if_engine_ptex,sys_if_engine_ptex_p,sys_if_engine_uptex,%
+     sys_if_engine_uptex_p,sys_if_engine_xetex,sys_if_engine_xetex_p,%
+     sys_if_output_dvi,sys_if_output_dvi_p,sys_if_output_pdf,%
+     sys_if_output_pdf_p,sys_if_platform_unix,sys_if_platform_unix_p,%
+     sys_if_platform_windows,sys_if_platform_windows_p,sys_if_rand_exist,%
+     sys_if_rand_exist_p,sys_if_shell,sys_if_shell_p,%
+     sys_if_shell_restricted,sys_if_shell_restricted_p,%
+     sys_if_shell_unrestricted,sys_if_shell_unrestricted_p,%
+     sys_load_backend,sys_load_debug,sys_rand_seed,sys_shell_now,%
+     sys_shell_shipout,sys_timer,text_declare_expand_equivalent,%
+     text_declare_purify_equivalent,text_expand,text_lowercase,%
+     text_purify,text_titlecase,text_titlecase_first,text_uppercase,%
+     tl_analysis_log,tl_analysis_map_inline,tl_analysis_show,%
+     tl_build_begin,tl_build_clear,tl_build_end,tl_build_gbegin,%
+     tl_build_gclear,tl_build_gend,tl_build_get,tl_build_gput_left,%
+     tl_build_gput_right,tl_build_put_left,tl_build_put_right,tl_case,%
+     tl_clear,tl_clear_new,tl_concat,tl_const,tl_count,tl_count_tokens,%
+     tl_gclear,tl_gclear_new,tl_gconcat,tl_gput_left,tl_gput_right,%
+     tl_gremove_all,tl_gremove_once,tl_greplace_all,tl_greplace_once,%
+     tl_greverse,tl_gset,tl_gset_eq,tl_gset_rescan,tl_gsort,%
+     tl_gtrim_spaces,tl_head,tl_if_blank,tl_if_blank_p,tl_if_empty,%
+     tl_if_empty_p,tl_if_eq,tl_if_eq_p,tl_if_exist,tl_if_exist_p,%
+     tl_if_head_eq_catcode,tl_if_head_eq_catcode_p,tl_if_head_eq_charcode,%
+     tl_if_head_eq_charcode_p,tl_if_head_eq_meaning,%
+     tl_if_head_eq_meaning_p,tl_if_head_is_N_type,tl_if_head_is_N_type_p,%
+     tl_if_head_is_group,tl_if_head_is_group_p,tl_if_head_is_space,%
+     tl_if_head_is_space_p,tl_if_in,tl_if_novalue,tl_if_novalue_p,%
+     tl_if_single,tl_if_single_p,tl_if_single_token,tl_if_single_token_p,%
+     tl_item,tl_log,tl_map_break,tl_map_function,tl_map_inline,%
+     tl_map_tokens,tl_map_variable,tl_new,tl_put_left,tl_put_right,%
+     tl_rand_item,tl_range,tl_range_braced,tl_range_unbraced,%
+     tl_remove_all,tl_remove_once,tl_replace_all,tl_replace_once,%
+     tl_rescan,tl_reverse,tl_reverse_items,tl_set,tl_set_eq,%
+     tl_set_rescan,tl_show,tl_sort,tl_tail,tl_to_str,tl_trim_spaces,%
+     tl_trim_spaces_apply,tl_use,token_case_catcode,token_case_charcode,%
+     token_case_meaning,token_if_active,token_if_active_p,%
+     token_if_alignment,token_if_alignment_p,token_if_chardef,%
+     token_if_chardef_p,token_if_cs,token_if_cs_p,token_if_dim_register,%
+     token_if_dim_register_p,token_if_eq_catcode,token_if_eq_catcode_p,%
+     token_if_eq_charcode,token_if_eq_charcode_p,token_if_eq_meaning,%
+     token_if_eq_meaning_p,token_if_expandable,token_if_expandable_p,%
+     token_if_font_selection,token_if_font_selection_p,%
+     token_if_group_begin,token_if_group_begin_p,token_if_group_end,%
+     token_if_group_end_p,token_if_int_register,token_if_int_register_p,%
+     token_if_letter,token_if_letter_p,token_if_long_macro,%
+     token_if_long_macro_p,token_if_macro,token_if_macro_p,%
+     token_if_math_subscript,token_if_math_subscript_p,%
+     token_if_math_superscript,token_if_math_superscript_p,%
+     token_if_math_toggle,token_if_math_toggle_p,token_if_mathchardef,%
+     token_if_mathchardef_p,token_if_muskip_register,%
+     token_if_muskip_register_p,token_if_other,token_if_other_p,%
+     token_if_parameter,token_if_parameter_p,token_if_primitive,%
+     token_if_primitive_p,token_if_protected_long_macro,%
+     token_if_protected_long_macro_p,token_if_protected_macro,%
+     token_if_protected_macro_p,token_if_skip_register,%
+     token_if_skip_register_p,token_if_space,token_if_space_p,%
+     token_if_toks_register,token_if_toks_register_p,token_to_meaning,%
+     token_to_str,unvcopy,use,use_i,use_i_delimit_by_q_nil,%
+     use_i_delimit_by_q_recursion_stop,use_i_delimit_by_q_stop,use_i_ii,%
+     use_ii,use_ii_i,use_iii,use_iv,use_none,use_none_delimit_by_q_nil,%
+     use_none_delimit_by_q_recursion_stop,use_none_delimit_by_q_stop,%
+     use_none_delimit_by_s_stop,vbox,vbox_gset,vbox_gset_end,%
+     vbox_gset_split_to_ht,vbox_gset_to_ht,vbox_gset_top,vbox_set,%
+     vbox_set_end,vbox_set_split_to_ht,vbox_set_to_ht,vbox_set_top,%
+     vbox_to_ht,vbox_to_zero,vbox_top,vbox_unpack,vbox_unpack_drop,%
+     vcoffin_gset,vcoffin_gset_end,vcoffin_set,vcoffin_set_end,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+     name,alternative-model,alternative-values,%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+     cmyk,%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+     D,N,Nn,NF,NN,Nx,NT,NTF,NNn,NnV,Nnn,Npn,Nnnn,V,c,e,en,f,n,nF,%
+     nn,nT,nnn,nnF,nnV,nTF,nnnn,nNnF,nNnT,nnVV,o,p,v,w,x,%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     expl3,%
+   },
+   otherkeywords={:,~},%
+   alsoletter={_-.},%
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[pdftex]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     pdfinfo,pdfcatalog,pdfpageattr,pdfpagesattr,pdfpageresources,%
+     pdfcolorstack,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     pdftex,%
+   },%
+   % otherkeywords={},
+   % alsoletter={},
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[luatex]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     pdfextension,ifluatex,directlua,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+     colorstack },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     luatex,%
+   },%
+   % otherkeywords={},
+   % alsoletter={},
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[dvips]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+     color,push,%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     dvips,%
+   },%
+   % otherkeywords={},
+   % alsoletter={},
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[xetex]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+     pdfcolorstack,%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     xetex,%
+   },%
+   % otherkeywords={},
+   % alsoletter={},
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[inputenc]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+     latin1 },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     inputenc,%
+   },%
+   % otherkeywords={},%
+   alsoletter={1},%
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[pdfmanagement-testphase]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     pdfmanagement_add,DeclareDocumentMetadata,AddToDocumentProperties,%
+     ShowDocumentProperties,GetDocumentProperties,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{% Keys or optional arguments
+     pdfmanagement-testphase,uncompress,geometry,top-level,backend,Info,%
+     ThisPage,pdfversion,pdfstandard,paper,topic,Title,Rotate,%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+     dvipdfmx,%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+     nnn,%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     pdfmanagement-testphase,%
+   },
+   otherkeywords={:},%
+   alsoletter={_-},%
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[rotating]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+     sidewaystable,%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     rotating,%
+   },%
+   % alsoletter={},
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[fontenc]{TeX}%
+ {%
+   % Control sequences names
+   moretexcs={%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+     T1 },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     fontenc,%
+   },%
+   % otherkeywords={},
+   % alsoletter={1},%
+   alsodigit={1},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[babel]{TeX}%
+ {%
+   % Control sequences names
+   moretexcs={%
+     foreignlanguage,selectlanguage,iflanguage,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+     otherlanguage,%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+     UKenglish,USenglish,acadian,afrikaans,american,arabic,australian,%
+     austrian,azerbaijani,bahasa,bahasai,basque,bgreek,brazil,%
+     brazilian,breton,british,bulgarian,canadian,canadien,catalan,%
+     croatian,czech,danish,dutch,english,esperanto,estonian,ethiop,%
+     farsi,finnish,francais,french,frenchle,friulan,galician,german,%
+     germanb,greek,hebrew,hindi,ibygreek,icelandic,indon,indonesian,%
+     interlingua,irish,italian,japanese,latin,latvian,lithuanian,%
+     lowersorbian,magyar,malay,melayu (bahasam),mongolian,naustrian,%
+     newzealand,ngerman,norsk,nynorsk,pinyin,polish,polutonikogreek,%
+     portuges,portuguese,romanian,romansh,russian,samin,scottish,%
+     serbian,serbianc,slovak,slovene,spanglish,spanish,swedish,thai,%
+     thaicjk,turkish,turkmen,ukrainian,uppersorbian,vietnamese,%
+     welsh,%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     babel,%
+   },%
+   % otherkeywords={},
+   % alsoletter={},
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[babel-french]{TeX}%
+ {%
+   % Control sequences names
+   moretexcs={%
+     og,fg,up,bsc,ier,iers,iere,ieres,ieme,iemes,primo,secundo,%
+     tertio,quarto,FrenchEnumerate,No,Nos,no,nos,degre,nombre,%
+     frenchabstractname,frenchbibname,frenchrefname,frenchprefacename,%
+     frenchchaptername,frenchappendixname,frenchcontentsname,%
+     frenchlistfigurename,frenchlisttablename,frenchindexname,%
+     frenchglossaryname,frenchfigurename,frenchtablename,frenchpartname,%
+     frenchenclname,frenchccname,frenchheadtoname,frenchpagename,%
+     frenchseename,frenchalsoname,frenchproofname%,%
+     frquote,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     babel-french,%
+   },%
+   % otherkeywords={},%
+   alsoletter={-},%
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[kantlipsum]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     kant,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     kantlipsum,%
+   },%
+   % otherkeywords={},
+   % alsoletter={},
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[hyperxmp]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     hyperxmp,%
+   },%
+   % otherkeywords={},
+   % alsoletter={},
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[hyperref]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     hypersetup,href,phantomsection,pdfstringdefDisableCommands,url,%
+     nolinkurl,hyperbaseurl,hyperimage,hyperdef,hyperref,hyperlink,%
+     hypertarget,hyperget,autoref,autopageref,ref*,pageref*,autoref*,%
+     autopageref*,pdfstringdef,pdfbookmark,currentpdfbookmark,%
+     subpdfbookmark,belowpdfbookmark,texorpdfstring,thispdfpagelabel,%
+     hypercalcbp,nameref,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+     allbordercolors,allcolors,anchorcolor,backref,baseurl,bookmarks,%
+     bookmarksnumbered,bookmarksopen,bookmarksopenlevel,bookmarkstype,%
+     breaklinks,CJKbookmarks,citebordercolor,citecolor,colorlinks,debug,%
+     destlabel,draft,driverfallback,dvipdfm,dvipdfmx,dvips,dvipsone,%
+     dviwindo,encap,extension,filebordercolor,filecolor,final,%
+     frenchlinks,hidelinks,hyperfigures,hyperfootnotes,hyperindex,%
+     hypertex,hypertexnames,implicit,latex2html,linkbordercolor,%
+     linkcolor,linktoc,linktocpage,menubordercolor,menucolor,nativepdf,%
+     naturalnames,nesting,next-anchor,pageanchor,pagebackref,pdfauthor,%
+     pdfborder,pdfborderstyle,pdfcenterwindow,pdfcreator,pdfdirection,%
+     pdfdisplaydoctitle,pdfduplex,pdffitwindow,pdfhighlight,pdfinfo,%
+     pdfkeywords,pdflang,pdfmark,pdfmenubar,pdfnewwindow,%
+     pdfnonfullscreenpagemode,pdfnumcopies,pdfpagelabels,pdfpagelayout,%
+     pdfpagemode,pdfpagescrop,pdfpagetransition,pdfpicktraybypdfsize,%
+     pdfprintarea,pdfprintclip,pdfprintpagerange,pdfprintscaling,%
+     pdfproducer,pdfremotestartview,pdfstartpage,pdfstartview,pdfsubject,%
+     pdftex,pdftitle,pdftoolbar,pdftrapped,pdfview,pdfviewarea,%
+     pdfviewclip,pdfwindowui,plainpages,ps2pdf,psdextra,raiselinks,%
+     runbordercolor,runcolor,setpagesize,tex4ht,textures,unicode,%
+     urlbordercolor,urlcolor,verbose,vtex,xetex,%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     hyperref,%
+   },%
+   % otherkeywords={},%
+   alsoletter={*},%
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[graphicx]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     includegraphics,includegraphics*,definecolor,color,textcolor,%
+     mathcolor,pagecolor,nopagecolor,colorbox,fcolorbox,rotatebox,%
+     scalebox,reflectbox,resizebox,resizebox*,graphicspath,%
+     DeclareGraphicsExtensions,DeclareGraphicsRule },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+     draft,final,hiresbb,demo,setpagesize,nosetpagesize,dvips,xdvi,%
+     dvipdf,dvipdfm,dvipdfmx,xetex,pdftex,luatex,dvisvgm,dvipsone,%
+     dviwindo,emtex,dviwin,oztex,textures,pctexps,pctexwin,pctexhp,%
+     pctex32,truetex,tcidvi,vtex,debugshow,hiderotate,hidescale,alt,%
+     %
+     bb,bbllx,bblly,bburx,bbury,natwidth,natheight,hiresbb,pagebox,%
+     viewport,trim,angle,origin,width,height,totalheight,%
+     keepaspectratio,scale,clip,draft,type,ext,read,command,quiet,%
+     page,interpolate,decodearray,origin,x,y,units,%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+     mediabox,cropbox,bleedbox,trimbox,artbox,true,false,%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     graphicx,%
+   },%
+   % otherkeywords={},%
+   alsoletter={23},%
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[geometry]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     geometry,newgeometry,restoregeometry,savegeometry,loadgeometry,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+     paper,papername,paperwidth,paperheight,papersize,landscape,%
+     portrait,layout,layoutwidth,layoutheight,layoutsize,layouthoffset,%
+     layoutvoffset,layoutoffset,hscale,vscale,scale,width,totalwidth,%
+     height,totalheight,total,textwidth,textheight,text,body,lines,%
+     includehead,includefoot,includeheadfoot,includemp,includeall,%
+     ignorehead,ignorefoot,ignoreheadfoot,ignoremp,ignoreall,%
+     heightrounded,hdivide,vdivide,divide,left,lmargin,inner,right,%
+     rmargin,outer,top,tmargin,bottom,bmargin,hmargin,vmargin,margin,%
+     hmarginratio,vmarginratio,marginratio,ratio,hcentering,vcentering,%
+     centering,twoside,asymmetric,headheight,head,headsep,footskip,%
+     foot,nohead,nofoot,noheadfoot,footnotesep,marginparwidth,%
+     marginparsep,nomarginpar,columnsep,hoffset,voffset,offset,%
+     twocolumn,onecolumn,reversemp,reversemarginpar,verbose,reset,mag,%
+     truedimen,pass,showframe,showcrop,%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+     a0paper,a1paper,a2paper,a3paper,a4paper,a5paper,a6paper,b0paper,%
+     b1paper,b2paper,b3paper,b4paper,b5paper,b6paper,c0paper,c1paper,%
+     c2paper,c3paper,c4paper,c5paper,c6paper,b0j,b1j,b2j,b3j,b4j,%
+     b5j,b6j,ansiapaper,ansibpaper,ansicpaper,ansidpaper,ansiepaper,%
+     letterpaper,executivepaper,legalpaper,screen,dvips,dvipdfm,pdftex,%
+     luatex,xetex,vtex,dvipdfmx,xdvipdfmx,%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     geometry,%
+   },%
+   % otherkeywords={},%
+   alsoletter={0123456},%
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[newpax]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     newpaxsetup,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+     addannots,%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+     false,%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     newpax,%
+   },%
+   % otherkeywords={},
+   % alsoletter={},
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[tikz]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     usetikzlibrary,draw,node,matrix,fill,foreach,tikz,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+     tikzpicture,%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+     pic,rotate,xshift,yshift,every node,inner sep,blend mode,fill,%
+     fit,circle,anchor,in,count,x,y,matrix,of,math,nodes,above
+     right,at,--,-|,|-,%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+     multiply,lightgray,base,%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     tikz,%
+   },%
+   % otherkeywords={},%
+   alsoletter={-| \ },%
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[tikzducks]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     duck,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+     alien,aodai,baguette,basket,beard,beret,bill,body,book,%
+     bookcolour,bowtie,bubblecolour,bunny,buttons,cake,cap,cape,%
+     cheese,chef,cocktail,conicalhat,crazyhair,cricket,crown,crozier,%
+     crystalball,darthvader,devil,easter,egga,eggb,eggc,eye,eyebrow,%
+     flavoura,flavourb,flavourc,football,glasses,graduate,grumpy,%
+     handbag,harlequin,hat,head,helmet,hockey,horsetail,icecream,%
+     inear,invisible,jacket,kingcrown,lapel,laughing,lightsaber,%
+     longhair,magichat,magicstars,magicwand,mask,milkshake,mohican,%
+     mullet,name,neckerchief,necklace,niuqelrah,overleaf,parrot,%
+     parting,peakedcap,pickaxe,pizza,prison,queencrown,recedinghair,%
+     ribbon,rollingpin,sailor,santa,sheep,shorthair,shovel,signback,%
+     signcolour,signpost,snowduck,speech,squareglasses,stethoscope,%
+     strawhat,sunglasses,tail,tassel,think,tie,tophat,torch,tshirt,%
+     umbrella,umbrellaclosed,unicorn,vampire,viking,water,wine,wing,%
+     witch,woggle,%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+     blue,green,red,yellow,%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     tikzducks,%
+   },%
+   % otherkeywords={},
+   % alsoletter={},
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[tikzlings]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     anteater,bear,bee,cat,chicken,coati,elephant,hippo,koala,%
+     marmot,mole,mouse,owl,panda,penguin,pig,rhino,sheep,sloth,%
+     squirrel,snowman,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+     3D,eye,contour,back,globalwarming,whiskers,schroedinger,%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     tikzlings,%
+   },%
+   % otherkeywords={},%
+   alsoletter={3},%
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[amsmath]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     cdots,ddots,vdots,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+     pmatrix,%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     amsmath,%
+   },%
+   % otherkeywords={},
+   % alsoletter={},
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ % xparse
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \lst at definelanguage[xparse]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     NewDocumentCommand,RenewDocumentCommand,ProvideDocumentCommand,%
+     DeclareDocumentCommand,NewDocumentEnvironment,%
+     RenewDocumentEnvironment,ProvideDocumentEnvironment,%
+     DeclareDocumentEnvironment,NewExpandableDocumentCommand,%
+     RenewExpandableDocumentCommand,ProvideExpandableDocumentCommand,%
+     DeclareExpandableDocumentCommand,IfNoValueT,IfNoValueF,IfNoValueTF,%
+     IfValueT,IfValueF,IfValueTF,IfBooleanT,IfBooleanF,IfBooleanTF,%
+     BooleanTrue,BooleanFalse,ProcessedArgument,ReverseBoolean,%
+     SplitArgument,SplitList,ProcessList,TrimSpaces,%
+     GetDocumentCommandArgSpec,GetDocumentEnvironmentArgSpec,%
+     ShowDocumentCommandArgSpec,ShowDocumentEnvironmentArgSpec,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+     log-declarations,%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     xparse,%
+   },%
+   % otherkeywords={},%
+   alsoletter={-},%
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ % colortbl
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \lst at definelanguage[colortbl]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     columncolor,rowcolor,cellcolor,arrayrulecolor,doublerulesepcolor,%
+     minrowclearance,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     colortbl,%
+   },%
+   % otherkeywords={},
+   % alsoletter={},
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ % multirow
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \lst at definelanguage[multirow]{TeX}%
+ {%
+   % Control sequences names
+   moretexcs={%
+     multirow,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     multirow,%
+   },%
+   % otherkeywords={},
+   % alsoletter={},
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ % nicematrix
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \lst at definelanguage[nicematrix]{TeX}%
+ {%
+   % Control sequences names
+   moretexcs={%
+     Cdots,Ddots,Vdots,Body,CodeBefore,CodeAfter,Block,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+     pNiceMatrix,NiceMatrix,NiceTabular,bNiceArray,%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+     hvlines,rules/width,baseline,colortbl-like,margin,right-margin,%
+     create-cell-nodes,rounded-corners,draw,%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     nicematrix,%
+   },
+   otherkeywords={&},%
+   alsoletter={/},%
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ % booktabs
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \lst at definelanguage[booktabs]{TeX}%
+ {%
+   % Control sequences names
+   moretexcs={%
+     toprule,midrule,bottomrule,cmidrule,addlinespace,morecmidrules,%
+     specialrule,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     booktabs,%
+   },%
+   % otherkeywords={},
+   % alsoletter={},
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ % strands
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \lst at definelanguage[strands]{TeX}%
+ {%
+   % Control sequences names
+   moretexcs={%
+     strands,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     strands,%
+   },%
+   % otherkeywords={},
+   % alsoletter={},
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ % cartonaugh
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \lst at definelanguage[cartonaugh]{TeX}%
+ {%
+   % Control sequences names
+   moretexcs={%
+     maxterms,minterms,terms,implicant,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+     cartonaugh,%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     cartonaugh,%
+   },%
+   % otherkeywords={},
+   % alsoletter={},
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ % xistercian
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \lst at definelanguage[xistercian]{TeX}%
+ {%
+   % Control sequences names
+   moretexcs={%
+     cisterciannum,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+     xistercian,%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     xistercian,%
+   },%
+   % otherkeywords={},
+   % alsoletter={},
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ % aboensis
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \lst at definelanguage[aboensis]{TeX}%
+ {%
+   % Control sequences names
+   moretexcs={%
+     abcursivefamily,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     aboensis,%
+   },%
+   % otherkeywords={},
+   % alsoletter={},
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ % tabularray
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \lst at definelanguage[tabularray]{TeX}%
+ {%
+   % Control sequences names
+   moretexcs={%
+     ,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+     tblr,%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+     width,colspec,row,bg,fg,font,column,hlines,X,%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+     odd,%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     tabularray,%
+   },%
+   % otherkeywords={},
+   % alsoletter={},
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ % ninecolors
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \lst at definelanguage[ninecolors]{TeX}%
+ {%
+   % Control sequences names
+   moretexcs={%
+     NineColors,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+     gray1,red1,brown1,yellow1,olive1,green1,teal1,cyan1,azure1,%
+     blue1,violet1,magenta1,purple1,gray2,red2,brown2,yellow2,olive2,%
+     green2,teal2,cyan2,azure2,blue2,violet2,magenta2,purple2,gray3,%
+     red3,brown3,yellow3,olive3,green3,teal3,cyan3,azure3,blue3,%
+     violet3,magenta3,purple3,gray4,red4,brown4,yellow4,olive4,%
+     green4,teal4,cyan4,azure4,blue4,violet4,magenta4,purple4,gray5,%
+     red5,brown5,yellow5,olive5,green5,teal5,cyan5,azure5,blue5,%
+     violet5,magenta5,purple5,gray6,red6,brown6,yellow6,olive6,%
+     green6,teal6,cyan6,azure6,blue6,violet6,magenta6,purple6,gray7,%
+     red7,brown7,yellow7,olive7,green7,teal7,cyan7,azure7,blue7,%
+     violet7,magenta7,purple7,gray8,red8,brown8,yellow8,olive8,%
+     green8,teal8,cyan8,azure8,blue8,violet8,magenta8,purple8,gray9,%
+     red9,brown9,yellow9,olive9,green9,teal9,cyan9,azure9,blue9,%
+     violet9,magenta9,purple9,gray1,red1,brown1,yellow1,olive1,%
+     green1,teal1,cyan1,azure1,blue1,violet1,magenta1,purple1,gray2,%
+     red2,brown2,yellow2,olive2,green2,teal2,cyan2,azure2,blue2,%
+     violet2,magenta2,purple2,gray3,red3,brown3,yellow3,olive3,%
+     green3,teal3,cyan3,azure3,blue3,violet3,magenta3,purple3,gray4,%
+     red4,brown4,yellow4,olive4,green4,teal4,cyan4,azure4,blue4,%
+     violet4,magenta4,purple4,gray5,red5,brown5,yellow5,olive5,%
+     green5,teal5,cyan5,azure5,blue5,violet5,magenta5,purple5,gray6,%
+     red6,brown6,yellow6,olive6,green6,teal6,cyan6,azure6,blue6,%
+     violet6,magenta6,purple6,gray7,red7,brown7,yellow7,olive7,%
+     green7,teal7,cyan7,azure7,blue7,violet7,magenta7,purple7,gray8,%
+     red8,brown8,yellow8,olive8,green8,teal8,cyan8,azure8,blue8,%
+     violet8,magenta8,purple8,gray9,red9,brown9,yellow9,olive9,%
+     green9,teal9,cyan9,azure9,blue9,violet9,magenta9,purple9,%
+     saturation,%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+     low,medium,high,%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     ninecolors,%
+   },%
+   % otherkeywords={},%
+   alsoletter={123456789},%
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[fontspec]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     EncodingAccent,EncodingCommand,EncodingComposite,%
+     EncodingCompositeCommand,EncodingSymbol,IfFontExistsTF,%
+     IfFontFeatureActiveTF,UndeclareAccent,UndeclareCommand,%
+     UndeclareComposite,UndeclareSymbol,addfontfeature,addfontfeatures,%
+     aliasfontfeature,aliasfontfeatureoption,defaultfontfeatures,fontspec,%
+     liningnums,newAATfeature,newfontface,newfontfamily,newfontfeature,%
+     newfontlanguage,newfontscript,newopentypefeature,oldstylenums,%
+     providefontface,providefontfamily,renewfontface,renewfontfamily,%
+     setboldmathrm,setfontface,setfontfamily,setmainfont,setmathrm,%
+     setmathsf,setmathtt,setmonofont,setromanfont,setsansfont,strong,%
+     strongfontdeclare,strongresetsetmainfont,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+     Alternate,Annotation,AutoFakeBold,AutoFakeSlant,BoldFeatures,%
+     BoldFont,BoldItalicFeatures,BoldItalicFont,BoldSlantedFeatures,%
+     BoldSlantedFont,BoldSwashFeatures,BoldSwashFont,CJKShape,%
+     CharacterVariant,CharacterWidth,Color,Colour,Contextuals,%
+     Diacritics,Extension,FakeBold,FakeSlant,FakeStretch,Font,FontFace,%
+     Fractions,HyphenChar,IgnoreFontspecFileItalicFeatures,ItalicFont,%
+     Kerning,Language,LetterSpace,Letters,Ligatures,LocalForms,%
+     NFSSFamily,Numbers,OpticalSize,Ornament,Path,PunctuationSpace,%
+     RawFeature,Scale,ScaleAgain,Script,Size,SizeFeatures,%
+     SlantedFeatures,SlantedFont,SmallCapsFeatures,SmallCapsFont,Style,%
+     StylisticAlternates,StylisticSet,SwashFeatures,SwashFont,%
+     UprightFeatures,UprightFont,Variant,Vertical,VerticalPosition,%
+     WordSpace,Mapping,Renderer,Traditional,Simplified,JIS1978,JIS1983,%
+     JIS1990,Expert,NLC,%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+     AboveBase,Alternate,AlternateHalf,AlternateMetrics,%
+     AlternateProportional,Alternates,AlternatesForRotation,Arabic,%
+     ArabicOff,BelowBase,Common,Contextual,Cursive,Denominator,%
+     Discretionary,Expert,Full,Half,HalfMetrics,Historic,%
+     HorizontalKana,Inferior,Inner,Italic,JIS1978,JIS1983,JIS1990,%
+     KanaAlternates,Kerning,LineFinal,Lining,LiningOff,Lowercase,%
+     LowercaseOff,MarkToBase,MarkToMark,Monospaced,MonospacedOff,NLC,%
+     Numerator,Off,OldStyle,OldStyleOff,On,Ordinal,PetiteCaps,%
+     Proportional,ProportionalMetrics,ProportionalOff,Quarter,Rare,%
+     Required,Reset,ResetAll,RotatedGlyphs,Ruby,ScientificInferior,%
+     Simplified,SlashedZero,SlashedZeroOff,SmallCaps,Superior,Swash,%
+     TeX,Thurd,Titling,Traditional,Unicase,Uppercase,UppercaseOff,%
+     UppercasePetiteCaps,UppercaseSmallCaps,VerticalKana,WordFinal,%
+     WordInitial,ResetAll,c2sc,scmp,sinf,sups,zero,ss06,ss01,%
+     ss04,-liga,frac,titl,swsh,hist,hlig%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     fontspec%
+   },%
+   % otherkeywords={},%
+   alsoletter={20614-},%
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[ProfCollege]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     Thales,Pourcentage,ResolEquation%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+     Twitter,Scratch,%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+     Auteur,Logo,Calculer,%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+     Place,Drapeau,Avancer,Repeter,Tournerg,FinBlocRepeter,%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     ProfCollege,%
+   },%
+   % otherkeywords={},
+   % alsoletter={},
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[tkz-euclide]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     tkzDefPoint,tkzInterCC,tkzGetPoints,tkzDrawCircles,tkzDrawPolygon,%
+     tkzDrawPoints,tkzMarkSegments,tkzLabelSegments,tkzLabelPoints,%
+     tkzLabelPoints,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+     tikzpicture,%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+     mark,swap,above,scale,%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     tkz-euclide },%
+   % otherkeywords={},
+   % alsoletter={},
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[tkz-fct]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     tkzInit,tkzDrawX,tkzDrawY,tkzFct,tkzDefPoint,tkzDrawPoint,%
+     tkzPointShowCoord,tkzDefPoint,tkzDrawPoint,tkzPointShowCoord,%
+     tkzRep,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+     tikzpicture,%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+     xmin,xmax,ymin,ymax,samples,domain,xlabel,ylabel,xscale,yscale%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     tkz-fct },%
+   % otherkeywords={},
+   % alsoletter={},
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[tkz-tab]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     tkzTabInit,tkzTabLine,tkzTabVar,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+     tikzpicture,%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+     lgt,espcl,t,d,z,+,-,-D+/,+/,-/,+D/,scale,%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     tkz-tab },%
+   % otherkeywords={},%
+   alsoletter={+-/},%
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[mecaso]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     KineticT,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     mecaso },%
+   % otherkeywords={},
+   % alsoletter={},
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[hanzibox]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     hanzibox*,hanziboxset,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+     frametype,pinyinline,%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+     none,true,%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     hanzibox },%
+   % otherkeywords={},%
+   % alsoletter={},%
+   % alsodigit={},%
+   alsoother={*},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[tikz-bagua]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     Bagua*,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     tikz-bagua },%
+   % otherkeywords={},%
+   % alsoletter={},%
+   % alsodigit={},%
+   alsoother={*},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[bodeplot]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     addBodeZPKPlots },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+     BodePlot,%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+     ylabel,ytick,distance,height,width,magnitude,z,p,k,%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+     true,black,thick,linear,red,dashed,thick,asymptotic,blue,%
+     dotted,thick,%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     bodeplot },%
+   % otherkeywords={},%
+   alsoletter={/},%
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[formal-grammar]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     highlight,firstcase,gralt,nonterm },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+     grammar },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     formal-grammar },%
+   % otherkeywords={},
+   % alsoletter={},
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[numerica-plus]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     nmcRecur,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+     do,see1,f_,%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     numerica-plus },%
+   % otherkeywords={},%
+   alsoletter={_1},%
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[pascaltriangle]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     pascal,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     pascaltriangle },%
+   % otherkeywords={},
+   % alsoletter={},
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[pgf-interference]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     pgfinterferencepattern,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters
+   % (since of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+     slits,wavelength,slit-distance,intensity,ruler,scale,%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     pgf-interference%
+   },%
+   % otherkeywords={},%
+   alsoletter={-},%
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[clistmap]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     ExplSyntaxOn,ExplSyntaxOff,clistmap,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+     first_math,serial_rest_math_and,%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+     nnn,N,%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     clistmap },%
+   % otherkeywords={},%
+   alsoletter={_},%
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[hexboard]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     hexmove,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+     hexgamelabels,%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     hexboard },%
+   % otherkeywords={},
+   % alsoletter={},
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[robotarm]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     robotArm,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+     tikzpicture },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+     config,q1,q2,q3,%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     robotarm },%
+   % otherkeywords={},%
+   alsoletter={123},%
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[amsfonts]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     mathbb,mathfrak,angle,Box,dasharrow,dashleftarrow,dashrightarrow,%
+     Diamond,hbar,Join,leadsto,lhd,llcorner,lozenge,lrcorner,mho,%
+     rhd,rightleftharpoons,rightsquigarrow,sqsubset,sqsupset,square,%
+     trianglelefteq,trianglerighteq,ulcorner,unlhd,unrhd,urcorner,%
+     vartriangleleft,vartriangleright,widehat{arg},widetilde{arg},yen,%
+     checkmark,circledR,maltese,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     amsfonts },%
+   % otherkeywords={},
+   % alsoletter={},
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[biolinum]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     biolinum,biolinumOsF,biolinumLF,biolinumkey,sufigures,textsu,%
+     textsuperior,oldstylenums,liningnums,oldstylenumsf,liningnumsf,%
+     tabularnums,proportionalnums,tabularnumsf,proportionalnumsf,%
+     DeclareTextGlyphY,biolinumGlyph,biolinumKeyGlyph,LKey,LKeyPad,%
+     LKeyF,LKeyAltF,LKeyStrgAltF,LKeyCtrlAltF,LKeyStrgX,LKeyCtrlX,%
+     LKeyShiftX,LKeyAltX,LKeyAltGrX,LKeyShiftStrgX,LKeyShiftCtrlX,%
+     LKeyShiftAltX,LKeyShiftAltGrX,LKeyStrgAltX,LKeyCtrlAltX,%
+     LKeyStrgAltEnt,LKeyCtrlAltEnt,LKeyReset,LKeyTux,LKeyWin,LKeyMenu,%
+     LKeyStrg,LKeyCtrl,LKeyAlt,LKeyAltGr,LKeyShift,LKeyTab,LKeyEnter,%
+     LKeyCapsLock,LKeyPos,LKeyEntf,LKeyEinf,LKeyLeer,LKeyEsc,LKeyEnde,%
+     LKeyCommand,LKeyOptionKey,LKeyBack,LKeyUp,LKeyDown,LKeyLeft,%
+     LKeyRight,LKeyPgUp,LKeyPgDown,LKeyAt,LKeyFn,LKeyHome,LKeyDel,%
+     LKeySpace,LKeyScreenUp,LKeyScreenDown,LKeyIns,LKeyEnd,LKeyGNU,%
+     LKeyPageUp,LKeyPageDown,LMouseEmpty,LMouseN,LMouseL,LMouseM,%
+     LMouseR,LMouseLR,LMouseIIEmpty,LMouseIIN,LMouseIIL,LMouseIIR,%
+     LMouseIILR,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+     sfdefault,type1,nofontspec,lining,nf,lf,oldstyle,osf,sflining,%
+     sflf,sfoldstyle,sfosf,osfss,tabular,t,p,sftabular,sft,%
+     sfproportional,sfp,scaled,scale,defaultfeatures,space,uni0020,%
+     exclam,uni0021,quotedbl,uni0022,numbersign,uni0023,dollar,%
+     uni0024,percent,uni0025,ampersand,uni0026,quotesingle,uni0027,%
+     parenleft,uni0028,parenright,uni0029,asterisk,uni002A,plus,%
+     uni002B,comma,uni002C,hyphen,uni002D,period,uni002E,slash,%
+     uni002F,zero,uni0030,one,uni0031,two,uni0032,three,uni0033,%
+     four,uni0034,five,uni0035,six,uni0036,seven,uni0037,eight,%
+     uni0038,nine,uni0039,colon,uni003A,semicolon,uni003B,less,%
+     uni003C,equal,uni003D,greater,uni003E,question,uni003F,at,%
+     bracketleft,uni005B,backslash,uni005C,bracketright,uni005D,%
+     asciicircum,uni005E,underscore,uni005F,grave,uni0060,uni007A,%
+     braceleft,uni007B,bar,uni007C,braceright,uni007D,asciitilde,%
+     uni007E,exclamdown,uni00A1,cent,uni00A2,sterling,uni00A3,%
+     currency,uni00A4,yen,uni00A5,brokenbar,uni00A6,section,uni00A7,%
+     dieresis,uni00A8,guillemotleft,uni00AB,uni00AD,degree,uni00B0,%
+     plusminus,uni00B1,acute,uni00B4,uni00B5,periodcentered,uni00B7,%
+     cedilla,uni00B8,guillemotright,uni00BB,Agrave,uni00C0,Aacute,%
+     uni00C1,Acircumflex,uni00C2,Atilde,uni00C3,Adieresis,uni00C4,%
+     Aring,uni00C5,Ccedilla,uni00C7,Egrave,uni00C8,Eacute,uni00C9,%
+     Ecircumflex,uni00CA,Edieresis,uni00CB,Igrave,uni00CC,Iacute,%
+     uni00CD,Icircumflex,uni00CE,Idieresis,uni00CF,Eth,uni00D0,Ntilde,%
+     uni00D1,Ograve,uni00D2,Oacute,uni00D3,Ocircumflex,uni00D4,Otilde,%
+     uni00D5,Odieresis,uni00D6,multiply,uni00D7,Oslash,uni00D8,Ugrave,%
+     uni00D9,Uacute,uni00DA,Ucircumflex,uni00DB,Udieresis,uni00DC,%
+     Yacute,uni00DD,Thorn,uni00DE,germandbls,uni00DF,agrave,uni00E0,%
+     aacute,uni00E1,acircumflex,uni00E2,atilde,uni00E3,adieresis,%
+     uni00E4,aring,uni00E5,ae,uni00E6,ccedilla,uni00E7,egrave,%
+     uni00E8,eacute,uni00E9,ecircumflex,uni00EA,edieresis,uni00EB,%
+     igrave,uni00EC,iacute,uni00ED,icircumflex,uni00EE,idieresis,%
+     uni00EF,eth,uni00F0,ntilde,uni00F1,ograve,uni00F2,oacute,%
+     uni00F3,ocircumflex,uni00F4,otilde,uni00F5,odieresis,uni00F6,%
+     divide,uni00F7,oslash,uni00F8,ugrave,uni00F9,uacute,uni00FA,%
+     ucircumflex,uni00FB,udieresis,uni00FC,yacute,uni00FD,thorn,%
+     uni00FE,ydieresis,uni00FF,Amacron,uni0100,amacron,uni0101,Abreve,%
+     uni0102,abreve,uni0103,Aogonek,uni0104,aogonek,uni0105,Cacute,%
+     uni0106,cacute,uni0107,Ccircumflex,uni0108,ccircumflex,uni0109,%
+     Cdotaccent,uni010A,cdotaccent,uni010B,Ccaron,uni010C,ccaron,%
+     uni010D,Dcaron,uni010E,dcaron,uni010F,Dcroat,uni0110,dcroat,%
+     uni0111,Emacron,uni0112,emacron,uni0113,Ebreve,uni0114,ebreve,%
+     uni0115,Edotaccent,uni0116,edotaccent,uni0117,Eogonek,uni0118,%
+     eogonek,uni0119,Ecaron,uni011A,ecaron,uni011B,Gcircumflex,%
+     uni011C,gcircumflex,uni011D,Gbreve,uni011E,gbreve,uni011F,%
+     Gdotaccent,uni0120,gdotaccent,uni0121,Gcommaaccent,uni0122,%
+     gcommaaccent,uni0123,Hcircumflex,uni0124,hcircumflex,uni0125,Hbar,%
+     uni0126,hbar,uni0127,Itilde,uni0128,itilde,uni0129,Imacron,%
+     uni012A,imacron,uni012B,Ibreve,uni012C,ibreve,uni012D,Iogonek,%
+     uni012E,iogonek,uni012F,Idotaccent,uni0130,dotlessi,uni0131,IJ,%
+     uni0132,ij,uni0133,Jcircumflex,uni0134,jcircumflex,uni0135,%
+     Kcommaaccent,uni0136,kcommaaccent,uni0137,kgreenlandic,uni0138,%
+     Lacute,uni0139,lacute,uni013A,Lcommaaccent,uni013B,lcommaaccent,%
+     uni013C,Lcaron,uni013D,lcaron,uni013E,Ldot,uni013F,ldot,uni0140,%
+     Lslash,uni0141,lslash,uni0142,Nacute,uni0143,nacute,uni0144,%
+     Ncommaaccent,uni0145,ncommaaccent,uni0146,Ncaron,uni0147,ncaron,%
+     uni0148,napostrophe,uni0149,Omacron,uni014C,omacron,uni014D,%
+     Obreve,uni014E,obreve,uni014F,Ohungarumlaut,uni0150,ohungarumlaut,%
+     uni0151,Racute,uni0154,racute,uni0155,Rcommaaccent,uni0156,%
+     rcommaaccent,uni0157,Rcaron,uni0158,rcaron,uni0159,Sacute,%
+     uni015A,sacute,uni015B,Scircumflex,uni015C,scircumflex,uni015D,%
+     Scedilla,uni015E,scedilla,uni015F,Scaron,uni0160,scaron,uni0161,%
+     Tcedilla,uni0162,tcedilla,uni0163,Tcaron,uni0164,tcaron,uni0165,%
+     Tbar,uni0166,tbar,uni0167,Utilde,uni0168,utilde,uni0169,Umacron,%
+     uni016A,umacron,uni016B,Ubreve,uni016C,ubreve,uni016D,Uring,%
+     uni016E,uring,uni016F,Uhungarumlaut,uni0170,uhungarumlaut,uni0171,%
+     Uogonek,uni0172,uogonek,uni0173,Wcircumflex,uni0174,wcircumflex,%
+     uni0175,Ycircumflex,uni0176,ycircumflex,uni0177,Ydieresis,uni0178,%
+     Zacute,uni0179,zacute,uni017A,Zdotaccent,uni017B,zdotaccent,%
+     uni017C,Zcaron,uni017D,zcaron,uni017E,h.superior,uni02B0,%
+     hhook.superior,uni02B1,j.superior,uni02B2,r.superior,uni02B3,%
+     rturned.superior,uni02B4,rhookturned.superior,uni02B5,%
+     Rsmallinverted.superior,uni02B6,w.superior,uni02B7,y.superior,%
+     uni02B8,uni02B9,uni02BA,uni02BB,afii57929,uni02BC,afii64937,%
+     uni02BD,uni02BE,uni02BF,uni02C0,uni02C1,uni02C2,uni02C3,uni02C4,%
+     uni02C5,circumflex,uni02C6,caron,uni02C7,uni02C8,uni02C9,uni02CA,%
+     uni02CB,uni02CC,uni02CD,uni02CE,uni02CF,uni02D0,uni02D1,uni02D2,%
+     uni02D3,uni02D4,uni02D5,uni02D6,uni02D7,breve,uni02D8,dotaccent,%
+     uni02D9,ring,uni02DA,ogonek,uni02DB,tilde,uni02DC,hungarumlaut,%
+     uni02DD,uni02DE,uni02DF,gammalatin.superior,uni02E0,l.superior,%
+     uni02E1,s.superior,uni02E2,x.superior,uni02E3,%
+     glottalstopreversed.superior,uni02E4,uni02EC,uni02ED,uni02EE,%
+     gravecomb,uni0300,acutecomb,uni0301,uni0302,tildecomb,uni0303,%
+     uni0304,uni0305,uni0306,uni0307,uni0308,hookabovecomb,uni0309,%
+     uni030A,uni030B,uni030C,uni030D,uni030E,uni030F,uni0310,uni0311,%
+     uni0312,uni0313,uni0314,uni0315,uni0316,uni0317,uni0318,uni0319,%
+     uni031A,uni031B,uni031C,uni031D,uni031E,uni031F,uni0320,uni0321,%
+     uni0322,dotbelowcomb,uni0323,uni0324,uni0325,uni0326,uni0327,%
+     uni0328,uni0329,uni032A,uni032B,uni032C,uni032D,uni032E,uni032F,%
+     uni0330,uni0331,uni0338,uni0342,uni0343,uni0351,uni0357,uni0358,%
+     uni0359,uni035A,uni035B,uni035C,uni035D,uni035E,uni035F,uni0360,%
+     uni0361,uni0362,uni0363,uni0374,uni0375,afii57799,uni05B0,%
+     afii57801,uni05B1,afii57800,uni05B2,afii57802,uni05B3,afii57793,%
+     uni05B4,afii57794,uni05B5,afii57795,uni05B6,afii57798,uni05B7,%
+     afii57797,uni05B8,afii57806,uni05B9,uni05BA,afii57796,uni05BB,%
+     afii57807,uni05BC,afii57839,uni05BD,afii57645,uni05BE,afii57841,%
+     uni05BF,afii57842,uni05C0,afii57804,uni05C1,afii57803,uni05C2,%
+     afii57658,uni05C3,uni05C6,afii57664,uni05D0,afii57665,uni05D1,%
+     afii57666,uni05D2,afii57667,uni05D3,afii57668,uni05D4,afii57669,%
+     uni05D5,afii57670,uni05D6,afii57671,uni05D7,afii57672,uni05D8,%
+     afii57673,uni05D9,afii57674,uni05DA,afii57675,uni05DB,afii57676,%
+     uni05DC,afii57677,uni05DD,afii57678,uni05DE,afii57679,uni05DF,%
+     afii57680,uni05E0,afii57681,uni05E1,afii57682,uni05E2,afii57683,%
+     uni05E3,afii57684,uni05E4,afii57685,uni05E5,afii57686,uni05E6,%
+     afii57687,uni05E7,afii57688,uni05E8,afii57689,uni05E9,afii57690,%
+     uni05EA,afii57716,uni05F0,afii57717,uni05F1,afii57718,uni05F2,%
+     arrowleft,uni2190,arrowup,uni2191,arrowright,uni2192,arrowdown,%
+     uni2193,arrowboth,uni2194,arrowupdn,uni2195,uni2196,uni2197,%
+     uni2198,uni2199,uni219A,uni219B,uni21A5,uni21A7,uni21BC,uni21BD,%
+     uni21C0,uni21C1,arrowdblleft,uni21D0,arrowdblup,uni21D1,%
+     arrowdblright,uni21D2,arrowdbldown,uni21D3,arrowdblboth,uni21D4,%
+     uni21D5,Nwarrow,uni21D6,Nearrow,uni21D7,Searrow,uni21D8,Swarrow,%
+     uni21D9,uni2318,uni2325,uni2326,uni2327,uni232B,uni237D,uni2380,%
+     uni2423,filledbox,uni25A0,H22073,uni25A1,triagup,uni25B2,uni25B3,%
+     uni25B6,uni25B7,triagdn,uni25BC,uni25BD,uni25C0,uni25C1,uni25C6,%
+     uni25C7,uni25C9,lozenge,uni25CA,circle,uni25CB,uni25CE,H18533,%
+     uni25CF,uni25D0,uni25D1,uni25D2,uni25D3,uni25D4,uni25D5,uni25D6,%
+     uni25D7,openbullet,uni25E6,uni2605,uni2619,uni261B,uni261E,%
+     uni2627,uni262F,uni2639,uni263A,uni263B,uni263C,uni263D,uni263E,%
+     uni263F,female,uni2640,uni2641,male,uni2642,uni2643,uni2644,%
+     uni2645,uni2646,uni2647,uni2648,uni2649,uni264A,uni264B,uni264C,%
+     uni264D,uni264E,uni264F,uni2650,uni2651,uni2652,uni2653,uni2660,%
+     uni2663,uni2665,uni2666,uni2669,musicalnote,uni266A,%
+     musicalnotedbl,uni266B,uni266C,uni2695,uni2698,uni26A2,uni26A3,%
+     uni26A4,uni26A5,uni26AD,uni2767,uni2776,uni2777,uni2778,uni2779,%
+     uni277A,uni277B,uni277C,uni277D,uni277E,uni277F,T_u_x,uniE000,%
+     uniE104,uniE128,uniE129,uniE12A,uniE130,uniE131,uniE132,uniE133,%
+     uniE134,uniE135,uniE138,uniE139,uniE13A,uniE13C,uniE13D,uniE168,%
+     B_a_c_k,uniE16E,S_t_r_g,uniE170,A_l_t,uniE171,A_l_t_G_r,uniE172,%
+     C_t_r_l,uniE173,S_h_i_f_t,uniE174,T_a_b,uniE175,E_n_t_e_r,%
+     uniE176,C_a_p_s_l_o_c_k,uniE177,F_1,uniE178,F_2,uniE179,F_3,%
+     uniE17A,F_4,uniE17B,F_5,uniE17C,F_6,uniE17D,F_7,uniE17E,F_8,%
+     uniE17F,F_9,uniE180,F_1_0,uniE181,F_1_1,uniE182,F_1_2,uniE183,%
+     F_1_3,uniE184,F_1_4,uniE185,F_1_5,uniE186,F_1_6,uniE187,uniE188,%
+     H_o_m_e,uniE189,D_e_l,uniE18A,I_n_s,uniE18B,uniE18C,E_n_d,%
+     uniE18E,G_N_U,uniE190,P_o_s_1,uniE191,E_n_t_f,uniE192,E_i_n_f,%
+     uniE193,L_e_e_r,uniE194,E_s_c,uniE195,E_n_d_e,uniE196,uniE198,%
+     uniE199,uniE19A,uniE19B,uniE1A0,uniE1A1,uniE1A2,uniE1A3,uniE1A4,%
+     uniE1A5,uniE1A6,uniE1A7,uniE1A8,uniE1A9,uniE1AA,uniE1AB,uniE1AC,%
+     uniE1AD,uniE1AE,uniE1B0,uniE1B1,grave.cap,uniE358,acute.cap,%
+     uniE359,circumflex.cap,uniE35A,caron.cap,uniE35B,breve.cap,%
+     uniE35C,hungarumlaut.cap,uniE35D,space_uni030F.cap,uniE35E,%
+     breveinvertedcmb.cap,uniE35F,breve.cyrcap,uniE360,breve.cyr,%
+     uniE361,dieresis.cap,uniE362,hookabovecomb.cap,uniE363,uniFFFD,%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     biolinum },%
+   % otherkeywords={},
+   % alsoletter={},
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[biblatex]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     cite,Cite,parencite,Parencite,footcite,footcitetext,smartcite,%
+     Smartcite,textcite,Textcite,supercite,cites,Cites,parencites,%
+     Parencites,footcitesfootcitetexts,textcites,Textcites,supercites,%
+     autocite,Autocite,autocite*,Autocite*,autocites,Autocites,%
+     citeauthor,Citeauthor,citetitle,citetitle*,citeyear,citeurl,%
+     parentext,brackettext,nocite,fullcite,footfullcite,volcite,%
+     Volcite,pvolcite,Pvolcite,fvolcite,ftvolcite,tvolcite,Tvolcite,%
+     avolcite,Avolcite,notecite,Notecite,pnotecite,Pnotecite,fnotecite,%
+     citename,citelist,citefield,printbibliography,bibliography,%
+     citedate,ExecuteBibliographyOptions,defbibnote,psq,psqq,%
+     addbibresource,AtNextCite,DeclareNameAlias,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+     abstract,addendum,afterword,annotation,annotator,author,%
+     authortype,bookauthor,bookpagination,booksubtitle,booktitle,%
+     booktitleaddon,chapter,commentator,date,doi,edition,editor,%
+     editora,editorb,editorc,editortype,editoratype,editorbtype,%
+     editorctype,eid,eprint,eprintclass,eprinttype,eventdate,%
+     eventtitle,file,foreword,holder,howpublished,indextitle,%
+     institution,introduction,isan,isbn,ismn,isrn,issn,issue,%
+     issuesubtitle,issuetitle,iswc,journalsubtitle,journaltitle,label,%
+     language,library,location,mainsubtitle,maintitle,maintitleaddon,%
+     month,nameaddon,note,number,organization,origdate,origlanguage,%
+     origlocation,origpublisher,origtitle,pages,pagetotal,pagination,%
+     part,publisher,pubstate,reprinttitle,series,shortauthor,%
+     shorteditor,shorthand,shorthandintro,shortjournal,shortseries,%
+     shorttitle,subtitle,title,titleaddon,translator,type,url,urldate,%
+     venue,version,volume,volumes,year,crossref,entryset,entrysubtype,%
+     execute,gender,hyphenation,indexsorttitle,keywords,options,%
+     presort,sortkey,sortname,sorttitle,sortyear,xref,annote,%
+     archiveprefix,journal,key,pdf,primaryclass,school,address,%
+     datamodel,%
+     %
+     backend,style,citestyle,bibstyle,sorting,maxnames,minnames,%
+     maxitems,minitems,backref,abbreviate,firstinits,prenote,postnote,%
+     useprefix,autopunct,giveninits,labelname,given-family,%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+     submitted,inpress,danish dutch,american,USenglish,english,british,%
+     UKenglish,canadian,australian,newzealand,finnish,french,francais,%
+     canadien,german,ngerman,austrian,naustrian,greek,italian,norsk,%
+     nynorsk,brazil,portuges,spanish,swedish,%
+     %
+     biber,numeric,numeric-comp,numeric-verb,alphabetic,alphabetic-verb,%
+     authoryear,authoryear-comp,authoryear-ibid,authoryear-icomp,%
+     authortitle,authortitle-comp,authortitle-ibid,authortitle-icomp,%
+     authortitle-terse,authortitle-tcomp,authortitle-ticomp,verbose,%
+     verbose-ibid,verbose-note,verbose-inote,verbose-trad1,verbose-trad2,%
+     verbose-trad3,reading,draft,debug,and,inline,footnote,%
+     superscript,plain,nyt,ynt,none,false,true,%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     biblatex },%
+   % directives
+   directives={%
+     article,book,inbook,bookinbook,suppbook,booklet,collection,%
+     conference,incollection,suppcollection,manual,misc,online,patent,%
+     periodical,suppperiodical,proceedings,inproceedings,reference,%
+     inreference,report,thesis,unpublished,masterthesis,phdthesis,%
+     string,comment,%
+   },%
+   % otherkeywords={},%
+   alsoletter={-},%
+   % alsodigit={},%
+   delim=*[directive]@,sensitive=false,%
+ }[keywords,directives,tex,comments]%
+
+ \lst at definelanguage[lthooks]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     AddToHook,BeforeBeginEnvironment,AtBeginEnvironment,AtEndEnvironment,%
+     AfterEndEnvironment,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+     % begin,end,
+     before,after,begindocument,begindocument/before,%
+     begindocument/end,enddocument,enddocument/afterlastpage,%
+     enddocument/afteraux,enddocument/info,enddocument/end,env,%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     lthooks },%
+   % otherkeywords={},%
+   alsoletter={/},%
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[l3keys2e]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     ProcessKeysOptions,ProcessKeysPackageOptions,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     l3keys2e },%
+   % otherkeywords={},%
+   alsoletter={23},%
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[varioref]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     vref,vpageref,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     varioref },%
+   % otherkeywords={},
+   % alsoletter={},
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[hologo]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     hologo },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+   },%
+   % Keywords of class 4 : values of keys (in key=va ,lue)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     hologo%
+   },%
+   % otherkeywords={},
+   % alsoletter={},
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[acro]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     Ac,Aca,Acap,Acf,Acfp,Acl,Aclp,Acp,AcroAcronymsMap,AcroAddRow,%
+     AcroMapBreak,AcroNeedPackage,AcroPropertiesMap,AcroPropertiesSet,%
+     AcroRerun,AcroStyle,AcroTemplateName,AcroTemplateType,AcronymID,%
+     AcronymTable,Acs,Acsp,BeginAccSupp,Dacs,DeclareAcroArticle,%
+     DeclareAcroEnding,DeclareAcroPreset,DeclareAcroProperty,%
+     DeclareAcroPropertyAlias,DeclareAcroTranslation,DeclareAcronym,Iac,%
+     Iaca,Iacf,Iacl,Iacs,MakeAcroPropertyAlias,NewAcroCommand,%
+     NewAcroPreset,NewAcroTemplate,RenewAcroCommand,RenewAcroPreset,%
+     RenewAcroTemplate,SetupAcroTemplate,SetupNextAcroTemplate,%
+     UseAcroTemplate,abbrdot,ac,aca,acap,acbarrier,acdot,acf,acfg,%
+     acflike,acfootnote,acfp,acg,aciftrailing,acl,aclg,aclp,acp,%
+     acreset,acresetall,acrocite,acrodefinite,acrodonotuse,acrodotfill,%
+     acroendfootnote,acroformat,acrofull,acrogroupcite,acroheading,%
+     acroifT,acroifTF,acroifallTF,acroifanyT,acroifanyTF,%
+     acroifbooleanTF,acroifchapterF add,acroifchapterTF,acroiffirstT,%
+     acroiffirstTF addchap,acroifpagesTF,acroifsingleTF,acroifstarredTF,%
+     acroiftagTF,acroifusedTF,acroindefinite,acrolistname,acroneedpages,%
+     acronopagerange,acronymsmap,acronymsmapF,acronymsmapTF,acropagefill,%
+     acropages,acroplural,acropossessive,acropreamble,acroshow,%
+     acrotranslate,acroupper,acrowrite,acs,acsetup,acsp,acspace,%
+     acswitchoff,acswitchon,acuse,dacs,declareAcronym,iac,iaca,iacf,%
+     iacl,iacs,iacsg,printacronyms,%
+     %
+     acro_locale,acro_if_foreign,acro_if_locale,__acro_foreign_language,%
+     acro_property_get,acro_property_if_set,acro_property_get,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+     activate,addsec,addsec*,all,alt,alt,alt-acc,alt-format,%
+     alt-indefinite,alt-plural,alt-plural-form,barriers,before-citation,%
+     caption,%
+     case-insensitive,%case-sensitive,%chapter,chapter*,cite,clear,cmd,%
+     deactivate,define,description,disable,display,exclude,extra,%
+     extra-acc,extra-foreign,extra-format,extra-long,fill,first,%
+     first-long,first-long-format,first-style,first-style ,floats,%
+     footnote,foreign,foreign,foreign-acc,foreign-babel,foreign-format ,%
+     foreign-locale,foreign-plural,foreign-plural-form,format,format,%
+     group,heading,id,include,index,index,index-cmd,index-sort,%
+     language,link-only-first,list,list,list-acc,list-format,%
+     list/display,lists,load-style,local,locale,lof,long,long,%
+     long-acc,long-format,long-indefinite,long-plural,long-plural-ending,%
+     long-plural-form,long-post,long-short,longtable,longtabu,lppl,%
+     ltxtable,make-links,maketitle,method,name,no-index,none,options,%
+     pages,pdf,pdf,pdfcomment,pdfcomment/cmd,pdfcomment/use,pdfstring,%
+     post,pre,preamble,preset,replace,reset,section,section*,short,%
+     short,short,short-acc,short-format,short-indefinite,short-long,%
+     short-plural,short-plural-ending,short-plural-form ,show,single,%
+     single,single,single-acc threshold,single-format
+     title,single-style,%
+     single-style,sort,sort,subsequent-style,subsequent-style,%
+     supertabular,tabular,tabularx,tag,upgrade,use,use-id-as-short,%
+     uselist,version,%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     acro%
+   },%
+   % otherkeywords={},%
+   alsoletter={-_},%
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ \lst at definelanguage[csquotes]{TeX}{%
+   % Control sequences names
+   moretexcs={%
+     enquote,%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+     displayquote,%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     csquotes%
+   },%
+   % otherkeywords={},
+   % alsoletter={},
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ % tcolorbox
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \lst at definelanguage[tcolorbox]{TeX}%
+ {%
+   % Control sequences names
+   moretexcs={%
+     tcbuselibrary,newtcbtheorem,tcbset%
+   },%
+   % Keywords of class 1 : keywords that contain other characters (since
+   % of the same class as the ones specified as 'otherkeywords')
+   morekeywords={%
+     %
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+     absquote,boxarraystore,dispExample,dispExample*,dispListing,%
+     dispListing*,docCommand,docCommand*,docCommands,docEnvironment,%
+     docEnvironment*,docEnvironments,docKey,docKey*,docKeys,%
+     docPathOperation,docPathOperation*,docPathOperations,extcolorbox,%
+     extikzpicture,fooauxenv,foocolorbox,foocolorbox*,posterboxenv,%
+     tcbclipframe,tcbclipinterior,tcbcliptitle,tcbexternal,%
+     tcbinvclipframe,tcbitemize,tcblisting,tcboutputlisting,%
+     tcboxeditemize,tcboxedraster,tcbposter,tcbraster,tcbverbatimwrite,%
+     tcbwritetemp,tcolorbox,%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments) &
+   % optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+     Crefname,IfBooleanF,IfBooleanT,IfBooleanTF,IfNoValueF,IfNoValueT,%
+     IfNoValueTF,IfValueF,IfValueT,IfValueTF,PassOptionsToClass,%
+     PassOptionsToPackage,above*,above,actual,adapt,add,adjust,%
+     adjusted,after,alert,alerted,algorithm,align*,align,all,ams,%
+     and,angular,annotate,app,arara,arc,array,as,at,attach,auto,%
+     autoparskip,balanced,base,basedim,baseline,beamer,bean,before,%
+     beforeafter,% begin,
+     below,between,biber,bibtex,bicolor,blank,%
+     blanker,blankest,blend,body,bold,bookmark*,bookmark,borderline,%
+     both,bottom*,bottom,bottomrule,bottomsep,bottomtitle,bounding,%
+     box,boxed,boxes,boxrule,boxsep,break*,break,breakable,broken,%
+     by,caption,capture,center,check,circular,clear,clip,code,%
+     colback,colbacklower,colbacktitle,colframe,collower,colon,color,%
+     colorize,colors,colspacing,coltext,coltitle,column*,column,%
+     columns,colupper,command,comment,compilable,compiler,compress,%
+     content,corner,corners,counter*,counter,counters,coverage,%
+     crefname,current,curved,dash,default,definition,delimiters,%
+     description,detach,directory,do,doc,docexample,documentation,%
+     downwards,draft,draftmode,draw,drop,dvips,east,empty,% end,
+     %
+     enforce,engine,english,enhanced,enlarge,enlargement,enlargepage,%
+     entry,environment,environments,equal,equation*,equation,error,%
+     even,every,example!,example,extend,extension,external,%
+     externalize,extras,extrude,fade,fading,file,fill,filled,finally,%
+     finish,first,fit,fitting,fixed,flexible,flip,float*,float,%
+     floatplacement,flush,flushleft,flushright,font,fontlower,fontsize,%
+     fonttitle,fontupper,for,force,format,formatter,frame,freelance,%
+     freelancefirst,freelancelast,freelancemiddle,freestyle,freeze,from,%
+     full,fuzzy,gap,gather*,gather,geometry,german,goal,graphical,%
+     graphics,group,grow,halign,halo,hanging,hbox,head,height,%
+     hidden,hide,higher,highlight,hooks,horizontal,hyperlink,hyperref,%
+     hypertarget,hyperurl*,hyperurl,hyphenationfix,if,ignore,image,in,%
+     indent,index*,index,inherit,initially,input,inputencoding,inside,%
+     interior,into,invisible,inwards,is,jigsaw,jpg,key,keypath,keys,%
+     keywords,label,language,large,last,latex,layer,layers,left*,%
+     left,lefthand,leftlower,leftright,leftrule,lefttitle,leftupper,%
+     length,lengths,level,lifted,limit,line*,line,lines,list,%
+     listing!,listing,listings,listingsutf,lower*,lower,lowerbox,%
+     lowered,lualatex,m,macros,magazine,makeindex,many,marginnote,%
+     marker,math,maxfontdiff,maxfontdiffgap,maxstep,maxwidthdiff,%
+     maxwidthdiffgap,method,midday,middle,minimum,minipage,minted,%
+     most,move,multicolumn,multirow,n,name,nameref,natural,new,%
+     nirvana,no,nobeforeafter,nobreak,node,nodes,nodisplayskip,%
+     nofloat,none,noparskip,nophantom,north,northeast,northwest,not,%
+     notitle,number,octogon,odd,of,offset,on,oneside*,oneside,only,%
+     opacity,opacityback,opacitybacklower,opacitybacktitle,opacityfill,%
+     opacityframe,opacitylower,opacitytext,opacitytitle,opacityupper,%
+     option,options,or,orientation,out,outer,outside,outwards,over,%
+     overlay,overlays,oversize,overzoom,pad,page*,page,pages,%
+     pageshort,parameter,parbox,parenthesis,parfillskip,parskip,path,%
+     paths,pdf,pdflatex,percent,phantom,phantomlabel,placeholder,%
+     plain,plus,png,poster,pre,preamble,preclass,prefix,process,%
+     pspdf,quote,raise,raised,raster,ratio,record,recording,remake,%
+     remember,remove,reset,restore,right*,right,righthand,rightlower,%
+     rightrule,righttitle,rightupper,rotate,rounded,row,rows,%
+     rowspacing,rowspan,run,runner,runs,safety,savedelimiter,%
+     savelowerto,saveto,scale,scope,segmentation,semi,separated,%
+     separator,sequence,settings,shade,shading,shadow,sharp,sharpish,%
+     shield,show,showframe,shrink,side,sidebyside,sidewards,sign,%
+     size,skin,skins,skip,small,smart,sort,source,south,southeast,%
+     southwest,space,spacing,span,spartan,split,spread,square,%
+     squeezed,stack,standard,step,store,stretch,style,subskin,%
+     subtitle,supplement,switch,system,tabulars*,tabulars,tabularx*,%
+     tabularx,tcbimage,tcbox,preamble tcbset,tempfile,terminator,text,%
+     theorem,theorems,tight,tikz,tikznode,tile,title*,title,titlebox,%
+     titled,titlerule,to,toggle,top*,top,toprule,topsep,toptitle,%
+     type,unbreakable,unbroken,underlay,updated,upper*,upper,upperbox,%
+     upwards*,upwards,use,utf,valign,value,values,varwidth,verbatim,%
+     vertical,vfill,vignette,visible,void,warning,watermark,west,%
+     widget,width,with,within,xelatex,xmax,xmin,xparse,xshift,ymax,%
+     ymin,yshift*,yshift,yshifttext,zoom,%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+     all,and,apart,areasize*,areasize,as-is,auto,base,baselineskip,%
+     beamer,beamerfirst,beamerlast,beamermiddle,bicolor,bicolorfirst,%
+     bicolorlast,bicolormiddle,both,bottom,break,broken,center,change,%
+     clipped,colon,copy,dash,direct,doc,downhill,draft,east,empty,%
+     emptyfirst,emptylast,emptymiddle,enhanced,enhancedfirst,%
+     enhancedlast,enhancedmiddle,evenpage,false,fbox,figures,final,%
+     first,fitbox,flush,fontsize*,fontsize,forced,freelance,%
+     freelancefirst,freelancelast,freelancemiddle,hang,hbox,hybrid*,%
+     hybrid,ignored,invisible,jigsaw,justify,landscape*,landscape,%
+     last,left,limited,listings,margin,maximum,middle,minimal,%
+     minimum,minipage,minted,none,normal,north,northeast,northwest,%
+     off,on,path,pathfirst,pathfirstjigsaw,pathjigsaw,pathlast,%
+     pathlastjigsaw,pathmiddle,pathmiddlejigsaw,pgf,pgfchapter,%
+     pgfsection,plain,portrait*,portrait,right,rows,scale*,scale,%
+     seam,small,south,southeast,southwest,spartan,squeeze,standard,%
+     tables,tight,tile,tilefirst,tilelast,tilemiddle,title,top,true,%
+     unbroken,unlimited,uphill,visible,west,widget,widgetfirst,%
+     widgetlast,widgetmiddle,red,black,white,none,%
+   },%
+   % Keywords of class 5 : arguments specifications (after ":" in expl3
+   % syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly derived
+   % packages)
+   morekeywords=[6]{%
+     tcolorbox%
+   },%
+   % otherkeywords={},%
+   alsoletter={ \ },%
+   % alsodigit={},%
+   % alsoother={},%
+   sensitive,%
+ }[keywords,tex,comments]%
+
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ % Classes (La)TeX
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \lst at definelanguage[classes]{TeX}{%
+   % Control sequences
+   moretexcs={%
+   },%
+   % Keywords of class 1 : keywords that contain other characters
+   % (since of the same class as the ones specified as
+   % 'otherkeywords')
+   morekeywords={%
+     %
+   },%
+   % Keywords of class 2 : environments names
+   morekeywords=[2]{%
+   },%
+   % Keywords of class 3 : mandatory arguments (not environments)
+   % & optional arguments which are keys (in key=value)
+   morekeywords=[3]{%
+   },%
+   % Keywords of class 4 : values of keys (in key=value)
+   morekeywords=[4]{%
+   },%
+   % Keywords of class 5 : arguments specifications (after “:”
+   % in expl3 syntax)
+   morekeywords=[5]{%
+   },%
+   % Keywords of class 6 : current package name (and possibly
+   % derived packages)
+   morekeywords=[6]{%
+     a0poster,aalok,aastex631,abntex2,achemso,acmart,acmconf,
+     active-conf,adfathesis,afparticle,afthesis,aguplus,aiaa-tc,
+     akklecture,akkscript,akktecdoc,akletter,myletter,ametsoc,
+     amsart,amsbook,amsdtx,amsldoc,amsproc,aomart,apa,apa6,
+     apa6e,apa7,arabart,arabbook,arabrep,arabrep1,articleingud,
+     asaetr,ascelike,asmeconf,asmejour,assignment,aucklandthesis,
+     bangorcsthesis,bangorexam,barticle,bbook,bletter,
+     bankstatement,article,book,letter,ltnews,ltxdoc,ltxguide,
+     minimal,proc,report,slides,source2edoc,basque-book,beamer,
+     beamerswitch,beaulivre,beilstein,argetabelle,bewerbung,
+     bgteubner,BHCexam,bitart,bitbook,bjfuthesis,BMSTU-IU8,
+     bookcover,bookest,bookshelf,br-lex,brandeis-dissertation,
+     brandeis-problemset,brandeis-thesis,buctcover,buctthesis,
+     bxjsarticle,bxjsbook,bxjsreport,bxjsslide,cascadilla,cd,
+     cd-cover,articoletteracdp,letteracdp,cesenaexam,cheatsheet,
+     chemmacros-manual,chletter,cje,cnbwp,cnltx-doc,codedoc,
+     colorart,colorbook,combine,cc,ConcProg,confproc,contracard,
+     courseoutline,coursepaper,cquthesis,csbulletin,csbulobalka,
+     csbulv1,ctexart,ctexbeamer,ctexbook,ctexrep,ctxdoc,curve,
+     cv4tw,cweb,idcc,ijdc-v14,ijdc-v9,dinbrief,disser,gost732,
+     dithesis,droit-fr,dtk,dvdcoll,easybook,ebsthesis,agecon,
+     ajae,apecon,ecca,erae,itaxpf,jrurstud,njf,oegatb,pocoec,
+     regstud,worlddev,ecv,einfart,ejpecp,elbioimp,elegantbook,
+     elegantnote,elegantpaper,elpres,cas-dc,cas-sc,elsarticle,
+     elteikthesis,emisa,emulateapj,erdc,eskd,eskdgraph,eskdtab,
+     eskdtext,estcpmm,europasscv,europecv,exam,exam-n,examdesign,
+     exesheet,extarticle,extbook,extletter,extproc,extreport,
+     facsimile,factura,fancyhandout,fancyslides,fbithesis,fcavtex,
+     fdudoc,fduthesis-en,fduthesis,fei,ffslides,fithesis,
+     fithesis2,fithesis3,fithesis4,flacards,flashcards,frletter,
+     g-brief,g-brief2,gaceta,gammas,gatech-thesis,gmdocc,
+     gradstudentresume,grant-afosr,grant-aro,grant-darpa,grant-doe,
+     grant-nih,grant-nrl,grant-nsf,grant-onr,grant,graphpaper,
+     gridslides,gsemthesis,guitartabs,gzt,gztarticle,h2020proposal,
+     hgbarticle,hgbreport,hgbthesis,harnon-cv,hausarbeit-jura,
+     hcart,hcletter,hcreport,hcslides,hecthese,hepthesis,hitec,
+     hithesis,hitreport,hitszthesis,hletter,hpsdiss,fsbispit,
+     huawei,hustthesis,icsv,IEEEconf,IEEEtran,ijmart,ijsra,
+     image-gallery,IMTEKda,inkpaper,invoice-class,iodhbwm,iscram,
+     isov2,isodoc,iwhdp,jacow,jlreq,jmlr,jmlrbook,jnuexam,jpsj2,
+     jura,jurabook,juraovw,juraurtl,kdgcoursetext,kdgmasterthesis,
+     kdpcover,kerntest,kluwer,knittingpattern,scrartcl,scrarticle,
+     scrbook,scrdoc,scrletter,scrlttr2,scrreport,scrreprt,komacv,
+     oblivoir-utf,oblivoir-xl,oblivoir,xoblivoir,ksp-thesis,l3doc,
+     labbook,leadsheet,leaflet,lebhart,lectures,letgut,lettre,limap,
+     limecv,lion-msc,lni,lps,lt3graph-packagedoc,ltxdockit,
+     ltxguidex,abstbook,beletter,flashcard,iagproc,cours,fiche,
+     matapli,matc3mem,mcmthesis,ltxmdf,medstarbeamer,meetingmins,
+     memoir,mensa-tex,mentis,metanorma,milog,minimart,minimbook,
+     mla,mluexercise,mnras,moderncv,modernposter,msu-thesis,
+     mucproc,mugsthesis,muling,musuos,muthesis,third-rep,mwart,
+     mwbk,mwrep,mycv,nature,ncc,nccproc,sibjnm,nddiss2e,
+     ndsu-thesis,newlfm,nih,nihbiosketch,njurepo,nlctdoc,nostarch,
+     nrc1,nrc2,artikel1,artikel2,artikel3,boek,boek3,brief,
+     rapport1,rapport3,nwejm,nwejmart,octavo,onrannual,
+     oup-authoring-template,journal,paper,papertex,pbsheet,pecha,
+     petiteannonce,philosophersimprint,pittetd,pkuthss,plari,play,
+     postcards,powerdot,FUpowerdot,ppr-prv,pracjourn,pressrelease,
+     proposal,reporting,dfgproposal,dfgreporting,euproposal,
+     eureporting,prosper,protocol,prtec,upmgr,wkmgr,pst-doc,
+     ptptex,qcm,quantumarticle,qyxf-book,ReadableCV,recipe,
+     RecipeBook,recipecard,refart,refrep,resphilosophica,revtex4-2,
+     revtex4,revtex4-1,rtklage,ryersonSGSThesis,ryethesis,sageep,
+     sapthesis,schuleab,schulein,schuleit,schulekl,schuleub,
+     schuleue,schullsg,schullzk,schulma-ab,schulma-gutachten,
+     schulma-klausur,schulma-komp,schulma-mdlprf,schulma-praes,
+     schwalbe,sciposter,screenplay,scrjrnl,sdapsclassic,sduthesis,
+     seminar,semproc,sesamanuel,seuthesix,sffms,cassete,etiketka,
+     shtthesis,caesar_book,sides,simplecv,simplivre,skbarticle,
+     skbbeamer,skbbook,skblncsbeamer,skblncsppt,skbmoderncv,skdoc,
+     skeyval-testclass,skrapport,smfart,smfbook,SPhdThesis,spie,
+     sr-vorl,sslides,stage,standalone,usthesis,hwexam,mikoslides,
+     omdoc,smglom,subfiles,suftesi,sugconf,tabriz-thesis,talk,
+     tcldoc,tclldoc,powersem,thesis-ekf,thesis-gwu,thuthesis,
+     tikz-kalender,tikzposter,tlc-article,TOPletter,toptesi,
+     tudabeamer,tudaexercise,tudaleaflet,tudaletter,tudaposter,
+     tudapub,tudasciposter,tudscrartcl,tudscrbook,tudscrdoc,
+     tudscrmanual,tudscrposter,tudscrreprt,tufte-book,tufte-handout,
+     ltugboat,ltugproc,tui,turabian,turabian-researchpaper,
+     turabian-thesis,my-thesis,ua-thesis,uafthesis,
+     uantwerpenbamathesis,uantwerpencoursetext,uantwerpenexam,
+     uantwerpenletter,uantwerpenphdthesis,uantwerpenreport,
+     ucalgmthesis,ucbthesis,ucdavisthesis,ucsmonograph,ucthesis,
+     udesoftec,uebungsblatt,uestcthesis,uhhassignment,uiucredborder,
+     uiucthesis,ulthese,legislation,umich-thesis,umthesis,
+     unam-thesis,unifith,unitn-bimrep,univie-ling-expose,
+     univie-ling-paper,univie-ling-thesis,univie-ling-wlg,
+     unizgklasa,uothesis,UoWthesis,upmethodology-document,URbeamer,
+     URletter,uspatent,ut-thesis,utexasthesis,uwmslide,uwthesis,
+     verifica,webquiz,willowtreebook,withargs-packagedoc,
+     wsemclassic,xduthesis,xebaposter,xmuthesis,xsim-manual,
+     yaletter,yathesis,ycbook,ydoc,york-thesis,
+   },%
+   % otherkeywords={},%
+   alsoletter={0123456789-},%
+   % alsodigit={},%
+   sensitive%
+ }[keywords,tex,comments]%


Property changes on: trunk/Master/texmf-dist/tex/lualatex/letgut/letgut-lstlang.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/tex/lualatex/letgut/letgut.cbx
===================================================================
--- trunk/Master/texmf-dist/tex/lualatex/letgut/letgut.cbx	2022-06-18 18:21:10 UTC (rev 63636)
+++ trunk/Master/texmf-dist/tex/lualatex/letgut/letgut.cbx	2022-06-18 20:02:54 UTC (rev 63637)
@@ -1,4 +1,4 @@
-\ProvidesFile{letgut.cbx}[2022-03-22 v0.9.1 letgut base citation style]
+\ProvidesFile{letgut.cbx}[2022-06-18 v0.9.2 letgut base citation style]
 \RequireCitationStyle{numeric}
 \DeclareFieldFormat[bookreview]{title}{\textbf{\emph{#1}}}
 \renewbibmacro*{title}{%

Modified: trunk/Master/texmf-dist/tex/lualatex/letgut/letgut.cls
===================================================================
--- trunk/Master/texmf-dist/tex/lualatex/letgut/letgut.cls	2022-06-18 18:21:10 UTC (rev 63636)
+++ trunk/Master/texmf-dist/tex/lualatex/letgut/letgut.cls	2022-06-18 20:02:54 UTC (rev 63637)
@@ -44,11 +44,10 @@
 }
 \ExplSyntaxOff
 \ProvidesExplClass{letgut}
-{2022-03-22}
-{0.9.1}
+{2022-03-17}
+{0.9}
 {
-  Class~ for~ the~ newsletter~
-  “\c__letgut_La_lettre_gutenberg_tl”
+  Class for the newsletter “The GUTenberg Letter”
 }
 \prop_gput:Nnn \g_msg_module_type_prop { letgut } { Class }
 \msg_new:nnn{letgut}{Wrong~engine}{
@@ -102,6 +101,7 @@
 \bool_new:N \g__letgut_title_empty_bool
 \bool_new:N \g__letgut_paper_bool
 \bool_new:N \l__letgut_in_footnote_bool
+\bool_new:N \g__letgut_draft_bool
 \dim_const:Nn \c__letgut_textheight_dim  { 25cm }
 \dim_const:Nn \c__letgut_textwidth_dim  { 14cm }
 \dim_const:Nn \c__letgut_lmargin_dim  { 5cm }
@@ -220,11 +220,27 @@
 \str_const:Nn \c__letgut_callout_label_ltx_example_str {
   __letgut_callout_label_ltx_example
 }
+\tl_const:Nn \c__letgut_online_issn_tl {
+  2742-6149~ (version~ numérique)
+}
+\tl_const:Nn \c__letgut_paper_issn_tl {
+  1257–2217~ (version~ papier)
+}
 \tl_const:Nn \c__letgut_cahier_tl { \emph{ Cahier } }
 \tl_const:Nn \c__letgut_cahiers_tl {
   \c__letgut_cahier_tl \emph{ s }
 }
+\tl_const:Nn \c__letgut_gnu_linux_tl { \software{GNU/Linux} }
+\tl_const:Nn \c__letgut_macOS_tl { \software{macOS} }
+\tl_const:Nn \c__letgut_windows_tl { \software{Windows} }
+\tl_const:Nn \c__letgut_package_tl { package }
+\tl_const:Nn \c__letgut_class_tl { classe }
+\tl_const:Nn \c__letgut_file_tl { fichier }
+\tl_const:Nn \c__letgut_software_tl { logiciel }
 \tl_const:Nn \c__letgut_tugboat_tl { \emph{ TUGboat } }
+\tl_const:Nn \c__letgut_tex_live_tl {
+  \hologo{ TeX }\nobreakspace Live
+}
 \tl_const:Nn \c__letgut_banner_file_tl { bandeau }
 \tl_const:Nn \c__letgut_editorial_file_tl { editorial }
 \tl_const:Nn \c__letgut_informations_gutenberg_file_tl {
@@ -232,6 +248,7 @@
 }
 \tl_const:Nn \c__letgut_acronyms_file_tl { letgut-acronyms }
 \tl_const:Nn \c__letgut_local_config_file_tl { localconf }
+\tl_const:Nn \c__letgut_lstlanguage_file_tl { letgut-lstlang.sty }
 \tl_const:Nn \c__letgut_contents_name_tl { Sommaire }
 \tl_const:Nn \c__letgut_draftwatermark_text_tl {
  \textnormal{Brouillon}
@@ -247,7 +264,7 @@
   Si~ vous~ avez~ oublié,~ ce~ n'est~ ni~ trop~ tard~
   ni~ difficile~ :
   \par
-  \url{http://gutenberg.eu.org/?Adherer-en-ligne}
+  \url{https://www.gutenberg-asso.fr/?Adherer-en-ligne}
   \bool_if:NT \g__letgut_informations_bool {
     \file_if_exist:nT
     {./\c__letgut_informations_gutenberg_file_tl}{
@@ -265,7 +282,8 @@
   Ne~ pas~ omettre~ les~ informations~ sur~
   \c__letgut_gutenberg_tl{}~ !\\(dans~ un~
   \file*{\c__letgut_informations_gutenberg_file_tl.tex}~
-  situé~ dans~ le~ dossier~ courant)
+  situé~ soit~ dans~ le~ dossier~ courant, soit~ dans~ le~
+  dossier~ parent)
 }
 \tl_const:Nn \c__letgut_default_alert_box_color_tl {
   gray9
@@ -288,14 +306,96 @@
 {1, 1, 1}
 \seq_new:N \l__letgut_first_last_names_items_seq
 \RequirePackage{l3keys2e}
-\keys_define:nn { letgut }
+\int_new:N \g__letgut_date_month_int
+\int_new:N \g__letgut_date_year_int
+
+\int_gset:Nn \g__letgut_date_month_int {\the\month}
+\int_gset:Nn \g__letgut_date_year_int  {\the\year}
+
+\tl_new:N \g__letgut_date_month_tl
+\tl_new:N \g__letgut_date_tl
+
+\cs_new_protected:Npn \__letgut_date_parse:n #1
 {
-  , for-readers .bool_gset:N = \g__letgut_for_readers_bool
-  , for-readers .initial:n = { true }
-  , for-readers .default:n = { true }
-  , for-authors .bool_gset_inverse:N = \g__letgut_for_readers_bool
+  \__letgut_if_is_iso_date:nTF {#1}
+  {
+    \__letgut_date_parse:www #1 \q_stop
+  }{
+    \msg_term:nnn{letgut}{Not~month~iso~date}{#1}
+    \tl_gset:Nn \g__letgut_date_tl { #1 }
+  }
 }
-\ProcessKeysOptions { letgut }
+
+\prg_new_protected_conditional:Npnn
+\__letgut_if_is_iso_date:n #1 { T, F, TF }
+{
+  \regex_match:nnTF { ^\d{4}-(\d{1,2}) } {#1}
+  { \prg_return_true: }
+  { \prg_return_false: }
+}
+
+\prg_new_protected_conditional:Npnn
+\__letgut_if_is_int:n #1 { T, F, TF }
+{
+  \regex_match:nnTF { ^[\+\-]?[\d]+$ } {#1}
+  { \prg_return_true: }
+  { \prg_return_false: }
+}
+
+\cs_new_protected:Npn \__letgut_month_name:n #1
+{
+  % \text_titlecase_first:n {
+  \int_case:nnF
+  { #1 }
+  {
+    { 1 }{ janvier }
+    { 2 }{ février }
+    { 3 }{ mars }
+    { 4 }{ avril }
+    { 5 }{ mai }
+    { 6 }{ juin }
+    { 7 }{ juillet }
+    { 8 }{ août }
+    { 9 }{ septembre }
+    { 10 }{ octobre }
+    { 11 }{ novembre }
+    { 12 }{ décembre }
+  }
+  { Month~ Error! }
+  % }
+}
+
+\cs_new_protected:Npn \__letgut_date_parse:www #1-#2
+\q_stop
+{
+  \int_compare:nTF
+  {
+    \the\year <= #1 <= \the\year+1
+}{
+  \int_gset:Nn \g__letgut_date_year_int {#1}
+}{
+  \int_gset:Nn \g__letgut_date_year_int {\the\year}
+}
+\__letgut_if_is_int:nTF {#2}
+{
+  \int_compare:nTF
+  {
+    1 <= #2 <= 12
+}
+    {\int_gset:Nn \g__letgut_date_month_int {#2}}
+    {\int_gset:Nn \g__letgut_date_month_int {\the\month}}
+  }{
+    \int_gset:Nn \g__letgut_date_month_int  {\the\month}
+  }
+  \tl_gset:Nn \g__letgut_date_month_tl {
+    \__letgut_month_name:n { \g__letgut_date_month_int }
+  }
+  \tl_gset:Nn \g__letgut_date_tl {
+    \tl_use:N \g__letgut_date_month_tl
+    \c_space_tl
+    \int_use:N \g__letgut_date_year_int
+  }
+}
 \LoadClass[twoside,11pt]{article}
 \RequirePackage{fontspec}
 \RequirePackage[
@@ -307,6 +407,7 @@
 \RequirePackage{fancyhdr}
 \RequirePackage[a4paper]{geometry}
 \RequirePackage{graphicx}
+\RequirePackage{biolinum}
 \RequirePackage{array}
 \RequirePackage{etoc}
 \RequirePackage{enumitem}
@@ -343,7 +444,7 @@
 }
 \sisetup{
   , locale=FR
-  , mode=text
+  , mode=match
 }
 \DeclareMarginSet{hangleft}{
   \setfloatmargins{\hskip-\c__letgut_hoffset_dim}{\hfil}
@@ -370,190 +471,6 @@
 }
 \floatsetup[table]{capposition=top}
 \renewcommand*\frenchtablename{Tableau}
-\lstdefinelanguage[classes]{TeX}[LaTeX]{TeX}{%
-  % Control sequences
-  moretexcs={%
-    abovecaptionskip,abstractname,appendix,appendixname,
-    arraycolsep,arrayrulewidth,author,backmatter,baselinestretch,
-    belowcaptionskip,bf,bibindent,bibname,bigskipamount,
-    bottomfraction,brokenpenalty,cal,chapter,chaptermark,
-    chaptername,clubpenalty,columnsep,columnseprule,contentsname,
-    date,dblfloatpagefraction,dblfloatsep,dbltextfloatsep,
-    dbltopfraction,descriptionlabel,displaywidowpenalty,
-    doublerulesep,evensidemargin,fboxrule,fboxsep,figurename,
-    floatpagefraction,floatsep,footins,footnoterule,footnotesep,
-    footnotesize,footskip,frontmatter,headheight,headsep,huge,Huge,
-    indexname,indexspace,interlinepenalty,intextsep,it,jot,
-    labelenumi,labelenumii,labelenumiii,labelenumiv,labelitemfont,
-    labelitemi,labelitemii,labelitemiii,labelitemiv,labelsep,
-    labelwidth,large,Large,LARGE,leftmargin,leftmargini,
-    leftmarginii,leftmarginiii,leftmarginiv,leftmarginv,
-    leftmarginvi,lineskip,listfigurename,listoffigures,
-    listoftables,listtablename,mainmatter,maketitle,marginparpush,
-    marginparsep,marginparwidth,maxdepth,medskipamount,mit,
-    newblock,normallineskip,normalsize,oddsidemargin,paragraph,
-    paragraphmark,parindent,parskip,part,partname,partopsep,
-    postdisplaypenalty,predisplaypenalty,refname,rm,sc,scriptsize,
-    section,sectionmark,sf,sl,small,smallskipamount,subitem,
-    subparagraph,subparagraphmark,subsection,subsectionmark,
-    subsubitem,subsubsection,subsubsectionmark,tabbingsep,
-    tabcolsep,tablename,tableofcontents,textfloatsep,textfraction,
-    textheight,textwidth,thechapter,theenumi,theenumii,theenumiii,
-    theenumiv,theequation,theparagraph,thepart,thesection,
-    thesubparagraph,thesubsection,thesubsubsection,tiny,title,
-    today,topfraction,topmargin,topskip,tt,widowpenalty,
-  },%
-  % Keywords of class 1 : keywords that contain other characters
-  % (since of the same class as the ones specified as
-  % 'otherkeywords')
-  morekeywords={%
-    %
-  },%
-  % Keywords of class 2 : environments names
-  morekeywords=[2]{%
-    abstract,description,figure,quotation,quote,table,
-    thebibliography,theindex,titlepage,verse%
-  },%
-  % Keywords of class 3 : mandatory arguments (not environments)
-  % & optional arguments which are keys (in key=value)
-  morekeywords=[3]{%
-  },%
-  % Keywords of class 4 : values of keys (in key=value)
-  morekeywords=[4]{%
-  },%
-  % Keywords of class 5 : arguments specifications (after “:”
-  % in expl3 syntax)
-  morekeywords=[5]{%
-  },%
-  % Keywords of class 6 : current package name (and possibly
-  % derived packages)
-  morekeywords=[6]{%
-    a0poster,aalok,aastex631,abntex2,achemso,acmart,acmconf,
-    active-conf,adfathesis,afparticle,afthesis,aguplus,aiaa-tc,
-    akklecture,akkscript,akktecdoc,akletter,myletter,ametsoc,
-    amsart,amsbook,amsdtx,amsldoc,amsproc,aomart,apa,apa6,
-    apa6e,apa7,arabart,arabbook,arabrep,arabrep1,articleingud,
-    asaetr,ascelike,asmeconf,asmejour,assignment,aucklandthesis,
-    bangorcsthesis,bangorexam,barticle,bbook,bletter,
-    bankstatement,article,book,letter,ltnews,ltxdoc,ltxguide,
-    minimal,proc,report,slides,source2edoc,basque-book,beamer,
-    beamerswitch,beaulivre,beilstein,argetabelle,bewerbung,
-    bgteubner,BHCexam,bitart,bitbook,bjfuthesis,BMSTU-IU8,
-    bookcover,bookest,bookshelf,br-lex,brandeis-dissertation,
-    brandeis-problemset,brandeis-thesis,buctcover,buctthesis,
-    bxjsarticle,bxjsbook,bxjsreport,bxjsslide,cascadilla,cd,
-    cd-cover,articoletteracdp,letteracdp,cesenaexam,cheatsheet,
-    chemmacros-manual,chletter,cje,cnbwp,cnltx-doc,codedoc,
-    colorart,colorbook,combine,cc,ConcProg,confproc,contracard,
-    courseoutline,coursepaper,cquthesis,csbulletin,csbulobalka,
-    csbulv1,ctexart,ctexbeamer,ctexbook,ctexrep,ctxdoc,curve,
-    cv4tw,cweb,idcc,ijdc-v14,ijdc-v9,dinbrief,disser,gost732,
-    dithesis,droit-fr,dtk,dvdcoll,easybook,ebsthesis,agecon,
-    ajae,apecon,ecca,erae,itaxpf,jrurstud,njf,oegatb,pocoec,
-    regstud,worlddev,ecv,einfart,ejpecp,elbioimp,elegantbook,
-    elegantnote,elegantpaper,elpres,cas-dc,cas-sc,elsarticle,
-    elteikthesis,emisa,emulateapj,erdc,eskd,eskdgraph,eskdtab,
-    eskdtext,estcpmm,europasscv,europecv,exam,exam-n,examdesign,
-    exesheet,extarticle,extbook,extletter,extproc,extreport,
-    facsimile,factura,fancyhandout,fancyslides,fbithesis,fcavtex,
-    fdudoc,fduthesis-en,fduthesis,fei,ffslides,fithesis,
-    fithesis2,fithesis3,fithesis4,flacards,flashcards,frletter,
-    g-brief,g-brief2,gaceta,gammas,gatech-thesis,gmdocc,
-    gradstudentresume,grant-afosr,grant-aro,grant-darpa,grant-doe,
-    grant-nih,grant-nrl,grant-nsf,grant-onr,grant,graphpaper,
-    gridslides,gsemthesis,guitartabs,gzt,gztarticle,h2020proposal,
-    hgbarticle,hgbreport,hgbthesis,harnon-cv,hausarbeit-jura,
-    hcart,hcletter,hcreport,hcslides,hecthese,hepthesis,hitec,
-    hithesis,hitreport,hitszthesis,hletter,hpsdiss,fsbispit,
-    huawei,hustthesis,icsv,IEEEconf,IEEEtran,ijmart,ijsra,
-    image-gallery,IMTEKda,inkpaper,invoice-class,iodhbwm,iscram,
-    isov2,isodoc,iwhdp,jacow,jlreq,jmlr,jmlrbook,jnuexam,jpsj2,
-    jura,jurabook,juraovw,juraurtl,kdgcoursetext,kdgmasterthesis,
-    kdpcover,kerntest,kluwer,knittingpattern,scrartcl,scrarticle,
-    scrbook,scrdoc,scrletter,scrlttr2,scrreport,scrreprt,komacv,
-    oblivoir-utf,oblivoir-xl,oblivoir,xoblivoir,ksp-thesis,l3doc,
-    labbook,leadsheet,leaflet,lebhart,lectures,letgut,lettre,limap,
-    limecv,lion-msc,lni,lps,lt3graph-packagedoc,ltxdockit,
-    ltxguidex,abstbook,beletter,flashcard,iagproc,cours,fiche,
-    matapli,matc3mem,mcmthesis,ltxmdf,medstarbeamer,meetingmins,
-    memoir,mensa-tex,mentis,metanorma,milog,minimart,minimbook,
-    mla,mluexercise,mnras,moderncv,modernposter,msu-thesis,
-    mucproc,mugsthesis,muling,musuos,muthesis,third-rep,mwart,
-    mwbk,mwrep,mycv,nature,ncc,nccproc,sibjnm,nddiss2e,
-    ndsu-thesis,newlfm,nih,nihbiosketch,njurepo,nlctdoc,nostarch,
-    nrc1,nrc2,artikel1,artikel2,artikel3,boek,boek3,brief,
-    rapport1,rapport3,nwejm,nwejmart,octavo,onrannual,
-    oup-authoring-template,journal,paper,papertex,pbsheet,pecha,
-    petiteannonce,philosophersimprint,pittetd,pkuthss,plari,play,
-    postcards,powerdot,FUpowerdot,ppr-prv,pracjourn,pressrelease,
-    proposal,reporting,dfgproposal,dfgreporting,euproposal,
-    eureporting,prosper,protocol,prtec,upmgr,wkmgr,pst-doc,
-    ptptex,qcm,quantumarticle,qyxf-book,ReadableCV,recipe,
-    RecipeBook,recipecard,refart,refrep,resphilosophica,revtex4-2,
-    revtex4,revtex4-1,rtklage,ryersonSGSThesis,ryethesis,sageep,
-    sapthesis,schuleab,schulein,schuleit,schulekl,schuleub,
-    schuleue,schullsg,schullzk,schulma-ab,schulma-gutachten,
-    schulma-klausur,schulma-komp,schulma-mdlprf,schulma-praes,
-    schwalbe,sciposter,screenplay,scrjrnl,sdapsclassic,sduthesis,
-    seminar,semproc,sesamanuel,seuthesix,sffms,cassete,etiketka,
-    shtthesis,caesar_book,sides,simplecv,simplivre,skbarticle,
-    skbbeamer,skbbook,skblncsbeamer,skblncsppt,skbmoderncv,skdoc,
-    skeyval-testclass,skrapport,smfart,smfbook,SPhdThesis,spie,
-    sr-vorl,sslides,stage,standalone,usthesis,hwexam,mikoslides,
-    omdoc,smglom,subfiles,suftesi,sugconf,tabriz-thesis,talk,
-    tcldoc,tclldoc,powersem,thesis-ekf,thesis-gwu,thuthesis,
-    tikz-kalender,tikzposter,tlc-article,TOPletter,toptesi,
-    tudabeamer,tudaexercise,tudaleaflet,tudaletter,tudaposter,
-    tudapub,tudasciposter,tudscrartcl,tudscrbook,tudscrdoc,
-    tudscrmanual,tudscrposter,tudscrreprt,tufte-book,tufte-handout,
-    ltugboat,ltugproc,tui,turabian,turabian-researchpaper,
-    turabian-thesis,my-thesis,ua-thesis,uafthesis,
-    uantwerpenbamathesis,uantwerpencoursetext,uantwerpenexam,
-    uantwerpenletter,uantwerpenphdthesis,uantwerpenreport,
-    ucalgmthesis,ucbthesis,ucdavisthesis,ucsmonograph,ucthesis,
-    udesoftec,uebungsblatt,uestcthesis,uhhassignment,uiucredborder,
-    uiucthesis,ulthese,legislation,umich-thesis,umthesis,
-    unam-thesis,unifith,unitn-bimrep,univie-ling-expose,
-    univie-ling-paper,univie-ling-thesis,univie-ling-wlg,
-    unizgklasa,uothesis,UoWthesis,upmethodology-document,URbeamer,
-    URletter,uspatent,ut-thesis,utexasthesis,uwmslide,uwthesis,
-    verifica,webquiz,willowtreebook,withargs-packagedoc,
-    wsemclassic,xduthesis,xebaposter,xmuthesis,xsim-manual,
-    yaletter,yathesis,ycbook,ydoc,york-thesis,
-  },%
-  otherkeywords={},%
-  alsoletter={0123456789-},%
-  alsodigit={},%
-  sensitive%
-}[keywords,tex,comments]%
-\lstdefinestyle{__letgut_all_reset}{
-  basicstyle=\ttfamily,
-  language=TeX,%
-  texcs={},%
-  keywords={},%
-  keywords=[2]{},%
-  keywords=[3]{},%
-  keywords=[4]{},%
-  keywords=[5]{},%
-  otherkeywords={},%
-  alsoletter={},%
-  alsodigit={},%
-  alsolanguage=[AlLaTeX]TeX,%
-  alsolanguage=[LaTeX]TeX,%
-  alsolanguage=[plain]TeX,%
-  alsolanguage=[common]TeX,%
-  alsolanguage=[primitive]TeX,%
-  alsolanguage=[classes]TeX,%
-belowskip=0pt,
-}
-\lstset{
-  style=__letgut_all_reset
-}
-\AddToHook{cmd/input/before}{
-  \lstset{%
-    style=__letgut_all_reset,%
-  }
-}
 \NewCommandCopy{\__letgut_old_printbibliography}{
   \printbibliography
 }
@@ -585,7 +502,7 @@
 }
 \AddToHook{begindocument/before}{
 \bool_if:NTF \g__letgut_paper_bool {
-  \hypersetup{draft}
+  \hypersetup{hidelinks}
 }{
   \hypersetup{%
     colorlinks,%
@@ -592,8 +509,16 @@
     allcolors={letgut_allcolors_links},%
   }%
 }
-\file_if_exist:nT {\c__letgut_acronyms_file_tl}{
-  \file_input:n {\c__letgut_acronyms_file_tl}
+\file_if_exist:nTF {./\c__letgut_acronyms_file_tl}{
+  \file_input:n {./\c__letgut_acronyms_file_tl}
+}{
+  \file_if_exist:nTF {../\c__letgut_acronyms_file_tl}{
+    \file_input:n {../\c__letgut_acronyms_file_tl}
+  }{
+    \file_if_exist:nT {\c__letgut_acronyms_file_tl}{
+      \file_input:n {\c__letgut_acronyms_file_tl}
+    }
+  }
 }
 % % \bool_if:NF \g__letgut_paper_bool {
 \bool_if:NT \g__letgut_draft_bool {
@@ -633,108 +558,19 @@
 }
 % % }
 }
-\int_new:N \g__letgut_date_month_int
-\int_new:N \g__letgut_date_year_int
-
-\int_gset:Nn \g__letgut_date_month_int {\the\month}
-\int_gset:Nn \g__letgut_date_year_int  {\the\year}
-
-\tl_new:N \g__letgut_date_month_tl
-\tl_new:N \g__letgut_date_tl
-
-\cs_new_protected:Npn \__letgut_date_parse:n #1
-{
-  \__letgut_if_is_iso_date:nTF {#1}
-  {
-    \__letgut_date_parse:www #1 \q_stop
-  }{
-    \msg_term:nnn{letgut}{Not~month~iso~date}{#1}
-    \tl_gset:Nn \g__letgut_date_tl { #1 }
-  }
-}
-
-\prg_new_protected_conditional:Npnn
-\__letgut_if_is_iso_date:n #1 { T, F, TF }
-{
-  \regex_match:nnTF { ^\d{4}-(\d{1,2}) } {#1}
-  { \prg_return_true: }
-  { \prg_return_false: }
-}
-
-\prg_new_protected_conditional:Npnn
-\__letgut_if_is_int:n #1 { T, F, TF }
-{
-  \regex_match:nnTF { ^[\+\-]?[\d]+$ } {#1}
-  { \prg_return_true: }
-  { \prg_return_false: }
-}
-
-\cs_new_protected:Npn \__letgut_month_name:n #1
-{
-  % \text_titlecase_first:n {
-  \int_case:nnF
-  { #1 }
-  {
-    { 1 }{ janvier }
-    { 2 }{ février }
-    { 3 }{ mars }
-    { 4 }{ avril }
-    { 5 }{ mai }
-    { 6 }{ juin }
-    { 7 }{ juillet }
-    { 8 }{ août }
-    { 9 }{ septembre }
-    { 10 }{ octobre }
-    { 11 }{ novembre }
-    { 12 }{ décembre }
-  }
-  { Month~ Error! }
-  % }
-}
-
-\cs_new_protected:Npn \__letgut_date_parse:www #1-#2
-\q_stop
-{
-  \int_compare:nTF
-  {
-    \the\year <= #1 <= \the\year+1
-}{
-  \int_gset:Nn \g__letgut_date_year_int {#1}
-}{
-  \int_gset:Nn \g__letgut_date_year_int {\the\year}
-}
-\__letgut_if_is_int:nTF {#2}
-{
-  \int_compare:nTF
-  {
-    1 <= #2 <= 12
-}
-    {\int_gset:Nn \g__letgut_date_month_int {#2}}
-    {\int_gset:Nn \g__letgut_date_month_int {\the\month}}
-  }{
-    \int_gset:Nn \g__letgut_date_month_int  {\the\month}
-  }
-  \tl_gset:Nn \g__letgut_date_month_tl {
-    \__letgut_month_name:n { \g__letgut_date_month_int }
-  }
-  \tl_gset:Nn \g__letgut_date_tl {
-    \tl_use:N \g__letgut_date_month_tl
-    \c_space_tl
-    \int_use:N \g__letgut_date_year_int
-  }
-}
 \pagecolor[rgb]{\c__letgut_default_pagecolor_screen_clist}
 \clist_set_eq:NN \g__letgut_pagecolor_clist
   \c__letgut_default_pagecolor_screen_clist
-\keys_define:nn { letgut/setup }
+\keys_define:nn { letgut }
 {
+  , for-readers .bool_gset:N = \g__letgut_for_readers_bool
+  , for-readers .initial:n = { true }
+  , for-readers .default:n = { true }
+  , for-authors .bool_gset_inverse:N = \g__letgut_for_readers_bool
   , draft .bool_gset:N = \g__letgut_draft_bool
   , draft .initial:n = { true }
   , draft .default:n = { true }
   , final .bool_gset_inverse:N = \g__letgut_draft_bool
-  , number .int_gset:N = \g__letgut_number_int
-  , date .code:n = { \__letgut_date_parse:n { #1 } }
-  , date .initial:x = {\the\year-\the\month}
   , paper .code:n = {
     \bool_gset_true:N \g__letgut_paper_bool
     \pagecolor[rgb]{\c__letgut_default_pagecolor_paper_clist}
@@ -742,6 +578,9 @@
       \c__letgut_default_pagecolor_paper_clist
   }
   , screen .bool_gset_inverse:N = \g__letgut_paper_bool
+  , number .int_gset:N = \g__letgut_number_int
+  , date .code:n = { \__letgut_date_parse:n { #1 } }
+  , date .initial:x = {\the\year-\the\month}
   , pagecolor .initial:V
     = \c__letgut_default_pagecolor_screen_clist
   , pagecolor .code:n = {
@@ -769,7 +608,11 @@
   , editorial .initial:n = { true }
   , informations .bool_gset:N = \g__letgut_informations_bool
   , informations .initial:n = { true }
+  , detailedtoc .bool_gset:N = \g__letgut_detailedtoc_bool
+  , detailedtoc .initial:n = { false }
 }
+\ProcessKeysOptions { letgut }
+\definecolor{letgut_pagecolor}{rgb}{\g__letgut_pagecolor_clist}
 \renewcommand{\headruleskip}{
   \c__letgut_head_rule_skip_dim
 }
@@ -782,14 +625,41 @@
 \fancyheadoffset[L]{\c__letgut_hoffset_dim}
 \pagestyle{fancy}
 \reversemarginpar
-\etocsetnexttocdepth{0}
 \etocsetstyle {section}
 {}
-{\leavevmode\leftskip 2cm\relax}
-{\normalsize%
+{\leavevmode\leftskip 2.5cm\relax}
+{\mdseries\small%
   \etocname~\dotfill~\etocpage\par
 }
 {}
+\etocsetstyle {subsection}
+{}
+{\leavevmode\leftskip 3cm\relax}
+{\mdseries\footnotesize%
+  \etocname~\dotfill~\etocpage\par
+}
+{}
+\etocsetstyle {subsubsection}
+{}
+{\leavevmode\leftskip 3.5cm\relax}
+{\mdseries\scriptsize%
+  \etocname~\dotfill~\etocpage\par
+}
+{}
+\etocsetstyle {paragraph}
+{}
+{\leavevmode\leftskip 4cm\relax}
+{\mdseries\tiny%
+  \etocname~\dotfill~\etocpage\par
+}
+{}
+\etocsetstyle {subparagraph}
+{}
+{\leavevmode\leftskip 4.5cm\relax}
+{\mdseries\tiny%
+  \etocname~\dotfill~\etocpage\par
+}
+{}
 \renewcommand*\frenchcontentsname{}
 \geometry{
   asymmetric,
@@ -845,7 +715,8 @@
    ,~\g__letgut_title_tl
  }
 }
-\bool_if:NT \g__letgut_for_readers_bool {
+\AddToHook{begindocument/before}{
+  \bool_if:NT \g__letgut_for_readers_bool {
 \file_if_exist:nTF {\c__letgut_banner_file_tl.pdf}{
   \AddToHookNext{shipout/background}
   {
@@ -946,6 +817,11 @@
 \vskip 1.5em
 }
 \thispagestyle{empty}
+\bool_if:NTF \g__letgut_detailedtoc_bool {
+  \etocsetnexttocdepth{5}
+}{
+  \etocsetnexttocdepth{0}
+}
 \pdfbookmark[1]{
   \c__letgut_contents_name_tl
 }{
@@ -952,6 +828,7 @@
   \c__letgut_contents_name_tl
 }
 \tableofcontents
+\etocsetnexttocdepth{1}
 \bool_if:NTF \g__letgut_title_empty_bool {
   \vspace*{1.5cm}
 }{
@@ -965,7 +842,7 @@
     \pdfbookmark[1]{Éditorial}{
       \c__letgut_editorial_file_tl
     }
-    \file_input:n {./\c__letgut_editorial_file_tl}
+    \__letgut_input_article:n {./\c__letgut_editorial_file_tl}
     % % \int_set:N \l_tmpa_int {\pagenumber}
     % % \int_compare:nNnT \l_tmpa_int = 1 { \newpage }
 % \if\count{\pagenumber}>1
@@ -1006,16 +883,30 @@
 \bool_if:NT \g__letgut_informations_bool {
   \clearpage
   \phantomsection
-  \file_if_exist:nTF
-  {./\c__letgut_informations_gutenberg_file_tl}{
-    \file_input:n {./\c__letgut_informations_gutenberg_file_tl}
+  \file_if_exist:nTF {./\c__letgut_informations_gutenberg_file_tl}{
+    \__letgut_input_article:n {
+      ./\c__letgut_informations_gutenberg_file_tl
+    }
   }{
-    \msg_warning:nn{letgut}{Informations~file~missing}
-    \alertbox{ \c__letgut_missing_infomations_tl }
+    \file_if_exist:nTF {../\c__letgut_informations_gutenberg_file_tl}{
+      \__letgut_input_article:n {
+        ../\c__letgut_informations_gutenberg_file_tl
+      }
+    }{
+      \file_if_exist:nTF {\c__letgut_informations_gutenberg_file_tl}{
+        \__letgut_input_article:n {
+          \c__letgut_informations_gutenberg_file_tl
+        }
+      }{
+        \msg_warning:nn{letgut}{Informations~file~missing}
+        \alertbox{ \c__letgut_missing_infomations_tl }
+      }
+    }
   }
 }
 }
 }
+}
 \setcounter{secnumdepth}{-10}
 \AddToHook{begindocument/before}{%
   \titleclass{\title}{straight}[\part]
@@ -1034,11 +925,18 @@
   {
     \leavevmode\leftskip 2cm\relax
   }
-  {\mdseries\normalsize
+  {
+    \bool_if:NTF \g__letgut_detailedtoc_bool {
+      \bfseries
+    }{
+      \mdseries
+    }
+    \normalsize
     \etocname
     \nobreak\leaders\hbox~ to~ 1ex{\hss.}\hfill
     \etocpage
-    \par}
+    \par
+  }
   {}
 \titleclass{\subtitle}{straight}[\title]
 \titleformat{\subtitle}{
@@ -1114,7 +1012,7 @@
 {\c__letgut_before_subparagraph_title_skip}
 {\c__letgut_after_subparagraph_title_skip}
 \NewDocumentCommand \letgutsetup { m } {
-  \keys_set:nn { letgut/setup } { #1 }
+  \keys_set:nn { letgut } { #1 }
 }
 \cs_new_protected:Nn \__letgut_ctan_news_item:n {
   \package{#1}~:
@@ -1176,7 +1074,8 @@
 }
 \cs_new_protected:Nn \__letgut_person_last_name:n
 {
-  {\scshape \__letgut_titlecase_name:n {#1}}
+  {% \scshape
+    \__letgut_titlecase_name:n {#1}}
 }
 \cs_new_protected:Nn \__letgut_person_first_name_last_name:nn
 {
@@ -1195,7 +1094,7 @@
 \cs_new_protected:Npn \__letgut_process_list:n #1
 {
   \seq_clear:N \l__letgut_items_seq
-  \seq_set_split:Nnn \l_tmpa_seq {and} {#1}
+  \seq_set_split:Nnn \l_tmpa_seq {~and~} {#1}
   \seq_map_inline:Nn \l_tmpa_seq {
     \seq_set_from_clist:Nn \l_tmpb_seq {##1}
     \seq_pop_left:NN \l_tmpb_seq \l_letgut_last_name_tl
@@ -1277,7 +1176,7 @@
 {
   {\l__letgut_files_font_switch_tl #1}
 }
-\NewDocumentCommand{\package}{ s o m O{package} } {
+\NewDocumentCommand{\package}{ s o m O{\c__letgut_package_tl} } {
   \IfBooleanT{#1}{
     #4
     \c_space_tl
@@ -1284,7 +1183,7 @@
   }
   \__letgut_tex_stuff:nn {#2}{#3}
 }
-\NewDocumentCommand{\class}{ s o m O{classe} } {
+\NewDocumentCommand{\class}{ s o m O{\c__letgut_class_tl} } {
   \IfBooleanT{#1}{
     #4
     \c_space_tl
@@ -1291,7 +1190,7 @@
   }
   \__letgut_tex_stuff:nn {#2}{#3}
 }
-\NewDocumentCommand{\file}{ s m O{fichier} } {
+\NewDocumentCommand{\file}{ s m O{\c__letgut_file_tl} } {
   \IfBooleanT{#1}{
     #3
     \c_space_tl
@@ -1298,7 +1197,7 @@
   }
   \__letgut_file:n {#2}
 }
-\NewDocumentCommand {\software} { s O{} m O{logiciel} } {
+\NewDocumentCommand {\software} { s O{} m O{\c__letgut_software_tl} } {
   \IfBooleanT{#1}{
     #4
     \c_space_tl
@@ -1323,6 +1222,18 @@
  \NewExpandableDocumentCommand { \Cahiers } { } {
    \c__letgut_cahiers_tl
  }
+ \NewExpandableDocumentCommand { \cahier } { } {
+   \c__letgut_cahier_tl
+ }
+ \NewExpandableDocumentCommand { \cahiers } { } {
+   \c__letgut_cahiers_tl
+ }
+ \NewExpandableDocumentCommand { \cahiergut } { } {
+   \cahier \c_space_tl \gutenberg
+ }
+ \NewExpandableDocumentCommand { \cahiersgut } { } {
+   \cahiers \c_space_tl \gutenberg
+ }
  \NewExpandableDocumentCommand { \letgut } {  } {
    \class{letgut}
  }
@@ -1333,11 +1244,23 @@
    \c__letgut_tugboat_tl
  }
  \NewExpandableDocumentCommand { \knuth } {  } {
-   \person{Knuth, Donald~ E.}
+   \person{Knuth,~ Donald~ E.}
  }
  \NewExpandableDocumentCommand { \lamport } {  } {
-   \person{Lamport, Leslie}
+   \person{Lamport,~ Leslie}
  }
+ \NewExpandableDocumentCommand { \tl } {  } {
+   \c__letgut_tex_live_tl
+ }
+ \NewExpandableDocumentCommand { \linux } {  } {
+   \c__letgut_gnu_linux_tl
+ }
+ \NewExpandableDocumentCommand { \macos } {  } {
+   \c__letgut_macOS_tl
+ }
+ \NewExpandableDocumentCommand { \windows } {  } {
+   \c__letgut_windows_tl
+ }
 \cs_new_protected:Npn \__letgut_emphasis:n #1
 {
   \emph{#1}
@@ -1350,28 +1273,45 @@
 }
 \AddToHook{begindocument/end}{
   \pdfstringdefDisableCommands{
-    \def\person#1{#1}
-    \def\author#1{#1}
-    \def\package#1{#1}
-    % \def\package*#1{package~#1}
-    \def\class#1{#1}
-    % \def\class*#1{classe~#1}
-    \def\file#1{#1}
-    % \def\file*#1{fichier~#1}
-    \def\software#1{#1}
-    % \def\software*#1{logiciel~#1}
-    \def\foreignloc#1{#1}
-    \def\lettre{Lettre}
-    \def\gutenberg{GUTenberg}
-    \def\gut{\gutenberg}
-    \def\lettregut{\lettre\c_space_tl\gutenberg}
-    \def\Cahier{Cahier}
-    \def\Cahiers{\Cahier s}
-    \def\letgut{letgut}
-    \def\letgutcls{classe~ letgut}
-    \def\knuth{Donald~ E.~ Knuth}
-    \def\lamport{Leslie~ Lamport}
-    \def\latinloc#1{#1}
+    \RenewExpandableDocumentCommand\person { m }{#1}
+    \RenewExpandableDocumentCommand\author{ m }{#1}
+    \RenewExpandableDocumentCommand \package { s O{} m }{
+      \IfBooleanT{#1}{\c__letgut_package_tl\c_space_tl}#3
+    }
+    \RenewExpandableDocumentCommand\class { s O{} m }{
+      \IfBooleanT{#1}{\c__letgut_class_tl\c_space_tl}#3
+    }
+    \RenewExpandableDocumentCommand\file { s m }{
+      \IfBooleanT{#1}{\c__letgut_file_tl\c_space_tl}#2
+    }
+    \RenewExpandableDocumentCommand\software { s O{} m }{
+      \IfBooleanT{#1}{\c__letgut_software_tl\c_space_tl}#3
+    }
+    \RenewExpandableDocumentCommand\foreignloc{ m }{#1}
+    \RenewExpandableDocumentCommand\latinloc{ m }{#1}
+    \RenewExpandableDocumentCommand\lettre{ }{Lettre}
+    \RenewExpandableDocumentCommand\gutenberg{ }{GUTenberg}
+    \RenewExpandableDocumentCommand\gut{ }{\gutenberg}
+    \RenewExpandableDocumentCommand\lettregut{ }{
+      \lettre\c_space_tl\gutenberg
+    }
+    \RenewExpandableDocumentCommand\Cahier{ }{Cahier}
+    \RenewExpandableDocumentCommand\Cahiers{ }{\Cahier s}
+    \RenewExpandableDocumentCommand\cahier{ }{Cahier}
+    \RenewExpandableDocumentCommand\cahiers{ }{\cahier s}
+    \RenewExpandableDocumentCommand\cahiergut{ }{
+      \cahier\c_space_tl\gutenberg
+    }
+    \RenewExpandableDocumentCommand\cahiersgut{ }{
+      \cahier s\c_space_tl\gutenberg
+    }
+    \RenewExpandableDocumentCommand\letgut{ }{letgut}
+    \RenewExpandableDocumentCommand\letgutcls{ }{classe~ letgut}
+    \RenewExpandableDocumentCommand\knuth{ }{Donald~ E.~ Knuth}
+    \RenewExpandableDocumentCommand\lamport{ }{Leslie~ Lamport}
+    \RenewExpandableDocumentCommand\linux{ }{GNU/Linux}
+    \RenewExpandableDocumentCommand\macos{ }{macOS}
+    \RenewExpandableDocumentCommand\windows{ }{Windows}
   }
 }
 \cs_new_protected:Nn \__letgut_acronym:nnnn
@@ -1429,11 +1369,19 @@
   }
 }
 }
+\let\__letgut_next_token\relax
+\cs_new_protected:Npn \__letgut_next_token_is_footnote:
+{\if_meaning:w\footnote\__letgut_next_token\textsuperscript{,}\fi}
 \NewCommandCopy{\__letgut_old_footnote}{\footnote}
-\RenewDocumentCommand {\footnote} { m }{
+\RenewDocumentCommand {\footnote} { O{} m }{
   \bool_set_true:N \l__letgut_in_footnote_bool
-  \__letgut_old_footnote { #1 }
+  \tl_if_empty:nTF {#1}{
+    \__letgut_old_footnote { #2 }
+  }{
+    \__letgut_old_footnote [#1] { #2 }
+  }
   \bool_set_false:N \l__letgut_in_footnote_bool
+  \futurelet\__letgut_next_token\__letgut_next_token_is_footnote:
 }
 \DeclareAcroProperty{extra-foreign}
 \DeclareAcroProperty{extra-long}
@@ -1446,7 +1394,7 @@
         \space
         (
         \acroifT {alt} { \acrotranslate {or} ~ \acrowrite {alt} ~ }
-        \acroifT {foreign} { \acrowrite {foreign} :~ }
+        \acroifT {foreign} { \acrowrite {foreign} }
         \acrowrite {long}
         \acrogroupcite
         )
@@ -1610,13 +1558,65 @@
   \noindent
   \textsf{\fullcite{\g__letgut_bookreview_bibkey_tl}}
   \tl_if_empty:NF \g__letgut_bookreview_price_tl{
-    .\c_space_tl\EUR{\g__letgut_bookreview_price_tl}
+    .\c_space_tl\g__letgut_bookreview_price_tl\c_space_tl €
   }
   \par
 }{
   \exp_args:NV \author{\g__letgut_bookreview_reviewer_tl}
 }
+\DeclareRobustCommand*\LKey[1]{%
+\ifx#10\biolinumKeyGlyph{zero}%  % spurious space removed 2016/06/24
+\else\ifx#11\biolinumKeyGlyph{one}%
+\else\ifx#12\biolinumKeyGlyph{two}%
+\else\ifx#13\biolinumKeyGlyph{three}%
+\else\ifx#14\biolinumKeyGlyph{four}%
+\else\ifx#15\biolinumKeyGlyph{five}%
+\else\ifx#16\biolinumKeyGlyph{six}%
+\else\ifx#17\biolinumKeyGlyph{seven}%
+\else\ifx#18\biolinumKeyGlyph{eight}%
+\else\ifx#19\biolinumKeyGlyph{nine}%
+\else\ifx#1à\biolinumKeyGlyph{agrave}%
+\else\ifx#1À\biolinumKeyGlyph{Agrave}%
+\else\ifx#1â\biolinumKeyGlyph{acircumflex}%
+\else\ifx#1Â\biolinumKeyGlyph{Acircumflex}%
+\else\ifx#1é\biolinumKeyGlyph{eacute}%
+\else\ifx#1É\biolinumKeyGlyph{Eacute}%
+\else\ifx#1è\biolinumKeyGlyph{egrave}%
+\else\ifx#1È\biolinumKeyGlyph{Egrave}%
+\else\ifx#1ê\biolinumKeyGlyph{ecircumflex}%
+\else\ifx#1Ê\biolinumKeyGlyph{Ecircumflex}%
+\else\ifx#1ë\biolinumKeyGlyph{edieresis}%
+\else\ifx#1Ë\biolinumKeyGlyph{Edieresis}%
+\else\ifx#1î\biolinumKeyGlyph{icircumflex}%
+\else\ifx#1Î\biolinumKeyGlyph{Icircumflex}%
+\else\ifx#1ï\biolinumKeyGlyph{idieresis}%
+\else\ifx#1Ï\biolinumKeyGlyph{Idieresis}%
+\else\ifx#1ô\biolinumKeyGlyph{ocircumflex}%
+\else\ifx#1Ô\biolinumKeyGlyph{Ocircumflex}%
+\else\ifx#1ù\biolinumKeyGlyph{ugrave}%
+\else\ifx#1Ù\biolinumKeyGlyph{Ugrave}%
+\else\ifx#1û\biolinumKeyGlyph{ucircumflex}%
+\else\ifx#1Û\biolinumKeyGlyph{Ucircumflex}%
+\else\ifx#1ü\biolinumKeyGlyph{udieresis}%
+\else\ifx#1Ü\biolinumKeyGlyph{Udieresis}%
+\else\ifx#1ÿ\biolinumKeyGlyph{ydieresis}%
+\else\ifx#1Ÿ\biolinumKeyGlyph{Ydieresis}%
+\else\ifx#1ç\biolinumKeyGlyph{ccedilla}%
+\else\ifx#1Ç\biolinumKeyGlyph{Ccedilla}%
+\else\biolinumKeyGlyph{#1}%
+\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}
 \hyphenation{GUT-enberg}
+\cs_new_protected:Npn \__letgut_issn:
+{
+  \bool_if:NTF \g__letgut_paper_bool {
+    \c__letgut_paper_issn_tl
+  }{
+    \c__letgut_online_issn_tl
+  }
+}
+\NewDocumentCommand{\letgutissn}{ }{
+  \__letgut_issn:
+}
 \cs_new_protected:Npn \__letgut_unselectable:n #1
 {
   \BeginAccSupp{ActualText={}}#1\EndAccSupp{}
@@ -1633,43 +1633,107 @@
     \textcolor{#1}{$\langle$#2$\rangle$}
     \egroup
 }
-\AddToHook{begindocument/before}{
-  \ProvideDocumentCommand{\meta}{ O{__letgut_meta} m } {
+\AddToHook{begindocument/end}{
+  \DeclareDocumentCommand{\meta}{ O{__letgut_meta} m } {
     \__letgut_meta:nn {#1}{#2}
   }
 }
-\definecolor{__letgut_backgroundCode}{cmyk}{0,0,0,0.04}
-\definecolor{__letgut_borderCode}{cmyk}{0,0,0,0.2}
-\definecolor{__letgut_foregroundLinenumber}{cmyk}{0,0,0,0.5}
-\definecolor{__letgut_foregroundMention}{cmyk}{0,0,0,0}
-\definecolor{__letgut_backgroundResult}{cmyk}{0,0,0,0}
+\lstdefinestyle{__letgut_reset_listings_styles}{
+  basicstyle=\ttfamily,
+  breaklines,
+  language=TeX,%
+  texcs={},%
+  language={},%
+  keywords={},%
+  keywords=[2]{},%
+  keywords=[3]{},%
+  keywords=[4]{},%
+  keywords=[5]{},%
+  otherkeywords={},%
+  alsoletter={},%
+  alsodigit={},%
+  escapechar=£,
+  columns=fullflexible,
+  keepspaces=true,
+  upquote=true,
+  showstringspaces=false,
+numbersep=\c__letgut_number_sep_dim,
+numberstyle=\scriptsize\ttfamily
+\color{__letgut_foregroundLinenumber}
+\__letgut_unselectable:n,
+aboveskip={0\p@ \@plus 6\p@},
+  belowskip={0\p@ \@plus 6\p@},
+}
+\lstMakeShortInline[breaklines=false]⅛
+\lstset{ style=__letgut_reset_listings_styles }
+\cs_new_protected:Npn \__letgut_input_article:n #1
+{
+  \lstset{ style=__letgut_reset_listings_styles }
+  \acresetall%
+  \file_input:n{#1}%
+}
+\NewDocumentCommand{\inputarticle}{m}{
+  \__letgut_input_article:n { #1 }
+}
 \colorlet{__letgut_texcs}{blue}
 \colorlet{__letgut_comment}{gray}
-\colorlet{__letgut_argument-specification-separator}{red}
-\colorlet{__letgut_argument-specification}{cyan}
-\colorlet{__letgut_mandatory-argument}{purple}
+\colorlet{__letgut_argument_specification_separator}{red}
+\colorlet{__letgut_argument_specification}{cyan}
+\colorlet{__letgut_mandatory_argument}{purple}
 \colorlet{__letgut_environment}{teal}
-\colorlet{__letgut_key}{__letgut_mandatory-argument}
+\colorlet{__letgut_key}{__letgut_mandatory_argument}
 \colorlet{__letgut_value}{violet}
-\colorlet{__letgut_optional-argument}{__letgut_key}
+\colorlet{__letgut_optional_argument}{__letgut_key}
 \colorlet{__letgut_math}{green!50!black}
-\lstset{%
+\def\lstlanguagefiles{
+  lstlang0.sty,
+  lstlang1.sty,
+  lstlang2.sty,
+  lstlang3.sty,
+  ./\c__letgut_lstlanguage_file_tl,
+  ../\c__letgut_lstlanguage_file_tl,
+  \c__letgut_lstlanguage_file_tl
+}
+\lstdefinestyle{__letgut_latex_listings_style}{
+  language=TeX,%
+  alsolanguage=[AlLaTeX]TeX,%
+  alsolanguage=[LaTeX]TeX,%
+  alsolanguage=[plain]TeX,%
+  alsolanguage=[common]TeX,%
+  alsolanguage=[primitive]TeX,%
+  alsolanguage=[extLaTeX]TeX,%
+  alsolanguage=[classes]TeX,%
   texcsstyle=*\color{__letgut_texcs},
   commentstyle=\color{__letgut_comment}\itshape,
-  keywordstyle=    \color{__letgut_argument-specification-separator},
+  keywordstyle=    \color{__letgut_argument_specification_separator},
   keywordstyle={[2]\color{__letgut_environment}},
   keywordstyle={[3]\color{__letgut_key}},
   keywordstyle={[4]\color{__letgut_value}},
-  keywordstyle={[5]\color{__letgut_argument-specification}},
+  keywordstyle={[5]\color{__letgut_argument_specification}},
   keywordstyle={[6]\color{__letgut_key}},
-  escapechar=£,
-  literate=*%
+  numbers=left,
+deletekeywords={%
+  array,center,displaymath,document,enumerate,eqnarray,%
+  equation,flushleft,flushright,itemize,list,lrbox,math,minipage,%
+  picture,sloppypar,tabbing,tabular,trivlist,verbatim,%
+},%
+literate=*%
   {\\\\}{{{\color{__letgut_texcs}\textbackslash\textbackslash}}}{2}%
   {\\[}{{\textcolor{__letgut_math}{\textbackslash[}}}{2}%
   {\\]}{{\textcolor{__letgut_math}{\textbackslash]}}}{2}%
   {$}{{\textcolor{__letgut_math}{\$}}}{1}%$
 }
-\tcbuselibrary{listings,xparse,breakable,skins}
+\definecolor{__letgut_backgroundCode}{cmyk}{0,0,0,0.04}
+\definecolor{__letgut_borderCode}{cmyk}{0,0,0,0.2}
+\definecolor{__letgut_foregroundLinenumber}{cmyk}{0,0,0,0.5}
+\definecolor{__letgut_foregroundMention}{cmyk}{0,0,0,0}
+\definecolor{__letgut_backgroundResult}{cmyk}{0,0,0,0}
+\tcbuselibrary{listings,xparse,breakable,skins,hooks}
+\tcbset{
+  breakable,
+  sharp~ corners,
+  fonttitle=\sffamily\bfseries,
+}
 \cs_new_protected:Npn \__letgut_code_result_mention_box:nn #1 #2
 {
   \node[
@@ -1704,29 +1768,20 @@
 \tcbset{
   __letgut_code/.style={
     listing~ options={
-      % style=tcblatex,
-      numbers=left,
-      numbersep=\c__letgut_number_sep_dim,
-numberstyle=
-  \scriptsize
-  \ttfamily
-  \color{__letgut_foregroundLinenumber}
-  \__letgut_unselectable:n,
-},
-every~ float=\raggedleft,
-colback=__letgut_backgroundCode,
-breakable,
-sharp~ corners,
-boxrule=0.25mm,
-colframe=__letgut_borderCode,
-sidebyside~ align=top~ seam,
-toprule~ at~ break=0mm,
-bottomrule~ at~ break=0mm,
-colbacktitle=__letgut_borderCode,
-fonttitle=\sffamily\bfseries,
-before~ title={
-  \tl_set:Nn \l__letgut__tex_stuff_font_switch_tl {\rmfamily}
-},
+      style=__letgut_latex_listings_style,
+    },
+    every~ float=\raggedleft,
+    colback=__letgut_backgroundCode,
+    boxrule=0.25mm,
+    colframe=__letgut_borderCode,
+    sidebyside~ align=top~ seam,
+    toprule~ at~ break=0mm,
+    bottomrule~ at~ break=0mm,
+    colbacktitle=__letgut_borderCode,
+    fonttitle=\sffamily\bfseries,
+    before~ title={
+      \tl_set:Nn \l__letgut__tex_stuff_font_switch_tl {\rmfamily}
+    },
 title~ addon/.store~ in=\l__letgut_title_addon_tl,
 title=\__letgut_title_code_result_box:n {\l__letgut_title_addon_tl},
 reference~ text/.code={
@@ -1855,8 +1910,254 @@
     \skip_set_eq:NN \intextsep \c__letgut_reduced_intextsep_skip
   }
 }
+\cs_new_protected:Npn \__letgut_tcbset:n #1
+{
+  \tcbset{
+    __letgut_code/.append~ style={
+      listing~ options~ app={
+        #1
+      }
+    }
+  }
+}
+\cs_new_protected:Npn \__letgut_alsolanguage_list:nn #1 #2
+{
+\lstset{%
+    style=__letgut_reset_listings_styles,%
+  }
+  \tl_if_empty:nTF {#1} {
+    \tl_set:Nx \l_tmpa_tl {
+      alsolanguage={#2}
+    }
+    \exp_args:NV \__letgut_tcbset:n
+    {
+      \l_tmpa_tl
+    }
+  }{
+    \seq_set_from_clist:Nn \l_tmpa_seq {#1}
+    \seq_set_map_x:NNn \l_tmpb_seq \l_tmpa_seq {
+      alsolanguage={[##1]#2}
+    }
+    \tl_set:Nx \l_tmpa_tl
+    {
+      \seq_use:Nn \l_tmpb_seq {,}
+    }
+    \exp_args:NV \__letgut_tcbset:n
+    {
+      \l_tmpa_tl
+    }
+  }
+}
+\NewDocumentCommand{\syntaxhl}{ O{TeX} m}{%
+  \__letgut_alsolanguage_list:nn {#2} {#1}
+}
+\AddToHook{begindocument/before}{
+\definecolor{__letgut_terminal_prompt}{RGB}{204,0,0}
+\colorlet{__letgut_terminal_comment}{gray!80}
+\definecolor{__letgut_terminal_commands}{RGB}{241,124,81}
+\definecolor{__letgut_terminal_keywords}{RGB}{173,127,168}
+\definecolor{__letgut_terminal_variables}{RGB}{114,159,207}
+\colorlet{__letgut_terminal_utilities}{__letgut_terminal_commands}
+\definecolor{__letgut_terminal_strings}{RGB}{78,154,6}
+\lstdefinestyle{__letgut_terminal_listings_style}{
+  commentstyle=    \color{__letgut_terminal_comment},
+  keywordstyle=    \color{__letgut_terminal_commands},
+  keywordstyle={[2]\color{__letgut_terminal_keywords}},
+  keywordstyle={[3]\color{__letgut_terminal_utilities}},
+  stringstyle=     \color{__letgut_terminal_strings},
+  literate=*%
+  {$}{{\textcolor{__letgut_terminal_variables}{\$}}}{1}%$
+}
+\lstdefinelanguage{terminal}{%
+  morekeywords={%
+    alias,bg,bind,break,builtin,caller,cd,command,compgen,%
+    complete,compopt,continue,declare,dirs,disown,echo,enable,%
+    eval,exec,exit,export,fc,fg,getopts,hash,help,history,%
+    jobs,kill,let,local,logout,mapfile,popd,printf,pushd,pwd,%
+    read,readarray,readonly,return,set,shift,shopt,source,%
+    suspend,test,times,trap,type,typeset,ulimit,umask,unalias,%
+    unset,wait,%
+  },%
+  morekeywords=[2]{%
+    case,do,done,elif,else,esac,fi,for,function,if,in,select,%
+    then,time,until,while,%
+  },%
+  morekeywords=[3]{%
+    apropos,apt,apt-get,aptitude,aspell,at,awk,base32,base64,%
+    basename,bash,bc,bzip2,cal,cat,cfdisk,chattr,chgrp,%
+    chkconfig,chmod,chown,chpasswd,chroot,cksum,clear,cmp,comm,%
+    cp,cpio,cron,crontab,csplit,curl,cut,date,dc,dd,ddrescue,%
+    df,diff,diff3,dig,dir,dircolors,dirname,dmesg,dos2unix,%
+    dpkg,du,egrep,eject,env,ethtool,expand,expr,false,fdformat,%
+    fdisk,fgrep,file,find,fmt,fold,format,free,fsck,ftp,fuser,%
+    gawk,grep,groupadd,groupdel,groupmod,groups,gzip,head,%
+    hostname,htop,iconv,id,ifconfig,ifdown,ifup,import,install,%
+    iostat,ip,join,killall,less,link,ln,locate,logname,look,%
+    lpc,lpr,lprint,lprintd,lprintq,lprm,ls,lsattr,lsblk,lsof,%
+    lspci,make,man,mkdir,mkfifo,mkfile,mkisofs,mknod,mktemp,%
+    mmv,more,most,mount,mtools,mtr,mv,nc,netstat,nft,nice,nl,%
+    nohup,notify-send,nslookup,op,open,passwd,paste,pathchk,%
+    Perf,pgrep,ping,pkill,pr,printcap,printenv,ps,pv,quota,%
+    quotacheck,ram,rar,rcp,reboot,remsync,rename,renice,rev,rm,%
+    rmdir,rsync,scp,screen,sdiff,sed,seq,sftp,shuf,shutdown,%
+    sleep,slocate,sort,split,ss,ssh,stat,strace,su,sudo,sum,%
+    sync,tail,tar,tee,timeout,tmux,top,touch,tput,tr,%
+    traceroute,true,tsort,tty,umount,uname,unexpand,uniq,units,%
+    unix2dos,unrar,unshar,uptime,useradd,userdel,usermod,users,%
+    uudecode,uuencode,vdir,vi,vmstat,watch,wc,wget,whereis,%
+    which,who,whoami,write,xargs,xdg-open,xxd,xz,yes,zip,%
+  },%
+  alsoletter={2346-},%
+  morecomment=[l]\#,%
+  morestring=[d]",%
+  morestring=[d]',%
+  sensitive%
+}[keywords,comments,strings]%
+\definecolor{__letgut_foreground_terminal_dark}{named}{black}
+\colorlet{__letgut_background_terminal_dark_stdin}{
+  letgut_pagecolor!95!gray
+}
+\colorlet{__letgut_background_terminal_dark_stdout}{
+  __letgut_background_terminal_dark_stdin!60
+}
+\definecolor{__letgut_foreground_terminal_light}{named}{black}
+\definecolor{__letgut_background_terminal_light_stdin}{rgb}{
+  0.99,0.975,0.98
+}
+\colorlet{__letgut_background_terminal_light_stdout}{
+  __letgut_background_terminal_light_stdin!40
+}
+\bool_if:NTF \g__letgut_paper_bool {
+  \colorlet{__letgut_foreground_terminal}{
+    __letgut_foreground_terminal_light
+  }
+  \colorlet{__letgut_background_terminal_stdin}{
+    __letgut_background_terminal_light_stdin
+  }
+  \colorlet{__letgut_background_terminal_stdout}{
+    __letgut_background_terminal_light_stdout
+  }
+}{
+  \colorlet{__letgut_foreground_terminal}{
+    __letgut_foreground_terminal_dark
+  }
+  \colorlet{__letgut_background_terminal_stdin}{
+    __letgut_background_terminal_dark_stdin
+  }
+  \colorlet{__letgut_background_terminal_stdout}{
+    __letgut_background_terminal_dark_stdout
+  }
+}
+\tcbset{%
+  terminal/.style={%
+    colupper=__letgut_foreground_terminal,
+    collower=__letgut_foreground_terminal,
+    breakable,
+    segmentation~ at~ break=false,
+    boxrule=0mm,
+    before~ lower={\tcbset{every~ listing~ line={}}},
+    listing~ options={%
+      style=__letgut_terminal_listings_style,
+      language=terminal,
+    },
+    every~ listing~ line={%
+      \textcolor{__letgut_terminal_prompt}{%
+        \ttfamily%
+        \bfseries%
+        \__letgut_unselectable:n {#1\c_space_tl}
+      }
+    },
+  },
+}
+\cs_new_protected:Npn \__letgut_terminal:nnnn #1 #2 #3 #4
+{
+  \bool_set_false:N \l_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_tmpa_bool
+      }{
+        \tcbset{colback=__letgut_background_terminal_stdout}
+      }
+    }{
+      \tcbset{colback=__letgut_background_terminal_stdin}
+      \tl_if_empty:nTF {#4}{
+      }{
+        \tcbset{
+          bicolor,
+          middle=0mm,
+          boxsep=0mm,
+          colbacklower=__letgut_background_terminal_stdout,
+        }
+      }
+    }
+    \bool_if:NF \l_tmpa_bool {
+      \begin{tcolorbox}[terminal={#1},#2]
+        \lstset{aboveskip=0pt}
+        \tl_if_empty:nF {#3}{
+          \tcbset{
+            tempfile=\jobname-stdin.tex,
+          }
+          \tcbusetemplisting
+          \tl_if_empty:nF {#4}{
+            \tcblower
+          }
+        }
+        \tl_if_empty:nF {#4}{
+          \tl_if_empty:nF {#3}{
+            \lstset{aboveskip=0pt}
+          }
+          \tcbset{
+            tempfile=\jobname-stdout.tex,
+            every~ listing~ line={},
+            listing~ options~ app={
+              language={}
+            }
+          }
+          \tcbusetemplisting
+        }
+      \end{tcolorbox}
+    }
+  }
+  \NewDocumentCommand{\terminal}{ O{\$} O{} +v +v}{
+    \__letgut_terminal:nnnn {#1} {#2} {#3} {#4}
+  }
+}
+\lst at InputCatcodes
+\def\lst at DefEC{%
+ \lst at CCECUse \lst at 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%
+  ^^b0^^b1^^b2^^b3^^b4^^b5^^b6^^b7^^b8^^b9^^ba^^bb^^bc^^bd^^be^^bf%
+  ^^c0^^c1^^c2^^c3^^c4^^c5^^c6^^c7^^c8^^c9^^ca^^cb^^cc^^cd^^ce^^cf%
+  ^^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 ”
+  ^^^^215b% for ⅛
+  ^^00%
+}
+\lst at RestoreCatcodes
 \file_if_exist:nT {./\c__letgut_local_config_file_tl}{
-  \AddToHook { file/before/./\c__letgut_local_config_file_tl } {
+  \AddToHook { file/./\c__letgut_local_config_file_tl/before } {
     \ExplSyntaxOff
   }
   \file_input:n {./\c__letgut_local_config_file_tl}

Modified: trunk/Master/texmf-dist/tex/lualatex/letgut/letgut.dbx
===================================================================
--- trunk/Master/texmf-dist/tex/lualatex/letgut/letgut.dbx	2022-06-18 18:21:10 UTC (rev 63636)
+++ trunk/Master/texmf-dist/tex/lualatex/letgut/letgut.dbx	2022-06-18 20:02:54 UTC (rev 63637)
@@ -1,4 +1,4 @@
-\ProvidesFile{letgut.dbx}[2022-03-22 v0.9.1 letgut data model macros]
+\ProvidesFile{letgut.dbx}[2022-06-18 v0.9.2 letgut data model macros]
 \DeclareBibliographyDriver{bookreview}{%
   \usebibmacro{bibindex}%
   \usebibmacro{begentry}%

Modified: trunk/Master/texmf-dist/tex/lualatex/letgut/letgut.lbx
===================================================================
--- trunk/Master/texmf-dist/tex/lualatex/letgut/letgut.lbx	2022-06-18 18:21:10 UTC (rev 63636)
+++ trunk/Master/texmf-dist/tex/lualatex/letgut/letgut.lbx	2022-06-18 20:02:54 UTC (rev 63637)
@@ -1,4 +1,4 @@
-\ProvidesFile{letgut.lbx}[2022-03-22 v0.9.1 letgut localization]
+\ProvidesFile{letgut.lbx}[2022-06-18 v0.9.2 letgut localization]
 \InheritBibliographyExtras{french}
 \DeclareBibliographyStrings{
   inherit          = {french},



More information about the tex-live-commits mailing list.