summaryrefslogtreecommitdiff
path: root/macros/latex/contrib
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2022-05-03 03:00:58 +0000
committerNorbert Preining <norbert@preining.info>2022-05-03 03:00:58 +0000
commitcb97c45e0fb2c06f21cef857402fab9a36125446 (patch)
tree31fbdbd9ee99992329fe12c479b7237d91488ac7 /macros/latex/contrib
parent29bacc2ed13a988db81626180c697ecff8583672 (diff)
CTAN sync 202205030300
Diffstat (limited to 'macros/latex/contrib')
-rw-r--r--macros/latex/contrib/easybook/easybook.dtx16
-rw-r--r--macros/latex/contrib/easybook/easybook.pdfbin591122 -> 591121 bytes
-rw-r--r--macros/latex/contrib/easybook/easybook.tex4
-rw-r--r--macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdfbin498392 -> 532726 bytes
-rw-r--r--macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex335
-rw-r--r--macros/latex/contrib/proflycee/tex/ProfLycee.sty92
6 files changed, 437 insertions, 10 deletions
diff --git a/macros/latex/contrib/easybook/easybook.dtx b/macros/latex/contrib/easybook/easybook.dtx
index 2a1c0e3d78..4d64ffcd4a 100644
--- a/macros/latex/contrib/easybook/easybook.dtx
+++ b/macros/latex/contrib/easybook/easybook.dtx
@@ -15,7 +15,7 @@
%<*class>
\NeedsTeXFormat{LaTeX2e}[2020/10/01]
\RequirePackage{l3keys2e}
-\ProvidesExplClass{easybook}{2022/05/01}{1.682}
+\ProvidesExplClass{easybook}{2022/05/02}{1.683}
{Easily typesetting Chinese theses or books}
\bool_set_false:N \l__eb_compile_draft_bool
@@ -303,7 +303,7 @@
%<*package>
\NeedsTeXFormat{LaTeX2e}[2020/10/01]
\RequirePackage{l3keys2e,etoolbox}
-\ProvidesExplPackage{easybase}{2022/05/01}{1.682}
+\ProvidesExplPackage{easybase}{2022/05/02}{1.683}
{Easily typesetting Chinese theses or books}
\cs_generate_variant:Nn \dim_set:Nn { NV }
@@ -1073,6 +1073,16 @@
\group_end:
\H@@footnotemark
}
+\cs_set:Npn \@xfootnote [#1]
+ {
+ \group_begin:
+ \int_set:cn { c@\@mpfn } {#1}
+ \unrestored@protected@xdef\@thefnmark{\thempfn}
+ \unrestored@protected@xdef\@the@up@fnmark{\theupfootnote}
+ \group_end:
+ \@footnotemark
+ \@footnotetext
+ }
\cs_set_protected:Npn \footnote
{
\peek_meaning:NTF [
@@ -2323,7 +2333,7 @@
}
%</package>
%<*tcolorbox>
-\ProvidesExplFile{eb-tcolorbox.cfg}{2022/05/01}{1.682}
+\ProvidesExplFile{eb-tcolorbox.cfg}{2022/05/02}{1.683}
{Customization of tcolorbox for easybook}
\cs_set_protected:Npn \addtotcbstyle #1#2
diff --git a/macros/latex/contrib/easybook/easybook.pdf b/macros/latex/contrib/easybook/easybook.pdf
index b0ba222f53..c650bd28d4 100644
--- a/macros/latex/contrib/easybook/easybook.pdf
+++ b/macros/latex/contrib/easybook/easybook.pdf
Binary files differ
diff --git a/macros/latex/contrib/easybook/easybook.tex b/macros/latex/contrib/easybook/easybook.tex
index 0525656103..a85792d876 100644
--- a/macros/latex/contrib/easybook/easybook.tex
+++ b/macros/latex/contrib/easybook/easybook.tex
@@ -21,8 +21,8 @@
name = easybook,
color-scheme = blue,
title = EASYBOOK使用手册,
- version = v1.682,
- date = 2022/05/01,
+ version = v1.683,
+ date = 2022/05/02,
authors = 瞿毅,
info = 简便地排版中文学位论文或书籍,
email = toquyi@163.com,
diff --git a/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf b/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf
index 5349f06c06..7279521831 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 0132bc7c69..f63e0c8ba5 100644
--- a/macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex
+++ b/macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex
@@ -34,8 +34,8 @@
\setlength{\parindent}{0pt}
\definecolor{LightGray}{gray}{0.9}
-\def\PLversion{1.1.1}
-\def\PLdate{28 Avril 2022}
+\def\PLversion{1.1.3}
+\def\PLdate{2 Mai 2022}
\tcbset{vignettes/.style={%
nobeforeafter,box align=base,boxsep=0pt,enhanced,sharp corners=all,rounded corners=southeast,%
@@ -184,6 +184,12 @@ Un cartouche (\textsf{tcbox}) pour présenter des codes de partage \textsf{capyt
Une commande pour tracer un pavé en droit, en \TikZ, avec création des nœuds liés aux sommets.
+Une commande pour simplifier des calculs sous forme fractionnaire.
+
+Une commande pour simplifier l'écriture d'un ensemble, avec espaces \og automatiques \fg.
+
+Une commande pour créer, en \TikZ, la \textit{toile} pour une suite récurrente.
+
\vfill
\hrule
@@ -1477,7 +1483,7 @@ L'idée est d'obtenir un tétraèdre, dans un environnement \TikZ, avec les nœu
\begin{codetex}[listing only]
...
\begin{tikzpicture}[<options>]
- \tetraCF[<options>]
+ \tetraPL[<options>]
...
\end{tikzpicture}
\end{codetex}
@@ -1582,8 +1588,331 @@ Pour \textit{illustrer} un peu les \Cle{clés}, un petit schéma, avec les diff
\newpage
+\section{Fractions, ensembles}
+
+\subsection{Fractions}
+
+\begin{codeidee}
+L'idée est d'obtenir une commande pour simplifier un calcul sous forme de fraction irréductible.
+\end{codeidee}
+
+\begin{codetex}[listing only]
+\convertfraction[<option>]{<argument>}
+\end{codetex}
+
+\begin{codecles}
+Peu d'options pour ces commandes :
+
+\begin{itemize}
+ \item le premier argument, optionnel, permet de spécifier le mode de sortie de la fraction \textsf{[t]} pour \textsf{tfrac} et \textsf{[d]} pour \textsf{dfrac} ;
+ \item le second, mandataire, est le \textsf{calcul} ou la \textsf{division} à convertir.
+\end{itemize}
+
+À noter que la macro est dans un bloc \textsf{ensuremath} donc les \textsf{\$\ldots\$} ne sont pas nécessaires.
+\end{codecles}
+
+\begin{codetex}[listing only]
+\convertfraction{111/2145}
+\convertfraction{111/3}
+$\frac{111}{2145}=\convertfraction{111/2145}$
+$\frac{3}{15}=\convertfraction[]{3/15}$
+$\tfrac{3}{15}=\convertfraction[t]{3/15}$ #formatage en \tfrac
+$\dfrac{3}{15}=\convertfraction[d]{3/15}$ #formatage en \dfrac
+$\dfrac{0,42}{0,015}=\convertfraction[d]{0.42/0.015}$
+$\dfrac{0,41}{0,015}=\convertfraction[d]{0.41/0.015}$
+$\dfrac{1}{7}+\dfrac{3}{8}=\convertfraction[d]{1/7+3/8}$
+$\convertfraction[d]{1+1/2}$
+$\convertfraction{0.1/0.7+30/80}$
+\end{codetex}
+
+\begin{codesortie}
+\convertfraction{111/2145}
+
+\smallskip
+
+\convertfraction{111/3}
+
+\smallskip
+
+$\frac{111}{2145}=\convertfraction{111/2145}$
+
+\smallskip
+
+$\frac{3}{15}=\convertfraction[]{3/15}$
+
+\smallskip
+
+$\tfrac{3}{15}=\convertfraction[t]{3/15}$
+
+\smallskip
+
+$\dfrac{3}{15}=\convertfraction[d]{3/15}$
+
+\smallskip
+
+$\dfrac{0,42}{0,015}=\convertfraction[d]{0.42/0.015}$
+
+\smallskip
+
+$\dfrac{0,41}{0,015}=\convertfraction[d]{0.41/0.015}$
+
+\smallskip
+
+$\dfrac{1}{7}+\dfrac{3}{8}=\convertfraction[d]{1/7+3/8}$
+
+\smallskip
+
+$\convertfraction[d]{1+1/2}$
+
+\smallskip
+
+$\convertfraction{0.1/0.7+30/80}$
+\end{codesortie}
+
+\begin{codeinfo}
+A priori le package \ctex{xint} permet de s'en sortir pour des calculs \og simples \fg, je ne garantis pas que tout calcul ou toute division donne un résultat \textit{satisfaisant} !
+\end{codeinfo}
+
+\pagebreak
+
+\subsection{Ensembles}
+
+\begin{codeidee}
+L'idée est d'obtenir une commande pour simplifier l'écriture d'un ensemble d'éléments, en laissant gérer les espaces.
+
+Les délimiteurs de l'ensemble créé sont toujours \textsf{\{~~\}}.
+\end{codeidee}
+
+\begin{codetex}[listing only]
+\ensPL[<clés>]{<liste>}
+\end{codetex}
+
+\begin{codecles}
+Peu d'options pour ces commandes :
+
+\begin{itemize}
+ \item le premier argument, optionnel, permet de spécifier les \Cle{Clés} :
+ \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}
+ \end{itemize}
+ \item le second, mandataire, est la \textsf{liste} des éléments, séparés par \textsf{/}.
+\end{itemize}
+\end{codecles}
+
+\begin{codetex}[listing only]
+$\ensPL{a/b/c/d/e}$
+$\ensPL[mathpunct=false]{a/b/c/d/e}$
+$\ensPL[sep={,}]{a/b/c/d/e}$
+$\ensPL[option={\strut}]{a/b/c/d/e}$
+$\ensPL{ \frac{1}{1+\frac{1}{3}} / b / c / d / \frac{1}{2} }$
+\end{codetex}
+
+\begin{codesortie}
+$\ensPL{a/b/c/d/e}$
+
+\smallskip
+
+$\ensPL[mathpunct=false]{a/b/c/d/e}$
+
+\smallskip
+
+$\ensPL[sep={,}]{a/b/c/d/e}$
+
+\smallskip
+
+$\ensPL[option={\strut}]{a/b/c/d/e}$
+
+\smallskip
+
+$\ensPL{ \displaystyle\frac{1}{1+\frac{1}{3}} / b / c / d / \displaystyle\frac{1}{2} }$
+\end{codesortie}
+
+\begin{codeinfo}
+Attention cependant au comportement de la commande avec des éléments en mode \textsf{mathématique}, ceux-ci peuvent générer une erreur si \textsf{displaystyle} n'est pas utilisé\ldots
+\end{codeinfo}
+
+\newpage
+
+\section{Suites récurrentes et \og toile \fg}
+
+\subsection{Idée}
+
+\begin{codeidee}
+L'idée est d'obtenir une commande pour tracer (en \TikZ) la \og toile \fg{} permettant d'obtenir -- graphiquement -- les termes d'une suite récurrente définie par une relation $u_{n+1}=f(u_n)$.
+
+\smallskip
+
+Comme pour les autres commandes \TikZ, l'idée est de laisser l'utilisateur définir et créer son environnement \TikZ, et d'insérer la commande \ctex{recurrPL} pour afficher la \og toile \fg.
+\end{codeidee}
+
+\subsection{Commandes}
+
+\begin{codetex}[listing only]
+...
+\begin{tikzpicture}[<options>]
+ ...
+ \recurrPL[<clés>][<options du tracé>][<option supplémentaire des termes>]
+ ...
+\end{tikzpicture}
+\end{codetex}
+
+\begin{codecles}
+Plusieurs \Cle{arguments} (optionnels) sont disponibles :
+
+\begin{itemize}
+ \item le premier argument optionnel définit les \Cle{Clés} de la commande :
+ \begin{itemize}
+ \item la clé \Cle{fct} qui définit la fonction $f$ ;\hfill{}défaut \Cle{vide}
+ \item la clé \Cle{nom} qui est le \textit{nom} de la suite ;\hfill{}défaut \Cle{u}
+ \item la clé \Cle{no} qui est l'indice initial ;\hfill{}défaut \Cle{0}
+ \item la clé \Cle{uno} qui est la valeur du terme initial ;\hfill{}défaut \Cle{vide}
+ \item la clé \Cle{nb} qui est le nombre de termes à construire ;\hfill{}défaut \Cle{5}
+ \item la clé \Cle{poslabel} qui correspond au placement des labels par rapport à l'axe des abscisses ;\hfill{}défaut \Cle{below}
+ \item la clé \Cle{decallabel} qui correspond au décalage des labels par rapport aux abscisses ;\hfill{}défaut \Cle{6pt}
+ \item la clé \Cle{taillelabel} qui correspond à la taille des labels ;\hfill{}défaut \Cle{small}
+ \item un booléen \Cle{afftermes} qui permet d'afficher les termes de la suite sur l'axe $(Ox)$.\hfill{}défaut \Cle{true}
+ \end{itemize}
+ \item le deuxième argument optionnel concerne les \Cle{options} du tracé de l'\textit{escalier} en \textit{langage \TikZ} ;
+
+ \hfill{}défaut \Cle{thick,color=magenta} ;
+ \item le troisième argument optionnel concerne les \Cle{options} du tracé des termes en \textit{langage \TikZ}.
+
+ \hfill{}défaut \Cle{dotted}.
+\end{itemize}
+\end{codecles}
+
+\begin{codeinfo}
+Il est à noter que le \textsf{code} n'est pas autonome, et doit être intégré dans un environnement \ctex{tikzpicture}.
+
+\smallskip
+
+L'utilisateur est donc libre de définir ses styles pour l'affichage des éléments de son graphique, et il est libre également de rajouter des éléments en plus du tracé de la \textit{toile} !
+
+\smallskip
+
+La macro ne permet -- pour le moment -- ni de tracer la bissectrice, ni de tracer la courbe$\ldots$
+
+En effet, il y aurait trop d'options pour ces deux éléments, et l'idée est quand même de conserver une commande \textit{simple} ! Donc l'utilisateur se chargera de tracer et de personnaliser sa courbe et sa bissectrice !
+\end{codeinfo}
+
+\subsection{Exemples}
+
+\begin{codeinfo}
+On va tracer la \textit{toile} des 4 premiers termes de la suite récurrente $\begin{dcases} u_1 = 1 \\ u_{n+1} = \sqrt{5u_n}+1 \text{ pour tout entier } n \geqslant 1\end{dcases}$.
+\end{codeinfo}
+
+\begin{codetex}[tikz lower]
+%code tikz
+\def\x{1.5cm}\def\y{1.5cm}
+\def\xmin{0}\def\xmax{10}\def\xgrille{1}\def\xgrilles{0.5}
+\def\ymin{0}\def\ymax{8}\def\ygrille{1}\def\ygrilles{0.5}
+%axes et grilles
+\draw[xstep=\xgrilles,ystep=\ygrilles,line width=0.3pt,lightgray!50] (\xmin,\ymin) grid (\xmax,\ymax);
+\draw[xstep=\xgrilles,ystep=\ygrilles,line width=0.6pt,lightgray!50] (\xmin,\ymin) grid (\xmax,\ymax);
+\draw[line width=1.5pt,->,darkgray] (\xmin,0)--(\xmax,0) ;
+\draw[line width=1.5pt,->,darkgray] (0,\ymin)--(0,\ymax) ;
+\foreach \x in {0,1,...,9} {\draw[darkgray,line width=1.5pt] (\x,4pt) -- (\x,-4pt) ;}
+\foreach \y in {0,1,...,7} {\draw[darkgray,line width=1.5pt] (4pt,\y) -- (-4pt,\y) ;}
+%fonction définie et réutilisable
+\def\f{sqrt(5*\x)+1}
+%toile
+\recurrPL[fct={\f},no=1,uno=1,nb=4,decallabel=4pt]
+%éléments supplémentaires
+\draw[very thick,blue,domain=0:8,samples=250] plot (\x,{\f}) ;
+\draw[very thick,ForestGreen,domain=0:8,samples=2] plot (\x,\x) ;
+\end{codetex}
+
+\begin{codeinfo}
+Peut-être que -- ultérieurement -- des options \textit{booléennes} seront disponibles pour un tracé \textit{générique} de la courbe et de la bissectrice, mais pour le moment la \textsf{macro} ne fait \textit{que} l'escalier.
+\end{codeinfo}
+
+\subsection{Influence des paramètres}
+
+\begin{codetex}[listing only]
+\begin{center}
+ \begin{tikzpicture}[x=4cm,y=3cm]
+ %axes + grilles + graduations
+ ...
+ %fonction
+ \def\f{-0.25*\x*\x+\x}
+ %tracés
+ \begin{scope}
+ \clip (0,0) rectangle (2.5,1.25) ;
+ \draw[line width=1.25pt,blue,domain=0:2.5,samples=200] plot (\x,{\f}) ;
+ \end{scope}
+ \recurrPL[fct={\f},no=0,uno=2,nb=5,poslabel=above right,decallabel=0pt]
+\end{tikzpicture}
+\end{center}
+\end{codetex}
+
+\medskip
+
+\begin{codesortie}
+\begin{center}
+ \begin{tikzpicture}[x=4cm,y=3cm]
+ \draw[xstep=0.25,ystep=0.25,line width=0.3pt,lightgray!50] (0,0) grid (2.5,1.25);
+ \draw[thick,->] (0,0)--(2.5,0) ;
+ \draw[thick,->] (0,0)--(0,1.25) ;
+ \foreach \x in {0,1,2}
+ \draw[line width=1.25pt] (\x,4pt) -- (\x,-4pt) node[below] {\num{\x}} ;
+ \foreach \y in {0,0.5,1.0}
+ \draw[line width=1.25pt] (4pt,\y) -- (-4pt,\y) node[left] {\num{\y}} ;
+ \draw[line width=1.25pt,red](0,0) -- (1.25,1.25) ;
+ %fonction
+ \def\f{-0.25*\x*\x+\x}
+ %tracés
+ \begin{scope}
+ \clip (0,0) rectangle (2.5,1.25) ;
+ \draw[line width=1.25pt,blue,domain=0:2.5,samples=200] plot (\x,{\f}) ;
+ \end{scope}
+ \recurrPL[fct={\f},no=0,uno=2,nb=5,poslabel=above right,decallabel=0pt]
+\end{tikzpicture}
+\end{center}
+\end{codesortie}
+
+\begin{codetex}[listing only]
+\begin{center}
+ \begin{tikzpicture}[x=5cm,y=1.5cm]
+ ...
+ \def\f{-0.25*\x*\x+\x}
+ \recurrPL%
+ [fct={\f},no=0,uno=1,nb=7,poslabel=above right,decallabel=0pt,afftermes=false]%
+ [line width=1.25pt,ForestGreen,densely dashed][]
+ \draw[line width=1.25pt,blue,domain=0:2.25,samples=2] plot(\x,{\x});
+ \draw[line width=1.25pt,red,domain=0.8:2.5,samples=250] plot(\x,{\f});
+ \end{tikzpicture}
+\end{center}
+\end{codetex}
+
+\begin{codesortie}
+\begin{center}
+ \begin{tikzpicture}[x=5cm,y=1.5cm]
+ %axes et grille
+ \draw[xstep=0.5,ystep=0.25,line width=0.3pt,lightgray!50] (0,0) grid (2.5,2.25);
+ \draw[thick,->] (0,0)--(2.5,0) ;
+ \draw[thick,->] (0,0)--(0,2.25) ;
+ \foreach \x in {0,0.5,...,2}
+ \draw[line width=1.25pt] (\x,4pt) -- (\x,-4pt) node[below] {\num{\x}};
+ \foreach \y in {0,0.5,...,2}
+ \draw[line width=1.25pt] (4pt,\y) -- (-4pt,\y) node[left] {\num{\y}};
+ %fonction
+ \def\f{1+1/\x}
+ %tracés
+ \recurrPL[fct={\f},no=0,uno=1,nb=7,poslabel=above right,decallabel=0pt,afftermes=false][line width=1.25pt,ForestGreen,densely dashed][]
+ \draw[line width=1.25pt,blue,domain=0:2.25,samples=2] plot(\x,{\x});
+ \draw[line width=1.25pt,red,domain=0.8:2.5,samples=250] plot(\x,{\f});
+ \end{tikzpicture}
+\end{center}
+\end{codesortie}
+
+\newpage
+
\section{Historique}
+{\small \bverb|v1.1.3|~:~~~~Ajout des commandes \textsf{convertfraction}, \textsf{ensPL} et \textsf{recurrPL} (changement de numérotation du package également)
+
{\small \bverb|v1.1.1|~:~~~~Modification mineure de l'environnement CF, avec prise de charge de la taille du texte !
{\small \bverb|v1.1.0|~:~~~~Ajout d'une commande \textsf{tetraPL} pour créer des tétraèdres (avec nœuds) en \TikZ
diff --git a/macros/latex/contrib/proflycee/tex/ProfLycee.sty b/macros/latex/contrib/proflycee/tex/ProfLycee.sty
index d88ec5e849..44e3c2651c 100644
--- a/macros/latex/contrib/proflycee/tex/ProfLycee.sty
+++ b/macros/latex/contrib/proflycee/tex/ProfLycee.sty
@@ -3,7 +3,9 @@
% or later, see http://www.latex-project.org/lppl.txtf
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{ProfLycee}[2022/04/28 - v1.1.1 - Aide pour l'utilisation de LaTeX en lycée]
+\ProvidesPackage{ProfLycee}[2022/05/02 - v1.1.3 - Aide pour l'utilisation de LaTeX en lycée]
+% 1.1.3 Ajout d'une commande ensemble pour créer un ensemble à partir d'une liste
+% 1.1.2 Modifications mineures
% 1.1.1 Modification mineure de l'environnement CF, avec prise de charge de la taille du texte !
% 1.1.0 Ajout d'une commande tetraPL pour un tetraèdre dans un environnement TikZ
% 1.0.9 Ajout d'une commande pavePL pour un pave droit dans un environnement TikZ
@@ -46,7 +48,7 @@
\usetikzlibrary{calc}
\usetikzlibrary{decorations.pathreplacing}
\usetikzlibrary{decorations.markings}
-\usetikzlibrary{arrows.meta}
+\usetikzlibrary{arrows,arrows.meta}
%tcolorbox
\RequirePackage[most]{tcolorbox}
%divers
@@ -796,4 +798,90 @@
{\draw[dashed,\PFTetraThick] (\TetraA)--(\TetraC) ;}
}
+%============EnsembleList============== OK !!
+\defKV[kvensemble]{%
+ sep=\def\PLenssep{#1},%
+ option=\def\PLensopt{#1}
+}
+
+\setKVdefault[kvensemble]{%
+ sep={;},%
+ option=,%
+ mathpunct=true
+}
+
+\newcommand\ensPL[2][1]{%
+ \useKVdefault[kvensemble]
+ \setKV[kvensemble]{#1}
+ \ifboolKV[kvensemble]{mathpunct}%
+ {\left\lbrace \PLensopt{} \mathpunct{} \StrSubstitute{#2}{/}{\mathpunct{}{\PLenssep}\mathpunct{}} \mathpunct{} \right\rbrace}%
+ {\left\lbrace \PLensopt{} \StrSubstitute{#2}{/}{{\PLenssep}} \right\rbrace}
+}
+
+%===============SimplFrac============== OK !!
+\DeclareDocumentCommand\convertfraction{ O{} m }{% argument optionnel [d ou t] puis argument mandataire {calcul ou fraction}
+ \def\calculargument{\xintPRaw{\xintIrr{\xinteval{#2}}}}%on calcule et on transforme en A/B
+ \IfSubStr{\calculargument}{/}%on teste si le symbole / apparaît
+ {%si oui := fraction
+ \StrBefore{\calculargument}{/}[\numerateur]%on extrait le numérateur
+ \StrBehind{\calculargument}{/}[\denominateur]%on extrait le dénominateur
+ \ifblank{#1}{\ensuremath{\frac{\numerateur}{\denominateur}}}{}%si l'argument optionnel est vide
+ \IfStrEq{#1}{d}{\ensuremath{\dfrac{\numerateur}{\denominateur}}}{}%si l'arg opt est d
+ \IfStrEq{#1}{t}{\ensuremath{\tfrac{\numerateur}{\denominateur}}}{}%si l'arg opt est t
+ }{%si non := entier
+ \num{\calculargument}%on affiche l'entier, avec le package siunitx
+ }
+}
+
+%================CabWeb================ OK !!
+\defKV[webrecurr]{%
+ fct=\def\PLRecurfct{#1},%
+ nom=\def\PLRecurnom{#1},%
+ no=\def\PLRecurno{#1},%
+ nb=\def\PLRecurnb{#1},%
+ uno=\def\PLRecuruno{#1},%
+ poslabel=\def\PLRecurposlab{#1},%
+ decallabel=\def\PLRecuroffset{#1},%
+ taillelabel=\def\PLRecurlabelsize{#1},%
+}
+
+\setKVdefault[webrecurr]{
+ no=0,%
+ nom=u,%
+ nb=5,%
+ afftermes=true,%
+ poslabel=below,%
+ decallabel=6pt,%
+ taillelabel=\small
+}
+
+%\newcommand\recurr[1][]{%
+ \NewDocumentCommand\recurrPL{ O{} O{thick,color=magenta} O{dotted} }{
+ %<clés> + <style cabweb> + <style supplémentaire pointillés>
+ \useKVdefault[webrecurr]%
+ \setKV[webrecurr]{#1}% on paramètres les nouvelles clés et on les simplifie
+ \foreach \i [remember=\i as \x (initially \PLRecuruno)] in {1,...,\PLRecurnb}{%
+ \def\y{\fpeval{\PLRecurfct}}
+ %test de la position courbe / bissectrice ?
+ \ifnum \i=1
+ \newdimen \X
+ \newdimen \Y
+ \X = \x pt
+ \Y = \y pt
+ \ifdim \Y < \X
+ \draw[#2] (\x,\y)--(\y,\y) ;
+ \else
+ \draw[#2] (\x,\x)--(\x,\y)--(\y,\y) ;
+ \fi
+ \else
+ \draw[#2] (\x,\x)--(\x,\y)--(\y,\y) ;
+ \fi
+ \ifboolKV[webrecurr]{afftermes}
+ {\def\indice{\fpeval{\i+\PLRecurno-1}}
+ \draw[#2,#3] (\x,\y)--(\x,0) node[\PLRecurposlab=\PLRecuroffset,font=\PLRecurlabelsize]{$\PLRecurnom_\indice$};}
+ {}
+ \def\i{\fpeval{\y}}%
+ }
+ }
+
\endinput \ No newline at end of file