texlive[69320] Master/texmf-dist: piton (6jan24)

commits+karl at tug.org commits+karl at tug.org
Sat Jan 6 22:34:11 CET 2024


Revision: 69320
          https://tug.org/svn/texlive?view=revision&revision=69320
Author:   karl
Date:     2024-01-06 22:34:11 +0100 (Sat, 06 Jan 2024)
Log Message:
-----------
piton (6jan24)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/lualatex/piton/piton-french.pdf
    trunk/Master/texmf-dist/doc/lualatex/piton/piton-french.tex
    trunk/Master/texmf-dist/doc/lualatex/piton/piton.pdf
    trunk/Master/texmf-dist/source/lualatex/piton/piton.dtx
    trunk/Master/texmf-dist/source/lualatex/piton/piton.ins
    trunk/Master/texmf-dist/tex/lualatex/piton/piton.lua
    trunk/Master/texmf-dist/tex/lualatex/piton/piton.sty

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

Modified: trunk/Master/texmf-dist/doc/lualatex/piton/piton-french.tex
===================================================================
--- trunk/Master/texmf-dist/doc/lualatex/piton/piton-french.tex	2024-01-06 21:34:02 UTC (rev 69319)
+++ trunk/Master/texmf-dist/doc/lualatex/piton/piton-french.tex	2024-01-06 21:34:11 UTC (rev 69320)
@@ -70,6 +70,15 @@
   } 
 
 
