texlive[70024] Master/texmf-dist: piton (20feb24)

commits+karl at tug.org commits+karl at tug.org
Tue Feb 20 22:06:38 CET 2024


Revision: 70024
          https://tug.org/svn/texlive?view=revision&revision=70024
Author:   karl
Date:     2024-02-20 22:06:38 +0100 (Tue, 20 Feb 2024)
Log Message:
-----------
piton (20feb24)

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/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-02-20 21:06:29 UTC (rev 70023)
+++ trunk/Master/texmf-dist/doc/lualatex/piton/piton-french.tex	2024-02-20 21:06:38 UTC (rev 70024)
@@ -222,8 +222,7 @@
 Il est possible de n'insérer qu'une partie du fichier : cf. partie~\ref{part-of-a-file},
 p.~\pageref{part-of-a-file}.
 
-\colorbox{yellow!50}{\textbf{Nouveau 2.2}}\enskip La clé |path| de la commande |\PitonOptions| permet de spécifier
-un chemin pour le fichier à inclure. 
+La clé |path| de la commande |\PitonOptions| permet de spécifier un chemin pour le fichier à inclure. 
 \end{itemize}
 
 
@@ -356,26 +355,29 @@
 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{path-write} \colorbox{yellow!50}{\bfseries Nouveau 2.5}\enskip La clé \Definition{path-write} indique
+un chemin où seront écrits les fichiers écrits par l'emploi de la clé |write| précédente.
+
 \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|.
+environnements |{Piton}| et dans les listings produits par la commande |\PitonInputFile|.
 
 Cette clé propose en fait plusieurs sous-clés.
 \begin{itemize}
 \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 langage Python, les lignes vides des \emph{docstrings} sont prises en compte.}
