texlive[72226] Master/texmf-dist: tkz-grapheur (8sep24)

commits+karl at tug.org commits+karl at tug.org
Sun Sep 8 21:37:56 CEST 2024


Revision: 72226
          https://tug.org/svn/texlive?view=revision&revision=72226
Author:   karl
Date:     2024-09-08 21:37:56 +0200 (Sun, 08 Sep 2024)
Log Message:
-----------
tkz-grapheur (8sep24)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/tkz-grapheur/tkz-grapheur-doc-en.pdf
    trunk/Master/texmf-dist/doc/latex/tkz-grapheur/tkz-grapheur-doc-en.tex
    trunk/Master/texmf-dist/doc/latex/tkz-grapheur/tkz-grapheur-doc-fr.pdf
    trunk/Master/texmf-dist/doc/latex/tkz-grapheur/tkz-grapheur-doc-fr.tex
    trunk/Master/texmf-dist/tex/latex/tkz-grapheur/tkz-grapheur.sty

Modified: trunk/Master/texmf-dist/doc/latex/tkz-grapheur/tkz-grapheur-doc-en.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/tkz-grapheur/tkz-grapheur-doc-en.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tkz-grapheur/tkz-grapheur-doc-en.tex	2024-09-08 19:37:47 UTC (rev 72225)
+++ trunk/Master/texmf-dist/doc/latex/tkz-grapheur/tkz-grapheur-doc-en.tex	2024-09-08 19:37:56 UTC (rev 72226)
@@ -29,8 +29,8 @@
 \hypersetup{pdfborder=0 0 0}
 \usepackage[margin=2cm]{geometry}
 \setlength{\parindent}{0pt}
-\def\TPversion{0.1.6}
-\def\TPdate{13/07/2024}
+\def\TPversion{0.1.8}
+\def\TPdate{08/09/2024}
 \usepackage{soul}
 \usepackage{codehigh}
 \usepackage{tabularray}
@@ -1684,6 +1684,7 @@
 
 \begin{quote}
 \begin{verbatim}
+0.1.8 : New commands [in french doc] (binomial, cabweb,\ldots)
 0.1.6 : Vertical asymptote + [in french doc] commands for integrals
 0.1.5 : Initial version [en]
 \end{verbatim}

Modified: trunk/Master/texmf-dist/doc/latex/tkz-grapheur/tkz-grapheur-doc-fr.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/tkz-grapheur/tkz-grapheur-doc-fr.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tkz-grapheur/tkz-grapheur-doc-fr.tex	2024-09-08 19:37:47 UTC (rev 72225)
+++ trunk/Master/texmf-dist/doc/latex/tkz-grapheur/tkz-grapheur-doc-fr.tex	2024-09-08 19:37:56 UTC (rev 72226)
@@ -7,6 +7,7 @@
 \usepackage[utf8]{inputenc}
 \usepackage{tkz-grapheur}
 \usepackage{amsmath}
+\usepackage{enumitem}
 \usepackage{fancyvrb}
 \usepackage{fancyhdr}
 \usepackage{hyperref}
@@ -29,8 +30,8 @@
 \hypersetup{pdfborder=0 0 0}
 \usepackage[margin=2cm]{geometry}
 \setlength{\parindent}{0pt}
-\def\TPversion{0.1.6}
-\def\TPdate{13/07/2024}
+\def\TPversion{0.1.8}
+\def\TPdate{08/09/2024}
 \usepackage{soul}
 \usepackage{codehigh}
 \usepackage{tabularray}
@@ -332,17 +333,24 @@
 \tikzset{pflgrillep/.style={thin,lightgray}}
 \tikzset{pflgrilles/.style={very thin,lightgray}}
 \tikzset{pflaxes/.style={line width=0.8pt,->,>=latex}}
+\end{tcblisting}
 
-%style des points (courbe / nuage /labels /montecarlo)
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%style des points (courbe / nuage /labels / montecarlo)
 \tikzset{pflpoint/.style={line width=0.95pt}}
 \tikzset{pflpointc/.style={radius=1.75pt}}
 \tikzset{pflpointnuage/.style={radius=1.75pt}}
 \tikzset{pflpointmc/.style={radius=0.875pt}}
 \tikzset{pflnoeud/.style={}} %pour les inner sep par exemple :-)
+\tikzset{pflcourbediscont/.style={line width=1.1pt}}
+\end{tcblisting}
 
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
 %style des courbes
 \tikzset{pflcourbe/.style={line width=1.05pt}}
+\end{tcblisting}
 
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
 %style des traits (normaux, antécédents, images)
 \tikzset{pfltrait/.style={line width=0.8pt}}
 \tikzset{pfltraitantec/.style={line width=0.95pt,densely dashed}}