+
+\usepackage{makeidx}
+\makeindex
+
+\NewDocumentCommand{\indexcommand}{m}{\index{#1@\texttt{\textbackslash #1}}}
+
+\NewDocumentCommand{\indexenv}{m}{\index{#1@\texttt{\{#1\}}}}
+
+
 \NewDocumentCommand {\pkg} {m} {\textsf{#1}}
 \NewDocumentCommand {\cls} {m} {\textsf{#1}}
 
@@ -85,7 +94,7 @@
 
 
 \title{L'extension LaTeX \pkg{piton}\thanks{Ce document correspond à la 
-version~\myfileversion\space de \pkg{piton}, à la date du~\myfiledate.}} 
+version~\PitonFileVersion\space de \pkg{piton}, à la date du~\PitonFileDate.}} 
 \author{F. Pantigny \\ \texttt{fpantigny at wanadoo.fr}}
 
 \maketitle
@@ -151,9 +160,10 @@
 L'extension \pkg{piton} prend en charge quatre langages informatiques : Python, OCaml, SQL et C, ou plutôt \CC.
 
 \smallskip
-Par défaut, le language est Python.
+Par défaut, le langage est Python.
 
 \smallskip
+\index{language (clé)}
 On peut changer de langage avec la clé |language| de |\PitonOptions| : 
 
 \smallskip
@@ -179,6 +189,8 @@
 
 \subsection{Les commandes et environnements à la disposition de l'utilisateur}
 
+\indexenv{Piton}
+
 L'extension \pkg{piton} fournit plusieurs outils pour composer du code Python: les commandes |\piton|,
 l'environnement |{Piton}| et la commande |\PitonInputFile|. 
 
@@ -211,6 +223,7 @@
 
 \subsection{La syntaxe de la commande \textbackslash piton}
 
+\indexcommand{piton}
 
 La commande |\piton| possède en fait une syntaxe double. Elle est peut être utilisée comme une commande standard de
 LaTeX prenant son argument entre accolades (|\piton{...}|), ou bien selon la syntaxe de la commande |\verb| où l'argument est
@@ -303,6 +316,7 @@
 \NewDocumentCommand{\Definition}{m}
   {{\setlength{\fboxsep}{1pt}\colorbox{gray!20}{\ttfamily \vphantom{gl}#1}}}
 
+\indexcommand{PitonOptions}
 
 La commande |\PitonOptions| prend en argument une liste de couples \textsl{clé=valeur}. La portée des réglages
 effectués par cette commande est le groupe TeX courant.\footnote{On rappelle que tout environnement LaTeX est, en
@@ -314,24 +328,29 @@
 \item La clé \Definition{language} spécifie le langage informatique considéré (la casse n'est pas prise en compte).
 Quatre valeurs sont possibles : |Python|, |OCaml|, |C| et |SQL|. La valeur initiale est |Python|.
 
-\item La clé \Definition{path} indique un chemin où seront cherchés les fichiers inclus par
+\item \index{path} La clé \Definition{path} indique un chemin où seront cherchés les fichiers inclus par
 |\PitonInputFile|. 
 
-\item La clé \Definition{gobble} prend comme valeur un entier positif $n$ : les $n$ premiers caractères de chaque
+\item \index{gobble} La clé \Definition{gobble} prend comme valeur un entier positif $n$ : les $n$ premiers caractères de chaque
 ligne sont alors retirés (avant formatage du code) dans les environnements |{Piton}|. Ces $n$ caractères ne sont
 pas nécessairement des espaces.
 
-\item Quand la clé \Definition{auto-gobble} est activée, l'extension \pkg{piton} détermine la valeur minimale $n$
+\item \index{auto-gobble}\index{gobble!auto-gobble} Quand la clé \Definition{auto-gobble} est activée, l'extension \pkg{piton} détermine la valeur minimale $n$
 du nombre d'espaces successifs débutant chaque ligne (non vide) de l'environnement |{Piton}| et applique |gobble|
 avec cette valeur de~$n$.
 
-\item Quand la clé \Definition{env-gobble} est activée, \pkg{piton} analyse la dernière ligne de l'environnement,
+\item \index{env-gobble}\index{gobble!env-gobble}
+Quand la clé \Definition{env-gobble} est activée, \pkg{piton} analyse la dernière ligne de l'environnement,
 c'est-à-dire celle qui contient le |\end{Piton}| et détermine si cette ligne ne comporte que des espaces suivis par
 |\end{Piton}|. Si c'est le cas, \pkg{piton} calcule le nombre $n$ de ces espaces et applique |gobble| avec cette
 valeur de~$n$. Le nom de cette clé vient de \emph{environment gobble}: le nombre d'espaces à retirer ne dépend que
 de la position des délimiteurs |\begin{Piton}| et |\end{Piton}| de l'environnement.
 
-\item La clé \Definition{line-numbers} active la numérotation des lignes (en débordement à gauche) dans les
+\item \index{write} \colorbox{yellow!50}{\bfseries Nouveau 2.3}\enskip La clé \Definition{write} prend en argument un nom de
+fichier (avec l'extension) et écrit le contenu de l'environnement courant dans ce fichier. À la première
+utilisation du fichier par \pkg{piton}, celui-ci est effacé.
+
+\item \index{line-numbers} La clé \Definition{line-numbers} active la numérotation des lignes (en débordement à gauche) dans les
 environnements \verb|{Piton}| et dans les listings produits par la commande |\PitonInputFile|.
 
 \colorbox{yellow!50}{\textbf{Nouveau 2.1}}\enskip Cette clé propose en fait plusieurs sous-clés.
@@ -339,7 +358,7 @@
 \item La clé \Definition{line-numbers/skip-empty-lines} demande que les lignes vides soient considérées comme non existantes en
 ce qui concerne la numérotation des lignes (si la clé \verb|/absolute| est active, la clé \verb|/skip-empty-lines|
 n'a pas d'effet dans \verb|\PitonInputFile|). La valeur initiale de cette clé est \verb|true| (et non
-\verb|false|).\footnote{Avec le language Python, les lignes vides des \emph{docstrings} sont prises en compte.}
+\verb|false|).\footnote{Avec le langage Python, les lignes vides des \emph{docstrings} sont prises en compte.}
 
 \item La clé \Definition{line/numbers/label-empty-lines} demande que les labels (c'est-à-dire les numéros) des lignes vides
 soient affichés. Si la clé \verb|/skip-empty-lines| est active, la clé \verb|/label-empty-lines| est sans effet. La
@@ -374,7 +393,7 @@
 \end{Verbatim}
 
 
-\item La clé \Definition{left-margin} fixe une marge sur la gauche. Cette clé peut être utile, en particulier, en
+\item \index{left-margin} La clé \Definition{left-margin} fixe une marge sur la gauche. Cette clé peut être utile, en particulier, en
 conjonction avec la clé |line-numbers| si on ne souhaite pas que les numéros de ligne soient dans une position en
 débordement sur la gauche.
 
@@ -382,7 +401,7 @@
 insérée automatiquement pour les numéros de ligne quand la clé |line-numbers| est utilisée. Voir un exemple à la
 partie \ref{example-numbering} p.~\pageref{example-numbering}.
 
-\item La clé \Definition{background-color} fixe la couleur de fond des environnements |{Piton}| et des listings
+\item \index{background-color} La clé \Definition{background-color} fixe la couleur de fond des environnements |{Piton}| et des listings
 produits par |\PitonInputFile| (ce fond a une largeur que l'on peut fixer avec la clé |width| décrite ci-dessous).
 La clé |background-color| accepte une couleur définie «à la volée», c'est-à-dire que l'on peut écrire par exemple
 |background-color = [cmyk]{0.1,0.05,0,0}|
@@ -393,12 +412,12 @@
 
 \emph{Exemple} : |\PitonOptions{background-color = {gray!5,white}}|
 
-\item Avec la clé \Definition{prompt-background-color}, \pkg{piton} ajoute un fond coloré aux lignes débutant par
+\item \index{prompt-background-color} Avec la clé \Definition{prompt-background-color}, \pkg{piton} ajoute un fond coloré aux lignes débutant par
 le prompt «|>>>|» (et sa continuation «|...|») caractéristique des consoles Python avec boucle \textsc{repl}
 (\emph{read-eval-print loop}). Pour un exemple d'utilisation de cette clé, voir la partie \ref{pythonrepl}
 p.~\pageref{pythonrepl}.
 
-\item La clé \Definition{width} fixe la largeur du listing produit. Cette largeur s'applique aux fonds colorés
+\item \index{width} La clé \Definition{width} fixe la largeur du listing produit. Cette largeur s'applique aux fonds colorés
 spécifiés par les clés |background-color| et |prompt-background-color| et également quand une coupure automatique
 des lignes est demandée par |break-lines| (cf.~\ref{line-breaks}, p.~\pageref{line-breaks}).
 
@@ -410,9 +429,10 @@
 
 Pour un exemple d'utilisation de |width=min|, voir la partie~\ref{example-comments} sur les exemples, p.~\pageref{example-comments}.
 
-\item En activant la clé \Definition{show-spaces-in-strings}, les espaces dans les chaînes courtes (c'est-à-dire
-celles délimitées par |'| ou |"|) sont matérialisés par le caractère ␣ (U+2423 : \textsc{open box}). Bien sûr, le
-caractère U+2423 doit être présent dans la fonte mono-chasse utilisée.\footnote{L'extension \pkg{piton} utilise
+\item \index{show-spaces-in-strings} En activant la clé \Definition{show-spaces-in-strings}, les espaces dans les
+chaînes de caractères\footnote{Pour le language Python, cela ne s'applique que pour les chaînes courtes, c'est-à-dire
+celles délimitées par~\verb|'| ou~\verb|"|. En OCaml, cela ne s'applique pas pour les \emph{quoted strings}.} sont
+matérialisés par le caractère ␣ (U+2423 : \textsc{open box}). Bien sûr, le caractère U+2423 doit être présent dans la fonte mono-chasse utilisée.\footnote{L'extension \pkg{piton} utilise
   simplement la fonte mono-chasse courante. Pour la changer, le mieux est d'utiliser |\setmonofont| de
   \pkg{fontspec}.}\par\nobreak
 %
@@ -421,7 +441,7 @@
 Exemple : \piton{my_string = 'Très bonne réponse'}
 \endgroup
 
-\item Avec la clé \Definition{show-spaces}, tous les espaces sont matérialisés (et aucune coupure de ligne ne peut
+\item \index{show-spaces} Avec la clé \Definition{show-spaces}, tous les espaces sont matérialisés (et aucune coupure de ligne ne peut
 plus intervenir sur ces espaces matérialisés, même si la clé |break-lines|\footnote{cf. \ref{line-breaks}
   p.~\pageref{line-breaks}.} est active).
 \end{itemize}
@@ -483,6 +503,7 @@
 \subsection{Les styles}
 
 \label{styles}
+\index{styles (concept de \pkg{piton})}
 
 \subsubsection{Notion de style}
 
@@ -491,6 +512,7 @@
 groupe TeX courant.\footnote{On rappelle que tout environnement LaTeX est, en particulier, un groupe.}
 
 \bigskip
+\indexcommand{SetPitonStyle}
 La commande |\SetPitonStyle| prend en argument une liste de couples \textsl{clé=valeur}. Les clés sont les noms des
 styles et les valeurs sont les instructions LaTeX de formatage correspondantes.
 
@@ -527,6 +549,7 @@
 
 
 \bigskip
+\indexcommand{PitonStyle}
 La commande |\PitonStyle| prend en argument le nom d'un style et permet de récupérer la valeur (en tant que liste
 d'instructions LaTeX) de ce style.
 
@@ -564,12 +587,12 @@
 \end{Verbatim}
 les mots-clés dans les listings SQL seront composés en lettres capitales, même s'ils s'apparaissent en minuscules
 dans le fichier source LaTeX (on rappelle que, en SQL, les mot-clés ne sont pas sensibles à la casse et donc forcer
-leur mise en minuscule peut être envisagé).
+leur mise en capitales peut être envisagé).
 
 \medskip
 Comme on s'en doute, si un langage informatique utilise un certain style et que ce style n'est pas défini
 localement pour ce langage, c'est la version globale qui est utilisée. Cette notion de globalité n'a pas de
-rapport à la notion de liaison locale de TeX (notion de groupe TeX).
+rapport avec la notion de liaison locale de TeX (notion de groupe TeX).
 
 \medskip
 Les styles fournis par défaut par \pkg{piton} sont tous définis globalement.
@@ -577,6 +600,8 @@
 \bigskip
 \subsubsection{Le style UserFunction}
 
+\index{UserFunction (style)}
+
 \bigskip
 Il existe un style spécial nommé |UserFunction|. Ce style s'applique aux noms des fonctions précédemment définies
 par l'utilisateur (par exemple, avec le langage Python, ces noms de fonctions sont ceux qui apparaissent après le
@@ -622,8 +647,8 @@
 Bien sûr, la liste des noms de fonctions Python précédemment définies est gardée en mémoire de LuaLaTeX (de manière
 globale, c'est-à-dire indépendamment des groupes TeX). L'extension \pkg{piton} fournit une commande qui permet de
 vider cette liste : c'est la commande |\PitonClearUserFunctions|. Quand elle est utilisée sans argument, cette
-commande s'applique à tous les languages informatiques utilisées par l'utilisateur mais on peut spécifier en
-argument optionnel (entre crochets) une liste de languages informatiques auquels elle s'appliquera.\footnote{On
+commande s'applique à tous les langages informatiques utilisées par l'utilisateur mais on peut spécifier en
+argument optionnel (entre crochets) une liste de langages informatiques auquels elle s'appliquera.\footnote{On
   rappelle que, dans \pkg{piton}, les noms des langages informatiques ne sont pas sensibles à la casse. }
 \end{small}
 
@@ -632,6 +657,7 @@
 \subsection{Définition de nouveaux environnements}
 
 \label{NewPitonEnvironment}
+\indexcommand{NewPitonEnvironment}
 
 Comme l'environnement |{Piton}| a besoin d'absorber son contenu d'une manière spéciale (à peu près comme du texte
 verbatim), il n'est pas possible de définir de nouveaux environnements directement au-dessus de l'environnement
@@ -688,6 +714,8 @@
 
 \subsubsection{Coupure des pages}
 
+\index{splittable}
+
 Par défaut les listings produits par l'environnement |{Piton}| et par la commande |\PitonInputFile| sont
 insécables.
 
@@ -718,13 +746,13 @@
 néanmoins des clés pour autoriser de telles coupures (les points de coupure possibles sont les espaces, y compris
 les espaces dans les chaînes Python).
 \begin{itemize}
-\item Avec la clé \Definition{break-lines-in-piton}, les coupures de ligne sont autorisées dans la commande
+\item \index{break-lines!break-lines-in-piton} Avec la clé \Definition{break-lines-in-piton}, les coupures de ligne sont autorisées dans la commande
 |\piton{...}| (mais pas dans la commande \verb+\piton|...|+, c'est-à-dire avec la syntaxe verbatim). 
 
-\item Avec la clé \Definition{break-lines-in-Piton}, les coupures de ligne sont autorisées dans l'environnement
+\item \index{break-lines!break-lines-in-Piton} Avec la clé \Definition{break-lines-in-Piton}, les coupures de ligne sont autorisées dans l'environnement
 |{Piton}| (d'où la lettre |P| capitale dans le nom) et les listings produits par |\PitonInputFile|.
 
-\item La clé \Definition{break-lines} est la conjonction des deux clés précédentes.
+\item \index{break-lines} La clé \Definition{break-lines} est la conjonction des deux clés précédentes.
 \end{itemize}
 
 \medskip
@@ -731,16 +759,16 @@
 L'extension \pkg{piton} fournit aussi plusieurs clés pour contrôler l'apparence des coupures de ligne autorisées par |break-lines-in-Piton|.
 
 \begin{itemize}
-\item Avec la clé \Definition{indent-broken-lines}, l'indentation de la ligne coupée est respectée à chaque retour
+\item \index{indent-broken-lines} Avec la clé \Definition{indent-broken-lines}, l'indentation de la ligne coupée est respectée à chaque retour
 à la ligne. 
 
-\item La clé \Definition{end-of-broken-line} correspond au symbole placé à la fin d'une ligne coupée. Sa valeur initiale est : 
+\item \index{end-of-broken-line} La clé \Definition{end-of-broken-line} correspond au symbole placé à la fin d'une ligne coupée. Sa valeur initiale est : 
 |\hspace*{0.5em}\textbackslash|.
 
-\item La clé \Definition{continuation-symbol} correspond au symbole placé à chaque retour de ligne dans la marge
+\item \index{continuation-symbol} La clé \Definition{continuation-symbol} correspond au symbole placé à chaque retour de ligne dans la marge
 gauche. Sa valeur initiale est : |+\;| (la commande |\;| insère un petit espace horizontal). 
 
-\item La clé \Definition{continuation-symbol-on-indentation} correspond au symbole placé à chaque retour de ligne
+\item \index{continuation-symbol-on-indentation} La clé \Definition{continuation-symbol-on-indentation} correspond au symbole placé à chaque retour de ligne
 au niveau de l'indentation (uniquement dans le cas où la clé |indent-broken-lines| est active). Sa valeur initiale
 est : |$\hookrightarrow\;$|.
 \end{itemize}
@@ -776,6 +804,8 @@
 
 \label{part-of-a-file}
 
+\indexcommand{PitonInputFile}
+
 La commande |\PitonInputFile| permet d'insérer (avec formatage) le contenu d'un fichier. En fait, il existe des
 mécanismes permettant de n'insérer qu'une partie du fichier en question.
 \begin{itemize}
@@ -797,6 +827,10 @@
 
 \colorbox{yellow!50}{\textbf{Nouveau 2.1}}
 
+\index{marker/beginning}
+\index{marker/end}
+
+
 Pour utiliser cette technique, il convient d'abord de spécifier le format des marqueurs marquant le début et la fin
 de la partie du fichier à inclure. Cela se fait avec les deux clés \Definition{marker/beginning} et
 \Definition{marker/end} (usuellement dans la commande |\PitonOptions|). 
@@ -862,6 +896,7 @@
 \end{Piton}
 
 \vspace{1cm}
+\index{marker/include-line}
 La clé \Definition{marker/include-line} demande que les lignes contenant les marqueurs soient également insérées.
 
 \begin{Verbatim}
@@ -885,6 +920,8 @@
 
 
 \bigskip
+\index{begin-range}
+\index{end-range}
 Il existe en fait aussi les clés \Definition{begin-range} et \Definition{end-range} pour insérer plusieurs
 contenus marqués simultanément. 
 
@@ -900,6 +937,8 @@
 
 \subsection{Mise en évidence d'identificateurs}
 
+\index{identifiers (clé)}
+
 On peut demander le changement de formatage de certains identificateurs avec la clé |identifiers| de
 |\PitonOptions|.\footnote{Cette fonctionnalité n'est pas disponible avec le langage SQL car, en SQL, il n'y a pas
   d'identificateurs (il n'y a que des noms de tables et des noms de champs).}
@@ -1018,6 +1057,8 @@
 
 \subsection{Les échappements vers LaTeX}
 
+\index{echappements@échappements vers LaTeX}
+
 L'extension \pkg{piton} propose plusieurs mécanismes d'échappement vers LaTeX :
 \begin{itemize}
 \item Il est possible d'avoir des commentaires entièrement composés en LaTeX.
@@ -1034,6 +1075,9 @@
 
 \subsubsection{Les «commentaires LaTeX»}
 
+\index{comment-latex}
+\index{commentaires LaTeX}
+
 Dans ce document, on appelle «commentaire LaTeX» des commentaires qui débutent par |#>|. Tout ce qui suit ces deux 
 caractères, et jusqu'à la fin de la ligne, sera composé comme du code LaTeX standard.
 
@@ -1041,7 +1085,7 @@
 
 \begin{itemize}
 \item Il est possible de changer le marquage syntaxique utilisé (qui vaut initialement~|#>|). Pour ce faire, il
-existe une clé |comment-latex|, disponible uniquement dans le préambule du document, qui permet de choisir les
+existe une clé |comment-latex|, \emph{disponible uniquement dans le préambule du document}, qui permet de choisir les
 caractères qui (précédés par~|#|) serviront de marqueur syntaxique.
 
 Par exemple, avec le réglage suivant (fait dans le préambule du document) :
@@ -1084,11 +1128,13 @@
 
 \subsubsection{La clé «math-comments»}
 
+\index{math-comments}
+
 Il est possible de demander que, dans les commentaires Python normaux, c'est-à-dire débutant par~|#| (et non par
 |#>|), les éléments placés entre symboles \texttt{\$} soient composés en mode mathématique de LaTeX (le reste du
 commentaire restant composé en verbatim).
 
-La clé \Definition{math-comments} (qui ne peut être activée que dans le préambule du document) active ce
+La clé \Definition{math-comments} (\emph{qui ne peut être activée que dans le préambule du document}) active ce
 comportement.
 
 \bigskip
@@ -1109,11 +1155,14 @@
 
 \subsubsection{Le mécanisme «escape»}
 
+\index{begin-escape}
+\index{end-escape}
+
 Il est aussi possible de surcharger les listings Python pour y insérer du code LaTeX à peu près n'importe où (mais
 entre deux lexèmes, bien entendu). Cette fonctionnalité n'est pas activée par défaut par \pkg{piton}. Pour
 l'utiliser, il faut spécifier les deux délimiteurs marquant l'échappement (le premier le commençant et le deuxième
-le terminant) en utilisant les clés \Definition{begin-escape} et \Definition{end-escape} (qui ne sont accessibles
-que dans le préambule du document). Les deux délimiteurs peuvent être identiques.
+le terminant) en utilisant les clés \Definition{begin-escape} et \Definition{end-escape} (\emph{qui ne sont accessibles
+que dans le préambule du document}). Les deux délimiteurs peuvent être identiques.
 
 
 \bigskip
@@ -1194,11 +1243,15 @@
 
 \subsubsection{Le mécanisme «escape-math»}
 
+\index{escape-math}
+\index{begin-escape-math}
+\index{end-escape-math}
+
 Le mécanisme «|escape-math|» est très similaire au mécanisme «|escape|» puisque la seule différence est que les
 éléments en échappement LaTeX y sont composés en mode mathématique.
 
-On active ce mécanisme avec les clés \Definition{begin-escape-math} et \Definition{end-escape-math} (qui ne sont
-accessibles que dans le préambule du document).
+On active ce mécanisme avec les clés \Definition{begin-escape-math} et \Definition{end-escape-math} (\emph{qui ne sont
+accessibles que dans le préambule du document}).
 
 \medskip
 Malgré la proximité technique, les usages du mécanisme «|escape-math|» sont en fait assez différents de ceux du
@@ -1258,6 +1311,8 @@
 
 \label{beamer}
 
+\index{Beamer@\cls{Beamer} (classe)}
+
 \emph{Première remarque}\par\nobreak
 Remarquons que, comme l'environnement |{Piton}| prend son argument selon un mode verbatim, il convient, ce qui
 n'est pas surprenant, de l'utiliser dans des environnements |{frame}| de Beamer protégés par la clé |fragile|,
@@ -1419,8 +1474,14 @@
 \bigskip
 \subsection{Notes de pied de page dans les environnements de piton}
 
+\index{footnote@\pkg{footnote} (extension)}
+\index{footnote (clé)}
+\index{footnotehyper@\pkg{footnotehyper} (extension)}
+\index{footnotehyper (clé)}
+
 \label{footnote}
 
+
 Si vous voulez mettre des notes de pied de page dans un environnement de \pkg{piton} (ou bien dans un listing
 produit par |\PitonInputFile|, bien que cela paraisse moins pertinent dans ce cas-là) vous pouvez utiliser une
 paire |\footnotemark|--|\footnotetext|. 
@@ -1451,6 +1512,9 @@
 
 \subsection{Tabulations}
 
+\index{tabulations}
+\index{tab-size}
+
 \smallskip
 Même s'il est recommandé d'indenter les listings Python avec des espaces (cf. PEP~8), \pkg{piton} accepte les
 caractères de tabulations (U+0009) en début de ligne. Chaque caractère U+0009 est remplacé par $n$ espaces. La
@@ -1468,6 +1532,7 @@
 \subsection{Numérotation des lignes}
 
 \label{example-numbering}
+\index{numérotation des lignes de code|emph}
 
 On rappelle que l'on peut demander la numérotation des lignes des listings avec la clé |line-numbers|.
 
@@ -1514,6 +1579,7 @@
 \subsection{Formatage des commentaires LaTeX}
 
 \label{example-comments}
+\index{commentaires LaTeX|emph}
 
 On peut modifier le style |Comment.LaTeX| (avec |\SetPitonStyle|) pour faire afficher les commentaires 
 LaTeX (qui débutent par |#>|) en butée à droite.
@@ -1601,6 +1667,8 @@
 
 \subsection{Notes dans les listings}
 
+\index{notes dans les listings|emph}
+
 Pour pouvoir extraire les notes (introduites par |\footnote|), l'extension |piton| doit être chargée, soit avec la
 clé |footnote|, soit avec la clé |footnotehyper|, comme expliqué à la section \ref{footnote} p.~\pageref{footnote}.
 Dans le présent document, l'extension \pkg{piton} a été chargée par la clé |footnotehyper|.
@@ -1774,6 +1842,8 @@
 
 \subsection{Utilisation standard de pyluatex}
 
+\index{pyluatex@{\pkg{pyluatex}} (extension)}
+
 L'extension \pkg{pyluatex} est une extension qui permet l'exécution de code Python à partir de |lualatex| (pourvu
 que Python soit installé sur la machine et que la compilation soit effectuée avec |lualatex| et |--shell-escape|).
 
@@ -1855,6 +1925,8 @@
 
 \label{pythonrepl}
 
+\index{pythonrepl@\texttt{\{pythonrepl\}} (environnement de \pkg{pyluatex})}
+
 L'environnement |{pythonrepl}| de \pkg{pyluatex} passe son contenu à Python et renvoie ce que l'on obtient quand on
 fournit ce code à une boucle \textsc{repl} (\emph{read-eval-print loop}) de Python. On obtient un entrelacement
 d'instructions précédées par le prompt |>>>| de Python et des valeurs renvoyées par Python (et de ce qui a été
@@ -1862,7 +1934,7 @@
 
 \medskip
 Il est ensuite possible de passer cela à un environnement |{Piton}| qui va faire un coloriage syntaxique 
-et mettre sur fond grisé les lignes correspondant aux instructions fournies à l'interpréteur Python (gràce à la clé
+et mettre sur fond grisé les lignes correspondant aux instructions fournies à l'interpréteur Python (grâce à la clé
 |prompt-background-color| de |\PitonOptions|).
 
 
@@ -2021,7 +2093,7 @@
 \bigskip
 
 Les réglages initiaux effectués par \pkg{piton} dans |piton.sty| sont inspirés par le style \pkg{manni} de Pygments
-tel qu'il est appliqué au language Python par Pygments.\footnote{Voir \url{https://pygments.org/styles/}. À
+tel qu'il est appliqué au langage Python par Pygments.\footnote{Voir \url{https://pygments.org/styles/}. À
   remarquer que, par défaut, Pygments propose pour le style \pkg{manni} un fond coloré dont la couleur est la
   couleur HTML |#F0F3F3|. Il est possible d'avoir la même couleur dans |{Piton}| avec l'instruction :
   |\PitonOptions{background-color = [HTML]{F0F3F3}}|}
@@ -2241,9 +2313,22 @@
 \end{tabularx}
 \end{center}
 
+\bigskip
+Si on souhaite que les mots-clés soient capitalisés automatiquement, on peut modifier le style |Keywords|
+localement pour le langage SQL avec l'instruction :
+\begin{Verbatim}
+\SetPitonStyle~emphase#[SQL]@{Keywords = \bfseries \MakeUppercase}
+\end{Verbatim}
 
+
 \newpage
 
+\phantomsection
+\addcontentsline{toc}{section}{Index}
+
+\printindex
+
+
 \section*{Autre documentation}
 
 Le document |piton.pdf| (fourni avec l'extension \pkg{piton}) contient une traduction anglaise de la

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

Modified: trunk/Master/texmf-dist/source/lualatex/piton/piton.dtx
===================================================================
--- trunk/Master/texmf-dist/source/lualatex/piton/piton.dtx	2024-01-06 21:34:02 UTC (rev 69319)
+++ trunk/Master/texmf-dist/source/lualatex/piton/piton.dtx	2024-01-06 21:34:11 UTC (rev 69320)
@@ -1,7 +1,7 @@
 % \iffalse -*- coding: utf-8 ; -*- \fi 
 % \iffalse meta-comment
 %
-% Copyright (C) 2022-2023 by F. Pantigny
+% Copyright (C) 2022-2024 by F. Pantigny
 % -----------------------------------
 %
 % This file may be distributed and/or modified under the
@@ -20,36 +20,11 @@
 %<*batchfile> 
 \begingroup
 \input l3docstrip.tex
-\keepsilent
-\usedir{tex/latex/cascade}
-\preamble
-
-Copyright (C) 2022-2023 by F. Pantigny
------------------------------------
-
-This file may be distributed and/or modified under the
-conditions of the LaTeX Project Public License, either version 1.3
-of this license or (at your option) any later version.
-The latest version of this license is in:
-
-http://www.latex-project.org/lppl.txt
-
-and version 1.3 or later is part of all distributions of LaTeX
-version 2005/12/01 or later.
-
-\endpreamble
-\askforoverwritefalse
 \endgroup
 %</batchfile>
 %
 %<@@=piton>
-%<*STY>
-\def\myfileversion{2.2b}
-\def\myfiledate{2023/11/03}
-%</STY>
 %<*driver>
-\def\myfileversion{2.2b}
-\def\myfiledate{2023/11/03}
 \documentclass{l3doc}
 \usepackage{geometry}
 \geometry{left=2.8cm,right=2.8cm,top=2.5cm,bottom=2.5cm,papersize={21cm,29.7cm}}
@@ -76,21 +51,39 @@
 
 \def\CC{{C\nolinebreak[4]\hspace{-.05em}\raisebox{.4ex}{\tiny\bfseries ++}}}
 
+\usepackage{makeidx}
+\makeindex
+
+\NewDocumentCommand{\indexcommand}{m}{\index{#1@\texttt{\textbackslash #1}}}
+
+\NewDocumentCommand{\indexenv}{m}{\index{#1@\texttt{\{#1\}}}}
+
+
 \PitonOptions{gobble=2}
 
 \EnableCrossrefs
 
 \begin{document}
-
 \DocInput{piton.dtx}
 \end{document}
 %</driver>
 % \fi
+% \iffalse
+%<*STY>
+% \fi
+\def\PitonFileVersion{2.3}
+\def\PitonFileDate{2024/01/06}
+% \iffalse
+%</STY>
+%<*LUA>
+-- Version 2.3 of 2024/01/06
+%</LUA>
+%\fi
 %
 % \catcode`\" = 11 
 % 
 % \title{The package \pkg{piton}\thanks{This document corresponds to the
-% version~\myfileversion\space of \pkg{piton}, at the date of~\myfiledate.}} 
+% version~\PitonFileVersion\space of \pkg{piton}, at the date of~\PitonFileDate.}} 
 % \author{F. Pantigny \\ \texttt{fpantigny at wanadoo.fr}}
 %
 % \maketitle
@@ -178,6 +171,7 @@
 % By default, the language used is Python.
 %
 % \smallskip
+% \index{language (key)}
 % It's possible to change the current language with the command |\PitonOptions|
 % and its key |language|: |\PitonOptions{language = C}|.
 %
@@ -186,6 +180,8 @@
 % apply to the other languages.
 % 
 % \subsection{The tools provided to the user}
+%
+% \indexenv{Piton}
 % 
 % The package \pkg{piton} provides several tools to typeset Python code: the
 % command |\piton|, the environment |{Piton}| and the command |\PitonInputFile|.
@@ -219,6 +215,8 @@
 %
 % \subsection{The syntax of the command \textbackslash piton}
 % 
+% \indexcommand{piton}
+% 
 % In fact, the command |\piton| is provided with a double syntax. It may be used
 % as a standard command of LaTeX taking its argument between curly braces
 % (|\piton{...}|) but it may also be used with a syntax similar to the syntax of
@@ -312,6 +310,8 @@
 %
 % \NewDocumentCommand{\Definition}{m}
 %   {{\setlength{\fboxsep}{1pt}\colorbox{gray!20}{\ttfamily \vphantom{gl}#1}}}
+%
+% \indexcommand{PitonOptions}
 % 
 % The command |\PitonOptions| takes in as argument a comma-separated list of
 % \textsl{key=value} pairs. The scope of the settings done by that command is
@@ -326,20 +326,22 @@
 % considered (that key is case-insensitive). Four values are allowed :
 % |Python|, |OCaml|, |C| and |SQL|. The initial value is |Python|.
 % 
-% \item The key \Definition{path} specifies a path where the files included by
+% \item \index{path} The key \Definition{path} specifies a path where the files included by
 % |\PitonInputFile| will be searched.
 % 
-% \item The key \Definition{gobble} takes in as value a
+% \item  \index{gobble} The key \Definition{gobble} takes in as value a
 % positive integer~$n$: the first $n$ characters are discarded (before the
 % process of highlightning of the code) for each line of the environment
 % |{Piton}|. These characters are not necessarily spaces.
 %
-% \item When the key \Definition{auto-gobble} is in force, the
-% extension \pkg{piton} computes the minimal value $n$ of the number of
-% consecutive spaces beginning each (non empty) line of the environment
-% |{Piton}| and applies |gobble| with that value of~$n$.
+% \item \index{auto-gobble}\index{gobble!auto-gobble} When the key
+% \Definition{auto-gobble} is in force, the extension \pkg{piton} computes the
+% minimal value $n$ of the number of consecutive spaces beginning each (non
+% empty) line of the environment |{Piton}| and applies |gobble| with that value
+% of~$n$.
 %
-% \item When the key \Definition{env-gobble} is in force, \pkg{piton} analyzes the last
+% \item \index{env-gobble}\index{gobble!env-gobble}
+% When the key \Definition{env-gobble} is in force, \pkg{piton} analyzes the last
 % line of the environment |{Piton}|, that is to say the line which contains
 % |\end{Piton}| and determines whether that line contains only spaces followed
 % by the |\end{Piton}|. If we are in that situation, \pkg{piton} computes the
@@ -348,9 +350,14 @@
 % gobble is set by the position of the commands |\begin{Piton}| and
 % |\end{Piton}| which delimit the current environment.
 %
-% \item The key \Definition{line-numbers} activates the line numbering. in the
-% environments |{Piton}| and in the listings resulting from the use of
-% |\PitonInputFile|.
+% \item \index{write} \colorbox{yellow!50}{\bfseries New 2.3}\enskip The key
+% \Definition{write} takes in as argument a name of file (with its extension)
+% and write the content of the current environment in that file. At the first
+% use of a file by \pkg{piton}, it is erased.
+%
+% \item \index{line-numbers} The key \Definition{line-numbers} activates the
+% line numbering in the environments |{Piton}| and in the listings resulting
+% from the use of |\PitonInputFile|.
 % 
 % \colorbox{yellow!50}{\textbf{New 2.1}}\enskip In fact, the key |line-numbers| has
 % several subkeys.
@@ -397,9 +404,10 @@
 % \end{Verbatim}
 %
 %
-% \item The key \Definition{left-margin} corresponds to a margin on the left.
-% That key may be useful in conjonction with the key |line-numbers| if one does
-% not want the numbers in an overlapping position on the left.
+% \item \index{left-margin} The key \Definition{left-margin} corresponds to a
+% margin on the left. That key may be useful in conjonction with the key
+% |line-numbers| if one does not want the numbers in an overlapping position on
+% the left. 
 %
 % It's possible to use the key |left-margin| with the value |auto|. With that
 % value, if the key |line-numbers| is in force, a margin will be automatically
@@ -406,10 +414,10 @@
 % inserted to fit the numbers of lines. See an example part
 % \ref{example-numbering} on page~\pageref{example-numbering}.
 %
-% \item The key \Definition{background-color} sets the background color of the
-% environments |{Piton}| and the listings produced by |\PitonInputFile| (it's
-% possible to fix the width of that background with the key |width| described
-% below). 
+% \item \index{background-color} The key \Definition{background-color} sets the
+% background color of the environments |{Piton}| and the listings produced by
+% |\PitonInputFile| (it's possible to fix the width of that background with the
+% key |width| described below). 
 %
 % \smallskip
 % The key |background-color| supports also as value a \emph{list} of colors. In
@@ -421,15 +429,16 @@
 % The key |background-color| accepts a color defined «on the fly». For example,
 % it's possible to write |background-color = [cmyk]{0.1,0.05,0,0}|.
 %
-% \item With the key \Definition{prompt-background-color}, \pkg{piton} adds a
+% \item \index{prompt-background-color} With the key
+% \Definition{prompt-background-color}, \pkg{piton} adds a 
 % color background to the lines beginning with the prompt ``|>>>|'' (and its
 % continuation ``|...|'') characteristic of the Python consoles with
 % \textsc{repl} (\emph{read-eval-print loop}).
 %
-% \item The key \Definition{width} will fix the width of the listing. That width
-% applies to the colored backgrounds specified by |background-color| and
-% |prompt-background-color| but also for the automatic breaking of the lines
-% (when required by |break-lines|: cf.~\ref{line-breaks},
+% \item \index{width} The key \Definition{width} will fix the width of the
+% listing. That width applies to the colored backgrounds specified by
+% |background-color| and |prompt-background-color| but also for the automatic
+% breaking of the lines (when required by |break-lines|: cf.~\ref{line-breaks},
 % p.~\pageref{line-breaks}).
 %
 % That key may take in as value a numeric value but also the special
@@ -444,20 +453,23 @@
 % p.~\pageref{example-comments}. 
 %
 %
-% \item When the key \Definition{show-spaces-in-strings} is activated, the
-% spaces in the short strings (that is to say those delimited by |'| or |"|) are
-% replaced by the character~␣ (U+2423 : \textsc{open box}). Of course, that
-% character~U+2423 must be present in the monospaced font which is
-% used.\footnote{The package \pkg{piton} simply uses the current monospaced
-% font. The best way to change that font is to use the command
-% \texttt{\textbackslash setmonofont} of the package \pkg{fontspec}.}\par\nobreak
-% \begingroup \PitonOptions{show-spaces-in-strings} Example : 
+% \item \index{show-spaces-in-strings} When the key
+% \Definition{show-spaces-in-strings} is activated, the spaces in the 
+% strings of characters\footnote{With the language Python that feature applies
+% only to the short strings (delimited by~\verb|'| or~\verb|"|). In OCaml, that
+% feature does not apply to the \emph{quoted strings}.} are replaced by the
+% character~␣ (U+2423 : \textsc{open box}). Of course, that character~U+2423
+% must be present in the monospaced font which is used.\footnote{The package
+% \pkg{piton} simply uses the current monospaced font. The best way to change
+% that font is to use the command \texttt{\textbackslash setmonofont} of the
+% package \pkg{fontspec}.}\par\nobreak \begingroup
+% \PitonOptions{show-spaces-in-strings} Example : 
 % \piton|my_string = 'Very good answer'| \endgroup
 %
-% With the key \Definition{show-spaces}, all the spaces are replaced by U+2423
-% (and no line break can occur on those ``visible spaces'', even when the key
-% |break-lines|\footnote{cf. \ref{line-breaks} p.~\pageref{line-breaks}} is in
-% force). 
+% With the key \index{show-spaces} \Definition{show-spaces}, all the spaces are
+% replaced by U+2423 (and no line break can occur on those ``visible spaces'',
+% even when the key |break-lines|\footnote{cf. \ref{line-breaks}
+% p.~\pageref{line-breaks}} is in force).
 % \end{itemize}
 %
 % \bigskip
@@ -525,6 +537,7 @@
 % group.\footnote{We remind that a LaTeX environment is, in particular, a TeX group.}
 %
 % \bigskip
+% \indexcommand{SetPitonStyle}
 % The command |\SetPitonStyle| takes in as argument a comma-separated list of
 % \textsl{key=value} pairs. The keys are names of styles and the value are LaTeX
 % formatting instructions.
@@ -564,6 +577,7 @@
 % 
 %
 % \bigskip
+% \indexcommand{PitonStyle}
 % The command |\PitonStyle| takes in as argument the name of a style and allows
 % to retrieve the value (as a list of LaTeX instructions) of that style.
 %
@@ -620,6 +634,9 @@
 % \bigskip
 %
 % \subsubsection{The style UserFunction}
+%
+% \index{UserFunction (style)}
+% 
 % The extension \pkg{piton} provides a special style called~|UserFunction|. That
 % style applies to the names of the functions previously defined by the user
 % (for example, in Python, these names are those following the keyword
@@ -677,6 +694,7 @@
 % \subsection{Creation of new environments}
 %
 % \label{NewPitonEnvironment}
+% \indexcommand{NewPitonEnvironment}
 % 
 % Since the environment |{Piton}| has to catch its body in a special way (more
 % or less as verbatim text), it's not possible to construct new environments
@@ -736,6 +754,7 @@
 % \label{breakable}
 %
 % \subsubsection{Page breaks}
+% \index{splittable}
 %
 % By default, the listings produced by the environment |{Piton}| and the command
 % |\PitonInputFile| are not breakable.
@@ -769,13 +788,16 @@
 % line. However, there are keys to allow such breaks (the possible breaking
 % points are the spaces, even the spaces in the Python strings).
 % \begin{itemize}
-% \item With the key \Definition{break-lines-in-piton}, the line breaks are
-% allowed in the command |\piton{...}| (but not in the command
-% \verb+\piton|...|+, that is to say the command |\piton| in verbatim mode). 
-% \item With the key \Definition{break-lines-in-Piton}, the line breaks are
-% allowed in the environment |{Piton}| (hence the capital letter |P| in the name) and in the
+% \item \index{break-lines!break-lines-in-piton} With the key
+% \Definition{break-lines-in-piton}, the line breaks are allowed in the command
+% |\piton{...}| (but not in the command \verb+\piton|...|+, that is to say the
+% command |\piton| in verbatim mode).
+% \item \index{break-lines!break-lines-in-Piton} With the key
+% \Definition{break-lines-in-Piton}, the line breaks are allowed in the
+% environment |{Piton}| (hence the capital letter |P| in the name) and in the
 % listings produced by |\PitonInputFile|.
-% \item The key \Definition{break-lines} is a conjonction of the two previous keys.
+% \item \index{break-lines} The key \Definition{break-lines} is a conjonction of
+% the two previous keys. 
 % \end{itemize}
 % 
 % \bigskip 
@@ -783,7 +805,8 @@
 % on the line breaks allowed by |break-lines-in-Piton|.
 %
 % \begin{itemize}
-% \item With the key \Definition{indent-broken-lines}, the indentation of a
+% \item \index{indent-broken-lines} With the key
+% \Definition{indent-broken-lines}, the indentation of a 
 % broken line is respected at carriage return.
 %
 % \item The key \Definition{end-of-broken-line} corresponds to the symbol placed
@@ -790,11 +813,12 @@
 % at the end of a broken line. The initial value is:
 % |\hspace*{0.5em}\textbackslash|.
 %
-% \item The key \Definition{continuation-symbol} corresponds to the symbol
-% placed at each carriage return. The initial value is: |+\;| (the command |\;|
-% inserts a small horizontal space).
+% \item \index{continuation-symbol} The key \Definition{continuation-symbol}
+% corresponds to the symbol placed at each carriage return. The initial value
+% is: |+\;| (the command |\;| inserts a small horizontal space).
 %
-% \item The key \Definition{continuation-symbol-on-indentation} corresponds to
+% \item \index{continuation-symbol-on-indentation} 
+% The key \Definition{continuation-symbol-on-indentation} corresponds to
 % the symbol placed at each carriage return, on the position of the indentation
 % (only when the key |indent-broken-line| is in force). The initial value is:
 % |$\hookrightarrow\;$|.
@@ -831,6 +855,7 @@
 % \subsection{Insertion of a part of a file}
 %
 % \label{part-of-a-file}
+% \indexcommand{PitonInputFile}
 %
 % The command |\PitonInputFile| inserts (with formating) the content of a file.
 % In fact, it's possible to insert only \emph{a part} of that file. Two
@@ -857,6 +882,9 @@
 %
 % \colorbox{yellow!50}{\textbf{New 2.1}}
 %
+% \index{marker/beginning}
+% \index{marker/end}
+%
 % In order to use that feature, we first have to specify the format of the
 % markers (for the beginning and the end of the part to include) with the keys
 % \Definition{marker-beginning} and \Definition{marker-end} (usually with the
@@ -928,6 +956,7 @@
 % \end{Piton}
 %
 % \vspace{1cm}
+% \index{marker/include-line}
 % The key \Definition{marker/include-line} requires the insertion of the lines
 % containing the markers.
 %
@@ -952,6 +981,8 @@
 %
 %
 % \bigskip
+% \index{begin-range}
+% \index{end-range}
 % In fact, there exist also the keys \Definition{begin-range} and
 % \Definition{end-range} to insert several marked contents at the same time.
 %
@@ -967,6 +998,8 @@
 %
 % \subsection{Highlighting some identifiers}
 %
+% \index{identifiers (key)}
+%
 % It's possible to require a changement of formating for some identifiers with
 % the key |identifiers| of |\PitonOptions|.\footnote{This feature is not
 % available for the language SQL because, in SQL, there is no identifiers :
@@ -1091,6 +1124,8 @@
 %
 % \subsection{Mechanisms to escape to LaTeX}
 %
+% \index{escapes to LaTeX}
+% 
 % The package \pkg{piton} provides several mechanisms for escaping to LaTeX:
 % \begin{itemize}
 % \item It's possible to compose comments entirely in LaTeX.
@@ -1105,6 +1140,8 @@
 %
 % \subsubsection{The ``LaTeX comments''}
 %
+% \index{comment-latex}
+%
 % In this document, we call ``LaTeX comments'' the comments which begins by
 % |#>|. The code following those characters, until the end of the line, will be
 % composed as standard LaTeX code. There is two tools to customize those
@@ -1154,13 +1191,15 @@
 %
 % \subsubsection{The key ``math-comments''}
 %
+% \index{math-comments}
+%
 % It's possible to request that, in the standard Python comments (that is to say
 % those beginning by |#| and not |#>|), the elements between \texttt{\$} be
 % composed in LaTeX mathematical mode (the other elements of the comment being
 % composed verbatim).
 %
-% That feature is activated by the key \Definition{math-comments}, which is
-% available only in the preamble of the document.
+% That feature is activated by the key \Definition{math-comments}, \emph{which is
+% available only in the preamble of the document}.
 %
 % \medskip
 % Here is a example, where we have assumed that the preamble of the document
@@ -1180,6 +1219,10 @@
 % 
 % \subsubsection{The mechanism ``escape''}
 %
+% \index{escape-math}
+% \index{begin-escape-math}
+% \index{end-escape-math}
+%
 % It's also possible to overwrite the Python listings to insert LaTeX code
 % almost everywhere (but between lexical units, of course). By default,
 % \pkg{piton} does not fix any delimiters for that kind of escape.
@@ -1186,8 +1229,8 @@
 %
 % In order to use this mechanism, it's necessary to specify the delimiters which
 % will delimit the escape (one for the beginning and one for the end) by using
-% the keys \Definition{begin-escape} and \Definition{end-escape}, available only
-% in the preamble of the document.
+% the keys \Definition{begin-escape} and \Definition{end-escape}, \emph{available only
+% in the preamble of the document}.
 %
 % \medskip
 % In the following example, we assume that the preamble of the document contains
@@ -1275,8 +1318,8 @@
 % the math mode of LaTeX.
 %
 % This mechanism is activated with the keys \Definition{begin-escape-math} and
-% \Definition{end-escape-math} (which are available only in the preamble of the
-% document). 
+% \Definition{end-escape-math} (\emph{which are available only in the preamble of the
+% document}). 
 %
 % Despite the technical similarity, the use of the the mechanism
 % ``|escape-math|'' is in fact rather different from that of the mechanism
@@ -1335,6 +1378,7 @@
 % \subsection{Behaviour in the class Beamer}
 %
 % \label{beamer}
+% \index{Beamer@\cls{Beamer} (class)}
 %
 % \emph{First remark}\par\nobreak
 % Since the environment |{Piton}| catches its body with a verbatim mode, it's
@@ -1501,7 +1545,12 @@
 %
 % 
 % \subsection{Footnotes in the environments of piton}
-% 
+%
+%  \index{footnote@\pkg{footnote} (extension)}
+% \index{footnote (key)}
+% \index{footnotehyper@\pkg{footnotehyper} (extension)}
+% \index{footnotehyper (key)}
+%
 % \label{footnote}
 % If you want to put footnotes in an environment |{Piton}| or
 % (or, more unlikely, in a listing produced by |\PitonInputFile|), you can use a
@@ -1536,6 +1585,9 @@
 %
 % \subsection{Tabulations}
 %
+% \index{tabulations}
+% \index{tab-size}
+%
 % \smallskip 
 % Even though it's recommended to indent the Python listings with spaces (see
 % PEP~8), \pkg{piton} accepts the characters of tabulation (that is to say the
@@ -1556,6 +1608,7 @@
 % \subsection{Line numbering}
 %
 % \label{example-numbering}
+% \index{numbers of the lines de code|emph}
 %
 % We remind that it's possible to have an automatic numbering of the lines in
 % the Python listings by using the key |line-numbers|.
@@ -1695,6 +1748,7 @@
 % \subsection{Notes in the listings}
 %
 % \label{notes-examples}
+% \index{notes in the listings}
 % 
 % In order to be able to extract the notes (which are typeset with the command
 % |\footnote|), the extension \pkg{piton} must be loaded with the key |footnote|
@@ -1875,6 +1929,8 @@
 % 
 % \subsection{Use with pyluatex}
 %
+% \index{pyluatex@{\pkg{pyluatex}} (extension)}
+%
 % The package \pkg{pyluatex} is an extension which allows the execution of some
 % Python code from |lualatex| (provided that Python is installed on the machine
 % and that the compilation is done with |lualatex| and |--shell-escape|).
@@ -2179,6 +2235,14 @@
 % \end{center}
 %
 %
+% \bigskip
+% It's possible to automatically capitalize the keywords by modifiying locally
+% for the language SQL the style |Keywords|.
+% \begin{Verbatim}
+% \SetPitonStyle~emphase#[SQL]@{Keywords = \bfseries \MakeUppercase}
+% \end{Verbatim}
+%
+%
 % \newpage
 %
 % \section{Implementation}
@@ -2322,8 +2386,8 @@
 \RequirePackage{l3keys2e}
 \ProvidesExplPackage
   {piton}
-  {\myfiledate}
-  {\myfileversion}
+  {\PitonFileDate}
+  {\PitonFileVersion}
   {Highlight Python codes with LPEG on LuaLaTeX}
 %    \end{macrocode}
 %
@@ -2344,7 +2408,7 @@
   { 
     LuaLaTeX~is~mandatory.\\
     The~package~'piton'~requires~the~engine~LuaLaTeX.\\
-    \str_if_eq:VnT \c_sys_jobname_str { output }
+    \str_if_eq:onT \c_sys_jobname_str { output }
       { If~you~use~Overleaf,~you~can~switch~to~LuaLaTeX~in~the~"Menu". \\}
     If~you~go~on,~the~package~'piton'~won't~be~loaded.
   }
@@ -2361,7 +2425,7 @@
 \@@_msg_new:nn { piton.lua~not~found }
   { 
     The~file~'piton.lua'~can't~be~found.\\ 
-    The package~'piton'~won't~be~loaded.
+    The~package~'piton'~won't~be~loaded.
   }
 %    \end{macrocode}
 %
@@ -2410,7 +2474,6 @@
     beamer .bool_gset:N = \g_@@_beamer_bool ,
     beamer .default:n = true , 
   
-    escape-inside .code:n = \@@_error:n { key-escape-inside-deleted } , 
     math-comments .code:n = \@@_error:n { moved~to~preamble } , 
     comment-latex .code:n = \@@_error:n { moved~to~preamble } , 
 
@@ -2418,16 +2481,6 @@
   }
 %    \end{macrocode}
 %
-% \bigskip
-%    \begin{macrocode}
-\@@_msg_new:nn { key-escape-inside-deleted }
-  {
-    The~key~'escape-inside'~has~been~deleted.~You~must~now~use~
-    the~keys~'begin-escape'~and~'end-escape'~in~
-    \token_to_str:N \PitonOptions.\\
-    That~key~will~be~ignored.
-  }
-%    \end{macrocode}
 %
 % \bigskip
 %    \begin{macrocode}
@@ -2571,7 +2624,6 @@
 \str_new:N \l_@@_path_str
 %    \end{macrocode}
 % 
-% 
 % \medskip
 % In order to have a better control over the keys.
 %    \begin{macrocode}
@@ -2664,6 +2716,15 @@
 %    \end{macrocode}
 %
 % \medskip
+% The parameter |\l_@@_writer_str| corresponds to the key |write|. We will store
+% the list of the files already used in |\g_@@_write_seq| (we must not erase a
+% file which has been still been used).
+%    \begin{macrocode}
+\str_new:N \l_@@_write_str
+\seq_new:N \g_@@_write_seq
+%    \end{macrocode}
+%
+% \medskip
 % The following boolean corresponds to the key |show-spaces|.
 %    \begin{macrocode}
 \bool_new:N \l_@@_show_spaces_bool
@@ -2685,9 +2746,9 @@
 %    \end{macrocode}
 %
 % \medskip
-%    \begin{macrocode}
 % The following token list corresponds to the key
 % |continuation-symbol-on-indentation|. The name has been shorten to |csoi|.
+%    \begin{macrocode}
 \tl_new:N \l_@@_csoi_tl 
 \tl_set:Nn \l_@@_csoi_tl { $ \hookrightarrow \; $  }
 %    \end{macrocode}
@@ -2922,7 +2983,10 @@
   {
     \tl_set:Nn \l_tmpa_tl { #1 } 
     \bool_if:NTF \l_@@_show_spaces_bool
-      { \regex_replace_all:nnN { \x20 } { ␣ } \l_tmpa_tl } % U+2423
+      { 
+        \tl_set:Nn \l_@@_space_tl { ␣ }
+        \regex_replace_all:nnN { \x20 } { ␣ } \l_tmpa_tl % U+2423
+      } 
       {
 %    \end{macrocode}
 % If the key |break-lines-in-Piton| is in force, we replace all the characters
@@ -3114,11 +3178,10 @@
       { 
         \tl_set:Nn \l_tmpa_tl { #1 }
         \tl_set_rescan:Nno \l_tmpa_tl { } \l_tmpa_tl 
-        \exp_last_unbraced:NV \color \l_tmpa_tl
+        \exp_last_unbraced:No \color \l_tmpa_tl
       }
       { \color { #1 } }
   }
-\cs_generate_variant:Nn \@@_color:n { V }
 %    \end{macrocode}
 % 
 % \bigskip
@@ -3133,7 +3196,7 @@
           {
             \egroup
             \bool_if:NT \g_@@_footnote_bool { \end { savenotes } } 
-            \par \mode_leave_vertical: % \newline
+            \par \mode_leave_vertical: 
             \bool_if:NT \g_@@_footnote_bool { \begin { savenotes } } 
             \vtop \bgroup
           }
@@ -3329,7 +3392,6 @@
       \keys_set:nn { PitonOptions / line-numbers } { #1 } ,
     line-numbers .default:n = true , 
 
-
     splittable       .int_set:N         = \l_@@_splittable_int ,
     splittable       .default:n         = 1 , 
     background-color .clist_set:N       = \l_@@_bg_color_clist ,
@@ -3349,6 +3411,9 @@
         } , 
     width .value_required:n  = true ,
 
+    write .str_set:N = \l_@@_write_str ,
+    write .value_required:n = true ,
+
     left-margin      .code:n =
       \str_if_eq:nnTF { #1 } { auto }
         { 
@@ -3502,7 +3567,7 @@
         \iow_now:Nx \@mainaux 
           {
             \tl_gset:cn { c_@@_ \int_use:N \g_@@_env_int _ tl } 
-              { \exp_not:V \g_@@_aux_tl } 
+              { \exp_not:o \g_@@_aux_tl } 
           }
         \iow_now:Nn \@mainaux { \ExplSyntaxOff }
       }
@@ -3684,11 +3749,11 @@
     \dim_compare:nNnT \l_@@_width_dim = \c_zero_dim 
       { \dim_set_eq:NN \l_@@_width_dim \linewidth }
 %    \end{macrocode}
-% We read the information written on the |aux| file by previous run (when the
+% We read the information written on the |aux| file by a previous run (when the
 % key |width| is used with the special value~|min|). At this time, the only
 % potential information written on the |aux| file is the value of
 % |\l_@@_line_width_dim| when the key |width| has been used with the special
-% value~|min|). 
+% value~|min|).
 %    \begin{macrocode}
     \cs_if_exist_use:c { c_@@ _ \int_use:N \g_@@_env_int _ tl }
     \bool_if:NF \l_@@_resume_bool { \int_gzero:N \g_@@_visual_line_int }
@@ -3696,7 +3761,6 @@
     \int_gzero:N \g_@@_line_int
     \dim_zero:N \parindent 
     \dim_zero:N \lineskip 
-    \dim_zero:N \parindent 
     \cs_set_eq:NN \label \@@_label:n
   }
 %    \end{macrocode}
@@ -3733,7 +3797,7 @@
            { \box_wd:N \l_tmpa_box + \l_@@_numbers_sep_dim + 0.1 em }
        }
   }
-\cs_generate_variant:Nn \@@_compute_left_margin:nn { n V }
+\cs_generate_variant:Nn \@@_compute_left_margin:nn { n o }
 %    \end{macrocode}
 % 
 %
@@ -3775,8 +3839,8 @@
           }
       }
 %    \end{macrocode}
-% If |\l_@@_line_width_dim| has yet a non-empty value, that means that it has
-% been read on the |aux| file: it has been written on a previous run because the
+% If |\l_@@_line_width_dim| has yet a non-zero value, that means that it has
+% been read in the |aux| file: it has been written by a previous run because the
 % key |width| is used with the special value~|min|). We compute now the width of
 % the environment by computations opposite to the preceding ones.
 %    \begin{macrocode}
@@ -3830,12 +3894,26 @@
             \@@_compute_left_margin:nn { CountNonEmptyLines } { ##1 }
             \@@_compute_width:
             \ttfamily
-            \dim_zero:N \parskip % added 2023/07/06
+            \dim_zero:N \parskip 
 %    \end{macrocode}
-% |\g_@@_footnote_bool| is raised when the package \pkg{piton} has been load
+% |\g_@@_footnote_bool| is raised when the package \pkg{piton} has been loaded
 % with the key |footnote| \emph{or} the key |footnotehyper|.
 %    \begin{macrocode}
             \bool_if:NT \g_@@_footnote_bool { \begin { savenotes } } 
+%    \end{macrocode}
+% 
+% Now, the key |write|.
+%    \begin{macrocode}
+            \lua_now:e { piton.write = "\l_@@_write_str" } 
+            \str_if_empty:NF \l_@@_write_str
+              { 
+                \seq_if_in:NVTF \g_@@_write_seq \l_@@_write_str 
+                  { \lua_now:n { piton.write_mode = "a" } }
+                  { 
+                    \lua_now:n { piton.write_mode = "w" } 
+                    \seq_gput_left:NV \g_@@_write_seq \l_@@_write_str
+                  }
+              }  
             \vtop \bgroup 
             \lua_now:e 
               { 
@@ -3875,7 +3953,7 @@
         \cs_set_eq:NN \PitonOptions \@@_fake_PitonOptions
         #3 
         \@@_pre_env:
-        \int_compare:nNnT \l_@@_number_lines_start_int > 0 
+        \int_compare:nNnT \l_@@_number_lines_start_int > \c_zero_int
           { \int_gset:Nn \g_@@_visual_line_int { \l_@@_number_lines_start_int - 1 } }
         \group_begin:
         \tl_map_function:nN 
@@ -3883,7 +3961,7 @@
           \char_set_catcode_other:N 
         \use:c { _@@_collect_ #1 :w }
       }
-      { #4 }
+      { #4 } 
 %    \end{macrocode}
 %
 % \medskip
@@ -3971,7 +4049,7 @@
       \bool_if:nTF
         {
           ( 
-            \int_compare_p:nNn \l_@@_first_line_int > 0 
+            \int_compare_p:nNn \l_@@_first_line_int > \c_zero_int
             || \int_compare_p:nNn \l_@@_last_line_int < \c_max_int 
           )
           && ! \str_if_empty_p:N \l_@@_begin_range_str
@@ -3997,7 +4075,7 @@
       \@@_pre_env:
       \bool_if:NT \l_@@_line_numbers_absolute_bool
         { \int_gset:Nn \g_@@_visual_line_int { \l_@@_first_line_int - 1 } } 
-      \int_compare:nNnT \l_@@_number_lines_start_int > 0 
+      \int_compare:nNnT \l_@@_number_lines_start_int > \c_zero_int 
         { 
           \int_gset:Nn \g_@@_visual_line_int 
             { \l_@@_number_lines_start_int - 1 } 
@@ -4006,8 +4084,8 @@
 % The following case arise when the code |line-numbers/absolute| is in force
 % without the use of a marked range.
 %    \begin{macrocode}
-      \int_compare:nNnT \g_@@_visual_line_int < 0 
-        { \int_gzero:N \g_@@_visual_line_int  }
+      \int_compare:nNnT \g_@@_visual_line_int < \c_zero_int 
+        { \int_gzero:N \g_@@_visual_line_int }
       \mode_if_vertical:TF \mode_leave_vertical: \newline 
 %    \end{macrocode}
 % We count with Lua the number of lines of the argument. The result will be
@@ -4019,7 +4097,7 @@
 % The first argument of the following function is the name of the Lua function
 % that will be applied to the second argument in order to count the number of lines.
 %    \begin{macrocode}
-      \@@_compute_left_margin:nV { CountNonEmptyLinesFile } \l_@@_file_name_str
+      \@@_compute_left_margin:no { CountNonEmptyLinesFile } \l_@@_file_name_str
       \@@_compute_width:
       \ttfamily
       \bool_if:NT \g_@@_footnote_bool { \begin { savenotes } } 
@@ -4093,7 +4171,7 @@
 \NewDocumentCommand { \SetPitonStyle } { O { } m } 
   { 
     \str_set:Nx \l_@@_SetPitonStyle_option_str { \str_lowercase:n { #1 } }
-    \str_if_eq:VnT \l_@@_SetPitonStyle_option_str { current-language }
+    \str_if_eq:onT \l_@@_SetPitonStyle_option_str { current-language }
       { \str_set_eq:NN \l_@@_SetPitonStyle_option_str \l_@@_language_str }
     \keys_set:nn { piton / Styles } { #2 } 
     \str_clear:N \l_@@_SetPitonStyle_option_str 
@@ -4253,6 +4331,7 @@
 %
 % \bigskip
 % \subsubsection{Highlighting some identifiers}
+%
 % 
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_identifier:n #1
@@ -4471,7 +4550,7 @@
 %   \begin{macrocode}
 \@@_msg_new:nn { syntax~error }
   {
-    Your~code~is~not~syntactically~correct.\\
+    Your~code~\l_@@_language_str\ is~not~syntactically~correct.\\
     It~won't~be~printed~in~the~PDF~file.
   }
 %    \end{macrocode}
@@ -4555,7 +4634,8 @@
     show-spaces-in-strings,~
     splittable,~
     tabs-auto-gobble,~
-    tab-size~and~width.
+    tab-size,~width~
+    and~write.
   }
 %    \end{macrocode}
 %
@@ -5891,7 +5971,7 @@
 local QuotedStringBis = 
   WithStyle ( 'String.Long' ,
       (  
-        VisualSpace
+        Space
         +
         Q ( ( 1 - S " \r" ) ^ 1 ) 
         +  
@@ -6108,8 +6188,16 @@
 %    \end{macrocode}
 %
 % \bigskip
-% \subsubsection{The LPEG language C}
+% \subsubsection{The LPEG for the language C}
 % 
+%    \begin{macrocode}
+local Delim = Q ( S "{[()]}" )
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+local Punct = Q ( S ",:;!" )
+%    \end{macrocode}
+%
 % \bigskip
 % Some strings of length 2 are explicit because we want the corresponding
 % ligatures available in some fonts such as \emph{Fira Code} to be active.
@@ -6153,6 +6241,7 @@
 local DefFunction = 
   Type 
   * Space 
+  * Q ( "*" ) ^ -1 
   * K ( 'Name.Function.Internal' , identifier ) 
   * SkipSpace 
   * # P "("
@@ -7011,6 +7100,11 @@
        end
   end
   piton.Parse(language,gobble(n,code))
+  if piton.write ~= ''
+  then local file = assert(io.open(piton.write,piton.write_mode))
+       file:write(code)
+       file:close()
+  end
 end 
 %    \end{macrocode}
 %
@@ -7132,6 +7226,10 @@
 %
 % \verb|https://github.com/fpantigny/piton|
 %
+% \subsection*{Changes between versions 2.2 and 2.3}
+%
+% New key |write|.
+% 
 % \subsection*{Changes between versions 2.1 and 2.2}
 %
 % New key |path| for |\PitonOptions|.

Modified: trunk/Master/texmf-dist/source/lualatex/piton/piton.ins
===================================================================
--- trunk/Master/texmf-dist/source/lualatex/piton/piton.ins	2024-01-06 21:34:02 UTC (rev 69319)
+++ trunk/Master/texmf-dist/source/lualatex/piton/piton.ins	2024-01-06 21:34:11 UTC (rev 69320)
@@ -1,5 +1,5 @@
 %%
-%% Copyright (C) 2022-2023 by F. Pantigny
+%% Copyright (C) 2022-2024 by F. Pantigny
 %%
 %%
 %% This file may be distributed and/or modified under the
@@ -14,11 +14,29 @@
 %%
 \input l3docstrip.tex
 \keepsilent
-\usedir{tex/latex/cascade}
+\usedir{tex/lualatex/piton}
 \preamble
+-------------------------------------------
+Copyright (C) 2022-2024 by F. Pantigny
 
-Copyright (C) 2022-2023 by F. Pantigny
+This file may be distributed and/or modified under the
+conditions of the LaTeX Project Public License, either
+version 1.3 of this license or (at your option) any later
+version.  The latest version of this license is in:
 
+     http://www.latex-project.org/lppl.txt
+
+and version 1.3 or later is part of all distributions of
+LaTeX version 2005/12/01 or later.
+-------------------------------------------
+
+\endpreamble
+\generate{\file{piton.sty}{\from{piton.dtx}{STY}}}
+\def\MetaPrefix{--}
+\preamble
+-------------------------------------------
+Copyright (C) 2022-2024 by F. Pantigny
+
 This file may be distributed and/or modified under the
 conditions of the LaTeX Project Public License, either
 version 1.3 of this license or (at your option) any later
@@ -28,10 +46,10 @@
 
 and version 1.3 or later is part of all distributions of
 LaTeX version 2005/12/01 or later.
+-------------------------------------------
 
+This file is part of the LuaLaTeX package 'piton'.
 \endpreamble
-\generate{\file{piton.sty}{\from{piton.dtx}{STY}}}
-\nopreamble
 \nopostamble
 \generate{\file{piton.lua}{\from{piton.dtx}{LUA}}}
 \Msg{*********************************************************}

Modified: trunk/Master/texmf-dist/tex/lualatex/piton/piton.lua
===================================================================
--- trunk/Master/texmf-dist/tex/lualatex/piton/piton.lua	2024-01-06 21:34:02 UTC (rev 69319)
+++ trunk/Master/texmf-dist/tex/lualatex/piton/piton.lua	2024-01-06 21:34:11 UTC (rev 69320)
@@ -1,3 +1,26 @@
+--
+-- This is file `piton.lua',
+-- generated with the docstrip utility.
+--
+-- The original source files were:
+--
+-- piton.dtx  (with options: `LUA')
+-- -------------------------------------------
+-- Copyright (C) 2022-2024 by F. Pantigny
+-- 
+-- This file may be distributed and/or modified under the
+-- conditions of the LaTeX Project Public License, either
+-- version 1.3 of this license or (at your option) any later
+-- version.  The latest version of this license is in:
+-- 
+--      http://www.latex-project.org/lppl.txt
+-- 
+-- and version 1.3 or later is part of all distributions of
+-- LaTeX version 2005/12/01 or later.
+-- -------------------------------------------
+-- 
+-- This file is part of the LuaLaTeX package 'piton'.
+-- Version 2.3 of 2024/01/06
 
 
 if piton.comment_latex == nil then piton.comment_latex = ">" end
@@ -684,7 +707,7 @@
 local QuotedStringBis =
   WithStyle ( 'String.Long' ,
       (
-        VisualSpace
+        Space
         +
         Q ( ( 1 - S " \r" ) ^ 1 )
         +
@@ -830,6 +853,8 @@
        * Lc ( '\\__piton_end_line:' )
      )
 languages['ocaml'] = ocaml
+local Delim = Q ( S "{[()]}" )
+local Punct = Q ( S ",:;!" )
 local identifier = letter * alphanum ^ 0
 
 local Operator =
@@ -869,6 +894,7 @@
 local DefFunction =
   Type
   * Space
+  * Q ( "*" ) ^ -1
   * K ( 'Name.Function.Internal' , identifier )
   * SkipSpace
   * # P "("
@@ -1385,6 +1411,11 @@
        end
   end
   piton.Parse(language,gobble(n,code))
+  if piton.write ~= ''
+  then local file = assert(io.open(piton.write,piton.write_mode))
+       file:write(code)
+       file:close()
+  end
 end
 function piton.CountLines(code)
   local count = 0

Modified: trunk/Master/texmf-dist/tex/lualatex/piton/piton.sty
===================================================================
--- trunk/Master/texmf-dist/tex/lualatex/piton/piton.sty	2024-01-06 21:34:02 UTC (rev 69319)
+++ trunk/Master/texmf-dist/tex/lualatex/piton/piton.sty	2024-01-06 21:34:11 UTC (rev 69320)
@@ -5,9 +5,9 @@
 %% The original source files were:
 %%
 %% piton.dtx  (with options: `STY')
+%% -------------------------------------------
+%% Copyright (C) 2022-2024 by F. Pantigny
 %% 
-%% Copyright (C) 2022-2023 by F. Pantigny
-%% 
 %% This file may be distributed and/or modified under the
 %% conditions of the LaTeX Project Public License, either
 %% version 1.3 of this license or (at your option) any later
@@ -17,9 +17,10 @@
 %% 
 %% and version 1.3 or later is part of all distributions of
 %% LaTeX version 2005/12/01 or later.
+%% -------------------------------------------
 %% 
-\def\myfileversion{2.2b}
-\def\myfiledate{2023/11/03}
+\def\PitonFileVersion{2.3}
+\def\PitonFileDate{2024/01/06}
 
 
 \NeedsTeXFormat{LaTeX2e}
@@ -26,8 +27,8 @@
 \RequirePackage{l3keys2e}
 \ProvidesExplPackage
   {piton}
-  {\myfiledate}
-  {\myfileversion}
+  {\PitonFileDate}
+  {\PitonFileVersion}
   {Highlight Python codes with LPEG on LuaLaTeX}
 \cs_new_protected:Npn \__piton_error:n { \msg_error:nn { piton } }
 \cs_new_protected:Npn \__piton_warning:n { \msg_warning:nn { piton } }
@@ -40,7 +41,7 @@
   {
     LuaLaTeX~is~mandatory.\\
     The~package~'piton'~requires~the~engine~LuaLaTeX.\\
-    \str_if_eq:VnT \c_sys_jobname_str { output }
+    \str_if_eq:onT \c_sys_jobname_str { output }
       { If~you~use~Overleaf,~you~can~switch~to~LuaLaTeX~in~the~"Menu". \\}
     If~you~go~on,~the~package~'piton'~won't~be~loaded.
   }
@@ -49,7 +50,7 @@
 \__piton_msg_new:nn { piton.lua~not~found }
   {
     The~file~'piton.lua'~can't~be~found.\\
-    The package~'piton'~won't~be~loaded.
+    The~package~'piton'~won't~be~loaded.
   }
 \file_if_exist:nF { piton.lua }
   { \msg_critical:nn { piton } { piton.lua~not~found } }
@@ -66,19 +67,11 @@
     beamer .bool_gset:N = \g__piton_beamer_bool ,
     beamer .default:n = true ,
 
-    escape-inside .code:n = \__piton_error:n { key-escape-inside-deleted } ,
     math-comments .code:n = \__piton_error:n { moved~to~preamble } ,
     comment-latex .code:n = \__piton_error:n { moved~to~preamble } ,
 
     unknown .code:n = \__piton_error:n { Unknown~key~for~package }
   }
-\__piton_msg_new:nn { key-escape-inside-deleted }
-  {
-    The~key~'escape-inside'~has~been~deleted.~You~must~now~use~
-    the~keys~'begin-escape'~and~'end-escape'~in~
-    \token_to_str:N \PitonOptions.\\
-    That~key~will~be~ignored.
-  }
 \__piton_msg_new:nn { moved~to~preamble }
   {
     The~key~'\l_keys_key_str'~*must*~now~be~used~with~
@@ -169,6 +162,8 @@
 \str_new:N \l__piton_end_range_str
 \str_new:N \l__piton_file_name_str
 \int_new:N \g__piton_env_int
+\str_new:N \l__piton_write_str
+\seq_new:N \g__piton_write_seq
 \bool_new:N \l__piton_show_spaces_bool
 \bool_new:N \l__piton_break_lines_in_Piton_bool
 \bool_new:N \l__piton_indent_broken_lines_bool
@@ -241,8 +236,11 @@
   {
     \tl_set:Nn \l_tmpa_tl { #1 }
     \bool_if:NTF \l__piton_show_spaces_bool
-      { \regex_replace_all:nnN { \x20 } { ␣ } \l_tmpa_tl } % U+2423
       {
+        \tl_set:Nn \l__piton_space_tl { ␣ }
+        \regex_replace_all:nnN { \x20 } { ␣ } \l_tmpa_tl % U+2423
+      }
+      {
         \bool_if:NT \l__piton_break_lines_in_Piton_bool
           {
             \regex_replace_all:nnN
@@ -347,11 +345,10 @@
       {
         \tl_set:Nn \l_tmpa_tl { #1 }
         \tl_set_rescan:Nno \l_tmpa_tl { } \l_tmpa_tl
-        \exp_last_unbraced:NV \color \l_tmpa_tl
+        \exp_last_unbraced:No \color \l_tmpa_tl
       }
       { \color { #1 } }
   }
-\cs_generate_variant:Nn \__piton_color:n { V }
 \cs_new_protected:Npn \__piton_newline:
   {
     \int_gincr:N \g__piton_line_int
@@ -362,7 +359,7 @@
           {
             \egroup
             \bool_if:NT \g__piton_footnote_bool { \end { savenotes } }
-            \par \mode_leave_vertical: % \newline
+            \par \mode_leave_vertical:
             \bool_if:NT \g__piton_footnote_bool { \begin { savenotes } }
             \vtop \bgroup
           }
@@ -542,6 +539,9 @@
         } ,
     width .value_required:n  = true ,
 
+    write .str_set:N = \l__piton_write_str ,
+    write .value_required:n = true ,
+
     left-margin      .code:n =
       \str_if_eq:nnTF { #1 } { auto }
         {
@@ -649,7 +649,7 @@
         \iow_now:Nx \@mainaux
           {
             \tl_gset:cn { c__piton_ \int_use:N \g__piton_env_int _ tl }
-              { \exp_not:V \g__piton_aux_tl }
+              { \exp_not:o \g__piton_aux_tl }
           }
         \iow_now:Nn \@mainaux { \ExplSyntaxOff }
       }
@@ -785,7 +785,6 @@
     \int_gzero:N \g__piton_line_int
     \dim_zero:N \parindent
     \dim_zero:N \lineskip
-    \dim_zero:N \parindent
     \cs_set_eq:NN \label \__piton_label:n
   }
 \cs_new_protected:Npn \__piton_compute_left_margin:nn #1 #2
@@ -812,7 +811,7 @@
            { \box_wd:N \l_tmpa_box + \l__piton_numbers_sep_dim + 0.1 em }
        }
   }
-\cs_generate_variant:Nn \__piton_compute_left_margin:nn { n V }
+\cs_generate_variant:Nn \__piton_compute_left_margin:nn { n o }
 \cs_new_protected:Npn \__piton_compute_width:
   {
     \dim_compare:nNnTF \l__piton_line_width_dim = \c_zero_dim
@@ -855,8 +854,18 @@
             \__piton_compute_left_margin:nn { CountNonEmptyLines } { ##1 }
             \__piton_compute_width:
             \ttfamily
-            \dim_zero:N \parskip % added 2023/07/06
+            \dim_zero:N \parskip
             \bool_if:NT \g__piton_footnote_bool { \begin { savenotes } }
+            \lua_now:e { piton.write = "\l__piton_write_str" }
+            \str_if_empty:NF \l__piton_write_str
+              {
+                \seq_if_in:NVTF \g__piton_write_seq \l__piton_write_str
+                  { \lua_now:n { piton.write_mode = "a" } }
+                  {
+                    \lua_now:n { piton.write_mode = "w" }
+                    \seq_gput_left:NV \g__piton_write_seq \l__piton_write_str
+                  }
+              }
             \vtop \bgroup
             \lua_now:e
               {
@@ -880,7 +889,7 @@
         \cs_set_eq:NN \PitonOptions \__piton_fake_PitonOptions
         #3
         \__piton_pre_env:
-        \int_compare:nNnT \l__piton_number_lines_start_int > 0
+        \int_compare:nNnT \l__piton_number_lines_start_int > \c_zero_int
           { \int_gset:Nn \g__piton_visual_line_int { \l__piton_number_lines_start_int - 1 } }
         \group_begin:
         \tl_map_function:nN
@@ -941,7 +950,7 @@
       \bool_if:nTF
         {
           (
-            \int_compare_p:nNn \l__piton_first_line_int > 0
+            \int_compare_p:nNn \l__piton_first_line_int > \c_zero_int
             || \int_compare_p:nNn \l__piton_last_line_int < \c_max_int
           )
           && ! \str_if_empty_p:N \l__piton_begin_range_str
@@ -967,16 +976,16 @@
       \__piton_pre_env:
       \bool_if:NT \l__piton_line_numbers_absolute_bool
         { \int_gset:Nn \g__piton_visual_line_int { \l__piton_first_line_int - 1 } }
-      \int_compare:nNnT \l__piton_number_lines_start_int > 0
+      \int_compare:nNnT \l__piton_number_lines_start_int > \c_zero_int
         {
           \int_gset:Nn \g__piton_visual_line_int
             { \l__piton_number_lines_start_int - 1 }
         }
-      \int_compare:nNnT \g__piton_visual_line_int < 0
-        { \int_gzero:N \g__piton_visual_line_int  }
+      \int_compare:nNnT \g__piton_visual_line_int < \c_zero_int
+        { \int_gzero:N \g__piton_visual_line_int }
       \mode_if_vertical:TF \mode_leave_vertical: \newline
       \lua_now:e { piton.CountLinesFile('\l__piton_file_name_str') }
-      \__piton_compute_left_margin:nV { CountNonEmptyLinesFile } \l__piton_file_name_str
+      \__piton_compute_left_margin:no { CountNonEmptyLinesFile } \l__piton_file_name_str
       \__piton_compute_width:
       \ttfamily
       \bool_if:NT \g__piton_footnote_bool { \begin { savenotes } }
@@ -1017,7 +1026,7 @@
 \NewDocumentCommand { \SetPitonStyle } { O { } m }
   {
     \str_set:Nx \l__piton_SetPitonStyle_option_str { \str_lowercase:n { #1 } }
-    \str_if_eq:VnT \l__piton_SetPitonStyle_option_str { current-language }
+    \str_if_eq:onT \l__piton_SetPitonStyle_option_str { current-language }
       { \str_set_eq:NN \l__piton_SetPitonStyle_option_str \l__piton_language_str }
     \keys_set:nn { piton / Styles } { #2 }
     \str_clear:N \l__piton_SetPitonStyle_option_str
@@ -1246,7 +1255,7 @@
   }
 \__piton_msg_new:nn { syntax~error }
   {
-    Your~code~is~not~syntactically~correct.\\
+    Your~code~\l__piton_language_str\ is~not~syntactically~correct.\\
     It~won't~be~printed~in~the~PDF~file.
   }
 \NewDocumentCommand \PitonSyntaxError { }
@@ -1309,7 +1318,8 @@
     show-spaces-in-strings,~
     splittable,~
     tabs-auto-gobble,~
-    tab-size~and~width.
+    tab-size,~width~
+    and~write.
   }
 \__piton_msg_new:nn { label~with~lines~numbers }
   {



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