diff options
author | Karl Berry <karl@freefriends.org> | 2024-06-04 20:18:39 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2024-06-04 20:18:39 +0000 |
commit | bfbc7257bc83f2e8750e8117173e1367ff056a16 (patch) | |
tree | 36b665876b1c0a88950ccee0fd7d017469410003 /Master | |
parent | 719c0852409803b7f2ca5c56a00fb9f7a71ec849 (diff) |
tkz-grapheur (3jun24)
git-svn-id: svn://tug.org/texlive/trunk@71434 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master')
-rw-r--r-- | Master/texmf-dist/doc/latex/tkz-grapheur/tkz-grapheur-doc-fr.pdf | bin | 724065 -> 751560 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/tkz-grapheur/tkz-grapheur-doc-fr.tex | 150 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/tkz-grapheur/tkz-grapheur.sty | 215 |
3 files changed, 350 insertions, 15 deletions
diff --git a/Master/texmf-dist/doc/latex/tkz-grapheur/tkz-grapheur-doc-fr.pdf b/Master/texmf-dist/doc/latex/tkz-grapheur/tkz-grapheur-doc-fr.pdf Binary files differindex ea4b8ad3fb6..03f337aee4b 100644 --- a/Master/texmf-dist/doc/latex/tkz-grapheur/tkz-grapheur-doc-fr.pdf +++ b/Master/texmf-dist/doc/latex/tkz-grapheur/tkz-grapheur-doc-fr.pdf diff --git a/Master/texmf-dist/doc/latex/tkz-grapheur/tkz-grapheur-doc-fr.tex b/Master/texmf-dist/doc/latex/tkz-grapheur/tkz-grapheur-doc-fr.tex index 750dbc16bde..579a131c331 100644 --- a/Master/texmf-dist/doc/latex/tkz-grapheur/tkz-grapheur-doc-fr.tex +++ b/Master/texmf-dist/doc/latex/tkz-grapheur/tkz-grapheur-doc-fr.tex @@ -29,8 +29,8 @@ \hypersetup{pdfborder=0 0 0} \usepackage[margin=2cm]{geometry} \setlength{\parindent}{0pt} -\def\TPversion{0.1.1} -\def\TPdate{28/05/2024} +\def\TPversion{0.1.2} +\def\TPdate{31/05/2024} \usepackage{soul} \usepackage{codehigh} \usepackage{tabularray} @@ -216,7 +216,7 @@ Le package utilise : \smallskip \begin{itemize} - \item \MontreCode{tikz}, avec les librairies \MontreCode{calc,intersections,patterns,patterns.meta} ; + \item \MontreCode{tikz}, avec les librairies \MontreCode{calc,intersections,patterns,patterns.meta,bbox} ; \item \MontreCode{simplekv} ; \item \MontreCode{xintexpr} ; \item \MontreCode{xstring} ; @@ -229,7 +229,7 @@ Le package charge également \MontreCode{siunitx} avec les options classiques \t \smallskip -Le package charge également la librairie \TikZ\ \MontreCode{babel}, mais il est possible de ne pas le charger en utilisant l'option \MontreCode{[nontikzbabel]}. +Le package charge également la librairie \TikZ\ \MontreCode{babel}, mais il est possible de ne pas la charger en utilisant l'option \MontreCode{[nontikzbabel]}. \smallskip @@ -533,9 +533,48 @@ Les arguments obligatoires correspondent aux abscisses (en langage\TikZ) et aux \section{Commandes spécifiques de définitions} +\subsection{Tracer une droite}\label{tracdroite} + +L'idée est de proposer une commande pour tracer une droite, à partir : + +\begin{itemize} + \item de deux points (ou nœuds) ; + \item d'un point (ou nœud) et de la pente. +\end{itemize} + +\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only} +%dans l'environnement GraphiqueTikz +\TracerDroite[clés]{point ou nœud}{point ou noeud ou pente} +\end{tcblisting} + +Les \MontreCode{[clés]}, optionnelles, disponibles sont : + +\smallskip + +\begin{itemize} + \item \MontreCode{Nom} : nom éventuel du tracé (pour réutilisation) ; + \item \MontreCode{Pente} : booléen pour préciser que la pente est utilisée (\MontreCode{false} par défaut) ; + \item \MontreCode{Debut} : début du tracé (\MontreCode{\textbackslash pflxmin} par défaut) ; + \item \MontreCode{Fin} : fin du tracé (\MontreCode{\textbackslash pflxmax} par défaut) ; + \item \MontreCode{Couleur} : couleur du tracé (\MontreCode{black} par défaut). +\end{itemize} + +\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=-3,Ymax=5] + \TracerAxesGrilles[Elargir=2.5mm]{auto}{auto} + \DefinirPts[Aff,Couleur=gray]{A/-4/3,B/2/0,C/0/-1} + \TracerDroite[Couleur=red]{(-2,-1)}{(2,4)} + \TracerDroite[Couleur=blue,Debut=-5,Fin=3]{(A)}{(B)} + \TracerDroite[Couleur=olive,Pente]{(C)}{(0.25)} +\end{GraphiqueTikz} +\end{tcblisting} + +\pagebreak + \subsection{Définir une fonction, tracer la courbe d'une fonction}\label{deftracfct} -La première idée est de définir une fonction, pour réutilisation ultérieure. Cette commande \textit{crée} la fonction, sans la tracer, car dans certains cas des éléments devront être tracés au préalable. +L'idée est de définir une fonction, pour réutilisation ultérieure. Cette commande \textit{crée} la fonction, sans la tracer, car dans certains cas des éléments devront être tracés au préalable. \smallskip @@ -554,9 +593,9 @@ Les \MontreCode{[clés]} pour la définition ou le tracé, optionnelles, disponi \begin{itemize} \item \MontreCode{Debut} : borne inférieure de l'ensemble de définition (\MontreCode{\textbackslash pflxmin} par défaut) ; \item \MontreCode{Fin} : borne inférieure de l'ensemble de définition (\MontreCode{\textbackslash pflxmax} par défaut) ; - \item \MontreCode{Nom} : = nom de la courbe (important pour la suite !) ; - \item \MontreCode{Couleur} : = couleur du tracé (\MontreCode{black} par défaut) ; - \item \MontreCode{Pas} : = pas du tracé (il est déterminé \textit{automatiquement} au départ mais peut être modifié) ; + \item \MontreCode{Nom} : nom de la courbe (important pour la suite !) ; + \item \MontreCode{Couleur} : couleur du tracé (\MontreCode{black} par défaut) ; + \item \MontreCode{Pas} : pas du tracé (il est déterminé \textit{automatiquement} au départ mais peut être modifié) ; \item \MontreCode{Trace} : booléen pour tracer également la courbe (\MontreCode{false} par défaut). \end{itemize} @@ -631,9 +670,9 @@ Les \MontreCode{[clés]} pour la définition ou le tracé, optionnelles, disponi \smallskip \begin{itemize} - \item \MontreCode{Nom} : = nom de la courbe d'interpolation (important pour la suite !) ; + \item \MontreCode{Nom} : nom de la courbe d'interpolation (important pour la suite !) ; \item \MontreCode{Coeffs} : modifier (voir la documentation de \textsf{ProfLycee}\footnote{CTAN : \url{https://ctan.org/pkg/proflycee}} les \textit{coefficients} du spline ; - \item \MontreCode{Couleur} : = couleur du tracé (\MontreCode{black} par défaut) ; + \item \MontreCode{Couleur} : couleur du tracé (\MontreCode{black} par défaut) ; \item \MontreCode{Trace} : booléen pour tracer également la courbe (\MontreCode{false} par défaut). \end{itemize} @@ -963,6 +1002,89 @@ $(\ArrondirNum[2]{\alphaB};\ArrondirNum[2]{\betaB})$. \pagebreak +\subsection{Extremums}\label{maximum}\label{minimum} + +L'idée (encore \textit{expérimentale}) est de proposer des commandes pour extraire les extremums d'une courbe définie par le package. + +La commande crée le nœud correspondant, et il est du coup possible de récupérer ses coordonnées pour exploitation ultérieure. + +\smallskip + +Il est possible, en le spécifiant, de travailler sur les différentes courbes gérées par le package (fonction, interpolation, spline). + +Pour des courbes singulières, il est possible que les résultats ne soient pas tout à fait ceux attendus\ldots + +\smallskip + +{\small\faBomb} Pour le moment, les \textit{limitations} sont : + +\begin{itemize} + \item pas de gestion d'extremums multiples (seul le premier sera traité)\ldots + \item pas de gestion d'extremums aux bornes du tracé\ldots + \item pas de récupération automatique des paramètres de définition des courbes\ldots + \item le temps de compilation peut être plus long\ldots +\end{itemize} + +\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only} +%dans l'environnement GraphiqueTikz +\TrouverMaximum[clés]{objet}[nœud créé] +\TrouverMinimum[clés]{objet}[nœud créé] +\end{tcblisting} + +Les \MontreCode{[clés]}, optionnelles, disponibles sont : + +\smallskip + +\begin{itemize} + \item \MontreCode{Methode} : méthode, parmi \MontreCode{fonction/interpo/spline} pour les calculs (\MontreCode{fonction} par défaut) ; + \item \MontreCode{Debut} : début du tracé (\MontreCode{\textbackslash pflxmin} par défaut) ; + \item \MontreCode{Fin} : fin du tracé (\MontreCode{\textbackslash pflxmax} par défaut) ; + \item \MontreCode{Pas} : pas du tracé si \MontreCode{fonction} (il est déterminé \textit{automatiquement} au départ mais peut être modifié) ; + \item \MontreCode{Coeffs} : modifier les \textit{coefficients} du spline si \MontreCode{spline} ; + \item \MontreCode{Tension} : paramétrage de la \textit{tension} du tracé d'interpolation si \MontreCode{interpo}(\MontreCode{0.5} par défaut). +\end{itemize} + +\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5} +\begin{GraphiqueTikz}[x=1cm,y=1cm,Xmin=-1,Xmax=5,Ymin=-1,Ymax=3] + \TracerAxesGrilles[Elargir=2.5mm]{auto}{auto} + \DefinirCourbe[Nom=cf,Debut=0.35,Fin=4.2,Trace]% + <f>{0.6*cos(4.5*(x-4)+2.1)-1.2*sin(x-4)+0.1*x+0.2} + \TrouverMaximum[Debut=0.35,Fin=4.2]{f}[cf-max] + \TrouverMaximum[Debut=3,Fin=4]{f}[cf-maxlocal] + \TrouverMinimum[Debut=1,Fin=2]{f}[cf-minlocal] + \MarquerPts*[Couleur=red,Traits]{(cf-max)} + \MarquerPts*[Couleur=blue,Traits]{(cf-maxlocal)} + \MarquerPts*[Couleur=olive,Traits]{(cf-minlocal)} + \RecupererCoordonnees{(cf-max)}[\MonMaxX][\MonMaxY] +\end{GraphiqueTikz}\\ +Le maximum est $M\approx\ArrondirNum{\MonMaxY}$, atteint en $x\approx\ArrondirNum{\MonMaxX}$ +\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=-3,Ymax=5] + \TracerAxesGrilles[Elargir=2.5mm]{-7,-6,...,4}{-3,-2,...,5} + \DefinirCourbeInterpo[Nom=interpotest,Couleur=red,Trace,Tension=1]% + {(-6,4)(-2,-2)(3,3.5)} + \TrouverMinimum[Methode=interpo,Tension=1]{(-6,4)(-2,-2)(3,3.5)}[interpo-min] + \MarquerPts*[Couleur=blue]{(interpo-min)} + \RecupererCoordonnees{(interpo-min)}[\MinInterpoX][\MinInterpoY] +\end{GraphiqueTikz}\\ +Le minimum est $M\approx\ArrondirNum[3]{\MinInterpoY}$, atteint en $x\approx\ArrondirNum[3]{\MinInterpoX}$ +\end{tcblisting} + +\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5} +\begin{GraphiqueTikz}% + [x=1.2cm,y=1.6cm,Xmin=-7,Xmax=4,Ymin=-3,Ymax=3,Ygrille=0.5,Ygrilles=0.25] + \TracerAxesGrilles[Elargir=2.5mm]{auto}{auto} + \def\LISTETEST{-6/2/0§-1/-2/0§2/1/0§3.5/0/-1} + \DefinirCourbeSpline[Nom=splinetest,Trace]{\LISTETEST} + \TrouverMinimum[Methode=spline]{\LISTETEST}[spline-min] + \MarquerPts*[Couleur=red]{(spline-min)} +\end{GraphiqueTikz} +\end{tcblisting} + +\pagebreak + \subsection{Intégrales (version améliorée)}\label{integr} On peut également travailler avec des intégrales. @@ -1163,7 +1285,7 @@ Les \MontreCode{[clés]}, optionnelles, disponibles sont : \item \MontreCode{Couleur} : couleur du tracé, si demandé (\MontreCode{black} par défaut) ; \item \MontreCode{Debut} : borne inférieure de l'ensemble de définition (\MontreCode{\textbackslash pflxmin} par défaut) ; \item \MontreCode{Fin} : borne inférieure de l'ensemble de définition (\MontreCode{\textbackslash pflxmax} par défaut) ; - \item \MontreCode{Pas} : = pas du tracé (il est déterminé \textit{automatiquement} au départ mais peut être modifié). + \item \MontreCode{Pas} : pas du tracé (il est déterminé \textit{automatiquement} au départ mais peut être modifié). \end{itemize} À noter que l'axe vertical est à adapter en fonction des paramètres de la loi normale. @@ -1203,7 +1325,7 @@ Les \MontreCode{[clés]}, optionnelles, disponibles sont : \item \MontreCode{Couleur} : couleur du tracé, si demandé (\MontreCode{black} par défaut) ; \item \MontreCode{Debut} : borne inférieure de l'ensemble de définition (\MontreCode{\textbackslash pflxmin} par défaut) ; \item \MontreCode{Fin} : borne inférieure de l'ensemble de définition (\MontreCode{\textbackslash pflxmax} par défaut) ; - \item \MontreCode{Pas} : = pas du tracé (il est déterminé \textit{automatiquement} au départ mais peut être modifié). + \item \MontreCode{Pas} : pas du tracé (il est déterminé \textit{automatiquement} au départ mais peut être modifié). \end{itemize} À noter que l'axe vertical est à adapter en fonction du paramètre de la loi du khi deux. @@ -1501,6 +1623,7 @@ Les commandes disponibles sont : \lstcmd{tracé interpo~~}{\TracerCourbeInterpo}{deftracinterpo} \lstcmd{def spline~~~~~}{\DefinirCourbeSpline}{deftracfctspline} \lstcmd{tracé spline~~~}{\TracerCourbeSpline}{deftracfctspline} + \lstcmd{tracé droite~~~}{\TracerDroite}{tracdroite} \lstcmd{def points~~~~~}{\DefinirPts}{defpts} \lstcmd{marq pts~~~~~~~}{\MarquerPts}{markpts} \lstcmd{récup absc~~~~~}{\RecupererAbscisse}{recupcoordo} @@ -1510,6 +1633,8 @@ Les commandes disponibles sont : \lstcmd{antécédents~~~~}{\TrouverAntecedents}{defanteced} \lstcmd{antécédents~~~~}{\PlacerAntecedents}{tracanteced} \lstcmd{intersection~~~}{\TrouverIntersections}{intersect} + \lstcmd{maximum~~~~~~~~}{\TrouverMaximum}{maximum} + \lstcmd{minimum~~~~~~~~}{\TrouverMinimum}{minimum} \lstcmd{intégrale~~~~~~}{\TracerIntegrale}{integr} \lstcmd{tangente~~~~~~~}{\TracerTangente}{tgte} \lstcmd{loi normale~~~~}{\DefinirLoiNormale}{loinormale} @@ -1527,6 +1652,7 @@ Les commandes disponibles sont : \begin{quote} \begin{verbatim} +0.1.1 : Droites + Extremums 0.1.1 : Densité loi normale et khi deux + Marquage points + Améliorations 0.1.0 : Version initiale \end{verbatim} diff --git a/Master/texmf-dist/tex/latex/tkz-grapheur/tkz-grapheur.sty b/Master/texmf-dist/tex/latex/tkz-grapheur/tkz-grapheur.sty index 3e7d949764d..8fa5917f56b 100644 --- a/Master/texmf-dist/tex/latex/tkz-grapheur/tkz-grapheur.sty +++ b/Master/texmf-dist/tex/latex/tkz-grapheur/tkz-grapheur.sty @@ -2,9 +2,10 @@ % 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/05/28 0.1.1 Des outils en TikZ pour travailler comme avec un grapheur] +\ProvidesPackage{tkz-grapheur}[2024/05/31 0.1.2 Des outils en TikZ pour travailler comme avec un grapheur] %====HISTORIQUE +% v 0.1.2 Max/Min + Droites % v 0.1.1 Densité loi normale + khi deux + Améliorations diverses % v 0.1.0 Version initiale [fr] @@ -19,7 +20,7 @@ %====BASE \RequirePackage{tikz} \RequirePackage{ifthen} -\usetikzlibrary{calc,intersections,patterns,patterns.meta} +\usetikzlibrary{calc,intersections,patterns,patterns.meta,bbox} \RequirePackage{simplekv} \RequirePackage{xintexpr} \RequirePackage{xstring} @@ -487,7 +488,8 @@ Taillec=2pt,% Taillex=2pt,% Tailleo=1.75pt,% - Style=o + Style=o,% + Traits=false } \NewDocumentCommand\MarquerPts{ s O{} D<>{\normalfont\normalsize} m }{% %étoilée = sans label @@ -500,6 +502,11 @@ \IfStrEq{\pflstylepoints}{x}% {% \foreach \Point in {#4} {% + \ifboolKV[GraphiqueTikzMarkPoints]{Traits}% + {% + \draw[{\useKV[GraphiqueTikzMarkPoints]{Couleur}},pfltraitantec] let \p1 = \Point in ({\x1},{\pflOy}) |- ({\pflOx},{\y1}) ; + }% + {}% \draw[{\useKV[GraphiqueTikzMarkPoints]{Couleur}}] \Point pic{pflptcroix={\useKV[GraphiqueTikzMarkPoints]{Taillex}}/45} ; }% }% @@ -507,6 +514,11 @@ \IfStrEq{\pflstylepoints}{+}% {% \foreach \Point in {#4} {% + \ifboolKV[GraphiqueTikzMarkPoints]{Traits}% + {% + \draw[{\useKV[GraphiqueTikzMarkPoints]{Couleur}},pfltraitantec] let \p1 = \Point in ({\x1},{\pflOy}) |- ({\pflOx},{\y1}) ; + }% + {}% \draw[{\useKV[GraphiqueTikzMarkPoints]{Couleur}}] \Point pic{pflptcroix={\useKV[GraphiqueTikzMarkPoints]{Taillex}}/90} ; }% }% @@ -514,6 +526,11 @@ \IfStrEq{\pflstylepoints}{c}% {% \foreach \Point in {#4} {% + \ifboolKV[GraphiqueTikzMarkPoints]{Traits}% + {% + \draw[{\useKV[GraphiqueTikzMarkPoints]{Couleur}},pfltraitantec] let \p1 = \Point in ({\x1},{\pflOy}) |- ({\pflOx},{\y1}) ; + }% + {}% \filldraw[draw=none,fill={\useKV[GraphiqueTikzMarkPoints]{Couleur}}] \Point pic{pflptcarre={\useKV[GraphiqueTikzMarkPoints]{Taillec}}/0} ; }% }% @@ -521,6 +538,11 @@ \IfStrEq{\pflstylepoints}{d}% {% \foreach \Point in {#4} {% + \ifboolKV[GraphiqueTikzMarkPoints]{Traits}% + {% + \draw[{\useKV[GraphiqueTikzMarkPoints]{Couleur}},pfltraitantec] let \p1 = \Point in ({\x1},{\pflOy}) |- ({\pflOx},{\y1}) ; + }% + {}% \filldraw[draw=none,fill={\useKV[GraphiqueTikzMarkPoints]{Couleur}}] \Point pic{pflptcarre={\useKV[GraphiqueTikzMarkPoints]{Tailleo}}/45} ; }% }% @@ -531,11 +553,21 @@ {% \StrCut{\pflcouleurpoints}{/}{\pflcouleurpointsA}{\pflcouleurpointsB}% \foreach \Point in {#4} {% + \ifboolKV[GraphiqueTikzMarkPoints]{Traits}% + {% + \draw[{\useKV[GraphiqueTikzMarkPoints]{Couleur}},pfltraitantec] let \p1 = \Point in ({\x1},{\pflOy}) |- ({\pflOx},{\y1}) ; + }% + {}% \filldraw[pfltrait,fill=\pflcouleurpointsB,draw=\pflcouleurpointsA] \Point circle[radius={\useKV[GraphiqueTikzMarkPoints]{Tailleo}}] ; }% }% {% \foreach \Point in {#4} {% + \ifboolKV[GraphiqueTikzMarkPoints]{Traits}% + {% + \draw[{\useKV[GraphiqueTikzMarkPoints]{Couleur}},pfltraitantec] let \p1 = \Point in ({\x1},{\pflOy}) |- ({\pflOx},{\y1}) ; + }% + {}% \filldraw[\pflcouleurpoints] \Point circle[radius={\useKV[GraphiqueTikzMarkPoints]{Tailleo}}] ; }% }% @@ -546,6 +578,11 @@ \IfStrEq{\pflstylepoints}{x}% {% \foreach \Point/\Label/\Pos in {#4} {% + \ifboolKV[GraphiqueTikzMarkPoints]{Traits}% + {% + \draw[{\useKV[GraphiqueTikzMarkPoints]{Couleur}},pfltraitantec] let \p1 = \Point in ({\x1},{\pflOy}) |- ({\pflOx},{\y1}) ; + }% + {}% \draw[{\useKV[GraphiqueTikzMarkPoints]{Couleur}}] \Point pic{pflptcroix={\useKV[GraphiqueTikzMarkPoints]{Taillex}}/45} node[\Pos,font=#3] {\Label} ; }% }% @@ -553,6 +590,11 @@ \IfStrEq{\pflstylepoints}{+}% {% \foreach \Point/\Label/\Pos in {#4} {% + \ifboolKV[GraphiqueTikzMarkPoints]{Traits}% + {% + \draw[{\useKV[GraphiqueTikzMarkPoints]{Couleur}},pfltraitantec] let \p1 = \Point in ({\x1},{\pflOy}) |- ({\pflOx},{\y1}) ; + }% + {}% \draw[{\useKV[GraphiqueTikzMarkPoints]{Couleur}}] \Point pic{pflptcroix={\useKV[GraphiqueTikzMarkPoints]{Taillex}}/90} node[\Pos,font=#3] {\Label} ; }% }% @@ -560,6 +602,11 @@ \IfStrEq{\pflstylepoints}{c}% {% \foreach \Point/\Label/\Pos in {#4} {% + \ifboolKV[GraphiqueTikzMarkPoints]{Traits}% + {% + \draw[{\useKV[GraphiqueTikzMarkPoints]{Couleur}},pfltraitantec] let \p1 = \Point in ({\x1},{\pflOy}) |- ({\pflOx},{\y1}) ; + }% + {}% \filldraw[draw=none,fill={\useKV[GraphiqueTikzMarkPoints]{Couleur}}] \Point pic{pflptcarre={\useKV[GraphiqueTikzMarkPoints]{Taillec}}/0} node[\Pos,{\useKV[GraphiqueTikzMarkPoints]{Couleur}},font=#3] {\Label} ; }% }% @@ -567,6 +614,11 @@ \IfStrEq{\pflstylepoints}{d}% {% \foreach \Point/\Label/\Pos in {#4} {% + \ifboolKV[GraphiqueTikzMarkPoints]{Traits}% + {% + \draw[{\useKV[GraphiqueTikzMarkPoints]{Couleur}},pfltraitantec] let \p1 = \Point in ({\x1},{\pflOy}) |- ({\pflOx},{\y1}) ; + }% + {}% \filldraw[draw=none,fill={\useKV[GraphiqueTikzMarkPoints]{Couleur}}] \Point pic{pflptcarre={\useKV[GraphiqueTikzMarkPoints]{Tailleo}}/45} node[\Pos,{\useKV[GraphiqueTikzMarkPoints]{Couleur}},font=#3] {\Label} ; }% }% @@ -577,11 +629,21 @@ {% \StrCut{\pflcouleurpoints}{/}{\pflcouleurpointsA}{\pflcouleurpointsB}% \foreach \Point/\Label/\Pos in {#4} {% + \ifboolKV[GraphiqueTikzMarkPoints]{Traits}% + {% + \draw[{\useKV[GraphiqueTikzMarkPoints]{Couleur}},pfltraitantec] let \p1 = \Point in ({\x1},{\pflOy}) |- ({\pflOx},{\y1}) ; + }% + {}% \draw[pfltrait,\pflcouleurpointsA,fill=\pflcouleurpointsB] \Point circle[radius={\useKV[GraphiqueTikzMarkPoints]{Tailleo}}] node[\Pos,font=#3] {\Label} ; }% }% {% \foreach \Point/\Label/\Pos in {#4} {% + \ifboolKV[GraphiqueTikzMarkPoints]{Traits}% + {% + \draw[{\useKV[GraphiqueTikzMarkPoints]{Couleur}},pfltraitantec] let \p1 = \Point in ({\x1},{\pflOy}) |- ({\pflOx},{\y1}) ; + }% + {}% \filldraw[\pflcouleurpoints] \Point circle[radius={\useKV[GraphiqueTikzMarkPoints]{Tailleo}}] node[\Pos,font=#3] {\Label} ; }% }% @@ -1676,4 +1738,151 @@ \end{scope} } +%====droite +\defKV[GraphiquetikzDroite]{% + Nom=\def\pfldroitename{#1} +} + +\setKVdefault[GraphiquetikzDroite]{% + Pente=false,% + Couleur=black,% + Debut={\pflxmin},% + Fin={\pflxmax},% + Nom={} +} + +\NewDocumentCommand\TracerDroite{ O{} m m D<>{} }{% + \restoreKV[GraphiquetikzDroite]% + \setKV[GraphiquetikzDroite]{#1}% + %1er point + \path #2;% + \pgfgetlastxy{\macrox}{\macroy}% + \xdef\pfldtetikzxA{\xintfloateval{(\ConvertirPtToCm{\macrox})/(\pflxunit)}}% + \xdef\pfldtetikzyA{\xintfloateval{(\ConvertirPtToCm{\macroy})/(\pflyunit)}}% + %2ème point si besoin + \ifboolKV[GraphiquetikzDroite]{Pente}% + {% + \xdef\pfldtepente{\xintfloateval{#3}}% + }% + {% + \path #3;% + \pgfgetlastxy{\macrox}{\macroy}% + \xdef\pfldtetikzxB{\xintfloateval{(\ConvertirPtToCm{\macrox})/(\pflxunit)}}% + \xdef\pfldtetikzyB{\xintfloateval{(\ConvertirPtToCm{\macroy})/(\pflyunit)}}% + \xdef\pfldtepente{\xintfloateval{(\pfldtetikzyB-\pfldtetikzyA)/(\pfldtetikzxB-\pfldtetikzxA)}}% + }% + \begin{scope} + \clip ({\pflxmin},{\pflymin}) rectangle ({\pflxmax},{\pflymax}) ; + \xintifboolexpr{\pfldtetikzxA == \pfldtetikzxB}% + {% + \IfEq{\pfldroitename}{}% + {% + \draw[pfltrait,{\useKV[GraphiquetikzDroite]{Couleur}},#4] (\pfldtetikzxA,\pflymin) -- (\pfldtetikzxA,\pflymax) ; + }% + {% + \draw[pfltrait,{\useKV[GraphiquetikzDroite]{Couleur}},#4,name path global=\pfldroitename] (\pfldtetikzxA,\pflymin) -- (\pfldtetikzxA,\pflymax) ; + }% + }% + {% + \IfEq{\pfldroitename}{}% + {% + \draw[pfltrait,{\useKV[GraphiquetikzDroite]{Couleur}},domain={\useKV[GraphiquetikzDroite]{Debut}}:{\useKV[GraphiquetikzDroite]{Fin}},samples=2,#4] plot (\x,{\pfldtepente*(\x-\pfldtetikzxA)+\pfldtetikzyA}) ; + }% + {% + \draw[pfltrait,{\useKV[GraphiquetikzDroite]{Couleur}},domain={\useKV[GraphiquetikzDroite]{Debut}}:{\useKV[GraphiquetikzDroite]{Fin}},samples=2,name path global=\pfldroitename,#4] plot (\x,{\pfldtepente*(\x-\pfldtetikzxA)+\pfldtetikzyA}) ; + }% + }% + \end{scope} +} + +\defKV[GraphiqueTikzMinMax]{% + Pas=\def\pflminmaxstep{#1},% + Methode=\def\pflminmaxmethode{#1},% + Coeffs=\def\pflminmaxcoeffs{#1} +} +\setKVdefault[GraphiqueTikzMinMax]{% + Debut={\pflxmin},% + Fin={\pflxmax},% + Pas={},% + Tension=0.5,% + Methode=fonction,% + Coeffs=3 +} + +\NewDocumentCommand\TrouverMaximum{ O{} m O{c-max} }{% + %1=clés + %2=paramètres en fonction de [Methode] + \restoreKV[GraphiqueTikzMinMax]% + \setKV[GraphiqueTikzMinMax]{#1}% + \IfStrEq{\pflstepcurve}{}% + {% + \xdef\pflminmaxstep{\xintfloateval{((\useKV[GraphiqueTikzMinMax]{Fin})-(\useKV[GraphiqueTikzMinMax]{Debut}))/100}}% + }% + {}% + \begin{scope}[bezier bounding box,local bounding box=bbtmpmax] + \IfStrEq{\pflminmaxmethode}{fonction}% + {% + \path[draw=none,name path=curvetmpmax] plot[smooth] coordinates {% + \xintthecoords\xintfloatexpr + seq((x,#2(x)),x={\useKV[GraphiqueTikzMinMax]{Debut}}..[\pflstepcurve]..{\useKV[GraphiqueTikzMinMax]{Fin}},{\useKV[GraphiqueTikzMinMax]{Fin}}) + \relax + }; + }% + {}% + \IfStrEq{\pflminmaxmethode}{interpo}% + {% + \path[draw=none,name path=curvetmpmax] plot[smooth,tension={\useKV[GraphiqueTikzMinMax]{Tension}}] coordinates {#2}; + }% + {}% + \IfStrEq{\pflminmaxmethode}{spline}% + {% + \GenererSpline{#2}{\pflminmaxcoeffs}[\tmpsplineminmax]% + \path[draw=none,name path=curvetmpmax] \tmpsplineminmax ; + }% + {}% + %retour + \path[name path=tmpmax] ([yshift=-0.25\pgflinewidth]bbtmpmax.north east) -- ([yshift=-0.25\pgflinewidth]bbtmpmax.north west) ; + \path[name intersections={of=curvetmpmax and tmpmax,name=#3}] ; + \coordinate (#3) at ($0.5*(#3-1)+0.5*(#3-2)+(0,0.25\pgflinewidth)$) ; + \end{scope} +} + +\NewDocumentCommand\TrouverMinimum{ O{} m O{c-min} }{% + %1=clés + %2=paramètres en fonction de [Methode] + \restoreKV[GraphiqueTikzMinMax]% + \setKV[GraphiqueTikzMinMax]{#1}% + \IfStrEq{\pflstepcurve}{}% + {% + \xdef\pflminmaxstep{\xintfloateval{((\useKV[GraphiqueTikzMinMax]{Fin})-(\useKV[GraphiqueTikzMinMax]{Debut}))/100}}% + }% + {}% + \begin{scope}[bezier bounding box,local bounding box=bbtmpmin] + \IfStrEq{\pflminmaxmethode}{fonction}% + {% + \path[draw=none,name path=curvetmpmin] plot[smooth] coordinates {% + \xintthecoords\xintfloatexpr + seq((x,#2(x)),x={\useKV[GraphiqueTikzMinMax]{Debut}}..[\pflstepcurve]..{\useKV[GraphiqueTikzMinMax]{Fin}},{\useKV[GraphiqueTikzMinMax]{Fin}}) + \relax + }; + }% + {}% + \IfStrEq{\pflminmaxmethode}{interpo}% + {% + \path[draw=none,name path=curvetmpmin] plot[smooth,tension={\useKV[GraphiqueTikzMinMax]{Tension}}] coordinates {#2}; + }% + {}% + \IfStrEq{\pflminmaxmethode}{spline}% + {% + \GenererSpline{#2}{\pflminmaxcoeffs}[\tmpsplineminmax]% + \path[draw=none,name path=curvetmpmin] \tmpsplineminmax ; + }% + {}% + %retour + \path[name path=tmpmin] ([yshift=0.25\pgflinewidth]bbtmpmin.south east) -- ([yshift=0.25\pgflinewidth]bbtmpmin.south west) ; + \path[name intersections={of=curvetmpmin and tmpmin,name=#3}] ; + \coordinate (#3) at ($0.5*(#3-1)+0.5*(#3-2)+(0,-0.25\pgflinewidth)$) ; + \end{scope} +} + \endinput
\ No newline at end of file |