summaryrefslogtreecommitdiff
path: root/macros/latex
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2023-04-07 03:01:13 +0000
committerNorbert Preining <norbert@preining.info>2023-04-07 03:01:13 +0000
commitbd96eb3748479a2feb0e8a0ef06203de92766953 (patch)
tree9da29a4dd0bba6403d150b684f2cc30c6dfc3551 /macros/latex
parentecbacf9e5b13d0940f27ca7c07d3f728256dc5dc (diff)
CTAN sync 202304070301
Diffstat (limited to 'macros/latex')
-rw-r--r--macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdfbin812698 -> 815001 bytes
-rw-r--r--macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex563
-rw-r--r--macros/latex/contrib/proflycee/doc/ProfLycee-exemples-pyluatex.pdfbin60443 -> 60451 bytes
-rw-r--r--macros/latex/contrib/proflycee/doc/ProfLycee-exemples-pyluatex.tex25
-rw-r--r--macros/latex/contrib/proflycee/doc/ProfLycee-exemples-pythontex.pdfbin0 -> 44183 bytes
-rw-r--r--macros/latex/contrib/proflycee/doc/ProfLycee-exemples-pythontex.tex242
-rw-r--r--macros/latex/contrib/proflycee/tex/ProfLycee.sty208
-rw-r--r--macros/latex/contrib/proflycee/tex/proflycee-tools-listings.tex333
-rw-r--r--macros/latex/contrib/proflycee/tex/proflycee-tools-minted.tex47
-rw-r--r--macros/latex/contrib/proflycee/tex/proflycee-tools-piton.tex35
-rw-r--r--macros/latex/contrib/proflycee/tex/proflycee-tools-pythontex.tex89
-rw-r--r--macros/latex/contrib/regstats/README106
-rw-r--r--macros/latex/contrib/regstats/regstats-example.log405
-rw-r--r--macros/latex/contrib/regstats/regstats-example.pdfbin66974 -> 59861 bytes
-rw-r--r--macros/latex/contrib/regstats/regstats.dtx1625
-rw-r--r--macros/latex/contrib/regstats/regstats.pdfbin327688 -> 474650 bytes
16 files changed, 2023 insertions, 1655 deletions
diff --git a/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf b/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf
index f44e4ef13a..67586db55b 100644
--- a/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf
+++ b/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex b/macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex
index 51bd79b3e7..1aa8261b74 100644
--- a/macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex
+++ b/macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex
@@ -5,8 +5,8 @@
% arara: lualatex: {shell: yes, synctex: no, interaction: batchmode} if found('log', '(undefined references|Please rerun|Rerun to get)')
\documentclass[a4paper,french,11pt]{article}
-\def\PLversion{2.5.7}
-\def\PLdate{4 Avril 2023}
+\def\PLversion{2.5.8}
+\def\PLdate{6 Avril 2023}
\usepackage{ProfLycee}
\useproflyclib{piton,minted,pythontex}
%\usepackage{lualatex-math}
@@ -89,12 +89,12 @@
}
\tcbset{vignettelib/.style={%
- fontupper={\vphantom{pf}\footnotesize\ttfamily},
- vignettes,%
- colframe=ForestGreen,coltitle=white,colback=white,%
- overlay={\begin{tcbclipinterior}%
- \fill[fill=green!25]($(interior.south west)$) rectangle node[rotate=90]{\tiny \sffamily{\textcolor{ForestGreen}{\scalebox{0.85}[0.75]{\textbf{LIB}}}}} ($(interior.north west)+(5pt,0pt)$);%
- \end{tcbclipinterior}}
+ fontupper={\vphantom{pf}\footnotesize\ttfamily},
+ vignettes,%
+ colframe=ForestGreen,coltitle=white,colback=white,%
+ overlay={\begin{tcbclipinterior}%
+ \fill[fill=green!25]($(interior.south west)$) rectangle node[rotate=90]{\tiny \sffamily{\textcolor{ForestGreen}{\scalebox{0.85}[0.75]{\textbf{LIB}}}}} ($(interior.north west)+(5pt,0pt)$);%
+ \end{tcbclipinterior}}
}
}
@@ -246,8 +246,7 @@
{\deblst} résoudre, de manière approchée, des équations\\
{\deblst} tracer \textit{facilement} des repères/grilles/courbes\\
{\deblst} tracer des courbes \textit{lisses} avec gestion des extrema et des dérivées\\
-{\deblst} simuler une fenêtre de logiciel de calcul formel, une console d'exécution \\
-{\deblst} présenter du code \textsf{python} ou \textsf{pseudocode} \\
+{\deblst} présenter du code \textsf{python} ou \textsf{pseudocode}, une console d'exécution \textsf{Python} \\
{\deblst} tracer rapidement un pavé, un tétraèdre \\
{\deblst} simplifier des calculs sous forme fractionnaire, simplifier des racines \\
{\deblst} effectuer des calculs avec des suites récurrentes \\
@@ -303,19 +302,19 @@
\subsection{\og Philosophie \fg{} du package}
\begin{codeidee}
-Ce \ctex{package}, très largement inspiré (et beaucoup moins abouti !) de l'excellent \ctex{ProfCollege} de C. Poulain et des excellents \ctex{tkz-*} d'A. Matthes, va définir quelques outils pour des situations particulières qui ne sont pas encore dans \ctex{ProfCollege}.
+Ce \ctex{package}, très largement inspiré (et beaucoup moins abouti) de l'excellent \ctex{ProfCollege} de C. Poulain et des excellents \ctex{tkz-*} d'A. Matthes, va définir quelques outils pour des situations particulières qui ne sont pas encore dans \ctex{ProfCollege}.
-On peut le voir comme un (maigre) complément à \ctex{ProfCollege}, et je précise que la syntaxe est très proche (car pertinente de base) et donc pas de raison de changer une équipe qui gagne !
+On peut le voir comme un (maigre) complément à \ctex{ProfCollege}, et je précise que la syntaxe est très proche (car pertinente de base) et donc pas de raison de changer une \textit{équipe qui gagne} !
\medskip
-Il se charge, dans le préambule, par \ctex{\textbackslash usepackage\{ProfLycee\}}. Il charge des {packages} utiles, mais j'ai fait le choix de laisser l'utilisateur gérer ses autres {packages}, comme notamment \ctex{amssymb} qui peut poser souci en fonction de la \textit{position} de son chargement.
+Il se charge de manière classique, dans le préambule, par \ctex{\textbackslash usepackage\{ProfLycee\}}. Il charge des {packages} utiles, mais j'ai fait le choix de laisser l'utilisateur gérer ses autres {packages}, comme notamment \ctex{amssymb} qui peut poser souci en fonction de la \textit{position} de son chargement.
L'utilisateur est libre de charger ses autres {packages} utiles et habituels, ainsi que ses \textsf{polices} et \textsf{encodages} habituels !
\end{codeidee}
\begin{codeinfo}
-Le {package} \ctex{ProfLycee} charge les {packages} :
+Le {package} \ctex{ProfLycee} charge et utilise les {packages} :
\begin{itemize}
\item \ctex{xcolor} avec l' option \textsf{[table,svgnames]} ;
@@ -371,6 +370,10 @@ Les librairies disponibles seront indiquées dans les sections spécifiques. Pou
\end{itemize}
\end{codeinfo}
+\begin{codeattention}
+\cmaj{2.5.8} Pour le package \ctex{piton}, la version minimale requise est la \ctex{1.5} pour bénéficier d'un rendu optimal (au niveau des marges) de la présentation du code \textsf{Python}.
+\end{codeattention}
+
\begin{codeinfo}
En compilant (notamment avec les librairies \clib{minted} et \clib{pythontex}) on peut spécifier des répertoires particuliers pour les (ou des) fichiers auxiliaires.
@@ -401,28 +404,6 @@ L'option \Cle{build} charge certains packages (librairies \clib{minted} et \clib
\section{Compléments}
-%\subsection{Changements à partir de la version 2 !!}
-%
-%\begin{codeattention}
-%\cmaj{2.0.0} Pour des raisons pratiques, les commandes et environnements disponibles dans \ctex{ProfLycee} ont été renommés, pour utiliser des noms plus génériques et explicites.
-%
-%La nomenclature des \Cle{clés} a été également revue, avec -- dans la grande majorité des cas -- une majuscule en début.
-%
-%\smallskip
-%
-%Je préfère faire ces ajustements tant que le package est assez \textit{jeune} !
-%\end{codeattention}
-%
-%\begin{codeattention}
-%\cmaj{2.0.0} L'ancienne version (qui ne sera mise à jour !!) du package \ctex{ProfLycee} est toutefois encore disponible, pour une migration en douceur, elle est désormais accessible sous le nom \ctex{ProfLycee-old}, et la documentation est également encore disponible.
-%\end{codeattention}
-%
-%\begin{codetex}[listing only]
-%...
-%\usepackage[options]{ProfLycee-old} %nouveautés non disponibles par contre...
-%...
-%\end{codetex}
-
\subsection{Le système de \og clés/options \fg}
\begin{codeidee}
@@ -457,27 +438,8 @@ Les \textsf{codes} seront présentés dans des \textsf{boîtes} \textcolor{red!7
Les \textsf{clés} ou \textsf{options} seront présentées dans des \textsf{boîtes} \textcolor{ForestGreen}{{\small \faPaperclip} Clés}.
\end{codeinfo}
-%\subsection{Outils disponibles}
-%
-%\begin{codeidee}
-%Le {package}, qui s'enrichira peut-être au fil du temps permet -- pour le moment -- de :
-%
-%\begin{itemize}
-% \item tracer des splines cubiques avec gestion \textit{assez fine} des tangentes ;
-% \item tracer des tangentes (ou portions) de tangentes sur la même base que pour les splines ;
-% \item simuler une fenêtre de logiciel formel (\textit{à la manière de} \textsf{XCas}) ;
-% \item mettre en forme du code \textsf{python} ou \textsf{pseudocode} ;
-% \item simuler une fenêtre de terminal (win/unix/osx) ;
-% \item créer un cartouche \textit{à la manière de} Capytale ;
-% \item créer rapidement un pavé droit ou un tétraèdre en \TikZ, avec gestion des nœuds ;
-% \item créer rapidement un ensemble d'éléments, avec gestion des espaces ;
-% \item créer, dans un environnement \TikZ, la \og toile \fg{} pour une suite récurrente :
-% \item etc
-%\end{itemize}
-%\end{codeidee}
-
\begin{codeinfo}
-À noter que certaines commandes disponibles sont liées à un environnement \ctex{tikzpicture}, elles ne sont pas autonomes mais permettent de conserver -- en parallèle -- toute commande liée à \TikZ{} !
+À noter que certaines commandes disponibles sont liées à un environnement \ctex{tikzpicture}, elles peuvent ne pas être autonomes mais permettent de conserver -- en parallèle -- toute commande liée à \TikZ{} !
\end{codeinfo}
\subsection{Compilateur(s)}
@@ -566,17 +528,21 @@ Elles sont présentées de manière \textit{succincte}, mais elles sont présent
\begin{codetex}[listing only]
%présentation de code Python
\begin{CodePythonLst}(*)[largeur]{commandes tcbox}...\end{CodePythonLst}
+\begin{CodePythonLstAlt}(*)[largeur]{commandes tcbox}...\end{CodePythonLstAlt}
%:=librairie piton
-\begin{CodePiton}[options]...\end{CodePiton}
-\begin{PitonConsole}[options Piton]<Clés>{paramètres tcbox}...\end{PitonConsole}
+\begin{CodePiton}[options piton]{commandes tcbox}...\end{CodePiton}
+\begin{PitonConsole}<Clés>{commandes tcbox}...\end{PitonConsole}
%:=librairie pythontex
-\begin{CodePythontex}[options]...\end{CodePythontex}
-\begin{ConsolePythontex}[options]...\end{ConsolePythontex}
+\begin{CodePythontex}[options]{}...\end{CodePythontex}
+\begin{CodePythontexAlt}[options]{}...\end{CodePythontexAlt}
+\begin{ConsolePythontex}[options]{}...\end{ConsolePythontex}
%:=librairie minted
-\begin{CodePythonMinted}(*)[largeur][options]...\end{CodePythonMinted}
+\begin{CodePythonMinted}(*)[largeur]{commandes tcbox}...\end{CodePythonMinted}
+\begin{CodePythonMintedAlt}(*)[largeur]{commandes tcbox}...\end{CodePythonMintedAlt}
%présentation de pseudocode
-\begin{PseudoCode}(*)[largeur][options]...\end{PseudoCode}
+\begin{PseudoCode}(*)[largeur]{commandes tcbox}...\end{PseudoCode}
+\begin{PseudoCodeAlt}(*)[largeur]{commandes tcbox}...\end{PseudoCodeAlt}
\end{codetex}
\pagebreak
@@ -1444,7 +1410,7 @@ Avec des explications utiles à la compréhension :
\begin{center}
\begin{tikzpicture}[x=0.9cm,y=0.9cm,xmin=-1,xmax=11,xgrille=1,xgrilles=0.5,ymin=-1,ymax=7,ygrille=1,ygrilles=0.5]
\genfenetre
- \SplineTikz[affpoints=true]{0/1/0§4/3.667/-0.333§7.5/1.75/0§9/2/-0.333§10/0/-10}
+ \SplineTikz[AffPoints]{0/1/0§4/3.667/-0.333§7.5/1.75/0§9/2/-0.333§10/0/-10}
\gennotice
\gentangentes
\listecoeffs{3}{3}{3}{3}
@@ -1461,12 +1427,6 @@ Dans certains cas, il se peut que la portion paraisse un peu trop \og abrupte \f
On peut dans ce cas \textit{jouer} sur les coefficients de cette portion pour \textit{arrondir} un peu tout cela (\textit{ie} diminuer le \textsf{coeff}\ldots)!
-%\begin{itemize}
-% \item être donnés (pour utiliser le même partout) sous la forme \Cle{coeffs=C} ;
-% \item être donnés portion par portion, sous la forme \Cle{coeffs=C1§C2§...} ;
-% \item être donné de manière très fine, portion par portion et côté par côté, sous la forme \Cle{coeffs=C1G/C1D§C2G/C2D§...}.
-%\end{itemize}
-
\begin{center}
\begin{tikzpicture}[x=0.9cm,y=0.9cm,xmin=-1,xmax=11,xgrille=1,xgrilles=0.5,ymin=-1,ymax=7,ygrille=1,ygrilles=0.5]
\genfenetre
@@ -1500,8 +1460,6 @@ On peut dans ce cas \textit{jouer} sur les coefficients de cette portion pour \t
\foreach \y in {0,1,...,4} {\draw[gray,line width=1.5pt] (4pt,\y) -- (-4pt,\y) ;}
\draw[darkgray] (1,-4pt) node[below,font=\sffamily] {1} ;
\draw[darkgray] (-4pt,1) node[left,font=\sffamily] {1} ;
-% \draw (1,-4pt) node[below,font=\sffamily] {1} ;
-% \draw (-4pt,1) node[left,font=\sffamily] {1} ;
\def\LISTE{0/1/0§4/3.667/-0.333§7.5/1.75/0§9/2/-0.333§10/0/-10}
\SplineTikz[AffPoints,Coeffs=3§3§3§2/1]{\LISTE}
\end{tikzpicture}
@@ -2014,137 +1972,14 @@ Peut-être que -- ultérieurement -- des options \textit{booléennes} seront dis
\part{Présentation de codes}
-%\section{L'outil \og Calcul Formel \fg}
-%
-%\subsection{Introduction}
-%
-%\begin{codeidee}
-%L'idée des commandes suivantes est de définir, dans un environnement \TikZ, une présentation proche de celle d'un logiciel de calcul formel comme \textsf{XCas} ou \textsf{Geogebra}.
-%
-%\smallskip
-%
-%Les sujets d'examens, depuis quelques années, peuvent comporter des \textit{captures d'écran} de logiciel de calcul formel, l'idée est ici de reproduire, de manière autonome, une telle présentation.
-%
-%\smallskip
-%
-%À la manière du {package} \ctex{tkz-tab}, l'environnement de référence est un environnement \TikZ, dans lequel les lignes sont créées petit à petit, à l'aide de nœuds qui peuvent être réutilisés à loisir ultérieurement.
-%\end{codeidee}
-%
-%\subsection{La commande \og CalculFormelParametres \fg}
-%
-%\begin{codeinfo}
-%La première chose à définir est l'ensemble des paramètres \textit{globaux} de la fenêtre de calcul formel, à l'aide de \Cle{Clés}.
-%\end{codeinfo}
-%
-%\begin{codetex}[listing only]
-%...
-%\begin{tikzpicture}[...]
-% \CalculFormelParametres[options]
-% ...
-%\end{tikzpicture}
-%\end{codetex}
-%
-%\begin{codecles}
-%Les \Cle{Clés} disponibles sont :
-%\begin{itemize}
-% \item \Cle{Largeur} : largeur de l'environnement ; \hfill{}défaut \Cle{16}
-% \item \Cle{EspaceLg} : espacement vertical entre les lignes ;\hfill{}défaut \Cle{2pt}
-% \item \Cle{PremCol} \& \Cle{HautPremCol} : largeur et hauteur de la case du \textit{petit numéro} ;\hfill{}défaut \Cle{0.3} \& \Cle{0.4}
-% \item \Cle{Taille} : taille du texte ;\hfill{}défaut \Cle{\textbackslash normalsize}
-% \item \Cle{Couleur} : couleur des traits de l'environnement ;\hfill{}défaut \Cle{darkgray}
-% \item \Cle{Titre} : booléen pour l'affichage d'un bandeau de titre ;\hfill{}défaut \Cle{false}
-% \item \Cle{TailleTitre} : taille du titre ;\hfill{}défaut \Cle{\textbackslash normalsize}
-% \item \Cle{PosCmd} : position horizontale de la commande d'entrée ;\hfill{}défaut \Cle{gauche}
-% \item \Cle{PosRes} : position horizontale de la commande de sortie ;\hfill{}défaut \Cle{centre}
-% \item \Cle{CouleurCmd} : couleur de la commande d'entrée ;\hfill{}défaut \Cle{red}
-% \item \Cle{CouleurRes} : couleur de la commande de sortie ;\hfill{}défaut \Cle{blue}
-% \item \Cle{Sep} : booléen pour l'affichage du trait de séparation E/S ;\hfill{}défaut \Cle{true}
-% \item \Cle{Menu} : booléen pour l'affichage du \textit{bouton} MENU ;\hfill{}défaut \Cle{true}
-% \item \Cle{LabelTitre} : libellé du titre.\hfill{}défaut \Cle{Résultats obtenus avec un logiciel de Calcul Formel}
-%\end{itemize}
-%\end{codecles}
-%
-%\subsection{La commande \og CalculFormelLigne \fg}
-%
-%\begin{codeinfo}
-%Une fois les paramètres déclarés, il faut créer les différentes lignes, grâce à la \ctex{CalculFormelLigne}.
-%\end{codeinfo}
-%
-%\begin{codetex}[listing only]
-%\begin{tikzpicture}[...]
-% \CalculFormelParametres[options]
-% \CalculFormelLigne[options]{commande}{résultat}
-% ...
-%\end{tikzpicture}
-%\end{codetex}
-%
-%\begin{codecles}
-%Les (quelques) \Cle{Clés} disponibles sont :
-%
-%\begin{itemize}
-% \item \Cle{HautCmd} et \Cle{HautRes}: hauteur de la ligne de commande d'entrée et de sortie ;\hfill{}défaut \Cle{0.75}
-% \item deux \textsf{arguments}, celui de la commande d'entrée et celui de la commande de sortie.
-%\end{itemize}
-%%
-%Chaque argument \textsf{COMMANDE} \& \textsf{RÉSULTAT} peut être formaté (niveau police) de manière indépendante.
-%\end{codecles}
-%
-%\begin{codetex}[tikz lower]
-%%code tikz
-%\CalculFormelParametres[Titre=true,CouleurCmd=olive,CouleurRes=orange]
-%\CalculFormelLigne{COMMANDE 1}{RÉSULTAT 1}
-%\CalculFormelLigne[HautCmd=0.75,HautRes=1]{\texttt{(x+1)\CFchap2}}{$\mathtt{x^2+2x+1}$}
-%%\CFchap := ^ en mathtt
-%\end{codetex}
-%
-%\subsection{Visualisation des paramètres}
-%
-%\begin{codeinfo}
-%Pour \textit{illustrer} un peu les \Cle{clés}, un petit schéma, avec les différents nœuds crées par les \textsf{macros}.
-%
-%\begin{center}
-% \begin{tikzpicture}[x=0.7cm,y=0.5cm,line width=1pt]
-% \CalculFormelParametres[Largeur=12cm,Couleur=lightgray,EspaceLg=12pt,Menu=false]
-% \CalculFormelLigne{}{}
-% \CalculFormelLigne[HautCmd=1,HautRes=1.25]{}{}
-% %explications
-% \foreach \noeud in {01,11,21,31,41,51,02,12,22,32,42,52}
-% \draw[blue] (A\noeud) node[font=\footnotesize\ttfamily] {A\noeud} ;
-%\end{tikzpicture}
-%\end{center}
-%
-%\begin{center}
-% \begin{tikzpicture}[x=0.7cm,y=0.7cm,line width=1pt]
-% \CalculFormelParametres[Titre,Largeur=12cm,EspaceLg=10pt,PremCol=0.5,HautPremCol=0.7,Couleur=lightgray]
-% \CalculFormelLigne{COMMANDE 1}{RÉSULTAT 1}
-% \CalculFormelLigne[HautCmd=0.85,HautRes=1.05]{COMMANDE 2}{RÉSULTAT 2}
-% %explications
-% \draw[CadetBlue,<->,>=latex] ($(A22) + (0,-12pt)$) -- ($(A52) + (0,-12pt)$) node[midway,below,font=\footnotesize\sffamily] {\Cle{Largeur}} ;
-% \draw[CadetBlue,<->,>=latex] ($(A51) + (12pt,0)$) -- ($(A32) + (12pt,0)$) node[midway,right,font=\footnotesize\sffamily] {\Cle{EsapceLg}} ;
-% \draw[CadetBlue,<->,>=latex] ($(A02) + (0,2pt)$) -- ($(A02) + (0,2pt) + ({-\CFpremcol},0) $) node[midway,above,font=\footnotesize\sffamily] {\Cle{PremCol}} ;
-% \draw[CadetBlue,<->,>=latex] ($(A02) + ({-\CFpremcol},0) + (-2pt,0)$) -- ($(A02) + ({-\CFpremcol},{-\CFhpremcol}) +(-2pt,0)$) node[midway,left,font=\footnotesize\sffamily] {\Cle{HautPremCol}} ;
-% \draw[CadetBlue,<->,>=latex] ($(A31) + (12pt,0)$) -- ($(A41) + (12pt,0)$) node[midway,right,font=\footnotesize\sffamily] {\Cle{HautCom}} ;
-% \draw[CadetBlue,<->,>=latex] ($(A41) + (12pt,0)$) -- ($(A51) + (12pt,0)$) node[midway,right,font=\footnotesize\sffamily] {\Cle{HautRes}} ;
-% \draw[CadetBlue,<->,>=latex] ($(A32) + (12pt,0)$) -- ($(A42) + (12pt,0)$) node[midway,right,font=\footnotesize\sffamily] {\Cle{HautCom}} ;
-% \draw[CadetBlue,<->,>=latex] ($(A42) + (12pt,0)$) -- ($(A52) + (12pt,0)$) node[midway,right,font=\footnotesize\sffamily] {\Cle{HautRes}} ;
-% \draw[CadetBlue,->,>=latex] ($(A12) + (0,-12pt)$) to[bend left=10] ($(A12) + (0,-12pt) + (-18pt,-12pt)$) node[below left,font=\footnotesize\sffamily] {\Cle{Couleur}} ;
-% \draw[CadetBlue,->,>=latex] ($(A52) + (-0.65,0.25)$) to[bend left=10] ($(A52) + (-0.65,0.25) + (-18pt,12pt)$) node[inner sep=0pt,above left=1pt,font=\footnotesize\sffamily] {\Cle{Menu}} ;
-% \draw[CadetBlue,->,>=latex] ($(A12) + (16pt,0)$) to[bend left=10] ($(A12) + (16pt,0) + (18pt,-12pt)$) node[inner sep=0pt,below right=1pt,font=\footnotesize\sffamily] {\Cle{Sep}} ;
-% \draw[CadetBlue,->,>=latex] ($(A01) + (8pt,2pt) + (0,1em)$) to[bend left=10] ($(A01) + (8pt,2pt) + (0,1em) + (-18pt,12pt)$) node[inner sep=0pt,above=1pt,font=\footnotesize\sffamily] {\Cle{Titre} \& \Cle{TailleTitre} \& \Cle{LabelTitre}} ;
-%\end{tikzpicture}
-%\end{center}
-%\end{codeinfo}
-%
-%\newpage
-
\section{Code Python \og simple \fg{} via le package listings}\label{pythonsimple}
\subsection{Introduction}
\begin{codeidee}
-Le {package} \ctex{listings} permet d'insérer et de formater du code, notamment du code Python.
+Le {package} \ctex{listings} permet d'insérer et de formater du code, notamment du code \textsf{Python}.
-En \textit{partenariat} avec \ctex{tcolorbox}, on peut donc présenter \textit{joliment} du code python !
+En \textit{partenariat} avec \ctex{tcolorbox}, on peut donc présenter \textit{joliment} du code \textsf{Python} !
\end{codeidee}
\begin{codeinfo}
@@ -2152,17 +1987,17 @@ Le package \ctex{listings} ne nécessite pas de compilation particulière, au co
\end{codeinfo}
\begin{codeinfo}
-Le style utilisé pour formater le code Python n'est pas modifiable. Il donne un rendu proche de celui des packages comme \ctex{pythontex} ou \ctex{minted} ou \ctex{piton}.
+Les styles utilisés pour formater le code \textsf{Python} ne sont pas modifiables. Ils donnent un rendu proche de celui des packages comme \ctex{pythontex} ou \ctex{minted} ou \ctex{piton}.
\smallskip
-Donc, si plusieurs \textit{méthodes} sont utilisées pour insérer du code Python (via les \textit{méthodes} suivantes), le rendu pourra être légèrement différent.
+Donc, si plusieurs \textit{méthodes} sont utilisées pour insérer du code \textsf{Python} (via les \textit{méthodes} suivantes), le rendu pourra être légèrement différent.
\end{codeinfo}
\subsection{Commande et options}
\begin{codeidee}
-L'environnement \ctex{CodePythonLst} permet de présenter du code python, dans une \ctex{tcolorbox} avec un style particulier.
+L'environnement \ctex{CodePythonLst} permet de présenter du code \textsf{Python}, dans une \ctex{tcolorbox} avec deux styles particuliers (\cmaj{2.5.8}).
\end{codeidee}
\begin{codetex}[listing only]
@@ -2171,6 +2006,12 @@ L'environnement \ctex{CodePythonLst} permet de présenter du code python, dans u
\end{CodePythonLst}
\end{codetex}
+\begin{codetex}[listing only]
+\begin{CodePythonLstAlt}(*)[largeur]{commandes tcbox}
+...
+\end{CodePythonLstAlt}
+\end{codetex}
+
\begin{codecles}
Plusieurs \Cle{arguments} sont disponibles :
@@ -2188,7 +2029,7 @@ Les environnements \ctex{DeclareTCBListing} créés par \ctex{tcolorbox} et \cte
\subsection{Insertion via un fichier \og externe \fg}
\begin{codeidee}
-Pour des raison pratiques, il est parfois intéressant d'avoir le code Python dans un fichier externe au ficher \ctex{tex}, ou bien créé directement par le fichier \ctex{tex} (via \ctex{scontents}, notamment, mais non chargé par \ctex{ProfLycee}).
+Pour des raison pratiques, il est parfois intéressant d'avoir le code \textsf{Python} dans un fichier externe au ficher \ctex{tex}, ou bien créé directement par le fichier \ctex{tex} (via \ctex{scontents}, notamment, mais non chargé par \ctex{ProfLycee}).
Dans ce cas, il n'est pas nécessaire d'aligner le code \og à gauche \fg, en utilisant une commande alternative.
@@ -2232,7 +2073,7 @@ def f(x) :
\end{codesortie}
\begin{codetex}[listing only]
-\begin{CodePythonLst}*[0.5\linewidth]{flush right}
+\begin{CodePythonLstAlt}*[0.75\linewidth]{flush right}
#largeur de 50%, sans numéro, et aligné à droite
nb = int(input("Saisir un entier Python positif"))
if (nb %7 == 0) :
@@ -2241,11 +2082,11 @@ if (nb %7 == 0) :
def f(x) :
return x**2
-\end{CodePythonLst}
+\end{CodePythonLstAlt}
\end{codetex}
\begin{codesortie}
-\begin{CodePythonLst}*[0.5\linewidth]{flush right}
+\begin{CodePythonLstAlt}*[0.75\linewidth]{flush right}
#largeur de 50%, sans numéro, et aligné à droite
nb = int(input("Saisir un entier Python positif"))
if (nb %7 == 0) :
@@ -2254,7 +2095,7 @@ if (nb %7 == 0) :
def f(x) :
return x**2
-\end{CodePythonLst}
+\end{CodePythonLstAlt}
\end{codesortie}
\begin{codetex}[listing only]
@@ -2329,7 +2170,7 @@ def trace_parabole_tableaux():
\begin{codeinfo}
\cmaj{2.5.0} Cette section nécessite de charger la \textsf{librairie} \clib{piton} dans le préambule.
-\cmaj{2.5.7} Une console Python est disponible, elle nécessite le package \ctex{pyluatex}, qui n'est pas chargé par \ctex{ProfLycee}, du fait de l'obligation de spécifier le \textit{chemin} pour l'exécutable Python !
+\cmaj{2.5.7} Une console \textsf{Python} est disponible, elle nécessite le package \ctex{pyluatex}, qui n'est pas chargé par \ctex{ProfLycee}, du fait de l'obligation de spécifier le \textit{chemin} pour l'exécutable \textsf{Python} !
\end{codeinfo}
\begin{codetex}[listing only]
@@ -2338,11 +2179,11 @@ def trace_parabole_tableaux():
\end{codetex}
\begin{codeinfo}
-La \textsf{librairie} \clib{piton} (qui charge \ctex{piton}, est compatible uniquement avec \hologo{LuaLaTeX} !) permet d'insérer du code Python avec une coloration syntaxique en utilisant la bibliothèque \textsf{Lua LPEG}.
+La \textsf{librairie} \clib{piton} (qui charge \ctex{piton}, est compatible uniquement avec \hologo{LuaLaTeX} !) permet d'insérer du code \textsf{Python} avec une coloration syntaxique en utilisant la bibliothèque \textsf{Lua LPEG}.
\smallskip
-En \textit{partenariat} avec \ctex{tcolorbox}, on peut avoir une présentation de code Python !
+En \textit{partenariat} avec \ctex{tcolorbox}, on peut avoir une présentation de code \textsf{Python} !
\smallskip
@@ -2368,7 +2209,7 @@ Ce package n'est chargé que si la compilation détectée est en \hologo{LuaLaTe
\subsection{Présentation de code Python}
\begin{codetex}[listing only]
-\begin{CodePiton}[options]
+\begin{CodePiton}[options]{options tcbox}
...
\end{CodePiton}
\end{codetex}
@@ -2393,8 +2234,12 @@ Plusieurs \Cle{clés} sont disponibles :
Du fait du paramétrage des boîtes \ctex{tcolorbox}, il se peut que le rendu soit non conforme si elle doit être insérée dans une autre \ctex{tcolorbox}\ldots{} !
\end{codeinfo}
+\begin{codeinfo}
+Pour éviter des problèmes avec le code interprété par \textsf{piton}, les \ctex{\{\}} de l'argument obligatoire sont nécessaires au bon fonctionnement du code.
+\end{codeinfo}
+
\begin{codetex}[listing only]
-\begin{CodePiton}
+\begin{CodePiton}{}
#environnement piton avec numéros de ligne, pleine largeur, style moderne
def arctan(x,n=10):
if x < 0:
@@ -2406,7 +2251,7 @@ def arctan(x,n=10):
\end{CodePiton}
\end{codetex}
-\begin{CodePiton}
+\begin{CodePiton}{}
#environnement piton avec numéros de ligne, pleine largeur, style moderne
def arctan(x,n=10):
if x < 0:
@@ -2418,8 +2263,8 @@ def arctan(x,n=10):
\end{CodePiton}
\begin{codetex}[listing only]
-\begin{CodePiton}[Style=Classique]
-#environnement piton avec numéros de ligne, pleine largeur, style classique
+\begin{CodePiton}[Style=Classique,Filigrane]{}
+#environnement piton avec numéros, style classique, filigrane
def arctan(x,n=10):
if x < 0:
return -arctan(-x) #> (appel récursif)
@@ -2430,8 +2275,8 @@ def arctan(x,n=10):
\end{CodePiton}
\end{codetex}
-\begin{CodePiton}[Style=Classique]
-#environnement piton avec numéros de ligne, pleine largeur, style classique
+\begin{CodePiton}[Style=Classique,Filigrane]{}
+#environnement piton avec numéros, style classique, filigrane
def arctan(x,n=10):
if x < 0:
return -arctan(-x) #> (appel récursif)
@@ -2442,12 +2287,12 @@ def arctan(x,n=10):
\end{CodePiton}
\begin{codetex}[listing only]
-\begin{CodePiton}[Alignement=flush right,Largeur=13cm]
+\begin{CodePiton}[Alignement=flush right,Largeur=13cm]{}
def f(x) :
return x**2
\end{CodePiton}
-\begin{CodePiton}[Alignement=flush left,Largeur=11cm]
+\begin{CodePiton}[Alignement=flush left,Largeur=11cm]{}
def f(x) :
return x**2
\end{CodePiton}
@@ -2455,13 +2300,13 @@ def f(x) :
\begin{itemize} %Avec des indentations d'environnement :
\item On essaye avec un \texttt{itemize} :
%
- \begin{CodePiton}[Largeur=12cm,Style=Classique,Cadre=false]
+ \begin{CodePiton}[Largeur=12cm,Style=Classique,Cadre=false]{}
def f(x) :
return x**2
\end{CodePiton}
\item Et avec un autre \texttt{itemize} :
%
- \begin{CodePiton}[Largeur=12cm,Style=Classique,Cadre=false,BarreTitre=false]
+ \begin{CodePiton}[Largeur=12cm,Style=Classique,Cadre=false,BarreTitre=false]{}
#avec numéros, de largeur 12cm, centré, classique, sans cadre/titre
def f(x) :
return x**2
@@ -2469,13 +2314,13 @@ def f(x) :
\end{itemize}
\end{codetex}
-\begin{CodePiton}[Alignement=flush right,Largeur=13cm]
+\begin{CodePiton}[Alignement=flush right,Largeur=13cm]{}
#avec numéros, de largeur 13cm, aligné à droite
def f(x) :
return x**2
\end{CodePiton}
-\begin{CodePiton}[Alignement=flush left,Largeur=11cm]
+\begin{CodePiton}[Alignement=flush left,Largeur=11cm]{}
#avec numéros, de largeur 11cm, aligné à gauche
def f(x) :
return x**2
@@ -2484,14 +2329,14 @@ def f(x) :
\begin{itemize}
\item On essaye avec un \texttt{itemize} :
%
- \begin{CodePiton}[Largeur=12cm,Style=Classique,Cadre=false]
+ \begin{CodePiton}[Largeur=12cm,Style=Classique,Cadre=false]{}
#avec numéros, de largeur 12cm, centré, classique, sans cadre
def f(x) :
return x**2
\end{CodePiton}
\item Et avec un autre \texttt{itemize} :
%
- \begin{CodePiton}[Largeur=12cm,Style=Classique,BarreTitre=false,Cadre=false]
+ \begin{CodePiton}[Largeur=12cm,Style=Classique,BarreTitre=false,Cadre=false]{}
#avec numéros, de largeur 12cm, centré, classique, sans cadre/titre
def f(x) :
return x**2
@@ -2524,12 +2369,12 @@ def f(x) :
\subsection{Introduction}
\begin{codeidee}
-\cmaj{2.5.0} La \textsf{librairie} \clib{pythontex} permet d'insérer et d'exécuter du code Python. On peut :
+\cmaj{2.5.0} La \textsf{librairie} \clib{pythontex} permet d'insérer et d'exécuter du code \textsf{Python}. On peut :
\begin{itemize}
- \item présenter du code Python ;
- \item exécuter du code Python dans un environnement type \og console \fg{} ;
- \item charger du code Python, et éventuellement l'utiliser dans la console.
+ \item \cmaj{2.5.8} présenter du code \textsf{Python} (deux styles disponibles) ;
+ \item exécuter du code \textsf{Python} dans un environnement type \og console \fg{} ;
+ \item charger du code \textsf{Python}, et éventuellement l'utiliser dans la console.
\end{itemize}
\end{codeidee}
@@ -2540,7 +2385,7 @@ Voir par exemple \url{http://lesmathsduyeti.fr/fr/informatique/latex/pythontex/}
\end{codeattention}
\begin{codeinfo}
-Compte tenu de la \textit{relative complexité} pour gérer les options (par paramètres/clés\ldots) des \textit{tcbox} et des \textit{fancyvrb}, le style est \og fixé \fg{} tel quel, et seules la taille et la position de la \textit{tcbox} sont modifiables. Si toutefois vous souhaitez personnaliser davantage, il faudra prendre le code correspondant et appliquer vos modifications !
+Compte tenu de la \textit{relative complexité} pour gérer les options (par paramètres/clés\ldots) des \textit{tcbox} et des \textit{fancyvrb}, les style sont \og fixés \fg{} tels quels, et seules la taille et la position de la \textit{tcbox} sont modifiables. Si toutefois vous souhaitez personnaliser davantage, il faudra prendre le code correspondant et appliquer vos modifications !
Cela peut donner -- en tout cas -- des idées de personnalisation en ayant une base \textit{pré}existante !
\end{codeinfo}
@@ -2548,21 +2393,27 @@ Cela peut donner -- en tout cas -- des idées de personnalisation en ayant une b
\subsection{Présentation de code Python grâce au package pythontex}\label{pythontex}
\begin{codeidee}
-L'environnement \ctex{CodePythontex} est donc lié à \ctex{pythontex} (chargé par \ctex{ProfLycee}, avec l'option \textit{autogobble}) permet de présenter du code python, dans une \ctex{tcolorbox} avec un style particulier.
+L'environnement \ctex{CodePythontex} est donc lié à \ctex{pythontex} (chargé par \ctex{ProfLycee}, avec l'option \textit{autogobble}) permet de présenter du code \textsf{Python}, dans une \ctex{tcolorbox} avec deux styles particuliers (\cmaj{2.5.8}).
\end{codeidee}
\begin{codetex}[listing only]
-\begin{CodePythontex}[options]
+\begin{CodePythontex}[options]{} %les {} vides sont nécessaires
...
\end{CodePythontex}
\end{codetex}
+\begin{codetex}[listing only]
+\begin{CodePythontexAlt}[options]{} %les {} vides sont nécessaires
+ ...
+\end{CodePythontexAlt}
+\end{codetex}
+
\begin{codecles}
Comme précédemment, des \Cle{Clés} qui permettent de \textit{légèrement} modifier le style :
\begin{itemize}
\item \Cle{Largeur} : largeur de la \textit{tcbox} ;\hfill{}défaut \Cle{\textbackslash linewidth}
- \item \Cle{Centre} : booléen pour centrer ou non la \textit{tcbox} ;\hfill{}défaut \Cle{true}
+ \item \Cle{Centre} : booléen pour centrer ou non la \textit{tcbox} ;\hfill{}défaut \Cle{false}
\item \Cle{TaillePolice} : taille des caractères ;\hfill{}défaut \Cle{\textbackslash footnotesize}
\item \Cle{EspacementVertical} : option (\textit{stretch}) pour l'espacement entre les lignes ;\hfill{}défaut \Cle{1}
\item \Cle{Lignes} : booléen pour afficher ou non les numéros de ligne.\hfill{}défaut \Cle{true}
@@ -2570,41 +2421,43 @@ Comme précédemment, des \Cle{Clés} qui permettent de \textit{légèrement} mo
\end{codecles}
\begin{codetex}[listing only]
-\begin{CodePythontex}[Largeur=12cm]
- #environnement Python(tex) centré avec numéros de ligne
+\begin{CodePythontex}{} %bien mettre les {} !!
+ #environnement Python(tex) par défaut
def f(x) :
return x**2
\end{CodePythontex}
\end{codetex}
\begin{codesortie}
-\begin{CodePythontex}[Largeur=12cm]
- #environnement Python(tex) centré avec numéros de ligne
+\begin{CodePythontex}{}
+ #environnement Python(tex) par défaut
def f(x) :
return x**2
\end{CodePythontex}
\end{codesortie}
\begin{codetex}[listing only]
-\begin{CodePythontex}[Largeur=12cm,Lignes=false,Centre=false]
- #environnement Python(tex) non centré sans numéro de ligne
+\begin{CodePythontexAlt}[Largeur=12cm,Centre,Lignes=false]{}
+ #environnement Python(tex) classique, centré, sans lignes
def f(x) :
return x**2
-\end{CodePythontex}
+\end{CodePythontexAlt}
\end{codetex}
\begin{codesortie}
-\begin{CodePythontex}[Largeur=12cm,Lignes=false,Centre=false]
- #environnement Python(tex) non centré sans numéro de ligne
+\begin{CodePythontexAlt}[Largeur=12cm,Centre,Lignes=false]{}
+ #environnement Python(tex) classique, centré, sans lignes
def f(x) :
return x**2
-\end{CodePythontex}
+\end{CodePythontexAlt}
\end{codesortie}
\subsection{Présentation de code Python via le package minted}\label{pytminted}
\begin{codeinfo}
-Pour celles et ceux qui ne sont pas à l'aise avec le {package} \ctex{pythontex} et notamment sa spécificité pour compiler, il existe le {package} \ctex{minted} qui permet de présenter du code, et notamment Python.
+Pour celles et ceux qui ne sont pas à l'aise avec le {package} \ctex{pythontex} et notamment sa spécificité pour compiler, il existe le {package} \ctex{minted} qui permet de présenter du code, et notamment \textsf{Python}.
+
+\cmaj{2.5.8} Deux styles sont désormais disponibles.
\cmaj{2.5.0} C'est donc la \textsf{librairie} \clib{minted} qu'il faudra charger.
\end{codeinfo}
@@ -2614,23 +2467,29 @@ Le package \ctex{minted} nécessite quand même une compilation avec l'option \c
\end{codeattention}
\begin{codetex}[listing only]
-\begin{CodePythonMinted}(*)[largeur][options]
+\begin{CodePythonMinted}(*)[largeur]{options}
...
\end{CodePythonMinted}
\end{codetex}
+\begin{codetex}[listing only]
+\begin{CodePythonMintedAlt}(*)[largeur]{options}
+...
+\end{CodePythonMintedAlt}
+\end{codetex}
+
\begin{codecles}
-Plusieurs \Cle{arguments} (optionnels) sont disponibles :
+Plusieurs \Cle{arguments} sont disponibles :
\begin{itemize}
\item la version \textit{étoilée} qui permet de ne pas afficher les numéros de lignes ;
\item le 1\up{er} argument \textit{optionnel} concerne la \Cle{largeur} de la \ctex{tcbox} ;\hfill{}défaut \Cle{12cm}
- \item le 2\up{nd} argument \textit{optionnel} concerne les \Cle{options} de la \ctex{tcbox} en \textit{langage tcbox}.\hfill{}défaut \Cle{vide}
+ \item le 2\up{nd} argument \textit{obligatoire} concerne les \Cle{options} de la \ctex{tcbox} en \textit{langage tcbox}.\hfill{}défaut \Cle{vide}
\end{itemize}
\end{codecles}
\begin{codetex}[listing only]
-\begin{CodePythonMinted}[13cm][center]
+\begin{CodePythonMinted}[13cm]{center}
#environnement Python(minted) centré avec numéros, de largeur 13cm
def f(x) :
return x**2
@@ -2638,7 +2497,7 @@ Plusieurs \Cle{arguments} (optionnels) sont disponibles :
\end{codetex}
\begin{codesortie}
-\begin{CodePythonMinted}[13cm][center]
+\begin{CodePythonMinted}[13cm]{center}
#environnement Python(minted) centré avec numéros
def f(x) :
return x**2
@@ -2646,31 +2505,31 @@ Plusieurs \Cle{arguments} (optionnels) sont disponibles :
\end{codesortie}
\begin{codetex}[listing only]
-\begin{CodePythonMinted}*[0.8\linewidth][]
- #environnement Python(minted) sans numéro, de largeur 0.8\linewidth
+\begin{CodePythonMintedAlt}*[0.8\linewidth]{}
+ #environnement Python(minted), style alt, sans numéro, de largeur 0.8\linewidth
def f(x) :
return x**2
-\end{CodePythonMinted}
+\end{CodePythonMintedAlt}
\end{codetex}
\begin{codesortie}
-\begin{CodePythonMinted}*[0.8\linewidth][]
- #environnement Python(minted) sans numéro, de largeur 0.8\linewidth
+\begin{CodePythonMintedAlt}*[0.8\linewidth]{}
+ #environnement Python(minted), style alt, sans numéro, de largeur 0.8\linewidth
def f(x) :
return x**2
-\end{CodePythonMinted}
+\end{CodePythonMintedAlt}
\end{codesortie}
\subsection{Console d'exécution Python}
\begin{codeidee}
-\ctex{pythontex} permet également de \textit{simuler} (en exécutant également !) du code python dans une \textit{console}, avec la \textsf{librairie} \clib{pythontex} du coup !
+\ctex{pythontex} permet également de \textit{simuler} (en exécutant également !) du code \textsf{Python} dans une \textit{console}, avec la \textsf{librairie} \clib{pythontex} du coup !
C'est l'environnement \ctex{ConsolePythontex} qui permet de le faire.
\end{codeidee}
\begin{codetex}[listing only]
-\begin{ConsolePythontex}[options]
+\begin{ConsolePythontex}[options]{} %les {} vides sont nécessaires
...
\end{ConsolePythontex}
\end{codetex}
@@ -2680,7 +2539,7 @@ Les \Cle{Clés} disponibles sont :
\begin{itemize}
\item \Cle{Largeur} : largeur de la \textit{console} ;\hfill{}défaut \Cle{\textbackslash linewidth}
- \item \Cle{Centre} : booléen pour centrer ou non la \textit{console} ;\hfill{}défaut \Cle{true}
+ \item \Cle{Centre} : booléen pour centrer ou non la \textit{console} ;\hfill{}défaut \Cle{false}
\item \Cle{TaillePolice} : taille des caractères ;\hfill{}défaut \Cle{\textbackslash footnotesize}
\item \Cle{EspacementVertical} : option (\textit{stretch}) pour l'espacement entre les lignes ;\hfill{}défaut \Cle{1}
\item \Cle{Label} : booléen pour afficher ou non le titre.\hfill{}défaut \Cle{true}
@@ -2688,8 +2547,8 @@ Les \Cle{Clés} disponibles sont :
\end{codecles}
\begin{codetex}[listing only]
-\begin{ConsolePythontex}[Largeur=14cm,Centre=false]
- #console Python(tex) non centrée avec label
+\begin{ConsolePythontex}{}
+ #console Python(tex) par défaut
from math import sqrt
1+1
sqrt(12)
@@ -2698,8 +2557,8 @@ Les \Cle{Clés} disponibles sont :
\begin{codesortie}
\smallskip
-\begin{ConsolePythontex}[Largeur=14cm,Centre=false]
- #console Python(tex) non centrée avec label
+\begin{ConsolePythontex}{}
+ #console Python(tex) par défaut
from math import sqrt
1+1
sqrt(12)
@@ -2707,36 +2566,34 @@ Les \Cle{Clés} disponibles sont :
\end{codesortie}
\begin{codetex}[listing only]
-\begin{ConsolePythontex}[Largeur=14cm,Label=false]
- #console Python(tex) centrée sans label
+\begin{ConsolePythontex}[Largeur=14cm,Label=false,Centre]{}
+ #console Python(tex) centrée sans label, 14cm
table = [[1,2],[3,4]]
table[0][0]
from random import randint
tableau = [[randint(1,20) for j in range(0,6)] for i in range(0,3)]
tableau
- len(tableau), len(tableau[0])
- tableau[1][4]
+ len(tableau), len(tableau[0]), tableau[1][4]
\end{ConsolePythontex}
\end{codetex}
\begin{codesortie}
\smallskip
-\begin{ConsolePythontex}[Largeur=14cm,Label=false]
- #console Python(tex) centrée sans label
+\begin{ConsolePythontex}[Largeur=14cm,Label=false,Centre]{}
+ #console Python(tex) centrée sans label, 14cm
table = [[1,2],[3,4]]
table[0][0]
from random import randint
tableau = [[randint(1,20) for j in range(0,6)] for i in range(0,3)]
tableau
- len(tableau), len(tableau[0])
- tableau[1][4]
+ len(tableau), len(tableau[0]), tableau[1][4]
\end{ConsolePythontex}
\end{codesortie}
\begin{codeinfo}
-Le package \ctex{pythontex} peut donc servir à présenter du code Python, comme \ctex{minted} ou \ctex{piton}, sa particularité est toutefois de pouvoir \textit{exécuter} du code Python pour une présentation de type \textit{console}.
+Le package \ctex{pythontex} peut donc servir à présenter du code Python, comme \ctex{minted} ou \ctex{piton}, sa particularité est toutefois de pouvoir \textit{exécuter} du code \textsf{Python} pour une présentation de type \textit{console}.
\end{codeinfo}
\newpage
@@ -2746,13 +2603,13 @@ Le package \ctex{pythontex} peut donc servir à présenter du code Python, comme
\subsection{Introduction}
\begin{codeinfo}
-Le {package} \ctex{listings} permet d'insérer et de présenter du code, et avec \ctex{tcolorbox} on peut obtenir une présentation similaire à celle du code Python. Pour le moment la \textit{philosophie} de la commande est un peu différente de celle du code python, avec son système de \Cle{Clés}, car l'environnement \ctex{tcblisting} est un peu différent\ldots
+Le {package} \ctex{listings} permet d'insérer et de présenter du code, et avec \ctex{tcolorbox} on peut obtenir une présentation similaire à celle du code \textsf{Python}. Pour le moment la \textit{philosophie} de la commande est un peu différente de celle du code \textsf{Python}, avec son système de \Cle{Clés}.
\end{codeinfo}
\subsection{Présentation de Pseudo-Code}
\begin{codeidee}
-L'environnement \ctex{PseudoCode} permet de présenter du (pseudo-code) dans une \ctex{tcolorbox}.
+Les environnements \ctex{PseudoCode} ou \ctex{PseudoCodeAlt} permet de présenter du (pseudo-code) dans une \ctex{tcolorbox}, avec deux styles à disposition (\cmaj{2.5.8}).
\end{codeidee}
\begin{codeattention}
@@ -2760,24 +2617,32 @@ De plus, le package \ctex{listings} avec \ctex{tcolorbox} ne permet pas de gére
\end{codeattention}
\begin{codetex}[listing only]
-\begin{PseudoCode}(*)[largeur][options]
+\begin{PseudoCode}(*)[largeur]{options tcbox}
%attention à l'indentation, gobble ne fonctionne pas...
...
\end{PseudoCode}
\end{codetex}
+\begin{codetex}[listing only]
+\begin{PseudoCodeAlt}(*)[largeur]{options tcbox}
+%attention à l'indentation, gobble ne fonctionne pas...
+...
+\end{PseudoCodeAlt}
+\end{codetex}
+
\begin{codecles}
Plusieurs \Cle{arguments} (optionnels) sont disponibles :
\begin{itemize}
\item la version \textit{étoilée} qui permet de ne pas afficher les numéros de lignes ;
\item le premier argument optionnel concerne la \Cle{largeur} de la \ctex{tcbox} ;\hfill{}défaut \Cle{12cm}
- \item le second argument optionnel concerne les \Cle{options} de la \ctex{tcbox} en \textit{langage tcolorbox}.\hfill{}défaut \Cle{vide}
+ \item \cmaj{2.5.8} l'argument obligatoire entre \ctex{\{...\}} concerne les \Cle{options} de la \ctex{tcbox}.
\end{itemize}
\end{codecles}
\begin{codetex}[listing only]
-\begin{PseudoCode} %non centré, de largeur par défaut (12cm) avec lignes
+%en pas oublier les {}, même vides !
+\begin{PseudoCode}{} %non centré, de largeur par défaut (12cm) avec lignes
List = [...] # à déclarer au préalable
n = longueur(List)
Pour i allant de 0 à n-1 Faire
@@ -2787,7 +2652,7 @@ FinPour
\end{codetex}
\begin{codesortie}
-\begin{PseudoCode}
+\begin{PseudoCode}{}
List = [...] # à déclarer au préalable
n = longueur(List)
Pour i allant de 0 à n-1 Faire
@@ -2797,51 +2662,41 @@ FinPour
\end{codesortie}
\begin{codetex}[listing only]
-\begin{PseudoCode}*[15cm][center] %centré, de largeur 15cm sans ligne
+\begin{PseudoCodeAlt}[15cm]{center} %centré, de largeur 15cm
List = [...] # à déclarer au préalable
n = longueur(List)
Pour i allant de 0 à n-1 Faire
Afficher(List[i])
FinPour
-\end{PseudoCode}
+\end{PseudoCodeAlt}
\end{codetex}
\begin{codesortie}
-\begin{PseudoCode}*[15cm][center]
+\begin{PseudoCodeAlt}[15cm]{center}
List = [...] # à déclarer au préalable
n = longueur(List)
Pour i allant de 0 à n-1 Faire
Afficher(List[i])
FinPour
-\end{PseudoCode}
+\end{PseudoCodeAlt}
\end{codesortie}
\subsection{Compléments}
-\begin{codeinfo}
+\begin{codeattention}
À l'instar de packages existants, la \textit{philosophie} ici est de laisser l'utilisateur gérer \textit{son} langage pseudo-code.
-J'ai fait le choix de ne pas définir des \textsf{mots clés} à mettre en valeur car cela reviendrait à \textit{imposer} des choix ! Donc ici, pas de coloration syntaxique ou de mise en évidence de mots clés, uniquement un formatage basique de pseudo-code.
-\end{codeinfo}
-
-\begin{codeidee}
-Évidemment, le code source est récupérable et adaptable à volonté, en utilisant les possibilités du package \ctex{listings}.
-
-\smallskip
-
-Celles et ceux qui sont déjà à l'aise avec les packages \ctex{listings} ou \ctex{minted} doivent déjà avoir leur environnement personnel prêt !
-
-Il s'agit ici de présenter une version \og clé en main \fg{}.
-\end{codeidee}
+J'ai fait le choix de ne pas définir des \textsf{mots clés} à mettre en valeur car cela reviendrait à \textit{imposer} des choix ! Donc ici, pas de coloration syntaxique ou de mise en évidence de mots clés, uniquement un formatage basique !
+\end{codeattention}
\begin{codeinfo}
Le style \ctex{listings} utilisé par la commande a l'option \Cle{mathescape} activée, et accessible grâce aux délimiteurs \Cle{(*...*)}.
-Cela permet d'insérer du code \LaTeX{} dans l'environnement \ctex{PseudoCode} (attention au fontes de rendu par contre !).
+Cela permet d'insérer du code \LaTeX{} dans l'environnement \ctex{PseudoCode} (attention au fontes par contre !).
\end{codeinfo}
\begin{codetex}[listing only]
-\begin{PseudoCode}[12cm][]
+\begin{PseudoCode}*[12cm]{}
#Utilisation du mode mathescape
Afficher (*\og*) .........(*\fg*)
m = (*$\tfrac{\texttt{1}}{\texttt{2}}$*)
@@ -2849,7 +2704,7 @@ m = (*$\tfrac{\texttt{1}}{\texttt{2}}$*)
\end{codetex}
\begin{codesortie}
-\begin{PseudoCode}[12cm][]
+\begin{PseudoCode}*[12cm]{}
#Utilisation du mode mathescape
Afficher (*\og*) .........(*\fg*)
m = (*$\tfrac{\texttt{1}}{\texttt{2}}$*)
@@ -2881,15 +2736,15 @@ Comme pour le pseudo-code, pas d'\textsf{autogobble}, donc commandes à aligner
\subsection{Commandes}
\begin{codetex}[listing only]
-\begin{TerminalWin}[largeur]{titre=...}[options]
+\begin{TerminalWin}[largeur]{titre=...}[options tcbox]
...
\end{TerminalWin}
-\begin{TerminalUnix}[largeur]{titre=...}[options]
+\begin{TerminalUnix}[largeur]{titre=...}[options tcbox]
...
\end{TerminalUnix}
-\begin{TerminalOSX}[largeur]{titre=...}[options]
+\begin{TerminalOSX}[largeur]{titre=...}[options tcbox]
...
\end{TerminalOSX}
\end{codetex}
@@ -2930,7 +2785,7 @@ Microsoft Windows [version 10.0.22000.493]
(c) Microsoft Corporation. Tous droits réservés.
C:\Users\test>ping ctan.org
-Envoi d’une requête 'ping' sur ctan.org [5.35.249.60] avec 32 octets de données :
+Envoi d'une requête 'ping' sur ctan.org [5.35.249.60] avec 32 octets de données :
Réponse de 5.35.249.60 : octets=32 temps=35 ms TTL=51
Réponse de 5.35.249.60 : octets=32 temps=37 ms TTL=51
Réponse de 5.35.249.60 : octets=32 temps=35 ms TTL=51
@@ -2954,7 +2809,7 @@ Microsoft Windows [version 10.0.22000.493]
(c) Microsoft Corporation. Tous droits réservés.
C:\Users\test>ping ctan.org
-Envoi d’une requête 'ping' sur ctan.org [5.35.249.60] avec 32 octets de données :
+Envoi d'une requête 'ping' sur ctan.org [5.35.249.60] avec 32 octets de données :
Réponse de 5.35.249.60 : octets=32 temps=35 ms TTL=51
Réponse de 5.35.249.60 : octets=32 temps=37 ms TTL=51
Réponse de 5.35.249.60 : octets=32 temps=35 ms TTL=51
@@ -2984,7 +2839,7 @@ PING ctan.org (5.35.249.60) 56(84) bytes of data.
\subsection{Introduction}
\begin{codeidee}
-L'idée est d'obtenir des \textsf{cartouches} tels que \textsf{Capytale} les présente, pour partager un code afin d'accéder à une activité \textsf{python}.
+L'idée est d'obtenir des \textsf{cartouches} tels que \textsf{Capytale} les présente, pour partager un code afin d'accéder à une activité \textsf{Python}.
\end{codeidee}
\subsection{Commandes}
@@ -2998,7 +2853,9 @@ Peu d'options pour ces commandes :
\begin{itemize}
\item la version \textit{étoilée} qui permet de passer de la police \Cle{sffamily} à la police \Cle{ttfamily}, et donc dépendante des fontes du document ;
- \item le deuxième, \textit{optionnel}, permet de rajouter des caractères après le code (comme un \textsf{espace}) ;\hfill{}défaut \Cle{vide}
+ \item le deuxième, \textit{optionnel}, permet de rajouter des caractères après le code (comme un \textsf{espace}) ;
+
+ \hfill{}défaut \Cle{vide}
\item le troisième, \textit{obligatoire}, est le \textsf{code capytale} à afficher.
\end{itemize}
\end{codecles}
@@ -3082,7 +2939,7 @@ On peut par exemple utiliser l'option \Cle{listing only} pour ne présenter \tex
\xdef\ValAleaA{\fpeval{randint(1,100)}}
\xdef\ValAleaB{\fpeval{randint(1,100)}}
-Avec $A=\ValAleaA$ et $B=\ValAleaB$, on a $A\times B=\inteval{\ValAleaA * \ValAleaB}$
+Avec $A=\ValAleaA$ et $B=\ValAleaB$, on a $A\times B=\inteval{\ValAleaA * \ValAleaB}$.
\end{PresentationCode}
\begin{PresentationCode}[DarkBlue]{}
@@ -3230,12 +3087,6 @@ Quelques \Cle{clés} sont disponibles pour cette commande :
\TetraedreTikz[Plein,Aff,Largeur=5,Beta=60]
\end{codetex}
-%\begin{codeinfo}
-%La ligne est de ce fait à insérer dans un environnement \TikZ, avec les options au choix pour cet environnement.
-%
-%Le code créé les nœuds relatifs aux sommets, et les nomme comme les sommets, ce qui permet de les réutiliser pour éventuellement compléter la figure !
-%\end{codeinfo}
-
\subsection{Influence des paramètres}
\begin{codeinfo}
@@ -3272,33 +3123,9 @@ Pour \textit{illustrer} un peu les \Cle{clés}, un petit schéma, avec les diff
\end{tikzpicture}
\end{center}
\end{codesortie}
-%
-%\begin{codetex}[listing only]
-% \begin{center}
-% \begin{tikzpicture}[line join=bevel]
-% \pavePL[plein,aff,largeur=7,profondeur=3.5,hauteur=4,sommets=Q§S§D§F§G§H§J§K]
-% \draw[thick,red,densely dotted] (G)--(J) ;
-% \draw[thick,blue,densely dotted] (K)--(H) ;
-% \end{tikzpicture}
-% \end{center}
-%\end{codetex}
-%
-%\medskip
-%
-%\begin{codesortie}
-% \begin{center}
-% \begin{tikzpicture}[line join=bevel]
-% \pavePL[plein,aff,largeur=7,profondeur=3.5,hauteur=4,sommets=Q§S§D§F§G§H§J§K]
-% \draw[thick,red,densely dotted] (G)--(J) ;
-% \draw[thick,blue,densely dotted] (K)--(H) ;
-% \end{tikzpicture}
-% \end{center}
-%\end{codesortie}
\newpage
-%\newpage
-%
\section{Cercle trigo}\label{cercletrigo}
\subsection{Idée}
@@ -3644,10 +3471,10 @@ Les \textsf{macros} qui contiennent les paramètres de la régression sont donc
\def\LstY{-35,-37.4,-37.7,-39.9,-39,-39.6}
%on lance les calculs et on change le nom des "macros-résultats"
\CalculsRegLin[NomCoeffa=TESTa,NomCoeffb=TESTb,NomCoeffr=TESTr,NomCoeffrd=TESTrd,%
- NomXmin=TESTmin,NomXmax=TESTmax]{\LstX}{\LstY}
+ NomXmin=TESTmin,NomXmax=TESTmax]{\LstX}{\LstY}
%commandes complémentaires
-\DeclareDocumentCommand\arrond{ s O{3} m }{% * pour afficher signe / opt = précision / argument = nb
- \IfBooleanTF{#1}{\num[print-implicit-plus]{\fpeval{round(#3,#2)}}}{\num{\fpeval{round(#3,#2)}}}
+\DeclareDocumentCommand\arrond{ s O{3} m }{% * signe / précision / nb
+ \IfBooleanTF{#1}{\num[print-implicit-plus]{\fpeval{round(#3,#2)}}} {\num{\fpeval{round(#3,#2)}}}
}
%paramètres
Les valeurs extr. de X sont \TESTmin{} et \TESTmax. Une éq. est $y=\arrond[3]{\TESTa}x \arrond*[3]{\TESTb}$.
@@ -3662,7 +3489,9 @@ Le coeff. de corrélation est $r=\arrond[4]{\TESTr}$, et son carré est $r^2=\ar
{\num{\fpeval{round(#3,#2)}}}
}
-Les valeurs extrêmes de X sont \TESTmin{} et \TESTmax. Une équation de la droite de régression de $y$ en $x$ est $y=\arrond[3]{\TESTa}x \arrond*[3]{\TESTb}$.
+Les valeurs extrêmes de $x$ sont \TESTmin{} et \TESTmax. Une équation de la droite de régression de $y$ en $x$ est
+
+\hfill$y=\arrond[3]{\TESTa}x \arrond*[3]{\TESTb}$.\hfill~
\smallskip
@@ -3787,8 +3616,8 @@ Quelques \Cle{Clés} sont disponibles pour cette commande, essentiellement pour
\PointsRegLin[Ox=1992,Oy=1640,Couleur=blue,Taille=3pt]{\LLX}{\LLY}
\draw[orange,very thick,samples=2,domain=\LXmin:\LXmax] plot ({\x-\Ox},{\COEFFa*(\x)+\COEFFb-\Oy}) ;
\matrix [draw,fill=white,below left] at (current bounding box.north east) {
- \node {$y = \fpeval{round(\COEFFa,3)}\,x + \fpeval{round(\COEFFb,3)}$} ; \\
- \node {$R^2=\fpeval{round(\COEFFrd,5)}$} ; \\
+ \node {$y=\num{\fpeval{round(\COEFFa,3)}}\,x+\num{\fpeval{round(\COEFFb,3)}}$} ; \\
+ \node {$R^2=\num{\fpeval{round(\COEFFrd,5)}}$} ; \\
};
\end{tikzpicture}
\end{codetex}
@@ -3808,8 +3637,8 @@ Quelques \Cle{Clés} sont disponibles pour cette commande, essentiellement pour
\PointsRegLin[Ox=1992,Oy=1640,Couleur=blue,Taille=3pt]{\LLX}{\LLY}
\draw[orange,very thick,samples=2,domain=\LXmin:\LXmax] plot ({\x-\Ox},{\COEFFa*(\x)+\COEFFb-\Oy}) ;
\matrix [draw,fill=white,below left] at (current bounding box.north east) {
- \node {$y = \fpeval{round(\COEFFa,3)}\,x + \fpeval{round(\COEFFb,3)}$} ; \\
- \node {$R^2=\fpeval{round(\COEFFrd,5)}$} ; \\
+ \node {$y=\num{\fpeval{round(\COEFFa,3)}}\,x + \num{\fpeval{round(\COEFFb,3)}}$} ; \\
+ \node {$R^2=\num{\fpeval{round(\COEFFrd,5)}}$} ; \\
};
\end{tikzpicture}
\end{codesortie}
@@ -3825,7 +3654,7 @@ L'idée est de \textit{prolonger} le paragraphe précédent pour proposer un env
\smallskip
-Un des soucis pour ces situations est le fait que le repère dans lequel on travaille n'a pas forcément pour origine $(0\,;\,0)$.
+Un des soucis pour ces situations est le fait que le repère dans lequel on travaille n'a pas forcément pour origine $(0;0)$.
De ce fait -- pour éviter des erreurs de \ctex{dimension too large} liées à \TikZ{} -- il faut \textit{décaler les axes} pour se ramener à une origine en $O$.
@@ -4268,20 +4097,25 @@ L'idée principale est de récupérer les variables de la régression linéaire
\begin{tikzpicture}[x=0.35cm,y=0.07cm,Ox=1992,xmin=1992,xmax=2012,xgrille=2,xgrilles=1,Oy=1640,ymin=1640,ymax=1730,ygrille=10,ygrilles=5]
\GrilleTikz \AxesTikz[ElargirOx=0,ElargirOy=0]
- \AxexTikz[Annee,Police=\small]{1992,1994,...,2010}
+ \AxexTikz[Annee,Police=\footnotesize]{1992,1994,...,2010}
\AxeyTikz{1640,1650,...,1720}
\NuagePointsTikz[Couleur=blue/red]{\LLX}{\LLY} \PointMoyenTikz
\CourbeTikz[line width=1.25pt,ForestGreen,samples=2]{\COEFFa*\x+\COEFFb}{\xmin:\xmax}
\end{tikzpicture}
\end{codesortie}
+\subsection{Exemple complémentaire, pour illustration}
+
\begin{codetex}[listing only]
\def\LLX{1994,1995,1996,1997,1998,1999,2000,2001,2002,2004,2005,2006,2007,2008,2009,2010}
\def\LLY{1718,1710,1708,1700,1698,1697,1691,1688,1683,1679,1671,1670,1663,1661,1656,1649}
+%la courbe n'a pas de lien avec le nuage
+%elle illustre l'interaction des commandes "nuage" avec les autres commandes
+
\begin{tikzpicture}[...]
\NuagePointsTikz[Couleur=blue/red]{\LLX}{\LLY} \FenetreTikz %on fixe la fenêtre
- \CourbeTikz[line width=1.25pt,orange,samples=500]{-(\x-2000)*(\x-2000)+1700}{\xmin:\xmax}
+ \CourbeTikz[line width=1.25pt,orange,samples=250]{-(\x-2000)*(\x-2000)+1700}{\xmin:\xmax}
\end{tikzpicture}
\end{codetex}
@@ -4289,12 +4123,12 @@ L'idée principale est de récupérer les variables de la régression linéaire
\def\LLX{1994,1995,1996,1997,1998,1999,2000,2001,2002,2004,2005,2006,2007,2008,2009,2010}
\def\LLY{1718,1710,1708,1700,1698,1697,1691,1688,1683,1679,1671,1670,1663,1661,1656,1649}
-\begin{tikzpicture}[x=0.35cm,y=0.07cm,Ox=1992,xmin=1992,xmax=2012,xgrille=2,xgrilles=1,Oy=1640,ymin=1640,ymax=1730,ygrille=10,ygrilles=5]
+\begin{tikzpicture}[x=0.7cm,y=0.14cm,Ox=1992,xmin=1992,xmax=2012,xgrille=2,xgrilles=1,Oy=1640,ymin=1640,ymax=1730,ygrille=10,ygrilles=5]
\GrilleTikz \AxesTikz[ElargirOx=0,ElargirOy=0]
\AxexTikz[Annee,Police=\small]{1992,1994,...,2010}
\AxeyTikz{1640,1650,...,1720}
\NuagePointsTikz[Couleur=blue/red]{\LLX}{\LLY} \FenetreTikz
- \CourbeTikz[line width=1.25pt,orange,samples=500]{-(\x-2000)*(\x-2000)+1700}{\xmin:\xmax}
+ \CourbeTikz[line width=1.25pt,orange,samples=250]{-(\x-2000)*(\x-2000)+1700}{\xmin:\xmax}
\end{tikzpicture}
\end{codesortie}
@@ -4462,15 +4296,15 @@ De ce fait, les options de \ctex{siunitx} de l'utilisateur affecterons les forma
\CalcBinomP{n}{p}{k} %P(X=k)
\CalcBinomC{n}{p}{a}{b} %P(a<=X<=b)
-%loi de Poisson P (l)
+%loi de Poisson P(l)
\CalcPoissP{l}{k} %P(X=k)
\CalcPoissC{l}{a}{b} %P(a<=X<=b)
-%loi géométrique G (p)
+%loi géométrique G(p)
\CalcGeomP{p}{k} %P(X=k)
\CalcGeomC{l}{a}{b} %P(a<=X<=b)
-%loi hypergéométrique H (N,n,m)
+%loi hypergéométrique H(N,n,m)
\CalcHypergeomP{N}{n}{m}{k} %P(X=k)
\CalcHypergeomP{N}{n}{m}{a}{b} %P(a<=X<=b)
@@ -5048,7 +4882,7 @@ L'idée est de proposer une commande pour calculer un arrangement ou une combina
\subsection{Utilisation}
\begin{codecles}
-Peu de paramétrage pour ces commandes qui permettent de calculer $A_n^p$ et $C_n^p$ :
+Peu de paramétrage pour ces commandes qui permettent de calculer $A_n^p$ et $\binom{n}{p}$ :
\begin{itemize}
\item les versions étoilées ne formatent pas le résultat grâce à \ctex{\textbackslash num} de \ctex{sinuitx} ;
@@ -5330,7 +5164,9 @@ Quelques options pour cette commande :
\hfill{}défaut \Cle{EEE}
\item le booléen \Cle{Rect} pour afficher ou non le \og rectangle \fg{} des restes ; \hfill{}défaut \Cle{true}
- \item le booléen \Cle{CouleurRes} pour afficher ou non la conversion en couleur (identique au rectangle). \hfill{}défaut \Cle{false}
+ \item le booléen \Cle{CouleurRes} pour afficher ou non la conversion en couleur (identique au rectangle).
+
+ \hfill{}défaut \Cle{false}
\end{itemize}
\end{codecles}
@@ -5443,11 +5279,10 @@ La présentation est dans un environnement \ctex{ensuremath} donc les \ctex{\$..
\PresentationPGCD[CouleurResultat,Couleur=DarkBlue]{13500}{2500}.
-\PresentationPGCD[Rectangle=false]{420}{540}.
+\PresentationPGCD[Rectangle=false]{420}{540}. \\
-\medskip
-
-D'après l'algorithme d'Euclide, on a $\left| \PresentationPGCD[Couleur=LightSkyBlue,AfficheConclusion=false,AfficheDelimiteurs=false]{123456789}{9876} \right.$
+D'après l'algorithme d'Euclide, on a $\left| \PresentationPGCD[Couleur=LightSkyBlue,AfficheConclusion=false,AfficheDelimiteurs=false]%
+ {123456789}{9876} \right.$
\begin{tikzpicture}
\draw[overlay,LightSkyBlue,thick,<-] (FFF1.east) to[bend right] ++ (2cm,0.75cm) node[right] {dernier reste non nul} ;
\end{tikzpicture}
@@ -5611,7 +5446,9 @@ Peu d'options pour ces commandes :
\begin{itemize}
\item clé \Cle{Sep} qui correspond au délimiteur des éléments de l'ensemble ; \hfill{}défaut \Cle{;}
\item clé \Cle{Option} qui est un code (par exemple \textsf{strut}\dots) inséré avant les éléments ;\hfill{}défaut \Cle{vide}
- \item un booléen \Cle{Mathpunct} qui permet de préciser si on utilise l'espacement mathématique \textsf{mathpunct};\hfill{}défaut \Cle{true}
+ \item un booléen \Cle{Mathpunct} qui permet de préciser si on utilise l'espacement mathématique \textsf{mathpunct}.
+
+ \hfill{}défaut \Cle{true}
\end{itemize}
\item le second, \textit{obligatoire}, est la \textsf{liste} des éléments, séparés par \textsf{/}.
\end{itemize}
@@ -5722,10 +5559,8 @@ Avec $a$ entre 1 et 10 (forcément positif) puis $b$ entre $-2$ et 2 puis $c$ en
\end{codetex}
\begin{codetex}[]
-\SimplificationRacine{48}\\
-\SimplificationRacine{100/34}\\
-\SimplificationRacine{99999}\\
-\SimplificationRacine{1500*0.31*(1-0.31)}\\
+\SimplificationRacine{48} \\ \SimplificationRacine{100/34}\\
+\SimplificationRacine{99999} \\ \SimplificationRacine{1500*0.31*(1-0.31)}\\
\end{codetex}
\begin{codeinfo}
@@ -5749,7 +5584,7 @@ $\frac{1}{\sqrt{6}}=\left(\sqrt{\frac{1}{6}}\right)=\SimplificationRacine{1/6}$
$\frac{42}{\sqrt{5}}=\left(\sqrt{\frac{42^2}{5}}\right)=\SimplificationRacine{(42*42)/5}$
%Écart-type d'une loi binomiale
-$\sqrt{\num{150}\times\num{0.35}\times(1-\num{0.35})}=\displaystyle\SimplificationRacine{150*0.35*(1-0.35)}$
+$\sqrt{\num{150}\times\num{0.35}\times(1-\num{0.35})} = \displaystyle\SimplificationRacine{150*0.35*(1-0.35)}$
\end{codetex}
\newpage
@@ -5779,7 +5614,9 @@ Pour cette commande :
\begin{itemize}
\item le booléen \Cle{d} permet de forcer l'affichage en \ctex{displaystyle} ;\hfill{}défaut \Cle{false}
- \item le booléen \Cle{Crochets} permet d'afficher le \textit{modulo} entre crochets plutôt qu'entre parenthèses ;\hfill{}défaut \Cle{false}
+ \item le booléen \Cle{Crochets} permet d'afficher le \textit{modulo} entre crochets plutôt qu'entre parenthèses ;
+
+ \hfill{}défaut \Cle{false}
\item l'argument \textit{obligatoire} est en écriture \textit{en ligne}.
\end{itemize}
\end{codecles}
@@ -6330,6 +6167,10 @@ La grille, créée en \TikZ, est portée par le rectangle de \og coins \fg{} $(0
\part{Historique}
+{\small \bverb|v 2.5.8|~:~~~~Ajout d'un style \textsf{Alt} pour les codes (pages \pageref{pythonsimple} et \pageref{pytminted})
+
+{\small \bverb| |~:~~~~Modification de la syntaxe des commandes avec \textsf{Pythontex} et \textsf{PseudoCode} (pages \pageref{pythontex} et \pageref{pseudocode})
+
{\small \bverb|v 2.5.7|~:~~~~Ajout de clés pour les codes \textsf{Piton} + Console via \textsf{Pyluatex} (page \pageref{pythonpiton})
{\small \bverb|v 2.5.6|~:~~~~Ajout d'une clé \Cle{Trigo} pour l'axe $(Ox)$ (page \pageref{reperagetikz})
diff --git a/macros/latex/contrib/proflycee/doc/ProfLycee-exemples-pyluatex.pdf b/macros/latex/contrib/proflycee/doc/ProfLycee-exemples-pyluatex.pdf
index 6f6dc42f2e..757afb51d9 100644
--- a/macros/latex/contrib/proflycee/doc/ProfLycee-exemples-pyluatex.pdf
+++ b/macros/latex/contrib/proflycee/doc/ProfLycee-exemples-pyluatex.pdf
Binary files differ
diff --git a/macros/latex/contrib/proflycee/doc/ProfLycee-exemples-pyluatex.tex b/macros/latex/contrib/proflycee/doc/ProfLycee-exemples-pyluatex.tex
index 4831d61a84..63ea75ebb5 100644
--- a/macros/latex/contrib/proflycee/doc/ProfLycee-exemples-pyluatex.tex
+++ b/macros/latex/contrib/proflycee/doc/ProfLycee-exemples-pyluatex.tex
@@ -2,7 +2,7 @@
% !TeX TXS-program:compile = txs:///lualatex/[--shell-escape]
\documentclass[french,a4paper,10pt]{article}
-\def\PLver{2.5.7}
+\def\PLver{2.5.8}
\usepackage[margin=1.5cm]{geometry}
\usepackage{ProfLycee}
\useproflyclib{piton}
@@ -31,7 +31,7 @@
{\small \begin{codehigh}
%Sortie par défaut
-\begin{CodePiton}
+\begin{CodePiton}{}
def valeur_absolue(x):
"Renvoie la valeur absolue de x"
#le petit test qui va bien
@@ -42,7 +42,7 @@ def valeur_absolue(x):
\end{CodePiton}
\end{codehigh}}
-\begin{CodePiton}
+\begin{CodePiton}{}
def valeur_absolue(x):
"Renvoie la valeur absolue de x"
#le petit test qui va bien
@@ -54,7 +54,7 @@ def valeur_absolue(x):
{\small \begin{codehigh}
%Sortie avec Style=Classique, Largeur=10cm
-\begin{CodePiton}[Style=Classique,Largeur=10cm]
+\begin{CodePiton}[Style=Classique,Largeur=10cm]{}
def valeur_absolue(x):
"Renvoie la valeur absolue de x"
#le petit test qui va bien
@@ -65,7 +65,7 @@ def valeur_absolue(x):
\end{CodePiton}
\end{codehigh}}
-\begin{CodePiton}[Style=Classique,Largeur=10cm]
+\begin{CodePiton}[Style=Classique,Largeur=10cm]{}
def valeur_absolue(x):
"Renvoie la valeur absolue de x"
#le petit test qui va bien
@@ -79,7 +79,7 @@ def valeur_absolue(x):
{\small \begin{codehigh}
%Sortie avec Style=Classique, Sans Titre, Largeur=10cm, centré
-\begin{CodePiton}[Style=Classique,Largeur=10cm,BarreTitre=false,Alignement=center]
+\begin{CodePiton}[Style=Classique,Largeur=10cm,BarreTitre=false,Alignement=center]{}
def valeur_absolue(x):
"Renvoie la valeur absolue de x"
#le petit test qui va bien
@@ -90,7 +90,7 @@ def valeur_absolue(x):
\end{CodePiton}
\end{codehigh}}
-\begin{CodePiton}[Style=Classique,Largeur=10cm,BarreTitre=false,Alignement=center]
+\begin{CodePiton}[Style=Classique,Largeur=10cm,BarreTitre=false,Alignement=center]{}
def valeur_absolue(x):
"Renvoie la valeur absolue de x"
#le petit test qui va bien
@@ -103,7 +103,8 @@ def valeur_absolue(x):
{\small \begin{codehigh}
%Sortie avec Style=Classique, Largeur=0.5\linewidth, aligné à droite, sans Cadre, avec Filigrane
\begin{CodePiton}%
- [Style=Classique,Largeur=0.5\linewidth,Cadre=false,Alignement=flush right,Filigrane,Titre={Script}]
+ [Style=Classique,Largeur=0.5\linewidth,Cadre=false,Alignement=flush right,Filigrane,Titre={Script}]{}
+#environnement piton avec numéros de ligne, pleine largeur, style moderne
def valeur_absolue(x):
"Renvoie la valeur absolue de x"
#le petit test qui va bien
@@ -114,7 +115,7 @@ def valeur_absolue(x):
\end{CodePiton}
\end{codehigh}}
-\begin{CodePiton}[Style=Classique,Largeur=0.5\linewidth,Cadre=false,Alignement=flush right,Filigrane,Titre={Script}]
+\begin{CodePiton}[Style=Classique,Largeur=0.5\linewidth,Cadre=false,Alignement=flush right,Filigrane,Titre={Script}]{}
def valeur_absolue(x):
"Renvoie la valeur absolue de x"
#le petit test qui va bien
@@ -125,8 +126,8 @@ def valeur_absolue(x):
\end{CodePiton}
{\small \begin{codehigh}
-%Sortie Moderne, Largeur=11cm, avec Filigrane, aligné à gauche
-\begin{CodePiton}[Largeur=11cm,Filigrane,Alignement=flush left]
+%Sortie Moderne, Largeur=11cm, avec Filigrane, aligné à gauche, sans ligne
+\begin{CodePiton}[Largeur=11cm,Filigrane,Alignement=flush left,Lignes=false]{}
def valeur_absolue(x):
"Renvoie la valeur absolue de x"
#le petit test qui va bien
@@ -137,7 +138,7 @@ def valeur_absolue(x):
\end{CodePiton}
\end{codehigh}}
-\begin{CodePiton}[Largeur=11cm,Filigrane,Alignement=flush left]
+\begin{CodePiton}[Largeur=11cm,Filigrane,Alignement=flush left,Lignes=false]{}
def valeur_absolue(x):
"Renvoie la valeur absolue de x"
#le petit test qui va bien
diff --git a/macros/latex/contrib/proflycee/doc/ProfLycee-exemples-pythontex.pdf b/macros/latex/contrib/proflycee/doc/ProfLycee-exemples-pythontex.pdf
new file mode 100644
index 0000000000..b658a1adfd
--- /dev/null
+++ b/macros/latex/contrib/proflycee/doc/ProfLycee-exemples-pythontex.pdf
Binary files differ
diff --git a/macros/latex/contrib/proflycee/doc/ProfLycee-exemples-pythontex.tex b/macros/latex/contrib/proflycee/doc/ProfLycee-exemples-pythontex.tex
new file mode 100644
index 0000000000..f25a865eba
--- /dev/null
+++ b/macros/latex/contrib/proflycee/doc/ProfLycee-exemples-pythontex.tex
@@ -0,0 +1,242 @@
+% !TeX TXS-program:compile = txs:///arara
+% arara: lualatex: {shell: no, synctex: yes, interaction: batchmode}
+% arara: pythontex: {rerun: always} if found('pytxcode', 'PYTHONTEX#py')
+% arara: lualatex: {shell: no, synctex: yes, interaction: batchmode} if found('pytxcode', 'PYTHONTEX#py')
+% arara: lualatex: {shell: no, synctex: yes, interaction: batchmode} if found('log', '(undefined references|Please rerun|Rerun to get)')
+
+\documentclass[french,a4paper,10pt]{article}
+\def\PLver{2.5.8}
+\usepackage[margin=1.5cm]{geometry}
+\usepackage{ProfLycee}
+\useproflyclib{pythontex}
+\usepackage{babel}
+\sisetup{locale=FR,output-decimal-marker={,},group-minimum-digits=4}
+\usepackage{codehigh}
+
+\begin{document}
+
+\part*{ProfLycee (\PLver), Pythontex}
+
+\section{Code \og Pythontex \fg{}}
+
+\subsection{Préambule basique}
+
+{\small \begin{codehigh}
+\documentclass[french,a4paper,10pt]{article}
+\usepackage{ProfLycee}
+\useproflyclib{pythontex} % compilation spécifique
+\end{codehigh}}
+
+\subsection{Exemples}
+
+{\small \begin{codehigh}
+%Sortie par défaut
+\begin{CodePythontex}{}
+def valeur_absolue(x):
+ "Renvoie la valeur absolue de x"
+ #le petit test qui va bien
+ if x > 0:
+ return x
+ else:
+ return -x
+\end{CodePythontex}
+\end{codehigh}}
+
+\begin{CodePythontex}{}
+def valeur_absolue(x):
+ "Renvoie la valeur absolue de x"
+ #le petit test qui va bien
+ if x > 0:
+ return x
+ else:
+ return -x
+
+#bla
+#bla
+#bla
+\end{CodePythontex}
+
+{\small \begin{codehigh}
+%Sortie avec Style=Classique, Largeur=10cm, centré
+\begin{CodePythontexAlt}[Largeur=10cm,Centre]{}
+def valeur_absolue(x):
+ "Renvoie la valeur absolue de x"
+ #le petit test qui va bien
+ if x > 0:
+ return x
+ else:
+ return -x
+\end{CodePythontexAlt}
+\end{codehigh}}
+
+\begin{CodePythontexAlt}[Largeur=10cm,Centre]{}
+def valeur_absolue(x):
+ "Renvoie la valeur absolue de x"
+ #le petit test qui va bien
+ if x > 0:
+ return x
+ else:
+ return -x
+
+#bla
+#bla
+#bla
+\end{CodePythontexAlt}
+
+\pagebreak
+
+{\small \begin{codehigh}
+%Sortie avec Style=Classique, Largeur=10cm
+\begin{CodePythontexAlt}[Largeur=10cm]{}
+def valeur_absolue(x):
+ "Renvoie la valeur absolue de x"
+ #le petit test qui va bien
+ if x > 0:
+ return x
+ else:
+ return -x
+\end{CodePythontexAlt}
+\end{codehigh}}
+
+\begin{CodePythontexAlt}[Largeur=10cm]{}
+def valeur_absolue(x):
+ "Renvoie la valeur absolue de x"
+ #le petit test qui va bien
+ if x > 0:
+ return x
+ else:
+ return -x
+\end{CodePythontexAlt}
+
+{\small \begin{codehigh}
+%Sortie avec Style=Classique, Largeur=0.5\linewidth, centré, sans numéro
+\begin{CodePythontexAlt}[Largeur=0.5\linewidth,Centre,Lignes=false]{}
+def valeur_absolue(x):
+ "Renvoie la valeur absolue de x"
+ #le petit test qui va bien
+ if x > 0:
+ return x
+ else:
+ return -x
+\end{CodePythontexAlt}
+\end{codehigh}}
+
+\begin{CodePythontexAlt}[Largeur=0.5\linewidth,Centre,Lignes=false]{}
+def valeur_absolue(x):
+ "Renvoie la valeur absolue de x"
+ #le petit test qui va bien
+ if x > 0:
+ return x
+ else:
+ return -x
+\end{CodePythontexAlt}
+
+{\small \begin{codehigh}
+%Sortie Moderne, Largeur=11cm, sans ligne
+\begin{CodePythontex}[Largeur=11cm,Lignes=false]{}
+def valeur_absolue(x):
+ "Renvoie la valeur absolue de x"
+ #le petit test qui va bien
+ if x > 0:
+ return x
+ else:
+ return -x
+\end{CodePythontex}
+\end{codehigh}}
+
+\begin{CodePythontex}[Largeur=11cm,Lignes=false]{}
+def valeur_absolue(x):
+ "Renvoie la valeur absolue de x"
+ #le petit test qui va bien
+ if x > 0:
+ return x
+ else:
+ return -x
+\end{CodePythontex}
+
+\pagebreak
+
+\section{Console \og Pythontex \fg{}}
+
+{\small \begin{codehigh}
+%Déclaration d'une fonction python + librairie random pour utilisation ultérieure
+\begin{pyconcode}
+from random import randint
+
+def valeur_absolue(x):
+ "Renvoie la valeur absolue de x"
+ #le petit test qui va bien
+ if x > 0:
+ return x
+ else:
+ return -x
+
+\end{pyconcode}
+\end{codehigh}}
+
+\begin{pyconcode}
+from random import randint
+
+def valeur_absolue(x):
+ "Renvoie la valeur absolue de x"
+ #le petit test qui va bien
+ if x > 0:
+ return x
+ else:
+ return -x
+
+\end{pyconcode}
+
+{\small \begin{codehigh}
+\begin{ConsolePythontex}{}
+1+1
+2**10
+valeur_absolue(-3)
+valeur_absolue(0)
+valeur_absolue(5)
+print(f"La valeur absolue de 5 est {valeur_absolue(5)}")
+print(f"La valeur absolue de -4 est {valeur_absolue(-4)}")
+\end{ConsolePythontex}
+\end{codehigh}}
+
+\begin{ConsolePythontex}{}
+1+1
+2**10
+valeur_absolue(-3)
+valeur_absolue(0)
+valeur_absolue(5)
+print(f"La valeur absolue de 5 est {valeur_absolue(5)}")
+print(f"La valeur absolue de -4 est {valeur_absolue(-4)}")
+\end{ConsolePythontex}
+
+\pagebreak
+
+{\small \begin{codehigh}
+\begin{ConsolePythontex}[Largeur=12cm,Centre]{}
+1+1
+2**10
+valeur_absolue(-3)
+valeur_absolue(0)
+valeur_absolue(5)
+print(f"La valeur absolue de 5 est {valeur_absolue(5)}")
+print(f"La valeur absolue de -4 est {valeur_absolue(-4)}")
+liste = [randint(1,20) for i in range(10)]
+print(liste)
+print(max(liste), min(liste), sum(liste))
+\end{ConsolePythontex}
+\end{codehigh}}
+
+\begin{ConsolePythontex}[Largeur=12cm,Centre]{}
+1+1
+2**10
+valeur_absolue(-3)
+valeur_absolue(0)
+valeur_absolue(5)
+print(f"La valeur absolue de 5 est {valeur_absolue(5)}")
+print(f"La valeur absolue de -4 est {valeur_absolue(-4)}")
+liste = [randint(1,20) for i in range(10)]
+print(liste)
+print(max(liste), min(liste), sum(liste))
+\end{ConsolePythontex}
+
+\end{document} \ No newline at end of file
diff --git a/macros/latex/contrib/proflycee/tex/ProfLycee.sty b/macros/latex/contrib/proflycee/tex/ProfLycee.sty
index b91ab7816d..f553031e8c 100644
--- a/macros/latex/contrib/proflycee/tex/ProfLycee.sty
+++ b/macros/latex/contrib/proflycee/tex/ProfLycee.sty
@@ -3,8 +3,10 @@
% or later, see http://www.latex-project.org/lppl.txtf
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{ProfLycee}[2023/04/04 2.5.7 Aide pour l'utilisation de LaTeX en lycee]
-% 2.5.7 Ajout d'un style classique pour le code python (Piton + ...) + console piton/pyluatex
+\ProvidesPackage{ProfLycee}[2023/04/06 2.5.8 Aide pour l'utilisation de LaTeX en lycee]
+% 2.5.8 Ajout du style Classique pour PythonLst (externalisation listings) + Modification marges CodePiton (1.5)
+% Refonte des commandes pour les codes pour éviter des soucis avec les étoilées
+% 2.5.7 Ajout d'un style classique pour le code python (Piton) + console piton/pyluatex
% Refonte des commandes tcbset pour les codes
% 2.5.6 Ajout d'une clé [Trigo] pour \AxexTikz (avec graduations libres)
% "Suppression" de la fenêtre XCas de la documentation
@@ -114,22 +116,8 @@
{}%
}
-%%------PRESENTATIONDECODES
-\NewTCBListing{PresentationCode}{ O{ForestGreen} m }{%
- sharp corners=downhill,enhanced,arc=12pt,skin=bicolor,%
- colback=#1!5!white,colframe=#1!75!black,colbacklower=White,%
- attach boxed title to top right={yshift=-\tcboxedtitleheight},title=Code \LaTeX,%
- boxed title style={%
- colframe=#1!75!black,colback=#1!15!white,%
- ,sharp corners=downhill,arc=12pt,%
- },%
- fonttitle=\color{#1!90!black}\itshape\ttfamily\footnotesize,%
- listing options={%
- style=tcblatex,basicstyle=\footnotesize\ttfamily,%
- keywordstyle=\bfseries\color{Blue},tabsize=2,%
- },%
- #2
-}
+%%------Codes listings
+\input{proflycee-tools-listings.tex}
%%------SPLINES
%commande utile pour extraire des infos d'une liste
@@ -318,10 +306,6 @@
\IfStrEq{\CFposcmd}{right}%si poscmd=right
{\draw (C3\CFL) node[left,\CFcoulcmd,font=\CFtaille] {#2} ;}
{}
- %LA LIGNE DE SÉPARATION
- %\ifboolKV[paramfenxcas]{Sep}%si sep=true
- % {\draw[\CFcouleur] (A1\CFL) -- (A4\CFL);}
- % {}
%LE RÉSULTAT
\IfStrEq{\CFposres}{centre}%si posrep=center
{\draw (R2\CFL) node[\CFcoulres,font=\CFtaille] {#3} ;}
@@ -347,186 +331,6 @@
{}
}
-%%------STYLE ALGO LST
-\ifluatex
- \tcbuselibrary{listings}
- \lstdefinelanguage{langnat}{%
- keywords={},
- inputencoding=utf8,
- comment=[l]{}}
- \lstdefinestyle{PLpython}{%
- language = python,
- inputencoding = utf8,
- basicstyle = \ttfamily\footnotesize,
- keywordstyle = \color{ForestGreen},
- keywordstyle = [2]\color{magenta},
- commentstyle = \color{gray}\itshape,
- stringstyle = \color{red!75},
- numberstyle = \scriptsize\ttfamily\color{Green},
- aboveskip = 0pt,
- belowskip = 0pt,
- tabsize = 4,
- showstringspaces = false,
- columns = fullflexible,
- keepspaces = true,
- breaklines = true,
- breakatwhitespace = true
- }
-\else
- \tcbuselibrary{listingsutf8}
- \lstdefinelanguage{langnat}{%
- keywords={},
- inputencoding=utf8/latin1,
- comment=[l]{}}
- \lstdefinestyle{PLpython}{%
- language = python,
- inputencoding = utf8/latin1,
- basicstyle = \ttfamily\footnotesize,
- keywordstyle = \color{ForestGreen},
- keywordstyle = [2]\color{magenta},
- commentstyle = \color{gray}\itshape,
- stringstyle = \color{red!75},
- numberstyle = \scriptsize\ttfamily\color{Green},
- aboveskip = 0pt,
- belowskip = 0pt,
- tabsize = 4,
- showstringspaces = false,
- columns = fullflexible,
- keepspaces = true,
- breaklines = true,
- breakatwhitespace = true
- }
-\fi
-
-%%------PYTHONLISTINGS
-\tcbset{stylepythonlst/.style={%
- enhanced,boxrule=1.25pt,%
- leftupper=10pt,
- sharp corners=downhill,arc=12pt,
- before skip=12pt,after skip=12pt,%
- top=10pt,bottom=1mm,rightupper=4pt,%leftupper=25pt,
- attach boxed title to top right={yshift=-\tcboxedtitleheight},
- boxed title style={
- size=small,colback=ForestGreen!25,boxrule=1.25pt,
- colframe=Green,boxsep=1.25pt,
- sharp corners=downhill,
- arc=12pt,
- top=2pt,bottom=1pt,left=6pt,right=6pt
- },
- colframe=Green,colback=ForestGreen!5,%
- fonttitle=\color{ForestGreen}\itshape\ttfamily\footnotesize,
- title={\scriptsize\faPython}\:Code Python\vphantom{p},
- watermark text={\faPython},watermark opacity=0.175,watermark zoom=0.50,
- listing only,listing engine=listings,%
- }
-}
-
-\tcbset{stylepythonlstnolineos/.style={%
- stylepythonlst,
- listing options={style=PLpython,xleftmargin=0pt,numbers=none}
- }
-}
-
-\tcbset{stylepythonlstlineos/.style={%
- stylepythonlst,
- listing options={style=PLpython,xleftmargin=16pt,numbers=left}
- }
-}
-
-\NewTCBListing{CodePythonLst}{ s O{\linewidth} m }{% * off pour numéros de lignes + {largeur} + <options tcbox>
- \IfBooleanTF{#1}{stylepythonlstnolineos}{stylepythonlstlineos},
- width=#2,#3
-}
-
-\NewTCBInputListing{\CodePythonLstFichier}{ s O{\linewidth} m m }{
- \IfBooleanTF{#1}{stylepythonlstnolineos}{stylepythonlstlineos},
- width=#2,#3,
- listing file={#4}
-}
-
-%%------PSEUDOCODE
-%language pseudocode listings
-\lstdefinestyle{pseudocodePL}{%
- language=langnat,
- basicstyle=\footnotesize\ttfamily,
- numberstyle=\scriptsize\ttfamily\color{gray},
- keywordstyle=\bfseries,
- stringstyle=\color{red!75},
- keepspaces=true,
- tabsize=4,numbersep=10pt,
- xleftmargin=14pt,
- numbers=left,
- morestring=[b]",
- showstringspaces=false,
- %showtabs=false,
- escapeinside={(*}{*)}
-}
-
-\lstdefinestyle{pseudocodenoPL}{%
- language=langnat,
- basicstyle=\footnotesize\ttfamily,
- numberstyle=\scriptsize\ttfamily\color{gray},
- keywordstyle=\bfseries,
- stringstyle=\color{red!75},
- keepspaces=true,
- tabsize=4,numbersep=10pt,
- numbers=none,
- showstringspaces=false,
- morestring=[b]",
- %showtabs=true,
- escapeinside={(*}{*)}
-}
-
-%style tcbox pseudocode avec bannière hautdroite
-\tcbset{stylepseudocodePL/.style={%
- %fontupper=\small\sffamily,%
- enhanced,boxrule=1.25pt,sharp corners=downhill,arc=12pt,
- before skip=12pt,after skip=12pt,leftupper=10pt,top=8pt,bottom=2pt,rightupper=4pt,%
- attach boxed title to top right={yshift=-\tcboxedtitleheight},
- boxed title style={
- size=small,colback=gray!25,boxrule=1.25pt,
- colframe=darkgray,boxsep=1.25pt,
- sharp corners=downhill,
- arc=12pt,
- top=2pt,bottom=1pt,left=6pt,right=6pt
- },
- fonttitle=\color{darkgray}\ttfamily\footnotesize,
- title={\scriptsize\faFileCode}\:\textit{Pseudo-Code}\vphantom{p},
- watermark text={\faCode},watermark opacity=0.175,watermark zoom=0.50,
- }
-}
-
-\ifluatex
- \newcommand\algomathttPL[1]{\symtt{#1}}
-\else
- \newcommand\algomathttPL[1]{\mathtt{#1}}
-\fi
-
-\DeclareTCBListing{PseudoCode}{ s O{12cm} O{} }{% étoilée sans numéro, <taille> puis option...
- width=#2,#3,
- stylepseudocodePL,
- listing only,listing engine=listings,
- listing options={
- style=\IfBooleanTF{#1}{pseudocodenoPL}{pseudocodePL},%version étoilée sans numéro de lignes
- aboveskip=2pt,belowskip=2pt,
- columns=fullflexible,
- literate={é}{{\'e}}1 {í}{{\'i}}1 {ó}{{\'o}}1%
- {ú}{{\'u}}1 {Á}{{\'A}}1 {É}{{\'E}}1 {Í}{{\'I}}1 {Ó}{{\'O}}1 {Ú}{{\'U}}1%
- {è}{{\`e}}1 {ì}{{\`i}}1 {ò}{{\`o}}1 {ù}{{\`u}}1%
- {À}{{\`A}}1 {È}{{\'E}}1 {Ì}{{\`I}}1 {Ò}{{\`O}}1 {Ù}{{\`U}}1%
- {ä}{{\"a}}1 {ë}{{\"e}}1 {ï}{{\"i}}1 {ö}{{\"o}}1 {ü}{{\"u}}1%
- {Ä}{{\"A}}1 {Ë}{{\"E}}1 {Ï}{{\"I}}1 {Ö}{{\"O}}1 {Ü}{{\"U}}1%
- {â}{{\^a}}1 {ê}{{\^e}}1 {î}{{\^i}}1 {ô}{{\^o}}1 {û}{{\^u}}1%
- {Â}{{\^A}}1 {Ê}{{\^E}}1 {Î}{{\^I}}1 {Ô}{{\^O}}1 {Û}{{\^U}}1%
- {œ}{{\oe}}1 {Œ}{{\OE}}1 {æ}{{\ae}}1 {Æ}{{\AE}}1 {ß}{{\ss}}1%
- {ű}{{\H{u}}}1 {Ű}{{\H{U}}}1 {ő}{{\H{o}}}1 {Ő}{{\H{O}}}1%
- {ç}{{\c c}}1 {Ç}{{\c C}}1 {ø}{{\o}}1 {å}{{\r a}}1 {Å}{{\r A}}1%
- {€}{{\texteuro}}1 {£}{{\pounds}}1%
- {=}{\textleftarrow}1 {==}{=}1%
- {*}{$\algomathttPL{\times}$}{1}%
- }
-}
-
%%------FakeTerm
%couleurs (inspirées par termsim !)
\definecolor{PLmpurple}{RGB}{48,10,36}
diff --git a/macros/latex/contrib/proflycee/tex/proflycee-tools-listings.tex b/macros/latex/contrib/proflycee/tex/proflycee-tools-listings.tex
new file mode 100644
index 0000000000..c6d706417a
--- /dev/null
+++ b/macros/latex/contrib/proflycee/tex/proflycee-tools-listings.tex
@@ -0,0 +1,333 @@
+% proflycee-tools-piton.tex
+% Copyright 2023 Cédric Pierquet
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+
+%2.5.8 Styles alternatifs + Modification marges
+
+\RequirePackage{iftex}
+
+%%------STYLE PYTHON LST
+\ifluatex
+\tcbuselibrary{listings}
+\lstdefinelanguage{langnat}{%
+ keywords={},
+ inputencoding=utf8,
+ comment=[l]{}}
+\lstdefinestyle{PLpython}{%
+ language = python,
+ inputencoding = utf8,
+ basicstyle = \ttfamily\footnotesize,
+ keywordstyle = \color{ForestGreen},
+ keywordstyle = [2]\color{magenta},
+ commentstyle = \color{gray}\itshape,
+ stringstyle = \color{red!75},
+ numberstyle = \scriptsize\ttfamily\color{darkgray},
+ aboveskip = 0pt,
+ belowskip = 0pt,
+ tabsize = 4,
+ showstringspaces = false,
+ columns = fullflexible,
+ keepspaces = true,
+ breaklines = true,
+ breakatwhitespace = true
+}
+\else
+\tcbuselibrary{listingsutf8}
+\lstdefinelanguage{langnat}{%
+ keywords={},
+ inputencoding=utf8/latin1,
+ comment=[l]{}}
+\lstdefinestyle{PLpython}{%
+ language = python,
+ inputencoding = utf8/latin1,
+ basicstyle = \ttfamily\footnotesize,
+ keywordstyle = \color{ForestGreen},
+ keywordstyle = [2]\color{magenta},
+ commentstyle = \color{gray}\itshape,
+ stringstyle = \color{red!75},
+ numberstyle = \scriptsize\ttfamily\color{darkgray},
+ aboveskip = 0pt,
+ belowskip = 0pt,
+ tabsize = 4,
+ showstringspaces = false,
+ columns = fullflexible,
+ keepspaces = true,
+ breaklines = true,
+ breakatwhitespace = true
+}
+\fi
+
+%%------PYTHONLISTINGS
+%v1
+\tcbset{stylepythonlst/.style={%
+ enhanced,boxrule=1.25pt,%
+ left=0.6em,
+ sharp corners=downhill,arc=12pt,
+ before skip=\baselineskip,after skip=\baselineskip,%
+ top=\baselineskip,bottom=1mm,right=5mm,
+ attach boxed title to top right={yshift=-\tcboxedtitleheight},
+ boxed title style={
+ size=small,colback=ForestGreen!25,boxrule=1.25pt,
+ colframe=Green,boxsep=1.25pt,
+ sharp corners=downhill,
+ arc=12pt,
+ top=2pt,bottom=1pt,left=6pt,right=6pt
+ },
+ colframe=Green,colback=ForestGreen!5,%
+ fonttitle=\color{ForestGreen}\itshape\ttfamily\footnotesize,
+ title={\scriptsize\faPython}\:Code Python\vphantom{p},
+ watermark text={\faPython},watermark opacity=0.175,watermark zoom=0.50,
+ listing only,listing engine=listings,%
+ }
+}
+
+\tcbset{stylepythonlstnolineos/.style={%
+ stylepythonlst,
+ listing options={style=PLpython,xleftmargin=0pt,numbers=none}
+ }
+}
+
+\tcbset{stylepythonlstlineos/.style={%
+ stylepythonlst,
+ listing options={style=PLpython,xleftmargin=16pt,numbers=left}
+ }
+}
+
+\NewTCBListing{CodePythonLst}{ s O{\linewidth} m }{% * off pour numéros de lignes + {largeur} + <options tcbox>
+ \IfBooleanTF{#1}{stylepythonlstnolineos}{stylepythonlstlineos},
+ width=#2,#3
+}
+
+\NewTCBInputListing{\CodePythonLstFichier}{ s O{\linewidth} m m }{
+ \IfBooleanTF{#1}{stylepythonlstnolineos}{stylepythonlstlineos},
+ width=#2,#3,
+ listing file={#4}
+}
+
+%v2
+\tcbset{StylPythonB/.style={%
+ enhanced,boxrule=0.75pt,colframe=DarkGray!50!Black,%
+ sharp corners,top=0mm,bottom=0mm,left=0.2em,right=5mm,%
+ before skip=\baselineskip,after skip=\baselineskip,%
+ colback=white,
+ fontupper=\footnotesize,fontlower=\footnotesize,%
+ listing only,listing engine=listings,%
+ watermark text={\faPython},watermark opacity=0.25,watermark zoom=0.50,%
+ title={{\scriptsize\faCode} Code Python},
+ lefttitle=0.4em,
+ fonttitle=\bfseries\footnotesize\sffamily,colbacktitle=DarkGray!50!Black
+ }
+}
+
+\tcbset{StylPythonBno/.style={%
+ StylPythonB,
+ listing options={style=PLpython,xleftmargin=0pt,numbers=none}
+ }
+}
+
+\tcbset{StylPythonByes/.style={%
+ StylPythonB,
+ listing options={style=PLpython,xleftmargin=16pt,numbers=left},%
+ underlay={%
+ \begin{tcbclipinterior}
+ \filldraw[lightgray!25] (interior.south west) rectangle ([xshift=1.3em]interior.north west) ;
+ \end{tcbclipinterior}%
+ }
+ }
+}
+
+\NewTCBListing{CodePythonLstAlt}{ s O{\linewidth} m }{% * off pour numéros de lignes + {options keys} + <options tcbox>
+ \IfBooleanTF{#1}{StylPythonBno}{StylPythonByes},width=#2,#3
+}
+
+\NewTCBInputListing{\CodePythonLstFichierAlt}{ s O{\linewidth} m m }{
+ \IfBooleanTF{#1}{StylPythonBno}{StylPythonByes},
+ width=#2,#3,
+ listing file={#4}
+}
+
+%%------PSEUDOCODE
+%language pseudocode listings
+\lstdefinestyle{pseudocodePL}{%
+ language = langnat,
+ basicstyle = \footnotesize\ttfamily,
+ numberstyle = \scriptsize\ttfamily\color{gray},
+ keywordstyle = \bfseries,
+ stringstyle = \color{red!75},
+ keepspaces = true,
+ tabsize = 4,
+ numbersep = 10pt,
+ xleftmargin = 14pt,
+ numbers = left,
+ morestring = [b]",
+ showstringspaces = false,
+ escapeinside = {(*}{*)}
+}
+
+\lstdefinestyle{pseudocodenoPL}{%
+ language = langnat,
+ basicstyle = \footnotesize\ttfamily,
+ numberstyle = \scriptsize\ttfamily\color{gray},
+ keywordstyle = \bfseries,
+ stringstyle = \color{red!75},
+ keepspaces = true,
+ tabsize = 4,
+ numbersep = 10pt,
+ numbers = none,
+ showstringspaces = false,
+ morestring = [b]",
+ escapeinside = {(*}{*)}
+}
+
+%style tcbox pseudocode avec bannière hautdroite
+\tcbset{stylepseudocodePL/.style={%
+ enhanced,boxrule=1.25pt,sharp corners=downhill,arc=12pt,
+ before skip=\baselineskip,after skip=\baselineskip,leftupper=10pt,top=\baselineskip,bottom=1mm,rightupper=5mm,%
+ attach boxed title to top right={yshift=-\tcboxedtitleheight},
+ boxed title style={
+ size=small,colback=gray!25,boxrule=1.25pt,
+ colframe=darkgray,boxsep=1.25pt,
+ sharp corners=downhill,
+ arc=12pt,
+ top=2pt,bottom=1pt,left=6pt,right=6pt
+ },
+ fonttitle=\color{darkgray}\ttfamily\footnotesize,
+ title={\scriptsize\faFileCode}\:\textit{Pseudo-Code}\vphantom{p},
+ watermark text={\faCode},watermark opacity=0.175,watermark zoom=0.50,
+ }
+}
+
+\ifluatex
+ \newcommand\algomathttPL[1]{\symtt{#1}}
+\else
+ \newcommand\algomathttPL[1]{\mathtt{#1}}
+\fi
+
+\DeclareTCBListing{PseudoCode}{ s O{12cm} m }{% étoilée sans numéro, <taille> puis option...
+ width=#2,#3,
+ stylepseudocodePL,
+ listing only,listing engine=listings,
+ listing options={
+ style=\IfBooleanTF{#1}{pseudocodenoPL}{pseudocodePL},%version étoilée sans numéro de lignes
+ aboveskip=0pt,belowskip=0pt,
+ columns=fullflexible,
+ literate={é}{{\'e}}1 {í}{{\'i}}1 {ó}{{\'o}}1%
+ {ú}{{\'u}}1 {Á}{{\'A}}1 {É}{{\'E}}1 {Í}{{\'I}}1 {Ó}{{\'O}}1 {Ú}{{\'U}}1%
+ {è}{{\`e}}1 {ì}{{\`i}}1 {ò}{{\`o}}1 {ù}{{\`u}}1%
+ {À}{{\`A}}1 {È}{{\'E}}1 {Ì}{{\`I}}1 {Ò}{{\`O}}1 {Ù}{{\`U}}1%
+ {ä}{{\"a}}1 {ë}{{\"e}}1 {ï}{{\"i}}1 {ö}{{\"o}}1 {ü}{{\"u}}1%
+ {Ä}{{\"A}}1 {Ë}{{\"E}}1 {Ï}{{\"I}}1 {Ö}{{\"O}}1 {Ü}{{\"U}}1%
+ {â}{{\^a}}1 {ê}{{\^e}}1 {î}{{\^i}}1 {ô}{{\^o}}1 {û}{{\^u}}1%
+ {Â}{{\^A}}1 {Ê}{{\^E}}1 {Î}{{\^I}}1 {Ô}{{\^O}}1 {Û}{{\^U}}1%
+ {œ}{{\oe}}1 {Œ}{{\OE}}1 {æ}{{\ae}}1 {Æ}{{\AE}}1 {ß}{{\ss}}1%
+ {ű}{{\H{u}}}1 {Ű}{{\H{U}}}1 {ő}{{\H{o}}}1 {Ő}{{\H{O}}}1%
+ {ç}{{\c c}}1 {Ç}{{\c C}}1 {ø}{{\o}}1 {å}{{\r a}}1 {Å}{{\r A}}1%
+ {€}{{\texteuro}}1 {£}{{\pounds}}1%
+ {=}{\textleftarrow}1 {==}{=}1%
+ {*}{$\algomathttPL{\times}$}{1}%
+ }
+}
+
+%style tcbox pseudocode v2
+\lstdefinestyle{pseudocodePLalt}{%
+ language = langnat,
+ basicstyle = \footnotesize\ttfamily,
+ numberstyle = \scriptsize\ttfamily\color{gray},
+ keywordstyle = \bfseries,
+ stringstyle = \color{red!75},
+ keepspaces = true,
+ tabsize = 4,
+ xleftmargin = 1.5em,
+ numbers = left,
+ morestring = [b]",
+ showstringspaces = false,
+ escapeinside = {(*}{*)}
+}
+
+\lstdefinestyle{pseudocodenoPLalt}{%
+ language = langnat,
+ basicstyle = \footnotesize\ttfamily,
+ numberstyle = \scriptsize\ttfamily\color{gray},
+ keywordstyle = \bfseries,
+ stringstyle = \color{red!75},
+ keepspaces = true,
+ tabsize = 4,
+ numbers = none,
+ showstringspaces = false,
+ morestring = [b]",
+ escapeinside = {(*}{*)}
+}
+
+\tcbset{stylepseudocodePLalt/.style={%
+ enhanced,boxrule=0.75pt,colframe=DarkGray!50!Black,%
+ sharp corners,top=0mm,bottom=0mm,left=0.4em,right=5mm,%
+ before skip=\baselineskip,after skip=\baselineskip,%
+ colback=white,
+ fontupper=\footnotesize,fontlower=\footnotesize,%
+ listing only,listing engine=listings,%
+ watermark text={\faCode},watermark opacity=0.25,watermark zoom=0.50,%
+ title={{\scriptsize\faCode} PseudoCode},
+ lefttitle=0.4em,
+ fonttitle=\bfseries\footnotesize\sffamily,colbacktitle=DarkGray!50!Black
+ }
+}
+
+\tcbset{stylepseudocodePLaltlines/.style={%
+ underlay={%
+ \begin{tcbclipinterior}
+ \filldraw[lightgray!25] (interior.south west) rectangle ([xshift=1.3em]interior.north west) ;
+ \end{tcbclipinterior}%
+ }
+ }
+}
+
+\DeclareTCBListing{PseudoCodeAlt}{ s O{12cm} m }{% étoilée sans numéro, <taille> puis option...
+ width=#2,#3,
+ stylepseudocodePLalt,
+ listing only,listing engine=listings,
+ \IfBooleanTF{#1}{}{stylepseudocodePLaltlines},
+ listing options={
+ style=\IfBooleanTF{#1}{pseudocodenoPLalt}{pseudocodePLalt},%version étoilée sans numéro de lignes
+ aboveskip=2pt,belowskip=2pt,
+ columns=fullflexible,
+ literate={é}{{\'e}}1 {í}{{\'i}}1 {ó}{{\'o}}1%
+ {ú}{{\'u}}1 {Á}{{\'A}}1 {É}{{\'E}}1 {Í}{{\'I}}1 {Ó}{{\'O}}1 {Ú}{{\'U}}1%
+ {è}{{\`e}}1 {ì}{{\`i}}1 {ò}{{\`o}}1 {ù}{{\`u}}1%
+ {À}{{\`A}}1 {È}{{\'E}}1 {Ì}{{\`I}}1 {Ò}{{\`O}}1 {Ù}{{\`U}}1%
+ {ä}{{\"a}}1 {ë}{{\"e}}1 {ï}{{\"i}}1 {ö}{{\"o}}1 {ü}{{\"u}}1%
+ {Ä}{{\"A}}1 {Ë}{{\"E}}1 {Ï}{{\"I}}1 {Ö}{{\"O}}1 {Ü}{{\"U}}1%
+ {â}{{\^a}}1 {ê}{{\^e}}1 {î}{{\^i}}1 {ô}{{\^o}}1 {û}{{\^u}}1%
+ {Â}{{\^A}}1 {Ê}{{\^E}}1 {Î}{{\^I}}1 {Ô}{{\^O}}1 {Û}{{\^U}}1%
+ {œ}{{\oe}}1 {Œ}{{\OE}}1 {æ}{{\ae}}1 {Æ}{{\AE}}1 {ß}{{\ss}}1%
+ {ű}{{\H{u}}}1 {Ű}{{\H{U}}}1 {ő}{{\H{o}}}1 {Ő}{{\H{O}}}1%
+ {ç}{{\c c}}1 {Ç}{{\c C}}1 {ø}{{\o}}1 {å}{{\r a}}1 {Å}{{\r A}}1%
+ {€}{{\texteuro}}1 {£}{{\pounds}}1%
+ {=}{\textleftarrow}1 {==}{=}1%
+ {*}{$\algomathttPL{\times}$}{1}%
+ }
+}
+
+%%------PRESENTATIONDECODES CLASSIQUES
+\NewTCBListing{PresentationCode}{ O{ForestGreen} m }{%
+ sharp corners=downhill,enhanced,arc=12pt,skin=bicolor,%
+ colback=#1!5!white,colframe=#1!75!black,colbacklower=White,%
+ attach boxed title to top right={yshift=-\tcboxedtitleheight},title=Code \LaTeX,%
+ boxed title style={%
+ colframe=#1!75!black,colback=#1!15!white,%
+ ,sharp corners=downhill,arc=12pt,%
+ },%
+ fonttitle=\color{#1!90!black}\itshape\ttfamily\footnotesize,%
+ listing options={%
+ style=tcblatex,basicstyle=\footnotesize\ttfamily,%
+ keywordstyle=\bfseries\color{Blue},tabsize=2,%
+ },%
+ #2
+}
+
+\endinput \ No newline at end of file
diff --git a/macros/latex/contrib/proflycee/tex/proflycee-tools-minted.tex b/macros/latex/contrib/proflycee/tex/proflycee-tools-minted.tex
index 1a30544565..da385ed1a1 100644
--- a/macros/latex/contrib/proflycee/tex/proflycee-tools-minted.tex
+++ b/macros/latex/contrib/proflycee/tex/proflycee-tools-minted.tex
@@ -8,7 +8,11 @@
% and version 1.3 or later is part of all distributions of LaTeX
% version 2005/12/01 or later.
+%2.5.8 Style alternatif + Modification marges
+
%%------PYTHONMINTED
+
+%v1
\tcbset{pytmintedno/.style={%
listing engine=minted,minted style=colorful,
minted language=python,listing only,
@@ -23,14 +27,14 @@
}
}
-\DeclareTCBListing{CodePythonMinted}{ s O{12cm} O{} }{% étoilée sans numéro, taille puis options...
+\DeclareTCBListing{CodePythonMinted}{ s O{12cm} m }{% étoilée sans numéro, taille puis options...
\IfBooleanTF{#1}{pytmintedno}{pytminted},
enhanced,width=#2,#3,
colframe=Green,colback=ForestGreen!5,%
boxrule=1.25pt,
sharp corners=downhill,arc=12pt,
- before skip=12pt,after skip=12pt,%
- leftupper=8pt,top=10pt,bottom=4pt,rightupper=4pt,%
+ before skip=\baselineskip,after skip=\baselineskip,%
+ left=0.6em,top=\baselineskip,bottom=2mm,right=5mm,%
attach boxed title to top right={yshift=-\tcboxedtitleheight},
boxed title style={
size=small,colback=ForestGreen!25,boxrule=1.25pt,
@@ -42,7 +46,42 @@
fonttitle=\color{ForestGreen}\itshape\ttfamily\footnotesize,
title={\scriptsize\faPython}\:Code Python\vphantom{y},
watermark text={\faPython},watermark opacity=0.175,watermark zoom=0.50,
- before upper=\renewcommand{\theFancyVerbLine}{\scriptsize\ttfamily\color{Green}\arabic{FancyVerbLine}}
+ before upper=\renewcommand{\theFancyVerbLine}{\scriptsize\ttfamily\color{DarkGray}\arabic{FancyVerbLine}}
+}
+
+%v2
+\tcbset{pytmintedaltno/.style={%
+ listing engine=minted,minted style=colorful,
+ minted language=python,listing only,
+ minted options={tabsize=4,fontsize=\footnotesize,autogobble},
+ }
+}
+
+\tcbset{pytmintedalt/.style={%
+ listing engine=minted,minted style=colorful,
+ minted language=python,listing only,
+ minted options={tabsize=4,fontsize=\footnotesize,autogobble,xleftmargin=16pt,linenos,numbersep=10pt},
+ underlay={%
+ \begin{tcbclipinterior}
+ \filldraw[lightgray!25] (interior.south west) rectangle ([xshift=1.3em]interior.north west) ;
+ \end{tcbclipinterior}%
+ }
+ }
+}
+
+\DeclareTCBListing{CodePythonMintedAlt}{ s O{12cm} m }{% étoilée sans numéro, taille puis options...
+ \IfBooleanTF{#1}{pytmintedaltno}{pytmintedalt},
+ width=#2,#3,
+ enhanced,boxrule=0.75pt,colframe=DarkGray!50!Black,%
+ sharp corners,top=0mm,bottom=0mm,left=0.2em,right=5mm,%
+ before skip=\baselineskip,after skip=\baselineskip,%
+ colback=white,
+ fontupper=\footnotesize,fontlower=\footnotesize,%
+ watermark text={\faPython},watermark opacity=0.25,watermark zoom=0.50,%
+ title={{\scriptsize\faCode} Code Python},
+ lefttitle=0.4em,
+ fonttitle=\bfseries\footnotesize\sffamily,colbacktitle=DarkGray!50!Black,%
+ before upper=\renewcommand{\theFancyVerbLine}{\scriptsize\ttfamily\color{DarkGray}\arabic{FancyVerbLine}}
}
\endinput \ No newline at end of file
diff --git a/macros/latex/contrib/proflycee/tex/proflycee-tools-piton.tex b/macros/latex/contrib/proflycee/tex/proflycee-tools-piton.tex
index 7503f17894..f3f00ecd5e 100644
--- a/macros/latex/contrib/proflycee/tex/proflycee-tools-piton.tex
+++ b/macros/latex/contrib/proflycee/tex/proflycee-tools-piton.tex
@@ -8,6 +8,9 @@
% and version 1.3 or later is part of all distributions of LaTeX
% version 2005/12/01 or later.
+%2.5.8 Modification des marges
+%2.5.7 Style alternatif
+
\RequirePackage{iftex}
%%=============PYTHONPITON
@@ -55,7 +58,7 @@
%==Style Classique
\tcbset{thonnystyle/.style={%
- enhanced,boxrule=0.75pt,colframe=DarkGray!25!Black,%
+ enhanced,boxrule=0.75pt,colframe=DarkGray!50!Black,%
sharp corners,top=0mm,bottom=0mm,left=0.4em,right=5mm,%
before skip=\baselineskip,after skip=\baselineskip,%
colback=white
@@ -66,7 +69,7 @@
thonnystyle,%
underlay={%
\begin{tcbclipinterior}
- \filldraw[lightgray!15] (interior.south west) rectangle ([xshift=1.3em]interior.north west) ;
+ \filldraw[lightgray!25] (interior.south west) rectangle ([xshift=1.3em]interior.north west) ;
\end{tcbclipinterior}%
}
}
@@ -75,7 +78,7 @@
%==Création de la boîte
\ifluatex
\RequirePackage{piton}
-\NewPitonEnvironment{CodePiton}{ O{} }%
+\NewPitonEnvironment{CodePiton}{ O{} m }%
{%
\tcbset{reset}
\useKVdefault[envpiton]%
@@ -91,7 +94,7 @@
%------les styles tcbox
\IfEq{\CODPITstyle}{Moderne}%style Moderne (défaut)
{%
- \tcbset{stylepiton,colframe=Green,colback=ForestGreen!5,width=\CODPITlargeur,fontupper=\CODPITfonte,fontlower=\CODPITfonte,\CODPITalign}
+ \tcbset{stylepiton,colframe=Green,colback=ForestGreen!5,width=\CODPITlargeur,fontupper=\CODPITfonte,fontlower=\CODPITfonte,\CODPITalign,leftupper=0.75em}
\ifboolKV[envpiton]{Filigrane}%si filigrane
{\tcbset{watermark text={\faPython},watermark opacity=0.175,watermark zoom=0.50}}%
{}%
@@ -100,18 +103,18 @@
\IfEq{\CODPITstyle}{Classique}%style Classique
{%
\ifboolKV[envpiton]{Lignes}%si lignes=true
- {\tcbset{thonnystylelineos,leftupper=0.4em}}%
+ {\tcbset{thonnystylelineos,leftupper=0.75em}}%
{\tcbset{thonnystyle,leftupper=0.4em}}%
- \tcbset{width=\CODPITlargeur,colframe=darkgray,fontupper=\CODPITfonte,fontlower=\CODPITfonte,\CODPITalign}
+ \tcbset{width=\CODPITlargeur,colframe=DarkGray!50!Black,fontupper=\CODPITfonte,fontlower=\CODPITfonte,\CODPITalign}
\ifboolKV[envpiton]{Filigrane}%si filigrane
- {\tcbset{watermark text={\faPython},watermark opacity=0.175,watermark zoom=0.50}}%
+ {\tcbset{watermark text={\faPython},watermark opacity=0.25,watermark zoom=0.50}}%
{}%
\ifboolKV[envpiton]{BarreTitre}%
{%
\ifboolKV[envpiton]{Cadre}
{}
{\tcbset{boxrule=0pt,frame hidden}}
- \tcbset{lefttitle=0.4em,title={\CODPITtitre},fonttitle=\bfseries\footnotesize\sffamily,colbacktitle=DarkGray!25!Black}
+ \tcbset{lefttitle=0.4em,title={\CODPITtitre},fonttitle=\bfseries\footnotesize\sffamily,colbacktitle=DarkGray!50!Black}
}%
{%
\tcbset{notitle}
@@ -122,7 +125,7 @@
}
{}%
%on crée la boîte
- \begin{tcolorbox}
+ \begin{tcolorbox}[#2]
}%
{%
\end{tcolorbox}%
@@ -132,9 +135,9 @@
%======CONSOLE PYLUATEX (package à charger manuellement !!)
\tcbset{consolepylua/.style={%base de la boîte
- enhanced,colback=white,colframe=ForestGreen,sharp corners,boxrule=1pt,%
- top=1.5mm,bottom=1.5mm,left=2mm,right=2mm,fontupper=\small,%
- before skip=\baselineskip,after skip=\baselineskip,%
+ enhanced,colback=white,colframe=ForestGreen,sharp corners,boxrule=1pt,%
+ top=1.5mm,bottom=1.5mm,left=2mm,right=2mm,fontupper=\small,%
+ before skip=\baselineskip,after skip=\baselineskip,%
}
}
@@ -176,8 +179,8 @@
\PitonOptions{#1}
\PyLTVerbatimEnv
\ifboolKV[consolepyluatex]{Logo}
- {\tcbset{consolepyluatexlogo,width=\ConsPyluaLarg,\ConsPyluaAlign,#3}}
- {\tcbset{consolepyluatex,width=\ConsPyluaLarg,\ConsPyluaAlign,#3}}
+ {\tcbset{consolepyluatexlogo,width=\ConsPyluaLarg,\ConsPyluaAlign,#3}}
+ {\tcbset{consolepyluatex,width=\ConsPyluaLarg,\ConsPyluaAlign,#3}}
\begin{tcolorbox}
\begin{pythonrepl}
}
@@ -188,8 +191,8 @@
tex.print("\\end{Piton}")
tex.print("")
}
- \end{pythonrepl}
-\end{tcolorbox}
+ \end{pythonrepl}
+ \end{tcolorbox}
}
\endinput \ No newline at end of file
diff --git a/macros/latex/contrib/proflycee/tex/proflycee-tools-pythontex.tex b/macros/latex/contrib/proflycee/tex/proflycee-tools-pythontex.tex
index 1a4b2c0f94..30690cb49a 100644
--- a/macros/latex/contrib/proflycee/tex/proflycee-tools-pythontex.tex
+++ b/macros/latex/contrib/proflycee/tex/proflycee-tools-pythontex.tex
@@ -8,6 +8,8 @@
% and version 1.3 or later is part of all distributions of LaTeX
% version 2005/12/01 or later.
+%2.5.8 Style alternatif + Modification marges + Modification arguments
+
%%------CONSOLEPYTHON
\defKV[envpythonconsole]{%
Largeur=\def\CSPYlargeur{#1},%
@@ -20,13 +22,13 @@
\setKVdefault[envpythonconsole]{%
Largeur=\linewidth,%
- Centre=true,%
+ Centre=false,%
Label=true,%
TaillePolice=\footnotesize,%
EspacementVertical=1
}
-\newenvironment{ConsolePythontex}[1][]
+\newenvironment{ConsolePythontex}[2][]
{%
\useKVdefault[envpythonconsole]%
\setKV[envpythonconsole]{#1}% on paramètres les nouvelles clés et on les simplifie
@@ -40,7 +42,7 @@
framesep=3mm,frame=single,fontsize=\CSPYfonte,framerule=1pt,rulecolor=\color{ForestGreen},baselinestretch=\CSPYstretch]}
}%
{%
- \end{pyconsole}
+ \end{pyconsole}
\end{minipage}
\hookcenterpost
}
@@ -57,17 +59,19 @@
\setKVdefault[envpythonverb]{%
Largeur=\linewidth,%
- Centre=true,%
+ Centre=false,%
Lignes=true,%
TaillePolice=\footnotesize,%
EspacementVertical=1
}
+%v1
+
\tcbset{stylepythontex/.style={%
enhanced,boxrule=1.25pt,%
sharp corners=downhill,arc=12pt,
- before skip=12pt,after skip=12pt,%
- top=10pt,bottom=1mm,rightupper=4pt,%leftupper=25pt,
+ before skip=\baselineskip,after skip=\baselineskip,%
+ top=\baselineskip,bottom=1mm,right=5mm,left=0.6em,
attach boxed title to top right={yshift=-\tcboxedtitleheight},
boxed title style={
size=small,colback=ForestGreen!25,boxrule=1.25pt,
@@ -79,21 +83,18 @@
fonttitle=\color{ForestGreen}\itshape\ttfamily\footnotesize,
title={\scriptsize\faPython}\:Code Python\vphantom{p},
watermark text={\faPython},watermark opacity=0.175,watermark zoom=0.50,
+ colframe=Green,colback=ForestGreen!5,%
+ before upper=\renewcommand\theFancyVerbLine{\scriptsize\ttfamily\color{darkgray}\arabic{FancyVerbLine}}
}
}
\tcbset{stylepythonnolineos/.style={%
- stylepythontex,leftupper=10pt,
- colframe=Green,colback=ForestGreen!5,%
- before upper=\renewcommand\theFancyVerbLine{\scriptsize\ttfamily\color{Gray}\arabic{FancyVerbLine}}
+ stylepythontex,leftupper=1em
}
}
\tcbset{stylepythonlineos/.style={%
- stylepythontex,leftupper=25pt,
- colframe=Green,colback=ForestGreen!5,%
- % fontlower=\small,%
- before upper=\renewcommand\theFancyVerbLine{\scriptsize\ttfamily\color{Gray}\arabic{FancyVerbLine}}
+ stylepythontex,leftupper=2em
}
}
@@ -105,7 +106,7 @@
width=#1,stylepythonnolineos
}
-\newenvironment{CodePythontex}[1][]
+\NewDocumentEnvironment{CodePythontex}{ O{} m }
{%
\useKVdefault[envpythonverb]%
\setKV[envpythonverb]{#1}% on paramètres les nouvelles clés et on les simplifie
@@ -115,7 +116,7 @@
{\begin{tcpythontexcode}[\CODPYlargeur]}
{\begin{tcpythontexcodeno}[\CODPYlargeur]}
\ifboolKV[envpythonverb]{Lignes}%si lignes=true
- {\begin{pyverbatim}[][fontsize=\CODPYfonte,numbers=left,numbersep=10pt,commandchars=\\\{\},mathescape,baselinestretch=\CODPYstretch]}
+ {\begin{pyverbatim}[][fontsize=\CODPYfonte,numbers=left,numbersep=0.75em,commandchars=\\\{\},mathescape,baselinestretch=\CODPYstretch]}
{\begin{pyverbatim}[][numbers=none,numbersep=0pt,fontsize=\CODPYfonte,commandchars=\\\{\},mathescape,baselinestretch=\CODPYstretch]}
}%
{%
@@ -126,4 +127,62 @@
\verbcenterpost
}
+%v2
+\tcbset{stylepythontexalt/.style={%
+ enhanced,boxrule=0.75pt,colframe=DarkGray!50!Black,%
+ sharp corners,top=0mm,bottom=0mm,left=0.2em,right=5mm,%
+ before skip=\baselineskip,after skip=\baselineskip,%
+ colback=white,
+ fontupper=\footnotesize,fontlower=\footnotesize,%
+ title={{\scriptsize\faCode} Code Python},
+ lefttitle=0.4em,
+ watermark text={\faPython},watermark opacity=0.25,watermark zoom=0.50,
+ fonttitle=\bfseries\footnotesize\sffamily,colbacktitle=DarkGray!50!Black,
+ before upper=\renewcommand\theFancyVerbLine{\scriptsize\ttfamily\color{darkgray}\arabic{FancyVerbLine}}
+ }
+}
+
+\tcbset{stylepythonnolineosalt/.style={%
+ stylepythontexalt,leftupper=0.2em,
+ }
+}
+
+\tcbset{stylepythonlineosalt/.style={%
+ stylepythontexalt,leftupper=1.35em,
+ underlay={%
+ \begin{tcbclipinterior}
+ \filldraw[lightgray!25] (interior.south west) rectangle ([xshift=1.3em]interior.north west) ;
+ \end{tcbclipinterior}%
+ }
+ }
+}
+
+\newtcolorbox{tcpythontexcodealt}[1][\linewidth]{%
+ width=#1,stylepythonlineosalt
+}
+
+\newtcolorbox{tcpythontexcodenoalt}[1][\linewidth]{%
+ width=#1,stylepythonnolineosalt
+}
+\NewDocumentEnvironment{CodePythontexAlt}{ O{} m }
+{%
+ \useKVdefault[envpythonverb]%
+ \setKV[envpythonverb]{#1}% on paramètres les nouvelles clés et on les simplifie
+ \VerbatimEnvironment
+ \verbcenterpre
+ \ifboolKV[envpythonverb]{Lignes}%si lignes=true
+ {\begin{tcpythontexcodealt}[\CODPYlargeur]}
+ {\begin{tcpythontexcodenoalt}[\CODPYlargeur]}
+ \ifboolKV[envpythonverb]{Lignes}%si lignes=true
+ {\begin{pyverbatim}[][fontsize=\CODPYfonte,numbers=left,numbersep=0.75em,commandchars=\\\{\},mathescape,baselinestretch=\CODPYstretch]}
+ {\begin{pyverbatim}[][numbers=none,numbersep=0pt,fontsize=\CODPYfonte,commandchars=\\\{\},mathescape,baselinestretch=\CODPYstretch]}
+}%
+{%
+ \end{pyverbatim}
+ \ifboolKV[envpythonverb]{Lignes}%si lignes=true
+ {\end{tcpythontexcodealt}}
+ {\end{tcpythontexcodenoalt}}
+ \verbcenterpost
+}
+
\endinput \ No newline at end of file
diff --git a/macros/latex/contrib/regstats/README b/macros/latex/contrib/regstats/README
index f5021dabd3..0e7d52efc8 100644
--- a/macros/latex/contrib/regstats/README
+++ b/macros/latex/contrib/regstats/README
@@ -1,4 +1,4 @@
-README for regstats package, 2012/01/07, v1.0h
+README for regstats package, 2023-04-04, v1.1a
TABLE OF CONTENTS
@@ -20,49 +20,43 @@ TABLE OF CONTENTS
This LaTeX package allows to count the number of used registers (counter,
dimen, skip, muskip, box, token, input, output, math families, languages,
insertions). Therefore the according \count is read. While \count10 should
-be the number of the counters, \count11 the one of the dimens and so on,
-it is possible to use option proof, in which case a new one of each register
-is used and looked at \the\allocationnumber, and this is compared to the
-number determined by reading the \count. The result for each register is
-compared to the maximum available number of the respective register
-(comparison independent of usage of option proof).
+be the number of the counters, \count11 the one of the dimens, and so on,
+if there is enough room for another register of that type, then a new one
+of that register is used and looked at \the\allocationnumber. The result
+for each register is compared to the maximum available number of the
+respective register.
With option "left" additionally the number of remaining registers of each
type is given, and with option "timer" the time needed for the compilation
-run (when either pdf(la)tex or lua(la)tex with
+run (when either LuaLaTeX with
\directlua{starttime = os.clock()}
-before \documentclass is used).
-This material is subject to the LaTeX Project Public License
-(LPPL). See http://www.ctan.org/tex-archive/help/Catalogue/
-licenses.lppl.html for the details of that license.
+before \documentclass or pdf(la)tex is used).
+
+This material is published under the LPPL 1.3c: This work may be
+distributed and/or modified under the conditions of the LaTeX Project
+Public License, either version 1.3c of this license or (at your option)
+any later version. This version of this license is in
+https://www.latex-project.org/lppl/lppl-1-3c.txt
+and the latest version of this license is in
+https://www.latex-project.org/lppl.txt
+and version 1.3c or later is part of all distributions of
+LaTeX version 2005-12-01 or later.
2 DOWNLOAD
==========
-`regstats' is available on CTAN:
- CTAN:macros/latex/contrib/regstats/
-
-Running
-tex regstats.dtx
-generates the files
-regstats.ins, regstats.drv, regstats.sty,
-and regstats-example.tex.
+"regstats" is available on CTAN:
+https://ctan.org/pkg/regstats
-Also a ZIP file is provided that contains these files,
-the manual (regstats.pdf), the compiled example
-(regstats-example.pdf), its log-file (regstats-example.log),
+Also a ZIP file is provided that contains the files:
+the manual (regstats.pdf), the example (regstats-example.tex),
+the compiled example (regstats-example.pdf),
+the according log file (regstats-example.log)
+driver (regstats.drv), regstats.dtx,
+installation file (regstats.ins),
+the style file (regstats.sty),
and this README, already sorted in a TDS tree:
- CTAN:install/macros/latex/contrib/regstats.tds.zip
-
-`CTAN:' means one of the `Comprehensive TeX Archive Network'
-nodes or one of its mirrors. This is explained in
- http://www.tex.ac.uk/cgi-bin/texfaq2html?label=archives
-
-The CTAN stuff will be mirrored automatically from the
-ftp server, so
- ftp://ftp.tug.org/pub/tex/regstats/
-corresponds to
- CTAN:macros/latex/contrib/regstats/
+https://mirror.ctan.org/install/macros/latex/contrib/regstats.tds.zip
3 INSTALLATION
@@ -70,10 +64,11 @@ corresponds to
Installation with ZIP file in TDS format
----------------------------------------
-The ZIP file `regstats.tds.zip' contains the files
+The ZIP file "regstats.tds.zip" contains the files
sorted in a TDS tree. Thus you can directly unpack the
ZIP file inside a TDS tree.
-(See CTAN:tds.zip for an explanation of TDS.)
+See https://ctan.org/TDS-guidelines for an explanation
+of TDS.
Example:
cd /...somewhere.../texmf
unzip /...downloadpath.../regstats.tds.zip
@@ -88,19 +83,19 @@ a) Download the regstats files from CTAN.
If necessary, unpack them.
b) Generate the package and driver files:
tex regstats.dtx
-c) Install the file `*.sty' in your TDS tree:
- cp *.sty TDS:tex/latex/regstats/
- Replace `TDS:' by the prefix of your TDS tree
+c) Install the file "regstats.sty" in your TDS tree:
+ cp regstats.sty TDS:tex/latex/regstats/
+ Replace "TDS:" by the prefix of your TDS tree
(texmf directory).
-d) Create the documentation (if necessary), e.g.
+d) Create the documentation, if necessary, e.g.
pdflatex regstats.dtx
makeindex -s gind.ist regstats.idx
pdflatex regstats.dtx
makeindex -s gind.ist regstats.idx
pdflatex regstats.dtx
-e) Update the databases if necessary, e.g. for teTeX:
- mktexlsr .../texmf
-f) Create the regstats-example.pdf (if necessary), e.g.
+e) Update the databases if necessary, e.g. for TeXLive:
+ texhash or mktexlsr.
+f) Create the regstats-example.pdf, if necessary, e.g.
pdflatex regstats-example.tex
pdflatex regstats-example.tex
or remove the "%% " before "\directlua{starttime = os.clock()}"
@@ -118,13 +113,10 @@ g) Copy the documentation files to
=====================
regstats loads other packages:
-* kvoptions, http://ctan.org/pkg/kvoptions
-* atveryend, http://ctan.org/pkg/atveryend
-* ltxcmds, http://ctan.org/pkg/ltxcmds
+- kvoptions, https://ctan.org/pkg/kvoptions
+- iftex, https://ctan.org/pkg/iftex
with option timer additionally:
-* intcalc, http://ctan.org/pkg/intcalc
-* ifluatex, http://ctan.org/pkg/ifluatex
-* ifpdf, http://ctan.org/pkg/ifpdf
+- intcalc, https://ctan.org/pkg/intcalc
which again load other packages
(see the result of the \listfiles command in the log-file
of the example).
@@ -138,25 +130,25 @@ The timer option does not work with e.g. XeTeX, only with
(pdf)(la)tex or (lua)(la)tex. (Otherwise just do not use the option.)
6 AUTHOR/MAINTAINER
-=====================
+===================
* H.-Martin Münch
7 BUG REPORTS
-==============
+=============
A bug report should contain:
* Comprehensive problem description. This includes error or
warning messages.
* \errorcontextlines=\maxdimen can be added in the
TeX code to get more information in TeX error messages.
-* Minimal test file that shows the problem, but does not
- contain any unnecessary packages and code.
+* Minimal test file that shows the problem,
+ but does not contain any unnecessary packages and code.
* Used drivers/programs.
* Version information about used packages and programs.
-* If you are using LaTeX, then add "\listfiles". Then
- a list of version information is printed at the end
+* If you are using LaTeX, then add "\listfiles" to the document.
+ Then a list of version information is printed at the end
of the LaTeX run.
* Please no other files than the minimal test file.
The other files .log, .dvi, .ps, .pdf are seldom
@@ -171,6 +163,6 @@ Bug reports can be send to the maintainer:
8 KNOWN PROBLEMS
-=================
+================
-* as yet: none. \ No newline at end of file
+* Counting the used inserts is an issue. \ No newline at end of file
diff --git a/macros/latex/contrib/regstats/regstats-example.log b/macros/latex/contrib/regstats/regstats-example.log
index 34bc48e7d0..c7f6dbde72 100644
--- a/macros/latex/contrib/regstats/regstats-example.log
+++ b/macros/latex/contrib/regstats/regstats-example.log
@@ -1,327 +1,160 @@
-This is pdfTeX, Version 3.1415926-2.3-1.40.12 (Web2C 2011) (format=pdflatex 2011.11.11) 7 JAN 2012 12:06
+This is pdfTeX, Version 3.141592653-2.6-1.40.25 (TeX Live 2023) (preloaded format=pdflatex 2023.3.31) 4 APR 2023 16:45
entering extended mode
restricted \write18 enabled.
%&-line parsing enabled.
**regstats-example.tex
(./regstats-example.tex
-LaTeX2e <2011/06/27>
-Babel <v3.8m> and hyphenation patterns for english, dumylang, nohyphenation, ge
-rman-x-2011-07-01, ngerman-x-2011-07-01, afrikaans, ancientgreek, ibycus, arabi
-c, armenian, basque, bulgarian, catalan, pinyin, coptic, croatian, czech, danis
-h, dutch, ukenglish, usenglishmax, esperanto, estonian, ethiopic, farsi, finnis
-h, french, galician, german, ngerman, swissgerman, monogreek, greek, hungarian,
- icelandic, assamese, bengali, gujarati, hindi, kannada, malayalam, marathi, or
-iya, panjabi, tamil, telugu, indonesian, interlingua, irish, italian, kurmanji,
- lao, latin, latvian, lithuanian, mongolian, mongolianlmc, bokmal, nynorsk, pol
-ish, portuguese, romanian, russian, sanskrit, serbian, serbianc, slovak, sloven
-ian, spanish, swedish, turkish, turkmen, ukrainian, uppersorbian, welsh, loaded
-.
-(s:/TeXlive2011/texmf-dist/tex/latex/base/article.cls
-Document Class: article 2007/10/19 v1.4h Standard LaTeX document class
-(s:/TeXlive2011/texmf-dist/tex/latex/base/size10.clo
-File: size10.clo 2007/10/19 v1.4h Standard LaTeX file (size option)
-)
-\c@part=\count79
-\c@section=\count80
-\c@subsection=\count81
-\c@subsubsection=\count82
-\c@paragraph=\count83
-\c@subparagraph=\count84
-\c@figure=\count85
-\c@table=\count86
-\abovecaptionskip=\skip41
-\belowcaptionskip=\skip42
-\bibindent=\dimen102
-)
-(s:/TeXlive2011/texmf-dist/tex/latex/hyperref/hyperref.sty
-Package: hyperref 2011/12/04 v6.82m Hypertext links for LaTeX
-
-(./hobsub-hyperref.sty
-Package: hobsub-hyperref 2011/07/28 v1.8 Bundle oberdiek, subset hyperref (HO)
- (./hobsub-generic.sty
-Package: hobsub-generic 2011/07/28 v1.8 Bundle oberdiek, subset generic (HO)
-Package: hobsub 2011/07/28 v1.8 Construct package bundles (HO)
-Package: infwarerr 2010/04/08 v1.3 Providing info/warning/error messages (HO)
-Package: ltxcmds 2011/04/18 v1.20 LaTeX kernel commands for general use (HO)
-Package: ifluatex 2010/03/01 v1.3 Provides the ifluatex switch (HO)
-Package ifluatex Info: LuaTeX not detected.
-Package: ifvtex 2010/03/01 v1.5 Detect VTeX and its facilities (HO)
-Package ifvtex Info: VTeX not detected.
-Package: intcalc 2007/09/27 v1.1 Expandable calculations with integers (HO)
-Package: ifpdf 2011/01/30 v2.3 Provides the ifpdf switch (HO)
-Package ifpdf Info: pdfTeX in PDF mode is detected.
-Package: etexcmds 2011/02/16 v1.5 Avoid name clashes with e-TeX commands (HO)
-Package etexcmds Info: Could not find \expanded.
-(etexcmds) That can mean that you are not using pdfTeX 1.50 or
-(etexcmds) that some package has redefined \expanded.
-(etexcmds) In the latter case, load this package earlier.
-Package: kvsetkeys 2011/06/15 v1.14 Key value parser (HO)
-Package: kvdefinekeys 2011/04/07 v1.3 Define keys (HO)
-Package: pdftexcmds 2011/07/28 v0.19 Utility functions of pdfTeX for LuaTeX (HO
-)
-Package pdftexcmds Info: LuaTeX not detected.
-Package pdftexcmds Info: \pdf@primitive is available.
-Package pdftexcmds Info: \pdf@ifprimitive is available.
-Package pdftexcmds Info: \pdfdraftmode found.
-Package: pdfescape 2011/04/04 v1.12 Implements pdfTeX's escape features (HO)
-Package: bigintcalc 2011/01/30 v1.2 Expandable calculations on big integers (HO
-)
-Package: bitset 2011/01/30 v1.1 Handle bit-vector datatype (HO)
-Package: uniquecounter 2011/01/30 v1.2 Provide unlimited unique counter (HO)
-)
-Package hobsub Info: Skipping package `hobsub' (already loaded).
-Package: letltxmacro 2010/09/02 v1.4 Let assignment for LaTeX macros (HO)
-Package: hopatch 2011/06/24 v1.1 Wrapper for package hooks (HO)
-Package: xcolor-patch 2011/01/30 xcolor patch
-Package: atveryend 2011/06/30 v1.8 Hooks at the very end of document (HO)
-Package atveryend Info: \enddocument detected (standard20110627).
-Package: atbegshi 2011/01/30 v1.15 At begin shipout hook (HO)
-Package: refcount 2011/06/22 v3.3 Data extraction from label references (HO)
-Package: hycolor 2011/01/30 v1.7 Color options for hyperref/bookmark (HO)
-)
-(s:/TeXlive2011/texmf-dist/tex/latex/graphics/keyval.sty
-Package: keyval 1999/03/16 v1.13 key=value parser (DPC)
-\KV@toks@=\toks14
-)
-(s:/TeXlive2011/texmf-dist/tex/generic/ifxetex/ifxetex.sty
-Package: ifxetex 2010/09/12 v0.6 Provides ifxetex conditional
-)
-(s:/TeXlive2011/texmf-dist/tex/latex/oberdiek/kvoptions.sty
-Package: kvoptions 2010/12/23 v3.10 Keyval support for LaTeX options (HO)
-)
-\@linkdim=\dimen103
-\Hy@linkcounter=\count87
-\Hy@pagecounter=\count88
-
-(s:/TeXlive2011/texmf-dist/tex/latex/hyperref/pd1enc.def
-File: pd1enc.def 2011/12/04 v6.82m Hyperref: PDFDocEncoding definition (HO)
-)
-\Hy@SavedSpaceFactor=\count89
-
-(s:/TeXlive2011/texmf-dist/tex/latex/latexconfig/hyperref.cfg
-File: hyperref.cfg 2002/06/06 v1.2 hyperref configuration of TeXLive
-)
-Package hyperref Info: Option `plainpages' set `false' on input line 3925.
-Package hyperref Info: Option `pdfpagelabels' set `true' on input line 3925.
-Package hyperref Info: Option `hyperindex' set `false' on input line 3925.
-Package hyperref Info: Hyper figures OFF on input line 4046.
-Package hyperref Info: Link nesting OFF on input line 4051.
-Package hyperref Info: Hyper index OFF on input line 4056.
-Package hyperref Info: Plain pages OFF on input line 4061.
-Package hyperref Info: Backreferencing OFF on input line 4066.
-Package hyperref Info: Implicit mode ON; LaTeX internals redefined.
-Package hyperref Info: Bookmarks ON on input line 4284.
-\c@Hy@tempcnt=\count90
-
-(s:/TeXlive2011/texmf-dist/tex/latex/url/url.sty
-\Urlmuskip=\muskip10
-Package: url 2006/04/12 v3.3 Verb mode for urls, etc.
-)
-LaTeX Info: Redefining \url on input line 4637.
-\Fld@menulength=\count91
-\Field@Width=\dimen104
-\Fld@charsize=\dimen105
-Package hyperref Info: Hyper figures OFF on input line 5757.
-Package hyperref Info: Link nesting OFF on input line 5762.
-Package hyperref Info: Hyper index OFF on input line 5767.
-Package hyperref Info: backreferencing OFF on input line 5772.
-Package hyperref Info: Link coloring OFF on input line 5777.
-Package hyperref Info: Link coloring with OCG OFF on input line 5782.
-Package hyperref Info: PDF/A mode OFF on input line 5787.
-LaTeX Info: Redefining \ref on input line 5827.
-LaTeX Info: Redefining \pageref on input line 5831.
-\Hy@abspage=\count92
-\c@Item=\count93
-\c@Hfootnote=\count94
-)
-
-Package hyperref Message: Driver (autodetected): hpdftex.
+LaTeX2e <2022-11-01> patch level 1
+L3 programming layer <2023-03-30> (m:/2023/texmf-dist/tex/latex/base/article.cls
+Document Class: article 2022/07/02 v1.4n Standard LaTeX document class
+(m:/2023/texmf-dist/tex/latex/base/size10.clo
+File: size10.clo 2022/07/02 v1.4n Standard LaTeX file (size option)
+)
+\c@part=\count185
+\c@section=\count186
+\c@subsection=\count187
+\c@subsubsection=\count188
+\c@paragraph=\count189
+\c@subparagraph=\count190
+\c@figure=\count191
+\c@table=\count192
+\abovecaptionskip=\skip48
+\belowcaptionskip=\skip49
+\bibindent=\dimen140
+) (./regstats.sty
+Package: regstats 2023/04/04 v1.1a Counting used registers (HMM)
+ (m:/2023/texmf-dist/tex/latex/kvoptions/kvoptions.sty
+Package: kvoptions 2022-06-15 v3.15 Key value format for package options (HO)
+
+(m:/2023/texmf-dist/tex/latex/graphics/keyval.sty
+Package: keyval 2022/05/29 v1.15 key=value parser (DPC)
+\KV@toks@=\toks16
+) (m:/2023/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty
+Package: ltxcmds 2020-05-10 v1.25 LaTeX kernel commands for general use (HO)
+)
+(m:/2023/texmf-dist/tex/latex/kvsetkeys/kvsetkeys.sty
+Package: kvsetkeys 2022-10-05 v1.19 Key value parser (HO)
+))
+Package regstats Info: Option proof is obsolete.
+(regstats) If you used proof=false, please remove this.
+ (m:/2023/texmf-dist/tex/generic/iftex/iftex.sty
+Package: iftex 2022/02/03 v1.0f TeX engine tests
+)
+(m:/2023/texmf-dist/tex/generic/intcalc/intcalc.sty
+Package: intcalc 2019/12/15 v1.3 Expandable calculations with integers (HO)
+)) (m:/2023/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
+File: l3backend-pdftex.def 2023-03-30 L3 backend support: PDF output (pdfTeX)
+\l__color_backend_stack_int=\count193
+\l__pdf_internal_box=\box51
+)
+
+LaTeX Warning: Unused global option(s):
+ [british].
-(s:/TeXlive2011/texmf-dist/tex/latex/hyperref/hpdftex.def
-File: hpdftex.def 2011/12/04 v6.82m Hyperref driver for pdfTeX
-\Fld@listcount=\count95
-\c@bookmark@seq@number=\count96
-
-(s:/TeXlive2011/texmf-dist/tex/latex/oberdiek/rerunfilecheck.sty
-Package: rerunfilecheck 2011/04/15 v1.7 Rerun checks for auxiliary files (HO)
-Package uniquecounter Info: New unique counter `rerunfilecheck' on input line 2
-82.
-)
-\Hy@SectionHShift=\skip43
-)
-(./regstats.sty
-Package: regstats 2012/01/07 v1.0h Counting used registers (HMM)
-Package regstats Info: This package will not use registers itself,
-(regstats) but packages used by this package
-(regstats) (and packages loaded by those packages)
-(regstats) use additional resources,
-(regstats) if those packages are not used anyway.
-(regstats) on input line 83.
-) (./regstats-example.aux)
+(./regstats-example.aux)
\openout1 = `regstats-example.aux'.
-LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 75.
-LaTeX Font Info: ... okay on input line 75.
-LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 75.
-LaTeX Font Info: ... okay on input line 75.
-LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 75.
-LaTeX Font Info: ... okay on input line 75.
-LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 75.
-LaTeX Font Info: ... okay on input line 75.
-LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 75.
-LaTeX Font Info: ... okay on input line 75.
-LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 75.
-LaTeX Font Info: ... okay on input line 75.
-LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 75.
-LaTeX Font Info: ... okay on input line 75.
-\AtBeginShipoutBox=\box26
-Package hyperref Info: Link coloring OFF on input line 75.
-
-(s:/TeXlive2011/texmf-dist/tex/latex/hyperref/nameref.sty
-Package: nameref 2010/04/30 v2.40 Cross-referencing by name of section
-
-(s:/TeXlive2011/texmf-dist/tex/generic/oberdiek/gettitlestring.sty
-Package: gettitlestring 2010/12/03 v1.4 Cleanup title references (HO)
-)
-\c@section@level=\count97
-)
-LaTeX Info: Redefining \ref on input line 75.
-LaTeX Info: Redefining \pageref on input line 75.
-LaTeX Info: Redefining \nameref on input line 75.
-
-(./regstats-example.out) (./regstats-example.out)
-\@outlinefile=\write3
-\openout3 = `regstats-example.out'.
-
-
-Underfull \hbox (badness 10000) in paragraph at lines 79--85
+LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 167.
+LaTeX Font Info: ... okay on input line 167.
+LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 167.
+LaTeX Font Info: ... okay on input line 167.
+LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 167.
+LaTeX Font Info: ... okay on input line 167.
+LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 167.
+LaTeX Font Info: ... okay on input line 167.
+LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 167.
+LaTeX Font Info: ... okay on input line 167.
+LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 167.
+LaTeX Font Info: ... okay on input line 167.
+LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 167.
+LaTeX Font Info: ... okay on input line 167.
+
+Underfull \hbox (badness 10000) in paragraph at lines 174--175
[]
LaTeX Font Info: External font `cmex10' loaded for size
-(Font) <7> on input line 86.
+(Font) <7> on input line 178.
LaTeX Font Info: External font `cmex10' loaded for size
-(Font) <5> on input line 86.
+(Font) <5> on input line 178.
-Underfull \hbox (badness 10000) in paragraph at lines 86--90
+Underfull \hbox (badness 10000) in paragraph at lines 176--182
[]
-Underfull \hbox (badness 10000) in paragraph at lines 91--92
+Underfull \hbox (badness 10000) in paragraph at lines 183--185
[]
-Underfull \hbox (badness 10000) in paragraph at lines 93--96
+Underfull \hbox (badness 10000) in paragraph at lines 186--188
[]
-Package atveryend Info: Executing hook `BeforeClearDocument' on input line 103.
-
[1
-{s:/TeXlive2011/texmf-var/fonts/map/pdftex/updmap/pdftex.map}]
-Package atveryend Info: Executing hook `AfterLastShipout' on input line 103.
-
-(./regstats-example.aux)
-Package atveryend Info: Executing hook `AtVeryEndDocument' on input line 103.
-
+{m:/2023/texmf-var/fonts/map/pdftex/updmap/pdftex.map}] (./regstats-example.aux)
*File List*
- article.cls 2007/10/19 v1.4h Standard LaTeX document class
- size10.clo 2007/10/19 v1.4h Standard LaTeX file (size option)
-hyperref.sty 2011/12/04 v6.82m Hypertext links for LaTeX
-hobsub-hyperref.sty 2011/07/28 v1.8 Bundle oberdiek, subset hyperref (HO)
-hobsub-generic.sty 2011/07/28 v1.8 Bundle oberdiek, subset generic (HO)
- hobsub.sty 2011/07/28 v1.8 Construct package bundles (HO)
-infwarerr.sty 2010/04/08 v1.3 Providing info/warning/error messages (HO)
- ltxcmds.sty 2011/04/18 v1.20 LaTeX kernel commands for general use (HO)
-ifluatex.sty 2010/03/01 v1.3 Provides the ifluatex switch (HO)
- ifvtex.sty 2010/03/01 v1.5 Detect VTeX and its facilities (HO)
- intcalc.sty 2007/09/27 v1.1 Expandable calculations with integers (HO)
- ifpdf.sty 2011/01/30 v2.3 Provides the ifpdf switch (HO)
-etexcmds.sty 2011/02/16 v1.5 Avoid name clashes with e-TeX commands (HO)
-kvsetkeys.sty 2011/06/15 v1.14 Key value parser (HO)
-kvdefinekeys.sty 2011/04/07 v1.3 Define keys (HO)
-pdftexcmds.sty 2011/07/28 v0.19 Utility functions of pdfTeX for LuaTeX (HO)
-pdfescape.sty 2011/04/04 v1.12 Implements pdfTeX's escape features (HO)
-bigintcalc.sty 2011/01/30 v1.2 Expandable calculations on big integers (HO)
- bitset.sty 2011/01/30 v1.1 Handle bit-vector datatype (HO)
-uniquecounter.sty 2011/01/30 v1.2 Provide unlimited unique counter (HO)
-letltxmacro.sty 2010/09/02 v1.4 Let assignment for LaTeX macros (HO)
- hopatch.sty 2011/06/24 v1.1 Wrapper for package hooks (HO)
-xcolor-patch.sty 2011/01/30 xcolor patch
-atveryend.sty 2011/06/30 v1.8 Hooks at the very end of document (HO)
-atbegshi.sty 2011/01/30 v1.15 At begin shipout hook (HO)
-refcount.sty 2011/06/22 v3.3 Data extraction from label references (HO)
- hycolor.sty 2011/01/30 v1.7 Color options for hyperref/bookmark (HO)
- keyval.sty 1999/03/16 v1.13 key=value parser (DPC)
- ifxetex.sty 2010/09/12 v0.6 Provides ifxetex conditional
-kvoptions.sty 2010/12/23 v3.10 Keyval support for LaTeX options (HO)
- pd1enc.def 2011/12/04 v6.82m Hyperref: PDFDocEncoding definition (HO)
-hyperref.cfg 2002/06/06 v1.2 hyperref configuration of TeXLive
- url.sty 2006/04/12 v3.3 Verb mode for urls, etc.
- hpdftex.def 2011/12/04 v6.82m Hyperref driver for pdfTeX
-rerunfilecheck.sty 2011/04/15 v1.7 Rerun checks for auxiliary files (HO)
-regstats.sty 2012/01/07 v1.0h Counting used registers (HMM)
- nameref.sty 2010/04/30 v2.40 Cross-referencing by name of section
-gettitlestring.sty 2010/12/03 v1.4 Cleanup title references (HO)
-regstats-example.out
-regstats-example.out
+ article.cls 2022/07/02 v1.4n Standard LaTeX document class
+ size10.clo 2022/07/02 v1.4n Standard LaTeX file (size option)
+regstats.sty 2023/04/04 v1.1a Counting used registers (HMM)
+kvoptions.sty 2022-06-15 v3.15 Key value format for package options (HO)
+ keyval.sty 2022/05/29 v1.15 key=value parser (DPC)
+ ltxcmds.sty 2020-05-10 v1.25 LaTeX kernel commands for general use (HO)
+kvsetkeys.sty 2022-10-05 v1.19 Key value parser (HO)
+ iftex.sty 2022/02/03 v1.0f TeX engine tests
+ intcalc.sty 2019/12/15 v1.3 Expandable calculations with integers (HO)
+l3backend-pdftex.def 2023-03-30 L3 backend support: PDF output (pdfTeX)
***********
-Package atveryend Info: Executing hook `AtEndAfterFileList' on input line 103.
-Package rerunfilecheck Info: File `regstats-example.out' has not changed.
-(rerunfilecheck) Checksum: D41D8CD98F00B204E9800998ECF8427E;0.
-Package atveryend Info: Executing hook `AtVeryVeryEnd' on input line 103.
-
-Package regstats Warning: Could not find the e-TeX-package.
-(regstats) That can mean that e-TeX was disabled or
-(regstats) that your distribution of TeX does not contain e-TeX
-(regstats) or that you simply forgot to say \usepackage{etex}
-(regstats) in the preamble of regstats-example.tex.
-(regstats) The number of available counter, dimen, skip,
-(regstats) muskip, box, and toks registers as well as the
-(regstats) number of insertions would be larger when using
-(regstats) the e-TeX-package. on input line 103.
-
+\c@regstatscount=\count194
+\regstatsdimen=\dimen141
+\regstatsskip=\skip50
+\regstatsmuskip=\muskip16
+\regstatsbox=\box52
+\regstatstoks=\toks17
+\regstatsread=\read2
+\regstatswrite=\write3
+\regstatsfam=\mathgroup4
+\regstatslanguage=\language87
+\regstatsinsert=\insert199
Here is how much of TeX's registers you used
(numbers of available registers are estimated!):
- 97 counter registers out of 233, left: 136
- 105 dimen registers out of 233, left: 128
- 43 skip registers out of 233, left: 190
- 10 muskip registers out of 255, left: 245
- 26 box registers out of 233, left: 207
- 14 toks registers out of 255, left: 241
- 0 input streams (read) out of 15, left: 15
- 3 output streams (write) out of 15, left: 12
- 3 math families (fam) out of 15, left: 12
- 74 language codes out of 255, left: 181
- 0 insertions out of 101, left: 101
+ 194 counter registers out of 32767 (0% used), left: 32573
+ 141 dimen registers out of 32767 (0% used), left: 32626
+ 50 skip registers out of 32767 (0% used), left: 32717
+ 16 muskip registers out of 32767 (0% used), left: 32751
+ 52 box registers out of 32767 (0% used), left: 32715
+ 17 toks registers out of 32767 (0% used), left: 32750
+ 2 input streams (read) out of 15 (13% used), left: 13
+ 3 output streams (write) out of 16 (18% used), left: 13
+ 4 math families (fam) out of 15 (26% used), left: 11
+ 87 language codes out of 255 (34% used), left: 168
+ 1 insertion out of 200 (0% used), left: 199
+The morewrites package was not loaded.
+ With recent LaTeX and morewrites about 32 766 output streams would be available.
Time elapsed for the last compiler run:
-about 0:00 (m:ss; 25559/65536 s).
+about 0:00 (m:ss; 17367/65536 s).
)
Here is how much of TeX's memory you used:
- 4107 strings out of 493629
- 61316 string characters out of 3147108
- 141906 words of memory out of 3000000
- 7438 multiletter control sequences out of 15000+200000
- 4718 words of font info for 18 fonts, out of 3000000 for 9000
- 831 hyphenation exceptions out of 8191
- 29i,4n,23p,212b,314s stack positions out of 5000i,500n,10000p,200000b,50000s
-<s:/TeXlive2011/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx12.pfb><s:/TeXl
-ive2011/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi10.pfb><s:/TeXlive2011/te
-xmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb><s:/TeXlive2011/texmf-dist/fo
-nts/type1/public/amsfonts/cm/cmr7.pfb><s:/TeXlive2011/texmf-dist/fonts/type1/pu
-blic/amsfonts/cm/cmss10.pfb><s:/TeXlive2011/texmf-dist/fonts/type1/public/amsfo
-nts/cm/cmtt10.pfb>
-Output written on regstats-example.pdf (1 page, 66974 bytes).
+ 1067 strings out of 476017
+ 19149 string characters out of 5797758
+ 1852660 words of memory out of 5000000
+ 21578 multiletter control sequences out of 15000+600000
+ 513365 words of font info for 36 fonts, out of 8000000 for 9000
+ 1141 hyphenation exceptions out of 32749
+ 56i,5n,62p,283b,107s stack positions out of 10000i,1000n,20000p,200000b,200000s
+<m:/2023/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx12.pfb><m:/2023/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi10.pfb
+><m:/2023/texmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb><m:/2023/texmf-dist/fonts/type1/public/amsfonts/cm/cmss10.pfb><
+m:/2023/texmf-dist/fonts/type1/public/amsfonts/cm/cmtt10.pfb>
+Output written on regstats-example.pdf (1 page, 59861 bytes).
PDF statistics:
- 38 PDF objects out of 1000 (max. 8388607)
- 28 compressed objects within 1 object stream
- 3 named destinations out of 1000 (max. 500000)
+ 33 PDF objects out of 1000 (max. 8388607)
+ 19 compressed objects within 1 object stream
+ 0 named destinations out of 1000 (max. 500000)
1 words of extra memory for PDF output out of 10000 (max. 10000000)
diff --git a/macros/latex/contrib/regstats/regstats-example.pdf b/macros/latex/contrib/regstats/regstats-example.pdf
index f7909773da..195fe2a2c7 100644
--- a/macros/latex/contrib/regstats/regstats-example.pdf
+++ b/macros/latex/contrib/regstats/regstats-example.pdf
Binary files differ
diff --git a/macros/latex/contrib/regstats/regstats.dtx b/macros/latex/contrib/regstats/regstats.dtx
index 903f08ab3d..737df53ea9 100644
--- a/macros/latex/contrib/regstats/regstats.dtx
+++ b/macros/latex/contrib/regstats/regstats.dtx
@@ -1,24 +1,25 @@
% \iffalse meta-comment
%
% File: regstats.dtx
-% Version: 2012/01/07 v1.0h
+% Version: 2023-04-04 v1.1a
+% Info: Counting used registers
%
-% Copyright (C) 2011 - 2012 by
-% H.-Martin M"unch <Martin dot Muench at Uni-Bonn dot de>
+% Copyright © 2011 - 2023 by
+% H.-Martin Münch <Martin dot Muench at Uni-Bonn dot de>
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either
% version 1.3c of this license or (at your option) any later
% version. This version of this license is in
-% http://www.latex-project.org/lppl/lppl-1-3c.txt
+% https://www.latex-project.org/lppl/lppl-1-3c.txt
% and the latest version of this license is in
-% http://www.latex-project.org/lppl.txt
+% https://www.latex-project.org/lppl.txt
% and version 1.3c or later is part of all distributions of
-% LaTeX version 2005/12/01 or later.
+% LaTeX version 2005-12-01 or later.
%
% This work has the LPPL maintenance status "maintained".
%
-% The Current Maintainer of this work is H.-Martin Muench.
+% The Current Maintainer of this work is H.-Martin Münch.
%
% This work consists of the main source file regstats.dtx,
% the README, and the derived files
@@ -27,49 +28,12 @@
% regstats-example.tex, regstats-example.pdf,
% regstats-example.log.
%
-% Distribution:
-% CTAN:macros/latex/contrib/regstats/regstats.dtx
-% CTAN:macros/latex/contrib/regstats/regstats.pdf
-% CTAN:install/macros/latex/contrib/regstats.tds.zip
-%
-% Cf. http://ctan.org/pkg/regstats and
-% http://www.tex.ac.uk/tex-archive/help/Catalogue/entries/regstats.html
-%
-% Unpacking:
-% (a) If regstats.ins is present:
-% tex regstats.ins
-% (b) Without regstats.ins:
-% tex regstats.dtx
-% (c) If you insist on using LaTeX
-% latex \let\install=y\input{regstats.dtx}
-% (quote the arguments according to the demands of your shell)
-%
-% Documentation:
-% (a) If regstats.drv is present:
-% (pdf)latex regstats.drv
-% makeindex -s gind.ist regstats.idx
-% (pdf)latex regstats.drv
-% makeindex -s gind.ist regstats.idx
-% (pdf)latex regstats.drv
-% (b) Without regstats.drv:
-% (pdf)latex regstats.dtx
-% makeindex -s gind.ist regstats.idx
-% (pdf)latex regstats.dtx
-% makeindex -s gind.ist regstats.idx
-% (pdf)latex regstats.dtx
-%
-% The class ltxdoc loads the configuration file ltxdoc.cfg
-% if available. Here you can specify further options, e.g.
-% use DIN A4 as paper format:
-% \PassOptionsToClass{a4paper}{article}
-%
-% Installation:
-% TDS:tex/latex/regstats/regstats.sty
-% TDS:doc/latex/regstats/regstats.pdf
-% TDS:doc/latex/regstats/regstats-example.tex
-% TDS:doc/latex/regstats/regstats-example.pdf
-% TDS:doc/latex/regstats/regstats-example.log
-% TDS:source/latex/regstats/regstats.dtx
+% "regstats" is available on CTAN:
+% https://ctan.org/pkg/regstats
+%
+% Also a TDS.ZIP file is provided that contains all the files
+% already sorted in a TDS tree:
+% https://mirror.ctan.org/install/macros/latex/contrib/regstats.tds.zip
%
%<*ignore>
\begingroup
@@ -84,10 +48,10 @@
%</ignore>
%<*install>
\input docstrip.tex
-\Msg{********************************************************************}
-\Msg{* Installation *}
-\Msg{* Package: regstats 2012/01/07 v1.0h Counting used registers (HMM) *}
-\Msg{********************************************************************}
+\Msg{*******************************************************************}
+\Msg{* Installation *}
+\Msg{* Package: regstats 2023-04-04 v1.1a Counting used registers (HMM)*}
+\Msg{*******************************************************************}
\keepsilent
\askforoverwritefalse
@@ -98,25 +62,21 @@
This is a generated file.
Project: regstats
-Version: 2012/01/07 v1.0h
-
-Copyright (C) 2011 - 2012 by
- H.-Martin M"unch <Martin dot Muench at Uni-Bonn dot de>
+Version: 2023-04-04 v1.1a
+Info: Counting used registers
-The usual disclaimer applies:
-If it doesn't work right that's your problem.
-(Nevertheless, send an e-mail to the maintainer
- when you find an error in this package.)
+Copyright (C) 2011 - 2023 by
+ H.-Martin Muench <Martin dot Muench at Uni-Bonn dot de>
This work may be distributed and/or modified under the
conditions of the LaTeX Project Public License, either
version 1.3c of this license or (at your option) any later
version. This version of this license is in
- http://www.latex-project.org/lppl/lppl-1-3c.txt
+ https://www.latex-project.org/lppl/lppl-1-3c.txt
and the latest version of this license is in
- http://www.latex-project.org/lppl.txt
+ https://www.latex-project.org/lppl.txt
and version 1.3c or later is part of all distributions of
-LaTeX version 2005/12/01 or later.
+LaTeX version 2005-12-01 or later.
This work has the LPPL maintenance status "maintained".
@@ -129,6 +89,11 @@ the README, and the derived files
regstats-example.tex, regstats-example.pdf,
regstats-example.log.
+In memoriam
+ Claudia Simone Barth + 1996-01-30
+ Tommy Muench + 2014-01-02
+ Hans-Klaus Muench + 2014-08-24
+
\endpreamble
\let\MetaPrefix\DoubleperCent
@@ -148,7 +113,7 @@ the README, and the derived files
\Msg{* To finish the installation you have to move the following}
\Msg{* file into a directory searched by TeX:}
\Msg{*}
-\Msg{* regstats.sty}
+\Msg{* regstats.sty}
\Msg{*}
\Msg{* To produce the documentation run the file `regstats.drv'}
\Msg{* through (pdf)LaTeX, e.g.}
@@ -174,7 +139,7 @@ the README, and the derived files
% \section{The documentation driver file}
%
% The next bit of code contains the documentation driver file for
-% \TeX{}, i.\,e., the file that will produce the documentation you
+% \TeX, i.\,e., the file that will produce the documentation you
% are currently reading. It will be extracted from this file by the
% \texttt{docstrip} programme. That is, run \LaTeX{} on \texttt{docstrip}
% and specify the \texttt{driver} option when \texttt{docstrip}
@@ -182,20 +147,15 @@ the README, and the derived files
%
% \begin{macrocode}
%<*driver>
-\NeedsTeXFormat{LaTeX2e}[2011/06/27]
-\ProvidesFile{regstats.drv}%
- [2012/01/07 v1.0h Counting used registers (HMM)]
-\documentclass{ltxdoc}[2007/11/11]% v2.0u
-\usepackage{pdflscape}[2008/08/11]% v0.10
-\usepackage{holtxdoc}[2011/02/04]% v0.21
-%% regstats may work with earlier versions of LaTeX2e and those
-%% class and packages, but this was not tested.
-%% Please consider updating your LaTeX, class, and packages
-%% to the most recent version (if they are not already the most
-%% recent version).
+\NeedsTeXFormat{LaTeX2e}[2022-11-01]
+\ProvidesFile{regstats.drv}[2023-04-04 v1.1a Counting used registers (HMM)]
+\documentclass[landscape]{ltxdoc}[2022/06/22]% v2.1i Standard LaTeX documentation class
+\usepackage{geometry}[2020/01/02]% v5.9 Page Geometry
+\usepackage{holtxdoc}[2019/12/09]% v0.30 Private additional ltxdoc support (HO)
+\usepackage[T1]{fontenc}[2021/04/29]% v2.0v Standard LaTeX package
\hypersetup{%
pdfsubject={Information about used number of TeX registers (HMM)},%
- pdfkeywords={LaTeX, regstats, registers, read, write, language, box, dimen, counter, toks, skip, muskip, math family, insertion, H.-Martin Muench},%
+ pdfkeywords={LaTeX, regstats, registers, read, write, language, box, dimen, counter, toks, skip, muskip, math family, insertion},%
pdfencoding=auto,%
pdflang={en},%
breaklinks=true,%
@@ -211,38 +171,17 @@ the README, and the derived files
pdfnewwindow=true%
}
\CodelineIndex
-\hyphenation{printing docu-ment}
-\gdef\unit#1{\mathord{\thinspace\mathrm{#1}}}%
+\hyphenation{docu-ment}
\makeatletter
-\@ifundefined{eTeX}{\gdef\eTeX{$\m@th \varepsilon $-\TeX }}{% else \relax
-}
+\@ifundefined{eTeX}{\gdef\eTeX{\hbox{$\m@th \varepsilon $-\TeX}}}{}
\makeatother
\begin{document}
- \DocInput{regstats.dtx}%
+ \DocInput{regstats.dtx}%
\end{document}
%</driver>
% \end{macrocode}
-%
% \fi
%
-% \CheckSum{578}
-%
-% \CharacterTable
-% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
-% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
-% Digits \0\1\2\3\4\5\6\7\8\9
-% Exclamation \! Double quote \" Hash (number) \#
-% Dollar \$ Percent \% Ampersand \&
-% Acute accent \' Left paren \( Right paren \)
-% Asterisk \* Plus \+ Comma \,
-% Minus \- Point \. Solidus \/
-% Colon \: Semicolon \; Less than \<
-% Equals \= Greater than \> Question mark \?
-% Commercial at \@ Left bracket \[ Backslash \\
-% Right bracket \] Circumflex \^ Underscore \_
-% Grave accent \` Left brace \{ Vertical bar \|
-% Right brace \} Tilde \~}
-%
% \GetFileInfo{regstats.drv}
%
% \begingroup
@@ -260,76 +199,63 @@ the README, and the derived files
% }%^^A
% \expandafter\endgroup\x
%
-% \DoNotIndex{\\}
-% \DoNotIndex{\documentclass,\usepackage,\ProvidesPackage,\begin,\end}
-% \DoNotIndex{\message,\MessageBreak}
-% \DoNotIndex{\NeedsTeXFormat,\DoNotIndex,\verb}
-% \DoNotIndex{\def,\edef,\gdef,\global}
-% \DoNotIndex{\ifx,\listfiles,\mathord,\mathrm}
-% \DoNotIndex{\kvoptions,\SetupKeyvalOptions,\ProcessKeyvalOptions}
-% \DoNotIndex{\bigskip,\space,\thinspace,\ldots}
-% \DoNotIndex{\indent,\noindent,\newline,\linebreak,\pagebreak, \newpage}
-% \DoNotIndex{\textbf,\textit,\textsf,\texttt,\textquotedblleft,\textquotedblright}
-% \DoNotIndex{\plainTeX,\TeX,\LaTeX,\pdfLaTeX}
-% \DoNotIndex{\chapter,\section,\the,\csname,\endscname}
-% \DoNotIndex{\value,\setcounter,\addtocounter,\arabic}
-% \DoNotIndex{\regstats@test}
+% \DoNotIndex{\\,\@gobble,\@ifclassloaded,\@ifl@t@r,\@ifpackagelater,\@ifpackageloaded,\@ifundefined,\@whilenum,\@percentchar}
+% \DoNotIndex{\@tempcnta,\@tempcntb,\AddToHook,\advance,\AfterLastShipout,\Alternative,\arabic,\AtBeginDocument,\AtEndAfterFileList}
+% \DoNotIndex{\AtEndDocument,\atveryend,\AtVeryEndDocument,\AtVeryVeryEnd,\begin,\count,\DeclareBoolOption,\divide}
+% \DoNotIndex{\csname,\endcsname,\do,\setcounter,\stepcounter,\thenumberreg,\value}
+% \DoNotIndex{\documentclass,\end,\eTeX,\fmtversion,\gdef,\hbox,\hologo,\holtxdoc,\hyperref,\ifetex,\IfFileExists}
+% \DoNotIndex{\IfFormatAtLeastTF,\ifnum,\IfPackageLoadedTF,\ifpdf,\ifregstats@left,\ifregstats@proof,\ifregstats@timer}
+% \DoNotIndex{\iftex,\ifx,\intcalc,\intcalcMod,\jobname,\kvoptions,\left,\listfiles,\luatexfalse,\m@th}
+% \DoNotIndex{\makeatletter,\makeatother,\message,\MessageBreak,\multiply,\NeedsTeXFormat}
+% \DoNotIndex{\newcommand,\newif,\newline,\options,\PackageError,\PackageInfo,\PackageWarning,\PackageWarningNoLine}
+% \DoNotIndex{\pagenumbering,\par,\ProcessKeyvalOptions,\proof,\providecommand,\ProvidesPackage}
+% \DoNotIndex{\regcount,\regstats-example.tex,\regstats.dtx,\regstats.sty,\renewcommand,\RequirePackage}
+% \DoNotIndex{\regst@tsNoeTeX,\regs@tsmw,\regs@wmst,\regst@ts@st@tistics,\regst@ts@statistics,\regst@ts@timer}
+% \DoNotIndex{\regstats@box,\regstats@counter,\regstats@dimen,\regstats@fam,\regstats@firstofone,\regstats@free}
+% \DoNotIndex{\regstats@insert,\regstats@language,\regstats@left,\regstats@lft,\regstats@max,\regstats@message}
+% \DoNotIndex{\regstats@muskip,\regstats@pl,\regstats@read,\regstats@regstatA,\regstats@regstatB,\regstats@skip}
+% \DoNotIndex{\regstats@timerfalse,\regstats@toks,\regstats@used,\regstats@write}
+% \DoNotIndex{\section,\SetupKeyvalOptions,\space,\TeX,\textsf,\texttt,\the,\usepackage,\varepsilon}
%
% \title{The \xpackage{regstats} package}
-% \date{2012/01/07 v1.0h}
-% \author{H.-Martin M\"{u}nch\\\xemail{Martin.Muench at Uni-Bonn.de}}
+% \date{2023-04-04 v1.1a}
+% \author{H.-Martin Münch\\\xemail{Martin.Muench at Uni-Bonn.de}}
%
% \maketitle
%
% \begin{abstract}
-% This \LaTeX{} package allows to count the number of used registers
-% (counter, dimen, skip, muskip, box, token, input, output,
-% math families, languages, insertions)
-% and compare these to the maximum available number of such registers.
-% The time needed for a compilation run can be announced.
+% \noindent This \LaTeX{} package allows to count the number of used registers
+% (counter, dimen, skip, muskip, box, token, input, output,
+% math families, languages, insertions)
+% and compare these to the maximum available number of such registers.
+% The time needed for a compilation run can be announced.
% \end{abstract}
%
% \bigskip
%
% \noindent Disclaimer for web links: The author is not responsible for any contents
-% referred to in this work unless he has full knowledge of illegal contents.
-% If any damage occurs by the use of information presented there, only the
-% author of the respective pages might be liable, not the one who has referred
-% to these pages.
-%
-% \bigskip
-%
-% \noindent {\color{green} Save per page about $200\unit{ml}$ water,
-% $2\unit{g}$ CO$_{2}$ and $2\unit{g}$ wood:\\
-% Therefore please print only if this is really necessary.}
-%
-% \pagebreak
+% referred to in this work unless having full knowledge of illegal contents.
+% If any damage occurs by the use of information presented there,
+% only the author of the respective pages might be liable,
+% not the one who has referred to those pages.
%
% \tableofcontents
%
-% \pagebreak
-%
% \section{Introduction}
-%
% \indent This \LaTeX{} package allows to count the number of used registers
% (counter, dimen, skip, muskip, box, token, input, output,
% math families, languages, insertions).
% Therefore the according |\count| is read. While |\count10| should be the number
-% of the counters, |\count11| the one of the dimens, and so on, it is possible to use
-% option |proof|, in which case a new one of each register is used and looked at
-% |\the\allocationnumber|, and this is compared to the number determined by reading
-% the |\count|. The result for each register is compared to the maximum available
-% number of the respective register
-% (comparison independent of usage of option |proof|).
+% of the counters, |\count11| the one of the dimens, and so on, if there is enough
+% room for another register of that type, then a new one of that register is used
+% and looked at |\the\allocationnumber|. The result for each register is compared
+% to the maximum available number of the respective register.\newline
% With option |left| additionally the number of remaining registers of each type
% is given, and with option |timer| the time needed for the compilation run (when
-% either |pdf(la)tex| or |lua(la)tex| with |\directlua{starttime = os.clock()}|
-% before |\documentclass| is used).
-%
-% \bigskip
+% either \hologo{LuaLaTeX} with |\directlua{starttime = os.clock()}| before
+% |\documentclass| or |pdf(la)tex| is used).
%
% \section{Usage}
-%
% \indent Just load the package placing
% \begin{quote}
% |\usepackage[<|\textit{options}|>]{regstats}|
@@ -337,142 +263,244 @@ the README, and the derived files
% \noindent at the end of the preamble of your \LaTeXe{} source file. When you
% load packages |\AtBeginDocument|, \xpackage{regstats} should be the last one
% of those packages. The resulting message will be presented at the end of the
-% compilation messages at the screen and in the \xfile{log} file.\\
+% compilation messages at the screen and in the \xfile{log} file.
+% \bigskip
+%
+% The examplefile provides (commented out) |\stressCounter|, |\stressDimen|,
+% \dots, and |\stressInsert| to try out how many counters, dimens, \dots, and
+% inserts your system can handle.
+% \pagebreak
%
% \subsection{Options}
% \DescribeMacro{options}
% \indent The \xpackage{regstats} package takes the following options:
%
-% \subsubsection{proof\label{sss:proof}}
-% \DescribeMacro{proof}
-% \indent When option \texttt{proof} (or \texttt{proof=true}) is chosen,
-% a new one of each register is used and looked at |\the\allocationnumber|,
-% and this is compared to the number determined by reading the |\count|.
-% The default is \texttt{proof=false}.
-%
-% \subsubsection{left\label{sss:left}}
+% \subsubsection{left}
% \DescribeMacro{left}
% \indent When option \texttt{left} (or \texttt{left=true}) is chosen,
% also the number of remaining registers of each type is given. The default
% is \texttt{left=false}.
%
-% \subsubsection{timer\label{sss:timer}}
+% \subsubsection{timer}
% \DescribeMacro{timer}
% \indent When option \texttt{timer} (or \texttt{timer=true}) is chosen,
% also the time needed for the compilation run is given. The default
% is \texttt{timer=false}. The used |\pdfelapsedtime| is not available,
-% when |lua(la)tex| is used instead of |pdf(la)tex| to compile the document.
+% when \hologo{LuaLaTeX} is used instead of |pdf(la)tex| to compile the document.
% In that case at the very beginning of your \xfile{tex} file say\\
% \verb|\directlua{starttime = os.clock()}|\\
-% (even before |\documentclass|!), and the \texttt{timer} option can also
-% be used with |lua(la)tex|. When neither |lua(la)tex| nor |pdf(la)tex| is used
+% (even before |\documentclass|!), and then the \texttt{timer} option can also
+% be used with \hologo{LuaLaTeX}. When neither \hologo{LuaLaTeX} nor \hologo{pdfLaTeX} is used
% to compile the document, the \texttt{timer}(-option) does not work.
%
-% \section{Alternatives\label{sec:Alternatives}}
+% \subsubsection{proof}
+% \DescribeMacro{proof}
+% \indent Option \texttt{proof} is \textbf{obsolete} and should no longer be used.
%
+% \section{Alternatives\label{sec:Alternatives}}
% \begin{description}
-% \item[-] \xpackage{regcount}, 1999/08/03, v1.0, by \textsc{Jean-Pierre F. Drucbert},
+% \item[-] \xpackage{regcount}, 1999/08/03, v1.0, by \textsc{Jean-Pierre F. Drucbert}~(\textdied),
% provides the command |\rgcounts|, which can write the numbers of used registers
% into the \xfile{log} file anywhere (not only at the end) and does this automatically
-% |\AtBeginDocument| and |\AtEndDocument| (but not |\AtVeryVeryEnd|). The number of
-% allocated insertions is \emph{wrong} in my opinion, because these are not numbered
-% $1, 2,\ldots$, but start at a high number, which is then decreased. The package is
-% compatible with the \xpackage{regstats} package (i.\,e.~you can use both packages
-% at the same time in one document) and available at
-% \url{http://www.ctan.org/pkg/regcount}.
+% |\AtBeginDocument| and |\AtEndDocument|. The given number of allocated insertions is
+% \emph{wrong}, because these are not numbered $0$, $1$, $2$\ldots,
+% but start at a high number, which is then decreased (and additionally there are jumps,
+% see \hbox{p. \pageref{insertions}).} The package is compatible with the \xpackage{regstats} package
+% (i.\,e.~you can use both packages at the same time in one document) and available at
+% \url{https://ctan.org/pkg/regcount}.
%
% \item[-] One can manually search for the last appearance of
% |\count|, |\dimen|, |\skip|, |\muskip|, |\box|, |\toks|, |\read| (input),
-% |\write| (output), |\mathgroup| (math family), |\language|, and |\insert|,
-% and find the according number there. (This does not provide any information
-% about the number of remaining registers, of course.)
+% |\write| (output), |\mathgroup| (math family), and |\language|,
+% and find the according number there. This does not provide any information
+% about the number of remaining registers, of course. And it does not work for
+% |\insert|, see \hbox{p. \pageref{insertions}).}
% \end{description}
%
% \bigskip
%
-% \noindent (You programmed or found another alternative,
-% which is available at \CTAN{}?\\
-% OK, send an e-mail to me with the name, location at \CTAN{},
-% and a short notice, and I will probably include it in
-% the list above.)
+% \noindent You programmed or found another alternative,
+% which is available at \url{https://www.CTAN.org/}?
+% OK, send an e-mail to me with the name, location at CTAN,
+% and a short notice, and I will probably include it in the list above.
%
% \newpage
%
% \section{Example}
-%
% \begin{macrocode}
%<*example>
-%% When compiling with lua(la)tex (and wanting to use option timer=true,
+%% When compiling with LuaLaTeX (and wanting to use option timer=true),
%% the following line must be uncommented (i.e. remove the "%% ").
%% \directlua{starttime = os.clock()}
-\documentclass[british]{article}[2007/10/19]% v1.4h
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% \usepackage{etex}[1998/03/26]% v2.0
-%% Uncomment the preceding line, if you want to use the eTeX-package
-%% (which requires eTeX, of course).
-\usepackage[%
- extension=pdf,%
- plainpages=false,%
- pdfpagelabels=true,%
- hyperindex=false,%
- pdflang={en},%
- pdftitle={regstats package example},%
- pdfauthor={H.-Martin Muench},%
- pdfsubject={Example for the regstats package},%
- pdfkeywords={LaTeX, registers, read, write, language, box, dimen,%
- count, toks, muskip, skip, counter, regstats, H.-Martin Muench},%
- pdfview=Fit,%
- pdfstartview=Fit,%
- pdfpagelayout=SinglePage%
-]{hyperref}[2011/12/04]% v6.82m
-\usepackage[proof=false,left=true,timer=true]{regstats}[2012/01/07]%
-%% v1.0h
-\gdef\unit#1{\mathord{\thinspace\mathrm{#1}}}%
-\makeatletter
-\@ifundefined{eTeX}{\gdef\eTeX{$\m@th \varepsilon $-\TeX }}{%
-%% else \relax
+\documentclass[british]{article}
+\usepackage[left=true,timer=true]{regstats}[2023/04/04]% v1.1a Counting used registers (HMM)
+\ifpdf\ifluatex\else
+\pdfinfo{
+ /Author (H.-Martin Muench)
+ /Title (regstats package example)
+ /Subject (Example for the regstats package)
+ /Keywords (LaTeX;registers;read;write;language;box;dimen;count;toks;muskip;skip;counter;regstats)
}
+\fi\fi
+%% If you use the hyperref package, use the options of that package
+%% to set the pdf information.
+%% Do NOT use \pdfinfo AND the hyperref package!
+
+%%\usepackage{etex}
+%%\usepackage{morewrites}
+
+\makeatletter
+\newcommand{\stressCounter}[1]{%
+ \ifnum\the\count10<#1\relax\else\message{Already \the\count10 \space counters used.} \fi%
+ \@tempcnta=0\relax%
+ \@whilenum\the\count10<#1\do%
+ {\advance\@tempcnta +1\relax%
+ \newcounter{TestCounter\the\@tempcnta} \message{counter \the\allocationnumber ^^J}%
+ }%
+ }
+
+\newcommand{\stressDimen}[1]{%
+ \ifnum\the\count11<#1\relax\else\message{Already \the\count11 \space dimens used.} \fi%
+ \@tempcnta=0\relax%
+ \@whilenum\the\count11<#1\do%
+ {\advance\@tempcnta +1\relax%
+ \expandafter\newdimen\csname TestDimen\the\@tempcnta\endcsname \message{dimen \the\allocationnumber ^^J}%
+ }%
+ }
+
+\newcommand{\stressSkip}[1]{\%
+ \ifnum\the\count12<#1\relax\else\message{Already \the\count11 \space skips used.} \fi%
+ \@tempcnta=0\relax%
+ \@whilenum\the\count12<#1\do%
+ {\advance\@tempcnta +1\relax%
+ \expandafter\newskip\csname TestSkip\the\@tempcnta\endcsname \message{skip \the\allocationnumber ^^J}%
+ }%
+ }
+
+\newcommand{\stressMuskip}[1]{%
+ \ifnum\the\count13<#1\relax\else\message{Already \the\count11 \space muskips used.} \fi%
+ \@tempcnta=0\relax%
+ \@whilenum\the\count13<#1\do%
+ {\advance\@tempcnta +1\relax%
+ \expandafter\newmuskip\csname TestMuskip\the\@tempcnta\endcsname \message{muskip \the\allocationnumber ^^J}%
+ }%
+ }
+
+\newcommand{\stressBox}[1]{%
+ \ifnum\the\count14<#1\relax\else\message{Already \the\count11 \space boxes used.} \fi%
+ \@tempcnta=0\relax%
+ \@whilenum\the\count14<#1\do%
+ {\advance\@tempcnta +1\relax%
+ \expandafter\newbox\csname TestBox\the\@tempcnta\endcsname \message{box \the\allocationnumber ^^J}%
+ }%
+ }
+
+\newcommand{\stressToks}[1]{%
+ \ifnum\the\count15<#1\relax\else\message{Already \the\count11 \space toks used.} \fi%
+ \@tempcnta=0\relax%
+ \@whilenum\the\count15<#1\do%
+ {\advance\@tempcnta +1\relax%
+ \expandafter\newtoks\csname TestToks\the\@tempcnta\endcsname \message{toks \the\allocationnumber ^^J}%
+ }%
+ }
+
+\newcommand{\stressRead}[1]{%
+ \ifnum\the\count16<#1\relax\else\message{Already \the\count11 \space reads used.} \fi%
+ \@tempcnta=0\relax%
+ \@whilenum\the\count16<#1\do%
+ {\advance\@tempcnta +1\relax%
+ \expandafter\newread\csname TestRead\the\@tempcnta\endcsname \message{read \the\allocationnumber ^^J}%
+ }%
+ }
+
+\newcommand{\stressWrite}[1]{%
+ \ifnum\the\count17<#1\relax\else\message{Already \the\count11 \space writes used.} \fi%
+ \@tempcnta=0\relax%
+ \@whilenum\the\count17<#1\do%
+ {\advance\@tempcnta +1\relax%
+ \expandafter\newwrite\csname TestWrite\the\@tempcnta\endcsname \message{write \the\allocationnumber ^^J}%
+ }%
+ }
+
+\newcommand{\stressFam}[1]{%
+ \ifnum\the\count18<#1\relax\else\message{Already \the\count11 \space fams used.} \fi%
+ \@tempcnta=0\relax%
+ \@whilenum\the\count18<#1\do%
+ {\advance\@tempcnta +1\relax%
+ \expandafter\newfam\csname TestFam\the\@tempcnta\endcsname \message{fam \the\allocationnumber ^^J}%
+ }%
+ }
+
+\newcommand{\stressLanguage}[1]{%
+ \ifnum\the\count19<#1\relax\else\message{Already \the\count11 \space languages used.} \fi%
+ \@tempcnta=0\relax%
+ \@whilenum\the\count19<#1\do%
+ {\advance\@tempcnta +1\relax%
+ \expandafter\newlanguage\csname TestLanguage\the\@tempcnta\endcsname \message{language \the\allocationnumber ^^J}%
+ }%
+ }
+
+\newcommand{\stressInsert}[1]{%
+ \message{Declaring #1\space ADDITIONAL inserts:}%
+ \@tempcnta=0\relax%
+ \@whilenum\the\@tempcnta<#1\do%
+ {\advance\@tempcnta +1\relax%
+ \expandafter\newinsert\csname TestInsert\the\@tempcnta\endcsname%
+ \message{insert \the\@tempcnta: \the\allocationnumber^^J}%
+ }%
+ }
\makeatother
+
\listfiles
\begin{document}
\pagenumbering{arabic}
\section*{Example for regstats}
This example demonstrates the use of package\newline
-\textsf{regstats}, v1.0h as of 2012/01/07 (HMM).\newline
-The used options were \texttt{proof=false,left=true,timer=true}.\newline
-\texttt{proof=false} is the default, but neither \texttt{left=true}
-nor \texttt{timer=true} are defaults (\texttt{left=false,timer=false}
-would be the defaults).\newline
+\textsf{regstats}, v1.1a as of 2023-04-04.\newline
+The used options were \texttt{left=true,timer=true}.\par
+\texttt{left=false,timer=false} would be the defaults.\newline
-If \eTeX{} is available with your \LaTeX{}-distribution
-and you want to use it, uncomment the\newline
-\verb|%% \usepackage{etex}[1998/03/26]% v2.0|\newline
-line in the preamble of this document.\newline
+Regarding the use of
+\makeatletter%
+\ \@ifundefined{eTeX}{\hbox{$\m@th \varepsilon $-\TeX}}{\eTeX}, %
+\makeatother%
+the \texttt{morewrite} package, the reservation of \texttt{insert}s,
+and using more \texttt{math families} please see the documentation!\newline
-For more details please see the documentation!\newline
+For the resulting message, please compile \texttt{regstats-example.tex}
+and have a look at the end of its \texttt{.log}-file.\newline
-\noindent Save per page about $200\unit{ml}$ water,
-$2\unit{g}$ CO$_{2}$ and $2\unit{g}$ wood:\newline
-Therefore please print only if this is really necessary.\newline
+Because the compilation time for this example is usually quite short,
+option \texttt{timer} is not demonstrated very spectacular.\newline
-For the resulting message, please compile regstats-example.tex and
-have a look at the end of the log-file.
+To test a register type for the number of available registers,
+uncomment the respective line below and set the number to an interesting value.
-Because the compilation time for this example is usually quite short,
-option \texttt{timer} is not demonstrated very spectacular.
+
+\makeatletter
+%%\stressCounter{233}
+%%\stressDimen{233}
+%%\stressSkip{233}
+%%\stressMuskip{255}
+%%\stressBox{233}
+%%\stressToks{255}
+%%\stressRead{15}
+%%\stressWrite{14}
+%%\stressFam{15}
+%%\stressLanguage{255}
+%%\stressInsert{20}
+\makeatother
\end{document}
%</example>
% \end{macrocode}
%
% \StopEventually{}
-%
% \newpage
%
% \section{The implementation}
-%
-% We start off by checking that we are loading into \LaTeXe\ and
+% We start off by checking that we are loading into \LaTeXe{} and
% announcing the name and version of this package.
%
% \begin{macrocode}
@@ -480,9 +508,8 @@ option \texttt{timer} is not demonstrated very spectacular.
% \end{macrocode}
%
% \begin{macrocode}
-\NeedsTeXFormat{LaTeX2e}[2011/06/27]
-\ProvidesPackage{regstats}[2012/01/07 v1.0h
- Counting used registers (HMM)]
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{regstats}[2023/04/04 v1.1a Counting used registers (HMM)]
% \end{macrocode}
%
@@ -496,73 +523,89 @@ option \texttt{timer} is not demonstrated very spectacular.
% \end{macrocode}
%
-% We need the \xpackage{kvoptions}, \xpackage{atveryend}, and
-% \xpackage{ltxcmds} packages by \textsc{Heiko Oberdiek}:
+% We need the \xpackage{kvoptions} package:
%
% \begin{macrocode}
-\RequirePackage{kvoptions}[2010/12/23]% v3.10
-\RequirePackage{atveryend}[2011/06/30]% v1.8
-\RequirePackage{ltxcmds}[2011/04/18]% v1.20
+\RequirePackage{kvoptions}% Key value format for package options (HO)
% \end{macrocode}
%
-% A last information for the user:
-%
-% \begin{macrocode}
-%% regstats may work with earlier versions of LaTeX and these
-%% packages, but this was not tested. Please consider updating
-%% your LaTeX and packages to the most recent version
-%% (if they are not already the most recent version).
-
-% \end{macrocode}
-%
-% \indent See subsection~\ref{ss:Downloads} about how to get them.\\
-%
% We process the options:
%
% \begin{macrocode}
\SetupKeyvalOptions{family=regstats,prefix=regstats@}
-\DeclareBoolOption{proof}% \regstats@proof
-\DeclareBoolOption{left}
+\DeclareBoolOption{left}% \regstats@left
\DeclareBoolOption{timer}
+\DeclareBoolOption{proof}% OBSOLETE
\ProcessKeyvalOptions*
+% \end{macrocode}
+%
+% Option |proof| is \textbf{obsolete}:
+%
+% \begin{macrocode}
\ifregstats@proof
- \PackageInfo{regstats}{%
- This package will use one of each kind of register itself!%
- \MessageBreak%
- (And other packages used by this package\MessageBreak%
- probably use additional resources,\MessageBreak%
- if those packages are not used anyway.)\MessageBreak%
- }
+ \PackageWarningNoLine{regstats}{Option proof is obsolete. Please do not use it\MessageBreak%
+ when loading the regstats package}
\else
- \PackageInfo{regstats}{%
- This package will not use registers itself,\MessageBreak%
- but packages used by this package\MessageBreak%
- (and packages loaded by those packages)\MessageBreak%
- use additional resources,\MessageBreak%
- if those packages are not used anyway.\MessageBreak%
- }
+ \PackageInfo{regstats}{Option proof is obsolete.\MessageBreak%
+ If you used proof=false, please remove this\@gobble}
\fi
% \end{macrocode}
%
-% The different kinds of registers used with option |proof=true|
-% are used not before |\AtVeryVeryEnd|, therefore even if it is
-% the one used register too much, it should not interfere
-% with the creation of the document.\\
+% We need the \pkg{iftex} package (or its predecessors \pkg{ifpdf},
+% \pkg{ifetex}, and \pkg{ifluatex}):
+%
+% \begin{macrocode}
+\IfFileExists{iftex.sty}{\RequirePackage{iftex}}{
+ \RequirePackage{ifpdf}
+ \RequirePackage{ifetex}
+ \RequirePackage{ifluatex}
+ }
+
+% \end{macrocode}
+% \pagebreak
+% \begin{macrocode}
+\@ifundefined{ifluatex}{\newif\ifluatex \luatexfalse}{\relax}
+\@ifundefined{ifetex}{\newif\ifetex \etexfalse}{\relax}
+
+% \end{macrocode}
+%
+% Yes, if \hologo{LuaLaTeX} is used without defining |\ifluatex|,
+% then we fail safe with assuming \hologo{LuaLaTeX} is not used.
+% Otherwise everything (|\else|s and |\fi|s) gets mixed up,
+% but \hologo{LuaLaTeX} without |\ifluatex| is really broken.
+% Also if |\ifetex| is unknown, we assume that there is no
+% \hologo{eTeX} available.
+%
+% \medskip
+%
+% Option timer requires some condition:
%
% \begin{macrocode}
\ifregstats@timer
- \RequirePackage{intcalc}[2007/09/27]% v1.1
- \RequirePackage{ifluatex}[2010/03/01]% v1.3
- \RequirePackage{ifpdf}[2011/01/30]% v2.3
+ \ifpdf \RequirePackage{intcalc}
+ \else \PackageError{regstats}{Option timer only works with pdf(la)tex\MessageBreak%
+ and with lua(la)tex}{Neither appears to be used here.}
+ \regstats@timerfalse
+ \fi
\fi
-\newcommand{\regst@ts@timer}{%
- \message{^^J}
- \ifluatex
+% \end{macrocode}
+%
+% The timer:
+%
+% \begin{macrocode}
+\newcommand{\regst@ts@timer}{\message{^^J}%
+ \@tempcnta=0%
+% \end{macrocode}
+%
+% For \hologo{LuaLaTeX}:
+%
+% \begin{macrocode}
+ \ifluatex%
\@tempcnta=%
\directlua{
if starttime then
@@ -570,380 +613,555 @@ option \texttt{timer} is not demonstrated very spectacular.
else
tex.sprint(0)
end
- }\relax
- \ifnum \the\@tempcnta = 0
+ }\relax%
+% \end{macrocode}
+%
+% and for pdf\LaTeX:
+%
+% \begin{macrocode}
+ \else \ifpdf \@tempcnta=\the\pdfelapsedtime\relax\fi%
+ \fi%
+% \end{macrocode}
+%
+% Checking the result:
+%
+% \begin{macrocode}
+ \ifnum \the\@tempcnta = 0%
+ \ifluatex%
\PackageError{regstats}{Did you forget to start the timer?}{%
- Before \string\documentclass\space you need to say%
- \MessageBreak%
- \string\directlua{starttime = os.clock()} \MessageBreak%
- }
- \fi
- \else
- \ifpdf
- \@tempcnta=\the\pdfelapsedtime\relax
- \else
- \PackageError{regstats}{Option timer only works with pdf(la)tex%
- \MessageBreak%
- and with lua(la)tex}{%
- Neither appear to be used here. Announced compilation time %
- will be zero.
- }
- \@tempcnta=0\relax
- \fi
- \fi
- \edef\regstatselapsedtime{\the\@tempcnta}
- \divide \@tempcnta by 65536% scaledseconds -> seconds
- \edef\regstatsseconds{\the\@tempcnta}
- \ifnum \regstatsseconds > 59
- \edef\regstatsseconds{\intcalcMod{\the\@tempcnta}{60}}
- \divide \@tempcnta by 60% seconds -> minutes
- \else
- \@tempcnta=0\relax% minutes = 0
- \fi
- \ifnum \regstatsseconds < 10
- \message{Time elapsed for the last compiler run:^^J%
- about \the\@tempcnta:0\regstatsseconds\space%
- (m:ss; \regstatselapsedtime /65536 s).^^J}
- \else
+ Before \string\documentclass\space you need to say\MessageBreak%
+ \string\directlua{starttime = os.clock()}}%
+ \fi%
+ \PackageError{regstats}{Could not determine the time used for compilation}{Reason is unknown.}%
+ \else%
% \end{macrocode}
%
+% It worked!
% \pagebreak
%
% \begin{macrocode}
- \message{Time elapsed for the last compiler run:^^J%
- about \the\@tempcnta:\regstatsseconds \space%
- (m:ss; \regstatselapsedtime /65536 s).^^J}
- \fi
+ \xdef\regstatselapsedtime{\the\@tempcnta}%
+ \divide \@tempcnta by 65536% scaled-seconds -> seconds
+ \xdef\regstatsseconds{\the\@tempcnta}%
+ \ifnum \regstatsseconds > 59%
+ \xdef\regstatsseconds{\intcalcMod{\the\@tempcnta}{60}}%
+ \divide \@tempcnta by 60% seconds -> minutes
+ \else%
+ \@tempcnta=0% minutes = 0
+ \fi%
+ \ifnum \regstatsseconds < 10%
+ \message{Time elapsed for the last compiler run:^^J%
+ about \the\@tempcnta:0\regstatsseconds\space%
+ (m:ss; \regstatselapsedtime /65536 s).^^J}%
+ \else%
+ \message{Time elapsed for the last compiler run:^^J%
+ about \the\@tempcnta:\regstatsseconds \space%
+ (m:ss; \regstatselapsedtime /65536 s).^^J}%
+ \fi%
+ \fi%
}
-\ifregstats@timer
-\else
-\renewcommand{\regst@ts@timer}{\relax}
-\fi
+% \end{macrocode}
+%
+% If the |timer|-option was not used, we do not use the timer:
+%
+% \begin{macrocode}
+\ifregstats@timer\else\renewcommand{\regst@ts@timer}{\relax}\fi
-\let\regst@ts@statistics\AtVeryVeryEnd%
+% \end{macrocode}
+%
+% Initialisation of some commands:
+%
+% \begin{macrocode}
+\long\def\regstats@firstofone#1{#1}
+
+\providecommand\IfFormatAtLeastTF{\@ifl@t@r\fmtversion}
+
+\let\regst@tsNoeTeX\relax
+
+\xdef\regstats@lft{}
% \end{macrocode}
%
-% \LaTeXe{} 2011/06/27 changed the |\enddocument| command and thus
-% broke the \xpackage{atveryend} package, which was then fixed.
+% \LaTeXe{} 2011-06-27 changed the |\enddocument| command and thus
+% broke the \pkg{atveryend} package, which was then fixed.
% If new \LaTeXe{} and old \xpackage{atveryend} are combined,
% |\AtVeryVeryEnd| will never be called.
-% |\@ifl@t@r\fmtversion| is from |\@needsf@rmat| as in\\
-% \texttt{File L: ltclass.dtx Date: 2007/08/05 Version v1.1h}, line~259,\\
-% of The \LaTeXe{} Sources\\
-% by \textsc{Johannes Braams, David Carlisle, Alan Jeffrey, Leslie Lamport,%
-% Frank Mittelbach, Chris Rowley, and Rainer Sch\"{o}pf},\\
-% as of 2011/06/27, p.~464.
+% \LaTeXe{} 2020-10-01 introduced a new hook management.
+% For \LaTeXe-format 2022-11-01 and newer we use hooks instead of
+% loading the \pkg{atveryend} package.
%
% \begin{macrocode}
-\@ifl@t@r\fmtversion{2011/06/27}% or possibly even newer
-{\@ifpackagelater{atveryend}{2011/06/29}%
- {% 2011/06/30, v1.8, or even more recent: OK
- }{% else: older package version, no \AtVeryVeryEnd
- \let\regst@ts@statistics\ltx@firstofone%
- }
-}{% else: older fmtversion: OK
+\IfFormatAtLeastTF{2022/11/01}{
+ \let\regst@ts@statistics\regstats@firstofone% We do not use \AtVeryVeryEnd.
+ \newcommand{\regst@ts@st@tistics}[1]{\AddToHook{begindocument}{%
% \end{macrocode}
%
-% In this case the used \TeX{} format is outdated, but when\\
-% |\NeedsTeXFormat{LaTeX2e}[2011/06/27]|\\
-% is executed at the beginning of \xpackage{regstats} package,
-% the appropriate warning message is issued automatically.
-% (And \xpackage{regstats} should also work with older versions,
-% I~used it with a 2003/12/01 version myself.)
+% The \pkg{morewrites} package allows for more writes (see \hbox{p. \pageref{write}):}
%
% \begin{macrocode}
-}
-
-\AtBeginDocument{%
- \AtEndDocument{%
- \BeforeClearDocument{%
- \AfterLastShipout{%
- \AtVeryEndDocument{%
- \AtEndAfterFileList{%
+ \AddToHook{begindocument/end}{\IfPackageLoadedTF{morewrites}{\def\regs@tsmw{65250}}{%
+ \ifluatex\def\regs@tsmw{124}\else\def\regs@tsmw{16}\fi}%
+ \AddToHook{enddocument}{\AddToHook{enddocument/afterlastpage}{\AddToHook{enddocument/afteraux}{%
+ \AddToHook{enddocument/info}{\AddToHook{enddocument/end}{#1}}}}}}}}
+ }{\RequirePackage{atveryend}
+ \let\regst@ts@statistics\AtVeryVeryEnd
+ \IfFormatAtLeastTF{2011/06/27}{
+ \@ifpackagelater{atveryend}{2011/06/29}{% 2011/06/30, v1.8, or even more recent: OK
+ }{% else: older package version, no \AtVeryVeryEnd
+ \let\regst@ts@statistics\regstats@firstofone
+ }
+ }{% else: older fmtversion: also OK
+ }
+ \newcommand{\regst@ts@st@tistics}[1]{\AtBeginDocument{\AtEndDocument{\AfterLastShipout{\AtVeryEndDocument{%
+ \AtEndAfterFileList{#1}}}}}}
+% \end{macrocode}
+%
+% With the |seminar| class or the \pkg{slidesec} package |\AtVeryVeryEnd| must not be used:
+%
+% \begin{macrocode}
+ \AtBeginDocument{%
+ \@ifclassloaded{seminar}{% no \AtVeryVeryEnd
+ \let\regst@ts@statistics\regstats@firstofone}{\relax}
+ \@ifpackageloaded{slidesec}{% no \AtVeryVeryEnd
+ \let\regst@ts@statistics\regstats@firstofone}{\relax}
% \end{macrocode}
%
-% The \xpackage{regstats} package uses the \xpackage{atveryend} package,
-% which is not compatible with the \xclass{seminar} class nor the
-% \xpackage{slidesec} package. |\AtVeryVeryEnd| cannot be used with that
-% class or package.\\
-% |\ltx@ifclassloaded| and |\ltx@ifpackageloaded| from the \xpackage{ltxcmds}
-% package can be used after |\AtBeginDocument| (in contrast to
-% |\@ifclassloaded| and |\@ifpackageloaded|).
+% The \pkg{morewrites} package allows for more writes (see \hbox{p. \pageref{write}):}
%
% \begin{macrocode}
- \ltx@ifclassloaded{seminar}{% no \AtVeryVeryEnd
- \let\regst@ts@statistics\ltx@firstofone%
- }{% else
- \ltx@ifpackageloaded{slidesec}{% no \AtVeryVeryEnd
- \let\regst@ts@statistics\ltx@firstofone%
- }{% else: OK
+ \@ifpackageloaded{morewrites}{\def\regs@tsmw{32767}}{\ifluatex\def\regs@tsmw{124}\else\def\regs@tsmw{15}\fi}%
+% \end{macrocode}
+%
+% If neither \eTeX{} is available nor the \pkg{etex} package loaded,
+% the number of available registers is drastically reduced:
+%
+% \begin{macrocode}
+ \ifetex\else%
+ \@ifpackageloaded{etex}{\relax}{% else
+ \gdef\regst@tsNoeTeX{%
+ \PackageWarning{regstats}{Neither eTeX nor the e-TeX-package found.\MessageBreak%
+ That can mean that e-TeX was disabled or\MessageBreak%
+ that your distribution of TeX does not contain e-TeX\MessageBreak%
+ or that you simply forgot to say \string\usepackage{etex}\MessageBreak%
+ in the preamble of \jobname.tex.\MessageBreak%
+ The number of available counter, dimen, skip,\MessageBreak%
+ muskip, box, and toks registers as well as the\MessageBreak%
+ number of insertions would be larger when using\MessageBreak%
+ eTeX or the e-TeX-package;%
}%
+ }%
}%
+ \fi%
+ }
+ }
+
+% \end{macrocode}
+% \pagebreak
+% \begin{macrocode}
+\regst@ts@st@tistics{%
+\regst@ts@statistics{%
+ \xdef\regstats@message{\relax}%
% \end{macrocode}
%
-% |\AtEndAfterFileList| we write to |\AtVeryVeryEnd| (if available) via\linebreak
-% |\regst@ts@statistics|, thus the code will be executed quite late during
-% the compilation. (Please load \xpackage{regstats} as very last package!)\\
+% |\regstats@regstatA| uses three arguments: 1.~the used number of registers
+% of some type, 2.~the \textquotedblleft regular\textquotedblright number
+% of available registers of that type, 3.~that number in case of extended
+% register range (\eTeX). Maximum available minus used registers gives
+% the number of free/currently available registers.
%
% \begin{macrocode}
- \regst@ts@statistics{%
+ \newcommand{\regstats@regstatA}[3]{%
+ \ifx\regst@tsNoeTeX\relax \xdef\regstats@max{#3}\else\xdef\regstats@max{#2}\fi%
+ \@tempcnta=\regstats@max \relax%
+ \advance\@tempcnta by -#1\relax%
+ \xdef\regstats@free{\the\@tempcnta}%
+ }%
% \end{macrocode}
%
-% We try to determine, whether the \xpackage{etex}-package was loaded by the user
-% (which requires \eTeX{} being available in the \LaTeX{} distribution
-% used to compile the document).
+% |\regstats@regstatB| gives the singular (2nd~argument) or plural (3rd~argument)
+% of the name of that register type (1st~argument):
%
% \begin{macrocode}
- \ltx@ifpackageloaded{etex}{%
- \PackageInfo{regstats}{e-TeX-package found.}
- }{% else
- \PackageWarning{regstats}{Could not find the e-TeX-package.%
- \MessageBreak%
- That can mean that e-TeX was disabled or\MessageBreak%
- that your distribution of TeX does not contain e-TeX%
- \MessageBreak%
- or that you simply forgot to say \string\usepackage{etex}%
- \MessageBreak%
- in the preamble of \jobname.tex.\MessageBreak%
- The number of available counter, dimen, skip,\MessageBreak%
- muskip, box, and toks registers as well as the\MessageBreak%
- number of insertions would be larger when using%
- \MessageBreak%
- the e-TeX-package.%
- }
- }
+ \newcommand{\regstats@regstatB}[3]{%
+ \@tempcnta=\regstats@max\relax%
+ \advance\@tempcnta by -#1\relax%
+ \xdef\regstats@free{\the\@tempcnta}%
+ \@tempcnta=#1\relax%
+ \ifnum \the\@tempcnta = 0%
+ \@tempcnta=2\relax% zero: same as plural
+ \fi%
+ \ifnum \the\@tempcnta > 1%
+ \gdef\regstats@pl{#3}% plural
+ \else%
+ \gdef\regstats@pl{#2}% singular
+ \fi%
% \end{macrocode}
%
-% We define a new command to determine the singular/plural form,
-% maximum of available registers, and (if option |left| was chosen)
-% the number of remaining registers of that type.
+% The number of used registers is given as per cent of the available
+% registers of that type:
%
% \begin{macrocode}
- \def\regstats@lft{}%
- \newcommand{\regstats@regstat}[5]{%
+ \@tempcnta=#1\relax%
+ \multiply\@tempcnta by 100\relax%
+ \@tempcntb=\regstats@max\relax%
+ \divide\@tempcnta by\@tempcntb\relax%
+ \xdef\regstats@used{\space(\the\@tempcnta\@percentchar\space used)}%
% \end{macrocode}
%
-% The five parameters are: number of used registers of that type,
-% singular ending, plural ending, number of available registers without
-% \eTeX{}, number of available registers with \eTeX{} (in this order).
+% If option |left| was chosen, the number of remaining registers of that type is announced:
%
% \begin{macrocode}
- \@tempcnta=#1 \relax
- \ifnum \the\@tempcnta = 0
- \@tempcnta=2 \relax
- \fi
- \ifnum \the\@tempcnta > 1
- \gdef\regstats@pl{#3}
- \else
- \gdef\regstats@pl{#2}
- \fi
- \ltx@ifpackageloaded{etex}{\edef\regstats@max{#5}}{%
- \edef\regstats@max{#4}}
- \ifregstats@left
- \@tempcnta=\regstats@max \relax
- \advance\@tempcnta by -#1%
- \ifnum \the\@tempcnta > 0
- \edef\regstats@lft{, left: \the\@tempcnta}
- \else
- \ifnum \the\@tempcnta = 0
- \edef\regstats@lft{, left: \the\@tempcnta !!!}
- \else% \the\@tempcnta < 0
- \edef\regstats@lft{, left: \the\@tempcnta **********}
- \fi
- \fi
+ \ifregstats@left%
+ \ifnum \regstats@free > 0\relax%
+ \xdef\regstats@lft{, left: \regstats@free}%
+ \else%
+ \ifnum \regstats@free = 0\relax%
+ \xdef\regstats@lft{, left: \regstats@free !!!}%
+ \else% \regstats@free < 0
+ \xdef\regstats@lft{, left: \regstats@free ??? **********}%
+ \fi%
+ \fi%
+ \fi%
+ }%
% \end{macrocode}
%
-% | \else| |\regstats@lft| will stay |\empty|.
+% We now just take the current numbers of the various |count|s:
%
% \begin{macrocode}
- \fi
- }
+ \xdef\regstats@counter{\the\count10}%
+ \xdef\regstats@dimen{\the\count11}%
+ \xdef\regstats@skip{\the\count12}%
+ \xdef\regstats@muskip{\the\count13}%
+ \xdef\regstats@box{\the\count14}%
+ \xdef\regstats@toks{\the\count15}%
+ \xdef\regstats@read{\the\count16}%
+ \xdef\regstats@write{\the\count17}%
+ \xdef\regstats@fam{\the\count18}%
+ \xdef\regstats@language{\the\count19}%
+ \xdef\regstats@insert{\the\count20}%
% \end{macrocode}
%
-% When option |proof| was chosen, one new register of each named type
-% is used and its number compared with the according |count| number.
-% We give a warning about the use of additional registers.
+% |\countdef\insc@unt=20| is a synonym for the insertion counter.\par
+% |\countdef\allocationnumber=21| is a synonym for the allocation counter
+% |\count21|, which contains the most recently allocated number.
+% For example, if |\newdimen{\regstatsdimen}| allocated a new dimen,
+% and that dimen uses the $48\textsuperscript{th}$~dimen register, then
+% |\count21| contains the $48$.\par
+% |\count22| contains $-1$.
+% \medskip
+%
+% We build the |\regstats@message|:
%
% \begin{macrocode}
- \ifregstats@proof
- \PackageWarning{regstats}{%
- Package regstats loaded with option 'proof'.\MessageBreak%
- This package itself will now use\MessageBreak%
- one of each register for testing!\MessageBreak%
- }%
- \def\regstats@proof{1}
- \newcounter{regstatscount}
- \edef\regstats@counter{\the\allocationnumber}
- \edef\regstats@test{\the\count10}
- \ifx\regstats@counter\regstats@test
- \else
- \message{Discrepancy when counting count registers.^^J}
- \def\regstats@proof{0}
- \fi
- \newdimen{\regstatsdimen}
- \edef\regstats@dimen{\the\allocationnumber}
- \edef\regstats@test{\the\count11}
- \ifx\regstats@dimen\regstats@test
- \else
- \message{Discrepancy when counting dimen registers.^^J}
- \def\regstats@proof{0}
- \fi
- \newskip\regstatsskip
- \edef\regstats@skip{\the\allocationnumber}
- \edef\regstats@test{\the\count12}
- \ifx\regstats@skip\regstats@test
- \else
- \message{Discrepancy when counting skip registers.^^J}
- \def\regstats@proof{0}
- \fi
- \newmuskip\regstatsmuskip
- \edef\regstats@muskip{\the\allocationnumber}
- \edef\regstats@test{\the\count13}
- \ifx\regstats@muskip\regstats@test
- \else
- \message{Discrepancy when counting muskip registers.^^J}
- \def\regstats@proof{0}
- \fi
- \newbox\regstatsbox
- \edef\regstats@box{\the\allocationnumber}
- \edef\regstats@test{\the\count14}
- \ifx\regstats@box\regstats@test
- \else
- \message{Discrepancy when counting box registers.^^J}
- \def\regstats@proof{0}
- \fi
- \newtoks\regstatstoks
- \edef\regstats@toks{\the\allocationnumber}
- \edef\regstats@test{\the\count15}
- \ifx\regstats@toks\regstats@test
- \else
- \message{Discrepancy when counting toks registers.^^J}
- \def\regstats@proof{0}
- \fi
- \newread\regstatsread
- \edef\regstats@read{\the\allocationnumber}
- \edef\regstats@test{\the\count16}
- \ifx\regstats@read\regstats@test
- \else
- \message{Discrepancy when counting read registers.^^J}
- \def\regstats@proof{0}
- \fi
- \newwrite\regstatswrite
- \edef\regstats@write{\the\allocationnumber}
- \edef\regstats@test{\the\count17}
- \ifx\regstats@write\regstats@test
- \else
- \message{Discrepancy when counting write registers.^^J}
- \def\regstats@proof{0}
- \fi
- \newfam\regstatsfam
- \edef\regstats@fam{\the\allocationnumber}
- \edef\regstats@test{\the\count18}
- \ifx\regstats@fam\regstats@test
- \else
- \message{Discrepancy when counting fam registers.^^J}
- \def\regstats@proof{0}
- \fi
- \newlanguage\regstatslanguage
- \edef\regstats@language{\the\allocationnumber}
- \edef\regstats@test{\the\count19}
- \ifx\regstats@language\regstats@test
- \else
- \message{Discrepancy when counting language registers.^^J}
- \def\regstats@proof{0}
- \fi
- \newinsert\regstatsinsert
- \edef\regstats@insert{\the\allocationnumber}
- \edef\regstats@test{\the\count20}
- \ifx\regstats@insert\regstats@test
- \else
- \message{Discrepancy when counting insert registers.^^J}
- \def\regstats@proof{0}
- \fi
+ \xdef\regstats@message{\regstats@message\message{^^J}}%
+ \xdef\regstats@message{\regstats@message\message{Here is how much of TeX's registers you used^^J}}%
+ \xdef\regstats@message{\regstats@message\message{\space (numbers of available registers are estimated!):^^J}}%
% \end{macrocode}
%
-% When there was a discrepancy somewhere, we give the according message.
+% While |\xdef\regstats@...{\the\count...}| was used above,
+% if \eTeX{} is available we use another register of that type
+% and look at the register number it received.\par
+% Classic \TeX{} has $2^{8}=256$~registers,
+% \eTeX{} and \XeTeX{} have $2^{15}=32\,768$~registers,
+% and \hologo{LuaLaTeX} has even $2^{15}=65\,536$~registers
+% (for |\count|, |\dimen|, |\skip|, |\muskip|, |\box|, and |\toks|).
+% There are only 16~|\read|s available.
+% |\write|s and |\fam|s were traditionally also 16,
+% see page~\pageref{write} (write) and page~\pageref{families} (families) about using more.
+% |\lang|s are only 256 available.
+% |\insert|s are complicated (see \hbox{p. \pageref{insertions}). --}\ %
+% Each |\newlength| needs a skip register.
+%
+% \medskip
+%
+% \textbf{The counter registers:}
%
% \begin{macrocode}
- \edef\regstats@test{0}
- \ifx\regstats@proof\regstats@test
- \message{Regstats test for register numbers failed.^^J}
- \message{Therefore option 'proof' is necessary to get the %
- right numbers.^^J}
- \fi
- \else
+ \regstats@regstatA{\regstats@counter}{255}{32767}%
+ \ifetex\newcounter{regstatscount}\xdef\regstats@counter{\the\allocationnumber}\fi%
+ \regstats@regstatB{\regstats@counter}{}{s}%
+ \xdef\regstats@message{\regstats@message\message{ \regstats@counter\space counter register\regstats@pl\space%
+ out of \regstats@max\regstats@used\regstats@lft ^^J}}%
+ %
% \end{macrocode}
-%
% \pagebreak
%
-% Without option |proof|, we just take the values of the various |count|s.
+% \textbf{The dimen registers:}
%
% \begin{macrocode}
- \edef\regstats@counter{\the\count10}
- \edef\regstats@dimen{\the\count11}
- \edef\regstats@skip{\the\count12}
- \edef\regstats@muskip{\the\count13}
- \edef\regstats@box{\the\count14}
- \edef\regstats@toks{\the\count15}
- \edef\regstats@read{\the\count16}
- \edef\regstats@write{\the\count17}
- \edef\regstats@fam{\the\count18}
- \edef\regstats@language{\the\count19}
- \edef\regstats@insert{\the\count20}
- \fi
+ \regstats@regstatA{\regstats@dimen}{255}{32767}%
+ \ifetex\newdimen{\regstatsdimen}\xdef\regstats@dimen{\the\allocationnumber}\fi%
+ \regstats@regstatB{\regstats@dimen}{}{s}%
+ \xdef\regstats@message{\regstats@message\message{ \regstats@dimen\space dimen register\regstats@pl\space%
+ out of \regstats@max\regstats@used\regstats@lft ^^J}}%
+ %
% \end{macrocode}
%
-% |insert|s are used starting with a high number and moving downward.
+% \textbf{The skip registers:}
%
% \begin{macrocode}
- \@tempcnta = 233 \relax
- \advance\@tempcnta by -\regstats@insert%
- \advance\@tempcnta by +1%
- \edef\regstats@insert{\the\@tempcnta}
+ \regstats@regstatA{\regstats@skip}{255}{32767}%
+ \ifetex\newskip\regstatsskip\xdef\regstats@skip{\the\allocationnumber}\fi%
+ \regstats@regstatB{\regstats@skip}{}{s}%
+ \xdef\regstats@message{\regstats@message\message{ \regstats@skip\space skip register\regstats@pl\space%
+ out of \regstats@max\regstats@used\regstats@lft ^^J}}%
+ %
% \end{macrocode}
%
-% \newpage
-% \begin{landscape}
+% \textbf{The muskip registers:}
+%
+% \begin{macrocode}
+ \regstats@regstatA{\regstats@muskip}{255}{32767}%
+ \ifetex\newmuskip\regstatsmuskip\xdef\regstats@muskip{\the\allocationnumber}\fi%
+ \regstats@regstatB{\regstats@muskip}{}{s}%
+ \xdef\regstats@message{\regstats@message\message{ \regstats@muskip\space muskip register\regstats@pl\space%
+ out of \regstats@max\regstats@used\regstats@lft ^^J}}%
+ %
+% \end{macrocode}
+%
+% \textbf{The box registers:}
+%
+% \begin{macrocode}
+ \regstats@regstatA{\regstats@box}{255}{32767}%
+ \ifetex\newbox\regstatsbox\xdef\regstats@box{\the\allocationnumber}\fi%
+ \regstats@regstatB{\regstats@box}{}{s}%
+ \xdef\regstats@message{\regstats@message\message{ \regstats@box\space box register\regstats@pl\space%
+ out of \regstats@max\regstats@used\regstats@lft ^^J}}%
+ %
+% \end{macrocode}
+%
+% \textbf{The toks registers:}
+%
+% \begin{macrocode}
+ \regstats@regstatA{\regstats@toks}{255}{32767}%
+ \ifetex\newtoks\regstatstoks\xdef\regstats@toks{\the\allocationnumber}\fi%
+ \regstats@regstatB{\regstats@toks}{}{s}%
+ \xdef\regstats@message{\regstats@message\message{ \regstats@toks\space toks register\regstats@pl\space%
+ out of \regstats@max\regstats@used\regstats@lft ^^J}}%
+ %
+% \end{macrocode}
+%
+% \textbf{The \textquotedblleft read registers\textquotedblright, i.\,e. input streams:}
+%
+% \begin{macrocode}
+ \regstats@regstatA{\regstats@read}{15}{15}%
+ \ifnum \regstats@free > 0\relax\newread\regstatsread\xdef\regstats@read{\the\allocationnumber}\fi%
+ \regstats@regstatB{\regstats@read}{}{s}%
+ \xdef\regstats@message{\regstats@message\message{ \regstats@read\space input stream\regstats@pl\space (read) %
+ out of \regstats@max\regstats@used\regstats@lft ^^J}}%
+ %
+% \end{macrocode}
+%
+% \phantomsection\label{write}
+% \textbf{The \textquotedblleft write registers\textquotedblright, i.\,e. output streams:}\newline
+% Traditionally, there are $16$~available output streams. Lua\TeX{} increases
+% this to $124$, and the \pkg{morewrites} package even to $65\,250$ for \LaTeX,
+% but not for \hologo{LuaLaTeX}. After write $32\,749\textsuperscript{th}$~write
+% on |\write32767|, morewrites additionally uses one count register
+% for each new write. And after the $65\,250\textsuperscript{th}$~write
+% uses |\count32766|, there is no room for another |\count|,
+% and therefore opening further writes fails.
+%
+% \begin{macrocode}
+ \regstats@regstatA{\regstats@write}{15}{\regs@tsmw}%
+ \ifnum \regstats@free > 0\relax\newwrite\regstatswrite\xdef\regstats@write{\the\allocationnumber}\fi%
+ \regstats@regstatB{\regstats@write}{}{s}%
+ \xdef\regstats@message{\regstats@message\message{ \regstats@write\space output stream\regstats@pl\space (write) %
+ out of \regstats@max\regstats@used\regstats@lft ^^J}}%
+ %
+% \end{macrocode}
+%
+% \phantomsection\label{families}
+% \textbf{The \textquotedblleft fam registers\textquotedblright, i.\,e. math families:}\newline
+% Traditionally, there are $16$~available math families. \hologo{LuaLaTeX} and \XeLaTeX{}
+% increase this to $256$ (at least since the 2015 release of \LaTeXe).
+%
+% \begin{quotation}
+% \TeX{}, or more exactly the 8-bit versions of \TeX, such as \pdfTeX{},
+% have a hard limit of~16 on the number of different math font groups
+% (\cs{fam} or \cs{mathgroup}) that can be used in a single formula. For each symbol font
+% declared (by a package or in the preamble) an extra math group is allocated,
+% and the same happens for each math alphabet, (such as \cs{mathbf}) once it
+% gets used anywhere in the document. Up to now, these math
+% alphabet allocations were permanent, even if they were used only once;
+% the result was that in complex documents you
+% could easily run out of available math font groups.
+% The only remedy for this was to
+% define your own math version, which is a complicated and cumbersome process.
+%
+% This situation has now been improved by the introduction of a new counter
+% \texttt{localmathalphabets}: this counter governs how many of
+% the math group slots are assigned locally when a new math
+% alphabet (and a new math group) is needed.
+%
+% Once the current formula is finished, every such further (local)
+% allocation is undone, giving you a fighting chance of being
+% able to use different new math alphabets in the next formula.
+%
+% The default value of \texttt{localmathalphabets} is 2,
+% but if you need more local alphabets because of the complexity of your
+% document, you can set this to a higher value such as 4 or~5.
+% Setting it even higher is possible, but this would seldom
+% be useful because many group slots will be taken up by
+% symbol fonts and such slots are always permanently allocated,
+% whether used or not.\par
+% \hfill{}(Undo math alphabet allocations if necessary, in:
+% \LaTeX{} News, Issue 34, 2021-11-15)
+% \end{quotation}
+%
+% So the number of math family groups should have become less relevant.\newline
+% |\setcounter{localmathalphabets}{| something larger than 2 |}|
+% might help in case of issues. (|\stressFam| in the example file
+% still does not find more than 15 (or 255 with \hologo{LuaLaTeX})
+% |\fam|s available, because it (intentionally) does not use anything local.
+%
+% \begin{macrocode}
+ \regstats@regstatA{\regstats@fam}{15}{\ifluatex 255 \else 15\fi}%
+ \ifnum \regstats@free > 0\relax\newfam\regstatsfam\xdef\regstats@fam{\the\allocationnumber}\fi%
+ \regstats@regstatB{\regstats@fam}{y}{ies}%
+ \xdef\regstats@message{\regstats@message\message{ \regstats@fam\space math famil\regstats@pl\space (fam) %
+ out of \regstats@max\regstats@used\regstats@lft ^^J}}%
+ %
+% \end{macrocode}
+% \pagebreak
%
-% The number of used registers of each type and the number of available ones
-% (estimated, probably dependent on distribution and its version, here just
-% distinguished according to availability of \eTeX{}) is written
-% to screen and \xfile{log} file. (Additional spaces are just for increased ease
-% of readability of the code and will appear neither at the scree output nor
-% in the \xfile{log}~file.)
+% \textbf{The \textquotedblleft language registers\textquotedblright, i.\,e. language codes:}
%
% \begin{macrocode}
- \message{^^J}
- \message{Here is how much of TeX's registers you used^^J}%
- \message{\space (numbers of available registers are estimated!):^^J}%
- \regstats@regstat{\regstats@counter}{}{s}{233}{32767}
- \message{ \regstats@counter\space counter register\regstats@pl\space out of \regstats@max \regstats@lft ^^J}
- \regstats@regstat{\regstats@dimen}{}{s}{233}{32767}
- \message{ \regstats@dimen\space dimen register\regstats@pl\space out of \regstats@max \regstats@lft ^^J}
- \regstats@regstat{\regstats@skip}{}{s}{233}{32767}
- \message{ \regstats@skip\space skip register\regstats@pl\space out of \regstats@max \regstats@lft ^^J}
- \regstats@regstat{\regstats@muskip}{}{s}{255}{32767}
- \message{ \regstats@muskip\space muskip register\regstats@pl\space out of \regstats@max \regstats@lft ^^J}
- \regstats@regstat{\regstats@box}{}{s}{233}{32767}
- \message{ \regstats@box\space box register\regstats@pl\space out of \regstats@max \regstats@lft ^^J}
- \regstats@regstat{\regstats@toks}{}{s}{255}{32767}
- \message{ \regstats@toks\space toks register\regstats@pl\space out of \regstats@max \regstats@lft ^^J}
- \regstats@regstat{\regstats@read}{}{s}{15}{15}
- \message{ \regstats@read\space input stream\regstats@pl\space (read) out of \regstats@max \regstats@lft ^^J}
- \regstats@regstat{\regstats@write}{}{s}{15}{15}
- \message{ \regstats@write\space output stream\regstats@pl\space (write) out of \regstats@max \regstats@lft ^^J}
- \regstats@regstat{\regstats@fam}{y}{ies}{15}{15}
- \message{ \regstats@fam\space math famil\regstats@pl\space (fam) out of \regstats@max \regstats@lft ^^J}
- \regstats@regstat{\regstats@language}{}{s}{255}{255}
- \message{ \regstats@language\space language code\regstats@pl\space out of \regstats@max \regstats@lft ^^J}
- \regstats@regstat{\regstats@insert}{}{s}{101}{124}
- \message{ \regstats@insert\space insertion\regstats@pl\space out of \regstats@max \regstats@lft ^^J}
+ \regstats@regstatA{\regstats@language}{255}{255}%
+ \ifnum \regstats@free > 0\relax\newlanguage\regstatslanguage\xdef\regstats@language{\the\allocationnumber}\fi%
+ \regstats@regstatB{\regstats@language}{}{s}%
+ \xdef\regstats@message{\regstats@message\message{ \regstats@language\space language code\regstats@pl\space%
+ out of \regstats@max\regstats@used\regstats@lft ^^J}}%
+ %
% \end{macrocode}
%
+% \phantomsection\label{insertions}%
+% \textbf{The \textquotedblleft insert registers\textquotedblright, i.\,e. insertions:}\newline
+% \textquotedblleft Inserts are given numbers $254$, $253$, etc.,
+% since they require a |\count|, |\dimen|, |\skip|, and |\box|
+% all with the same number\textquotedblright{} (source2e.pdf,
+% File~b: ltplain.dtx Date:~2022-01-25 Version~v2.3h, has bugs, are fixed in dev 2023-04-04 v2.3h (i?)).\newline
+% Because counter, dimen, skip, and box registers are also used independently
+% from inserts, it can be expected to have no room for a new insert long before
+% the 255 inserts are used.\medskip
+%
+% When testing, the first |\newinsert| registered into |\insert199|,
+% followed by |\insert198|, \ldots, |\insert194|, and then apparently some
+% |\count|, |\dimen|, |\skip|, or |\box| register was not available for
+% |\insert193|. Therefore the |\newinsert| registered into |\insert252|,
+% followed by |\insert251|, \ldots, |\insert201|, and then the already
+% used insert registers were reached and there was
+% |! No room for a new \insert|.\medskip
+%
+% With \hologo{LuaLaTeX} after |\insert192| the next |\newinsert| registered
+% into |\insert252|, followed by |\insert251|, \ldots, |\insert201|,
+% and then the next |\newinsert| registered into |\insert65534|,
+% followed by |\insert65533|, \ldots, |\insert244|, and then there was
+% |! No room for a new \count| -- mark it: |\count|, not |insert|.
+% The inserts |\insert252| to |\insert244| seem to have been use twice
+% and the inserts |\insert243|ff. not used twice only because no |\count|
+% was available for them.\medskip
+%
+% Historic versions of \LaTeX{} were limited to less registers,
+% therefore it was possible to |\usepackage{etex} \reserveinserts{17}|,
+% in order to reserve room for up to 17 (or another number given)
+% additional insertion classes, that will not be taken away by
+% |\newcount|, |\newdimen|, |\newskip|, or |\newbox|.
+% For resent \LaTeX-versions this is neither necessary nor recommendable:
+% do not use the etex-package.\medskip
+%
+% When the inserts are needed for floats, the
+% \href{https://ctan.org/pkg/morefloats}{morefloats} package can be used
+% to \textquotedblleft increased the number of inserts available
+% to the float mechanism\textquotedblright{} (\url{https://texfaq.org/FAQ-noroom}%
+% \ at 2023-04-02). At the last given url \textquotedblleft No room for a new
+% \guillemetright thing\guillemetleft\textquotedblright{} is treated.
+%
+% \begin{macrocode}
+ \ifx\regst@tsNoeTeX\relax%
+ \newinsert\regstatsinsert%
+ \xdef\regstats@insert{\the\allocationnumber}%
+ \xdef\regstats@max{200}%
+ \ifnum \regstats@insert < \regstats@max\relax%
+ \xdef\regstats@free{\regstats@insert}%
+ \@tempcnta=200\relax%
+ \advance\@tempcnta by -\regstats@insert\relax%
+ \xdef\regstats@insert{\the\@tempcnta}%
+ \regstats@regstatB{\regstats@insert}{}{s}%
+ \xdef\regstats@message{\regstats@message\message{ \regstats@insert\space insertion\regstats@pl\space%
+ out of \regstats@max\regstats@used\regstats@lft ^^J}}%
+ \else%
+ \ifnum \regstats@insert = 200\relax%
+ \xdef\regstats@message{\regstats@message\message{Number of insertions could not be calculated. ^^J}}%
+ \else%
+ \ifnum % \regstats@insert > 200 AND %
+ \regstats@insert < 253\relax%
+ \@tempcnta=253\relax%
+ \advance\@tempcnta by -\regstats@insert\relax%
+ \@tempcntb=-200\relax%
+ \advance\@tempcntb by \regstats@insert\relax%
+ \ifluatex%
+ \@tempcntb=-65534\relax%
+ \advance\@tempcntb by \regstats@insert\relax%
+ \xdef\regstats@message{\regstats@message\message{at least \the\@tempcnta\space insertions out of 253 used, %
+ about 65 000 left ^^J}}%
+ \else%
+ \xdef\regstats@message{\regstats@message\message{at least \the\@tempcnta\space insertions out of 253 used, %
+ maybe \the\@tempcntb\space left ^^J}}%
+ \fi%
+ \else% \regstats@insert > 252, LuaTeX
+ \@tempcntb=65534\relax%
+ \advance\@tempcntb by -\regstats@insert\relax%
+ \advance\@tempcntb by -253\relax%
+ \xdef\regstats@message{\regstats@message\message{a lot of insertions out of 65 534 used, %
+ about \the\@tempcntb\space left ^^J}}%
+ \fi%
+ \fi%
+ \fi%
+ \else%
+ \xdef\regstats@max{101}%
+ \@tempcnta=\regstats@max\relax%
+ \advance\@tempcnta by -\regstats@insert\relax%
+ \xdef\regstats@insert{\the\@tempcnta}%
+ \@tempcnta=\regstats@max\relax%
+ \advance\@tempcnta by -\regstats@insert\relax%
+ \xdef\regstats@free{\the\@tempcnta}%
+ \regstats@regstatB{\regstats@insert}{}{s}%
+ \xdef\regstats@message{\regstats@message\message{ \regstats@insert\space insertion\regstats@pl\space out of %
+ \regstats@max\regstats@used\regstats@lft ^^J}}%
+ \xdef\regstats@message{\regstats@message\message{* The number of available inserts might be increased by using %
+ \string\reserveinserts .^^J}}%
+ \fi%
+% \end{macrocode}
+%
+% The construction of the message is now finished, the message is delivered:
+%
+% \begin{macrocode}
+ \regstats@message%
+% \end{macrocode}
% \pagebreak
-% \end{landscape}
+%
+% A note about morewrites:
+%
+% \begin{macrocode}
+ \ifluatex%
+ \else%
+ \def\regs@wmst{16}%
+ \ifx\regs@tsmw\regs@wmst\relax%
+ \message{The morewrites package was not loaded.^^J}%
+ \message{\space With recent LaTeX and morewrites about 32 766 output streams would be available.^^J}%
+ \fi%
+ \fi%
+% \end{macrocode}
+%
+% If neither \eTeX{} nor the e-\TeX-package was found,
+% the respective warning is given:
+%
+% \begin{macrocode}
+ \regst@tsNoeTeX%
+% \end{macrocode}
%
% When option |timer| (or |timer=true|) was used, the \xpackage{regstats} package
% additionally gives the time, which was needed for the (last) compilation (run).
@@ -959,156 +1177,155 @@ option \texttt{timer} is not demonstrated very spectacular.
% \xpackage{regstats} package, but this would have no effect for the use of
% |\pdfresettimer| before this package is called. Because this package
% should be called as late as immediately before |\begin{document}|, this would mean
-% that resetting would be possible during the whole loading of all packages.\\
+% that resetting would be possible during the whole loading of all packages.
%
% |\pdfelapsedtime| is not available when |lua(la)tex| is used instead of
% |pdf(la)tex| to compile the document. In that case at the very beginning
% of your \xfile{tex} file say\\
% \verb|\directlua{starttime = os.clock()}|\\
% (even before |\documentclass|!), and the \texttt{timer} option can also
-% be used with |lualatex|. When neither |lualatex| nor |pdflatex| is used to
+% be used with \hologo{LuaLaTeX}. When neither |lualatex| nor |pdflatex| is used to
% compile the document, the timer(-option) does not work.
%
% \begin{macrocode}
- \regst@ts@timer
- }%
- }%
- }%
- }%
+ \regst@ts@timer%
}%
- }%
}
-
% \end{macrocode}
-%
% \begin{macrocode}
%</package>
% \end{macrocode}
-%
-% \newpage
+% \pagebreak
%
% \section{Installation}
-%
-% \subsection{Downloads\label{ss:Downloads}}
-%
-% Everything is available at \CTAN{}, \url{http://www.ctan.org/tex-archive/},
+% \subsection{Downloads}
+% Everything is available at \url{https://ctan.org},
% but may need additional packages themselves.\\
%
% \DescribeMacro{regstats.dtx}
-% For unpacking the |regstats.dtx| file and constructing the documentation it is required:
+% For unpacking the |regstats.dtx| file and constructing the documentation
+% it is required:
% \begin{description}
-% \item[-] \TeX Format \LaTeXe{}: \url{http://www.CTAN.org/}
+% \item[-] \TeX-Format \LaTeXe{}: \url{https://www.CTAN.org/}
%
-% \item[-] document class \xpackage{ltxdoc}, 2007/11/11, v2.0u,\\
-% \CTAN{macros/latex/base/ltxdoc.dtx}
+% \item[-] document class \xpackage{ltxdoc}, 2022/06/22, v2.1i, \url{https://ctan.org/pkg/ltxdoc}
%
-% \item[-] package \xpackage{pdflscape}, 2008/08/11, v0.10,
-% \url{http://ctan.org/pkg/pdflscape}
+% \item[-] package \xpackage{geometry}, 2020/01/02, v5.9, \url{https://ctan.org/pkg/geometry}
%
-% \item[-] package \xpackage{holtxdoc}, 2011/02/04, v0.21,
-% \url{http://ctan.org/pkg/holtxdoc}
+% \item[-] package \xpackage{holtxdoc}, 2019/12/09, v0.30, \url{https://ctan.org/pkg/holtxdoc}
%
-% \item[-] package \xpackage{hypdoc}, 2010/03/26, v1.9,
-% \url{http://ctan.org/pkg/hypdoc}
+% \item[-] package \xpackage{fontenc}, 2021/04/29, v2.0v, \url{https://ctan.org/pkg/fontenc}
% \end{description}
%
% \DescribeMacro{regstats.sty}
-% The \texttt{regstats.sty} for \LaTeXe{} (i.\,e.~each document using
+% The |regstats.sty| for \LaTeXe{} (i.\,e.~each document using
% the \xpackage{regstats} package) requires:
% \begin{description}
-% \item[-] \TeX Format \LaTeXe{}, \url{http://www.CTAN.org/}
+% \item[-] \TeX Format \LaTeXe{}, \url{https://www.CTAN.org/}
%
-% \item[-] package \xpackage{kvoptions}, 2010/12/23, v3.10,
-% \url{http://ctan.org/pkg/kvoptions}
+% \item[-] package \xpackage{kvoptions}, 2010/12/23, v3.10, \url{http://ctan.org/pkg/kvoptions}
%
-% \item[-] package \xpackage{atveryend}, 2011/06/30, v1.8,
-% \url{http://ctan.org/pkg/atveryend}
+% \item[-] package \xpackage{iftex}, \url{http://ctan.org/pkg/iftex}, or, if that is not available,
+% \begin{description}
+% \item[+] package \xpackage{ifpdf}, \url{http://ctan.org/pkg/ifpdf}
+% \item[+] package \xpackage{ifetex}, \url{http://ctan.org/pkg/ifetex}
+% \item[+] package \xpackage{ifluatex}, \url{http://ctan.org/pkg/ifluatex}
+% \end{description}
+%
+% \item[-] only for old \LaTeX-formats the \xpackage{atveryend} package is used,
+% \url{https://ctan.org/pkg/atveryend}, otherwise that package is not loaded but
+% the new hook management is used.
+%
+% \item[-] package \xpackage{regstats}, 2023-03-03, v1.1a, \url{https://ctan.org/pkg/regstats}\\
+% (Because you are reading the documentation for the
+% \xpackage{pagecolor} package, it can be assumed that you already
+% have some version of it~-- is it the current one?)
% \end{description}
%
% When option |timer| is used, additionally
% \begin{description}
-% \item[-] package \xpackage{intcalc}, 2007/09/27, v1.1,
-% \url{http://ctan.org/pkg/intcalc}
-%
-% \item[-] package \xpackage{ifluatex}, 2010/03/01, v1.3,
-% \url{http://ctan.org/pkg/ifluatex}
-%
-% \item[-] package \xpackage{ifpdf}, 2011/01/30, v2.3,
-% \url{http://ctan.org/pkg/ifpdf}
+% \item[-] package \xpackage{intcalc}, \url{https://ctan.org/pkg/intcalc}
% \end{description}
-% are needed.\\
+% is needed.\\
%
% \DescribeMacro{regstats-example.tex}
-% The \texttt{regstats-example.tex} requires the same files as all
-% documents using the \xpackage{regstats} package, i.\,e. the ones
-% named above and additionally:
+% The |regstats-example.tex| requires the same files as all
+% documents using the \xpackage{regstats} package
+% (see preceding paragraph |regstats.sty|) and additionally:
% \begin{description}
-% \item[-] class \xpackage{article}, 2007/10/19, v1.4h, from \xpackage{classes.dtx}:\\
-% \CTAN{macros/latex/base/classes.dtx}
-%
-% \item[-] package \xpackage{regstats}, 2012/01/07, v1.0h,
-% \url{http://ctan.org/pkg/regstats}\\
-% (Well, it is the example file for this package, and because you are reading the
-% documentation for the \xpackage{regstats} package, it can be assumed that you already
-% have some version of it -- is it the current one?)
+% \item[-] class \xpackage{article}, 2022/07/02, v1.4n, from \xpackage{classes}: %
+% \url{https://ctan.org/pkg/classes}
% \end{description}
%
% \DescribeMacro{Alternative}
-% As possible alternative in section \ref{sec:Alternatives} there is listed
+% \DescribeMacro{regcount}
+% As possible alternative in section~\ref{sec:Alternatives} there is listed
% \begin{description}
-% \item[-] \xpackage{regcount}, 1999/08/03, v1.0:
-% \url{http://www.ctan.org/pkg/regcount}
+% \item[-] package \xpackage{regcount}, 1999/08/03, v1.0, \url{https://ctan.org/pkg/regcount},
+% which gives the wrong number for insertions, because it uses |\the\count20|,
+% but insertions are \emph{not} allocated from 0 upwards but starting at a higher number moving downward
+% (and having some jumps to other number ranges, see \hbox{p. \pageref{insertions}).}
% \end{description}
%
-% \pagebreak
-%
% \DescribeMacro{Oberdiek}
% \DescribeMacro{holtxdoc}
% \DescribeMacro{kvoptions}
-% \DescribeMacro{atveryend}
-% \DescribeMacro{ifluatex}
-% \DescribeMacro{ifpdf}
-% \DescribeMacro{intcalc}
-% \DescribeMacro{ltxcmds}
-% \DescribeMacro{pdflscape}
-% All packages of \textsc{Heiko Oberdiek's} bundle `oberdiek'
-% (especially \xpackage{holtxdoc}, \xpackage{kvoptions}, \xpackage{atveryend},
-% \xpackage{ifluatex}, \xpackage{ifpdf}, \xpackage{intcalc}, \xpackage{ltxcmds},
-% and \xpackage{pdflscape}) are also available in a TDS compliant ZIP archive:\\
-% \CTAN{install/macros/latex/contrib/oberdiek.tds.zip}.\\
+% All packages of the `oberdiek' bundle
+% (especially \xpackage{holtxdoc} and \xpackage{kvoptions})
+% are also available in a TDS compliant ZIP archive:\newline
+% \url{https://mirror.ctan.org/install/macros/latex/contrib/oberdiek.tds.zip}.
% It is probably best to download and use this, because the packages in there
-% are quite probably both recent and compatible among themselves.\\
-%
-% \vskip 1.2cm
+% are quite probably both recent and compatible among themselves.
%
% \DescribeMacro{hyperref}
% \noindent \xpackage{hyperref} is not included in that bundle and needs to be
-% downloaded separately,\\
-% \url{http://mirror.ctan.org/install/macros/latex/contrib/hyperref.tds.zip}.\\
+% downloaded separately,\newline
+% \url{https://mirror.ctan.org/install/macros/latex/contrib/hyperref.tds.zip}.
+%
+% \DescribeMacro{atveryend}
+% \noindent \xpackage{atveryend} is only loaded for and used with old \LaTeX-formats,
+% otherwise that package is not loaded but the new hook management is used.
+% The \xpackage{atveryend} package is available from
+% \url{https://mirrors.ctan.org/macros/latex/contrib/atveryend.zip}
+%
+% \DescribeMacro{intcalc}
+% \noindent \xpackage{intcalc} is available from
+% \url{https://mirrors.ctan.org/install/macros/latex/contrib/intcalc.tds.zip}.
+%
+% \DescribeMacro{iftex}
+% \DescribeMacro{ifetex}
+% \DescribeMacro{ifluatex}
+% \DescribeMacro{ifpdf}
+% \noindent \xpackage{iftex} is available from
+% \url{https://mirrors.ctan.org/install/macros/generic/iftex.tds.zip},
+% its predecessors \xpackage{ifetex}, \xpackage{ifluatex}, and \xpackage{ifpdf}
+% are no longer officially available for separate download.
%
-% \DescribeMacro{M\"{u}nch}
+% \vskip 1cm
+%
+% \DescribeMacro{Münch}
% A hyperlinked list of my (other) packages can be found at
-% \url{http://www.Uni-Bonn.de/~uzs5pv/LaTeX.html}.\\
+% \url{https://ctan.org/author/muench-hm}.\\
%
% \subsection{Package, unpacking TDS}
-%
-% \paragraph{Package.} This package is available on \CTAN{}
+% \paragraph{Package.} This package is available on \url{https://www.CTAN.org}.
% \begin{description}
-% \item[\CTAN{macros/latex/contrib/regstats/regstats.dtx}]\hspace*{0.1cm} \\
+% \item[\url{https://mirror.ctan.org/macros/latex/contrib/regstats/regstats.dtx}]\ %
% The source file.
-% \item[\CTAN{macros/latex/contrib/regstats/regstats.pdf}]\hspace*{0.1cm} \\
+% \item[\url{https://mirror.ctan.org/macros/latex/contrib/regstats/regstats.pdf}]\ %
% The documentation.
-% \item[\CTAN{macros/latex/contrib/regstats/regstats-example.pdf}]\hspace*{0.1cm} \\
-% The compiled example file, as it should look like.
-% \item[\CTAN{macros/latex/contrib/regstats/regstats-example.log}]\hspace*{0.1cm} \\
+% \item[\url{https://mirror.ctan.org/macros/latex/contrib/regstats/regstats-example.pdf}]\ %
+% The compiled example file.
+% \item[\url{https://mirror.ctan.org/macros/latex/contrib/regstats/regstats-example.log}]\ %
% A \xfile{log} file for the example.
-% \item[\CTAN{macros/latex/contrib/regstats/README}]\hspace*{0.1cm} \\
+% \item[\url{https://mirror.ctan.org/macros/latex/contrib/regstats/README}]\ %
% The README file.
% \end{description}
-% There is also a regstats.tds.zip available:
+%
+% There is also a |regstats.tds.zip| available:
% \begin{description}
-% \item[\CTAN{install/macros/latex/contrib/regstats.tds.zip}]\hspace*{0.1cm} \\
-% Everything in \xfile{TDS} compliant, compiled format.
+% \item[\url{https://mirror.ctan.org/install/macros/latex/contrib/regstats.tds.zip}]\ %
+% Everything in TDS compliant, compiled format.
% \end{description}
% which additionally contains\\
% \begin{tabular}{ll}
@@ -1121,11 +1338,11 @@ option \texttt{timer} is not demonstrated very spectacular.
%
% \bigskip
%
-% \noindent For required other packages, see the preceding subsection.
+% \noindent For required other packages please see the preceding subsection.
%
% \paragraph{Unpacking.} The \xfile{.dtx} file is a self-extracting
% \docstrip{} archive. The files are extracted by running the
-% \xfile{.dtx} through \plainTeX{}:
+% \xext{dtx} through \plainTeX{}:
% \begin{quote}
% \verb|tex regstats.dtx|
% \end{quote}
@@ -1205,18 +1422,17 @@ option \texttt{timer} is not demonstrated very spectacular.
% \usebox0
% \fi
% \end{quote}
-% If you have a \xfile{docstrip.cfg} that configures and enables \docstrip{}'s
-% \xfile{TDS} installing feature, then some files can already be in the right
+% If you have a \xfile{docstrip.cfg} that configures and enables \docstrip's
+% TDS installing feature, then some files can already be in the right
% place, see the documentation of \docstrip{}.
%
% \subsection{Refresh file name databases}
%
-% If your \TeX{}~distribution (\teTeX{}, \mikTeX{},\dots{}) relies on file name
-% databases, you must refresh these. For example, \teTeX{} users run
-% \verb|texhash| or \verb|mktexlsr|.
+% If your \TeX~distribution (\TeX\,Live, \mikTeX, \dots) relies on
+% file name databases, you must refresh these. For example, \TeX\,Live\ users
+% run \verb|texhash| or \verb|mktexlsr|.
%
% \subsection{Some details for the interested}
-%
% \paragraph{Unpacking with \LaTeX{}.}
% The \xfile{.dtx} chooses its action depending on the format:
% \begin{description}
@@ -1224,7 +1440,7 @@ option \texttt{timer} is not demonstrated very spectacular.
% \item[\LaTeX:] Generate the documentation.
% \end{description}
% If you insist on using \LaTeX{} for \docstrip{} (really,
-% \docstrip{} does not need \LaTeX{}), then inform the autodetect routine
+% \docstrip{} does not need \LaTeX ), then inform the auto-detect routine
% about your intention:
% \begin{quote}
% \verb|latex \let\install=y\input{regstats.dtx}|
@@ -1242,7 +1458,7 @@ option \texttt{timer} is not demonstrated very spectacular.
% \end{quote}
%
% \noindent An example follows how to generate the
-% documentation with \pdfLaTeX{}:
+% documentation with \pdfLaTeX :
%
% \begin{quote}
%\begin{verbatim}
@@ -1264,53 +1480,41 @@ option \texttt{timer} is not demonstrated very spectacular.
%
% \section{Acknowledgements}
%
-% I would like to thank \textsc{Heiko Oberdiek} for providing
-% the \xpackage{hyperref}, \xpackage{holtxdoc}, \xpackage{kvoptions},
-% \xpackage{atveryend}, \xpackage{ifluatex}, \xpackage{ifpdf},
-% \xpackage{intcalc}, \xpackage{ltxcmds}, and \xpackage{pdflscape}
-% as well as a~lot~(!) of other useful packages (from which I also got everything
-% I know about creating a file in \xext{dtx} format, ok, say it: copying),
-% \textsc{Jean-Pierre F. Drucbert} for his \xpackage{regcount} package,
-% \textsc{Robin Fairbairns} for pointing me to the \xpackage{regcount} package,
-% and the \Newsgroup{comp.text.tex} and \Newsgroup{de.comp.text.tex}
-% newsgroups as well as \url{http://tex.stackexchange.com}
-% for their help in all things \TeX{}.
-%
-% \bigskip
+% I would like to thank \textsc{Heiko Oberdiek} for providing a lot of
+% useful packages (from which I also got everything I know about creating
+% a file in \xext{dtx} format, OK, say it: copying),
+% \textsc{Jean-Pierre F. Drucbert}~(\textdied) for his \xpackage{regcount} package,
+% \textsc{Robin Fairbairns} for pointing me to the \xpackage{regcount} package.
%
% \phantomsection
% \begin{History}\label{History}
% \begin{Version}{2011/05/14 v1.0a}
-% \item Upload to \CTAN{}.
+% \item Upload to CTAN.
% \end{Version}
% \begin{Version}{2011/05/16 v1.0b}
-% \item Name clash with \xfile{regcount} package, fixed.
+% \item Fixed a name clash with \xfile{regcount} package.
% \item \xfile{regcount} package listed as possible alternative.
-% \item Bug: skip and muskip mixed up, fixed.
+% \item Bug: |skip| and |muskip| mixed up, fixed.
% \item Counting of skips, math families, and insertions added.
% \item Bug fix: insertions are numbered high to low.
-% \item Option |proof| added.
-% \item Diverse details.
+% \item Option |proof| added [obsolete now].
% \end{Version}
% \begin{Version}{2011/06/08 v1.0c}
% \item Bug Fix: Number of available |\skip| registers with \eTeX{}.
% \item Change in \eTeX{}-detection.
% \item New option |left|.
-% \item Minor details.
% \end{Version}
% \begin{Version}{2011/06/18 v1.0d}
-% \item Bug Fix: Information about used registers/counter fixed.
+% \item Bug Fix: Information about used registers/counters fixed.
% \item New option |timer|.
-% \item Some details.
% \end{Version}
% \begin{Version}{2011/08/22 v1.0e}
% \item The information about the used registers is now presented even later.
% \item Quite some details in the documentation.
-% \item Updated to \TeX{}live2011.
% \item Hot fix: \TeX{} 2011/06/27 has changed |\enddocument| and
% thus broken the |\AtVeryVeryEnd| command/hooking
% of \xpackage{atveryend} package as of 2011/04/23, v1.7.
-% Until it is fixed, |\AtEndAfterFileList| is used.
+% Until it is fixed, |\AtEndAfterFileList| \emph{was} used.
% \end{Version}
% \begin{Version}{2011/08/23 v1.0f}
% \item The \xpackage{atveryend} package was fixed (2011/06/30, v.1.8).
@@ -1320,15 +1524,15 @@ option \texttt{timer} is not demonstrated very spectacular.
% works with the old version, the information is just presented
% a little bit earlier during compilation, thus theoretically
% there could be missed some register use after that information,
-% which would be obvious in the \xfile{log}-file.
-% \item New \xpackage{hyperref} package used for the documentation.
+% which would be obvious in the \xfile{log}-file.~--
+% [\xpackage{atveryend} is no longer used after v1.0i of regstats,
+% when a recent \LaTeX-format with hook-management is used.]
% \end{Version}
% \begin{Version}{2012/01/01 v1.0g}
-% \item Now supports (but does not require) |lua(la)tex| for
-% option \texttt{timer}.
+% \item Now supports (but does not require) \hologo{LuaLaTeX} for option \texttt{timer}.
% \item Bug fix: wrong path given in the documentation, fixed.
% \item Due to the use of temporary counters, no longer a new counter is used
-% (except when option \texttt{proof=true} is chosen, of course).
+% (except when option \texttt{proof=true} is chosen, of course). [deprecated now]
% \item Circumvention of the incompatibility of the \xpackage{atveryend}
% package with \xclass{seminar} class and \xpackage{slidesec} package
% introduced.
@@ -1336,7 +1540,24 @@ option \texttt{timer} is not demonstrated very spectacular.
% \end{Version}
% \begin{Version}{2012/01/07 v1.0h}
% \item Bug fix: |\ifluatex| undefined without \xpackage{ifluatex} leads to wrong
-% association of |\else|\ldots|\fi|. Fixed by moving |\ifregstats@timer|.
+% association of |\else|\ldots|\fi|. Fixed by moving |\ifregstats@timer|.
+% \end{Version}
+% \begin{Version}{2012/04/01 v1.0i}
+% \item Bug fix: removed |.| before |on line|.
+% \item Bug fix: removed a |\pagebreak| after the first line of a page
+% from the documentation.
+% \item Bug fix: added a lot of |%|-signs at the end of lines in the code.
+% \item This version has been archived at
+% \url{https://web.archive.org/web/20170107053910/https://mirrors.ctan.org/install/macros/latex/contrib/regstats.tds.zip}.
+% \end{Version}
+% \begin{Version}{2023-04-04 v1.1a}
+% \item No longer uses the \pkg{atveryend} package for new \LaTeX-format but its hook-management.
+% \item No longer uses the \pkg{ltxcmds} package (but it is still loaded by the \xpackage{kvoptions} package).
+% \item No longer uses the deprecated |\BeforeClearDocument|.
+% \item Option proof is now deprecated.
+% \item Converted to UTF-8.
+% \item Added |\stress...| commands to the example.
+% \item Updates to documentation and README.
% \end{Version}
% \end{History}
%
@@ -1345,7 +1566,7 @@ option \texttt{timer} is not demonstrated very spectacular.
% When you find a mistake or have a suggestion for an improvement of this package,
% please send an e-mail to the maintainer, thanks! (Please see BUG REPORTS in the README.)
%
-% \pagebreak
+% \bigskip
%
% \PrintIndex
%
diff --git a/macros/latex/contrib/regstats/regstats.pdf b/macros/latex/contrib/regstats/regstats.pdf
index 2cfc3203f1..61cb1ecd79 100644
--- a/macros/latex/contrib/regstats/regstats.pdf
+++ b/macros/latex/contrib/regstats/regstats.pdf
Binary files differ