summaryrefslogtreecommitdiff
path: root/macros/latex/contrib
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib')
-rw-r--r--macros/latex/contrib/dijkstra/README4
-rw-r--r--macros/latex/contrib/dijkstra/dijkstra-fr.pdfbin369070 -> 155405 bytes
-rw-r--r--macros/latex/contrib/dijkstra/dijkstra-fr.tex102
-rw-r--r--macros/latex/contrib/dijkstra/dijkstra.sty154
-rw-r--r--macros/latex/contrib/flexipage/README.txt8
-rw-r--r--macros/latex/contrib/flexipage/flexipage.dtx24
-rw-r--r--macros/latex/contrib/flexipage/flexipage.pdfbin267815 -> 269146 bytes
-rw-r--r--macros/latex/contrib/iexec/LICENSE.txt21
-rw-r--r--macros/latex/contrib/iexec/README.md5
-rw-r--r--macros/latex/contrib/iexec/iexec.dtx284
-rw-r--r--macros/latex/contrib/iexec/iexec.ins55
-rw-r--r--macros/latex/contrib/iexec/iexec.pdfbin124370 -> 284051 bytes
-rw-r--r--macros/latex/contrib/iexec/iexec.sty77
-rw-r--r--macros/latex/contrib/iexec/iexec.tex89
-rw-r--r--macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdfbin834268 -> 852659 bytes
-rw-r--r--macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex208
-rw-r--r--macros/latex/contrib/proflycee/tex/ProfLycee.sty153
-rw-r--r--macros/latex/contrib/teubner/README19
-rw-r--r--macros/latex/contrib/teubner/teubner-doc.pdfbin433138 -> 431632 bytes
-rw-r--r--macros/latex/contrib/teubner/teubner-doc.tex2
-rw-r--r--macros/latex/contrib/teubner/teubner.dtx6
-rw-r--r--macros/latex/contrib/teubner/teubner.pdfbin670825 -> 670679 bytes
-rw-r--r--macros/latex/contrib/teubner/teubner.txt20
23 files changed, 897 insertions, 334 deletions
diff --git a/macros/latex/contrib/dijkstra/README b/macros/latex/contrib/dijkstra/README
index f49d8f82cf..8b431e72fd 100644
--- a/macros/latex/contrib/dijkstra/README
+++ b/macros/latex/contrib/dijkstra/README
@@ -3,9 +3,9 @@ ___________________________________
L'extension
dijkstra
- v0.12
+ v0.13
- 25 juin 2020
+ 1er octobre 2022
___________________________________
Authors : Christian Tellechea
diff --git a/macros/latex/contrib/dijkstra/dijkstra-fr.pdf b/macros/latex/contrib/dijkstra/dijkstra-fr.pdf
index 84308d0026..f2df774faa 100644
--- a/macros/latex/contrib/dijkstra/dijkstra-fr.pdf
+++ b/macros/latex/contrib/dijkstra/dijkstra-fr.pdf
Binary files differ
diff --git a/macros/latex/contrib/dijkstra/dijkstra-fr.tex b/macros/latex/contrib/dijkstra/dijkstra-fr.tex
index ec76559db9..8b408e11b8 100644
--- a/macros/latex/contrib/dijkstra/dijkstra-fr.tex
+++ b/macros/latex/contrib/dijkstra/dijkstra-fr.tex
@@ -1,16 +1,14 @@
-% !TeX encoding = ISO-8859-1
+% !TeX TS-program = lualatex
+% !TeX encoding = UTF-8
% Ceci est la documentation du package "dijkstra"
%
-% Fichier compilé avec pdflatex
\documentclass[french,a4paper,10pt]{article}
-\usepackage[latin1]{inputenc}
-\usepackage[T1]{fontenc}
\usepackage[margin=1cm]{geometry}
\usepackage[bottom]{footmisc}
-\usepackage{libertine,boites,tikz,enumitem,MnSymbol,babel,xspace,listings,dijkstra}
+\usepackage{libertine,boites,tikz,enumitem,babel,xspace,listings,dijkstra}
\usetikzlibrary{arrows.meta}
-\usepackage[scaled=0.85]{luximono}
-\frenchbsetup{og=«,fg=»}
+\usepackage[scaled=0.8]{GoMono}
+\frenchbsetup{og=«,fg=»}
\def\DIJK{\texttt{\dijkname}\xspace}
\makeatletter
\def\code{\expandafter\code@i\string}
@@ -101,7 +99,7 @@
\catcode`\<13 \catcode`\>13 \def<{\begingroup$\langle$\itshape}\def>{$\rangle$\endgroup}%
\@ifstar\@sverb\@verb}
\endgroup
-\def\longfrdijkdate@i#1/#2/#3\@nil{\number#3\relax\space \ifcase#2 \or janvier\or février\or mars\or avril\or mai\or juin\or juillet\or aout\or septembre\or octobre\or novembre\or décembre\fi\space#1}
+\def\longfrdijkdate@i#1/#2/#3\@nil{\number#3\relax\space \ifcase#2 \or janvier\or février\or mars\or avril\or mai\or juin\or juillet\or aout\or septembre\or octobre\or novembre\or décembre\fi\space#1}
\edef\longfrdijkdate{\expandafter\longfrdijkdate@i\dijkdate\@nil}
\makeatother
\begingroup
@@ -111,7 +109,7 @@
\hbox to .25\linewidth{%
\color{teal}\bfseries\ttfamily
\detokenize{#1}=$\langle$\detokenize{#2}$\rangle$\hss}\kern2.5em
- (\textit{Défaut} : {\color{teal}\ttfamily
+ (\textit{Défaut} : {\color{teal}\ttfamily
\skv_eearg\skv_ifempty{\useKV[\dijkname]{#1}}
{$\langle$vide$\rangle$}
{"\detokenize\expandafter\expandafter\expandafter{\useKV[\dijkname]{#1}}"}})%
@@ -136,12 +134,12 @@
\endgroup
\vskip2cm
\leftskip=.2\linewidth \rightskip=.2\linewidth \small
- Cette petite extension met en \oe uvre l'algorithme de Dijkstra pour des graphes pondérés, orientés ou non : le tableau de recherche du plus court chemin peut être affiché, la distance minimale entre deux sommets et le chemin correspondant sont stockés dans des macros.
+ Cette petite extension met en \oe uvre l'algorithme de Dijkstra pour des graphes pondérés, orientés ou non : le tableau de recherche du plus court chemin peut être affiché, la distance minimale entre deux sommets et le chemin correspondant sont stockés dans des macros.
\end{titlepage}
\parindent0pt
\section{Un exemple}
-Dans le graphe \emph{non orienté} suivant, quel est le plus court chemin pour aller de A à F ?
+Dans le graphe \emph{non orienté} suivant, quel est le plus court chemin pour aller de A à F ?
\begin{center}
\begin{tikzpicture}[scale=1.75]
@@ -169,7 +167,7 @@ Dans le graphe \emph{non orienté} suivant, quel est le plus court chemin pour al
\end{center}
\paragraph{Lire le graphe}
-Pour trouver le plus court chemin pour aller de A à F, il faut d'abord lire le graphe. Comme il est fréquent que les graphes soient peu peuplés, j'ai pris le parti de définir un graphe par une liste d'adjacence. Ainsi, la macro \verb|\readgraph|, qui va lire le graphe, admet comme argument obligatoire une liste d'adjacence :
+Pour trouver le plus court chemin pour aller de A à F, il faut d'abord lire le graphe. Comme il est fréquent que les graphes soient peu peuplés, j'ai pris le parti de définir un graphe par une liste d'adjacence. Ainsi, la macro \verb|\readgraph|, qui va lire le graphe, admet comme argument obligatoire une liste d'adjacence :
\code/\readgraph{
A [B=7, D=15],
@@ -179,11 +177,11 @@ Pour trouver le plus court chemin pour aller de A à F, il faut d'abord lire le g
E [F=14]
}/
-Les espaces sont ignorés de part et d'autre des noms des sommets, des crochets (ouvrants et fermants), des signes «\verb/=/» et des virgules. Ainsi, ce n'est que dans les noms des sommets que les espaces ne sont pas ignorés : par exemple, le sommet «\verb|A 1|» est distinct du sommet «\verb*|A1|».
+Les espaces sont ignorés de part et d'autre des noms des sommets, des crochets (ouvrants et fermants), des signes «\verb/=/» et des virgules. Ainsi, ce n'est que dans les noms des sommets que les espaces ne sont pas ignorés : par exemple, le sommet «\verb|A 1|» est distinct du sommet «\verb*|A1|».
\paragraph{Conditions sur les distances}
-Les distances entre sommets \emph{doivent} être positives, c'est une limitation intrinsèque à l'algorithme de Dijkstra pour qu'il fonctionne sans erreur. La méthode de programmation utilisée dans cette extension exige de plus que ces distances soient des nombres \emph{entiers}.\medbreak
-Une fois que le graphe a été lu, celui-ci est rendu \emph{non orienté} en interne et donc en coulisses, la liste d'adjacence devient
+Les distances entre sommets \emph{doivent} être positives, c'est une limitation intrinsèque à l'algorithme de Dijkstra pour qu'il fonctionne sans erreur. La méthode de programmation utilisée dans cette extension exige de plus que ces distances soient des nombres \emph{entiers}.\medbreak
+Une fois que le graphe a été lu, celui-ci est rendu \emph{non orienté} en interne et donc en coulisses, la liste d'adjacence devient
\code/A [B=7, D=15],
B [A=7, C=12, E=4, F=16],
@@ -192,10 +190,10 @@ D [A=15, C=5, E=2],
E [D=2, B=4, F=14],
F [B=16, C=3, E=14]/
-Par conséquent, la liste d'adjacence entrée par l'utilisateur ne doit pas contenir d'incohérence. Si l'on spécifie la distance entre un sommet A et un sommet B par \verb|A[B=<x>,...]| on peut s'économiser la peine de spécifier cette même distance entre B et A puisque c'est fait par l'extension \DIJK automatiquement. En revanche, une erreur sera émise si dans la liste d'adjacence, on trouve \verb|A[B=<x>,...]| puis \verb|B[A=<y>,...]| où \verb-<y>- et \verb-<x>- sont différents.
+Par conséquent, la liste d'adjacence entrée par l'utilisateur ne doit pas contenir d'incohérence. Si l'on spécifie la distance entre un sommet A et un sommet B par \verb|A[B=<x>,...]| on peut s'économiser la peine de spécifier cette même distance entre B et A puisque c'est fait par l'extension \DIJK automatiquement. En revanche, une erreur sera émise si dans la liste d'adjacence, on trouve \verb|A[B=<x>,...]| puis \verb|B[A=<y>,...]| où \verb-<y>- et \verb-<x>- sont différents.
\paragraph{Lancer l'algorithme}
-Une fois que le graphe est lu par la macro \verb|\readgraph|, on lance l'algorithme avec \verb|\dijkstra{<A>}{<B>}| où \verb-<A>- et \verb-<B>- sont deux sommets du graphe. La distance minimale entre ces deux sommets est stockée dans la macro \verb|\dijkdist| et le chemin correspondant dans \verb|\dijkpath|.
+Une fois que le graphe est lu par la macro \verb|\readgraph|, on lance l'algorithme avec \verb|\dijkstra{<A>}{<B>}| où \verb-<A>- et \verb-<B>- sont deux sommets du graphe. La distance minimale entre ces deux sommets est stockée dans la macro \verb|\dijkdist| et le chemin correspondant dans \verb|\dijkpath|.
\exemple|\readgraph{
A [B=7, D=15],
@@ -207,10 +205,10 @@ Tableau : \dijkstra{A}{F}\par
Distance A-F = \dijkdist\par
Chemin = \dijkpath|
-Dans le tableau, les colonnes sont disposées dans le \emph{même ordre} que celui des sommets dans la liste d'adjacence lue par \verb|\readgraph|.
+Dans le tableau, les colonnes sont disposées dans le \emph{même ordre} que celui des sommets dans la liste d'adjacence lue par \verb|\readgraph|.
-\section{Graphe orienté}
-Pour spécifier à \verb|\readgraph| que la liste d'adjacence est celle d'un graphe \emph{orienté}, la macro doit être suivie d'une étoile.
+\section{Graphe orienté}
+Pour spécifier à \verb|\readgraph| que la liste d'adjacence est celle d'un graphe \emph{orienté}, la macro doit être suivie d'une étoile.
\begin{center}
\begin{tikzpicture}[scale=1.75]
@@ -258,46 +256,46 @@ Tableau : \dijkstra{A}{H}\par
Distance A-H = \dijkdist\par
Chemin = \dijkpath|
-\section{Paramètres}
-\paragraph{Paramètres de \texttt{\char`\\ dijkstra}}
-Des \verb|<paramètres>| peuvent être passés à la macro \verb|\dijkstra| dans son argument optionnel qui prend la forme d'une liste de \verb|<clé>=<valeur>|.
+\section{Paramètres}
+\paragraph{Paramètres de \texttt{\char`\\ dijkstra}}
+Des \verb|<paramètres>| peuvent être passés à la macro \verb|\dijkstra| dans son argument optionnel qui prend la forme d'une liste de \verb|<clé>=<valeur>|.
-On peut également régler des \verb|<paramètres>| pour toutes les exécutions de la macro \verb|\dijkstra| à venir avec
+On peut également régler des \verb|<paramètres>| pour toutes les exécutions de la macro \verb|\dijkstra| à venir avec
\begin{center}
- \verb|\setdijk{<paramètres>}|
+ \verb|\setdijk{<paramètres>}|
\end{center}
-mais aussi modifier des \verb|<paramètres>| \emph{par défaut} avec
+mais aussi modifier des \verb|<paramètres>| \emph{par défaut} avec
\begin{center}
- \verb|\setdijkdefault{<paramètres>}|
+ \verb|\setdijkdefault{<paramètres>}|
\end{center}
-Pour réinitialiser toutes les \verb|<clés>| à leur \verb|<valeur>| par défaut, il faut exécuter la macro \verb|\initdijk|.\medbreak
+Pour réinitialiser toutes les \verb|<clés>| à leur \verb|<valeur>| par défaut, il faut exécuter la macro \verb|\initdijk|.\medbreak
-Voici toutes les \verb|<clés>|, leur \verb|<valeur>| par défaut et leur description.
+Voici toutes les \verb|<clés>|, leur \verb|<valeur>| par défaut et leur description.
-\cleval{show-tab}{booléen}
-Lorsque cette \verb|<clé>| est \verb|true|, le tableau est affiché par la macro \verb|\dijkstra|. Il ne l'est pas dans le cas contraire.
+\cleval{show-tab}{booléen}
+Lorsque cette \verb|<clé>| est \verb|true|, le tableau est affiché par la macro \verb|\dijkstra|. Il ne l'est pas dans le cas contraire.
\cleval{v-position}{texte}
-Ce paramètre est placé dans l'argument optionnel de \verb|\begin{tabular}[<v-position>]| pour spécifier la position que doit avoir le tableau par rapport à la ligne de base.
+Ce paramètre est placé dans l'argument optionnel de \verb|\begin{tabular}[<v-position>]| pour spécifier la position que doit avoir le tableau par rapport à la ligne de base.
\cleval{pre-tab}{code}
-Ce \verb|<code>| arbitraire est exécuté juste avant le \verb|\begin{tabular}|.
+Ce \verb|<code>| arbitraire est exécuté juste avant le \verb|\begin{tabular}|.
\cleval{post-tab}{code}
-Ce \verb|<code>| arbitraire est exécuté juste après le \verb|\end{tabular}|.
+Ce \verb|<code>| arbitraire est exécuté juste après le \verb|\end{tabular}|.
\cleval{col-type}{code}
Ce \verb|<code>| est le descripteur des colonnes contenant les sommets.
\cleval{infinity-code}{code}
-Ce \verb|<code>| est exécuté pour exprimer une distance infinie dans le tableau et dans la macro \verb|\dijkdist|.
+Ce \verb|<code>| est exécuté pour exprimer une distance infinie dans le tableau et dans la macro \verb|\dijkdist|.
\cleval{norevisit-code}{code}
-Ce \verb|<code>| est exécuté dans le tableau pour exprimer qu'un sommet a déjà été fixé.
+Ce \verb|<code>| est exécuté dans le tableau pour exprimer qu'un sommet a déjà été fixé.
-\cleval{h-rules}{booléen}
-Lorsque ce booléen est \verb|true|, les réglures horizontales entre les étapes sont tracées dans le tableau.
+\cleval{h-rules}{booléen}
+Lorsque ce booléen est \verb|true|, les réglures horizontales entre les étapes sont tracées dans le tableau.
\exemple|\readgraph{
A [B=7, D=15],
@@ -309,14 +307,14 @@ Tableau :
\dijkstra[h-rules=true,
v-position=b]{A}{F}|
-\cleval{show-lastcol}{booléen}
-Lorsque ce booléen est \verb|true|, une colonne supplémentaire est affichée dans le tableau; cette colonne correspond au sommet fixé.
+\cleval{show-lastcol}{booléen}
+Lorsque ce booléen est \verb|true|, une colonne supplémentaire est affichée dans le tableau; cette colonne correspond au sommet fixé.
\cleval{lastcol-type}{code}
-Ce \verb|<code>| est le descripteur de la colonne correspondant au sommets fixés.
+Ce \verb|<code>| est le descripteur de la colonne correspondant au sommets fixés.
\cleval{lastcol-label}{code}
-Ce \verb|<code>| contient le nom de la colonne correspondant aux sommets fixés.
+Ce \verb|<code>| contient le nom de la colonne correspondant aux sommets fixés.
\exemple|\readgraph{
A [B=7, D=15],
@@ -328,7 +326,7 @@ Tableau :
\dijkstra[show-lastcol]{A}{F}|
\cleval{nopath-string}{code}
-Ce \verb|<code>| est placé dans la macro \verb|\dijkpath| dans le cas où aucun chemin n'a pu être trouvé, comme cela peut être le cas si le graphe est non connexe.
+Ce \verb|<code>| est placé dans la macro \verb|\dijkpath| dans le cas où aucun chemin n'a pu être trouvé, comme cela peut être le cas si le graphe est non connexe.
\exemple|\readgraph{
A [B=2],
@@ -339,17 +337,17 @@ Chemin = \dijkpath\par
Distance A-E= \dijkdist|
\cleval{path-sep}{code}
-Ce \verb|<code>| est inséré entre chaque sommet dans la macro \verb|\dijkpath|.
+Ce \verb|<code>| est inséré entre chaque sommet dans la macro \verb|\dijkpath|.
\paragraph{Formatage distance/sommet}
-Lorsqu'un sommet a un prédécesseur, la macro \verb|\formatnodewithprev| se charge d'afficher la distance et le sommet. Cette macro prend deux arguments (la \verb|<distance>| et le \verb|<sommet>|) et sa définition par défaut est
+Lorsqu'un sommet a un prédécesseur, la macro \verb|\formatnodewithprev| se charge d'afficher la distance et le sommet. Cette macro prend deux arguments (la \verb|<distance>| et le \verb|<sommet>|) et sa définition par défaut est
\code|\newcommand*\formatnodewithprev[2]%
{% #1=distance, #2=nom du noeud de provenance
$#1_{\mathrm{#2}}$%
}|
-ce qui a pour effet de mettre le sommet de provenance en indice de la distance. On peut redéfinir cette macro pour choisir une autre mise en forme comme ci-dessous où le sommet est placé entre parenthèses.
+ce qui a pour effet de mettre le sommet de provenance en indice de la distance. On peut redéfinir cette macro pour choisir une autre mise en forme comme ci-dessous où le sommet est placé entre parenthèses.
\exemple|\renewcommand*\formatnodewithprev[2]%
{%
@@ -363,21 +361,21 @@ ce qui a pour effet de mettre le sommet de provenance en indice de la distance.
E [F=14]}
Tableau : \dijkstra{A}{F}|
-\paragraph{Mise en évidence du sommet fixé}
-Le premier sommet fixé est celui de départ et sa distance est toujours 0.
+\paragraph{Mise en évidence du sommet fixé}
+Le premier sommet fixé est celui de départ et sa distance est toujours 0.
-La macro \verb|\highlightfistnode| prend comme argument la distance (qui est 0) et le traite pour effectuer sa mise en forme. Sa définition par défaut, qui compose cette distance en gras, est :
+La macro \verb|\highlightfistnode| prend comme argument la distance (qui est 0) et le traite pour effectuer sa mise en forme. Sa définition par défaut, qui compose cette distance en gras, est :
\code|\newcommand*\highlightfirstnode[1]{$\mathbf{#1}$}|
-Les autres sommets, lorsqu'ils sont fixés, apparaissent dans le tableau avec leur distance et leur nom et sont traités par la macro \verb|\highlightnode| qui rend deux arguments. Sa définition permet une mise en forme similaire à ce que fait \verb|\formatnodewithprev|, sauf que la distance et le sommet sont en gras:
+Les autres sommets, lorsqu'ils sont fixés, apparaissent dans le tableau avec leur distance et leur nom et sont traités par la macro \verb|\highlightnode| qui rend deux arguments. Sa définition permet une mise en forme similaire à ce que fait \verb|\formatnodewithprev|, sauf que la distance et le sommet sont en gras:
\code|\newcommand*\highlightnode[2]%
{% #1=distance, #2=nom du noeud de provenance
$\mathbf{#1}_{\mathrm{\mathbf{#2}}}$%
}|
-Pour obtenir d'autre effets, on peut redéfinir ces macros. L'exemple donné n'est pas réaliste tant les effets sont incohérents, c'est simplement un aperçu de ce qu'il est possible de faire :
+Pour obtenir d'autre effets, on peut redéfinir ces macros. L'exemple donné n'est pas réaliste tant les effets sont incohérents, c'est simplement un aperçu de ce qu'il est possible de faire :
\exemple|\renewcommand*\highlightfirstnode[1]%
{%
@@ -417,7 +415,7 @@ Le code ci-dessous est l'exact verbatim du fichier \verb|dijkstra.sty| :
numbers=left,
numberstyle=\tiny\ttfamily\color{black},
breaklines=true,
- prebreak={\hbox{$\rhookswarrow$}},
+ prebreak={\hbox{$\hookleftarrow$}},
breakindent=3em,
breakautoindent=true,
xleftmargin=1em,
diff --git a/macros/latex/contrib/dijkstra/dijkstra.sty b/macros/latex/contrib/dijkstra/dijkstra.sty
index b8c673449e..92252c6b81 100644
--- a/macros/latex/contrib/dijkstra/dijkstra.sty
+++ b/macros/latex/contrib/dijkstra/dijkstra.sty
@@ -1,12 +1,12 @@
-% !TeX encoding = ISO-8859-1
+% !TeX encoding = UTF-8
% Ce fichier contient le code de l'extension "dijkstra"
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
\def\dijkname {dijkstra} %
-\def\dijkver {0.12} %
+\def\dijkver {0.13} %
% %
-\def\dijkdate {2020/06/25} %
+\def\dijkdate {2022/10/01} %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
@@ -24,14 +24,14 @@
% This work has the LPPL maintenance status `maintained'.
%
% The Current Maintainer of this work is Christian Tellechea
-% Copyright : Christian Tellechea 2017-2020
+% Copyright : Christian Tellechea 2017-2022
% email: unbonpetit@netc.fr
% Commentaires, suggestions et signalement de bugs bienvenus !
% Comments, bug reports and suggestions are welcome.
% --------------------------------------------------------------------
-% L'extension dijkstra est composée des 4 fichiers suivants :
+% L'extension dijkstra est composée des 4 fichiers suivants :
% - code : dijkstra.sty
-% - manuel en français : dijkstra-fr.tex & dijkstra-fr.pdf
+% - manuel en français : dijkstra-fr.tex & dijkstra-fr.pdf
% - fichier lisezmoi : README
% --------------------------------------------------------------------
%
@@ -52,14 +52,23 @@
\def\dijk_quark{\dijk_quark}
\def\dijk_cscmd#1#2{\expandafter#1\csname#2\endcsname}
\def\dijk_gobarg#1{}
+\long\def\dijk_first#1#2{#1}
+\long\def\dijk_second#1#2{#2}
+\long\def\dijk_earg#1#2{\expandafter\dijk_earg_i\expandafter{#2}{#1}}\let\dijk_exparg\dijk_earg
+\long\def\dijk_eearg#1#2{\expandafter\expandafter\expandafter\dijk_earg_i\expandafter\expandafter\expandafter{#2}{#1}}
+\long\def\dijk_earg_i#1#2{#2{#1}}
+\long\def\dijk_ifx#1{\ifx#1\expandafter\dijk_first\else\expandafter\dijk_second\fi}
+\long\def\dijk_ifempty#1{\dijk_ifempty_i#1\_nil\_nil\dijk_second\dijk_first\__nil}%
+\long\def\dijk_ifempty_i#1#2\_nil#3#4#5\__nil{#4}
+\def\dijk_ifcsname#1{\ifcsname#1\endcsname\expandafter\skv_first\else\expandafter\skv_second\fi}
\def\dijk_addtomacro#1#2{\expandafter\def\expandafter#1\expandafter{#1#2}}
-\def\dijk_eaddtomacro#1#2{\skv_exparg{\dijk_addtomacro#1}{#2}}
-\def\dijk_eeaddtomacro#1#2{\skv_eearg{\dijk_addtomacro#1}{#2}}
-\long\def\dijk_exptwoargs#1#2#3{\skv_exparg{\skv_exparg{#1}{#2}}{#3}}
-\def\dijk_ifnum#1{\ifnum#1\expandafter\skv_first\else\expandafter\skv_second\fi}
+\def\dijk_eaddtomacro#1#2{\dijk_exparg{\dijk_addtomacro#1}{#2}}
+\def\dijk_eeaddtomacro#1#2{\dijk_eearg{\dijk_addtomacro#1}{#2}}
+\long\def\dijk_exptwoargs#1#2#3{\dijk_exparg{\dijk_exparg{#1}{#2}}{#3}}
+\def\dijk_ifnum#1{\ifnum#1\expandafter\dijk_first\else\expandafter\dijk_second\fi}
\def\dijk_swapargs#1#2#3{#1{#3}{#2}}
-\def\dijk_ifstar#1#2{\def\dijk_ifstar_i{\skv_ifx{*\dijk_nxttok}{\skv_first{#1}}{#2}}\futurelet\dijk_nxttok\dijk_ifstar_i}
-\def\dijk_ifopt#1#2{\def\dijk_ifopt_i{\skv_ifx{[\dijk_nxttok}{#1}{#2}}\futurelet\dijk_nxttok\dijk_ifopt_i}
+\def\dijk_ifstar#1#2{\def\dijk_ifstar_i{\dijk_ifx{*\dijk_nxttok}{\dijk_first{#1}}{#2}}\futurelet\dijk_nxttok\dijk_ifstar_i}
+\def\dijk_ifopt#1#2{\def\dijk_ifopt_i{\dijk_ifx{[\dijk_nxttok}{#1}{#2}}\futurelet\dijk_nxttok\dijk_ifopt_i}
\def\dijk_stripsp#1%
{%
\long\def\dijk_stripsp##1{\expanded{\dijk_stripsp_i\_marksp##1\__nil\_marksp#1\_marksp\_nil}}%
@@ -69,7 +78,6 @@
}
\dijk_stripsp{ }
-
\def\dijk_foreach#1\in#2#3%
{%
\global\advance\dijk_nest1
@@ -82,18 +90,18 @@
\def\dijk_foreach_i#1#2,%
{%
\def#1{#2}%
- \skv_ifx{\dijk_quark#1}
+ \dijk_ifx{\dijk_quark#1}
{%
}
{%
- \skv_ifx{#1\empty}{}{\csname dijk_loopcode_\number\dijk_nest\endcsname}%
+ \dijk_ifx{#1\empty}{}{\csname dijk_loopcode_\number\dijk_nest\endcsname}%
\dijk_foreach_i#1%
}%
}%
\def\dijk_ifinst#1#2%
{% #2 est-il dans #1 ?
- \def\dijk_ifinst_i##1#2##2\_nil{\dijk_swapargs{\skv_ifempty{##2}}}%
+ \def\dijk_ifinst_i##1#2##2\_nil{\dijk_swapargs{\dijk_ifempty{##2}}}%
\dijk_ifinst_i#1#2\_nil
}
@@ -105,8 +113,8 @@
\def\readgraph_a#1%
{%
\let\dijk_initlistofnodes\empty% liste des sommets
- \let\dijk_graph\empty% argument #1 où l'on va enlever les espaces
- \dijk_sanitizegraph#1,\dijk_quark[],% enlever tous les espaces indésirables et évaluer les nombres dans l'argument #1
+ \let\dijk_graph\empty% argument #1 où l'on va enlever les espaces
+ \dijk_sanitizegraph#1,\dijk_quark[],% enlever tous les espaces indésirables et évaluer les nombres dans l'argument #1
\expandafter\readgraph_b\dijk_graph,\dijk_quark[],%
}
@@ -117,12 +125,12 @@
\def\dijk_sanitizegraph_i#1[#2],%
{%
- \skv_ifx{\dijk_quark#1}
+ \dijk_ifx{\dijk_quark#1}
{%
\dijk_removelastcommainmacro\dijk_graph
}
{%
- \skv_eearg{\def\dijk_childnodes}{\dijk_stripsp{#1}[}%
+ \dijk_eearg{\def\dijk_childnodes}{\dijk_stripsp{#1}[}%
\dijk_foreach\dijk_temp\in{#2}{\expandafter\dijk_sanitizegraph_ii\dijk_temp\_nil}%
\dijk_removelastcommainmacro\dijk_childnodes
\dijk_eaddtomacro\dijk_graph{\dijk_childnodes],}%
@@ -148,11 +156,11 @@
\def\readgraph_b#1#2[#3]#4,%
{%
- \skv_ifx{\dijk_quark#1}
+ \dijk_ifx{\dijk_quark#1}
{%
- \skv_exparg{\dijk_foreach\dijk_tempnodename\in}{\dijk_initlistofnodes}
+ \dijk_exparg{\dijk_foreach\dijk_tempnodename\in}{\dijk_initlistofnodes}
{% pour chaque sommet
- \skv_eearg{\dijk_foreach\dijk_tempnodechild\in}{\csname dijknode\dijk_tempnodename\endcsname}
+ \dijk_eearg{\dijk_foreach\dijk_tempnodechild\in}{\csname dijknode\dijk_tempnodename\endcsname}
{% pour chaque enfant
\expandafter\readgraph_c\dijk_tempnodechild\_nil\dijk_currentnodechildname\dijk_currentnodechilddist% capturer nom et distance de l'enfant
\dijk_exptwoargs\dijk_ifinst\dijk_initlistofnodes{\dijk_currentnodechildname,}% si l'enfant n'est pas dans la liste des sommets
@@ -162,11 +170,11 @@
\dijk_eaddtomacro\dijk_initlistofnodes{\dijk_currentnodechildname,}% l'y mettre
\dijk_cscmd\let{dijknode\dijk_currentnodechildname}\empty% et initialiser la liste de ses enfants
}%
- \unless\ifdijk_oriented% si graphe non orienté, ajouter les distances inverses
- \skv_exparg{\skv_eearg\dijk_ifinst{\csname dijknode\dijk_currentnodechildname\endcsname}}{\dijk_tempnodename=}% si le parent est dans déjà un des enfants de l'enfant
+ \unless\ifdijk_oriented% si graphe non orienté, ajouter les distances inverses
+ \dijk_exparg{\dijk_eearg\dijk_ifinst{\csname dijknode\dijk_currentnodechildname\endcsname}}{\dijk_tempnodename=}% si le parent est dans déjà un des enfants de l'enfant
{%
\expandafter\def\expandafter\readgraph_d\expandafter########\expandafter1\dijk_tempnodename=########2,########3\_nil{%
- \unless\ifnum########2=\dijk_currentnodechilddist\relax% si distance différente : erreur, c'est pas normal
+ \unless\ifnum########2=\dijk_currentnodechilddist\relax% si distance différente : erreur, c'est pas normal
\errmessage{Distance "\dijk_tempnodename=########2" incorrecte dans \dijk_currentnodechildname{} comprise comme "\dijk_tempnodename=\dijk_currentnodechilddist"}%
\dijk_cscmd\edef{dijknode\dijk_currentnodechildname}{########1\dijk_tempnodename=\dijk_currentnodechilddist,########3}%
\fi
@@ -180,11 +188,11 @@
}%
}%
\dijk_cnt0
- \skv_exparg{\dijk_foreach\dijk_tempnodename\in}{\dijk_initlistofnodes}
+ \dijk_exparg{\dijk_foreach\dijk_tempnodename\in}{\dijk_initlistofnodes}
{% pour chaque sommet, construire la liste de ses enfants
\advance\dijk_cnt1
\dijk_cscmd\let{listofchilds_\dijk_tempnodename}\empty
- \skv_eearg{\dijk_foreach\dijk_tempnodechild\in}{\csname dijknode\dijk_tempnodename\endcsname}
+ \dijk_eearg{\dijk_foreach\dijk_tempnodechild\in}{\csname dijknode\dijk_tempnodename\endcsname}
{%
\expandafter\readgraph_c\dijk_tempnodechild\_nil\dijk_currentnodechildname\dijk_currentnodechilddist
\expandafter\dijk_eaddtomacro\csname listofchilds_\dijk_tempnodename\endcsname{\dijk_currentnodechildname,}%
@@ -212,10 +220,10 @@
}
\def\dijk_removenode#1%
-{% enlève le sommet #1 de la liste des sommets non vus
- \skv_exparg{\dijk_ifinst}{\expandafter,\dijk_nodestoexplore}{,#1,}
+{% enlève le sommet #1 de la liste des sommets non vus
+ \dijk_exparg{\dijk_ifinst}{\expandafter,\dijk_nodestoexplore}{,#1,}
{%
- \def\dijk_removenode_i##1,#1,##2\_nil{\skv_exparg{\def\dijk_nodestoexplore}{\dijk_gobarg##1,##2}}%
+ \def\dijk_removenode_i##1,#1,##2\_nil{\dijk_exparg{\def\dijk_nodestoexplore}{\dijk_gobarg##1,##2}}%
\expandafter\dijk_removenode_i\expandafter,\dijk_nodestoexplore\_nil
}
{%
@@ -227,14 +235,14 @@
\dijk_ifopt{\dijkstra_i}{\dijkstra_i[]}%
}
\def\dijkstra_i[#1]#2#3%
-{% #1=sommet départ #2=sommet arrivée
+{% #1=sommet départ #2=sommet arrivée
\begingroup
- \skv_ifempty{#1}{}{\setdijk{#1}}%
+ \dijk_ifempty{#1}{}{\setdijk{#1}}%
\let\dijk_listofnodes\dijk_initlistofnodes
\let\dijk_nodestoexplore\dijk_initlistofnodes
\dijk_cnt0
- \skv_eearg{\def\dijk_currentnode}{\dijk_stripsp{#2}}%
- \skv_eearg{\def\dijk_endnode}{\dijk_stripsp{#3}}%
+ \dijk_eearg{\def\dijk_currentnode}{\dijk_stripsp{#2}}%
+ \dijk_eearg{\def\dijk_endnode}{\dijk_stripsp{#3}}%
\edef\dijk_tab
{%
\noexpand\dijk_pre_tab
@@ -247,23 +255,23 @@
\noexpand\hline
}%
\def\dijk_autoamp{\def\dijk_autoamp{\dijk_addtomacro\dijk_tab&}}%
- \skv_exparg{\dijk_foreach\dijk_tempnodename\in}\dijk_listofnodes
+ \dijk_exparg{\dijk_foreach\dijk_tempnodename\in}\dijk_listofnodes
{% pour tous le sommets du graphe
- \dijk_autoamp% ajouter "&", sauf la première fois
- \dijk_cscmd\let{dist_\dijk_tempnodename}\dijk_maxint% toutes les distances à +inf
- \dijk_cscmd\let{prev_\dijk_tempnodename}\dijk_quark% tous les prédecesseurs à <quark>
+ \dijk_autoamp% ajouter "&", sauf la première fois
+ \dijk_cscmd\let{dist_\dijk_tempnodename}\dijk_maxint% toutes les distances à +inf
+ \dijk_cscmd\let{prev_\dijk_tempnodename}\dijk_quark% tous les prédecesseurs à <quark>
\dijk_eaddtomacro\dijk_tab{\dijk_tempnodename}% peupler 1re ligne du tableau
}%
\ifboolKV[\dijkname]{show-lastcol}
{\dijk_eaddtomacro\dijk_tab{\expandafter&\dijk_lastcol_label}}
{}%
\dijk_addtomacro\dijk_tab{\\\hline}%
- \dijk_cscmd\def{dist_\dijk_currentnode}{0}% distance sommet de départ = 0
+ \dijk_cscmd\def{dist_\dijk_currentnode}{0}% distance sommet de départ = 0
\dijk_whilenotempty\dijk_nodestoexplore
{%
\dijk_findmindist\dijk_currentnode% retourne \dijk_currentnode : le sommet enfant ayant la distance la plus faible
- \skv_ifx{\dijk_quark\dijk_currentnode}
- {% si le sommet n'est pas trouvé (graphe non connexe)
+ \dijk_ifx{\dijk_quark\dijk_currentnode}
+ {% si le sommet n'est pas trouvé (graphe non connexe)
\global\let\dijkdist\dijk_infinity_code
\let\dijk_nodestoexplore\empty% sortir de la boucle
}
@@ -272,13 +280,13 @@
\unless\ifx\dijk_nodestoexplore\empty
\dijk_addstep
\fi
- \skv_ifx{\dijk_currentnode\dijk_endnode}
+ \dijk_ifx{\dijk_currentnode\dijk_endnode}
{% si le sommet de sortie est atteint
\let\dijk_nodestoexplore\empty% sortir de la boucle
}
{% sinon
- \skv_exparg\dijk_removenode\dijk_currentnode% enlever ce sommet du graphe à explorer
- \skv_eearg{\dijk_foreach\dijk_temp\in}{\csname listofchilds_\dijk_currentnode\endcsname}
+ \dijk_exparg\dijk_removenode\dijk_currentnode% enlever ce sommet du graphe à explorer
+ \dijk_eearg{\dijk_foreach\dijk_temp\in}{\csname listofchilds_\dijk_currentnode\endcsname}
{%
\dijk_exptwoargs\dijk_ifinst\dijk_nodestoexplore{\dijk_temp,}
{\dijk_exptwoargs\dijk_updatedist\dijk_currentnode\dijk_temp}%
@@ -293,9 +301,9 @@
{\dijk_addtomacro\dijk_tab\hline}%
\dijk_addtomacro\dijk_tab{\end{tabular}}%
\dijk_eaddtomacro\dijk_tab{\dijk_post_tab}%
- \skv_ifx{\dijk_quark\dijk_currentnode}
+ \dijk_ifx{\dijk_quark\dijk_currentnode}
{\global\let\dijkpath\dijk_nopath_string}
- {\skv_exparg\dijk_createpath\dijk_currentnode}% calculer le chemin sauf s'il est impossible à trouver
+ {\dijk_exparg\dijk_createpath\dijk_currentnode}% calculer le chemin sauf s'il est impossible à trouver
\ifboolKV[\dijkname]{show-tab}\dijk_tab{}% afficher le tableau
\endgroup
}
@@ -307,21 +315,21 @@
}
\def\dijk_createpathi#1%
{% #1=sommet en cours
- \skv_eearg{\def\dijk_temp}{\csname prev_#1\endcsname}%
- \skv_ifx{\dijk_quark\dijk_temp}
+ \dijk_eearg{\def\dijk_temp}{\csname prev_#1\endcsname}%
+ \dijk_ifx{\dijk_quark\dijk_temp}
{%
}
{%
\xdef\dijkpath{\dijk_temp\dijk_path_sep\dijkpath}%
- \skv_exparg\dijk_createpathi\dijk_temp
+ \dijk_exparg\dijk_createpathi\dijk_temp
}%
}
\def\dijk_findmindist#1%
-{% trouve dans "sommets à explorer" celui ayant la distance mini
+{% trouve dans "sommets à explorer" celui ayant la distance mini
\let\dijk_mindist\dijk_maxint
\let#1\dijk_quark
- \skv_exparg{\dijk_foreach\dijk_currentnodechildname\in}\dijk_nodestoexplore
+ \dijk_exparg{\dijk_foreach\dijk_currentnodechildname\in}\dijk_nodestoexplore
{%
\ifnum\csname dist_\dijk_currentnodechildname\endcsname<\dijk_mindist\relax
\expandafter\let\expandafter\dijk_mindist\csname dist_\dijk_currentnodechildname\endcsname
@@ -331,8 +339,8 @@
}
\def\dijk_whilenotempty#1#2%
-{% tant que la macro #1 n'est pas \ifx-vide, exécuter #2
- \skv_ifx{#1\empty}{}{#2\dijk_whilenotempty#1{#2}}%
+{% tant que la macro #1 n'est pas \ifx-vide, exécuter #2
+ \dijk_ifx{#1\empty}{}{#2\dijk_whilenotempty#1{#2}}%
}
\def\dijk_updatedist#1#2%
@@ -348,7 +356,7 @@
\def\dijk_addstep
{%
\def\dijk_autoamp{\def\dijk_autoamp{\dijk_addtomacro\dijk_tab&}}%
- \skv_exparg{\dijk_foreach\dijk_temp\in}\dijk_listofnodes
+ \dijk_exparg{\dijk_foreach\dijk_temp\in}\dijk_listofnodes
{%
\dijk_autoamp
\dijk_exptwoargs\dijk_ifinst\dijk_nodestoexplore\dijk_temp
@@ -356,9 +364,9 @@
\ifnum\csname dist_\dijk_temp\endcsname=\dijk_maxint\relax
\dijk_eaddtomacro\dijk_tab{\dijk_infinity_code}%
\else
- \skv_ifx{\dijk_temp\dijk_currentnode}% si c'est le sommet fixé, le mettre en valeur
+ \dijk_ifx{\dijk_temp\dijk_currentnode}% si c'est le sommet fixé, le mettre en valeur
{%
- \skv_ifcsname{distwithprev_\dijk_temp}
+ \dijk_ifcsname{distwithprev_\dijk_temp}
{%
\dijk_eeaddtomacro\dijk_tab{\expandafter\expandafter\expandafter\dijk_highlightnode
\csname distwithprev_\dijk_temp\endcsname}% forme \dijk_highlightnode\formatnodewithprev{<dist>}{<sommet>}
@@ -375,11 +383,11 @@
\fi
}%
{%
- \dijk_eaddtomacro\dijk_tab{\dijk_no_revisit_code}% sommet déjà fixé
+ \dijk_eaddtomacro\dijk_tab{\dijk_no_revisit_code}% sommet déjà fixé
}%
}%
\ifboolKV[\dijkname]{show-lastcol}
- {\dijk_eaddtomacro\dijk_tab{\expandafter&\detokenize\expandafter{\dijk_currentnode}}}% ajout du sommet fixé
+ {\dijk_eaddtomacro\dijk_tab{\expandafter&\detokenize\expandafter{\dijk_currentnode}}}% ajout du sommet fixé
{}%
\dijk_addtomacro\dijk_tab{\\}%
\ifboolKV[\dijkname]{h-rules}
@@ -406,10 +414,10 @@
\def\initdijk{\restoreKV[\dijkname]}
-% Macros permettant de modifier les <valeurs> des <clés>
+% Macros permettant de modifier les <valeurs> des <clés>
\def\setdijk#{\setKV[\dijkname]}
-% ... ainsi que les <valeurs> par défaut
+% ... ainsi que les <valeurs> par défaut
\def\setdijkdefault#{\setKVdefault[\dijkname]}
\newcommand*\formatnodewithprev[2]%
@@ -431,16 +439,16 @@
show-tab = true,% afficher le tableau
v-position = c,% argument optionnel de \begin{tabular}[<arg>]
pre-tab = {},% juste avant le \begin{tabular}
- post-tab = {},% juste après le \end{tabular}
+ post-tab = {},% juste après le \end{tabular}
col-type = c,% colonnes de type "c" pour les colonnes de distances
infinity-code = $\infty$,% pour distance infinie
- norevisit-code = ---,% pour les sommets préalablement fixés
- h-rules = false,% pas de filets entre les lignes des étapes
- show-lastcol = false,% si vrai : mettre en plus la colonne "sommet fixé"
- lastcol-type = c|,% dernière colonne
+ norevisit-code = ---,% pour les sommets préalablement fixés
+ h-rules = false,% pas de filets entre les lignes des étapes
+ show-lastcol = false,% si vrai : mettre en plus la colonne "sommet fixé"
+ lastcol-type = c|,% dernière colonne
lastcol-label = sommet fix\'e,
nopath-string = Pas de chemin possible,% si chemin impossible
- path-sep = -,% séparateur entre sommets dans le chemin
+ path-sep = -,% séparateur entre sommets dans le chemin
}
\endinput
@@ -449,14 +457,18 @@ Versions :
_____________________________________________________________________________
| Version | Date | Changements |
|---------+------------+------------------------------------------------------|
-| 0.1 | 06/09/2017 | Première version |
+| 0.1 | 06/09/2017 | Première version |
|---------+------------+------------------------------------------------------|
-| 0.11 | 09/09/2017 | - retrait d'un \show, laissé par oubli après les |
-| | | phases de débogage |
+| 0.11 | 09/09/2017 | - retrait d'un \show, laissé par oubli après les |
+| | | phases de débogage |
| | | - petit nettoyage du code |
|---------+------------+------------------------------------------------------|
| 0.12 | 25/06/2020 | - bugfix : le package est rendu compatible avec la |
| | | version 0.2 de simplekv |
-| | | - bugfix : mauvaise gestion est espaces dans la macro|
+| | | - bugfix : mauvaise gestion des espaces dans la macro|
| | | \dijk_sanitizegraph |
+|---------+------------+------------------------------------------------------|
+| 0.13 | 01/10/2022 | - le package est rendu compatible avec la version |
+| | | 0.2a de simplekv |
+| | | - code en UFT8 |
|---------+------------+------------------------------------------------------| \ No newline at end of file
diff --git a/macros/latex/contrib/flexipage/README.txt b/macros/latex/contrib/flexipage/README.txt
index 92a9499b93..64936e8a48 100644
--- a/macros/latex/contrib/flexipage/README.txt
+++ b/macros/latex/contrib/flexipage/README.txt
@@ -2,6 +2,7 @@ LaTeX package flexipage
Copyright (c) Anton Vrba, 2022
-------------------------------------------------------------------
Version:
+ 2022/10/01 1.01 added the option: extrafirstfoot
2022/07/09 1.00 Initial release
Licence:
This work may be distributed and/or modified under the conditions
@@ -14,7 +15,8 @@ Abstract:
The package flexipage allows easy page layout if marginalia is
required. Mid document changes are possible such as: new marginal
width, full width text, and landscape text without marginal.
- Partners well with the package sidenotesplus. The package also
- aids the layout for book printing, adding binding corrections
- and adding page bleed, if required by the printers
+ The first page textheight can be reduced to allow for more
+ footerheight. Partners well with the package sidenotesplus. The
+ package also aids the layout for book printing, adding binding
+ corrections and adding page bleed, if required by the printers
------------------------------------------------------------------- \ No newline at end of file
diff --git a/macros/latex/contrib/flexipage/flexipage.dtx b/macros/latex/contrib/flexipage/flexipage.dtx
index 2188b2790f..0315c1c102 100644
--- a/macros/latex/contrib/flexipage/flexipage.dtx
+++ b/macros/latex/contrib/flexipage/flexipage.dtx
@@ -26,7 +26,8 @@
%<package>\NeedsTeXFormat{LaTeX2e}[2020/10/01]
%<package>\ProvidesPackage{flexipage}
%<*package>
- [2022/07/09 1.00 Easy page geometry]
+% [2022/07/09 1.00 Easy page geometry]
+ [2022/10/01 1.01 First Page different footer]
%</package>
%
%<*driver>
@@ -190,6 +191,7 @@
% % headsep = , % inherits from class
% % headheight = , % inherits from class
% % footskip= , % inherits from class
+% % extrafirstfoot= , % 0pt, first page extra footer, reduces textheight
% % show , % a switch to show frames around the printable areas.
% % fancyhdrOff , % Do not use the fancyhdr package
% % NoFixMargin % a possible future requirement
@@ -201,7 +203,11 @@
% \paragraph{Known Issue:} If using the option |show| and the package \textsf{xcolor}
% is loaded later with options, an error will occur. The reason
% is that when option |show| is specified the package \textsf{eso-pic} is loaded
-% whch in turns loads \textsf{xcolor} without options.
+% which in turns loads \textsf{xcolor} without options. Remedy, load \textsf{xcolor}
+% with options before loading \textsf{flexipage}
+%
+% If the option |extrafirstfoot| is used, and |show| is used then the frames for the
+% first page do not show the effect of |extrafirstfoot|.
%
% \paragraph{Marginalia Position Issue:} When doing mid document changes to |\textwidth|
% and |\marginparwidth| then |\marginpar{content}| renders the marginalia to the correct
@@ -312,6 +318,8 @@
\newlength{\flx@printarea}
\newlength{\flx@outerbleed}
\newlength{\flx@innerbleed}
+\newlength{\flx@extrafirstfoot}
+\setlength{\flx@extrafirstfoot} {0pt}
\setlength{\flx@binding} {9pt}
\setlength{\flx@inner} {36pt}
\setlength{\flx@outer} {36pt}
@@ -359,6 +367,7 @@
headsep .code:n = \setlength{\headsep}{#1},
headheight .code:n = \setlength{\headheight}{#1},
footskip .code:n = \setlength{\footskip}{#1},
+ extrafirstfoot .code:n = \setlength{\flx@extrafirstfoot}{#1},
fancyhdrOff .code:n = \Use@fancyhdrfalse,
a4paper .code:n = \flx@setpapersize[210][297]{mm},
a5paper .code:n = \flx@setpapersize[148][210]{mm},
@@ -423,14 +432,21 @@
\setlength{\flx@temp}{\paperheight - \flx@top %
- \headheight - \headsep -\footskip - \flx@bot - 2\flx@outerbleed}
- \setlength{\textheight}{\flx@temp}
+ \setlength{\flx@textheigt}{\flx@temp}
+ \setlength{\textheight}{\flx@textheigt-\flx@extrafirstfoot}
+%******************************************************************
}
% \end{macrocode}
% \end{macro}
%
% \begin{macrocode}
\flx@setpagevertical
-\setlength{\flx@textheigt}{\textheight}
+\AddToHook{shipout/firstpage}{%
+\global\textheight=\flx@textheigt
+}
+
+
+
\newlength{\flx@linewidth}
% \end{macrocode}
%
diff --git a/macros/latex/contrib/flexipage/flexipage.pdf b/macros/latex/contrib/flexipage/flexipage.pdf
index 50018e6bfd..290f8f7b16 100644
--- a/macros/latex/contrib/flexipage/flexipage.pdf
+++ b/macros/latex/contrib/flexipage/flexipage.pdf
Binary files differ
diff --git a/macros/latex/contrib/iexec/LICENSE.txt b/macros/latex/contrib/iexec/LICENSE.txt
new file mode 100644
index 0000000000..bd949ffdab
--- /dev/null
+++ b/macros/latex/contrib/iexec/LICENSE.txt
@@ -0,0 +1,21 @@
+(The MIT License)
+
+Copyright (c) 2021-2022 Yegor Bugayenko
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the 'Software'), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/macros/latex/contrib/iexec/README.md b/macros/latex/contrib/iexec/README.md
index b147ac146c..018bf2a764 100644
--- a/macros/latex/contrib/iexec/README.md
+++ b/macros/latex/contrib/iexec/README.md
@@ -1,4 +1,5 @@
-[![make](https://github.com/yegor256/iexec/actions/workflows/latexmk.yml/badge.svg)](https://github.com/yegor256/iexec/actions/workflows/latexmk.yml)
+[![l3build](https://github.com/yegor256/iexec/actions/workflows/l3build.yml/badge.svg)](https://github.com/yegor256/iexec/actions/workflows/l3build.yml)
+[![CTAN](https://img.shields.io/ctan/v/iexec)](https://ctan.org/pkg/iexec)
[![License](https://img.shields.io/badge/license-MIT-green.svg)](https://github.com/yegor256/iexec/blob/master/LICENSE.txt)
This LaTeX package helps you execute commands from the document and then input
@@ -18,7 +19,7 @@ Today is \iexec{date +\%e-\%b-\%Y | tr -d '\\n'}.
```
The full example and all commands are available in the
-[`iexec.tex`](https://github.com/yegor256/exec/blob/master/iexec.tex) file.
+[`iexec.pdf`](https://ftp.agdsn.de/pub/mirrors/latex/dante/macros/latex/contrib/iexec/iexec.pdf) file.
If you want to contribute yourself, make a fork, then create a branch,
then run `make` in the root directory.
diff --git a/macros/latex/contrib/iexec/iexec.dtx b/macros/latex/contrib/iexec/iexec.dtx
new file mode 100644
index 0000000000..fb38432b0e
--- /dev/null
+++ b/macros/latex/contrib/iexec/iexec.dtx
@@ -0,0 +1,284 @@
+% \iffalse meta-comment
+% (The MIT License)
+%
+% Copyright (c) 2021-2022 Yegor Bugayenko
+%
+% Permission is hereby granted, free of charge, to any person obtaining a copy
+% of this software and associated documentation files (the 'Software'), to deal
+% in the Software without restriction, including without limitation the rights
+% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+% copies of the Software, and to permit persons to whom the Software is
+% furnished to do so, subject to the following conditions:
+%
+% The above copyright notice and this permission notice shall be included in all
+% copies or substantial portions of the Software.
+%
+% THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+% SOFTWARE.
+% \fi
+
+% \CheckSum{0}
+%
+% \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{iexec.dtx}
+% \DoNotIndex{\endgroup,\begingroup,\let,\else,\fi,\newcommand,\newenvironment}
+
+% \iffalse
+%<*driver>
+\ProvidesFile{iexec.dtx}
+%</driver>
+%<package>\NeedsTeXFormat{LaTeX2e}
+%<package>\ProvidesPackage{iexec}
+%<*package>
+[01.10.2022 0.6.1 Inputable Shell Executions]
+%</package>
+%<*driver>
+\documentclass{ltxdoc}
+\usepackage[tt=false, type1=true]{libertine}
+\usepackage{iexec}
+\usepackage{href-ul}
+\raggedbottom
+\setlength{\parindent}{0pt}
+\setlength{\columnsep}{32pt}
+\setlength{\parskip}{6pt}
+\PageIndex
+\EnableCrossrefs
+\CodelineIndex
+\RecordChanges
+\begin{document}
+ \DocInput{iexec.dtx}
+ \PrintChanges
+ \PrintIndex
+\end{document}
+%</driver>
+% \fi
+
+% \title{|iexec|: \LaTeX{} Package \\ for Inputable Shell Executions\thanks{The sources are in GitHub at \href{https://github.com/yegor256/iexec}{yegor256/iexec}}}
+% \author{Yegor Bugayenko \\ \texttt{yegor256@gmail.com}}
+% \date{\filedate, \fileversion}
+%
+% \maketitle
+%
+% \section{Introduction}
+%
+% This package helps you execute shell commands right from the
+% document and then put their output to the document:
+%
+% \begin{multicols}{2}
+% \setlength{\parskip}{0pt}
+% \small
+% \raggedcolumns
+%\iffalse
+%<*verb>
+%\fi
+\begin{verbatim}
+\documentclass{article}
+\usepackage{iexec}
+\begin{document}
+Today is
+ \iexec{date +\%e-\%b-\%Y}
+\end{document}
+\end{verbatim}
+%\iffalse
+%</verb>
+%\fi
+%
+% \columnbreak
+%
+% Today is \iexec{date +\%e-\%b-\%Y}
+% \end{multicols}
+
+% \begin{macro}{\iexec}
+% The only command provided by this package is |\iexec| \oarg{options} \marg{cmd}.
+% Its only mandatory argument \meta{cmd} is the command to be executed
+% through the terminal shell (bash, or whatever is set as the default one
+% on your user console).
+% \end{macro}
+
+% You have to run |pdflatex| (or just |latex|)
+% with the |--shell-escape| flag
+% in order to let |shellesc| (the package we use)
+% to execute your shell command.
+
+% \section{Options}
+
+% \begin{macro}{quiet}
+% If you don't want the output to be visible,
+% use |\phantom\{\iexec{...}}|.
+% Otherwise, you can use |quiet| option:
+%\iffalse
+%<*verb>
+%\fi
+\begin{verbatim}
+\documentclass{article}
+\usepackage{iexec}
+\begin{document}
+I just want to delete some file:
+\iexec[quiet]{rm -f foo.txt}
+\end{document}
+\end{verbatim}
+%\iffalse
+%</verb>
+%\fi
+% \end{macro}
+% In this case, whatever the shell command produces will not be included
+% into the document.
+
+% \begin{macro}{stdout}
+% The output of your code is saved into the file provided as the
+% second optional argument of |\iexec| (the default value is |iexec.tmp|):
+%\iffalse
+%<*verb>
+%\fi
+\begin{verbatim}
+\documentclass{article}
+\usepackage{iexec}
+\begin{document}
+Today is \iexec[stdout=date.txt]{date +\%e-\%b-\%Y | tr -d '\\n'}.
+\end{document}
+\end{verbatim}
+%\iffalse
+%</verb>
+%\fi
+% The tailing part of the command here removes all ends-of-line.
+% \end{macro}
+
+% \begin{macro}{trace}
+% The file specified will be deleted right after its usage. If you don't
+% want this to happen, use |trace| package option: all files will remain
+% in the directory where they were created.
+% It's possible to turn tracing on globbaly, for the entire document, using
+% |trace| option of the package:
+%\iffalse
+%<*verb>
+%\fi
+\begin{verbatim}
+\documentclass{article}
+\usepackage[trace]{iexec}
+\begin{document}
+This file won't be deleted: \iexec[stdout=me.txt]{whoami}.
+\end{document}
+\end{verbatim}
+%\iffalse
+%</verb>
+%\fi
+% \end{macro}
+
+% \StopEventually{}
+
+% \section{Implementation}
+
+% \changes{v0.2.0}{2021/07/10}{Initial version}
+% \changes{v0.4.0}{2021/08/01}{Runtime verification for --shell-escape option}
+% \changes{v0.4.1}{2021/08/08}{Options trace, stdout, and quiet added}
+% \changes{v0.5.0}{2022/01/08}{Major bug fixes}
+
+% \iffalse
+\RequirePackage{shellesc}
+\RequirePackage{pgfkeys}
+\RequirePackage{xkeyval}
+\makeatletter\newif\ifiexec@trace
+\DeclareOptionX{trace}{\iexec@tracetrue}
+\ProcessOptionsX\relax\makeatother
+\makeatletter\pgfkeys{
+ /iexec/.is family,
+ /iexec,
+ stdout/.estore in = \iexec@stdout,
+ stdout/.default = iexec.tmp,
+ trace/.estore in = \iexec@traceit,
+ quiet/.estore in = \iexec@quiet,
+ stdout
+}\makeatother
+% \fi
+
+% \begin{macro}{\iexec}
+% It is implemented with the help of |\ShellEscape| from |shellesc| package:
+% \begin{macrocode}
+\makeatletter\newcommand\iexec[2][]{%
+ \begingroup
+ \pgfqkeys{/iexec}{#1}%
+% \end{macrocode}
+% First, we verify that |latex| is running with |--shell-escape| option, since without
+% it nothing will work; so, it's better to throw an error earlier than later:
+% \begin{macrocode}
+ \ifdefined\pdfshellescape\ifnum\pdfshellescape=1\else%
+ \PackageError{iexec}{You must run latex with
+ --shell-escape option}{}%
+ \fi\fi%
+ \begingroup%
+% \end{macrocode}
+% Then, we define a few special chars in order to escape them in the shell
+% (the full
+% list of them is in \href{https://ctan.mirror.norbert-ruehl.de/info/macros2e/macros2e.pdf}{macros2e}):
+% \begin{macrocode}
+ \let\%\@percentchar%
+ \let\\\@backslashchar%
+ \let\{\@charlb%
+ \let\}\@charrb%
+% \end{macrocode}
+% Then, we execute it:
+% \begin{macrocode}
+ \ShellEscape{#2 > \iexec@stdout}%
+% \end{macrocode}
+% Then, a message is printed to TeX log:
+% \begin{macrocode}
+ \message{^^Jiexec: [#2 > \iexec@stdout]^^J}%
+ \endgroup%
+% \end{macrocode}
+% Then, include the produced output into the current document:
+% \begin{macrocode}
+ \ifdefined\iexec@quiet
+ \message{^^Jiexec: Due to 'quiet' we didn't read
+ the content of '\iexec@stdout'^^J}%
+ \else%
+ \input{\iexec@stdout}%
+ \message{^^Jiexec: The content of '\iexec@stdout'
+ was included into the document^^J}%
+ \fi%
+% \end{macrocode}
+% Finally, delete the file or leave it untouched:
+% \begin{macrocode}
+ \ifiexec@trace%
+ \message{^^Jiexec: Due to package option 'trace',
+ the file '\iexec@stdout' was not deleted^^J}%
+ \else%
+ \ifdefined\iexec@traceit%
+ \message{^^Jiexec: Due to 'trace' option,
+ the file '\iexec@stdout' was not deleted^^J}%
+ \else%
+ \ShellEscape{rm \iexec@stdout}%
+ \message{^^Jiexec: The file '\iexec@stdout' was deleted^^J}%
+ \fi%
+ \fi%
+ \endgroup
+}\makeatother
+% \end{macrocode}
+% \end{macro}
+
+% \Finale
+
+%\clearpage
+%
+%\PrintChanges
+%\clearpage
+%\PrintIndex
diff --git a/macros/latex/contrib/iexec/iexec.ins b/macros/latex/contrib/iexec/iexec.ins
new file mode 100644
index 0000000000..36172278a6
--- /dev/null
+++ b/macros/latex/contrib/iexec/iexec.ins
@@ -0,0 +1,55 @@
+%% (The MIT License)
+%%
+%% Copyright (c) 2021-2022 Yegor Bugayenko
+%%
+%% Permission is hereby granted, free of charge, to any person obtaining a copy
+%% of this software and associated documentation files (the 'Software'), to deal
+%% in the Software without restriction, including without limitation the rights
+%% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+%% copies of the Software, and to permit persons to whom the Software is
+%% furnished to do so, subject to the following conditions:
+%%
+%% The above copyright notice and this permission notice shall be included in all
+%% copies or substantial portions of the Software.
+%%
+%% THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+%% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+%% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+%% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+%% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+%% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+%% SOFTWARE.
+
+\input docstrip.tex
+\keepsilent
+\usedir{macros/latex/contrib/iexec}
+\preamble
+(The MIT License)
+
+Copyright (c) 2021-2022 Yegor Bugayenko
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the 'Software'), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+\endpreamble
+\generate{\file{iexec.sty}{\from{iexec.dtx}{package}}}
+\obeyspaces
+\Msg{*** To finish the installation you have to move the ".sty"}
+\Msg{*** file into a directory searched by TeX. To produce the}
+\Msg{*** documentation run the file ".dtx" through LaTeX. If any}
+\Msg{*** questions, submit a new GitHub issue.}
+\endbatchfile
diff --git a/macros/latex/contrib/iexec/iexec.pdf b/macros/latex/contrib/iexec/iexec.pdf
index 2b9c52cd38..74233b4810 100644
--- a/macros/latex/contrib/iexec/iexec.pdf
+++ b/macros/latex/contrib/iexec/iexec.pdf
Binary files differ
diff --git a/macros/latex/contrib/iexec/iexec.sty b/macros/latex/contrib/iexec/iexec.sty
deleted file mode 100644
index e4cd6a5780..0000000000
--- a/macros/latex/contrib/iexec/iexec.sty
+++ /dev/null
@@ -1,77 +0,0 @@
-% (The MIT License)
-%
-% Copyright (c) 2021-2022 Yegor Bugayenko
-%
-% Permission is hereby granted, free of charge, to any person obtaining a copy
-% of this software and associated documentation files (the 'Software'), to deal
-% in the Software without restriction, including without limitation the rights
-% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-% copies of the Software, and to permit persons to whom the Software is
-% furnished to do so, subject to the following conditions:
-%
-% The above copyright notice and this permission notice shall be included in all
-% copies or substantial portions of the Software.
-%
-% THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-% SOFTWARE.
-
-\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{iexec}[2022/01/09 0.5.1 Inputable Shell Executions]
-
-\RequirePackage{shellesc}
-\RequirePackage{pgfkeys}
-\RequirePackage{xkeyval}
-
-\makeatletter\newif\ifiexec@trace
-\DeclareOptionX{trace}{\iexec@tracetrue}
-\ProcessOptionsX\relax\makeatother
-
-\makeatletter\pgfkeys{
- /iexec/.is family,
- /iexec,
- stdout/.estore in = \iexec@stdout,
- stdout/.default = iexec.tmp,
- trace/.estore in = \iexec@traceit,
- quiet/.estore in = \iexec@quiet,
- stdout
-}\makeatother
-
-\makeatletter\newcommand\iexec[2][]{%
- \begingroup
- \pgfqkeys{/iexec}{#1}%
- \ifnum\pdfshellescape=1\else%
- \PackageError{iexec}{You must run latex with --shell-escape option}{}%
- \fi%
- \begingroup%
- \let\%\@percentchar%
- \let\\\@backslashchar%
- \let\{\@charlb%
- \let\}\@charrb%
- \ShellEscape{#2 > \iexec@stdout}%
- \message{^^Jiexec: [#2 > \iexec@stdout]^^J}%
- \endgroup%
- \ifdefined\iexec@quiet
- \message{^^Jiexec: Due to 'quiet' we didn't read the content of '\iexec@stdout'^^J}%
- \else%
- \input{\iexec@stdout}%
- \message{^^Jiexec: The content of '\iexec@stdout' was included into the document^^J}%
- \fi%
- \ifiexec@trace%
- \message{^^Jiexec: Due to package option 'trace', the file '\iexec@stdout' was not deleted^^J}%
- \else%
- \ifdefined\iexec@traceit%
- \message{^^Jiexec: Due to 'trace' option, the file '\iexec@stdout' was not deleted^^J}%
- \else%
- \ShellEscape{rm \iexec@stdout}%
- \message{^^Jiexec: The file '\iexec@stdout' was deleted^^J}%
- \fi%
- \fi%
- \endgroup
-}\makeatother
-
-\endinput
diff --git a/macros/latex/contrib/iexec/iexec.tex b/macros/latex/contrib/iexec/iexec.tex
deleted file mode 100644
index 2af507e7b3..0000000000
--- a/macros/latex/contrib/iexec/iexec.tex
+++ /dev/null
@@ -1,89 +0,0 @@
-% (The MIT License)
-%
-% Copyright (c) 2021-2022 Yegor Bugayenko
-%
-% Permission is hereby granted, free of charge, to any person obtaining a copy
-% of this software and associated documentation files (the 'Software'), to deal
-% in the Software without restriction, including without limitation the rights
-% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-% copies of the Software, and to permit persons to whom the Software is
-% furnished to do so, subject to the following conditions:
-%
-% The above copyright notice and this permission notice shall be included in all
-% copies or substantial portions of the Software.
-%
-% THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-% SOFTWARE.
-
-\documentclass[12pt]{article}
-\usepackage[trace]{iexec}
-\usepackage[tt=false,type1=true]{libertine}
-\usepackage{multicol}
-\usepackage{ffcode}
-\title{\ff{iexec}: \LaTeX{} Package \\ for Inputable Shell Executions}
-\author{Yegor Bugayenko}
-\date{0.5.1 2022/01/09}
-\begin{document}
-\pagenumbering{gobble}
-\raggedbottom
-\setlength{\parindent}{0pt}
-\setlength{\columnsep}{32pt}
-\setlength{\parskip}{6pt}
-\maketitle
-
-This package helps you execute shell commands right from the
-document and then put their output to the document:
-
-\begin{multicols}{2}
-\setlength{\parskip}{0pt}
-\scriptsize
-\raggedcolumns
-\begin{ffcode}
-\documentclass{article}
-\usepackage{iexec}
-\begin{document}
-Today is \iexec{date +\%e-\%b-\%Y}
-\end{document}
-\end{ffcode}
-
-\columnbreak
-
-Today is \iexec{date +\%e-\%b-\%Y | tr -d '\\n'}
-\end{multicols}
-
-You have to run \ff{pdflatex} (or just \ff{latex}) with the \ff{--shell-escape} flag
-in order to let \ff{shellesc} (the package we use) to run shell.
-
-If you don't want the output to be visible,
-use \ff{\char`\\phantom\char`\{\char`\\iexec\char`\{...\char`\}\char`\}}.
-
-The output of your code is saved into the file provided as the
-second optional argument of \ff{\char`\\iexec} (the default value is \ff{iexec.tmp}):
-
-\begin{ffcode}
-Today is \iexec[stdout=date.txt]{date +\%e-\%b-\%Y | tr -d '\\n'}.
-\end{ffcode}
-
-The tailing part of the command here removes all ends-of-line.
-
-The file specified will be deleted right after its usage. If you don't
-want this to happen, use \ff{trace} package option: all files will remain
-in the directory.
-
-There are a few options you can provide for the \ff{\char`\\iexec} command:
-
-\begin{itemize}
- \item \ff{trace}: to prevent the deletion of the file;
- \item \ff{stdout=...}: to set the name of the file where the standard output of the command will be saved;
- \item \ff{quiet}: to prevent including of the content into the document.
-\end{itemize}
-
-More details about this package you can find
-in the \ff{yegor256/iexec} GitHub repository.
-
-\end{document} \ No newline at end of file
diff --git a/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf b/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf
index 9ad760140f..fb6a67967d 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 d653c2ac21..237021230d 100644
--- a/macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex
+++ b/macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex
@@ -21,9 +21,6 @@
%fancy
\fancyhf{}
\renewcommand{\headrulewidth}{0pt}
-%\lhead{\sffamily \small [ProfLycee]}
-%\chead{\entete{\classe{} - \annee}}
-%\rhead{\sffamily \small - \thepage{} -}
\lfoot{\sffamily \small [ProfLycee]}
\cfoot{\sffamily \small - \thepage{} -}
\rfoot{\hyperlink{matoc}{\small\faArrowAltCircleUp[regular]}}
@@ -60,8 +57,8 @@
\setlength{\parindent}{0pt}
\definecolor{LightGray}{gray}{0.9}
-\def\PLversion{1.2.6}
-\def\PLdate{22 Septembre 2022}
+\def\PLversion{1.2.7}
+\def\PLdate{1\ier{} Octobre 2022}
\tcbset{vignettes/.style={%
nobeforeafter,box align=base,boxsep=0pt,enhanced,sharp corners=all,rounded corners=southeast,%
@@ -235,6 +232,8 @@ Une commande pour, en \TikZ, créer un pixelart avec correction éventuelle.
Une commande pour, en \TikZ, créer un SudoMaths non forcément $9\times9$.
+Des commandes pour effectuer des calculs de probas (lois binomiale, exponentielle, de Poisson, normale).
+
\vspace{1.5cm}
\hfill{}\textit{Merci à Anne pour ses retours et sa relecture !}
@@ -1536,13 +1535,13 @@ Peu d'options pour ces commandes :
\end{codecles}
\begin{codetex}[listing only]
-\liencapytale{abcd-12345} #lien simple, en sf
+\liencapytale{abcd-12345} %lien simple, en sf
-\liencapytale[~]{abcd-12345} #lien avec ~ à la fin, en sf
+\liencapytale[~]{abcd-12345} %lien avec ~ à la fin, en sf
-\liencapytale*{abcd-12345} #lien simple, en tt
+\liencapytale*{abcd-12345} %lien simple, en tt
-\liencapytale*[~]{abcd-12345} #lien avec ~ à la fin, en tt
+\liencapytale*[~]{abcd-12345} %lien avec ~ à la fin, en tt
\end{codetex}
\begin{codesortie}
@@ -3127,7 +3126,7 @@ Cette commande permet de rajouter le point moyen du nuage, calculé par la comma
\item \Cle{couleur}, couleur du point moyen ; \hfill~défaut \Cle{red}
\item \Cle{style} parmi \Cle{o} (rond) ou \Cle{x} (croix) ou \Cle{+} (plus) ; \hfill~défaut \Cle{o}
\item \Cle{xg}, abscisse du point moyen, récupérable via \ctex{PLRegLin} ; \hfill~défaut \Cle{\textbackslash{}LXmoy}
- \item \Cle{xy}, abscisse du point moyen, récupérable via \ctex{PLRegLin} ; \hfill~défaut \Cle{\textbackslash{}LYmoy}
+ \item \Cle{yg}, ordonnée du point moyen, récupérable via \ctex{PLRegLin} ; \hfill~défaut \Cle{\textbackslash{}LYmoy}
\item \Cle{nom}, label du point moyen ; \hfill~défaut \Cle{G}
\item \Cle{pos} qui est la position du label par rapport au point ; \hfill~défaut \Cle{above}
\item \Cle{decal} qui est l'éloignement de la position du label par rapport au point ; \hfill~défaut \Cle{0pt}
@@ -3368,6 +3367,193 @@ Sachant que la hauteur par défaut est de 1, il est -- a priori -- intéressant
\newpage
+\section{Calculs de probabilités}\label{calcprobas}
+
+\subsection{Introduction}
+
+\begin{codeidee}
+L'idée est de proposer des commandes permettant de calculer des probabilités avec des lois classiques :
+
+\begin{itemize}
+ \item binomiale ;
+ \item normale ;
+ \item exponentielle ;
+ \item de Poisson
+\end{itemize}
+\end{codeidee}
+
+\begin{codeinfo}
+Les commandes sont de deux natures :
+
+\begin{itemize}
+ \item des commandes pour calculer, grâce au package \ctex{xintexpr} ;
+ \item des commandes pour formater le résultat de \ctex{xintexpr}, grâce à \ctex{siunitx}.
+\end{itemize}
+
+De ce fait, les options de \ctex{siunitx} de l'utilisateur affecterons les formatage du résultat, la commande va \og forcer \fg{} les arrondis et l'écriture scientifique.
+\end{codeinfo}
+
+\subsection{Calculs \og simples \fg}
+
+\begin{codetex}[listing only]
+%loi binomiale B(n,p)
+\calcPbinomP{n}{p}{k} %P(X=k)
+\calcPbinomC{n}{p}{a}{b} %P(a<=X<=b)
+%loi de Poisson P (l)
+\calcPpoissP{l}{k} %P(X=k)
+\calcPpoissC{l}{a}{b} %P(a<=X<=b)
+%loi normale N(m,s)
+\calcPnormC{m}{s}{a}{b} %P(a<=X<=b)
+%loi exponentielle E(l)
+\calcPexpoC{l}{a}{b} %P(a<=X<=b)
+\end{codetex}
+
+\begin{codecles}
+Les probabilités calculables sont donc -- comme pour beaucoup de modèles de calculatrices -- les probabilités \textbf{P}onctuelles ($P(X=k)$) et \textbf{C}umulées ($P(a\leqslant X\leqslant b)$).
+
+\smallskip
+
+Pour les probabilités cumulées, on peut utiliser \ctex{*} comme borne ($a$ ou $b$), pour les probabilités du type $P(X\leqslant b)$ et $P(X \geqslant a)$.
+\end{codecles}
+
+\begin{codetex}[listing only]
+% X -> B(5,0.4)
+$P(X=3) \approx \calcPbinomP{5}{0.4}{3}$.
+$P(X\leqslant1) \approx \calcPbinomC{5}{0.4}{*}{1}$.
+% X -> B(100,0.02)
+$P(X=10) \approx \calcPbinomP{100}{0.02}{10}$.
+$P(15\leqslant X\leqslant25) \approx \calcPbinomC{100}{0.02}{15}{25}$.
+% Y -> P(5)
+$P(Y=3) \approx \calcPpoissP{5}{3}$.
+$P(Y\geqslant2) \approx \calcPpoissC{5}{2}{*}$.
+% X -> N(0,1)
+$P(X\leqslant1) \approx \calcPnormC{0}{1}{*}{1}$.
+$P(-1,96\leqslant Z\leqslant1,96) \approx \calcPnormC{0}{1}{-1.96}{1.96}$.
+% X -> N(550,30)
+$P(Y\geqslant600) \approx \calcPnormC{550}{30}{600}{*}$.
+$P(500\leqslant Y\leqslant600) \approx \calcPnormC{550}{30}{500}{600}$.
+% Z -> E(0.001)
+$P(Z\geqslant400) \approx \calcPexpoC{0.001}{400}{*}$.
+$P(300\leqslant Z\leqslant750) \approx \calcPexpoC{0.001}{300}{750}$.
+\end{codetex}
+
+\begin{codesortie}
+$\bullet~~~~X \hookrightarrow \mathcal{B}(5\,;\,0,4)$ :\\
+$P(X=3) \approx \calcPbinomP{5}{0.4}{3}$.\\
+$P(X\leqslant1) \approx \calcPbinomC{5}{0.4}{*}{1}$.
+
+\medskip
+
+$\bullet~~~~X \hookrightarrow \mathcal{B}(100\,;\,0,02)$ :\\
+$P(X=10) \approx \calcPbinomP{100}{0.02}{10}$.\\
+$P(15\leqslant X\leqslant25) \approx \calcPbinomC{100}{0.02}{15}{25}$.
+
+\medskip
+
+$\bullet~~~~Y \hookrightarrow \mathcal{P}_5$ :\\
+$P(Y=3) \approx \calcPpoissP{5}{3}$.\\
+$P(Y\geqslant2) \approx \calcPpoissC{5}{2}{*}$.
+
+\medskip
+
+$\bullet~~~~X \hookrightarrow \mathcal{N}(0\,;\,1)$ :\\
+$P(X\leqslant1) \approx \calcPnormC{0}{1}{*}{1}$.\\
+$P(-1,96\leqslant Z\leqslant1,96) \approx \calcPnormC{0}{1}{-1.96}{1.96}$.
+
+\medskip
+
+$\bullet~~~~Y \hookrightarrow \mathcal{N}(550\,;\,30)$ :\\
+$P(Y\geqslant600) \approx \calcPnormC{550}{30}{600}{*}$.\\
+$P(500\leqslant Y\leqslant600) \approx \calcPnormC{550}{30}{500}{600}$.
+
+\medskip
+
+$\bullet~~~~Z \hookrightarrow \mathcal{E}_{0,001}$ :\\
+$P(Z\geqslant400) \approx \calcPexpoC{0.001}{400}{*}$.\\
+$P(300\leqslant Z\leqslant750) \approx \calcPexpoC{0.001}{300}{750}$.
+\end{codesortie}
+
+\subsection{Complément avec sortie \og formaté \fg}
+
+\begin{codeidee}
+L'idée est ensuite de formater le résultat obtenu par \ctex{xintexpr}, pour un affichage homogène.
+
+\smallskip
+
+L'utilisateur peut donc utiliser \og sa \fg{} méthode pour formater les résultats obtenus par \ctex{xintexpr} !
+\end{codeidee}
+
+\begin{codetex}[listing only]
+%avec un formatage manuel
+\num[exponent-mode=scientific]{\calcPbinomP{100}{0.02}{10}}
+\end{codetex}
+
+\begin{codesortie}
+$\bullet~~~~X \hookrightarrow \mathcal{B}(100\,;\,0,02)$ :
+
+$P(X=10) \approx \num[exponent-mode=scientific]{\calcPbinomP{100}{0.02}{10}}$.
+\end{codesortie}
+
+\begin{codeidee}
+Le package \ctex{ProfLycee} propose -- en complément -- des commandes pour formater, grâce à \ctex{siunitx}, le résultat.
+
+Les commandes sont dans ce cas préfixées par \ctex{num} au lieu de \ctex{calc} :
+
+\begin{itemize}
+ \item formatage sous forme décimale \textit{pure} : $0,00\ldots$ ;
+ \item formatage sous forme scientifique : $n,\ldots\times10^{\ldots}$.
+\end{itemize}
+\end{codeidee}
+
+\begin{codetex}[listing only]
+%loi binomiale B(n,p)
+\numPbinomP(*)[prec]{n}{p}{k} %P(X=k)
+\numPbinomC(*)[prec]{n}{p}{a}{b} %P(a<=X<=b)
+%loi de Poisson P (l)
+\numPpoissP(*)[prec]{l}{k} %P(X=k)
+\numPpoissC(*)[prec]{l}{a}{b} %P(a<=X<=b)
+%loi normale N(m,s)
+\numPnormC(*)[prec]{m}{s}{a}{b} %P(a<=X<=b)
+%loi exponentielle E(l)
+\numPexpoC(*)[prec]{l}{a}{b} %P(a<=X<=b)
+\end{codetex}
+
+\begin{codecles}
+Quelques précisions sur les commandes précédentes :
+
+\begin{itemize}
+ \item la version étoilée \Cle{*} des commandes formate le résultat en mode scientifique ;
+ \item l'argument optionnel (par défaut \Cle{3}) correspond à quant à lui à l'arrondi.
+\end{itemize}
+\end{codecles}
+
+\begin{codetex}[listing only]
+% X -> N(550,30)
+$P(Y\geqslant600) \approx \numPnormC[4]{550}{30}{600}{*}$.
+$P(500\leqslant Y\leqslant600) \approx \numPnormC[4]{550}{30}{500}{600}$.
+% X -> B(100,0.02)
+$P(X=10) \approx \numPbinomP[7]{100}{0.02}{10} \approx \numPbinomP*[7]{100}{0.02}{10}$.
+$P(15\leqslant X\leqslant25) \approx \numPbinomC[10]{100}{0.02}{15}{25} \approx \numPbinomC*[10]{100}{0.02}{15}{25}$.
+\end{codetex}
+
+\begin{codesortie}
+$\bullet~~~~Y \hookrightarrow \mathcal{N}(550\,;\,30)$ :
+
+$P(Y\geqslant600) \approx \numPnormC[4]{550}{30}{600}{*}$.
+
+$P(500\leqslant Y\leqslant600) \approx \numPnormC[4]{550}{30}{500}{600}$.
+
+\medskip
+
+$\bullet~~~~X \hookrightarrow \mathcal{B}(100\,;\,0,02)$ :
+
+$P(X=10) \approx \numPbinomP[7]{100}{0.02}{10} \approx \numPbinomP*[7]{100}{0.02}{10}$.
+
+$P(15\leqslant X\leqslant25) \approx \numPbinomC[10]{100}{0.02}{15}{25} \approx \numPbinomC*[10]{100}{0.02}{15}{25}$.
+\end{codesortie}
+
+\newpage
+
\section{Conversions binaire/hexadécimal/décimal}
\subsection{Idée}
@@ -4129,6 +4315,8 @@ La grille, créée en \TikZ, est portée par le rectangle de \og coins \fg{} $(0
\section{Historique}
+{\small \bverb|v1.2.7|~:~~~~Ajout de commandes pour des calculs de probabilités (page \pageref{calcprobas})
+
{\small \bverb|v1.2.6|~:~~~~Ajout d'un environnement pour des SudoMaths (page \pageref{sudomaths})
{\small \bverb|v1.2.5|~:~~~~Ajout de commandes pour des boîtes à moustaches (page \pageref{boiteamoustaches})
diff --git a/macros/latex/contrib/proflycee/tex/ProfLycee.sty b/macros/latex/contrib/proflycee/tex/ProfLycee.sty
index 7fdd37b256..708ef7b813 100644
--- a/macros/latex/contrib/proflycee/tex/ProfLycee.sty
+++ b/macros/latex/contrib/proflycee/tex/ProfLycee.sty
@@ -3,7 +3,8 @@
% or later, see http://www.latex-project.org/lppl.txtf
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{ProfLycee}[2022/09/22 v1.2.6 - Aide pour l'utilisation de LaTeX en lycee]
+\ProvidesPackage{ProfLycee}[2022/10/01 v1.2.7 - Aide pour l'utilisation de LaTeX en lycee]
+% 1.2.7 Calculs de probas pour des lois classiques
% 1.2.6 Ajout d'un environnement tikz pour des sudomaths personnalisés
% 1.2.5 Ajout d'une commande pour des boites à moustaches, en tikz
% 1.2.4 Correction de quelques bugs mineurs, et mise à jour de la doc
@@ -2179,4 +2180,154 @@
\end{tikzpicture}
}
+%================LOISPROBAS============ OK !!
+%calculs "simples"
+\newcommand\calcPbinomP[3]{%npk
+ \xintFloatToDecimal{\xintfloateval{binomial(#1,#3)*#2^#3*(1-#2)^(#1-#3)}}
+}
+\newcommand\calcPbinomC[4]{%npab
+ \def\BorneInf{#3}\def\BorneSup{#4}
+ \ifthenelse{\equal{#3}{*}}%
+ {\def\BorneInf{0}}
+ {}
+ \ifthenelse{\equal{#4}{*}}%
+ {\def\BorneSup{#4}}
+ {}
+ \xintFloatToDecimal{\xintfloateval{add(binomial(#1,i)*#2^i*(1-#2)^(#1-i), i=\BorneInf..\BorneSup)}}
+}
+\newcommand\calcPpoissP[2]{%lk
+ \xintFloatToDecimal{\xintfloateval{exp(-#1)*#1^#2/factorial(#2)}}
+}
+\newcommand\calcPpoissC[3]{%lab
+ \def\BorneInf{#2}\def\BorneSup{#3}
+ \ifthenelse{\equal{#2}{*}}%
+ {\def\BorneInf{0}}
+ {}
+ \ifthenelse{\equal{#3}{*}}%
+ {\def\BorneSup{10*#1}}
+ {}
+ \xintFloatToDecimal{\xintfloateval{add(exp(-#1)*#1^i/factorial(i), i=\BorneInf..\BorneSup)}}
+}
+%utiles idée de https://tex.stackexchange.com/questions/355574/im-searching-for-a-table-with-cdf-of-standard-normal-distribution
+\xintdeffloatvar a_1,a_2,a_3,a_4,a_5,a_6 :=
+0.0705230784,0.0422820123,0.0092705272,0.0001520143,0.0002765672,0.0000430638;
+\xintdeffloatvar rac2inv := sqrt(2)/2 ;
+\xintdeffloatfunc erfc(x) := % uniquement pour x positif
+((((((a_6*x+a_5)*x+a_4)*x+a_3)*x+a_2)*x+a_1)*x+1)**-16 ; % fin de définition de erfc(x)
+\xintdeffloatfunc Phi(z) := (z>=0)?{1 - 0.5 * erfc(rac2inv * z)}{0.5 * erfc(-rac2inv * z)};
+
+\newcommand\calcPnormC[4]{%msab
+ %def des bornes de l'intervalle suivant l'absence de a ou de b...
+ \def\BorneInf{#3}\def\BorneSup{#4}
+ \ifthenelse{\equal{#3}{*}}%
+ {\def\BorneInf{#4-10*#2}}
+ {}
+ \ifthenelse{\equal{#4}{*}}%
+ {\def\BorneSup{#3+10*#2}}
+ {}
+ \xintFloatToDecimal{\xintfloateval{Phi((\BorneSup-#1)/#2)-Phi((\BorneInf-#1)/#2)}}
+}
+%calculs "simples" fiabilite
+\newcommand\calcPexpoC[3]{%lab
+ \def\BorneInf{#2}\def\BorneSup{#3}
+ \ifthenelse{\equal{#2}{*}}%
+ {\def\BorneInf{0}}
+ {}
+ \ifthenelse{\equal{#3}{*}}%
+ {\def\BorneSup{100/#1}}
+ {}
+ \xintFloatToDecimal{\xintfloateval{exp(-#1*\BorneInf)-exp(-#1*\BorneSup)}}
+}
+
+%calculs formatés
+\NewDocumentCommand{\numPbinomP}{ s O{3} m m m }{%*=sci,2=prec,3=n,4=p,5=k
+ \IfBooleanTF{#1}%
+ {%
+ \num[exponent-mode=scientific]{\xintFloatToDecimal{\xintfloateval{round(binomial(#3,#5)*#4^#5*(1-#4)^(#3-#5),#2)}}}
+ }%
+ {%
+ \num[minimum-decimal-digits=#2]{\xintFloatToDecimal{\xintfloateval{round(binomial(#3,#5)*#4^#5*(1-#4)^(#3-#5),#2)}}}
+ }
+}
+
+\NewDocumentCommand{\numPbinomC}{ s O{3} m m m m }{%*=sci,2=prec,3=n,4=p,5=a,6=b
+ \def\BorneInf{#5}\def\BorneSup{#6}
+ \ifthenelse{\equal{#5}{*}}%
+ {\def\BorneInf{0}}
+ {}
+ \ifthenelse{\equal{#6}{*}}%
+ {\def\BorneSup{#3}}
+ {}
+ \IfBooleanTF{#1}%
+ {%
+ \num[exponent-mode=scientific]{\xintFloatToDecimal{\xintfloateval{round(add(binomial(#3,i)*#4^i*(1-#4)^(#3-i), i=\BorneInf..\BorneSup),#2)}}}
+ }%
+ {%
+ \num[minimum-decimal-digits=#2]{\xintFloatToDecimal{\xintfloateval{round(add(binomial(#3,i)*#4^i*(1-#4)^(#3-i), i=\BorneInf..\BorneSup),#2)}}}
+ }
+}
+
+\NewDocumentCommand{\numPpoissP}{ s O{3} m m }{%*=sci,2=prec,3=lbda,4=k
+ \IfBooleanTF{#1}%
+ {%
+ \num[exponent-mode=scientific]{\xintFloatToDecimal{\xintfloateval{round(exp(-#3)*#3^#4/factorial(#4),#2)}}}
+ }%
+ {%
+ \num[minimum-decimal-digits=#2]{\xintFloatToDecimal{\xintfloateval{round(exp(-#3)*#3^#4/factorial(#4),#2)}}}
+ }
+}
+
+\NewDocumentCommand{\numPpoissC}{ s O{3} m m m }{%*=ing,2=prec,3=lbda,4=a,5=b
+ \def\BorneInf{#4}\def\BorneSup{#5}
+ \ifthenelse{\equal{#4}{*}}%
+ {\def\BorneInf{0}}
+ {}
+ \ifthenelse{\equal{#5}{*}}%
+ {\def\BorneSup{10*#3}}
+ {}
+ \IfBooleanTF{#1}%
+ {%
+ \num[exponent-mode=scientific]{\xintFloatToDecimal{\xintfloateval{round(add(exp(-#3)*#3^i/factorial(i), i=\BorneInf..\BorneSup),#2)}}}
+ }%
+ {%
+ \num[minimum-decimal-digits=#2]{\xintFloatToDecimal{\xintfloateval{round(add(exp(-#3)*#3^i/factorial(i), i=\BorneInf..\BorneSup),#2)}}}
+ }
+}
+
+\NewDocumentCommand{\numPnormC}{ s O{3} m m m m }{%
+ %*=ing,2=prec,3=mu,4=sigma,5=a,6=b
+ %def des bornes de l'intervalle suivant l'absence de a ou de b...
+ \def\BorneInf{#5}\def\BorneSup{#6}
+ \ifthenelse{\equal{#5}{*}}%
+ {\def\BorneInf{#6-10*#4}}
+ {}
+ \ifthenelse{\equal{#6}{*}}%
+ {\def\BorneSup{#5+10*#4}}
+ {}
+ \IfBooleanTF{#1}%
+ {%
+ \num[exponent-mode=scientific]{\xintFloatToDecimal{\xintfloateval{round(Phi((\BorneSup-#3)/#4)-Phi((\BorneInf-#3)/#4),#2)}}}
+ }%
+ {%
+ \num[minimum-decimal-digits=#2]{\xintFloatToDecimal{\xintfloateval{round(Phi((\BorneSup-#3)/#4)-Phi((\BorneInf-#3)/#4),#2)}}}
+ }
+}
+
+\NewDocumentCommand{\numPexpoC}{ s O{3} m m m }{%*=ing,2=prec,3=lbda,4=a,5=b
+ \def\BorneInf{#4}\def\BorneSup{#5}
+ \ifthenelse{\equal{#4}{*}}%
+ {\def\BorneInf{0}}
+ {}
+ \ifthenelse{\equal{#5}{*}}%
+ {\def\BorneSup{100/#3}}
+ {}
+ \IfBooleanTF{#1}%
+ {%
+ \num[exponent-mode=scientific]{\xintFloatToDecimal{\xintfloateval{round(exp(-#3*\BorneInf)-exp(-#3*\BorneSup),#2)}}}
+ }%
+ {%
+ \num[minimum-decimal-digits=#2]{\xintFloatToDecimal{\xintFloatToDecimal{\xintfloateval{round(exp(-#3*\BorneInf)-exp(-#3*\BorneSup),#2)}}}}
+ }
+}
+
\endinput \ No newline at end of file
diff --git a/macros/latex/contrib/teubner/README b/macros/latex/contrib/teubner/README
index 097e845f1d..065a7a3c92 100644
--- a/macros/latex/contrib/teubner/README
+++ b/macros/latex/contrib/teubner/README
@@ -1,6 +1,6 @@
-This accompanies the teubner bundle version 6.x dated November 2020 or later.
+This accompanies the teubner bundle version 5.x dated November 2020 or later.
-Copyright 2010-2020 Claudio Beccari
+Copyright 2010-2022 Claudio Beccari
The bundle contains the files
@@ -16,15 +16,16 @@ version.
The bundle has the status of author maintained.
-The main purpose of this bundle is to provide classical philologists with
-some means for typesetting their documents that usually contain very
-specific mark up.
-This version allows the typesetter to use both "italic" shapes: the
+The main purpose of this bundle is to provide Hellenists and classical
+philologists with some means for typesetting their documents that usually
+contain very specific mark up.
+This version allows the typesetter to use both Greek "italic" shapes: the
Olga-like and the Lipsian-like ones; it complies with the LICR (LaTeX
Internal Character Representation) of the Greek glyphs that avoid the
kerning problems that arise with the ligature mechanism embedded in the
LGR encoded default CBfonts; it is compatible with the use of different
-vector Latin Type 1 fonts; contains new designs for the horizontally stretchable markers, et cetera.
+vector Latin Type 1 fonts; contains new designs for the horizontally
+stretchable markers, et cetera.
Running pdflatex on the .dtx file produces both the documentation and
extracts the byproduct files teubner.sty, teubnertx.sty, teubner.pdf.
@@ -38,10 +39,10 @@ files if using the TX or the PX fonts; with other Type 1 fonts the
necessary .fd files require manual intervention, which simply means giving
a suitable command from within another open file that loads teubner.
-Please, be sure to work with a 2010 updated collection of the CBfonts;
+Please, be sure to work with an updated collection of the CBfonts;
with a *2020* updated version of the TeX system; with a babel version
3.9g or later; with the language description file greek.ldf version 1.9b
-or later; teubner version 6.2 and later patches the modifications of
+or later; teubner version 5.2 and later patches the modifications of
greek.ldf 1.10 so as cope with the ancient Greek numbering system. The
teubner package works also with previous versions of the above pieces of
software, but with limited performances.
diff --git a/macros/latex/contrib/teubner/teubner-doc.pdf b/macros/latex/contrib/teubner/teubner-doc.pdf
index 99117e0e59..1facc3adc6 100644
--- a/macros/latex/contrib/teubner/teubner-doc.pdf
+++ b/macros/latex/contrib/teubner/teubner-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/teubner/teubner-doc.tex b/macros/latex/contrib/teubner/teubner-doc.tex
index a0928ce0c1..aed4713fcf 100644
--- a/macros/latex/contrib/teubner/teubner-doc.tex
+++ b/macros/latex/contrib/teubner/teubner-doc.tex
@@ -46,7 +46,7 @@
An extension for Greek philology\\
User manual}
\author{Claudio Beccari\thanks{\texttt{claudio dot beccari at gmail dot com}}}
-\date{August 2022}% <---- this is the date of the teubenr-doc document!
+\date{October 2022}% <---- this is the date of the teubenr-doc document!
\def\comando#1{\expandafter\texttt\expandafter{\string#1}}
\def\cs#1{\texttt{\char92#1}}
\def\ARG#1{\texttt{\char123}\meta{#1}\texttt{\char125}}
diff --git a/macros/latex/contrib/teubner/teubner.dtx b/macros/latex/contrib/teubner/teubner.dtx
index 04a2072d5d..6a3e029252 100644
--- a/macros/latex/contrib/teubner/teubner.dtx
+++ b/macros/latex/contrib/teubner/teubner.dtx
@@ -43,7 +43,7 @@ See the end of the file.
%<package>\ProvidesPackage{teubner}[%
%<tbtx>\ProvidesPackage{teubnertx}[%
%<*driver,package,tbtx>
-2022/08/27 v.5.7
+2022/10/01 v.5.7.1
%<package>Extensions for Greek philology]
%<tbtx>Access to the LGR encoded Greek fonts that match the TX fonts]
%</driver,package,tbtx>
@@ -84,7 +84,7 @@ See the end of the file.
%</driver>
% \fi
%
-% \CheckSum{4189}
+% \CheckSum{4190}
% \begin{multicols}{2}\tableofcontents\end{multicols}
%
%
@@ -2257,7 +2257,7 @@ Type X <return> to exit.}%
{\metricsfont>}}% litterae certe addendae
\providecommand\LLadd{}
\RenewDocumentCommand{\LLadd}{O{0pt}m O{0pt}}{%
- {\metricsfont<\kern-0.3ex<}{\kern-#1\relax#2\kern-#3}%
+ {\metricsfont<\kern-0.3ex<\kern-0.3ex}{\kern-#1\relax#2\kern-#3}%
{\metricsfont>\kern-0.3ex>}%
}% litterae certe addendae
\DeclareRobustCommand{\ladd}[1]{{\metricsfont\kern.15ex[\negthinspace}%
diff --git a/macros/latex/contrib/teubner/teubner.pdf b/macros/latex/contrib/teubner/teubner.pdf
index 362ca69f6a..ab9ec25648 100644
--- a/macros/latex/contrib/teubner/teubner.pdf
+++ b/macros/latex/contrib/teubner/teubner.pdf
Binary files differ
diff --git a/macros/latex/contrib/teubner/teubner.txt b/macros/latex/contrib/teubner/teubner.txt
index 1c088910a2..5bbd82c191 100644
--- a/macros/latex/contrib/teubner/teubner.txt
+++ b/macros/latex/contrib/teubner/teubner.txt
@@ -1,5 +1,5 @@
- THE TEUBNER PACKAGE VERSION 5.7 OF AUGUST 2022
+ THE TEUBNER PACKAGE VERSION 5.7 OF OCTOBER 2022
EXTENSION FOR PHILOLOGICAL TYPESETTING
@@ -26,7 +26,7 @@ documentation file teubner.pdf, the byproduct files teubner.sty,
by running pdflatex on the source file teubner-doc.tex source file.
These two .pdf files are already contained in the bundle.
-File teubner-doc.pdf is the documentation file that shows what can be
+File teubner-doc.pdf is the documentation file that shows what can be
done with this extension package and displays several examples.
Versiosn 5.2 and later of the teubner package is compliant with the Greek
@@ -45,7 +45,7 @@ transform Arabic numerals into the classical Milesian and Attic number
representations. From version 5.0 the teubner package has been patched
in order to re-establish the above number transformations; some other
improvements have been added that are transparent to the end user, since
-they deal with the package internal workings. But these improvements
+they deal with the package internal workings. But these improvements
require a recent installation of the TeX system, because they use
interfaces to the new LaTeX 3 language; the minimum date of the LaTeX
kernel should not be earlier than January 2020.
@@ -53,19 +53,19 @@ kernel should not be earlier than January 2020.
Some time ago Antonis Tsolomitis uploaded the package txfontsb which
adds the possibility of using nice TX compatible Greek fonts when using
the TX latin fonts so as to let the users typeset their documents in
-mixed script. The upright shape resembles the traditional Didot one,
+mixed script. The upright shape resembles the traditional Didot one,
and the italic shape resembles the Lipsian one; they come in both the
medium and the bold series and match the TX latin fonts pretty well.
-They probably match also the newer newtxtext fonts by Michael Sharpe,
+They probably match also the newer newtx text fonts by Michael Sharpe,
but since the latter have different font family names, the automatically
produced .fd files for adapting the LGR encoded fonts to the TX fonts
-are not suited for the newtxtext fonts; in order to have matching .fd
+are not suited for the newtx text fonts; in order to have matching .fd
files it is necessary to proceed in the same way as with any other font
collection different from the TX one; the procedure is described in the
teubner-doc.pdf document.
Although Tsolomitis' fonts satisfy very well the everyday typesetting
-necessities of the Greek users and blend well also with the TX math
+needs of the Greek users and blend well also with the TX math
fonts, they do not satisfy the requirements of the teubner package. This
is why the processing of the teubner.dtx file generates also the file
teubnertx.sty that is being input at begin document time when the user
@@ -75,7 +75,7 @@ In order to use this extension package with LaTeX you have to install it.
May be the very installation of your (recent) TeX system distribution
already provided for this task; may be your TeX system is configured to
load missing packages on the fly. In any case you can check and possibly
-run your Package Manager (with MiKTeX follow the path:
+run your Package Manager: with MiKTeX follow the path:
Programs|MiKTeX Settings|Packages;
with TeXlive and MacTeX (if their installation configuration was not
the default complete one) run tlmgr.
@@ -99,10 +99,10 @@ teubner.pdf file that you get by running pdflatex directly on teubner.dtx.
For what concerns fonts, they should already be installed with a recent
TeX system distribution; this means that there are already all the
files TeX-the-program needs in order to do its work; there is one
-point, though, that requires full attention; the default basic TeX
+point, though, that requires full attention; the default *basic* TeX
system installation loads only the PostScript fonts in size 10pt; all
other sizes are obtained by reducing or enlarging that single size.
-A complete TeX system installation does not exhibit this limitation.
+A *complete* TeX system installation does not exhibit this limitation.
There are also non standard scalable Type 1 fonts, such for example, the
Fourier ones, that come only in one size, the 10pt one; for these
fonts it is not strictly necessary to do the same with the sizes of the