@@ -354,6 +362,18 @@
 \tikzset{pflflechegd/.style={<->,>=latex}}
 \end{tcblisting}
 
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%style des constructions ECC (courbe / paramètres)
+\tikzset{pfltraitsparamecc/.style={line width=0.9pt,densely dashed}}
+\tikzset{pflcourbeecc/.style={line width=1.05pt}}
+\end{tcblisting}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%style des constructions récurrence
+\tikzset{pfltraitrec/.style={line width=0.8pt}}
+\tikzset{pfltraitrecpointill/.style={pfltraitrec,densely dashed}}
+\end{tcblisting}
+
 L'idée est donc de pouvoir redéfinir globalement ou localement les styles, et éventuellement de rajouter des éléments, en utilisant \mintinline{latex}|monstyle/.append style={...}|.
 
 \subsection{Création de l'environnement}\label{creaenvt}
@@ -829,6 +849,38 @@
 \end{GraphiqueTikz}
 \end{tcblisting}
 
+\subsection{Marquer des points de discontinuité}\label{ptsdiscont}
+
+Il est possible de marquer des points de discontinuité, mais c'est commande est \textit{déconnectée} des commandes de tracé de courbes/splines.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%dans l'environnement GraphiqueTikz
+\AfficherPtsDiscont[clés]{liste}
+\end{tcblisting}
+
+Le premier argument, \textit{optionnel} et entre \MontreCode{[...]}, contient les \MontreCode{Clés} suivantes :
+
+\begin{itemize}
+	\item \MontreCode{Couleur=...} (\MontreCode{black} par défaut) ;
+	\item \MontreCode{Pos=...} (\MontreCode{D} par défaut) pour choisir la position de la discontinuité (parmi \MontreCode{G/D}) ;
+	\item \MontreCode{Echelle=...} (\MontreCode{1} par défaut) pour modifier l'échelle du symbole ;
+	\item \MontreCode{Type=...} (\MontreCode{par} par défaut) pour choisir le type de symbole, parmi \MontreCode{par/cro/rond/demirond}.
+\end{itemize}
+
+Le second argument, obligatoire et entre \MontreCode{\{...\}} permet de préciser la liste des points en lesquels le symbole de discontinuité sera positionné, sous la forme \MontreCode{x1/y1/d1 § x2/y2/d2 § ...} avec les points \MontreCode{(xi;yi)} et \MontreCode{f'(xi)=di}.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphiqueTikz}[x=1cm,y=1cm,Xmin=0,Xmax=10,Ymin=0,Ymax=5]
+	\TracerAxesGrilles[Elargir=2.5mm]{auto}{auto}
+	\DefinirCourbeSpline[Trace,Couleur=red]{0/1/-1 § 4/4/0}
+	\AfficherPtsDiscont{4/4/0}
+	\AfficherPtsDiscont[Pos=G,Type=cro]{0/1/-1}
+	\DefinirCourbeSpline[Trace,Couleur=blue]{5/1/1.5 § 8/4/0.5}
+	\AfficherPtsDiscont[Couleur=blue,Type=rond]{8/4/0.5}
+	\AfficherPtsDiscont[Couleur=blue,Pos=G,Type=demirond,Echelle=2]{5/1/1.5}
+\end{GraphiqueTikz}
+\end{tcblisting}
+
 \subsection{Récupérer les coordonnées de nœuds}\label{recupcoordo}
 
 Il est également possible, dans l'optique d'une réutilisation de coordonnées, de récupérer les coordonnées d'un nœud (défini ou déterminé).
@@ -1336,6 +1388,60 @@
 
 \pagebreak
 
+\subsection{Suites récurrentes et toiles}\label{toilerecurr}
+
+L'idée est d'obtenir une commande pour tracer 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)$.
+
+La commande est compatible avec une fonction précédemment définie, mais également avec une courbe type \textit{spline} précédemment définie.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%dans l'environnement GraphiqueTikz
+\TracerToileRecurrence[clés]{fct ou courbe}
+\end{tcblisting}
+
+Le premier argument, \textit{optionnel} et entre \MontreCode{[...]}, contient les \MontreCode{Clés} suivantes :
+
+\begin{itemize}
+	\item \MontreCode{Couleur=...} (\MontreCode{black} par défaut) ;
+	\item \MontreCode{Spline=...} (\MontreCode{false} par défaut) pour spécifier qu'une courbe \textit{spline} est utilisée ;
+	\item \MontreCode{No=...} (\MontreCode{0} par défaut) est l'indice initial ;
+	\item \MontreCode{Uno=...} est qui est la valeur du terme initial (à donner obligatoirement !) ;
+	\item \MontreCode{Nom=...} (\MontreCode{u} par défaut) est le nom de la suite ;
+	\item \MontreCode{Nb=...} (\MontreCode{5} par défaut) ;
+	\item \MontreCode{AffTermes=...} (\MontreCode{false} par défaut) qui est un booléen pour afficher les termes ;
+	\item \MontreCode{AffPointilles=...} (\MontreCode{true} par défaut) pour afficher les pointillés ;
+	\item \MontreCode{TailleLabel=...} (\MontreCode{\textbackslash small} par défaut) ;
+	\item \MontreCode{PosLabel=...} (\MontreCode{below} par défaut).
+\end{itemize}
+
+Le second argument, obligatoire et entre \MontreCode{\{...\}} permet de préciser l'objet avec lequel il faut effectuer les tracés (fonction ou nom\_courbe).
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphiqueTikz}%
+	[x=0.75cm,y=0.75cm,Xmin=0,Xmax=10,Xgrille=1,Xgrilles=0.5,
+	Ymin=0,Ymax=8,Ygrille=1,Ygrilles=0.5]
+	\TracerAxesGrilles[Elargir=2.5mm,Police=\small]{auto}{auto}
+	\DefinirCourbe[Couleur=red,Nom=cf,Debut=0,Fin=10,Trace]<f>{sqrt(5*x)+1}
+	\TracerCourbe[Couleur=blue]{x}
+	\TracerToileRecurrence[Couleur=orange,No=1,Uno=1]{f}
+\end{GraphiqueTikz}
+\end{tcblisting}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphiqueTikz}[x=4cm,y=3cm,Xmin=0,Xmax=2.5,Xgrille=1,Xgrilles=0.25,
+	Ymin=0,Ymax=1.25,Ygrille=0.5,Ygrilles=0.25]
+	\TracerAxesGrilles[Elargir=2.5mm,Police=\small]{auto}{auto}
+	\DefinirCourbeInterpo[Nom=interpotest,Couleur=blue,Trace]%
+		{(0,0)(0.5,0.75)(1,0.25)(2,1)(2.5,0.25)}
+	\TracerCourbe[Couleur=olive]{x}
+	\TracerToileRecurrence%
+		[AffTermes,Couleur=purple,Spline,No=0,Uno=2,PosLabel=above left]%
+		{interpotest}
+\end{GraphiqueTikz}
+\end{tcblisting}
+
+\pagebreak
+
 \section{Commandes spécifiques des fonctions de densité}
 
 \subsection{Loi normale}\label{loinormale}
@@ -1419,6 +1525,52 @@
 \end{GraphiqueTikz}
 \end{tcblisting}
 
