diff options
Diffstat (limited to 'macros/luatex/latex/piton/piton-french.tex')
-rw-r--r-- | macros/luatex/latex/piton/piton-french.tex | 519 |
1 files changed, 375 insertions, 144 deletions
diff --git a/macros/luatex/latex/piton/piton-french.tex b/macros/luatex/latex/piton/piton-french.tex index d6be2a4952..1e074de47a 100644 --- a/macros/luatex/latex/piton/piton-french.tex +++ b/macros/luatex/latex/piton/piton-french.tex @@ -6,7 +6,18 @@ \usepackage[french]{babel} \frenchsetup{og = « , fg = »} -\usepackage[footnotehyper,escape-inside=$$,math-comments]{piton} +\usepackage[footnotehyper]{piton} +\PitonOptions + { + splittable = 4 , + math-comments, + begin-escape = ! , + end-escape = ! , + begin-escape-math = \( , + end-escape-math = \) + } + + \usepackage[executable=python.exe]{pyluatex} @@ -68,7 +79,7 @@ \begin{document} -\PitonOptions{splittable = 4} + \VerbatimFootnotes @@ -123,10 +134,12 @@ def arctan(x,n=10): \end{Piton} -\bigskip -L'extension LaTeX \pkg{piton} est entièrement contenue dans le fichier |piton.sty|. Ce -fichier peut être placé dans le répertoire courant ou dans une arborescence |texmf|. Le mieux reste néanmoins +\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 d'installer \pkg{piton} avec une distribution TeX comme MiKTeX, TeX~Live ou MacTeX. @@ -188,8 +201,7 @@ environnements similaires à |{Piton}| en utilisant la commande |\NewPitonEnviro \item La commande \colorbox{gray!20}{\ttfamily \textbackslash PitonInputFile} doit être utilisée pour insérer et composer un fichier extérieur. -Cette commande prend en argument optionnel entre crochets deux clés |first-line| et |last-line| qui permettent de -n'insérer que la partie du fichier comprise entre les lignes correspondantes. +Il est possible de n'insérer qu'une partie du fichier : cf. partie~\ref{part-of-a-file}, p.~\pageref{part-of-a-file}. \end{itemize} @@ -278,10 +290,9 @@ 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|). - +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} @@ -313,26 +324,57 @@ c'est-à-dire celle qui contient le |\end{Piton}| et détermine si cette ligne n 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 Avec la clé \Definition{line-numbers}, les lignes \emph{non vides} (et toutes les lignes des -\emph{docstrings}, y compris celles qui sont vides) sont numérotées dans les environnements \verb|{Piton}| et dans -les listings produits par la commande |\PitonInputFile|. +\item La clé \Definition{line-numbers} active la numérotation des lignes (en débordement à gauche) dans les +environnements \verb|{Piton}| et dans les listings produits par la commande |\PitonInputFile|. + +\colorbox{yellow!50}{\textbf{Nouveau 2.1}}\enskip Cette clé propose en fait plusieurs sous-clés. +\begin{itemize} +\item La clé \Definition{line-numbers/skip-empty-lines} demande que les lignes vides soient considérées comme non existantes en +ce qui concerne la numérotation des lignes (si la clé \verb|/absolute| est active, la clé \verb|/skip-empty-lines| +n'a pas d'effet dans \verb|\PitonInputFile|). La valeur initiale de cette clé est \verb|true| (et non +\verb|false|).\footnote{Avec le language Python, les lignes vides des \emph{docstrings} sont prises en compte.} + +\item La clé \Definition{line/numbers/label-empty-lines} demande que les labels (c'est-à-dire les numéros) des lignes vides +soient affichés. Si la clé \verb|/skip-empty-lines| est active, la clé \verb|/label-empty-lines| est sans effet. La +valeur initiale de cette clé est \verb|true|. + +\item La clé \Definition{line-numbers/absolute} demande, pour les listings générés par \verb|\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 insère qu'une +partie du fichier (cf. part~\ref{part-of-a-file}, p.~\pageref{part-of-a-file}). La clé |/absolute| est sans effet dans les environnements \verb|{Piton}|. + +\item La clé \Definition{line-numbers/resume} reprend la numérotation là où elle avait été laissée au dernier listing. En fait, +la clé \verb|line-numbers/resume| a un alias, qui est \verb|resume| tout court. + +\item La clé \Definition{line-numbers/start} impose que la numérotation commence à ce numéro. Elle n'est pas disponible dans +\verb|\PitonOptions|. -\item Avec la clé \Definition{all-line-numbers}, \emph{toutes} les lignes sont numérotées, y compris les lignes vides. +\item La clé \Definition{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. +\end{itemize} + +Pour la commmodité, un dispositif de factorisation du préfixe |line-numbers| est disponible, c'est-à-dire que l'on +peut écrire : + +\begin{Verbatim} +\PitonOptions + { + line-numbers = + { + skip-empty-lines = false , + label-empty-lines = false , + sep = 1 em + } + } +\end{Verbatim} -\item La clé \Definition{numbers-sep} est la distance horizontale entre les numéros de lignes (insérés par |line-numbers| -ou |all-line-numbers|) et les lignes du code informatique. La valeur initiale est 0.7~em. \item La clé \Definition{left-margin} fixe une marge sur la gauche. Cette clé peut être utile, en particulier, en -conjonction avec l'une des clés |line-numbers| et |all-line-numbers| si on ne souhaite pas que les numéros de ligne -soient dans une position en débordement sur la gauche. +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 l'une des clés |line-numbers| ou |all-line-numbers| est -utilisée. Voir un exemple à la partie \ref{example-numbering} p.~\pageref{example-numbering}. - -\item Avec la clé \Definition{resume}, le compteur de lignes n'est pas remis à zéro comme il l'est normalement au -début d'un environnement |{Piton}| ou bien au début d'un listing produit par |\PitonInputFile|. Cela permet de -poursuivre la numérotation d'un environnement à l'autre. +insérée automatiquement pour les numéros de ligne quand la clé |line-numbers| est utilisée. Voir un exemple à la +partie \ref{example-numbering} p.~\pageref{example-numbering}. \item La clé \Definition{background-color} fixe la couleur de fond des environnements |{Piton}| et des listings produits par |\PitonInputFile| (ce fond a une largeur que l'on peut fixer avec la clé |width| décrite ci-dessous). @@ -589,6 +631,222 @@ def carré(x): \section{Fonctionnalités avancées} +\subsection{Coupure des pages et des lignes} + +\label{breakable} + +\subsubsection{Coupure des pages} + +Par défaut les listings produits par l'environnement |{Piton}| et par la commande |\PitonInputFile| sont +insécables. + +Néanmoins, la commande |\PitonOptions| propose la clé \Definition{splittable} pour autoriser de telles coupures. + +\begin{itemize} +\item Si la clé |splittable| est utilisée sans valeur, les listings sont sécables n'importe où. + +\item Si la clé |splittable| est utilisée avec une valeur numérique $n$ (qui doit être un entier naturel non nul), +alors les listings seront sécables mais aucune coupure ne pourra avoir lieu entre les $n$~premières lignes, ni +entre les $n$~dernières. De ce fait, |splittable=1| est équivalent à |splittable|. +\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ù la clé |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{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 Avec la clé \Definition{break-lines-in-piton}, les coupures de ligne sont autorisées dans la commande +|\piton{...}| (mais pas dans la commande \verb+\piton|...|+, c'est-à-dire avec la syntaxe verbatim). + +\item Avec la clé \Definition{break-lines-in-Piton}, les coupures de ligne sont autorisées dans l'environnement +|{Piton}| (d'où la lettre |P| capitale dans le nom) et les listings produits par |\PitonInputFile|. + +\item La clé \Definition{break-lines} est la conjonction des deux clés précédentes. +\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 Avec la clé \Definition{indent-broken-lines}, l'indentation de la ligne coupée est respectée à chaque retour +à la ligne. + +\item La clé \Definition{end-of-broken-line} correspond au symbole placé à la fin d'une ligne coupée. Sa valeur initiale est : +|\hspace*{0.5em}\textbackslash|. + +\item La clé \Definition{continuation-symbol} correspond au symbole placé à chaque retour de ligne dans la marge +gauche. Sa valeur initiale est : |+\;| (la commande |\;| insère un petit espace horizontal). + +\item La clé \Definition{continuation-symbol-on-indentation} correspond au symbole placé à chaque retour de ligne +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 +\subsection{Insertion d'une partie d'un fichier} + +\label{part-of-a-file} + +La commande |\PitonInputFile| permet d'insérer (avec formatage) le contenu d'un fichier. En fait, il existe des +mécanismes permettant de n'insérer qu'une partie du fichier en question. +\begin{itemize} +\item On peut spécifier la partie à insérer par les numéros de lignes (dans le fichier d'origine). +\item \colorbox{yellow!50}{\textbf{Nouveau 2.1}}\enskip 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} + +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). + + +\subsubsection{Avec des marqueurs textuels} + +\colorbox{yellow!50}{\textbf{Nouveau 2.1}} + +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 : + +\begin{Verbatim}[formatcom=\small\color{gray}] +~#[Exercice 1] Version itérative +def fibo(n): + if n==0: return 0 + else: + u=0 + v=1 + for i in range(n-1): + w = u+v + u = v + v = w + return v +~#<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). + +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|. + + +\bigskip +Pour insérer une partie marquée d'un fichier, il suffit alors d'utiliser la clé \Definition{range} de +|\PitonInputFile|. + +\smallskip +\begin{Verbatim} +\PitonInputFile[~emphase#range = Exercice 1@]{~textsl#nom_du_fichier@} +\end{Verbatim} + +\medskip +\begin{Piton} +def fibo(n): + if n==0: return 0 + else: + u=0 + v=1 + for i in range(n-1): + w = u+v + u = v + v = w + return v +\end{Piton} + +\vspace{1cm} +La clé \Definition{marker/include-line} 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@} +\end{Verbatim} + +\begin{Piton} +#[Exercice 1] Version itérative +def fibo(n): + if n==0: return 0 + else: + u=0 + v=1 + for i in range(n-1): + w = u+v + u = v + v = w + return v +#<Exercice 1> +\end{Piton} + + +\bigskip +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!): + +\begin{Verbatim} +\PitonInputFile[~emphase#begin-range = Exercice 3, end-range = Exercice 5@]{~textsl#nom_du_fichier@} +\end{Verbatim} + + + + \subsection{Mise en évidence d'identificateurs} On peut demander le changement de formatage de certains identificateurs avec la clé |identifiers| de @@ -731,12 +989,12 @@ 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é |comment-latex|, disponible seulement au chargement de \pkg{piton} (c'est-à-dire au moment du -|\usepackage|), qui permet de choisir les caractères qui (précédés par~|#|) serviront de marqueur syntaxique. +existe une clé |comment-latex|, 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 chargement suivant : +Par exemple, avec le réglage suivant (fait dans le préambule du document) : -\quad \verb|\usepackage[comment-latex = LaTeX]{piton}| +\verb|\PitonOptions{comment-latex = LaTeX}| les commentaires LaTeX commenceront par~|#LaTeX|. @@ -763,11 +1021,11 @@ p.~\pageref{example-comments}. \bigskip -Si l'utilisateur a demandé l'affichage des numéros de ligne avec |line-numbers| ou |all-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.)} @@ -778,11 +1036,11 @@ Il est possible de demander que, dans les commentaires Python normaux, c'est-à- |#>|), 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é |math-comments|, qui n'est disponible qu'au chargement de \pkg{piton} (c'est-à-dire au moment du -|\usepackage|), active ce comportement. +La clé \Definition{math-comments} (qui ne peut être activée que dans le préambule du document) active ce +comportement. \bigskip -Dans l'exemple suivant, on suppose que la clé |math-comments| a été utilisée au chargement de \pkg{piton}. +Dans l'exemple suivant, on suppose que |\PitonOptions{math-comments}| a été utilisé dans le préambule du document. \begin{Verbatim} \begin{Piton} @@ -797,20 +1055,20 @@ def carré(x): \end{Piton} -\subsubsection{Le mécanisme «espace-inside»} +\subsubsection{Le mécanisme «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 caractères marquant l'échappement (le premier le commençant et le deuxième -le terminant) en utilisant la clé |escape-inside| au chargement de \pkg{piton} (c'est-à-dire au moment du -|\usepackage|). Les deux caractères peuvent être identiques. +l'utiliser, il faut spécifier les deux délimiteurs marquant l'échappement (le premier le commençant et le deuxième +le terminant) en utilisant les clés \Definition{begin-escape} et \Definition{end-escape} (qui ne sont accessibles +que dans le préambule du document). Les deux délimiteurs peuvent être identiques. \bigskip -Dans l'exemple suivant, on suppose que l'extension \pkg{piton} a été chargée de la manière suivante : +Dans l'exemple suivant, on suppose que le préambule du document contient l'instruction : \begin{Verbatim} -\usepackage[~emphase#escape-inside=$$@]{piton} +\PitonOptions{~emphase#begin-escape=!,end-escape=!@} \end{Verbatim} \medskip @@ -823,7 +1081,7 @@ def fact(n): if n==0: return 1 else: - ~emphase#$\highLight{$@return n*fact(n-1)~emphase#$}$@ + ~emphase#!\highLight{!@return n*fact(n-1)~emphase#!}!@ \end{Piton} \end{Verbatim} @@ -832,7 +1090,7 @@ def fact(n): if n==0: return 1 else: - $\highLight{$return n*fact(n-1)$}$ + !\highLight{!return n*fact(n-1)!}! \end{Piton} \bigskip @@ -856,7 +1114,7 @@ def fact(n): if n==0: return 1 else: - ~emphase#$\Jaune$@return n*fact(n-1) + ~emphase#!\Jaune!@return n*fact(n-1) \end{Piton} \end{Verbatim} @@ -870,17 +1128,77 @@ def fact(n): if n==0: return 1 else: - $\Jaune$return n*fact(n-1) + !\Jaune!return n*fact(n-1) \end{Piton} \bigskip -\emph{Attention} : L'échappement vers LaTeX permis par les caractères de |escape-inside| 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} : 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 +|#>|). + + +\subsubsection{Le mécanisme «escape-math»} +Le mécanisme «|escape-math|» est très similaire au mécanisme «|escape|» puisque la seule différence est que les +éléments en échappement LaTeX y sont composés en mode mathématique. + +On active ce mécanisme avec les clés \Definition{begin-escape-math} et \Definition{end-escape-math} (qui ne sont +accessibles que dans le préambule du document). + +\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. + +\medskip +Dans les langages où le caractère \verb|$| ne joue pas un rôle syntaxique important, on peut assez naturellement +vouloir activer le mécanisme «|escape-math|» avec le caractère \verb|$|: +\begin{Verbatim} +\PitonOptions{~emphase#begin-escape-math=$,end-escape-math=$@} +\end{Verbatim} +Remarquer que le caractère \verb|$| ne doit \emph{pas} être protégé par une contre-oblique. + +\bigskip +Néanmoins, il est sans doute plus prudent d'utiliser |\(| et |\)|. +\begin{Verbatim} +\PitonOptions{~emphase#begin-escape-math=\(,end-escape-math=\)@} +\end{Verbatim} + +\bigskip +Voici un exemple d'utilisation typique : + +\medskip +\begin{Verbatim} +\begin{Piton}[line-numbers] +def arctan(x,n=10): + if ~emphase#\(x < 0\)@ : + return ~emphase#\(-\arctan(-x)\)@ + elif ~emphase#\(x > 1\)@ : + return ~emphase#\(\pi/2 - \arctan(1/x)\)@ + else: + s = ~emphase#\(0\)@ + for ~emphase#\(k\)@ in range(~emphase#\(n\)@): s += ~emphase#\(\smash{\frac{(-1)^k}{2k+1} x^{2k+1}}\)@ + return s +\end{Piton} +\end{Verbatim} + + +\bigskip + +\begin{Piton}[line-numbers] +def arctan(x,n=10): + if \(x < 0\) : + return \(-\arctan(-x)\) + elif \(x > 1\) : + return \(\pi/2 - \arctan(1/x)\) + else: + s = \(0\) + for \(k\) in range(\(n\)): s += \(\smash{\frac{(-1)^k}{2k+1} x^{2k+1}}\) + return s +\end{Piton} @@ -898,9 +1216,10 @@ c'est-à-dire débutant par |\begin{frame}[fragile]|.\footnote{On rappelle que p \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} 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. + 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''} @@ -933,7 +1252,7 @@ les listings composés par la commande |\PitonInputFile|, même si c'est sans do 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 obligatoire : |\alt| ; +\item deux arguments obligatoires : |\alt| ; \item trois arguments obligatoires : |\temporal|. \end{itemize} @@ -1043,94 +1362,6 @@ que la commande |\alert| s'appuie sur cet environnement |{alertenv}|). \bigskip -\subsection{Coupure des pages et des lignes} - -\label{breakable} - -\subsubsection{Coupure des pages} - -Par défaut les listings produits par l'environnement |{Piton}| et par la commande |\PitonInputFile| sont -insécables. - -Néanmoins, la commande |\PitonOptions| propose la clé \Definition{splittable} pour autoriser de telles coupures. - -\begin{itemize} -\item Si la clé |splittable| est utilisée sans valeur, les listings sont sécables n'importe où. - -\item Si la clé |splittable| est utilisée avec une valeur numérique $n$ (qui doit être un entier naturel non nul), -alors les listings seront sécables mais aucune coupure ne pourra avoir lieu entre les $n$~premières lignes, ni -entre les $n$~dernières. De ce fait, |splittable=1| est équivalent à |splittable|. -\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ù la clé |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{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 Avec la clé \Definition{break-lines-in-piton}, les coupures de ligne sont autorisées dans la commande -|\piton{...}| (mais pas dans la commande \verb+\piton|...|+, c'est-à-dire avec la syntaxe verbatim). - -\item Avec la clé \Definition{break-lines-in-Piton}, les coupures de ligne sont autorisées dans l'environnement -|{Piton}| (d'où la lettre |P| capitale dans le nom) et les listings produits par |\PitonInputFile|. - -\item La clé \Definition{break-lines} est la conjonction des deux clés précédentes. -\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 Avec la clé \Definition{indent-broken-lines}, l'indentation de la ligne coupée est respectée à chaque retour -à la ligne. - -\item La clé \Definition{end-of-broken-line} correspond au symbole placé à la fin d'une ligne coupée. Sa valeur initiale est : -|\hspace*{0.5em}\textbackslash|. - -\item La clé \Definition{continuation-symbol} correspond au symbole placé à chaque retour de ligne dans la marge -gauche. Sa valeur initiale est : |+\;|. - -\item 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 @@ -1186,7 +1417,7 @@ des caractères U+0009 au lieu de caractères U+0020 (espaces). \label{example-numbering} -On rappelle que l'on peut demander la numérotation des lignes des listings avec la clé |line-numbers| ou la clé |all-line-numbers|. +On rappelle que l'on peut demander la numérotation des lignes des listings avec la clé |line-numbers|. 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). |