summaryrefslogtreecommitdiff
path: root/macros/luatex/latex/piton/piton-french.tex
diff options
context:
space:
mode:
Diffstat (limited to 'macros/luatex/latex/piton/piton-french.tex')
-rw-r--r--macros/luatex/latex/piton/piton-french.tex2094
1 files changed, 1201 insertions, 893 deletions
diff --git a/macros/luatex/latex/piton/piton-french.tex b/macros/luatex/latex/piton/piton-french.tex
index 2794f5acda..ce776dbf8a 100644
--- a/macros/luatex/latex/piton/piton-french.tex
+++ b/macros/luatex/latex/piton/piton-french.tex
@@ -15,7 +15,7 @@
end-escape = ! ,
begin-escape-math = \( ,
end-escape-math = \) ,
- detected-commands = highLight
+ detected-commands = { highLight , footnote }
}
@@ -33,8 +33,6 @@
\usepackage{booktabs}
\usepackage{tcolorbox}
\usepackage{luacolor,lua-ul}
-
-
\usepackage{caption}
% We use \MakeShortVerb of shortvrb and not \DefineShortVerb of fancyvrb
@@ -73,6 +71,8 @@
\usepackage{makeidx}
\makeindex
+\usepackage{underscore}
+
\NewDocumentCommand{\Definition}{m}
{{\setlength{\fboxsep}{1pt}\colorbox{gray!20}{\ttfamily \vphantom{gl}#1}}}
@@ -107,27 +107,34 @@ version~\PitonFileVersion\space de \pkg{piton}, à la date du~\PitonFileDate.}}
\maketitle
\begin{abstract}
-L'extension \pkg{piton} propose des outils pour composer des codes informatiques avec coloration syntaxique. Elle
-nécessite l'emploi de la LuaLaTeX car le travail principal est fait en utilisant la bibliothèque Lua LPEG.
+L'extension \pkg{piton} propose des outils pour composer des codes informatiques avec
+coloration syntaxique. Elle nécessite l'emploi de la LuaLaTeX car le travail principal est
+fait en utilisant la bibliothèque Lua LPEG.
\end{abstract}
+\bigskip
+{\color{red} Depuis la version 4.0, la syntaxe des chemins absolus et relatifs utilisés dans
+|\PitonInputFile| a été changée : cf.~partie~\ref{PitonInputFile}, p.~\pageref{PitonInputFile}.}
\section{Présentation}
-L'extension \pkg{piton} utilise la librairie Lua nommée LPEG\footnote{LPEG est une librairie de capture de motifs
- (\emph{pattern-matching} en anglais) pour Lua, écrite en C, fondée sur les PEG (\emph{parsing expression
- grammars}): \url{http://www.inf.puc-rio.br/~roberto/lpeg/}} pour «parser» des listings informatiques avec
-coloriage syntaxique. Comme elle utilise le Lua de LuaLaTeX, elle fonctionne uniquement avec |lualatex|
-(et ne va pas fonctionner avec les autres moteurs de compilation LaTeX, que ce soit |latex|, |pdflatex| ou
-|xelatex|). Elle n'utilise aucun programme extérieur et la compilation ne requiert donc pas |--shell-escape|. La
-compilation est très rapide puisque tout le travail du parseur est fait par la librairie LPEG, écrite en C.
+L'extension \pkg{piton} utilise la librairie Lua nommée LPEG\footnote{LPEG est une
+ librairie de capture de motifs (\emph{pattern-matching} en anglais) pour Lua, écrite en
+ C, fondée sur les PEG (\emph{parsing expression grammars}):
+ \url{http://www.inf.puc-rio.br/~roberto/lpeg/}} pour «parser» des listings informatiques
+avec coloriage syntaxique. Comme elle utilise le Lua de LuaLaTeX, elle fonctionne
+uniquement avec |lualatex| (et ne va pas fonctionner avec les autres moteurs de
+compilation LaTeX, que ce soit |latex|, |pdflatex| ou |xelatex|). Elle n'utilise aucun
+programme extérieur et la compilation ne requiert donc pas |--shell-escape| (sauf lorsque
+la clé |write| est utilisée). La compilation est très rapide puisque tout le travail du
+parseur est fait par la librairie LPEG, écrite en C.
-\bigskip
+\medskip
Voici un exemple de code Python composé avec l'environnement |{Piton}| proposé par \pkg{piton}.
-\bigskip
+\medskip
\begin{Piton}
from math import pi
@@ -148,41 +155,45 @@ def arctan(x,n=10:int):
return s
\end{Piton}
-\bigskip
-Les principaux concurrents de l'extension \pkg{piton} sont certainement les extensions bien connues \pkg{listings}
-et \pkg{minted}.
+\medskip
+Les principaux concurrents de l'extension \pkg{piton} sont certainement les extensions
+bien connues \pkg{listings} et \pkg{minted}.
-\bigskip
-Le nom de cette extension (\pkg{piton}) a été choisi un peu arbitrairement en référence aux pitons d'alpinisme qui
-servent à gravir les montagnes.
+
+% \medskip
+% Le nom de cette extension (\pkg{piton}) a été choisi un peu arbitrairement en référence
+% aux pitons d'alpinisme qui servent à gravir les montagnes.
\section{Installation}
-L'extension \pkg{piton} est composée de deux fichiers : |piton.sty| et |piton.lua| (le fichier LaTeX |piton.sty|
-chargé par |\usepackage| va à son tour charger le fichier |piton.lua|). Les deux fichiers doivent être présents
-dans un répertoire où LaTeX pourra les trouver, de préférence dans une arborescence |texmf|. Le mieux reste néanmoins
+L'extension \pkg{piton} est composée de deux fichiers : |piton.sty| et |piton.lua| (le
+fichier LaTeX |piton.sty| chargé par |\usepackage| va à son tour charger le fichier
+|piton.lua|). Les deux fichiers doivent être présents dans un répertoire où LaTeX pourra
+les trouver, de préférence dans une arborescence |texmf|. Le mieux reste néanmoins
d'installer \pkg{piton} avec une distribution TeX comme MiKTeX, TeX~Live ou MacTeX.
\section{Utilisation de l'extension}
-L'extension \pkg{piton} n'est utilisable qu'avec LuaLaTeX : si un autre moteur de compilation (comme |latex|,
-|pdflatex| ou |xelatex|) est utilisé, une erreur fatale sera levée.
+L'extension \pkg{piton} n'est utilisable qu'avec LuaLaTeX : si un autre moteur de
+compilation (comme |latex|, |pdflatex| ou |xelatex|) est utilisé, une erreur fatale sera
+levée.
\subsection{Choix du langage}
Les langages informatiques pris en charge par \pkg{piton} se classent en deux catégories :
\begin{itemize}
-\item les langages reconnus nativement par \pkg{piton} qui sont au nombre de cinq : Python, OCaml, SQL, C (ou
-plutôt \CC) et un langage nommé |minimal|\footnote{Le langage |minimal| peut servir pour formater du pseudo-code
- : cf.~p.~\pageref{minimal}.} ;
+\item les langages reconnus nativement par \pkg{piton} qui sont au nombre de cinq :
+Python, OCaml, SQL, C (ou plutôt \CC) et deux langages minimalistes nommés |minimal|\footnote{Le langage
+ |minimal| peut servir pour formater du pseudo-code : cf.~p.~\pageref{minimal}.} et
+|verbatim|;
\item les langages définis par l'utilisateur avec la commande |\NewPitonLanguage| décrite
-p.~\pageref{NewPitonLanguage} (les parseurs de ces langages ne pourront jamais être aussi précis que ceux proposés
-nativement par \pkg{piton)}.
+p.~\pageref{NewPitonLanguage} (les parseurs de ces langages ne pourront jamais être aussi
+précis que ceux proposés nativement par \pkg{piton)}.
\end{itemize}
@@ -191,21 +202,22 @@ Par défaut, le langage est Python.
\smallskip
\index{language (clé)}
-On peut changer de langage avec la clé |language| de |\PitonOptions| :
+On peut changer de langage avec la clé \Definition{language} de |\PitonOptions| :
\smallskip
|\PitonOptions{language = OCaml}|
\smallskip
-En fait, le nom des langages, pour \pkg{piton}, est toujours \textbf{insensible à la casse}. Dans cet exemple, on
-aurait tout aussi bien pu écrire |Ocaml| ou |ocaml|.
+En fait, le nom des langages, pour \pkg{piton}, est toujours \textbf{insensible à la
+ casse}. Dans cet exemple, on aurait tout aussi bien pu écrire |Ocaml| ou |ocaml|.
\smallskip
-Pour les développeurs, précisons que le nom du langage courant est stocké (en minuscules) dans la variable publique
-L3 nommée |\l_piton_language_str|.
+Pour les développeurs, précisons que le nom du langage courant est stocké (en minuscules)
+dans la variable publique L3 nommée |\l_piton_language_str|.
\smallskip
-Dans la suite de ce document, on parlera de Python mais les fonctionnalités s'appliquent aussi aux autres langages.
+Dans la suite de ce document, on parlera préférentiellement de Python mais les
+fonctionnalités s'appliquent aussi aux autres langages.
@@ -215,21 +227,21 @@ Dans la suite de ce document, on parlera de Python mais les fonctionnalités s'a
L'extension \pkg{piton} se charge simplement avec |\usepackage{piton}|.
\smallskip
-Si, à la fin du prambule, l'extension \pkg{xcolor} n'a pas été chargée (par l'utilisateur ou par une extension
-chargée dans le préambule), \pkg{piton} charge l'extension \pkg{xcolor} avec |\usepackage{xcolor}|, c'est-à-dire
-sans aucune option. L'extension \pkg{piton} ne charge pas d'autre extension. Elle n'utilise pas de programme
-extérieur.
+Si, à la fin du prambule, l'extension \pkg{xcolor} n'a pas été chargée (par l'utilisateur
+ou par une extension chargée dans le préambule), \pkg{piton} charge l'extension
+\pkg{xcolor} avec |\usepackage{xcolor}|, c'est-à-dire sans aucune option. L'extension
+\pkg{piton} ne charge pas d'autre extension. Elle n'utilise pas de programme extérieur.
\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|.
+L'extension \pkg{piton} fournit plusieurs outils pour composer du code informatique : les
+commandes |\piton|, l'environnement |{Piton}| et la commande |\PitonInputFile|.
\begin{itemize} \setlength{\fboxsep}{1pt}
-\item La commande \colorbox{gray!20}{\ttfamily \textbackslash piton} doit être utilisée pour composer de petits éléments de code à l'intérieur d'un
-paragraphe. Par exemple :
+\item La commande \colorbox{gray!20}{\ttfamily \textbackslash piton} doit être utilisée
+pour composer de petits éléments de code à l'intérieur d'un paragraphe. Par exemple :
{\color{gray}\verb|\piton{def carré(x): return x*x}|}\qquad
\piton{def carré(x): return x*x}
@@ -237,27 +249,16 @@ paragraphe. Par exemple :
La syntaxe et les particularités de la commande sont détaillées ci-après.
-\item L'environnement \colorbox{gray!20}{\ttfamily \{Piton\}} doit être utilisé pour composer des codes de
-plusieurs lignes. Comme cet environnement prend son argument selon un mode verbatim, il ne peut pas être utilisé
-dans l'argument d'une commande LaTeX. Pour les besoins de personnalisation, il est possible de définir de nouveaux
-environnements similaires à |{Piton}| en utilisant la commande \DefinitionCommand{NewPitonEnvironment} : cf. partie
-\ref{NewPitonEnvironment} p.~\pageref{NewPitonEnvironment}.
-
-\item La commande \colorbox{gray!20}{\ttfamily \textbackslash PitonInputFile} doit être utilisée pour insérer et
-composer un fichier externe.
-
-Il est possible de n'insérer qu'une partie de ce fichier : cf. partie~\ref{part-of-a-file},
-p.~\pageref{part-of-a-file}.
-
-La clé \Definition{path} de la commande |\PitonOptions| permet de spécifier une \emph{liste} de chemins où sera
-recherché le fichier à inclure (dans cette liste, les chemins sont séparés par des virgules).
-
-L'extension \pkg{piton} propose aussi des commandes \colorbox{gray!20}{\ttfamily\textbackslash PitonInputFileT},
-\colorbox{gray!20}{\ttfamily \textbackslash PitonInputFileF} et
-\colorbox{gray!20}{\ttfamily \textbackslash PitonInputFileTF} avec des arguments correspondant aux lettres |T| et
-|F|, arguments qui seront executés dans le
-cas où le fichier a été trouvé (lettre |T|) ou pas (lettre |F|).
+\item L'environnement \colorbox{gray!20}{\ttfamily \{Piton\}} doit être utilisé pour
+composer des codes de plusieurs lignes. Comme cet environnement prend son argument selon
+un mode verbatim, il ne peut pas être utilisé dans l'argument d'une commande LaTeX. Pour
+les besoins de personnalisation, il est possible de définir de nouveaux environnements
+similaires à |{Piton}| en utilisant la commande \DefinitionCommand{NewPitonEnvironment} :
+cf.~partie~\ref{NewPitonEnvironment} p.~\pageref{NewPitonEnvironment}.
+\item La commande \DefinitionCommand{PitonInputFile} doit être utilisée pour insérer et
+composer un fichier externe : cf.~partie~\ref{PitonInputFile},
+p.~\pageref{PitonInputFile}.
\end{itemize}
@@ -265,19 +266,23 @@ cas où le fichier a été trouvé (lettre |T|) ou pas (lettre |F|).
\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
-délimité entre deux caractères identiques (par ex. : \verb!\piton|...|!). On détaille maintenant ces deux syntaxes.
+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 délimité entre deux caractères
+identiques (par ex. : \verb!\piton|...|!).
+On détaille maintenant ces deux syntaxes.
\bigskip
\begin{itemize}
\item {\color{blue} \textsf{Syntaxe} \verb|\piton{...}|}\par\nobreak
-Quand son argument est donné entre accolades, la commande |\piton| ne prend pas son argument en mode verbatim. Les
-points suivants doivent être remarqués :
+Quand son argument est donné entre accolades, la commande |\piton| ne prend \emph{pas} son
+argument en mode verbatim. Les points suivants doivent être remarqués :
\begin{itemize}
-\item plusieurs espaces successives sont remplacées par une unique espace, ainsi que les retours à la ligne
+\item plusieurs espaces successives sont remplacées par une unique espace, ainsi que les
+retours à la ligne
{\color{cyan} mais la commande |\|␣ est fournie pour forcer l'insertion d'une espace} ;
@@ -287,11 +292,12 @@ points suivants doivent être remarqués :
\item les accolades doivent apparaître par paires correctement imbriquées,
-{\color{cyan} mais les commandes |\{| et |\}| sont aussi fournies pour insérer des accolades individuelles} ;
+{\color{cyan} mais les commandes |\{| et |\}| sont aussi fournies pour insérer des
+ accolades individuelles} ;
-\item les commandes LaTeX\footnote{Cela s'applique aux commandes commençant par une contre-oblique |\| mais
- également aux caractères actifs, c'est-à-dire ceux de catcode~13.} sont complètement développées sans être
-exécutées
+\item les commandes LaTeX\footnote{Cela s'applique aux commandes commençant par une
+ contre-oblique |\| mais également aux caractères actifs, c'est-à-dire ceux de
+ catcode~13.} sont complètement développées sans être exécutées
{\color{cyan} et on peut donc utiliser |\\| pour insérer une contre-oblique}.
\end{itemize}
@@ -316,16 +322,20 @@ et |@|) doivent être insérés sans contre-oblique.
\end{tabular}
\bigskip
-La commande |\piton| avec son argument entre accolades peut être utilisée dans les arguments des autres commandes LaTeX.\footnote{La commande
- |\piton| peut par exemple être
+La commande |\piton| avec son argument entre accolades peut être utilisée dans les
+arguments des autres commandes LaTeX.\footnote{La commande |\piton| peut par exemple être
utilisée dans une note de bas de page. Exemple : \piton{s = 'Une chaîne'}.}
+En revanche, comme son argument subit un développement (au sens de TeX), il faut prendre
+soin à ne pas utiliser dans son argument de commandes fragiles (c'est-à-dire des commandes
+qui ne sont ni \emph{protected} ni \emph{fully expandable}).
+
\bigskip
\item {\color{blue} \textsf{Syntaxe} \verb!\piton|...|!}\par\nobreak
-Quand la commande |\piton| prend son argument entre deux caractères identiques, cet argument est pris \emph{en mode
- verbatim}. De ce fait, avec cette syntaxe, la commande |\piton| ne peut \emph{pas} être utilisée dans l'argument d'une
-autre fonction.
+Quand la commande |\piton| prend son argument entre deux caractères identiques, cet
+argument est pris \emph{en mode verbatim}. De ce fait, avec cette syntaxe, la commande
+|\piton| ne peut \emph{pas} être utilisée dans l'argument d'une autre fonction.
\medskip
\begin{tabular}{>{\color{gray}}w{l}{75mm}@{\hspace*{1cm}}l}
@@ -347,85 +357,114 @@ autre fonction.
\section{Personnalisation}
-Concernant la fonte de caractères utilisée dans les listings produits par l'extension \pkg{piton}, il s'agit
-simplement de la fonte mono-chasse courante (\pkg{piton} utilise simplement en interne la commande LaTeX standard
-|\ttfamily|). Pour la changer, le mieux est d'utiliser |\setmonofont| de \pkg{fontspec}.
\subsection{Les clés de la commande \textbackslash PitonOptions}
\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
- particulier, un groupe.}
+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 particulier, un groupe.}
-Ces clés peuvent aussi être appliquées à un environnement |{Piton}| individuel (entre crochets).
+Ces clés peuvent aussi être appliquées à un environnement |{Piton}| individuel (entre
+crochets).
\begin{itemize}
-\item La clé \Definition{language} spécifie le langage informatique considéré (la casse n'est pas prise en compte).
-Cinq valeurs sont possibles : |Python|, |OCaml|, |C|, |SQL| et |minimal|. La valeur initiale est |Python|.
-
-\item \index{path} La clé \Definition{path} indique un chemin où seront cherchés les fichiers inclus par
-|\PitonInputFile|.
-
-\item \index{gobble}\label{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 \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 \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 \index{write} La clé \Definition{write} prend en argument un nom de fichier (avec l'extension) et écrit le
-contenu\footnote{En fait, il ne s'agit pas exactement du contenu de l'environnement mais de la valeur renvoyée par
- l'instruction Lua
- |piton.get_last_code()| qui en est une version sans les surcharges de formatage LaTeX (voir la partie \ref{API}, p.~\pageref{API}).} de l'environnement courant dans ce fichier. À la première utilisation du fichier par \pkg{piton}, celui-ci
-est effacé.
-
-\item \index{path-write} 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 |{Piton}| et dans les listings produits par la commande |\PitonInputFile|.
+\item La clé \Definition{language} spécifie le langage informatique considéré (la casse
+n'est pas prise en compte). On peut choisir l'un des six langages prédéfinis (|Python|,
+|OCaml|, |C|, |SQL|, |minimal| et |verbatim|) ou bien le nom d'un langage défini par
+l'utilisateur avec |\NewPitonLanguage| (voir partie~\ref{NewPitonLanguage},
+p.~\pageref{NewPitonLanguage}).
+
+La valeur initiale est |Python|.
+
+\item \index{font-command}
+\colorbox{yellow!50}{\textbf{Nouveau 4.0}}\par\nobreak
+
+La clé \Definition{font-command} contient des instructions de fonte qui seront
+insérées au début de chaque élément formaté par \pkg{piton}, que ce soit avec la commande
+|\piton|, l'environnement |{Piton}| ou bien la commande |\PitonInputFile| (il n'y a que
+les «commentaires LaTeX» pour lesquels ces instructions de fonte ne sont pas utilisées).
+
+La valeur initiale de ce paramètre |font-command| est |\ttfamily|, ce qui fait, que, par
+défaut, \pkg{piton} utilise la fonte mono-chasse courante.
+
+\item \index{gobble}\label{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 \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 \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 \index{write} La clé \Definition{write} prend en argument un nom de fichier (avec
+l'extension) et écrit le contenu\footnote{En fait, il ne s'agit pas exactement du contenu
+ de l'environnement mais de la valeur renvoyée par l'instruction Lua
+ |piton.get_last_code()| qui en est une version sans les surcharges de formatage LaTeX
+ (voir la partie \ref{API}, p.~\pageref{API}).} de l'environnement courant dans ce
+fichier. À la première utilisation du fichier par \pkg{piton}, celui-ci est effacé.
+
+{\bfseries Cette clé nécessite une compilation avec {\ttfamily lualatex -shell-escape}}.
+
+\item \index{path-write} 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 |{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 (qui ne contiennent que des
-espaces) soient considérées comme non existantes en ce qui concerne la numérotation des lignes (si la clé
-|/absolute|, décrite plus bas, 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é |/skip-empty-lines| est active, la clé |/label-empty-lines| est sans effet.
-La valeur initiale de cette clé est |true|.\footnote{Quand la clé |split-on-empty-lines| est activée, les labels des
+\item La clé \Definition{line-numbers/skip-empty-lines} demande que les lignes vides (qui
+ne contiennent que des espaces) soient considérées comme non existantes en ce qui concerne
+la numérotation des lignes (si la clé |/absolute|, décrite plus bas, 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é |/skip-empty-lines|
+est active, la clé |/label-empty-lines| est sans effet. La valeur initiale de cette clé
+est |true|.\footnote{Quand la clé |split-on-empty-lines| est activée, les labels des
lignes vides ne sont jamais imprimés.}
-\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. partie~\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/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.
+partie~\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é |line-numbers/resume| a un alias, qui est
+|resume| tout court (car on peut être amené à l'utiliser souvent).
+
+\item La clé \Definition{line-numbers/start} impose que la numérotation commence à ce
+numéro.
-\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é |line-numbers/resume| a un alias, qui est |resume| tout court (car on peut être amené à
-l'utiliser souvent).
+\item La clé \Definition{line-numbers/sep} est la distance horizontale entre les numéros
+de lignes (insérés par |line-numbers|) et les lignes du code informatique. La valeur
+initiale est 0.7~em.
-\item La clé \Definition{line-numbers/start} impose que la numérotation commence à ce numéro.
+\item La clé \Definition{line-numbers/format} est une liste de tokens qui est insérée
+avant le numéro de ligne pour le formater. Il est possible de mettre \emph{en dernière
+ position} de cette liste une commande LaTeX à un argument comme |\fbox|.
-\item La clé \Definition{line-numbers/sep} est la distance horizontale entre les numéros de lignes (insérés par
-|line-numbers|) et les lignes du code informatique. La valeur initiale est 0.7~em.
+La valeur initiale est |\footnotesize \color{gray}|.
\end{itemize}
-Pour la commodité, un dispositif de factorisation du préfixe |line-numbers| est disponible, c'est-à-dire que l'on
-peut écrire :
+Pour la commodité, un dispositif de factorisation du préfixe |line-numbers| est
+disponible, c'est-à-dire que l'on peut écrire :
\begin{Verbatim}
\PitonOptions
@@ -434,64 +473,79 @@ peut écrire :
{
skip-empty-lines = false ,
label-empty-lines = false ,
- sep = 1 em
+ sep = 1 em ,
+ format = \footnotesize \color{blue}
}
}
\end{Verbatim}
-\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.
+\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.
-Il est possible de donner à la clé |left-margin| la valeur spéciale~|auto|. Avec cette valeur, une marge est
-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}.
+Il est possible de donner à la clé |left-margin| la valeur spéciale~|auto|. Avec cette
+valeur, une marge est 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 \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}|
+\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}|
\smallskip
-La clé |background-color| accepte aussi en argument une \emph{liste} de couleurs. Les lignes sont alors coloriées
-de manière cyclique avec ces couleurs.
+La clé |background-color| accepte aussi en argument une \emph{liste} de couleurs. Les
+lignes sont alors coloriées de manière cyclique avec ces couleurs.
\emph{Exemple} : |\PitonOptions{background-color = {gray!5,white}}|
-\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 \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}).
-
-Cette clé peut prendre comme valeur une longueur explicite mais aussi la valeur spéciale~|min|. Avec cette valeur,
-la largeur sera calculée à partir de la largeur maximale des lignes de code. Attention : l'usage de cette valeur
-spéciale~|min| requiert deux compilations LuaLaTeX\footnote{La largeur maximale est calculée lors de la première
-compilation, écrite sur le fichier~|aux|, puis réutilisée lors de la compilation suivante. Certains outils comme
-|latexmk| (utilisé par Overleaf) effectuent automatiquement un nombre suffisant de compilations.}.
-
-Pour un exemple d'utilisation de |width=min|, voir la partie~\ref{example-comments} sur les exemples, p.~\pageref{example-comments}.
-
-\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
+
+\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 \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}).
+
+Cette clé peut prendre comme valeur une longueur explicite mais aussi la valeur
+spéciale~|min|. Avec cette valeur, la largeur sera calculée à partir de la largeur
+maximale des lignes de code. Attention : l'usage de cette valeur spéciale~|min| requiert
+deux compilations LuaLaTeX\footnote{La largeur maximale est calculée lors de la première
+ compilation, écrite sur le fichier~|aux|, puis réutilisée lors de la compilation
+ suivante. Certains outils comme |latexmk| (utilisé par Overleaf) effectuent
+ automatiquement un nombre suffisant de compilations.}.
+
+Pour un exemple d'utilisation de |width=min|, voir la partie~\ref{example-comments} sur
+les exemples, p.~\pageref{example-comments}.
+
+\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{La valeur initial de |font-command| est |\ttfamily|
+ ce qui fait que, par défaut, l'extension \pkg{piton} utilise simplement la fonte
+ mono-chasse courante.}\par\nobreak
%
\begingroup
\PitonOptions{show-spaces-in-strings}
Exemple : \piton{my_string = 'Très bonne réponse'}
\endgroup
-\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). Il faut néanmoins remarquer que les espaces en fin de
-ligne sont tous supprimés par \pkg{piton}. Les tabulations de début de ligne sont représentées par des flèches.
+\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). Il faut néanmoins remarquer que les espaces en
+fin de ligne sont tous supprimés par \pkg{piton}. Les tabulations de début de ligne sont
+représentées par des flèches.
\end{itemize}
\bigskip
@@ -516,7 +570,7 @@ ligne sont tous supprimés par \pkg{piton}. Les tabulations de début de ligne s
if (!swapped) break;
}
}
-\end{Piton}
+~emphase&\end{Piton}@
\end{Verbatim}
\endgroup
@@ -544,8 +598,9 @@ ligne sont tous supprimés par \pkg{piton}. Les tabulations de début de ligne s
\bigskip
-La commande |\PitonOptions| propose d'autres clés qui seront décrites plus loin (voir en particulier la coupure des
-pages et des lignes p.~\pageref{breakable}).
+La commande |\PitonOptions| propose d'autres clés qui seront décrites plus loin (voir en
+particulier la coupure des pages et des lignes p.~\pageref{breakable}).
+
\subsection{Les styles}
@@ -555,93 +610,102 @@ pages et des lignes p.~\pageref{breakable}).
\subsubsection{Notion de style}
-L'extension \pkg{piton} fournit la commande |\SetPitonStyle| pour personnaliser les différents styles utilisés pour
-formater les éléments syntaxiques des listings Python. Ces personnalisations ont une portée qui correspond au
-groupe TeX courant.\footnote{On rappelle que tout environnement LaTeX est, en particulier, un groupe.}
+L'extension \pkg{piton} fournit la commande |\SetPitonStyle| pour personnaliser les
+différents styles utilisés pour formater les éléments syntaxiques des listings
+informatiques. Ces personnalisations ont une portée qui correspond au 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.
+\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.
\bigskip
-Ces instructions LaTeX doivent être des instructions de formatage du type de |\bfseries|, |\slshape|,
-|\color{...}|, etc. (les commandes de ce type sont parfois qualifiées de \emph{semi-globales}). Il est aussi
-possible de mettre, \emph{à la fin de la liste d'instructions}, une commande LaTeX prenant exactement un argument.
+Ces instructions LaTeX doivent être des instructions de formatage du type de |\bfseries|,
+|\slshape|, |\color{...}|, etc. (les commandes de ce type sont parfois qualifiées de
+\emph{semi-globales}). Il est aussi possible de mettre, \emph{à la fin de la liste
+ d'instructions}, une commande LaTeX prenant exactement un argument.
\bigskip
-Voici un exemple qui change le style utilisé pour le nom d'une fonction Python, au moment de sa définition
-(c'est-à-dire après le mot-clé |def|). Elle utilise la commande |\highLight| de \pkg{lua-ul} (qui nécessite
-lui-même le chargement de \pkg{luacolor}).
+Voici un exemple qui change le style utilisé pour le nom d'une fonction Python, au moment
+de sa définition (c'est-à-dire après le mot-clé |def|). Elle utilise la commande
+|\highLight| de \pkg{lua-ul} (qui nécessite lui-même le chargement de \pkg{luacolor}).
\begin{Verbatim}
\SetPitonStyle
- { Name.Function = \bfseries \hightLight[red!50] }
+ { Name.Function = \bfseries \hightLight[red!30] }
\end{Verbatim}
-Ici, |\highLight[red!50]| doit être considéré comme le nom d'une fonction LaTeX qui prend exactement un argument,
-puisque, habituellement, elle est utilisée avec |\highLight[red!50]{|\texttt{\slshape text}|}|.
+Ici, |\highLight[red!30]| doit être considéré comme le nom d'une fonction LaTeX qui prend
+exactement un argument, puisque, habituellement, elle est utilisée avec
+|\highLight[red!30]{|\texttt{\slshape text}|}|.
\medskip
\begingroup
\SetPitonStyle
- { Name.Function = \bfseries \highLight[red!50] }
+ { Name.Function = \bfseries \highLight[red!30] }
Avec ce réglage, on obtient : \piton{def cube(x) : return x * x * x }
\endgroup
\bigskip
-L'usage des différents styles suivant le langage informatique considéré est décrit dans la partie \ref{Semantic}, à
-partir de la page \pageref{Semantic}.
+L'usage des différents styles suivant le langage informatique considéré est décrit dans la
+partie \ref{Semantic}, à partir de la page \pageref{Semantic}.
\bigskip
-\indexcommand{PitonStyle}
-La commande \DefinitionCommand{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.
+\indexcommand{PitonStyle} La commande \DefinitionCommand{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.
\smallskip
-Par exemple, on peut écrire, dans le texte courant, |{\PitonStyle{Keyword}{function}}| et on aura
-le mot {\PitonStyle{Keyword}{function}} formaté comme un mot-clé.
+Par exemple, on peut écrire, dans le texte courant, |{\PitonStyle{Keyword}{function}}| et
+on aura le mot {\PitonStyle{Keyword}{function}} formaté comme un mot-clé.
\smallskip
-La syntaxe |{\PitonStyle{|\textsl{\texttt{style}}|}{...}}| est nécessaire pour pouvoir tenir compte à la fois des commandes
-semi-globales et des commandes à argument présentes dans la valeur courante du style \texttt{\textsl{style}}.
+La syntaxe |{\PitonStyle{|\textsl{\texttt{style}}|}{...}}| est nécessaire pour pouvoir
+tenir compte à la fois des commandes semi-globales et des commandes à argument présentes
+dans la valeur courante du style \texttt{\textsl{style}}.
\subsubsection{Styles locaux et globaux}
-Un style peut être défini de manière globale avec la commande |\SetPitonStyle|. Cela veut dire qu'il s'appliquera
-par défaut à tous les langages informatiques qui utilisent ce style.
+Un style peut être défini de manière globale avec la commande |\SetPitonStyle|. Cela veut
+dire qu'il s'appliquera par défaut à tous les langages informatiques qui utilisent ce
+style.
\medskip
Par exemple, avec la commande
\begin{Verbatim}
\SetPitonStyle{Comment = \color{gray}}
\end{Verbatim}
-tous les commentaires (que ce soit en Python, en C, en OCaml, etc. ou dans un langage défini avec
-|\NewPitonLanguage|) seront composés en gris.
+tous les commentaires (que ce soit en Python, en C, en OCaml, etc. ou dans un langage
+défini avec |\NewPitonLanguage|) seront composés en gris.
\bigskip
-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
\begin{Verbatim}
-\SetPitonStyle~emphase#[SQL]@{Keywords = \color[HTML]{006699} \bfseries \MakeUppercase}
+\SetPitonStyle~emphase#[SQL]@{Keyword = \color[HTML]{006699} \bfseries \MakeUppercase}
\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 capitales peut être envisagé).
+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 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 avec la notion de liaison locale de TeX (notion de groupe TeX).\footnote{Du point de vue des groupes de
- TeX, les liaisons faites par |\SetPitonStyle| sont toujours locales.}
+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 avec la notion de liaison locale de TeX
+(notion de groupe TeX).\footnote{Du point de vue des groupes de TeX, les liaisons faites
+ par |\SetPitonStyle| sont toujours locales.}
\medskip
Les styles fournis par défaut par \pkg{piton} sont tous définis globalement.
@@ -652,16 +716,22 @@ Les styles fournis par défaut par \pkg{piton} sont tous définis globalement.
\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
-mot-clé \piton{def} dans un listing Python précédent). La valeur initiale de ce style est nulle (=vide), ce qui
-fait que ces noms de fonctions sont formatés comme du texte courant (en noir). Néanmoins, il est possible de
-changer la valeur de ce style, comme tous les autres styles, avec la commande |\SetPitonStyle|.
+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 mot-clé \piton{def} dans un
+listing Python précédent). La valeur initiale de ce style est |\PitonStyle{Identifier}|,
+ce qui fait que ces noms de fonctions sont formatés comme les autres identificateurs
+(c'est-à-dire, par défaut, sans formatage particulier, si ce n'est celui donné par
+|font-command|).
+
+Néanmoins, il est possible de changer la valeur de ce style, comme tous les autres styles,
+avec la commande |\SetPitonStyle|.
\medskip
-Dans l'exemple suivant, on règle les styles |Name.Function| et |UserFunction| de manière à ce que, quand on clique
-sur le nom d'une fonction Python précédemment définie par l'utilisateur, on soit renvoyé vers la définition
-(informatique) de cette fonction. Cette programmation utilise les fonctions |\hypertarget| et |\hyperlink| de \pkg{hyperref}.
+Dans l'exemple suivant, on règle les styles |Name.Function| et |UserFunction| de manière à
+ce que, quand on clique sur le nom d'une fonction Python précédemment définie par
+l'utilisateur, on soit renvoyé vers la définition (informatique) de cette fonction. Cette
+programmation utilise les fonctions |\hypertarget| et |\hyperlink| de \pkg{hyperref}.
\begingroup
@@ -698,7 +768,8 @@ def passe(v):
\end{Piton}
\medskip
-(Certains lecteurs de \textsc{pdf} affichent un cadre autour du mot |transpose| cliquable et d'autres non.)
+(Certains lecteurs de \textsc{pdf} affichent un cadre autour du mot |transpose| cliquable
+et d'autres non.)
\endgroup
@@ -707,12 +778,14 @@ def passe(v):
\bigskip
\begin{small}
-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 \DefinitionCommand{PitonClearUserFunctions}. Quand elle est utilisée sans argument, cette
-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 auxquels elle s'appliquera.\footnote{On
- rappelle que, dans \pkg{piton}, les noms des langages informatiques ne sont pas sensibles à la casse. }
+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 \DefinitionCommand{PitonClearUserFunctions}. Quand elle est utilisée sans
+argument, cette 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 auxquels elle s'appliquera.\footnote{On rappelle que, dans
+ \pkg{piton}, les noms des langages informatiques ne sont pas sensibles à la casse. }
\end{small}
@@ -722,24 +795,26 @@ argument optionnel (entre crochets) une liste de langages informatiques auxquels
\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
-|{Piton}| avec les commandes classiques |\newenvironment| (de LaTeX standard) et |\NewDocumentEnvironment| (de
-LaTeX3).
+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 |{Piton}| avec les commandes
+classiques |\newenvironment| (de LaTeX standard) et |\NewDocumentEnvironment| (de LaTeX3).
-C'est pourquoi \pkg{piton} propose une commande |\NewPitonEnvironment|. Cette commande a la même syntaxe que la
-commande classique |\NewDocumentEnvironment|.\footnote{Néanmoins, le spécificateur d'argument~|b|, qui sert à
+C'est pourquoi \pkg{piton} propose une commande \DefinitionCommand{NewPitonEnvironment}.
+Cette commande a la même syntaxe que la commande classique
+|\NewDocumentEnvironment|.\footnote{Néanmoins, le spécificateur d'argument~|b|, qui sert à
capter le corps de l'environnement comme un argument LaTeX, n'est pas autorisé.}
\bigskip
-Par exemple, avec l'instruction suivante, un nouvel environnement |{Python}| sera défini avec le même comportement
-que l'environnement |{Piton}|:
+Par exemple, avec l'instruction suivante, un nouvel environnement |{Python}| sera défini
+avec le même comportement que l'environnement |{Piton}|:
{\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
-écrire (à condition, bien entendu, d'avoir chargé l'extension \pkg{tcolorbox}):
+Si on souhaite un environnement |{Python}| qui compose le code inclus dans une boîte de
+\pkg{tcolorbox}, on peut écrire (à condition, bien entendu, d'avoir chargé l'extension
+\pkg{tcolorbox}):
\begin{Verbatim}
\NewPitonEnvironment{Python}{}
@@ -774,27 +849,29 @@ def carré(x):
\label{NewPitonLanguage}
\index{listings@\pkg{listings} (extension)}
-\colorbox{yellow!50}{\textbf{Nouveau 3.0}}
-
\medskip
L'extension \pkg{listings} est une célèbre extension LaTeX pour formater des codes informatiques.
\medskip
-Elle propose une commande |\lstdefinelanguage| pour définir de nouveaux langages. Cette commande est aussi
-utilisée en interne par \pkg{listings} pour sa définition des languages (en fait, pour cela, \pkg{listings} utilise
-une commande nommée |\lst@definelanguage| mais celle-ci a la même syntaxe que |\lstdefinelanguage|).
+Elle propose une commande |\lstdefinelanguage| pour définir de nouveaux langages. Cette
+commande est aussi utilisée en interne par \pkg{listings} pour sa définition des languages
+(en fait, pour cela, \pkg{listings} utilise une commande nommée |\lst@definelanguage| mais
+celle-ci a la même syntaxe que |\lstdefinelanguage|).
\medskip
-L'extension \pkg{piton} propose une commande \DefinitionCommand{NewPitonLanguage} pour définir de nouveaux
-langages (utilisables avec les outils de \pkg{piton}) avec quasiment la même syntaxe que |\lstdefinelanguage|.
+L'extension \pkg{piton} propose une commande \DefinitionCommand{NewPitonLanguage} pour
+définir de nouveaux langages (utilisables avec les outils de \pkg{piton}) avec quasiment
+la même syntaxe que |\lstdefinelanguage|.
\medskip
-Précisons tout de suite que l'extension \pkg{piton} n'utilise \emph{pas} cette commande pour définir les langages
-qu'elle propose nativement (Python, C, OCaml, \CC\ et |minimal|), ce qui permet de proposer des parseurs plus puissants.
+Précisons tout de suite que l'extension \pkg{piton} n'utilise \emph{pas} cette commande
+pour définir les langages qu'elle propose nativement (Python, C, OCaml, SQL, |minimal| et
+|verbatim|), ce qui permet de proposer des parseurs plus puissants.
\medskip
-Par exemple, dans le fichier |lstlang1.sty|, qui est un des fichiers de definition des langages proposés par défaut
-par \pkg{listings}, on trouve les instructions suivantes (dans la version 1.10a).
+Par exemple, dans le fichier |lstlang1.sty|, qui est un des fichiers de definition des
+langages proposés par défaut par \pkg{listings}, on trouve les instructions suivantes
+(dans la version 1.10a).
\begin{Verbatim}[formatcom=\small\color{gray}]
\lst~@definelanguage{Java}%
@@ -813,9 +890,10 @@ par \pkg{listings}, on trouve les instructions suivantes (dans la version 1.10a)
\end{Verbatim}
\medskip
-Pour définir un language nommé |Java| pour \pkg{piton}, il suffit d'écrire le code suivant,
-{\bfseries où le dernier argument de |\lst@definelanguage|, qui est entre crochets, a été supprimé}
-(en fait, les symboles \verb+%+ pourraient être supprimés sans problème).
+Pour définir un language nommé |Java| pour \pkg{piton}, il suffit d'écrire le code
+suivant, {\bfseries où le dernier argument de |\lst@definelanguage|, qui est entre
+ crochets, a été supprimé} (en fait, les symboles \verb+%+ pourraient être supprimés sans
+problème).
\begin{Verbatim}[formatcom=\small\color{gray}]
~emphase#\NewPitonLanguage@{Java}%
@@ -850,16 +928,18 @@ Pour définir un language nommé |Java| pour \pkg{piton}, il suffit d'écrire le
\medskip
-On peut alors utiliser le language Java comme n'importe quel autre langage prédéfini de \pkg{piton}.
+On peut alors utiliser le language Java comme n'importe quel autre langage prédéfini de
+\pkg{piton}.
-Voici un exemple de code Java formaté dans un environnement~|{Piton}| avec la clé~|language=Java|.\footnote{On
- rappelle que, pour \pkg{piton}, les noms de langages informatiques ne sont pas sensibles à la casse, ce qui fait
- que l'on aurait pu aussi bien utiliser : |language=java|.}
+Voici un exemple de code Java formaté dans un environnement~|{Piton}| avec la
+clé~|language=Java|.\footnote{On rappelle que, pour \pkg{piton}, les noms de langages
+ informatiques ne sont pas sensibles à la casse, ce qui fait que l'on aurait pu aussi
+ bien utiliser : |language=java|.}
\bigskip
\begingroup
\small
-\PitonOptions{split-on-empty-lines}
+\PitonOptions{splittable-on-empty-lines}
\begin{Piton}[language = Java]
public class Cipher { // cryptage par le chiffre de César
public static void main(String[] args) {
@@ -893,12 +973,14 @@ public class Cipher { // cryptage par le chiffre de César
\endgroup
\bigskip
-Les clés de la commande |\lstdefinelanguage| de \pkg{listings} prises en charge par |\NewPitonLanguage| sont :
-|morekeywords|, |otherkeywords|, |sensitive|, |keywordsprefix|, |moretexcs|, |morestring| (avec les lettres |b|,
-|d|, |s| et |m|), |morecomment| (avec les lettres |i|, |l|, |s| et |n|), |moredelim| (avec les lettres |i|,
-|l|, |s|, |*| et |**|), |moredirectives|, |tag|, |alsodigit|, |alsoletter| et |alsoother|.
+Les clés de la commande |\lstdefinelanguage| de \pkg{listings} prises en charge par
+|\NewPitonLanguage| sont : |morekeywords|, |otherkeywords|, |sensitive|, |keywordsprefix|,
+|moretexcs|, |morestring| (avec les lettres |b|, |d|, |s| et |m|), |morecomment| (avec les
+lettres |i|, |l|, |s| et |n|), |moredelim| (avec les lettres |i|, |l|, |s|, |*| et |**|),
+|moredirectives|, |tag|, |alsodigit|, |alsoletter| et |alsoother|.
-Pour la description de ces clés, on renvoie à la documentation de \pkg{listings} (taper |texdoc| |listings| dans un terminal).
+Pour la description de ces clés, on renvoie à la documentation de \pkg{listings} (taper
+|texdoc| |listings| dans un terminal).
\bigskip
Par exemple, pour formater du code LaTeX, on pourra créer le language suivant :
@@ -907,170 +989,105 @@ Par exemple, pour formater du code LaTeX, on pourra créer le language suivant :
\begin{verbatim}
\NewPitonLanguage{LaTeX}{keywordsprefix = \ , alsoletter = @_ }
\end{verbatim}
-}
-Initialement, les caractères |@| et |_| sont des considérés comme des lettres car de nombreux langages de
-programmation les autorisent dans les mots-clés et les identificateurs. Avec \verb|alsoletter = @_|, on les retire
-de la catégorie des lettres.
-
-
-\section{Fonctionnalités avancées}
-
-
-\subsection{Coupure des pages et des lignes}
-
-\label{breakable}
-
-\subsubsection{Coupure des pages}
-
-\index{splittable}
-\index{split-on-empty-lines}
-\index{split-separation}
-
-Par défaut, les listings produits par l'environnement |{Piton}| et par la commande |\PitonInputFile| sont
-insécables.
-
-
-Néanmoins, la commande |\PitonOptions| propose les clés |split-on-empty-lines| et |splittable| pour autoriser de
-telles coupures.
-
-\begin{itemize}
-\item La clé \Definition{split-on-empty-lines} autorise les coupures sur les lignes vides\footnote{Les lignes considérées
- comme vides sont celles qui ne comportent que des espaces.} du listing. Dans les listings informatiques, les
-lignes vides séparent le plus souvent les définitions des fonctions informatiques et il est donc souvent judicieux
-de pouvoir couper au niveau de ces lignes.
+}
-Quand la clé |split-on-empty-lines| est activée, le travail effectué va en fait un peu plus loin : les lignes vides
-successives sont supprimées et remplacées par le contenu du paramètre correspondant à la clé
-\Definition{split-separation}.
+Initialement, les caractères |@| et |_| sont considérés comme des lettres car de nombreux
+langages de programmation les autorisent dans les mots-clés et les identificateurs. Avec
+\verb|alsoletter = @_|, on les retire de la catégorie des lettres.
-La valeur initiale de ce paramètre est |\vspace{\baselineskip}\vspace{-1.25pt}|, ce qui, au final, correspond à une
-ligne vide dans le PDF produit (cet espace vertical est supprimé s'il tombe au niveau d'un saut de page).
-\medskip
-\item La clé |split-on-empty-lines| peut bien sûr être insuffisante et c'est pourquoi \pkg{piton} propose la clé
-\Definition{splittable}.
+\section{Fonctionnalités avancées}
-Quand la clé |splittable| est utilisée avec la valeur numérique $n$ (qui doit être un entier naturel non nul) le
-listing, ou bien chaque partie de ce listing située entre des lignes vides (quand |split-on-empty-lines| est
-utilisée), pourra être coupé n'importe où avec cette exception qu'aucune coupure ne pourra avoir lieu entre les
-$n$~premières lignes, ni entre les $n$~dernières. Par exemple, |splittable = 4| pourrait être un réglage raisonnable.
-Employée sans argument, la clé |splittable| est équivalente à |splittable = 1|, et les listings sont alors sécables
-n'importe où (ce n'est pas recommandable).
+\subsection{Insertion d'un fichier}
-\end{itemize}
-
-\medskip
-\emph{Remarque}\par\nobreak
+\label{PitonInputFile}
-Même avec une couleur de fond (fixée avec |background-color|), les sauts de page sont possibles, à partir du moment
-où |split-on-empty-lines| ou |splittable| est utilisée.\footnote{Avec la clé |splittable|, un environnement
- |{Piton}| est sécable même dans un environnement de \pkg{tcolorbox} (à partir du moment où la clé |breakable| de
- \pkg{tcolorbox} est utilisée). On précise cela parce que, en revanche, un environnement de \pkg{tcolorbox} inclus
- dans un autre environnement de \pkg{tcolorbox} n'est pas sécable, même quand les deux utilisent la clé
- |breakable|.}
+\subsubsection{La commande \textbackslash PitonInputFile}
+\indexcommand{PitonInputFile}
-\subsubsection{Coupure des lignes}
-
-\label{line-breaks}
-
-Par défaut, les éléments produits par \pkg{piton} ne peuvent pas être coupés par une fin de ligne. Il existe
-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 \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).
+La commande \DefinitionCommand{PitonInputFile} permet d'insérer tout ou partie d'un
+fichier extérieur dont le nom est passé en argument. Il existe aussi des commandes
+\DefinitionCommand{PitonInputFileT}, \DefinitionCommand{PitonInputFileF} et
+\DefinitionCommand{PitonInputFileTF} avec des arguments correspondant aux lettres |T| et
+|F|, arguments qui seront exécutés dans le cas où le fichier a été trouvé (lettre |T|) ou
+pas (lettre |F|).
-\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 \index{break-lines} La clé \Definition{break-lines} est la conjonction des deux clés précédentes.
-\end{itemize}
+\bigskip
+\colorbox{yellow!50}{\textbf{Modification 4.0}}\par\nobreak
-\medskip
-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|.
+\smallskip
+\index{old-PitonInputFile}
+La syntaxe pour les chemins absolus et relatifs a été changée pour être conforme aux
+usages traditionnels. Il est toutefois possible d'utiliser la clé
+\Definition{old-PitonInputFile} au chargement de l'extension (c'est-à-dire avec le
+|\usepackage|) pour avoir l'ancien comportement de |\PitonInputFile| (néanmoins, cette clé
+sera supprimée dans une prochaine version de \pkg{piton} !).
+\smallskip
+La syntaxe est maintenant la suivante :
\begin{itemize}
-\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 Les chemins commençant par |/| sont des chemins absolus.
-\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|.
+\emph{Exemple} : |\PitonInputFile{/Users/joe/Documents/programme.py}|
-\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 Les chemins ne commençant pas par |/| sont relatifs au répertoire courant.
-\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\;$|.
+\emph{Exemple} : |\PitonInputFile{les_listings/programme.py}|
\end{itemize}
-\bigskip
-Le code suivant a été composé avec le réglage suivant :
-
-\begin{Verbatim}
-\PitonOptions{width=12cm,break-lines,indent-broken-lines,background-color=gray!15}
-\end{Verbatim}
-\begin{center}
-\PitonOptions{width=12cm,break-lines,indent-broken-lines,background-color=gray!15}
-\begin{Piton}
-def dict_of_liste(liste):
- """Convertit une liste de subrs et de descriptions de glyphes en dictionnaire"""
- dict = {}
- for liste_lettre in liste:
- if (liste_lettre[0][0:3] == 'dup'): # si c'est un subr
- nom = liste_lettre[0][4:-3]
- print("On traite le subr de numéro " + nom)
- else:
- nom = liste_lettre[0][1:-3] # si c'est un glyphe
- print("On traite le glyphe du caractère " + nom)
- dict[nom] = [traite_ligne_Postscript(k) for k in liste_lettre[1:-1]]
- return dict
-\end{Piton}
-\end{center}
+\index{path}
+La clé \Definition{path} de la commande |\PitonOptions| permet de spécifier une
+\emph{liste} de chemins où sera recherché le fichier à inclure (dans cette liste, les
+chemins sont séparés par des virgules). Comme précédemment, les chemins absolus doivent
+débuter par une oblique~|/|.
-\bigskip
-\subsection{Insertion d'une partie d'un fichier}
+\subsubsection{Insertion d'une partie d'un fichier}
\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.
+En fait, il existe des mécanismes permettant de n'insérer qu'une partie du fichier en
+question.
\begin{itemize}
-\item On peut spécifier la partie à insérer par les numéros de lignes (dans le fichier d'origine).
+\item On peut spécifier la partie à insérer par les numéros de lignes (dans le fichier
+d'origine).
\item On peut aussi spécifier la partie à insérer par des marqueurs textuels.
\end{itemize}
-Dans les deux cas, si on souhaite numéroter les lignes avec les numéros des lignes du fichier d'origine, il
-convient d'utiliser la clé |line-numbers/absolute|.
-
-\subsubsection{Avec les numéros de lignes absolus}
+Dans les deux cas, si on souhaite numéroter les lignes avec les numéros des lignes du
+fichier d'origine, il convient d'utiliser la clé |line-numbers/absolute|.
-La commande |\PitonInputFile| propose les clés \Definition{first-line} et \Definition{last-line} pour n'insérer que
-la partie du fichier comprise entre les lignes correspondantes. Ne pas confondre avec la clé |line-numbers/start|
-qui demande un numérotage des lignes commençant à la valeur donnée à cette clé (en un sens |line-numbers/start|
-concerne la sortie alors que |first-line| et |last-line| concernent l'entrée).
+\bigskip
+\textbf{Avec les numéros de lignes absolus}\par\nobreak
+La commande |\PitonInputFile| propose les clés \Definition{first-line} et
+\Definition{last-line} qui permettent de n'insérer que la partie du fichier comprise entre
+les lignes correspondantes. Ne pas confondre avec la clé |line-numbers/start| qui demande
+un numérotage des lignes commençant à la valeur donnée à cette clé (en un sens
+|line-numbers/start| concerne la sortie alors que |first-line| et |last-line| concernent
+l'entrée).
-\subsubsection{Avec des marqueurs textuels}
+\bigskip
+\textbf{Avec des marqueurs textuels}\par\nobreak
\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|).
+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|).
\medskip
Prenons d'abord un exemple.
\medskip
-Supposons que le fichier à inclure contienne des solutions à des exercices de programmation sur le modèle suivant :
+Supposons que le fichier à inclure contienne des solutions à des exercices de
+programmation sur le modèle suivant :
\begin{Verbatim}[formatcom=\small\color{gray}]
~#[Exercice 1] Version itérative
@@ -1087,25 +1104,27 @@ def fibo(n):
~#<Exercice 1>
\end{Verbatim}
-Les marqueurs de début de début et de fin sont les chaînes |#[Exercice 1]| et |#<Exercice 1>|. La chaîne
-«|Exercice 1|» sera appelée le \emph{label} de l'exercice (ou de la partie du fichier à inclure).
+Les marqueurs de début de début et de fin sont les chaînes |#[Exercice 1]| et
+|#<Exercice 1>|. La chaîne «|Exercice 1|» sera appelée le \emph{label} de l'exercice (ou
+de la partie du fichier à inclure).
-Pour spécifier des marqueurs de cette sorte dans \pkg{piton}, on utilisera les clés |marker/beginning| et |marker/end|
-de la manière suivante (le caractère |#| des commentaires de Python doit être inséré sous la forme échappée |\#|).
+Pour spécifier des marqueurs de cette sorte dans \pkg{piton}, on utilisera les clés
+|marker/beginning| et |marker/end| de la manière suivante (le caractère |#| des
+commentaires de Python doit être inséré sous la forme échappée |\#|).
\begin{Verbatim}
\PitonOptions{ ~emphase#marker/beginning@ = \~#[~#1] , ~emphase#marker/end@ = \~#<~#1> }
\end{Verbatim}
-Comme on le voit, |marker/beginning| est une expression correspondant à la fonction mathématique qui, au nom du
-label (par exemple |Exercice 1|), associe le marqueur de début (dans l'exemple |#[Exercice 1]|). La chaîne |#1|
-correspond aux occurrences de l'argument de cette fonction (c'est la syntaxe habituelle de TeX). De même pour
-|marker/end|.
+Comme on le voit, |marker/beginning| est une expression correspondant à la fonction
+mathématique qui, au nom du label (par exemple |Exercice 1|), associe le marqueur de début
+(dans l'exemple |#[Exercice 1]|). La chaîne |#1| correspond aux occurrences de l'argument
+de cette fonction (c'est la syntaxe habituelle de TeX). De même pour |marker/end|.
\bigskip
-Pour insérer une partie marquée d'un fichier, il suffit alors d'utiliser la clé \Definition{range} de
-|\PitonInputFile|.
+Pour insérer une partie marquée d'un fichier, il suffit alors d'utiliser la clé
+\Definition{range} de |\PitonInputFile|.
\smallskip
\begin{Verbatim}
@@ -1126,9 +1145,8 @@ def fibo(n):
return v
\end{Piton}
-\vspace{1cm}
-\index{marker/include-lines}
-La clé \Definition{marker/include-lines} demande que les lignes contenant les marqueurs soient également insérées.
+\vspace{1cm} \index{marker/include-lines} La clé \Definition{marker/include-lines} demande
+que les lignes contenant les marqueurs soient également insérées.
\begin{Verbatim}
\PitonInputFile[~emphase#marker/include-lines@,range = Exercice 1]{~textsl#nom_du_fichier@}
@@ -1151,13 +1169,12 @@ def fibo(n):
\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.
+\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.
-Par exemple, pour insérer les solutions des exercices 3 à 5, on pourra écrire (à condition que le fichier soit
-structuré correctement!):
+Par exemple, pour insérer les solutions des exercices 3 à 5, on pourra écrire (à condition
+que le fichier soit structuré correctement!):
\begin{Verbatim}
\PitonInputFile[~emphase#begin-range = Exercice 3, end-range = Exercice 5@]{~textsl#nom_du_fichier@}
@@ -1166,32 +1183,255 @@ structuré correctement!):
+\subsection{Coupure des pages et des lignes}
+
+\label{breakable}
+
+\subsubsection{Coupure des lignes}
+
+\label{line-breaks}
+
+Par défaut, les éléments produits par \pkg{piton} ne peuvent pas être coupés par une fin
+de ligne. Il existe néanmoins des clés pour autoriser de telles coupures (les points de
+coupure possibles sont les espaces, y compris les espaces qui sont dans les chaînes de
+caractères des langages informatiques).
+\begin{itemize}
+\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 \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 \index{break-lines} La clé \Definition{break-lines} est la conjonction des deux clés
+précédentes.
+\end{itemize}
+
+\medskip
+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 \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 (à condition que
+la fonte utilisée soit une fonte mono-chasse, ce qui est le cas par défaut puisque la
+valeur initiale de |font-command| est |\ttfamily|).
+
+\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 \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 \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}
+
+\bigskip
+Le code suivant a été composé avec le réglage suivant :
+
+\begin{Verbatim}
+\PitonOptions{width=12cm,break-lines,indent-broken-lines,background-color=gray!15}
+\end{Verbatim}
+
+
+\begin{center}
+\PitonOptions{width=12cm,break-lines,indent-broken-lines,background-color=gray!15}
+\begin{Piton}
+def dict_of_liste(liste):
+ """Convertit une liste de subrs et de descriptions de glyphes en dictionnaire"""
+ dict = {}
+ for liste_lettre in liste:
+ if (liste_lettre[0][0:3] == 'dup'): # si c'est un subr
+ nom = liste_lettre[0][4:-3]
+ print("On traite le subr de numéro " + nom)
+ else:
+ nom = liste_lettre[0][1:-3] # si c'est un glyphe
+ print("On traite le glyphe du caractère " + nom)
+ dict[nom] = [traite_ligne_Postscript(k) for k in liste_lettre[1:-1]]
+ return dict
+\end{Piton}
+\end{center}
+
+
+\bigskip
+\colorbox{yellow!50}{\bfseries{Nouveau 4.1}}\par\nobreak
+
+\smallskip
+Avec la clé \Definition{break-strings-anywhere}, les chaînes de caractères pourront être
+coupées n'importe où (et pas seulement sur les espaces).
+
+
+\subsubsection{Coupure des pages}
+
+\label{coupure-de-pages}
+\index{splittable}
+\index{splittable-on-empty-lines}
+
+
+Par défaut, les listings produits par l'environnement |{Piton}| et par la commande
+|\PitonInputFile| sont insécables.
+
+
+Néanmoins, \pkg{piton} propose les clés |splittable-on-empty-lines| et |splittable| pour
+autoriser de telles coupures.
+
+\begin{itemize}
+\item La clé \Definition{splittable-on-empty-lines} autorise les coupures sur les lignes
+vides du listing. Les lignes considérées comme vides sont celles qui ne comportent que des
+espaces (et il aurait peut-être été plus habile de parler de lignes blanches).
+
+\medskip
+\item La clé |splittable-on-empty-lines| peut bien sûr être insuffisante et c'est pourquoi
+\pkg{piton} propose la clé \Definition{splittable}.
+
+Quand la clé |splittable| est utilisée avec la valeur numérique $n$ (qui doit être un
+entier naturel non nul) le listing pourra être coupé n'importe où avec cette exception
+qu'aucune coupure ne pourra avoir lieu entre les $n$~premières lignes, ni entre les
+$n$~dernières.\footnote{Remarquer que l'on parle des lignes du listing d'origine, une
+ telle ligne pouvant être composée sur plusieurs lignes dans le \textsc{pdf} final si la
+ clé |break-lines-in-Piton| est utilisée.}
+
+Par exemple, |splittable = 4| pourrait être un réglage raisonnable.
+
+Employée sans argument, la clé |splittable| est équivalente à |splittable = 1|, et les
+listings sont alors sécables n'importe où (ce n'est pas recommandable).
+
+La valeur initiale de la clé |splittable| vaut 100, ce qui fait que les listings ne sont
+pas sécables.
+\end{itemize}
+
+\medskip
+\emph{Remarque}\par\nobreak
+
+Même avec une couleur de fond (fixée avec |background-color|), les sauts de page sont
+possibles, à partir du moment où |splittable-on-empty-lines| ou |splittable| est
+utilisée.\footnote{Avec la clé |splittable|, un environnement |{Piton}| est sécable même
+ dans un environnement de \pkg{tcolorbox} (à partir du moment où la clé |breakable| de
+ \pkg{tcolorbox} est utilisée). On précise cela parce que, en revanche, un environnement
+ de \pkg{tcolorbox} inclus dans un autre environnement de \pkg{tcolorbox} n'est pas
+ sécable, même quand les deux utilisent la clé |breakable|.}
+
+\bigskip
+\subsection{Découpe d'un listing en sous-listings}
+
+\index{split-on-empty-lines}
+\label{split-on-empty-lines}
+\index{split-separation}
+\index{env-used-by-split}
+
+L'exension \pkg{piton} fournit la clé \Definition{split-on-empty-lines}, qui ne doit pas
+être confondue avec la clé |splittable-on-empty-lines| définie précédemment.
+
+\smallskip
+Pour comprendre le fonctionnement de la clé |split-on-empty-lines|, il faut imaginer que
+l'on a à composer un fichier informatique qui contient une succession de définitions de
+fonctions informatiques. Dans la plupart des langages informatiques, ces définitions
+successives sont séparées par des lignes vides (ou plutôt des lignes blanches,
+c'est-à-dire des lignes qui ne contiennent que des espaces).
+
+\smallskip
+La clé |split-on-empty-lines| coupe le listing au niveau des lignes vides. Les lignes
+vides successives sont supprimées et remplacées par le contenu du paramètre correspondant
+à la clé \Definition{split-separation}.
+\begin{itemize}
+\item Ce paramètre doit contenir du matériel à insérer en \emph{mode vertical} de TeX. On
+peut, par exemple, mettre la primmitive TeX |\hrule|.
+
+\item La valeur initiale de ce paramètre est |\vspace{\baselineskip}\vspace{-1.25pt}|, ce qui,
+au final, correspond à une ligne vide dans le \textsc{pdf} produit (cet espace vertical
+est supprimé s'il tombe au niveau d'un saut de page).
+\end{itemize}
+
+
+\colorbox{yellow!50}{\textbf{Nouveau 4.0}}\par\nobreak
+
+Chaque morceau du code informatique est formaté (de manière autonome) dans un
+environnement dont le nom est donné par la clé \Definition{env-used-by-split}. La valeur
+initiale de ce paramètre est, sans surprise, |Piton| et les différents morceaux sont donc
+composés dans des environnements |{Piton}|. Si on décide de donner une autre valeur à la
+clé |env-used-by-split|, on doit bien sûr donner le nom d'un environnement créé par
+|\NewPitonEnvironment| (cf.~partie~\ref{NewPitonEnvironment},
+p.~\pageref{NewPitonEnvironment}).
+
+\smallskip
+Chaque morceau du listing de départ étant composé dans son environnement, il dispose de sa
+propre numérotation des lignes (si la clé |line-numbers| est active) et de son propre fond
+coloré (si la clé |background-color| est utilisée), séparé des fonds des autres morceaux.
+Si elle est active, la clé |splittable| s'applique de manière autonome dans chaque
+morceau. Bien sûr, des sauts de page peuvent intervenir entre les différents morceaux du
+code, quelle que soit la valeur de la clé |splittable|.
+
+\bigskip
+\begin{Verbatim}
+\begin{Piton}[~emphase#split-on-empty-lines@,background-color=gray!15,line-numbers]
+def carré(x):
+ """Calcule le carré de x"""
+ return x*x
+
+def cube(x):
+ """Calcule le cube de x"""
+ return x*x*x
+\end{Piton}
+\end{Verbatim}
+
+
+\begin{Piton}[split-on-empty-lines,background-color=gray!15,line-numbers]
+def carré(x):
+ """Calcule le carré de x"""
+ return x*x
+
+def cube(x):
+ """Calcule le cube de x"""
+ return x*x*x
+\end{Piton}
+
+
+\bigskip
+\textbf{Attention} : Comme chaque morceau est traité de manière indépendante, les
+commandes spécifiées par |detected-commands| et les commandes et environnements de Beamer
+automatiquement détectés par \pkg{piton} ne doivent pas enjamber les lignes vides du
+listing de départ.
+
+
+\bigskip
\subsection{Mise en évidence d'identificateurs}
\indexcommand{SetPitonIdentifier}
\label{SetPitonIdentifier}
-La commande \DefinitionCommand{SetPitonIdentifier} permet de changer le formatage de certains identificateurs.
+La commande \DefinitionCommand{SetPitonIdentifier} permet de changer le formatage de
+certains identificateurs.
\smallskip
Cette commande prend trois arguments : un optionnel et deux obligatoires.
\begin{itemize}
-\item L'argument optionnel (entre crochets) indique le langage (informatique) concerné ; si cet
-argument est absent, les réglages faits par |\SetPitonIdentifier| s'appliqueront à tous les langages.\footnote{On rappelle que, dans \pkg{piton}, les noms des langages informatiques ne sont pas
- sensibles à la casse.}
+\item L'argument optionnel (entre crochets) indique le langage (informatique) concerné ;
+si cet argument est absent, les réglages faits par |\SetPitonIdentifier| s'appliqueront à
+tous les langages.\footnote{On rappelle que, dans \pkg{piton}, les noms des langages
+ informatiques ne sont pas sensibles à la casse.}
-\item Le premier argument obligatoire est une liste de noms d'identificateurs séparés par des virgules.
+\item Le premier argument obligatoire est une liste de noms d'identificateurs séparés par
+des virgules.
-\item Le deuxième argument obligatoire est une liste d'instructions LaTeX de formatage du même type que pour les
-styles précédemment définis (cf. \ref{styles}, p.~\pageref{styles}).
+\item Le deuxième argument obligatoire est une liste d'instructions LaTeX de formatage du
+même type que pour les styles précédemment définis (cf. \ref{styles},
+p.~\pageref{styles}).
\end{itemize}
-\emph{Attention} : Seuls les identificateurs peuvent voir leur formatage affecté. Les mots-clés et les noms de
-fonctions prédéfinies ne seront pas affectés, même s'ils figurent dans le premier argument de
-|\SetPitonIdentifier|.
+\emph{Attention} : Seuls les identificateurs peuvent voir leur formatage affecté. Les
+mots-clés et les noms de fonctions prédéfinies ne seront pas affectés, même s'ils figurent
+dans le premier argument de |\SetPitonIdentifier|.
\begin{Verbatim}
~emphase#\SetPitonIdentifier{l1,l2}{\color{red}}@
@@ -1230,8 +1470,9 @@ def tri(l):
\endgroup
\bigskip
-Avec la commande |\SetPitonIdentifiers|, on peut ajouter à un langage informatique de nouvelles fonctions
-prédéfinies (ou de nouveaux mots-clés, etc.) qui seront détectées par \pkg{piton}.
+Avec la commande |\SetPitonIdentifiers|, on peut ajouter à un langage informatique de
+nouvelles fonctions prédéfinies (ou de nouveaux mots-clés, etc.) qui seront détectées par
+\pkg{piton}.
\begin{Verbatim}
@@ -1272,16 +1513,18 @@ floor(5.4)
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.
-\item Il est possible d'avoir, dans les commentaires Python, les éléments entre \texttt{\$} composés en mode
-mathématique de LaTeX.
-\item Il est possible de demander à \pkg{piton} de détecter directement certaines commandes LaTeX avec leur argument.
+\item Il est possible d'avoir, dans les commentaires Python, les éléments entre
+\texttt{\$} composés en mode mathématique de LaTeX.
+\item Il est possible de demander à \pkg{piton} de détecter directement certaines
+commandes LaTeX avec leur argument.
\item Il est possible d'insérer du code LaTeX à n'importe quel endroit d'un listing Python.
\end{itemize}
Ces mécanismes vont être détaillés dans les sous-parties suivantes.
\smallskip
-À remarquer également que, dans le cas où \pkg{piton} est utilisée dans la classe \cls{beamer}, \pkg{piton} détecte
-la plupart des commandes et environnements de Beamer : voir la sous-section \ref{beamer}, p.~\pageref{beamer}.
+À remarquer également que, dans le cas où \pkg{piton} est utilisée dans la classe
+\cls{beamer}, \pkg{piton} détecte la plupart des commandes et environnements de Beamer :
+voir la sous-section \ref{beamer}, p.~\pageref{beamer}.
\subsubsection{Les «commentaires LaTeX»}
@@ -1289,14 +1532,16 @@ la plupart des commandes et environnements de Beamer : voir la sous-section \ref
\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.
+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.
Il y a deux outils pour personnaliser ces commentaires.
\begin{itemize}
-\item Il est possible de changer le marquage syntaxique utilisé (qui vaut initialement~|#>|). Pour ce faire, il
-existe une clé \Definition{comment-latex}, \emph{disponible uniquement dans le préambule du document}, qui permet de choisir les
+\item Il est possible de changer le marquage syntaxique utilisé (qui vaut
+initialement~|#>|). Pour ce faire, il existe une clé \Definition{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) :
@@ -1305,18 +1550,18 @@ Par exemple, avec le réglage suivant (fait dans le préambule du document) :
les commentaires LaTeX commenceront par~|#LaTeX|.
-Si on donne la valeur nulle à la clé |comment-latex|, tous les commentaires Python (débutant par~|#|) seront en
-fait des «commentaires LaTeX».
+Si on donne la valeur nulle à la clé |comment-latex|, tous les commentaires Python
+(débutant par~|#|) seront en fait des «commentaires LaTeX».
\smallskip
-\item Il est possible de changer le formatage du commentaire LaTeX lui-même en changeant le style \pkg{piton}
-|Comment.LaTeX|.
+\item Il est possible de changer le formatage du commentaire LaTeX lui-même en changeant
+le style \pkg{piton} |Comment.LaTeX|.
-Par exemple, avec |\SetPitonStyle{Comment.LaTeX = \normalfont\color{blue}}|, les commentaires LaTeX seront composés
-en bleu.
+Par exemple, avec |\SetPitonStyle{Comment.LaTeX = \normalfont\color{blue}}|, les
+commentaires LaTeX seront composés en bleu.
-Si on souhaite qu'un croisillon (|#|) soit affiché en début de commentaire dans le \textsc{pdf}, on peut régler
-|Comment.LaTeX| de la manière suivante :
+Si on souhaite qu'un croisillon (|#|) soit affiché en début de commentaire dans le
+\textsc{pdf}, on peut régler |Comment.LaTeX| de la manière suivante :
\begin{Verbatim}
\SetPitonStyle{Comment.LaTeX = \color{gray}\~#\normalfont\space }
@@ -1328,11 +1573,12 @@ p.~\pageref{example-comments}.
\bigskip
-Si l'utilisateur a demandé l'affichage des numéros de ligne avec |line-numbers|, il est possible de faire référence
-à ce numéro de ligne avec la commande |\label| placée dans un commentaire LaTeX.\footnote{Cette fonctionnalité est
- implémentée en redéfinissant, dans les environnements |{Piton}|, la commande |\label|. Il peut donc y avoir des
- incompatibilités avec les extensions qui redéfinissent (globalement) cette commande |\label| (comme
- \pkg{varioref}, \pkg{refcheck}, \pkg{showlabels}, etc.)}
+Si l'utilisateur a demandé l'affichage des numéros de ligne avec |line-numbers|, il est
+possible de faire référence à ce numéro de ligne avec la commande |\label| placée dans un
+commentaire LaTeX.\footnote{Cette fonctionnalité est implémentée en redéfinissant, dans
+ les environnements |{Piton}|, la commande |\label|. Il peut donc y avoir des
+ incompatibilités avec les extensions qui redéfinissent (globalement) cette commande
+ |\label| (comme \pkg{varioref}, \pkg{refcheck}, \pkg{showlabels}, etc.)}
@@ -1341,15 +1587,17 @@ Si l'utilisateur a demandé l'affichage des numéros de ligne avec |line-numbers
\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).
+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} (\emph{qui ne peut être activée que dans le préambule du document}) active ce
-comportement.
+La clé \Definition{math-comments} (\emph{qui ne peut être activée que dans le préambule du
+ document}) active ce comportement.
\bigskip
-Dans l'exemple suivant, on suppose que |\PitonOptions{math-comments}| a été utilisé dans le préambule du document.
+Dans l'exemple suivant, on suppose que |\PitonOptions{math-comments}| a été utilisé dans
+le préambule du document.
\begin{Verbatim}
\begin{Piton}
@@ -1369,23 +1617,26 @@ def carré(x):
\index{detected-commands (key)}
\label{detected-commands}
-La clé \Definition{detected-commands} de |\PitonOptions| permet de spécifier une liste de noms de commandes LaTeX
-qui seront directement détectées par \pkg{piton}.
+La clé \Definition{detected-commands} de |\PitonOptions| permet de spécifier une liste de
+noms de commandes LaTeX qui seront directement détectées par \pkg{piton}.
\begin{itemize}
-\item Cette clé |detected-commands| ne peut être utilisée que dans le préambule du document.
+\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 , textbf }|).
+\item Les noms de commandes LaTeX doivent apparaître sans la contre-oblique (ex. :
+|detected-commands = { emph , textbf }|).
-\item Ces commandes doivent être des commandes LaTeX à un seul argument obligatoire entre accolades (et ces
-accolades doivent apparaître explicitement dans le listing).
+\item Ces commandes doivent être des commandes LaTeX à un seul argument obligatoire entre
+accolades (et ces accolades doivent apparaître explicitement dans le listing).
\end{itemize}
\medskip
-Dans l'exemple suivant, qui est une programmation récursive de la factorielle, on décide de surligner en jaune
-l'appel récursif. La commande |\highLight| de \pkg{lua-ul} (cette extension requiert elle-même l'extension
-\pkg{luacolor}) permet de le faire avec la syntaxe |\hightLight{...}|.
+Dans l'exemple suivant, qui est une programmation récursive de la factorielle, on décide
+de surligner en jaune l'appel récursif. La commande |\highLight| de
+\pkg{lua-ul}\footnote{L'extension \pkg{lua-ul} requiert elle-même l'extension
+ \pkg{luacolor}.} permet de le faire facilement avec la
+syntaxe |\highLight{...}|.
\smallskip
On suppose que l'on a mis dans le préambule du document LaTeX l'instruction suivante :
@@ -1419,17 +1670,20 @@ def fact(n):
\index{end-escape}
\label{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} (\emph{qui ne sont accessibles
-que dans le préambule du document}). Les deux délimiteurs peuvent être identiques.
+Il est aussi possible de surcharger les listings informatiques 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} (\emph{qui ne sont accessibles que dans le préambule du
+ document}). Les deux délimiteurs peuvent être identiques.
\medskip
-On reprend l'exemple précédent de la factorielle et on souhaite surligner en rose l'instruction qui contient l'appel
-récursif. La commande |\highLight| de \pkg{lua-ul} permet de le faire avec la syntaxe |\highLight[LightPink]{...}|.
-Du fait de la présence de l'argument optionnel entre crochets, on ne peut pas utiliser la clé |detected-commands|
-comme précédemment mais on peut utiliser le mécanisme «escape».
+On reprend l'exemple précédent de la factorielle et on souhaite surligner en rose
+l'instruction qui contient l'appel récursif. La commande |\highLight| de \pkg{lua-ul}
+permet de le faire avec la syntaxe |\highLight[LightPink]{...}|. Du fait de la présence de
+l'argument optionnel entre crochets, on ne peut pas utiliser la clé |detected-commands|
+comme précédemment mais on peut utiliser le mécanisme «escape» qui est plus général.
\smallskip
On suppose que le préambule du document contient l'instruction :
@@ -1460,10 +1714,10 @@ def fact(n):
\bigskip
-\emph{Attention} : L'échappement vers LaTeX permis par les clés |begin-escape| et |end-escape| n'est pas actif dans
-les chaînes de caractères ni dans les commentaires (pour avoir un commentaire entièrement en échappement vers
-LaTeX, c'est-à-dire ce qui est appelé dans ce document «commentaire LaTeX», il suffit de le faire débuter par
-|#>|).
+\emph{Attention} : Le mécanisme «escape» n'est pas actif dans les chaînes de caractères ni
+dans les commentaires (pour avoir un commentaire entièrement en échappement vers LaTeX,
+c'est-à-dire ce qui est appelé dans ce document «commentaire LaTeX», il suffit de le faire
+débuter par |#>|).
\subsubsection{Le mécanisme «escape-math»}
@@ -1472,27 +1726,30 @@ LaTeX, c'est-à-dire ce qui est appelé dans ce document «commentaire LaTeX»,
\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.
+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} (\emph{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
-mécanisme «|escape|». En effet, comme le contenu en échappement est composé en mode mathématique, il est en
-particulier composé dans un groupe TeX et ne pourra donc pas servir à changer le formatage d'autres unités lexicales.
+Malgré la proximité technique, les usages du mécanisme «escape-math» sont en fait assez
+différents de ceux du mécanisme «escape». En effet, comme le contenu en échappement est
+composé en mode mathématique, il est, en 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 |$| ne joue pas un rôle syntaxique important, on peut assez naturellement
-vouloir activer le mécanisme «|escape-math|» avec le caractère |$|:
+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 |$| 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 |\)|.
+Néanmoins, il est sans doute plus prudent d'utiliser |\(| et |\)|, qui sont des
+délimiteurs du mode mathématique proposés par LaTeX.
\begin{Verbatim}
\PitonOptions{~emphase#begin-escape-math=\(,end-escape-math=\)@}
\end{Verbatim}
@@ -1538,25 +1795,29 @@ def arctan(x,n=10):
\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|,
-c'est-à-dire débutant par |\begin{frame}[fragile]|.\footnote{On rappelle que pour un environnement |{frame}| de Beamer qui
- utilise la clé |fragile|, l'instruction |\end{frame}| doit être seule sur une ligne (à l'exception d'éventuels
- espaces en début de ligne).}
+\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|, c'est-à-dire débutant par
+|\begin{frame}[fragile]|.\footnote{On rappelle que pour un environnement |{frame}| de
+ Beamer qui utilise la clé |fragile|, l'instruction |\end{frame}| doit être seule sur une
+ ligne (à l'exception d'éventuels espaces en début de ligne).}
\medskip
-Quand l'extension \pkg{piton} est utilisée dans la classe \cls{beamer}\footnote{L'extension \pkg{piton} détecte la
- classe \cls{beamer} et l'extension \pkg{beamerarticle} si elle est chargée précédemment, mais il est aussi
- possible, si le besoin s'en faisait sentir, d'activer ce comportement avec la clé |beamer| au chargement de
- \pkg{piton} : |\usepackage[beamer]{piton}|}, le comportement de \pkg{piton} est légèrement modifié, comme décrit
-maintenant.
+Quand l'extension \pkg{piton} est utilisée dans la classe
+\cls{beamer}\footnote{L'extension \pkg{piton} détecte la classe \cls{beamer} et
+ l'extension \pkg{beamerarticle} si elle est chargée précédemment, mais il est aussi
+ possible, si le besoin s'en faisait sentir, d'activer ce comportement avec la clé
+ |beamer| au chargement de \pkg{piton} : |\usepackage[beamer]{piton}|}, le comportement
+de \pkg{piton} est légèrement modifié, comme décrit maintenant.
\subsubsection{\{Piton\} et \textbackslash PitonInputFile sont ``overlay-aware''}
-Quand \pkg{piton} est utilisé avec Beamer, l'environnement |{Piton}| et la commande |\PitonInputFile| acceptent
-l'argument optionnel |<...>| de Beamer pour indiquer les «\emph{overlays}» concernés.
+Quand \pkg{piton} est utilisé avec Beamer, l'environnement |{Piton}| et la commande
+|\PitonInputFile| acceptent l'argument optionnel |<...>| de Beamer pour indiquer les
+«\emph{overlays}» concernés.
On peut par exemple écrire :
@@ -1575,27 +1836,37 @@ ou aussi
\subsubsection{Commandes de Beamer reconnues dans \{Piton\} et \textbackslash PitonInputFile}
-Quand \pkg{piton} est utilisé dans la classe \cls{beamer}, les commandes suivantes de \cls{beamer} (classées selon
-leur nombre d'arguments obligatoires) sont directement reconnues dans les environnements |{Piton}| (ainsi que dans
-les listings composés par la commande |\PitonInputFile|, même si c'est sans doute moins utile).
+\index{detected-beamer-commands}
+
+Quand \pkg{piton} est utilisé dans la classe \cls{beamer}, les commandes suivantes de
+\cls{beamer} (classées selon leur nombre d'arguments obligatoires) sont directement
+reconnues dans les environnements |{Piton}| (ainsi que dans les listings composés par la
+commande |\PitonInputFile|, même si c'est sans doute moins utile).
%
\begin{itemize}
-\item aucun argument obligatoire : |\pause|\footnote{On remarquera que, bien sûr, on peut aussi utiliser |\pause|
- dans un «commentaire LaTeX», c'est-à-dire en écrivant |#> \pause|. Ainsi, si le code Python est copié, il est
- interprétable par Python.} ;
-\item un argument obligatoire : |\action|, |\alert|, |\invisible|, |\only|, |\uncover| et |\visible| ;
-\item deux arguments obligatoires : |\alt| ;
+\item aucun argument obligatoire : |\pause|\footnote{On remarquera que, bien sûr, on peut
+aussi utiliser |\pause| dans un «commentaire LaTeX», c'est-à-dire en écrivant
+|#> \pause|. Ainsi, si le code Python est copié, il est interprétable par Python.} ;
+\item un argument obligatoire : |\action|, |\alert|, |\invisible|, |\only|, |\uncover| et
+|\visible| ; \newline
+La clé \Definition{detected-beamer-commands} permet de rajouter à cette liste de nouveaux
+noms de commandes (les noms de commandes ne doivent \emph{pas} être précédés de la
+contre-oblique) ;
+\item deux arguments obligatoires : |\alt| ;
\item trois arguments obligatoires : |\temporal|.
\end{itemize}
\medskip
-Les accolades dans les arguments obligatoires de ces commandes doivent être équilibrées (cependant, les accolades
-présentes dans des chaînes courtes\footnote{Les chaînes courtes de Python sont les chaînes (string) délimitées par
- les caractères \texttt{'} ou \texttt{"} non triplés. En Python, les chaînes de caractères courtes ne peuvent pas
- s'étendre sur plusieurs lignes de code.} de Python ne sont pas prises en compte).
+Ces commandes doivent être utilisées précédées et suivies d'un espace. Les accolades dans
+les arguments obligatoires de ces commandes doivent être équilibrées (cependant, les
+accolades présentes dans des chaînes courtes\footnote{Les chaînes courtes de Python sont
+ les chaînes (string) délimitées par les caractères \texttt{'} ou \texttt{"} non triplés.
+ En Python, les chaînes de caractères courtes ne peuvent pas s'étendre sur plusieurs
+ lignes de code.} de Python ne sont pas prises en compte).
\medskip
-Concernant les fonctions |\alt| et |\temporal|, aucun retour à la ligne ne doit se trouver dans les arguments de ces fonctions.
+Concernant les fonctions |\alt| et |\temporal|, aucun retour à la ligne ne doit se trouver
+dans les arguments de ces fonctions.
\medskip
@@ -1618,22 +1889,29 @@ def string_of_list(l):
\end{document}
\end{Verbatim}
-Dans l'exemple précédent, les accolades des deux chaînes de caractères Python |"{"| et |"}"| sont correctement
-interprétées (sans aucun caractère d'échappement).
+Dans l'exemple précédent, les accolades des deux chaînes de caractères Python |"{"| et
+ |"}"| sont correctement interprétées (sans aucun caractère d'échappement).
\bigskip
\subsubsection{Environnements de Beamer reconnus dans \{Piton\} et \textbackslash PitonInputFile}
-Quand \pkg{piton} est utilisé dans la classe \pkg{beamer}, les environnements suivants de Beamer sont directement
-reconnus dans les environnements |{Piton}| (ainsi que dans les listings composés par la commande |\PitonInputFile|
-même si c'est sans doute moins utile) : |{actionenv}|, |{alertenv}|, |{invisibleenv}|, |{onlyenv}|, |{uncoverenv}|
-et |{visibleenv}|.
+Quand \pkg{piton} est utilisé dans la classe \pkg{beamer}, les environnements suivants de
+Beamer sont directement reconnus dans les environnements |{Piton}| (ainsi que dans les
+listings composés par la commande |\PitonInputFile| même si c'est sans doute moins utile)
+: |{actionenv}|, |{alertenv}|, |{invisibleenv}|, |{onlyenv}|, |{uncoverenv}| et
+|{visibleenv}|.
+\smallskip
+\index{detected-beamer-environments}
+On peut ajouter de nouveaux environnements à cette liste d'environnements reconnus avec la
+clé \Definition{detected-beamer-environments}.
\medskip
-Il y a néanmoins une restriction : ces environnements doivent englober des \emph{lignes entières de code Python}.
+Il y a néanmoins une restriction : ces environnements doivent englober des \emph{lignes
+ entières de code Python}. Les instructions |\begin{...}| et |\end{...}| doivent être
+seules sur leurs lignes.
\medskip
@@ -1657,25 +1935,29 @@ def carré(x):
-\vspace{1cm}
-\textbf{Remarque à propos de la commande \textbackslash alert et de l'environnement \{alertenv\} de Beamer}\par\nobreak
+\vspace{1cm}
+\textbf{Remarque à propos de la commande \textbackslash alert et de
+ l'environnement \{alertenv\} de Beamer}\par\nobreak
\smallskip
-Beamer propose un moyen aisé de changer la couleur utilisée par l'environnement |{alertenv}| (et par la commande
-|\alert| qui s'appuie dessus). Par exemple, on peut écrire:
+Beamer propose un moyen aisé de changer la couleur utilisée par l'environnement
+|{alertenv}| (et par suite la commande |\alert| qui s'appuie dessus). Par exemple, on peut
+écrire:
\begin{Verbatim}
\setbeamercolor{~emphase#alerted text@}{fg=blue}
\end{Verbatim}
-Néanmoins, dans le cas d'une utilisation à l'intérieur d'un environnement |{Piton}| un tel réglage n'est sans doute
-pas pertinent, puisque, justement, \pkg{piton} va (le plus souvent) changer la couleur des élements selon leur
-valeur lexicale. On préfèrera sans doute un environnement |{alertenv}| qui change la couleur de fond des
-éléments à mettre en évidence.
+Néanmoins, dans le cas d'une utilisation à l'intérieur d'un environnement |{Piton}| un tel
+réglage n'est sans doute pas pertinent, puisque, justement, \pkg{piton} va (le plus
+souvent) changer la couleur des élements selon leur valeur lexicale. On préfèrera sans
+doute un environnement |{alertenv}| qui change la couleur de fond des éléments à mettre en
+évidence.
\smallskip
-Voici un code qui effectuera ce travail en mettant un fond jaune. Ce code utilise la commande |\@highLight| de
-l'extension \pkg{lua-ul} (cette extension nécessite elle-même l'extension \pkg{luacolor}).
+Voici un code qui effectuera ce travail en mettant un fond jaune. Ce code utilise la
+commande |\@highLight| de l'extension \pkg{lua-ul} (cette extension nécessite elle-même
+l'extension \pkg{luacolor}).
\begingroup
\fvset{commandchars=\~\#\+,formatcom=\color{gray}}
@@ -1688,12 +1970,9 @@ l'extension \pkg{lua-ul} (cette extension nécessite elle-même l'extension \pkg
\end{Verbatim}
\endgroup
-Ce code redéfinit localement l'environnement |{alertenv}| à l'intérieur de l'environnement |{Piton}| (on rappelle
-que la commande |\alert| s'appuie sur cet environnement |{alertenv}|).
-
-
-
-\bigskip
+Ce code redéfinit localement l'environnement |{alertenv}| à l'intérieur de l'environnement
+|{Piton}| (on rappelle que la commande |\alert| s'appuie sur cet environnement
+|{alertenv}|).
\bigskip
@@ -1707,33 +1986,122 @@ que la commande |\alert| s'appuie sur cet environnement |{alertenv}|).
\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|.
+\smallskip
+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|.
\smallskip
-Néanmoins, il est également possible d'extraire les notes de pieds de page avec l'extension \pkg{footnote} ou bien
-l'extension \pkg{footnotehyper}.
+Néanmoins, il est également possible d'extraire les notes de pieds de page avec
+l'extension \pkg{footnote} ou bien l'extension \pkg{footnotehyper}.
\smallskip
-Si \pkg{piton} est chargée avec l'option \Definition{footnote} (avec |\usepackage[footnote]{piton}|) l'extension
-\pkg{footnote} est chargée (si elle ne l'est pas déjà) et elle est utilisée pour extraire les notes de pied de
-page.
+Si \pkg{piton} est chargée avec l'option \Definition{footnote} (avec
+|\usepackage[footnote]{piton}|) l'extension \pkg{footnote} est chargée (si elle ne l'est
+pas déjà) et elle est utilisée pour extraire les notes de pied de page.
\smallskip
-Si \pkg{piton} est chargée avec l'option \Definition{footnotehyper}, l'extension \pkg{footnotehyper} est chargée
-(si elle ne l'est pas déjà) et elle est utilisée pour extraire les notes de pied de page.
+Si \pkg{piton} est chargée avec l'option \Definition{footnotehyper}, l'extension
+\pkg{footnotehyper} est chargée (si elle ne l'est pas déjà) et elle est utilisée pour
+extraire les notes de pied de page.
\smallskip
Attention : Les extensions \pkg{footnote} et \pkg{footnotehyper} sont incompatibles.
-L'extension \pkg{footnotehyper} est le successeur de l'extension \pkg{footnote}
-et devrait être utilisée préférentiellement. L'extension \pkg{footnote} a quelques défauts ;
-en particulier, elle doit être chargée après l'extension \pkg{xcolor} et elle n'est pas parfaitement
-compatible avec \pkg{hyperref}.
+L'extension \pkg{footnotehyper} est le successeur de l'extension \pkg{footnote} et devrait
+être utilisée préférentiellement. L'extension \pkg{footnote} a quelques défauts ; en
+particulier, elle doit être chargée après l'extension \pkg{xcolor} et elle n'est pas
+parfaitement compatible avec \pkg{hyperref}.
+
\medskip
-Dans ce document, l'extension \pkg{piton} a été chargée avec l'option |footnotehyper| et c'est pourquoi des notes
-peuvent être mises dans les environnements |{Piton}| : voir un exemple sur la première page de ce document.
+\textbf{Remarque importante} : Si vous utilisez Beamer, il faut savoir que Beamer a son
+propre système d'extraction des notes de pied de page et vous n'avez donc pas à charger
+\pkg{piton} avec la clé |footnote| ou bien la clé |footnotehyper|.
+
+\bigskip
+Par défaut, une commande |\footnote| ne peut apparaître que dans un «commentaire LaTeX».
+Mais on peut aussi ajouter la commande |\footnote| à la liste des
+\emph{detected-commands} (cf.~partie~\ref{detected-commands},
+p.~\pageref{detected-commands}).
+
+\medskip
+Dans ce document, l'extension \pkg{piton} a été chargée avec l'option |footnotehyper| et
+on rajouté la commande |\footnote| aux \emph{detected-commands} avec le code suivant
+dans la préambule du document LaTeX :
+
+\qquad \verb|\PitonOptions{detected-commands = footnote}|
+
+\begingroup
+\fvset{commandchars=\~\&\@,formatcom=\small\color{gray}}
+\begin{Verbatim}
+\PitonOptions{background-color=gray!15}
+\begin{Piton}
+def arctan(x,n=10):
+ if x < 0:
+ return -arctan(-x)~emphase&\footnote{Un premier appel récursif.}@
+ elif x > 1:
+ return pi/2 - arctan(1/x)~emphase&\footnote{Un deuxième appel récursif.}@
+ else:
+ return sum( (-1)**k/(2*k+1)*x**(2*k+1) for k in range(n) )
+\end{Piton}
+\end{Verbatim}
+\endgroup
+
+\begingroup
+\PitonOptions{background-color=gray!15}
+\begin{Piton}
+def arctan(x,n=10):
+ if x < 0:
+ return -arctan(-x)\footnote{Un premier appel récursif.}
+ elif x > 1:
+ return pi/2 - arctan(1/x)\footnote{Un deuxième appel récursif.}
+ else:
+ return sum( (-1)**k/(2*k+1)*x**(2*k+1) for k in range(n) )
+\end{Piton}
+\endgroup
+
+
+\vspace{1cm}
+
+Si on utilise l'environnement |{Piton}| dans un environnement |{minipage}| de LaTeX, les
+notes sont, bien entendu, composées au bas de l'environnement |{minipage}|. Rappelons
+qu'une telle |{minipage}| ne peut \emph{pas} être coupée par un saut de page.
+
+
+\begingroup
+\fvset{commandchars=\~\&\@,formatcom=\small\color{gray}}
+\begin{Verbatim}
+\PitonOptions{background-color=gray!15}
+\emphase\begin{minipage}{\linewidth}
+\begin{Piton}
+def arctan(x,n=10):
+ if x < 0:
+ return -arctan(-x)~emphase&\footnote{Un premier appel récursif.}@
+ elif x > 1:
+ return pi/2 - arctan(1/x)~emphase&\footnote{Un deuxième appel récursif.}@
+ else:
+ return sum( (-1)**k/(2*k+1)*x**(2*k+1) for k in range(n) )
+\end{Piton}
+\end{minipage}
+\end{Verbatim}
+\endgroup
+
+\begingroup
+\PitonOptions{background-color=gray!15}
+\begin{minipage}{\linewidth}
+\begin{Piton}
+def arctan(x,n=10):
+ if x < 0:
+ return -arctan(-x)\footnote{Un premier appel récursif.}
+ elif x > 1:
+ return pi/2 - arctan(1/x)\footnote{Un deuxième appel récursif.}
+ else:
+ return sum( (-1)**k/(2*k+1)*x**(2*k+1) for k in range(n) )
+\end{Piton}
+\end{minipage}
+\endgroup
+
+
\subsection{Tabulations}
@@ -1741,15 +2109,21 @@ peuvent être mises dans les environnements |{Piton}| : voir un exemple sur la p
\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
-valeur initiale de~$n$ est~4 mais on peut la changer avec la clé \Definition{tab-size} de |\PitonOptions|.
+Même s'il est sans doute recommandable d'indenter les listings informatiques avec des
+espaces et non des tabulations\footnote{Voir, par exemple, pour le langage Piton, la note 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 valeur initiale de~$n$ est~4 mais on
+peut la changer avec la clé \Definition{tab-size} de |\PitonOptions|.
+
+\smallskip
+Il existe aussi une clé \Definition{tabs-auto-gobble} qui détermine le nombre minimal de
+caractères U+0009 débutant chaque ligne (non vide) de l'environnement |{Piton}| et
+applique |gobble| avec cette valeur (avant le remplacement des caractères U+0009 par des
+espaces, bien entendu). Cette clé est donc similaire à la clé |auto-gobble| mais agit sur
+des caractères U+0009 au lieu de caractères U+0020 (espaces).
\smallskip
-Il existe aussi une clé \Definition{tabs-auto-gobble} qui détermine le nombre minimal de caractères U+0009 débutant
-chaque ligne (non vide) de l'environnement |{Piton}| et applique |gobble| avec cette valeur (avant le remplacement
-des caractères U+0009 par des espaces, bien entendu). Cette clé est donc similaire à la clé |auto-gobble| mais agit
-sur des caractères U+0009 au lieu de caractères U+0020 (espaces).
+La clé |env-gobble| n'est pas compatible avec les tabulations.
\section{API pour les développeurs}
@@ -1758,34 +2132,34 @@ sur des caractères U+0009 au lieu de caractères U+0020 (espaces).
\index{piton.last@\texttt{piton.get\_last\_code} (fonction Lua)}
\label{API}
-La variable L3 |\l_piton_language_str| contient le nom du langage courant (en minuscules).
+La variable L3 \DefinitionCommand{l_piton_language_str} contient le nom du langage courant
+(en minuscules).
\bigskip
-\colorbox{yellow!50}{\textbf{Nouveau 2.6}}\par\nobreak
-
-L'extension \pkg{piton} fournit une fonction Lua |piton.get_last_code| sans argument permettant de récupérer le
-code contenu dans le dernier environnement de \pkg{piton}.
+L'extension \pkg{piton} fournit une fonction Lua \Definition{piton.get_last_code} sans
+argument permettant de récupérer le code contenu dans le dernier environnement de \pkg{piton}.
\begin{itemize}
-\item Les retours à la ligne (présents dans l'environnement de départ) apparaissent comme des caractères |\r|
-(c'est-à-dire des caractères U+000D).
+\item Les retours à la ligne (présents dans l'environnement de départ) apparaissent comme
+des caractères |\r| (c'est-à-dire des caractères U+000D).
-\item Le code fourni par |piton.get_last_code()| tient compte de l'éventuelle application d'une clé |gobble| (cf.
-p.~\pageref{gobble}).
+\item Le code fourni par |piton.get_last_code()| tient compte de l'éventuelle application
+d'une clé |gobble| (cf. p.~\pageref{gobble}).
-\item Les surcharges du code (qui entraînent des échappements vers LaTeX) ont été retirées du code fourni par
-|piton.get_last_code()|. Cela s'applique aux commandes LaTeX déclarées par la clé |detected-commands| (cf.
-partie~\ref{detected-commands}) et aux éléments insérés avec le mécanisme «|escape|» (cf. partie~\ref{escape}).
+\item Les surcharges du code (qui entraînent des échappements vers LaTeX) ont été retirées
+du code fourni par |piton.get_last_code()|. Cela s'applique aux commandes LaTeX déclarées
+par la clé |detected-commands| (cf. partie~\ref{detected-commands}) et aux éléments
+insérés avec le mécanisme «|escape|» (cf. partie~\ref{escape}).
-\item |piton.get_last_code| est une fonction Lua et non une chaîne de caractères : les traitements présentés
-précédemment sont exécutés lorsque la fonction est appelée. De ce fait, il peut être judicieux de stocker la valeur
-renvoyée par |piton.get_last_code()| dans une variable Lua si on doit l'utiliser plusieurs fois.
+\item |piton.get_last_code| est une fonction Lua et non une chaîne de caractères : les
+traitements présentés précédemment sont exécutés lorsque la fonction est appelée. De ce
+fait, il peut être judicieux de stocker la valeur renvoyée par |piton.get_last_code()|
+dans une variable Lua si on doit l'utiliser plusieurs fois.
\end{itemize}
\medskip
-Pour un exemple d'utilisation, voir la partie concernant l'utilisation (standard) de \pkg{pyluatex},
-partie~\ref{pyluatex}, p.~\pageref{pyluatex}.
-
+Pour un exemple d'utilisation, voir la partie concernant l'utilisation (standard) de
+\pkg{pyluatex}, partie~\ref{pyluatex}, p.~\pageref{pyluatex}.
\section{Exemples}
@@ -1794,18 +2168,21 @@ partie~\ref{pyluatex}, p.~\pageref{pyluatex}.
\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|.
+On rappelle que l'on peut demander la numérotation des lignes des listings avec la clé
+|line-numbers| (utilisée sans valeur).
-Par défaut, les numéros de ligne sont composés par \pkg{piton} en débordement à gauche (en utilisant en interne la commande |\llap| de LaTeX).
+Par défaut, les numéros de ligne sont composés par \pkg{piton} en débordement à gauche (en
+utilisant en interne la commande |\llap| de LaTeX).
-Si on ne veut pas de débordement, on peut utiliser l'option |left-margin=auto| qui va insérer une marge adaptée aux
-numéros qui seront insérés (elle est plus large quand les numéros dépassent 10).
+Si on ne veut pas de débordement, on peut utiliser l'option |left-margin=auto| qui va
+insérer une marge adaptée aux numéros qui seront insérés (elle est plus large quand les
+numéros dépassent 10).
\begingroup
\fvset{commandchars=\~\&\@,formatcom=\small\color{gray}}
\begin{Verbatim}
-~emphase&\PitonOptions{background-color=gray!10, left-margin = auto, line-numbers}@
+~emphase&\PitonOptions{background-color=gray!15, left-margin = auto, line-numbers}@
\begin{Piton}
def arctan(x,n=10):
if x < 0:
@@ -1821,7 +2198,7 @@ def arctan(x,n=10):
\begingroup
-\PitonOptions{background-color=gray!10,left-margin = auto, line-numbers}
+\PitonOptions{background-color=gray!15,left-margin = auto, line-numbers}
\begin{Piton}
def arctan(x,n=10):
if x < 0:
@@ -1841,13 +2218,13 @@ def arctan(x,n=10):
\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.
+On peut modifier le style |Comment.LaTeX| (avec |\SetPitonStyle|) pour faire afficher les
+commentaires LaTeX (qui débutent par |#>|) en butée à droite.
\begingroup
\fvset{commandchars=\~\&\@,formatcom=\small\color{gray}}
\begin{Verbatim}
-\PitonOptions{background-color=gray!10}
+\PitonOptions{background-color=gray!15}
~emphase&\SetPitonStyle{Comment.LaTeX = \hfill \normalfont\color{gray}}@
\begin{Piton}
def arctan(x,n=10):
@@ -1862,7 +2239,7 @@ def arctan(x,n=10):
\endgroup
\begingroup
-\PitonOptions{background-color=gray!10}
+\PitonOptions{background-color=gray!15}
\SetPitonStyle{Comment.LaTeX = \hfill \normalfont\color{gray}}
\begin{Piton}
def arctan(x,n=10):
@@ -1876,16 +2253,16 @@ def arctan(x,n=10):
\endgroup
-\vspace{1cm}
-On peut aussi faire afficher les commentaires dans une deuxième colonne à droite si on limite la largeur du code
-proprement dit avec la clé |width|. Dans l'exemple qui suit, on utilise la clé |width| avec la valeur
-spéciale~|min|. Plusieurs compilations sont nécessaires.
+\vspace{1cm} On peut aussi faire afficher les commentaires dans une deuxième colonne à
+droite si on limite la largeur du code proprement dit avec la clé |width|. Dans l'exemple
+qui suit, on utilise la clé |width| avec la valeur spéciale~|min|. Plusieurs compilations
+sont nécessaires.
\begingroup
\fvset{commandchars=\~\&\@,formatcom=\small\color{gray}}
\begin{Verbatim}
-\PitonOptions{width=min, background-color=gray!10}
+\PitonOptions{width=min, background-color=gray!15}
~emphase&\NewDocumentCommand{\MyLaTeXCommand}{m}{\hfill \normalfont\itshape\rlap{\quad #1}}@
~emphase&\SetPitonStyle{Comment.LaTeX = \MyLaTeXCommand}@
\begin{Piton}
@@ -1906,7 +2283,7 @@ def arctan(x,n=10):
\begingroup
-\PitonOptions{width = min, background-color=gray!10}
+\PitonOptions{width = min, background-color=gray!15}
\NewDocumentCommand{\MyLaTeXCommand}{m}{\hfill \normalfont\itshape\rlap{\quad #1}}
\SetPitonStyle{Comment.LaTeX = \MyLaTeXCommand}
\begin{Piton}
@@ -1925,105 +2302,18 @@ def arctan(x,n=10):
\bigskip
-\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|.
-
-Bien entendu, une commande |\footnote| ne peut apparaître que dans un commentaire LaTeX (qui débute par |#>|). Un
-tel commentaire peut se limiter à cette unique commande |\footnote|, comme dans l'exemple suivant.
-
-\begingroup
-\fvset{commandchars=\~\&\@,formatcom=\small\color{gray}}
-\begin{Verbatim}
-\PitonOptions{background-color=gray!10}
-\begin{Piton}
-def arctan(x,n=10):
- if x < 0:
- return -arctan(-x)~emphase&#>\footnote{Un premier appel récursif.}]@
- elif x > 1:
- return pi/2 - arctan(1/x)~emphase&#>\footnote{Un deuxième appel récursif.}@
- else:
- return sum( (-1)**k/(2*k+1)*x**(2*k+1) for k in range(n) )
-\end{Piton}
-\end{Verbatim}
-\endgroup
-
-\begingroup
-\PitonOptions{background-color=gray!10}
-\begin{Piton}
-def arctan(x,n=10):
- if x < 0:
- return -arctan(-x)#>\footnote{Un premier appel récursif.}
- elif x > 1:
- return pi/2 - arctan(1/x)#>\footnote{Un deuxième appel récursif.}
- else:
- return sum( (-1)**k/(2*k+1)*x**(2*k+1) for k in range(n) )
-\end{Piton}
-\endgroup
-
-
-\vspace{1cm}
-
-Si on utilise l'environnement |{Piton}| dans un environnement |{minipage}| de LaTeX, les notes sont, bien entendu,
-composées au bas de l'environnement |{minipage}|. Rappelons qu'une telle |{minipage}| ne peut être coupée par un
-saut de page.
-
-
-\begingroup
-\fvset{commandchars=\~\&\@,formatcom=\small\color{gray}}
-\begin{Verbatim}
-\PitonOptions{background-color=gray!10}
-\emphase\begin{minipage}{\linewidth}
-\begin{Piton}
-def arctan(x,n=10):
- if x < 0:
- return -arctan(-x)~emphase&#>\footnote{Un premier appel récursif.}@
- elif x > 1:
- return pi/2 - arctan(1/x)~emphase&#>\footnote{Un deuxième appel récursif.}@
- else:
- return sum( (-1)**k/(2*k+1)*x**(2*k+1) for k in range(n) )
-\end{Piton}
-\end{minipage}
-\end{Verbatim}
-\endgroup
-
-\begingroup
-\PitonOptions{background-color=gray!10}
-\begin{minipage}{\linewidth}
-\begin{Piton}
-def arctan(x,n=10):
- if x < 0:
- return -arctan(-x)#>\footnote{Un premier appel récursif.}
- elif x > 1:
- return pi/2 - arctan(1/x)#>\footnote{Un deuxième appel récursif.}
- else:
- return sum( (-1)**k/(2*k+1)*x**(2*k+1) for k in range(n) )
-\end{Piton}
-\end{minipage}
-\endgroup
-
-
-\bigskip
-
\subsection{Un exemple de réglage des styles}
Les styles graphiques ont été présentés à la partie \ref{styles}, p.~\pageref{styles}.
\smallskip
-On présente ici un réglage de ces styles adapté pour les documents en noir et blanc. On l'utilise avec la fonte
-\emph{DejaVu Sans Mono}\footnote{Voir: \url{https://dejavu-fonts.github.io}} spécifiée avec la commande
- |\setmonofont| de \pkg{fontspec}.
+On présente ici un réglage de ces styles adapté pour les documents en noir et blanc.
-Ce réglage utilise la commande |\highLight| de \pkg{lua-ul} (cette extension nécessite elle-même l'extension \pkg{luacolor}).
+Ce réglage utilise la commande |\highLight| de \pkg{lua-ul} (cette extension nécessite
+elle-même l'extension \pkg{luacolor}).
\begin{Verbatim}
-\setmonofont[Scale=0.85]{DejaVu Sans Mono}
-
\SetPitonStyle
{
Number = ,
@@ -2044,16 +2334,14 @@ Ce réglage utilise la commande |\highLight| de \pkg{lua-ul} (cette extension n
\end{Verbatim}
-Dans ce réglage, de nombreuses valeurs fournies aux clés sont vides, ce qui signifie que le style correspondant
-n'insèrera aucune instruction de formatage (l'élément sera composé dans la couleur standard, le plus souvent, en noir,
-etc.). Ces entrées avec valeurs nulles sont néanmoins nécessaires car la valeur initiale de ces styles dans
-\pkg{piton} n'est \emph{pas} vide.
+Dans ce réglage, de nombreuses valeurs fournies aux clés sont vides, ce qui signifie que
+le style correspondant n'insèrera aucune instruction de formatage (l'élément sera composé
+dans la couleur standard, le plus souvent, en noir, etc.). Ces entrées avec valeurs nulles
+sont néanmoins nécessaires car la valeur initiale de ces styles dans \pkg{piton} n'est
+\emph{pas} vide.
\begingroup
-
-\setmonofont[Scale=0.85]{DejaVu Sans Mono}
-
\SetPitonStyle
{
Number = ,
@@ -2105,11 +2393,13 @@ def arctan(x,n=10):
\label{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|).
+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|).
-Voici, à titre d'exemple, un environnement |{PitonExecute}| qui formate un listing Python (avec \pkg{piton}) et qui
-affiche également dessous le résultat de l'exécution de ce code avec Python.
+Voici, à titre d'exemple, un environnement |{PitonExecute}| qui formate un listing Python
+(avec \pkg{piton}) et qui affiche également dessous le résultat de l'exécution de ce code
+avec Python.
\begin{Verbatim}
@@ -2129,12 +2419,12 @@ affiche également dessous le résultat de l'exécution de ce code avec Python.
\ignorespacesafterend}
-On a utilisé la fonction Lua |piton.get_last_code| fournie dans l'API de \pkg{piton} : cf.~partie~\ref{API},
-p.~\pageref{API}.
+ On a utilisé la fonction Lua |piton.get_last_code| fournie dans l'API de \pkg{piton} :
+ cf.~partie~\ref{API}, p.~\pageref{API}.
\bigskip
-Cet environnement |{PitonExecute}| prend en argument optionnel (entre crochets) les options proposées par la
-commande |\PitonOptions|.
+Cet environnement |{PitonExecute}| prend en argument optionnel (entre crochets) les
+options proposées par la commande |\PitonOptions|.
\begin{Verbatim}
\begin{~emphase#PitonExecute@}[background-color=gray!15]
@@ -2162,23 +2452,26 @@ print(f'Le carré de 12 est {carré(12)}.')
\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é
-demandé d'être affiché avec des \piton{print} de Python).
+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é demandé d'être affiché avec des \piton{print} de Python).
\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é
-|prompt-background-color| de |\PitonOptions|).
+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é |prompt-background-color| de
+|\PitonOptions|).
\medskip
-Voici la programmation d'un environnement |{PitonREPL}| qui effectue ce travail (pour des raisons techniques, le
-|!| est ici obligatoire dans la signature de l'environnement). On ne peut pas procéder comme précédemment (dans
-l'utilisation «standard» de \pkg{pyluatex}) car, bien sûr, c'est le retour fait par |{pythonrepl}| qui doit être
-traité par \pkg{piton}. De ce fait, il ne sera pas possible de mettre des surcharges (avec |detected-commands| ou
-le mécanisme |escape|) dans le code.
+Voici la programmation d'un environnement |{PitonREPL}| qui effectue ce travail (pour des
+raisons techniques, le |!| est ici obligatoire dans la signature de l'environnement). On
+ne peut pas procéder comme précédemment (dans l'utilisation «standard» de \pkg{pyluatex})
+car, bien sûr, c'est le retour fait par |{pythonrepl}| qui doit être traité par
+\pkg{piton}. De ce fait, il ne sera pas possible de mettre des surcharges (avec
+|detected-commands| ou le mécanisme |escape|) dans le code.
\begin{Verbatim}
\ExplSyntaxOn
@@ -2187,7 +2480,7 @@ le mécanisme |escape|) dans le code.
\PitonOptions
{
background-color=white,
- ~emphase#prompt-background-color = gray!10@,
+ ~emphase#prompt-background-color = gray!15@,
~#1
}
\PyLTVerbatimEnv
@@ -2214,7 +2507,7 @@ Voici un exemple d'utilisation de ce nouvel environnement |{PitonREPL}|.
\begin{Verbatim}
~emphase#\begin{PitonREPL}@
def valeur_absolue(x):
- "Renvoie la valeur absolue de x"
+ """Renvoie la valeur absolue de x"""
if x > 0:
return x
else:
@@ -2231,7 +2524,7 @@ Voici un exemple d'utilisation de ce nouvel environnement |{PitonREPL}|.
\ExplSyntaxOn
\NewDocumentEnvironment { PitonREPL } { }
{
- \PitonOptions{background-color=white,prompt-background-color = gray!10}
+ \PitonOptions{background-color=white,prompt-background-color = gray!15}
\PyLTVerbatimEnv
\begin{pythonrepl}
}
@@ -2250,7 +2543,7 @@ Voici un exemple d'utilisation de ce nouvel environnement |{PitonREPL}|.
\begin{PitonREPL}
def valeur_absolue(x):
- "Renvoie la valeur absolue de x"
+ """Renvoie la valeur absolue de x"""
if x > 0:
return x
else:
@@ -2263,11 +2556,12 @@ Voici un exemple d'utilisation de ce nouvel environnement |{PitonREPL}|.
\bigskip
-En fait, il est possible de ne pas faire afficher les prompts eux-mêmes (c'est-à-dire les chaînes de caractères
-|>>>| et |...|). En effet, \pkg{piton} propose un style pour ces éléments, qui est appelé |Prompt|. Par défaut, la
-valeur de ce style est vide, ce qui fait qu'aucune action n'est exécutée sur ces éléments qui sont donc affichés
-tels quels. En fournissant comme valeur une fonction qui se contente de gober son argument, on peut demander à ce
-qu'ils ne soient pas affichés.
+En fait, il est possible de ne pas faire afficher les prompts eux-mêmes (c'est-à-dire les
+chaînes de caractères |>>>| et |...|). En effet, \pkg{piton} propose un style pour ces
+éléments, qui est appelé |Prompt|. Par défaut, la valeur de ce style est vide, ce qui fait
+qu'aucune action n'est exécutée sur ces éléments qui sont donc affichés tels quels. En
+fournissant comme valeur une fonction qui se contente de gober son argument, on peut
+demander à ce qu'ils ne soient pas affichés.
\bigskip
\begin{savenotes}
@@ -2292,7 +2586,7 @@ L'exemple précédent donne alors :
\begin{Verbatim}
~emphase#\begin{PitonREPL}@
def valeur_absolue(x):
- "Renvoie la valeur absolue de x"
+ """Renvoie la valeur absolue de x"""
if x > 0:
return x
else:
@@ -2308,7 +2602,7 @@ L'exemple précédent donne alors :
\begin{PitonREPL}
def valeur_absolue(x):
- "Renvoie la valeur absolue de x"
+ """Renvoie la valeur absolue de x"""
if x > 0:
return x
else:
@@ -2328,62 +2622,72 @@ L'exemple précédent donne alors :
\subsection{Le langage Python}
-Le langage par défaut de l'extension \pkg{piton} est Python. Si besoin est, on peut revenir au langage Python avec
-|\PitonOptions{language=Python}|.
+Le langage par défaut de l'extension \pkg{piton} est Python. Si besoin est, on peut
+revenir au langage Python avec |\PitonOptions{language=Python}|.
\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 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}}|}
+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 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}}|}
\vspace{1cm}
\begin{center}
-\begin{tabularx}{0.9\textwidth}{@{}>{\ttfamily}l>{\raggedright\arraybackslash}X@{}}
- \toprule
- \normalfont Style & Usage \\
- \midrule
- Number & les nombres \\
- String.Short & les chaînes de caractères courtes (entre \texttt{'} ou \texttt{"}) \\
- String.Long & les chaînes de caractères longues (entre \texttt{'''} ou \texttt{"""}) sauf les chaînes de
- documentation (qui sont gérées par |String.Doc|)\\
- String & cette clé fixe à la fois |String.Short| et |String.Long| \\
- String.Doc & les chaînes de documentation (seulement entre |"""| suivant PEP~257) \\
- String.Interpol & les éléments syntaxiques des champs des f-strings (c'est-à-dire les caractères \texttt{\{} et
- \texttt{\}}) ; ce style hérite des styles |String.Short| et |String.Long| (suivant la chaîne où
- apparaît l'interpolation)\\
- 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+|+ |@| \\
- 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|@|) \\
- Name.Namespace & le nom des modules (= bibliothèques extérieures) \\
- Name.Class & le nom des classes au moment de leur définition, c'est-à-dire après le mot-clé \verb|class| \\
- Name.Function & le nom des fonctions définies par l'utilisateur \emph{au moment de leur définition} (après le
- mot-clé |def|) \\
- 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) \\
- Exception & les exceptions prédéfinies (ex.: \texttt{SyntaxError}) \\
- InitialValues & les valeurs initiales (et le symbole |=| qui précède) des arguments optionnels dans les définitions
- de fonctions ; 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.\\
- Comment & les commentaires commençant par \texttt{\#} \\
- Comment.LaTeX & les commentaires commençant par \texttt{\#>} qui sont composés par \pkg{piton} comme du code LaTeX (et
- appelés simplement «commentaires LaTeX» dans ce document) \\
- Keyword.Constant & |True|, |False| et |None| \\
- Keyword & les mots-clés suivants :
- \ttfamily assert, break, case, continue, del,
- elif, else, except, exec, finally, for, from,
- global, if, import, lambda, non local,
- pass, raise, return, try, while,
- with, yield et yield from.\\
- \bottomrule
+\begin{tabularx}{\textwidth}{@{}>{\ttfamily}l>{\raggedright\arraybackslash}X@{}}
+\toprule
+\normalfont Style & Usage \\
+\midrule
+Number & les nombres \\
+String.Short & les chaînes de caractères courtes (entre \texttt{'} ou \texttt{"}) \\
+String.Long & les chaînes de caractères longues (entre \texttt{'''} ou \texttt{"""})
+ sauf les chaînes de documentation (qui sont gérées par |String.Doc|)\\
+String & cette clé fixe à la fois |String.Short| et |String.Long| \\
+String.Doc & les chaînes de documentation (seulement entre |"""| suivant PEP~257) \\
+String.Interpol & les éléments syntaxiques des champs des f-strings (c'est-à-dire les
+ caractères \texttt{\{} et \texttt{\}}) ; ce style hérite des styles
+ |String.Short| et |String.Long| (suivant la chaîne où apparaît
+ l'interpolation)\\
+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+|+ |@| \\
+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|@|) \\
+Name.Namespace & le nom des modules (= bibliothèques extérieures) \\
+Name.Class & le nom des classes au moment de leur définition, c'est-à-dire après le
+ mot-clé \verb|class| \\
+Name.Function & le nom des fonctions définies par l'utilisateur \emph{au moment de leur
+ définition} (après le mot-clé |def|) \\
+UserFunction & le nom des fonctions précédemment définies par l'utilisateur (la valeur
+ initiale de ce paramètre est {\ttfamily \textbackslash
+ PitonStyle\{Identifier\}}, ce qui fait que ces noms de fonctions sont
+ affichés comme les identifiants) \\
+Exception & les exceptions prédéfinies (ex.: \texttt{SyntaxError}) \\
+InitialValues & les valeurs initiales (et le symbole |=| qui précède) des arguments
+ optionnels dans les définitions de fonctions ; 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.\\
+Comment & les commentaires commençant par \texttt{\#} \\
+Comment.LaTeX & les commentaires commençant par \texttt{\#>} qui sont composés par
+ \pkg{piton} comme du code LaTeX (et appelés simplement «commentaires
+ LaTeX» dans ce document) \\
+Keyword.Constant & |True|, |False| et |None| \\
+Keyword & les mots-clés suivants :
+ \ttfamily assert, break, case, continue, del,
+ elif, else, except, exec, finally, for, from,
+ global, if, import, in, lambda, non local,
+ pass, raise, return, try, while,
+ with, yield et yield from.\\
+Identifier & les identificateurs. \\
+\bottomrule
\end{tabularx}
\end{center}
@@ -2392,23 +2696,10 @@ tel qu'il est appliqué au langage Python par Pygments.\footnote{Voir \url{https
\subsection{Le langage OCaml}
-On peut basculer vers le langage |OCaml| avec |\PitonOptions{language = OCaml}|
-
-\bigskip
-On peut aussi choisir le langage |OCaml| pour un environnement |{Piton}| individuel :
-%
-\begin{Verbatim}
-\begin{Piton}~emphase#[language=OCaml]@
-...
-\end{Piton}
-\end{Verbatim}
+On peut basculer vers le langage |OCaml| avec la clé |language| : |language = OCaml|
\bigskip
-L'option est aussi disponible pour |\PitonInputFile| : |\PitonInputFile[language=OCaml]{...}|
-
-
-\vspace{1cm}
\begin{center}
@@ -2421,30 +2712,32 @@ L'option est aussi disponible pour |\PitonInputFile| : |\PitonInputFile[language
String.Long & les chaînes de caractères, entre |"| mais aussi les \emph{quoted-strings} \\
String & cette clé fixe à la fois |String.Short| et |String.Long| \\
Operator & les opérateurs, en particulier |+|, |-|, |/|, |*|, |@|, |!=|, |==|, |&&| \\
- Operator.Word & les opérateurs suivants : |and|, |asr|, |land|, |lor|, |lsl|, |lxor|, |mod| et |or| \\
+ Operator.Word & les opérateurs suivants : |asr|, |land|, |lor|, |lsl|, |lxor|,
+ |mod| et |or| \\
Name.Builtin & les fonctions |not|, |incr|, |decr|, |fst| et |snd| \\
Name.Type & le nom des types OCaml \\
Name.Field & le nom d'un champ de module \\
Name.Constructor & le nom des constructeurs de types (qui débutent par une majuscule) \\
Name.Module & le nom des modules \\
- Name.Function & le nom des fonctions définies par l'utilisateur \emph{au moment de leur définition} (après le
- mot-clé |let|) \\
- 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) \\
+ Name.Function & le nom des fonctions définies par l'utilisateur \emph{au moment de leur
+ définition} (après le mot-clé |let|) \\
+ UserFunction & le nom des fonctions précédemment définies par l'utilisateur (la valeur
+ initiale de ce paramètre est {\ttfamily \textbackslash
+ PitonStyle\{Identifier\}}, ce qui fait que ces noms de fonctions sont
+ affichés comme les identifiants) \\
Exception & les exceptions prédéfinies (ex. : |End_of_File|) \\
TypeParameter & les paramétreurs de type \\
Comment & les commentaires, entre |(*| et |*)| ; ces commentaires peuvent être imbriqués \\
Keyword.Constant & |true| et |false| \\
Keyword & les mots-clés suivants :
- |assert|, |as|, |begin|, |class|, |constraint|, |done|,
- |downto|, |do|, |else|, |end|, |exception|, |external|,
- |for|, |function|, |functor|, |fun| , |if|
- |include|, |inherit|, |initializer|, |in| , |lazy|, |let|,
- |match|, |method|, |module|, |mutable|, |new|, |object|,
- |of|, |open|, |private|, |raise|, |rec|, |sig|,
- |struct|, |then|, |to|, |try|, |type|,
- |value|, |val|, |virtual|, |when|, |while| et |with| \\
+ |assert|, |as|, |done|, |downto|, |do|, |else|, |exception|, |for|, |function| ,
+ |fun|, |if|, |lazy|, |match|, |mutable|, |new|, |of|, |private|, |raise|,
+ |then|, |to|, |try| , |virtual|, |when|, |while| et |with| \\
+ Keyword.Governing & les mot-clés suivants : |and|, |begin|, |class|, |constraint|,
+ |end|, |external|, |functor|, |include|, |inherit|, |initializer|,
+ |in|, |let|, |method|, |module|, |object|, |open|, |rec|, |sig|,
+ |struct|, |type| et |val|. \\
+ Identifier & les identificateurs. \\
\bottomrule
\end{tabularx}
\end{center}
@@ -2454,21 +2747,10 @@ L'option est aussi disponible pour |\PitonInputFile| : |\PitonInputFile[language
\subsection[Le langage C (et C++)]{Le langage C (et \CC)}
-On peut basculer vers le langage |C| avec |\PitonOptions{language = C}|
+On peut basculer vers le langage |C| avec la clé |language| : |language = C|
-\bigskip
-On peut aussi choisir le langage |C| pour un environnement |{Piton}| individuel :
-%
-\begin{Verbatim}
-\begin{Piton}~emphase#[language=C]@
-...
-\end{Piton}
-\end{Verbatim}
\bigskip
-L'option est aussi disponible pour |\PitonInputFile| : |\PitonInputFile[language=C]{...}|
-
-\vspace{1cm}
\begin{center}
\begin{tabularx}{0.9\textwidth}{@{}>{\ttfamily}l>{\raggedright\arraybackslash}X@{}}
@@ -2477,29 +2759,37 @@ L'option est aussi disponible pour |\PitonInputFile| : |\PitonInputFile[language
\midrule
Number & les nombres \\
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| \\
+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+|+ |@| \\
-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é |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) \\
+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é |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 {\ttfamily \textbackslash
+ PitonStyle\{Identifier\}}, ce qui fait que ces noms de fonctions sont
+ affichés comme les identifiants) \\
Preproc & les instructions du préprocesseur (commençant par |#|) \\
Comment & les commentaires (commençant par \texttt{//} ou entre |/*| et |*/|) \\
-Comment.LaTeX & les commentaires commençant par \texttt{//>} qui sont composés par \pkg{piton} comme du code LaTeX (et
- appelés simplement «commentaires LaTeX» dans ce document) \\
+Comment.LaTeX & les commentaires commençant par \texttt{//>} qui sont composés par
+ \pkg{piton} comme du code LaTeX (et appelés simplement «commentaires
+ LaTeX» dans ce document) \\
Keyword.Constant & |default|, |false|, |NULL|, |nullptr| et |true| \\
-Keyword & les mots-clés suivants :
-|alignas|, |asm|, |auto|, |break|, |case|, |catch|, |class|,
-|constexpr|, |const|, |continue|, |decltype|, |do|, |else|, |enum|,
-|extern|, |for|, |goto|, |if|, |nexcept|, |private|, |public|, |register|, |restricted|, |try|,
-|return|, |static|, |static_assert|, |struct|, |switch|, |thread_local|, |throw|,
-|typedef|, |union|, |using|, |virtual|, |volatile| et |while|
+Keyword & les mots-clés suivants : |alignas|, |asm|, |auto|, |break|, |case|, |catch|,
+ |class|, |constexpr|, |const|, |continue|, |decltype|, |do|, |else|, |enum|,
+ |extern|, |for|, |goto|, |if|, |nexcept|, |private|, |public|, |register|,
+ |restricted|, |try|, |return|, |static|, |static_assert|, |struct|, |switch|,
+ |thread_local|, |throw|, |typedef|, |union|, |using|, |virtual|, |volatile| et
+ |while|
\\
+Identifier & les identificateurs. \\
\bottomrule
\end{tabularx}
\end{center}
@@ -2509,22 +2799,10 @@ Keyword & les mots-clés suivants :
\subsection{Le langage SQL}
-On peut basculer vers le langage |SQL| avec |\PitonOptions{language = SQL}|
+On peut basculer vers le langage |SQL| avec la clé |language| : |language = SQL|
-\bigskip
-On peut aussi choisir le langage |SQL| pour un environnement |{Piton}| individuel :
-%
-\begin{Verbatim}
-\begin{Piton}~emphase#[language=SQL]@
-...
-\end{Piton}
-\end{Verbatim}
\bigskip
-L'option est aussi disponible pour |\PitonInputFile| : |\PitonInputFile[language=SQL]{...}|
-
-
-\vspace{1cm}
\begin{center}
\begin{tabularx}{0.9\textwidth}{@{}>{\ttfamily}l>{\raggedright\arraybackslash}X@{}}
@@ -2534,35 +2812,72 @@ L'option est aussi disponible pour |\PitonInputFile| : |\PitonInputFile[language
Number & les nombres \\
String.Long & les chaînes de caractères (entre \texttt{'} et non entre \texttt{"} car les éléments entre \texttt{"}
sont des noms de champs et formatés avec |Name.Field|) \\
-Operator & les opérateurs suivants :
-\texttt{= != <> >= > < <= * + / } \\
+Operator & les opérateurs suivants : \texttt{= != <> >= > < <= * + / } \\
Name.Table & les noms des tables \\
Name.Field & les noms des champs des tables \\
-Name.Builtin & les fonctions prédéfinies suivantes (leur nom n'est \emph{pas} sensible à la casse) :
- |avg|, |count|, |char_lenght|, |concat|, |curdate|, |current_date|,
- |date_format|, |day|, |lower|, |ltrim|, |max|, |min|, |month|, |now|,
- |rank|, |round|, |rtrim|, |substring|, |sum|, |upper| et |year|. \\
+Name.Builtin & les fonctions prédéfinies suivantes (leur nom n'est \emph{pas} sensible à
+ la casse) : |avg|, |count|, |char_lenght|, |concat|, |curdate|,
+ |current_date|, |date_format|, |day|, |lower|, |ltrim|, |max|, |min|,
+ |month|, |now|, |rank|, |round|, |rtrim|, |substring|, |sum|, |upper| et
+ |year|. \\
Comment & les commentaires (débutant par |--| ou bien entre |/*| et |*/|) \\
-Comment.LaTeX & les commentaires commençant par \texttt{-->} qui sont composés par \pkg{piton} comme du code LaTeX (et
- appelés simplement «commentaires LaTeX» dans ce document) \\
-Keyword & les mots-clés suivants (leur nom n'est \emph{pas} sensible à la casse) :
- |add|, |after|, |all|, |alter|, |and|, |as|, |asc|, |between|, |by|,
- |change|, |column|, |create|, |cross join|, |delete|, |desc|, |distinct|,
- |drop|, |from|, |group|, |having|, |in|, |inner|, |insert|, |into|, |is|,
- |join|, |left|, |like|, |limit|, |merge|, |not|, |null|, |on|, |or|,
- |order|, |over|, |right|, |select|, |set|, |table|, |then|, |truncate|,
- |union|, |update|, |values|, |when|, |where| et |with|. \\
+Comment.LaTeX & les commentaires commençant par \texttt{-->} qui sont composés par
+ \pkg{piton} comme du code LaTeX (et appelés simplement «commentaires
+ LaTeX» dans ce document) \\
+Keyword & les mots-clés suivants (leur nom n'est \emph{pas} sensible à la casse) : |add|,
+ |after|, |all|, |alter|, |and|, |as|, |asc|, |between|, |by|, |change|,
+ |column|, |create|, |cross join|, |delete|, |desc|, |distinct|, |drop|, |from|,
+ |group|, |having|, |in|, |inner|, |insert|, |into|, |is|, |join|, |left|,
+ |like|, |limit|, |merge|, |not|, |null|, |on|, |or|, |order|, |over|, |right|,
+ |select|, |set|, |table|, |then|, |truncate|, |union|, |update|, |values|,
+ |when|, |where| et |with|. \\
\bottomrule
\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 :
+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
+
+\subsection{Les langages définis par la commande \textbackslash NewPitonLanguage}
+
+\indexcommand{NewPitonLanguage}
+
+\vspace{1cm}
+La commande |\NewPitonLanguage|, qui permet de définir de nouveaux langages en utilisant
+la syntaxe de l'extension \pkg{listings}, a été présentée p.~\pageref{NewPitonLanguage}.
+
+Tous les langages définis avec la commande |\NewPitonLanguage| partagent les mêmes styles.
+
+\vspace{1cm}
+
+\begin{center}
+\begin{tabularx}{0.9\textwidth}{@{}>{\ttfamily}l>{\raggedright\arraybackslash}X@{}}
+\toprule
+\normalfont Style & Usage \\
+\midrule
+Number & les nombres \\
+String.Long & les chaînes de caractères définies dans |\NewPitonLanguage| par la clé
+ |morestring| \\
+Comment & les commentaires définis dans |\NewPitonLanguage| par la clé |morecomment| \\
+Comment.LaTeX & les commentaires qui sont composés par \pkg{piton} comme du code LaTeX (et
+ appelés simplement «commentaires LaTeX» dans ce document) \\
+Keyword & les mots-clés, définis dans |\NewPitonLanguage| par les clés |morekeywords| et
+ |moretexcs| (et également la clé |sensitive| qui indique si les mots-clés sont
+ sensibles à la casse) \\
+Directive & les directives définies dans |\NewPitonLanguage| par la clé |moredirectives| \\
+Tag & les «tags» définis par la clé |tag| (les lexèmes détectés à l'intérieur d'un tag
+ seront aussi composés avec leur propre style) \\
+Identifier & les identificateurs. \\
+\bottomrule
+\end{tabularx}
+\end{center}
+
\newpage
@@ -2573,22 +2888,10 @@ localement pour le langage SQL avec l'instruction :
\label{minimal}
\index{minimal (langage «minimal»)}
-On peut basculer vers le langage «|minimal|» avec |\PitonOptions{language = minimal}|
+On peut basculer vers le langage «|minimal|» avec la clé |language| : |language = minimal|
-\bigskip
-On peut aussi choisir le langage «|minimal|» pour un environnement |{Piton}| individuel :
-%
-\begin{Verbatim}
-\begin{Piton}~emphase#[language=minimal]@
-...
-\end{Piton}
-\end{Verbatim}
\bigskip
-L'option est aussi disponible pour |\PitonInputFile| : |\PitonInputFile[language=minimal]{...}|
-
-
-\vspace{1cm}
\begin{center}
\begin{tabularx}{0.9\textwidth}{@{}>{\ttfamily}l>{\raggedright\arraybackslash}X@{}}
@@ -2598,51 +2901,56 @@ L'option est aussi disponible pour |\PitonInputFile| : |\PitonInputFile[language
Number & les nombres \\
String & les chaînes de caractères (qui sont entre \texttt{"}) \\
Comment & les commentaires (qui débutent par |#|) \\
-Comment.LaTeX & les commentaires commençant par \texttt{\#>} qui sont composés par \pkg{piton} comme du code LaTeX (et
- appelés simplement «commentaires LaTeX» dans ce document) \\
+Comment.LaTeX & les commentaires commençant par \texttt{\#>} qui sont composés par
+ \pkg{piton} comme du code LaTeX (et appelés simplement «commentaires
+ LaTeX» dans ce document) \\
+Identifier & les identificateurs. \\
\bottomrule
\end{tabularx}
\end{center}
\bigskip
-Ce langage «|minimal|» est proposé par \pkg{piton} à l'utilisateur final pour qu'il puisse y ajouter des
-formatages de mots-clés avec la commande |\SetPitonIdentifier| (cf. \ref{SetPitonIdentifier},
-p.~\pageref{SetPitonIdentifier}) et créer par exemple un langage pour pseudo-code.
+Ce langage «|minimal|» est proposé par \pkg{piton} à l'utilisateur final pour qu'il puisse
+y ajouter des formatages de mots-clés avec la commande |\SetPitonIdentifier| (cf.
+\ref{SetPitonIdentifier}, p.~\pageref{SetPitonIdentifier}) et créer par exemple un langage
+pour pseudo-code.
+\vspace{2cm}
-\newpage
+\subsection{Le langage «verbatim»}
-\subsection{Les langages définis par la commande \textbackslash NewPitonLanguage}
-\indexcommand{NewPitonLanguage}
+\label{verbatim}
+\index{verbatim (langage «verbatim»)}
-\vspace{1cm}
-La commande |\NewPitonLanguage|, qui permet de définir de nouveaux langages en utilisant la syntaxe de l'extension
-\pkg{listings}, a été présentée p.~\pageref{NewPitonLanguage}.
-Tous les langages définis avec la commande |\NewPitonLanguage| partagent les mêmes styles.
+\colorbox{yellow!50}{\textbf{Nouveau 4.1}}
-\vspace{1cm}
+
+\bigskip
+
+On peut basculer vers le langage «|verbatim|» avec la clé |language| : |language = verbatim|
+
+\bigskip
\begin{center}
\begin{tabularx}{0.9\textwidth}{@{}>{\ttfamily}l>{\raggedright\arraybackslash}X@{}}
\toprule
\normalfont Style & Usage \\
\midrule
-Number & les nombres \\
-String.Long & les chaînes de caractères définies dans |\NewPitonLanguage| par la clé |morestring| \\
-Comment & les commentaires définis dans |\NewPitonLanguage| par la clé |morecomment| \\
-Comment.LaTeX & les commentaires qui sont composés par \pkg{piton} comme du code LaTeX (et
- appelés simplement «commentaires LaTeX» dans ce document) \\
-Keyword & les mots-clés, définis dans |\NewPitonLanguage| par les clés |morekeywords| et |moretexcs| (et également
- la clé |sensitive| qui indique si les mots-clés sont sensibles à la casse) \\
-Directive & les directives définies dans |\NewPitonLanguage| par la clé |moredirectives| \\
-Tag & les «tags» définis par la clé |tag| (les lexèmes détectés à l'intérieur d'un tag seront
- aussi composés avec leur propre style) \\
+\emph{rien...} & \\
\bottomrule
\end{tabularx}
\end{center}
+\bigskip
+Le language «|verbatim|» ne propose aucun style et ne fait donc aucun formatage
+syntaxique. On peut néanmoins y utiliser le mécanisme |detected-commands| (cf. partie
+\ref{detected-commands}, p.~\pageref{detected-commands}) ainsi que le
+mécanisme de détection des commandes et des environnements de Beamer.
+
+
+
\newpage