+\subsection{Histogramme pour une loi binomiale}\label{histobinom}
+
+Il est également possible (d'une manière moins explicite que dans \MontreCode{ProfLycee}) de représenter l'histogramme d'une loi binomiale (\MontreCode{ProfLycee} permet de déterminer les unités automatiquement, ici elles doivent être précisées et connues).
+
+Il est également possible de rajouter la loi normale \og associée \fg.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%dans l'environnement GraphiqueTikz
+\TracerHistoBinomiale[clés]<nom fct normale>{n}{p}
+\end{tcblisting}
+
+Le premier argument, optionnel et entre \MontreCode{[...]} propose les clés suivantes :
+
+\begin{itemize}
+
+	\item \MontreCode{Plage} : plage, sous la forme \MontreCode{a-b} du coloriage éventuel ;
+	\item \MontreCode{CouleurPlage} : couleur de la plage éventuelle ;
+	\item \MontreCode{ClipX} : restriction de l'axe Ox, sous la forme \MontreCode{a-b} ;
+	\item \MontreCode{AffNormale} : booléen (\MontreCode{true} par défaut) pour rajouter la loi normale ;
+	\item \MontreCode{CouleurNormale} : couleur pour la loi normale.
+\end{itemize}
+
+Les arguments obligatoires et entre \MontreCode{\{...\}} permettent de spécifier les paramètres de la loi binomiale.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+%les unités ont été déterminées au préalable...
+\begin{GraphiqueTikz}[x=0.2cm,y=50cm,Origx=-0.5,Xmin=-0.5,Xmax=50.5,
+	Xgrille=5,Xgrilles=1,Ymin=0,Ymax=0.12,Ygrille=0.01,Ygrilles=0.001]
+	\TracerAxesGrilles[Elargir=2.5mm,Police=\small,Grille=false]%
+		{0,5,...,50}{auto}
+	\TracerHistoBinomiale{50}{0.4}
+\end{GraphiqueTikz}
+\end{tcblisting}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+%les unités ont été déterminées au préalable...
+\begin{GraphiqueTikz}[x=0.5cm,y=100cm,Origx=14.5,Xmin=14.5,Xmax=35.5,
+	Xgrille=5,Xgrilles=1,Ymin=0,Ymax=0.09,Ygrille=0.01,Ygrilles=0.001]
+	\TracerAxesGrilles[Elargir=2.5mm,Police=\small,Grille=false]%
+		{15,20,...,35}{auto}
+	\TracerHistoBinomiale%
+		[ClipX=15-35,Plage=18-25,CouleurPlage=teal,AffNormale,CouleurNormale=red]%
+		{1000}{0.02}
+\end{GraphiqueTikz}
+\end{tcblisting}
+
 \pagebreak
 
 \section{Commandes spécifiques des méthodes intégrales}
@@ -1440,6 +1592,7 @@
 Les \MontreCode{Clés} disponibles sont :
 
 \begin{itemize}
+	\item \MontreCode{Spline} : booléen pour préciser qu'un spline est utilisé, \MontreCode{false} par défaut ;
 	\item \MontreCode{Couleur} : couleur des tracés, \MontreCode{red} par défaut ;
 	\item \MontreCode{NbSubDiv} : nombre de subdivisions, \MontreCode{10} par défaut ;
 	\item \MontreCode{Methode} : méthode géométrique utilisée, parmi parmi \MontreCode{RectanglesGauche / RectanglesDroite / RectanglesMilieu / Trapezes} pour spécifier la méthode utilisée, \MontreCode{RectanglesGauche} par défaut ;
@@ -1450,7 +1603,7 @@
 
 \smallskip
 
-Le deuxième argument, optionnel et entre \MontreCode{<...>}, correspond à la fonction \textbf{précédemment définie} !
+Le deuxième argument, optionnel et entre \MontreCode{<...>}, correspond à la fonction ou le spline \textbf{précédemment définie} !
 
 \smallskip
 
@@ -1499,6 +1652,17 @@
 \end{GraphiqueTikz}
 \end{tcblisting}
 
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphiqueTikz}%
+	[x=0.8cm,y=1cm,Xmin=-7,Xmax=4,Ymin=0,Ymax=5]
+	\TracerAxesGrilles[Elargir=2.5mm]{auto}{auto}
+	\DefinirListeSpline{-6.5/0/2.5§-2/4/0§3.75/0/-1}[\lstsplineB]
+	\DefinirCourbeSpline[Nom=splinered]{\lstsplineB}
+	\TracerCourbeSpline[Couleur=red]{\lstsplineB}
+	\RepresenterMethodeIntegrale[Methode=RectanglesMilieu,Spline,Couleur=teal]<splinered>{-5}{1.25}
+\end{GraphiqueTikz}
+\end{tcblisting}
+
 \subsection{Méthode de Monte-Carlo}\label{montecarlo}
 
 L'idée est de proposer une commande pour simuler un calcul intégral via la méthode de Monte-Carlo.
@@ -1547,10 +1711,55 @@
 
 \pagebreak
 
-\section{Commandes spécifiques des statistiques à deux variables}
+\section{Commandes spécifiques des statistiques}
 
-\subsection{Le nuage de points}\label{nuage}
+\subsection{Courbe des ECC/FCC (1 variable)}\label{cbeECC}
 
+Il est possible de travailler sur une représentation de la courbe des ECC/FCC.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+\TracerCourbeECC[clés]{liste valeurs}{liste effectifs}
+\end{tcblisting}
+
+Le code se charge de déterminer une valeur des paramètres, pour utilisation ultérieure (avec arrondis éventuels car ils sont obtenus par \textit{conversions}) :
+
+\begin{itemize}
+	\item le premier quartile, $Q_1$, est stocké dans la macro \MontreCode{\textbackslash ValPremQuartile} ;
+	\item la médiane, méd, est stocké dans la macro \MontreCode{\textbackslash ValMed} ;
+	\item le troisième quartile, $Q_3$, est stocké dans la macro \MontreCode{\textbackslash ValTroisQuartile}.
+\end{itemize}
+
+Les \MontreCode{Clés} disponibles sont :
+
+\begin{itemize}
+	\item \MontreCode{Couleur=...} : couleur du tracé, \MontreCode{black} par défaut ;
+	\item \MontreCode{AffParams} : booléen, \MontreCode{true} par défaut, pour afficher les paramètres ;
+	\item \MontreCode{CouleursParams=...} : couleur des paramètres, \MontreCode{black} par défaut ;
+	\item \MontreCode{TraitsComplets} : booléen, \MontreCode{true} par défaut, pour afficher les pointillés en entier
+\end{itemize}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphiqueTikz}[x=0.15cm,y=0.03cm,Xmin=0,Xmax=75,Xgrille=10,Xgrilles=5,
+	Ymin=0,Ymax=200,Ygrille=20,Ygrilles=10]
+	\TracerAxesGrilles[Elargir=2.5mm,Police=\small]{auto}{auto}
+	\TracerCourbeECC%
+		[Couleur=blue,CouleursParams={lime!75!black/pink!75!black},
+		TraitsComplets=false]%
+		{0,15,25,35,40,45,55,65,75}%
+		{15,20,50,30,35,25,15,10}
+	%ajouts 'manuels'
+	\PlacerTexte[Couleur=lime!75!black,Police=\small,Position=below]%
+		{(\ValPremQuartile,0)}{\ArrondirNum[0]{\ValPremQuartile}}
+	\PlacerTexte[Couleur=lime!75!black,Police=\small,Position=below]%
+		{(\ValTroisQuartile,0)}{\ArrondirNum[0]{\ValTroisQuartile}}
+	\PlacerTexte[Couleur=pink!75!black,Police=\small,Position=below]%
+		{(\ValMed,0)}{\ArrondirNum[0]{\ValMed}}
+\end{GraphiqueTikz}
+
+\end{tcblisting}
+
+\subsection{Le nuage de points (2 variables)}\label{nuage}
+
 En marge des commandes liées aux fonctions, il est également possible de représenter des séries statistiques doubles.
 
 \smallskip
@@ -1592,7 +1801,7 @@
 \end{GraphiqueTikz}
 \end{tcblisting}
 
-\subsection{La droite de régression}\label{reglin}
+\subsection{La droite de régression (2 variables)}\label{reglin}
 
 La droite de régression linéaire (obtenue par la méthode des moindres carrés) peut facilement être rajoutée, en utilisant la clé \MontreCode{TracerDroite}.
 
@@ -1626,7 +1835,7 @@
 \end{GraphiqueTikz}
 \end{tcblisting}
 