+ce qui concerne la numérotation des lignes (si la clé |/absolute| est active, la clé |/skip-empty-lines|
+n'a pas d'effet dans |\PitonInputFile|). La valeur initiale de cette clé est |true| (et non
+|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
-valeur initiale de cette clé est \verb|true|.
+soient affichés. Si la clé |/skip-empty-lines| est active, la clé |/label-empty-lines| est sans effet. La
+valeur initiale de cette clé est |true|.
 
-\item La clé \Definition{line-numbers/absolute} demande, pour les listings générés par \verb|\PitonInputFile|, que les numéros de
+\item La clé \Definition{line-numbers/absolute} demande, pour les listings générés par |\PitonInputFile|, que les numéros de
 lignes affichés soient absolus (c'est-à-dire ceux du fichier d'origine). Elle n'a d'intérêt que si on n'insère qu'une
-partie du fichier (cf. part~\ref{part-of-a-file}, p.~\pageref{part-of-a-file}). La clé |/absolute| est sans effet dans les environnements \verb|{Piton}|.
+partie du fichier (cf. part~\ref{part-of-a-file}, p.~\pageref{part-of-a-file}). La clé |/absolute| est sans effet dans les environnements |{Piton}|.
 
 \item La clé \Definition{line-numbers/resume} reprend la numérotation là où elle avait été laissée au dernier listing. En fait,
-la clé \verb|line-numbers/resume| a un alias, qui est \verb|resume| tout court. 
+la clé |line-numbers/resume| a un alias, qui est |resume| tout court. 
 
 \item La clé \Definition{line-numbers/start} impose que la numérotation commence à ce numéro. 
 
@@ -581,10 +583,9 @@
 tous les commentaires (que ce soit en Python, en C, en OCaml, etc.) seront composés en gris.
 
 \bigskip
-\colorbox{yellow!50}{\textbf{Nouveau 2.2}}\enskip Mais il est aussi possible de définir un style localement pour un
-certain langage informatique en passant le nom du langage en argument optionnel (entre crochets) de la commande
-|\SetPitonStyle|.\footnote{On rappelle que, dans \pkg{piton}, les noms des langages informatiques ne sont pas
-  sensibles à la casse.}
+Mais il est aussi possible de définir un style localement pour un certain langage informatique en passant le nom du
+langage en argument optionnel (entre crochets) de la commande |\SetPitonStyle|.\footnote{On rappelle que, dans
+  \pkg{piton}, les noms des langages informatiques ne sont pas sensibles à la casse.}
 
 \medskip
 Par exemple, avec la commande 
@@ -678,7 +679,7 @@
 Par exemple, avec l'instruction suivante, un nouvel environnement |{Python}| sera défini avec le même comportement
 que l'environnement |{Piton}|:
 
-{\color{gray}\verb|\NewPitonEnvironment{Python}{O{}}{\PitonOptions{#1}}{}|}
+{\color{gray}|\NewPitonEnvironment{Python}{O{}}{\PitonOptions{#1}}{}|}
 
 \bigskip
 Si on souhaite un environnement |{Python}| qui compose le code inclus dans une boîte de \pkg{tcolorbox}, on peut
@@ -1078,7 +1079,7 @@
 
 Par exemple, avec le réglage suivant (fait dans le préambule du document) :
 
-\verb|\PitonOptions{comment-latex = LaTeX}|
+|\PitonOptions{comment-latex = LaTeX}|
 
 les commentaires LaTeX commenceront par~|#LaTeX|.
 
@@ -1155,7 +1156,7 @@
 \item Cette clé |detected-commands| ne peut être utilisée que dans le préambule du document.
 
 \item Les noms de commandes LaTeX doivent apparaître sans la contre-oblique 
-(ex. : |detected-commands = { emph , bfseries }|). 
+(ex. : |detected-commands = { emph , textbf }|). 
 
 \item Ces commandes doivent être des commandes LaTeX à un seul argument obligatoire entre accolades (et ces
 accolages doivent être explicites).
@@ -1262,12 +1263,12 @@
 particulier composé dans un groupe TeX et ne pourra donc pas servir à changer le formatage d'autres unités lexicales.
 
 \medskip
-Dans les langages où le caractère \verb|$| ne joue pas un rôle syntaxique important, on peut assez naturellement
-vouloir activer le mécanisme «|escape-math|» avec le caractère \verb|$|:
+Dans les langages où le caractère |$| ne joue pas un rôle syntaxique important, on peut assez naturellement
+vouloir activer le mécanisme «|escape-math|» avec le caractère |$|:
 \begin{Verbatim}
 \PitonOptions{~emphase#begin-escape-math=$,end-escape-math=$@}
 \end{Verbatim}
-Remarquer que le caractère \verb|$| ne doit \emph{pas} être protégé par une contre-oblique.
+Remarquer que le caractère |$| ne doit \emph{pas} être protégé par une contre-oblique.
 
 \bigskip
 Néanmoins, il est sans doute plus prudent d'utiliser |\(| et |\)|.
@@ -1965,7 +1966,8 @@
        tex.print(pyluatex.get_last_output())
        tex.print("\\end{Piton}")
        tex.print("") 
-     }
+     }% 
+   \ignorespacesafterend
  }
 \end{Verbatim}
 
@@ -2005,7 +2007,8 @@
        tex.print(pyluatex.get_last_output())
        tex.print("\\end{Piton}")
        tex.print("") 
-     }
+     }%
+   \ignorespacesafterend
  }
 
 
@@ -2121,7 +2124,7 @@
   Interpol.Inside & le contenu des interpolations dans les f-strings (c'est-à-dire les éléments qui se trouvent entre
                     \texttt{\{} et~\texttt{\}} ; si l'utilisateur n'a pas fixé ce style, ces éléments sont analysés et formatés par \pkg{piton}
                     au même titre que le reste du code. \\
-                    Operator & les opérateurs suivants : \texttt{!= == << >> - \~{} + / * \% = < > \& .} \verb+|+ \verb|@| \\
+                    Operator & les opérateurs suivants : \texttt{!= == << >> - \~{} + / * \% = < > \& .} \verb+|+ |@| \\
   Operator.Word & les opérateurs suivants : |in|, |is|, |and|, |or| et |not| \\
   Name.Builtin & la plupart des fonctions prédéfinies par Python \\
   Name.Decorator & les décorateurs (instructions débutant par \verb|@|) \\
@@ -2239,12 +2242,12 @@
 String.Long & les chaînes de caractères (entre \texttt{"}) \\
 String.Interpol &  les éléments \texttt{\%d}, \texttt{\%i}, \texttt{\%f}, \texttt{\%c}, etc. dans les chaînes de
                   caractères ; ce style hérite du style |String.Long| \\
-Operator & les opérateurs suivants : \texttt{!= == << >> - \~{} + / * \% = < > \& .} \verb+|+ \verb|@| \\
+Operator & les opérateurs suivants : \texttt{!= == << >> - \~{} + / * \% = < > \& .} \verb+|+ |@| \\
 Name.Type & les types prédéfinis suivants :
   |bool|, |char|, |char16_t|, |char32_t|, |double|, |float|, |int|, |int8_t|, |int16_t|, |int32_t|, 
   |int64_t|, |long|, |short|, |signed|, |unsigned|, |void| et |wchar_t| \\ 
 Name.Builtin & les fonctions prédéfinies suivantes : |printf|, |scanf|, |malloc|, |sizeof| et  |alignof|  \\
-  Name.Class & le nom des classes au moment de leur définition, c'est-à-dire après le mot-clé \verb|class| \\
+  Name.Class & le nom des classes au moment de leur définition, c'est-à-dire après le mot-clé |class| \\
 Name.Function & le nom des fonctions définies par l'utilisateur \emph{au moment de leur définition} \\
 UserFunction & le nom des fonctions précédemment définies par l'utilisateur (la valeur initiale de ce paramètre est
                vide et ces éléments sont affichés en noir --- ou plutôt dans la couleur courante) \\

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-02-20 21:06:29 UTC (rev 70023)
+++ trunk/Master/texmf-dist/source/lualatex/piton/piton.dtx	2024-02-20 21:06:38 UTC (rev 70024)
@@ -72,12 +72,12 @@
 % \iffalse
 %<*STY>
 % \fi
-\def\PitonFileVersion{2.4}
-\def\PitonFileDate{2024/01/15}
+\def\PitonFileVersion{2.5}
+\def\PitonFileDate{2024/02/20}
 % \iffalse
 %</STY>
 %<*LUA>
--- Version 2.4 of 2024/01/15
+-- Version 2.5 of 2024/02/20
 %</LUA>
 %\fi
 %
@@ -213,9 +213,8 @@
 % It's possible to insert only a part of the file: cf.
 % part~\ref{part-of-a-file}, p.~\pageref{part-of-a-file}. 
 %
-% \colorbox{yellow!50}{\textbf{New 2.2}}\enskip The key |path| of the command
-% |\PitonOptions| specifies a path where the files included by |\PitonInputFile|
-% will be searched. 
+% The key |path| of the command |\PitonOptions| specifies a path where the files
+% included by |\PitonInputFile| will be searched.
 % \end{itemize}
 %
 % \subsection{The syntax of the command \textbackslash piton}
@@ -331,8 +330,8 @@
 % considered (that key is case-insensitive). Five values are allowed :
 % |Python|, |OCaml|, |C|, |SQL| and |minimal|. The initial value is |Python|.
 % 
-% \item \index{path} The key \Definition{path} specifies a path where the files included by
-% |\PitonInputFile| will be searched.
+% \item \index{path} The key \Definition{path} specifies a path where the files
+% included by |\PitonInputFile| will be searched.
 % 
 % \item  \index{gobble} The key \Definition{gobble} takes in as value a
 % positive integer~$n$: the first $n$ characters are discarded (before the
@@ -360,6 +359,10 @@
 % 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{path-write}\colorbox{yellow!50}{\bfseries New 2.5}\enskip The key
+% \Definition{path-write} specifies a path where the files written by the key
+% |write| will be written.
+%
 % \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|.
@@ -610,11 +613,11 @@
 % informatic language they use (Python, C, OCaml, etc.).
 % 
 % \bigskip
-% \colorbox{yellow!50}{\textbf{New 2.2}}\enskip But it's also possible to define
-% a style locally for a given informatic langage by providing the name of that
-% language as optional argument (between square brackets) to the command
-% |\SetPitonStyle|.\footnote{We recall, that, in the package \pkg{piton}, the
-% names of the informatic languages are case-insensitive.}
+% But it's also possible to define a style locally for a given informatic
+% langage by providing the name of that language as optional argument (between
+% square brackets) to the command |\SetPitonStyle|.\footnote{We recall, that, in
+% the package \pkg{piton}, the names of the informatic languages are
+% case-insensitive.}
 %
 % \bigskip
 % For example, with the command
@@ -1009,7 +1012,7 @@
 % identifiers.
 %
 % \smallskip
-% That command takes in three arguments: one 
+% That command takes in three arguments: 
 %
 % \begin{itemize}
 % \item The optionnal argument (within square brackets) specifies the informatic
@@ -1216,7 +1219,7 @@
 % \item The key |detected-commands| must be used in the preamble of the LaTeX document.
 % 
 % \item The names of the LaTeX commands must appear without the leading
-% backslash (eg. |detected-commands = { emph, bfseries }|). 
+% backslash (eg. |detected-commands = { emph, textbf }|). 
 %
 % \item These commands must be LaTeX commands with only one (mandatory) argument
 % between braces (and these braces must be explicit). 
@@ -2509,7 +2512,7 @@
 %    \end{macrocode}
 %
 % \medskip
-% The following boolean corresponds to the key |math-comments| (only at load-time).
+% The following boolean corresponds to the key |math-comments| (available only at load-time).
 %    \begin{macrocode}
 \bool_new:N \g_@@_math_comments_bool
 %    \end{macrocode}
@@ -2681,9 +2684,19 @@
 %    \end{macrocode}
 % 
 % \medskip
+% The following parameter corresponds to the key |path| (which is the path used
+% to include files by |\PitonInputFile|).
 %    \begin{macrocode}
 \str_new:N \l_@@_path_str
 %    \end{macrocode}
+%
+% \medskip
+% The following parameter corresponds to the key |path-write| (which is the path
+% used when writing files from listings inserted in the environments of
+% \pkg{piton} by use of the key |write|).
+%    \begin{macrocode}
+\str_new:N \l_@@_path_write_str
+%    \end{macrocode}
 % 
 % \medskip
 % In order to have a better control over the keys.
@@ -3417,7 +3430,7 @@
     comment-latex .value_required:n = true ,
     comment-latex .usage:n = preamble ,
 
-    math-comments .bool_set:N = \g_@@_math_comments_bool ,
+    math-comments .bool_gset:N = \g_@@_math_comments_bool ,
     math-comments .default:n  = true ,
     math-comments .usage:n = preamble , 
 %    \end{macrocode}
@@ -3430,6 +3443,8 @@
     language         .value_required:n  = true ,
     path             .str_set:N         = \l_@@_path_str ,
     path             .value_required:n  = true , 
+    path-write       .str_set:N         = \l_@@_path_write_str ,
+    path-write       .value_required:n  = true , 
     gobble           .int_set:N         = \l_@@_gobble_int , 
     gobble           .value_required:n  = true ,
     auto-gobble      .code:n            = \int_set:Nn \l_@@_gobble_int { -1 } , 
@@ -3958,7 +3973,12 @@
 % 
 % Now, the key |write|.
 %    \begin{macrocode}
-            \lua_now:e { piton.write = "\l_@@_write_str" } 
+            \str_if_empty:NTF \l_@@_path_write_str
+              { \lua_now:e { piton.write = "\l_@@_write_str" } }
+              { 
+                \lua_now:e 
+                 { piton.write = "\l_@@_path_write_str / \l_@@_write_str" } 
+              } 
             \str_if_empty:NF \l_@@_write_str
               { 
                 \seq_if_in:NVTF \g_@@_write_seq \l_@@_write_str 
@@ -3968,7 +3988,7 @@
                     \seq_gput_left:NV \g_@@_write_seq \l_@@_write_str
                   }
               }  
-            \vtop \bgroup 
+            \vbox \bgroup 
             \lua_now:e 
               { 
                 piton.GobbleParse
@@ -3980,7 +4000,7 @@
               } 
               { ##1 }
             \vspace { 2.5 pt } 
-            \egroup 
+            \egroup
             \bool_if:NT \g_@@_footnote_bool { \end { savenotes } } 
 %    \end{macrocode}
 % If the user has used the key |width| with the special value~|min|, we write on
@@ -4234,7 +4254,7 @@
 % \medskip
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_math_scantokens:n #1 
-  { \normalfont \scantextokens { $#1$ } }
+  { \normalfont \scantextokens { \begin{math} #1 \end{math} } }
 %    \end{macrocode}
 % 
 % \medskip
@@ -4294,12 +4314,10 @@
 \keys_define:nn { piton / Styles }
   {
     String          .meta:n = { String.Long = #1 , String.Short = #1 } ,
-    Comment.Math    .tl_set:c = pitonStyle Comment.Math , 
-    Comment.Math    .default:n = \@@_math_scantokens:n ,
-    Comment.Math    .initial:n = ,
-    ParseAgain      .tl_set:c = pitonStyle ParseAgain , 
+    Comment.Math    .tl_set:c = pitonStyle _ Comment.Math  ,
+    ParseAgain      .tl_set:c = pitonStyle _ ParseAgain , 
     ParseAgain      .value_required:n = true ,
-    ParseAgain.noCR .tl_set:c = pitonStyle ParseAgain.noCR , 
+    ParseAgain.noCR .tl_set:c = pitonStyle _ ParseAgain.noCR , 
     ParseAgain.noCR .value_required:n = true ,
     unknown         .code:n = 
       \@@_error:n { Unknown~key~for~SetPitonStyle }
@@ -4377,7 +4395,11 @@
 % However, maybe we will document in a future version the possibility to write
 % change the style \emph{locally} in a document)].
 %    \begin{macrocode}
-\bool_if:NT \g_@@_math_comments_bool { \SetPitonStyle { Comment.Math } }
+\AtBeginDocument 
+  { 
+    \bool_if:NT \g_@@_math_comments_bool 
+       { \SetPitonStyle { Comment.Math = \@@_math_scantokens:n } } 
+  }
 %    \end{macrocode}
 % 
 % \bigskip
@@ -4638,7 +4660,7 @@
 %   \begin{macrocode}
 \@@_msg_new:nn { syntax~error }
   {
-    Your~code~\l_piton_language_str\ is~not~syntactically~correct.\\
+    Your~code~of~the~language~"\l_piton_language_str"~is~not~syntactically~correct.\\ 
     It~won't~be~printed~in~the~PDF~file.
   }
 %    \end{macrocode}
@@ -4715,7 +4737,9 @@
     left-margin,~
     line-numbers/,~
     marker/,~
+    math-comments,~
     path,~
+    path-write,~
     prompt-background-color,~
     resume,~
     show-spaces,~
@@ -4722,8 +4746,8 @@
     show-spaces-in-strings,~
     splittable,~
     tabs-auto-gobble,~
-    tab-size,~width~
-    and~write.
+    tab-size,~
+    width~and~write.
   }
 %    \end{macrocode}
 %
@@ -4784,10 +4808,13 @@
 \directlua 
   {
     lpeg.locale(lpeg)
-    local P , alpha , C , Cf, space = lpeg.P , lpeg.alpha , lpeg.C , lpeg.Cf , lpeg.space
-    local One_P = space ^ 0 
-                  * C ( alpha ^ 1 ) / ( function (s) return P ( string.char(92) .. s ) end ) 
-                  * space ^ 0 
+    local P , alpha , C , Cf, space 
+      = lpeg.P , lpeg.alpha , lpeg.C , lpeg.Cf , lpeg.space 
+    local S = lpeg.S 
+    local One_P 
+      = space ^ 0 
+        * C ( alpha ^ 1 ) / ( function (s) return P ( string.char(92) .. s ) end ) 
+        * space ^ 0 
     function piton.addListCommands( key_value )
        piton.ListCommands =  
          piton.ListCommands + 
@@ -5014,10 +5041,10 @@
 % corresponding to the keys |begin-escape| and |end-escape|. 
 %    \begin{macrocode}
 local Word
-if piton.begin_escape ~= nil -- before : ''
+if piton.begin_escape ~= nil 
 then Word = Q ( ( ( 1 - space - P(piton.begin_escape) - P(piton.end_escape) ) 
-                   - S "'\"\r[()]" - digit ) ^ 1 )
-else Word = Q ( ( ( 1 - space ) - S "'\"\r[()]" - digit ) ^ 1 )
+                   - S "'\"\r[({})]" - digit ) ^ 1 )
+else Word = Q ( ( ( 1 - space ) - S "'\"\r[({})]" - digit ) ^ 1 )
 end
 %    \end{macrocode}
 %
@@ -5040,7 +5067,7 @@
 %
 % \bigskip
 %    \begin{macrocode}
-local Delim = Q ( S "[()]" )
+local Delim = Q ( S "[({})]" )
 %    \end{macrocode}
 % 
 % \bigskip
@@ -5911,7 +5938,7 @@
 
 local Keyword = 
   K ( 'Keyword' ,
-      P "assert" + P "as" + P "begin" + P "class" + P "constraint" + P "done" 
+      P "assert" + P "and" + P "as" + P "begin" + P "class" + P "constraint" + P "done" 
   + P "downto" + P "do" + P "else" + P "end" + P "exception" + P "external" 
   + P "for" + P "function" + P "functor" + P "fun"  + P "if" 
   + P "include" + P "inherit" + P "initializer" + P "in"  + P "lazy" + P "let" 
@@ -7029,6 +7056,8 @@
 % \subsubsection{The LPEG language Minimal}
 % 
 %    \begin{macrocode}
+local Punct = Q ( S ",:;!\\" )
+
 local CommentMath = 
   P "$" * K ( 'Comment.Math' , ( 1 - S "$\r" ) ^ 1  ) * P "$"
 
@@ -7155,6 +7184,8 @@
 
 local Identifier = K ( 'Identifier' , identifier )
 
+local Delim = Q ( S "{[()]}" )
+
 local MainMinimal = 
        EOL
      + Space 
@@ -7559,6 +7590,10 @@
 %
 % \verb|https://github.com/fpantigny/piton|
 %
+% \subsection*{Changes between versions 2.4 and 2.5}
+%
+% New key |path-write|
+%
 % \subsection*{Changes between versions 2.3 and 2.4}
 %
 % The key |identifiers| of the command |\PitonOptions| is now deprecated and

Modified: trunk/Master/texmf-dist/tex/lualatex/piton/piton.lua
===================================================================
--- trunk/Master/texmf-dist/tex/lualatex/piton/piton.lua	2024-02-20 21:06:29 UTC (rev 70023)
+++ trunk/Master/texmf-dist/tex/lualatex/piton/piton.lua	2024-02-20 21:06:38 UTC (rev 70024)
@@ -20,7 +20,7 @@
 -- -------------------------------------------
 -- 
 -- This file is part of the LuaLaTeX package 'piton'.
--- Version 2.4 of 2024/01/15
+-- Version 2.5 of 2024/02/20
 
 
 if piton.comment_latex == nil then piton.comment_latex = ">" end
@@ -91,10 +91,10 @@
       + digit^1
     )
 local Word
-if piton.begin_escape ~= nil -- before : ''
+if piton.begin_escape ~= nil
 then Word = Q ( ( ( 1 - space - P(piton.begin_escape) - P(piton.end_escape) )
-                   - S "'\"\r[()]" - digit ) ^ 1 )
-else Word = Q ( ( ( 1 - space ) - S "'\"\r[()]" - digit ) ^ 1 )
+                   - S "'\"\r[({})]" - digit ) ^ 1 )
+else Word = Q ( ( ( 1 - space ) - S "'\"\r[({})]" - digit ) ^ 1 )
 end
 local Space = ( Q " " ) ^ 1
 
@@ -104,7 +104,7 @@
 
 local Tab = P "\t" * Lc ( '\\l__piton_tab_tl' )
 local SpaceIndentation = Lc ( '\\__piton_an_indentation_space:' ) * ( Q " " )
-local Delim = Q ( S "[()]" )
+local Delim = Q ( S "[({})]" )
 local VisualSpace = space * Lc "\\l__piton_space_tl"
 local Beamer = P ( false )
 local BeamerBeginEnvironments = P ( true )
@@ -600,7 +600,7 @@
 
 local Keyword =
   K ( 'Keyword' ,
-      P "assert" + P "as" + P "begin" + P "class" + P "constraint" + P "done"
+      P "assert" + P "and" + P "as" + P "begin" + P "class" + P "constraint" + P "done"
   + P "downto" + P "do" + P "else" + P "end" + P "exception" + P "external"
   + P "for" + P "function" + P "functor" + P "fun"  + P "if"
   + P "include" + P "inherit" + P "initializer" + P "in"  + P "lazy" + P "let"
@@ -1325,6 +1325,8 @@
        * Lc '\\__piton_end_line:'
      )
 languages['sql'] = languageSQL
+local Punct = Q ( S ",:;!\\" )
+
 local CommentMath =
   P "$" * K ( 'Comment.Math' , ( 1 - S "$\r" ) ^ 1  ) * P "$"
 
@@ -1449,6 +1451,8 @@
 
 local Identifier = K ( 'Identifier' , identifier )
 
+local Delim = Q ( S "{[()]}" )
+
 local MainMinimal =
        EOL
      + Space

Modified: trunk/Master/texmf-dist/tex/lualatex/piton/piton.sty
===================================================================
--- trunk/Master/texmf-dist/tex/lualatex/piton/piton.sty	2024-02-20 21:06:29 UTC (rev 70023)
+++ trunk/Master/texmf-dist/tex/lualatex/piton/piton.sty	2024-02-20 21:06:38 UTC (rev 70024)
@@ -19,8 +19,8 @@
 %% LaTeX version 2005/12/01 or later.
 %% -------------------------------------------
 %% 
-\def\PitonFileVersion{2.4}
-\def\PitonFileDate{2024/01/15}
+\def\PitonFileVersion{2.5}
+\def\PitonFileDate{2024/02/20}
 
 
 \NeedsTeXFormat{LaTeX2e}
@@ -165,6 +165,7 @@
 \str_new:N \l_piton_language_str
 \str_set:Nn \l_piton_language_str { python }
 \str_new:N \l__piton_path_str
+\str_new:N \l__piton_path_write_str
 \bool_new:N \l__piton_in_PitonOptions_bool
 \bool_new:N \l__piton_in_PitonInputFile_bool
 \int_new:N \l__piton_nb_lines_int
@@ -511,7 +512,7 @@
     comment-latex .value_required:n = true ,
     comment-latex .usage:n = preamble ,
 
-    math-comments .bool_set:N = \g__piton_math_comments_bool ,
+    math-comments .bool_gset:N = \g__piton_math_comments_bool ,
     math-comments .default:n  = true ,
     math-comments .usage:n = preamble ,
     language         .code:n =
@@ -519,6 +520,8 @@
     language         .value_required:n  = true ,
     path             .str_set:N         = \l__piton_path_str ,
     path             .value_required:n  = true ,
+    path-write       .str_set:N         = \l__piton_path_write_str ,
+    path-write       .value_required:n  = true ,
     gobble           .int_set:N         = \l__piton_gobble_int ,
     gobble           .value_required:n  = true ,
     auto-gobble      .code:n            = \int_set:Nn \l__piton_gobble_int { -1 } ,
@@ -874,7 +877,12 @@
             \ttfamily
             \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:NTF \l__piton_path_write_str
+              { \lua_now:e { piton.write = "\l__piton_write_str" } }
+              {
+                \lua_now:e
+                 { piton.write = "\l__piton_path_write_str / \l__piton_write_str" }
+              }
             \str_if_empty:NF \l__piton_write_str
               {
                 \seq_if_in:NVTF \g__piton_write_seq \l__piton_write_str
@@ -884,7 +892,7 @@
                     \seq_gput_left:NV \g__piton_write_seq \l__piton_write_str
                   }
               }
-            \vtop \bgroup
+            \vbox \bgroup
             \lua_now:e
               {
                 piton.GobbleParse
@@ -1049,7 +1057,7 @@
     \str_clear:N \l__piton_SetPitonStyle_option_str
   }
 \cs_new_protected:Npn \__piton_math_scantokens:n #1
-  { \normalfont \scantextokens { $#1$ } }
+  { \normalfont \scantextokens { \begin{math} #1 \end{math} } }
 \clist_new:N \g__piton_style_clist
 \clist_set:Nn \g__piton_styles_clist
   {
@@ -1105,12 +1113,10 @@
 \keys_define:nn { piton / Styles }
   {
     String          .meta:n = { String.Long = #1 , String.Short = #1 } ,
-    Comment.Math    .tl_set:c = pitonStyle Comment.Math ,
-    Comment.Math    .default:n = \__piton_math_scantokens:n ,
-    Comment.Math    .initial:n = ,
-    ParseAgain      .tl_set:c = pitonStyle ParseAgain ,
+    Comment.Math    .tl_set:c = pitonStyle _ Comment.Math  ,
+    ParseAgain      .tl_set:c = pitonStyle _ ParseAgain ,
     ParseAgain      .value_required:n = true ,
-    ParseAgain.noCR .tl_set:c = pitonStyle ParseAgain.noCR ,
+    ParseAgain.noCR .tl_set:c = pitonStyle _ ParseAgain.noCR ,
     ParseAgain.noCR .value_required:n = true ,
     unknown         .code:n =
       \__piton_error:n { Unknown~key~for~SetPitonStyle }
@@ -1155,7 +1161,11 @@
     ParseAgain.noCR    = \__piton_piton_no_cr:n ,
     ParseAgain         = \__piton_piton:n ,
   }
-\bool_if:NT \g__piton_math_comments_bool { \SetPitonStyle { Comment.Math } }
+\AtBeginDocument
+  {
+    \bool_if:NT \g__piton_math_comments_bool
+       { \SetPitonStyle { Comment.Math = \__piton_math_scantokens:n } }
+  }
 \NewDocumentCommand { \SetPitonIdentifier } { o m m }
   {
     \clist_set:Nn \l_tmpa_clist { #2 }
@@ -1301,7 +1311,7 @@
   }
 \__piton_msg_new:nn { syntax~error }
   {
-    Your~code~\l_piton_language_str\ is~not~syntactically~correct.\\
+    Your~code~of~the~language~"\l_piton_language_str"~is~not~syntactically~correct.\\
     It~won't~be~printed~in~the~PDF~file.
   }
 \NewDocumentCommand \PitonSyntaxError { }
@@ -1357,7 +1367,9 @@
     left-margin,~
     line-numbers/,~
     marker/,~
+    math-comments,~
     path,~
+    path-write,~
     prompt-background-color,~
     resume,~
     show-spaces,~
@@ -1364,8 +1376,8 @@
     show-spaces-in-strings,~
     splittable,~
     tabs-auto-gobble,~
-    tab-size,~width~
-    and~write.
+    tab-size,~
+    width~and~write.
   }
 \__piton_msg_new:nn { label~with~lines~numbers }
   {
@@ -1397,10 +1409,13 @@
 \directlua
   {
     lpeg.locale(lpeg)
-    local P , alpha , C , Cf, space = lpeg.P , lpeg.alpha , lpeg.C , lpeg.Cf , lpeg.space
-    local One_P = space ^ 0
-                  * C ( alpha ^ 1 ) / ( function (s) return P ( string.char(92) .. s ) end )
-                  * space ^ 0
+    local P , alpha , C , Cf, space
+      = lpeg.P , lpeg.alpha , lpeg.C , lpeg.Cf , lpeg.space
+    local S = lpeg.S
+    local One_P
+      = space ^ 0
+        * C ( alpha ^ 1 ) / ( function (s) return P ( string.char(92) .. s ) end )
+        * space ^ 0
     function piton.addListCommands( key_value )
        piton.ListCommands =
          piton.ListCommands +



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