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.