-\subsection{Autres régressions}\label{regressions}
+\subsection{Autres régressions (2 variables)}\label{regressions}
 
 En partenariat avec le package \MontreCode{xint-regression}, chargé par le package (mais \textit{désactivable} via l'option \MontreCode{[nonxintreg]}), il est possible de travailler sur d'autres types de régression :
 
@@ -1884,10 +2093,10 @@
 Les commandes disponibles sont :
 
 \NewDocumentCommand\lstcmd{ m m m }{%
-	\item[\texttt{#1}] : \mintinline{latex}|#2|\hfill{}page \pageref{#3}
+	\item[\footnotesize\texttt{#1}]{\footnotesize : \mintinline{latex}|#2|\hfill{}page \pageref{#3}}
 }
 
-\begin{description}
+\begin{description}[noitemsep]
 	\lstcmd{environnement~~}{\begin{GraphiqueTikz}...\end{GraphiqueTikz}}{creaenvt}
 	\lstcmd{axes et grilles}{\TracerAxesGrille}{creaaxesgr}
 	\lstcmd{aj val axes X~~}{\RajouterValeursAxeX}{ajoutvals}
@@ -1904,6 +2113,7 @@
 	\lstcmd{def image~~~~~~}{\DefinirImage}{defpts}
 	\lstcmd{marq pts~~~~~~~}{\MarquerPts}{markpts}
 	\lstcmd{placer txt~~~~~}{\PlacerTexte}{placetxt}
+	\lstcmd{pts discont~~~~}{\AfficherPtsDiscont}{ptsdiscont}
 	\lstcmd{récup absc~~~~~}{\RecupererAbscisse}{recupcoordo}
 	\lstcmd{récup ordo~~~~~}{\RecupererOrdonnee}{recupcoordo}
 	\lstcmd{récup coordos~~}{\RecupererCoordonnees}{recupcoordo}
@@ -1917,10 +2127,13 @@
 	\lstcmd{méthodes int~~~}{\RepresenterMethodeIntegrale}{methodesintergrales}
 	\lstcmd{Monte-Carlo~~~~}{\SimulerMonteCarlo}{montecarlo}
 	\lstcmd{tangente~~~~~~~}{\TracerTangente}{tgte}
+	\lstcmd{toile récurr~~~}{\TracerToileRecurrence}{toilerecurr}
 	\lstcmd{loi normale~~~~}{\DefinirLoiNormale}{loinormale}
 	\lstcmd{loi normale~~~~}{\TracerLoiNormale}{loinormale}
 	\lstcmd{loi khideux~~~~}{\DefinirLoiKhiDeux}{loikhideux}
 	\lstcmd{loi khideux~~~~}{\TracerLoiKhiDeux}{loikhideux}
+	\lstcmd{loi binom~~~~~~}{\TracerHistoBinomiale}{histobinom}
+	\lstcmd{courbe ECC~~~~~}{\TracerCourbeECC}{cbeECC}
 	\lstcmd{stats 2 var~~~~}{\TracerNuage}{nuage}
 	\lstcmd{regressions~~~~}{\TracerAjustement}{regressions}
 	\lstcmd{arrondi~~~~~~~~}{\ArrondirNum}{numarrond}
@@ -1931,8 +2144,10 @@
 
 \section{Historique}
 
-\begin{quote}
+{\footnotesize \begin{quote}
 \begin{verbatim}
+0.1.8 : Courbes ECC/FCC + Toile récurrence + Points discontinuité + HistoBinom
+0.1.7 : Méthodes intégrales avec des splines
 0.1.6 : Asymptote verticale + Méthodes intégrales (géom + Monte Carlo)
 0.1.5 : Correction d'un bug sur les rajouts de valeurs + Nœud pour une image + [en] version !
 0.1.4 : Placement de texte
@@ -1941,6 +2156,6 @@
 0.1.1 : Densité loi normale et khi deux + Marquage points + Améliorations
 0.1.0 : Version initiale
 \end{verbatim}
-\end{quote}
+\end{quote}}
 
 \end{document}
\ No newline at end of file

Modified: trunk/Master/texmf-dist/tex/latex/tkz-grapheur/tkz-grapheur.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-grapheur/tkz-grapheur.sty	2024-09-08 19:37:47 UTC (rev 72225)
+++ trunk/Master/texmf-dist/tex/latex/tkz-grapheur/tkz-grapheur.sty	2024-09-08 19:37:56 UTC (rev 72226)
@@ -2,9 +2,11 @@
 % licence    : Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txtf
 
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{tkz-grapheur}[2024/07/13 0.1.6.Des outils en TikZ pour travailler comme avec un grapheur]
+\ProvidesPackage{tkz-grapheur}[2024/09/08 0.1.8 Des outils en TikZ pour travailler comme avec un grapheur]
 
 %====HISTORIQUE
+% v 0.1.8	Ajout des courbes d'ECC/FCC + Toile récurrence + Points discontinuité + Histobinom
+% v 0.1.7	Méthodes intégrales avec des splines
 % v 0.1.6	Asymptote verticale + Monte Carlo + Méthode intégrales (rectangles, etc)
 % v 0.1.5	Correction d'un bug avec les valeurs manuelles + Nœud pour une image + [en] version !
 % v 0.1.4	Ajout des placements de textes
@@ -50,7 +52,7 @@
 	\if at lngenglish
 		\sisetup{mode=match,propagate-math-font=true,reset-math-version=false,reset-text-family=false,reset-text-series=false,reset-text-shape=false,text-family-to-math=true,text-series-to-math=true}
 	\else
-		\sisetup{locale=FR,output-decimal-marker={,},mode=match,propagate-math-font=true,reset-math-version=false,reset-text-family=false,reset-text-series=false,reset-text-shape=false,text-family-to-math=true,text-series-to-math=true,group-minimum-digits=4}
+		\sisetup{locale=FR,output-decimal-marker={,},mode=match,propagate-math-font=true,reset-math-version=false,reset-text-family=false,reset-text-series=false,reset-text-shape=false,text-family-to-math=true,text-series-to-math=true}%,group-minimum-digits=4}
 	\fi
 \fi
 
@@ -112,6 +114,7 @@
 \tikzset{pflpointnuage/.style={radius=1.75pt}}
 \tikzset{pflcadre/.style={line width=0.8pt,gray}}
 \tikzset{pflcourbe/.style={line width=1.05pt}}
+\tikzset{pflcourbediscont/.style={line width=1.1pt}}
 \tikzset{pfltrait/.style={line width=0.8pt}}
 \tikzset{pflflecheg/.style={<-,>=latex}}
 \tikzset{pflfleched/.style={->,>=latex}}
@@ -1068,10 +1071,11 @@
 	Methode=RectanglesGauche,%
 	Remplir=true,%
 	CouleurRemplissage={\graphtikzintgrcol!25},%
-	Opacite=0.25
+	Opacite=0.25,%
+	Spline=false
 }
 
-\NewDocumentCommand\RepresenterMethodeIntegrale{ O{} D<>{f} m m }{%opts+nom_fct+a+b
+\NewDocumentCommand\RepresenterMethodeIntegrale{ O{} D<>{f} m m }{%opts+nom_fct/spline+a+b
 	\useKVdefault[graphiquetikzintegr]%
 	\setKV[graphiquetikzintegr]{#1}%
 	\ifboolKV[graphiquetikzintegr]{Remplir}%
@@ -1083,31 +1087,73 @@
 		}%
 	\tikzset{figureintegr/.style={pfltrait,\graphtikzintgrcol,fill=\graphtikzintgrcolrempl,fill opacity=\graphtikzintgropac}}%
 	\def\TmpH{(#4-#3)/\graphtikzintgrnb}
-	%rectangles gauches
-	\IfEq{\graphtikzintgrtype}{RectanglesGauche}%
+	\ifboolKV[graphiquetikzintegr]{Spline}%
 		{%
-			\foreach \i in {0,...,\inteval{\graphtikzintgrnb-1}}%
-				\draw[pflfigureintegr] ({#3+\i*\TmpH},{0}) rectangle++ ({\TmpH},{\xintfloateval{#2(#3+\i*\TmpH)}}) ;
+			\IfEq{\graphtikzintgrtype}{RectanglesGauche}%
+				{%
+					\foreach \i in {0,...,\inteval{\graphtikzintgrnb-1}}{%
+						\path[draw=none,pflcourbe,name path=tmpintmethod] ({#3+\i*\TmpH},{\pflymin})--({#3+\i*\TmpH},{\pflymax}) ;
+						\path[name intersections={of=#2 and tmpintmethod,name=KLM}] ;
+						\draw[pflfigureintegr] let \p1 = (KLM-1) in ({#3+\i*\TmpH},{0}) rectangle++ ({\TmpH},{\y1}) ;
+					}%
+				}%
+				{}%
+			\IfEq{\graphtikzintgrtype}{RectanglesDroite}%
+				{%
+					\foreach \i in {0,...,\inteval{\graphtikzintgrnb-1}}{%
+						\path[draw=none,pflcourbe,name path=tmpintmethod] ({#3+(\i+1)*\TmpH},{\pflymin})--({#3+(\i+1)*\TmpH},{\pflymax}) ;
+						\path[name intersections={of=#2 and tmpintmethod,name=KLM}] ;
+						\draw[pflfigureintegr] let \p1 = (KLM-1) in ({#3+\i*\TmpH},{0}) rectangle++ ({\TmpH},{\y1}) ;
+					}%
+				}%
+				{}%
+			\IfEq{\graphtikzintgrtype}{RectanglesMilieu}%
+				{%
+					\foreach \i in {0,...,\inteval{\graphtikzintgrnb-1}}{%
+						\path[draw=none,pflcourbe,name path=tmpintmethod] ({#3+(\i+0.5)*\TmpH},{\pflymin})--({#3+(\i+0.5)*\TmpH},{\pflymax}) ;
+						\path[name intersections={of=#2 and tmpintmethod,name=KLM}] ;
+						\draw[pflfigureintegr] let \p1 = (KLM-1) in ({#3+\i*\TmpH},{0}) rectangle++ ({\TmpH},{\y1}) ;
+					}%
+				}%
+				{}%
+			\IfEq{\graphtikzintgrtype}{Trapezes}%
+				{%
+					\foreach \i in {0,...,\inteval{\graphtikzintgrnb-1}}{%
+						\path[draw=none,pflcourbe,name path=tmpintmethodg] ({#3+(\i)*\TmpH},{\pflymin})--({#3+(\i)*\TmpH},{\pflymax}) ;
+						\path[name intersections={of=#2 and tmpintmethodg,name=KLMg}] ;
+						\path[draw=none,pflcourbe,name path=tmpintmethodd] ({#3+(\i+1)*\TmpH},{\pflymin})--({#3+(\i+1)*\TmpH},{\pflymax}) ;
+						\path[name intersections={of=#2 and tmpintmethodd,name=KLMd}] ;
+						\draw[pflfigureintegr] ({#3+\i*\TmpH},{0}) -- (KLMg-1) -- (KLMd-1) -- ({#3+(\i+1)*\TmpH},{0}) -- cycle ;
+					}%
+				}%
+				{}%
 		}%
-		{}%
-	\IfEq{\graphtikzintgrtype}{RectanglesDroite}%
 		{%
-			\foreach \i in {0,...,\inteval{\graphtikzintgrnb-1}}%
-				\draw[pflfigureintegr] ({#3+\i*\TmpH},{0}) rectangle++ ({\TmpH},{\xintfloateval{#2(#3+(\i+1)*\TmpH)}}) ;
+			\IfEq{\graphtikzintgrtype}{RectanglesGauche}%
+				{%
+					\foreach \i in {0,...,\inteval{\graphtikzintgrnb-1}}%
+						\draw[pflfigureintegr] ({#3+\i*\TmpH},{0}) rectangle++ ({\TmpH},{\xintfloateval{#2(#3+\i*\TmpH)}}) ;
+				}%
+				{}%
+			\IfEq{\graphtikzintgrtype}{RectanglesDroite}%
+				{%
+					\foreach \i in {0,...,\inteval{\graphtikzintgrnb-1}}%
+						\draw[pflfigureintegr] ({#3+\i*\TmpH},{0}) rectangle++ ({\TmpH},{\xintfloateval{#2(#3+(\i+1)*\TmpH)}}) ;
+				}%
+				{}%
+			\IfEq{\graphtikzintgrtype}{RectanglesMilieu}%
+				{%
+					\foreach \i in {0,...,\inteval{\graphtikzintgrnb-1}}%
+						\draw[pflfigureintegr] ({#3+\i*\TmpH},{0}) rectangle++ ({\TmpH},{\xintfloateval{#2(#3+(\i+0.5)*\TmpH)}}) ;
+				}%
+				{}%
+			\IfEq{\graphtikzintgrtype}{Trapezes}%
+				{%
+					\foreach \i in {0,...,\inteval{\graphtikzintgrnb-1}}%
+						\draw[pflfigureintegr] ({#3+\i*\TmpH},{0}) -- ({#3+\i*\TmpH},{\xintfloateval{#2(#3+\i*\TmpH)}}) -- ({#3+(\i+1)*\TmpH},{\xintfloateval{#2(#3+(\i+1)*\TmpH)}}) -- ({#3+(\i+1)*\TmpH},{0}) -- cycle ;
+				}%
+				{}%
 		}%
-		{}%
-	\IfEq{\graphtikzintgrtype}{RectanglesMilieu}%
-		{%
-			\foreach \i in {0,...,\inteval{\graphtikzintgrnb-1}}%
-				\draw[pflfigureintegr] ({#3+\i*\TmpH},{0}) rectangle++ ({\TmpH},{\xintfloateval{#2(#3+(\i+0.5)*\TmpH)}}) ;
-		}%
-		{}%
-	\IfEq{\graphtikzintgrtype}{Trapezes}%
-		{%
-			\foreach \i in {0,...,\inteval{\graphtikzintgrnb-1}}%
-				\draw[pflfigureintegr] ({#3+\i*\TmpH},{0}) -- ({#3+\i*\TmpH},{\xintfloateval{#2(#3+\i*\TmpH)}}) -- ({#3+(\i+1)*\TmpH},{\xintfloateval{#2(#3+(\i+1)*\TmpH)}}) -- ({#3+(\i+1)*\TmpH},{0}) -- cycle ;
-		}%
-		{}%
 }
 
 
@@ -4218,4 +4264,325 @@
 	}%
 }
 
+%====ECC
+\defKV[tkzgECC]{%
+	Couleur=\def\tkzecc at coul@graph{#1},%
+	CouleursParams=\def\tkzecc at coul@params{#1}
+}
+
+\setKVdefault[tkzgECC]{%
+	Couleur=black,%
+	AffParams=true,%
+	CouleursParams={black},%
+	TraitsComplets=true
+}
+
+\tikzset{pfltraitsparamecc/.style={line width=0.9pt,densely dashed}}
+\tikzset{pflcourbeecc/.style={line width=1.05pt}}
+
+\NewDocumentCommand\TracerCourbeECC{ O{} m m }{%
+	\restoreKV[tkzgECC]%
+	\setKV[tkzgECC]{#1}%
+	\IfSubStr{\tkzecc at coul@params}{/}%
+		{%
+			\StrCut{\tkzecc at coul@params}{/}{\tkzecc at coul@quart}{\tkzecc at coul@med}%
+		}%
+		{%
+			\def\tkzecc at coul@quart{\tkzecc at coul@params}\def\tkzecc at coul@med{\tkzecc at coul@params}%
+		}%
+	\readlist*\DataClass{#2}%
+	\readlist*\DataEff{#3}%
+	\xdef\DonneesECC{0}%
+	\xintFor* ##1 in {\xintSeq{1}{\DataEfflen}}\do{%
+		\xdef\DonneesTmp{0}
+		\xintFor* ##2 in {\xintSeq{1}{##1}}\do{%
+			\xdef\DonneesTmp{\xintfloateval{\DonneesTmp+\DataEff[##2]}}%
+		}%
+		\xdef\DonneesECC{\DonneesECC,\DonneesTmp}%
+	}%
+	\readlist*\DataECC\DonneesECC%
+	\itemtomacro\DataClass[1]\DonneesXmin%
+	\itemtomacro\DataClass[-1]\DonneesXmax%
+	\itemtomacro\DataECC[-1]\DonneesEffMax%
+	\xdef\DonneesListeECC{(\DataClass[1],\DataECC[1])}%
+	\xintFor* ##1 in {\xintSeq{2}{\DataECClen}}\do{%
+		\xdef\DonneesListeECC{\DonneesListeECC--(\DataClass[##1],\DataECC[##1])}%
+	}%
+		%paramètres par interpolation
+	\xintFor* ##1 in {\xintSeq{1}{\DataEfflen}}\do{%
+		\xdef\isuiv{\xinteval{##1+1}}%
+		\xintifboolexpr{\DataECC[##1] < (0.25*\DonneesEffMax) 'and' \DataECC[\isuiv] >= (0.25*\DonneesEffMax)}%
+			{%
+				\xdef\pentetmpECC{(\DataECC[\isuiv]-\DataECC[##1])/(\DataClass[\isuiv]-\DataClass[##1])}%OK
+				\xdef\ValPremQuartile{\xintfloateval{(0.25*\DonneesEffMax+\pentetmpECC*\DataClass[##1]-\DataECC[##1])/(\pentetmpECC)}}%
+			}
+			{}%
+		\xintifboolexpr{\DataECC[##1] < (0.50*\DonneesEffMax) 'and' \DataECC[\isuiv] >= (0.50*\DonneesEffMax)}%
+			{%
+				\xdef\pentetmpECC{(\DataECC[\isuiv]-\DataECC[##1])/(\DataClass[\isuiv]-\DataClass[##1])}%OK
+				\xdef\ValMed{\xintfloateval{(0.50*\DonneesEffMax+\pentetmpECC*\DataClass[##1]-\DataECC[##1])/(\pentetmpECC)}}%
+			}
+			{}%
+		\xintifboolexpr{\DataECC[##1] < (0.75*\DonneesEffMax) 'and' \DataECC[\isuiv] >= (0.75*\DonneesEffMax)}%
+			{%
+				\xdef\pentetmpECC{(\DataECC[\isuiv]-\DataECC[##1])/(\DataClass[\isuiv]-\DataClass[##1])}%OK
+				\xdef\ValTroisQuartile{\xintfloateval{(0.75*\DonneesEffMax+\pentetmpECC*\DataClass[##1]-\DataECC[##1])/(\pentetmpECC)}}%
+			}
+			{}%
+	}%
+	%partie graphique
+	\draw[pflcourbeecc,\tkzecc at coul@graph] \DonneesListeECC ;
+	\xintFor* ##1 in {\xintSeq{1}{\DataECClen}}\do{%
+		\filldraw[\tkzecc at coul@graph] (\DataClass[##1],\DataECC[##1]) circle[pflpointnuage] ;
+	}%
+	\ifboolKV[tkzgECC]{AffParams}%
+			{%
+				%médiane
+				\ifboolKV[tkzgECC]{TraitsComplets}%
+					{%
+						\draw[pfltraitsparamecc,\tkzecc at coul@med] (\pflxmin,{0.50*\DonneesEffMax})--(\pflxmax,{0.50*\DonneesEffMax});
+						\draw[pfltraitsparamecc,\tkzecc at coul@quart] (\pflxmin,{0.25*\DonneesEffMax})--++({\pflxmax-\pflxmin},0);
+						\draw[pfltraitsparamecc,\tkzecc at coul@quart] (\pflxmin,{0.75*\DonneesEffMax})--++({\pflxmax-\pflxmin},0);
+					}%
+					{%
+						\draw[pfltraitsparamecc,\tkzecc at coul@med] (\pflxmin,{0.50*\DonneesEffMax})--(\ValMed,{0.50*\DonneesEffMax});
+						\draw[pfltraitsparamecc,\tkzecc at coul@quart] (\pflxmin,{0.25*\DonneesEffMax})--++({\ValPremQuartile-\pflxmin},0);
+						\draw[pfltraitsparamecc,\tkzecc at coul@quart] (\pflxmin,{0.75*\DonneesEffMax})--++({\ValTroisQuartile-\pflxmin},0);
+					}%
+				\draw[pfltraitsparamecc,\tkzecc at coul@med] (\ValMed,{0.5*\DonneesEffMax})--(\ValMed,0) ; \draw[\tkzecc at coul@med,thick,fill=white] (\ValMed,{0.5*\DonneesEffMax}) circle[pflpointnuage] ;
+				\draw[pfltraitsparamecc,\tkzecc at coul@quart] (\ValPremQuartile,{0.25*\DonneesEffMax})--(\ValPremQuartile,\pflymin) ; \draw[\tkzecc at coul@quart,thick,fill=white] (\ValPremQuartile,{0.25*\DonneesEffMax}) circle[pflpointnuage] ;
+				\draw[pfltraitsparamecc,\tkzecc at coul@quart] (\ValTroisQuartile,{0.75*\DonneesEffMax})--(\ValTroisQuartile,\pflymin) ; \draw[\tkzecc at coul@quart,thick,fill=white] (\ValTroisQuartile,{0.75*\DonneesEffMax}) circle[pflpointnuage] ;
+			}%
+			{}%
+}
+
+%====PTS DISCONTINUITÉ
+\defKV[tkzptdiscont]{%
+	Couleur=\def\pfldiscontcouleur{#1},%
+	Pos=\def\pfldiscontpos{#1},%
+	Echelle=\def\pfldiscontechelle{#1},%
+	Type=\def\pfldisconttype{#1}
+}
+
+\setKVdefault[tkzptdiscont]{%
+	Couleur=black,%
+	Pos=D,%
+	Echelle=1,%
+	Type=par
+}
+
+\NewDocumentCommand\AfficherPtsDiscont{ O{} m }{%
+	\restoreKV[tkzptdiscont]
+	\setKV[tkzptdiscont]{#1}%
+	\setsepchar[.]{§./}%
+	\readlist*\SPLlisteDiscont{#2}%
+	\def\SPLlisteDiscontNb{\SPLlisteDiscontlen}%
+	\foreach \i in {1,...,\SPLlisteDiscontNb}{%
+		\begin{scope}[shift={(\SPLlisteDiscont[\i,1],\SPLlisteDiscont[\i,2])},rotate={atan \SPLlisteDiscont[\i,3]},scale=\pfldiscontechelle]
+			\IfStrEq{\pfldisconttype}{rond}%
+				{%
+					\draw[pflcourbediscont,fill=white,draw=\pfldiscontcouleur] (0,0) circle[radius=3pt] ;
+				}{}%
+			\IfStrEq{\pfldiscontpos}{D}%
+				{%
+					\IfStrEq{\pfldisconttype}{par}%
+						{%
+							\draw[pflcourbediscont,\pfldiscontcouleur] (0,0) to[out=90,in=170] (4pt,5pt) ;
+							\draw[pflcourbediscont,\pfldiscontcouleur] (0,0) to[out=-90,in=-170] (4pt,-5pt) ;
+						}{}%
+					\IfStrEq{\pfldisconttype}{demirond}%
+						{%
+							\draw[pflcourbediscont,\pfldiscontcouleur] (0,0) to[out=90,in=180] (3pt,3pt) ;
+							\draw[pflcourbediscont,\pfldiscontcouleur] (0,0) to[out=-90,in=180] (3pt,-3pt) ;
+						}{}%
+					\IfStrEq{\pfldisconttype}{cro}%
+						{%
+							\draw[pflcourbediscont,\pfldiscontcouleur] (0,0) |- (4pt,5pt) ;
+							\draw[pflcourbediscont,\pfldiscontcouleur] (0,0) |- (4pt,-5pt) ;
+						}{}%
+				}%
+				{%
+					\IfStrEq{\pfldisconttype}{par}%
+						{%
+							\draw[pflcourbediscont,\pfldiscontcouleur] (0,0) to[out=90,in=-10] (-4pt,5pt) ;
+							\draw[pflcourbediscont,\pfldiscontcouleur] (0,0) to[out=-90,in=10] (-4pt,-5pt) ;
+						}{}%
+					\IfStrEq{\pfldisconttype}{demirond}%
+						{%
+							\draw[pflcourbediscont,\pfldiscontcouleur] (0,0) to[out=90,in=0] (-3pt,3pt) ;
+							\draw[pflcourbediscont,\pfldiscontcouleur] (0,0) to[out=-90,in=0] (-3pt,-3pt) ;
+						}{}%
+					\IfStrEq{\pfldisconttype}{cro}%
+						{%
+							\draw[pflcourbediscont,\pfldiscontcouleur] (0,0) |- (-4pt,5pt) ;
+							\draw[pflcourbediscont,\pfldiscontcouleur] (0,0) |- (-4pt,-5pt) ;
+						}{}%
+				}%
+		\end{scope}
+	}%
+}
+
+%====TOILE RÉCURRENCE (OK avec courbe + spline !!)
+\tikzset{pfltraitrec/.style={line width=0.8pt}}
+\tikzset{pfltraitrecpointill/.style={pfltraitrec,densely dashed}}
+
+\defKV[tkzwebrecurr]{%
+	Couleur=\def\pflrecurcolor{#1},%
+	Nom=\def\pflrecurnom{#1},%
+	No=\def\pflrecurno{#1},%
+	Nb=\def\pflrecurnb{#1},%
+	Uno=\def\pflrecuruno{#1},
+	TailleLabel=\def\pflrecurlabelsize{#1},%
+	PosLabel=\def\pflrecurlabelpos{#1}
+}
+
+\setKVdefault[tkzwebrecurr]{%
+	Couleur=black,%
+	Spline=false,%
+	No=0,%
+	Nom=u,%
+	Nb=5,%
+	AffTermes=false,%
+	AffPointilles=true,%
+	TailleLabel=\small,%
+	PosLabel=below
+}
+
+\NewDocumentCommand\TracerToileRecurrence{ O{} m }{
+	%<clés> + fonction/courbe
+	\useKVdefault[tkzwebrecurr]%
+	\setKV[tkzwebrecurr]{#1}% on paramètres les nouvelles clés et on les simplifie
+	\ifboolKV[tkzwebrecurr]{Spline}%
+		{%
+			\foreach \i [remember=\i as \x (initially \pflrecuruno)] in {1,...,\pflrecurnb}{%
+				%\xdef\y{\xintfloateval{#2(\x)}}%
+				\path[draw=none,pflcourbe,name path=tmprecur] ({\x},{\pflymin})--({\x},{\pflymax}) ;
+				\path[name intersections={of=#2 and tmprecur,name=ZZZZ}] ;
+				%\coordinate (\pflrecurnoms) at (ZZZZ-1) ;
+				\GetYcoord{(ZZZZ-1)}[\y]
+				%test de la position courbe / bissectrice ?
+				\ifnum \i=1
+					\newdimen \X
+					\newdimen \Y
+					\X = \x pt
+					\Y = \y pt
+					\ifdim \Y < \X
+						\draw[pfltraitrec,\pflrecurcolor] (\x,\y)--(\y,\y) ;
+					\else
+						\draw[pfltraitrec,\pflrecurcolor] (\x,\x)--(\x,\y)--(\y,\y) ;
+					\fi
+				\else
+					\draw[pfltraitrec,\pflrecurcolor] (\x,\x)--(\x,\y)--(\y,\y) ;
+				\fi
+				\ifboolKV[tkzwebrecurr]{AffPointilles}%
+					{%
+						\def\indice{\fpeval{\i+\pflrecurno-1}}%
+						\ifboolKV[tkzwebrecurr]{AffTermes}%
+							{%
+								\draw[pfltraitrecpointill,\pflrecurcolor] (\x,\y)--(\x,\pflxmin) node[\pflrecurlabelpos,font=\pflrecurlabelsize]{$\pflrecurnom_{\indice}$};%
+							}%
+							{%
+								\draw[pfltraitrecpointill,\pflrecurcolor] (\x,\y)--(\x,\pflxmin) ;%
+							}%
+					}%
+					{}
+				\def\i{\y}%
+			}%
+		}%
+		{%
+			\foreach \i [remember=\i as \x (initially \pflrecuruno)] in {1,...,\pflrecurnb}{%
+				\xdef\y{\xintfloateval{#2(\x)}}%
+				%test de la position courbe / bissectrice ?
+				\ifnum \i=1
+					\newdimen \X
+					\newdimen \Y
+					\X = \x pt
+					\Y = \y pt
+					\ifdim \Y < \X
+						\draw[pfltraitrec,\pflrecurcolor] (\x,\y)--(\y,\y) ;
+					\else
+						\draw[pfltraitrec,\pflrecurcolor] (\x,\x)--(\x,\y)--(\y,\y) ;
+					\fi
+				\else
+					\draw[pfltraitrec,\pflrecurcolor] (\x,\x)--(\x,\y)--(\y,\y) ;
+				\fi
+				\ifboolKV[tkzwebrecurr]{AffPointilles}%
+					{%
+						\def\indice{\fpeval{\i+\pflrecurno-1}}%
+						\ifboolKV[tkzwebrecurr]{AffTermes}%
+							{%
+								\draw[pfltraitrecpointill,\pflrecurcolor] (\x,\y)--(\x,\pflxmin) node[\pflrecurlabelpos,font=\pflrecurlabelsize]{$\pflrecurnom_{\indice}$};%
+							}%
+							{%
+								\draw[pfltraitrecpointill,\pflrecurcolor] (\x,\y)--(\x,\pflxmin) ;%
+							}%
+					}%
+					{}
+				\def\i{\xintfloateval{\y}}%
+			}%
+		}%
+}
+
+%====HISTOBINOM
+\defKV[tkzHistoBinom]{%
+	Plage=\def\tkzGraphBinomPlage{#1},%
+	CouleurPlage=\def\tkzGraphBimomColPlage{#1},%
+	ClipX=\def\tkzGraphBinomXminmax{#1},%
+	CouleurNormale=\def\tkzGraphBinomColNorm{#1}
+}
+\setKVdefault[tkzHistoBinom]{%
+	Plage={},%
+	CouleurPlage=black,%
+	ClipX={},%
+	AffNormale=false,%
+	CouleurNormale=black
+}
+
+\NewDocumentCommand\TracerHistoBinomiale{ O{} D<>{phi} m m }{%
+	\restoreKV[tkzHistoBinom]%
+	\setKV[tkzHistoBinom]{#1}
+	\def\tkzGraphBinomN{#3}%
+	\def\tkzGraphBinomP{#4}%
+	\IfStrEq{\tkzGraphBinomXminmax}{}%
+		{%
+			\xdef\tkzGraphBinomXmin{0}%
+			\xdef\tkzGraphBinomXmax{\tkzGraphBinomN}%
+		}%
+		{%
+			\StrCut{\tkzGraphBinomXminmax}{-}{\tkzGraphBinomXmin}{\tkzGraphBinomXmax}%
+			\IfStrEq{\tkzGraphBinomXmin}{*}{\xdef\tkzGraphBinomXmin{0}}{}%
+			\IfStrEq{\tkzGraphBinomXmax}{*}{\xdef\tkzGraphBinomXmax{\tkzGraphBinomN}}{}%
+		}%
+	\IfStrEq{\tkzGraphBinomPlage}{}%
+		{}%
+		{%
+			\StrCut{\tkzGraphBinomPlage}{-}{\tkzGraphBinomColorMin}{\tkzGraphBinomColorMax}%
+			\IfStrEq{\tkzGraphBinomColorMin}{*}{\xdef\tkzGraphBinomColorMin{\tkzGraphBinomXmin}}{}%
+			\IfStrEq{\tkzGraphBinomColorMax}{*}{\xdef\tkzGraphBinomColorMax{\tkzGraphBinomXmax}}{}%
+		}%
+	%coloriage éventuel
+	\IfStrEq{\tkzGraphBinomPlage}{}%
+		{}%
+		{%
+			\xintFor* ##1 in {\xintSeq{\tkzGraphBinomColorMin}{\tkzGraphBinomColorMax}}\do{%
+				\xdef\tkztmpYYY{\xintfloateval{binomial(\tkzGraphBinomN,##1)*(\tkzGraphBinomP)^(##1)*(1-(\tkzGraphBinomP))^((\tkzGraphBinomN)-(##1))}}%
+				\draw[draw=none,fill=\tkzGraphBimomColPlage,fill opacity=0.5] ({##1-0.5},{\pflymin}) rectangle++ (1,{\tkztmpYYY-\pflymin}) ;
+			}%
+		}%
+	%tracé
+	\xintFor* ##1 in {\xintSeq{\tkzGraphBinomXmin}{\tkzGraphBinomXmax}}\do{%
+		\xdef\tkztmpYYY{\xintfloateval{binomial(\tkzGraphBinomN,##1)*(\tkzGraphBinomP)^(##1)*(1-(\tkzGraphBinomP))^((\tkzGraphBinomN)-(##1))}}%
+		\draw[pfltrait] ({##1-0.5},{\pflymin}) rectangle++ (1,{\tkztmpYYY-\pflymin}) ;
+		}%
+	\ifboolKV[tkzHistoBinom]{AffNormale}%
+		{%
+			\xdef\tkzMinNormHistoBinom{\xintfloateval{{\tkzGraphBinomXmin-0.5}}}%
+			\xdef\tkzMaxNormHistoBinom{\xintfloateval{{\tkzGraphBinomXmax+0.5}}}%
+			\xdef\tkzEsperNorm{\xintfloateval{(#3)*(#4)}}%
+			\xdef\tkzVarNorm{\xintfloateval{sqrt((#3)*(#4)*(1-(#4)))}}%
+			\DefinirLoiNormale[Trace,Couleur=\tkzGraphBinomColNorm,pflcourbe,Debut=\tkzMinNormHistoBinom,Fin=\tkzMaxNormHistoBinom]<#2>{\tkzEsperNorm}{\tkzVarNorm}
+		}%
+		{}%
+}
+
 \endinput
\ No newline at end of file



More information about the tex-live-commits mailing list.