texlive[71241] Master: tkz-grapheur (12may24)

commits+karl at tug.org commits+karl at tug.org
Sun May 12 21:13:12 CEST 2024


Revision: 71241
          https://tug.org/svn/texlive?view=revision&revision=71241
Author:   karl
Date:     2024-05-12 21:13:12 +0200 (Sun, 12 May 2024)
Log Message:
-----------
tkz-grapheur (12may24)

Modified Paths:
--------------
    trunk/Master/tlpkg/bin/tlpkg-ctan-check
    trunk/Master/tlpkg/libexec/ctan2tds
    trunk/Master/tlpkg/tlpsrc/collection-pictures.tlpsrc

Added Paths:
-----------
    trunk/Master/texmf-dist/doc/latex/tkz-grapheur/
    trunk/Master/texmf-dist/doc/latex/tkz-grapheur/README.md
    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/
    trunk/Master/texmf-dist/tex/latex/tkz-grapheur/tkz-grapheur.sty
    trunk/Master/tlpkg/tlpsrc/tkz-grapheur.tlpsrc

Added: trunk/Master/texmf-dist/doc/latex/tkz-grapheur/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tkz-grapheur/README.md	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/tkz-grapheur/README.md	2024-05-12 19:13:12 UTC (rev 71241)
@@ -0,0 +1,7 @@
+tkz-grapheur is a package to work with curves, with TikZ.
+--------------------------------------------------------------------------------
+tkz-grapheur un package spécifique pour travailler avec des courbes, en TikZ.
+--------------------------------------------------------------------------------
+Author  : Cédric Pierquet
+email   : cpierquet at outlook.fr
+Licence : Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txt
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/doc/latex/tkz-grapheur/README.md
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/tkz-grapheur/tkz-grapheur-doc-fr.pdf
===================================================================
(Binary files differ)

Index: 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.pdf	2024-05-12 19:12:00 UTC (rev 71240)
+++ trunk/Master/texmf-dist/doc/latex/tkz-grapheur/tkz-grapheur-doc-fr.pdf	2024-05-12 19:13:12 UTC (rev 71241)

Property changes on: trunk/Master/texmf-dist/doc/latex/tkz-grapheur/tkz-grapheur-doc-fr.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Added: 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	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/tkz-grapheur/tkz-grapheur-doc-fr.tex	2024-05-12 19:13:12 UTC (rev 71241)
@@ -0,0 +1,1369 @@
+% !TeX TXS-program:compile = txs:///arara
+% arara: pdflatex: {shell: yes, synctex: no, interaction: batchmode}
+% arara: pdflatex: {shell: yes, synctex: no, interaction: batchmode} if found('log', '(undefined references|Please rerun|Rerun to get)')
+
+\documentclass[11pt,a4paper]{ltxdoc}
+\usepackage[T1]{fontenc}
+\usepackage[utf8]{inputenc}
+\usepackage{tkz-grapheur}
+\usepackage{amsmath}
+\usepackage{fancyvrb}
+\usepackage{fancyhdr}
+\usepackage{hyperref}
+\usepackage{nicefrac}
+\usepackage{tcolorbox}
+\tcbuselibrary{skins,minted}
+\fancyhf{}
+\renewcommand{\headrulewidth}{0pt}
+\lfoot{\sffamily\small [tkz-grapheur]}
+\rfoot{\sffamily\small - \thepage{} -}
+\usepackage{hologo}
+\providecommand\tikzlogo{Ti\textit{k}Z}
+\providecommand\TeXLive{\TeX{}Live\xspace}
+\providecommand\PSTricks{\textsf{PSTricks}\xspace}
+\let\pstricks\PSTricks
+\let\TikZ\tikzlogo
+
+\urlstyle{same}
+\hypersetup{pdfborder=0 0 0}
+\usepackage[margin=2cm]{geometry}
+\setlength{\parindent}{0pt}
+\def\TPversion{0.1.0}
+\def\TPdate{11/05/2024}
+\usepackage{soul}
+\usepackage{codehigh}
+\usepackage{tabularray}
+\sethlcolor{lightgray!25}
+\NewDocumentCommand\MontreCode{ m }{%
+	\hl{\vphantom{\texttt{pf}}\texttt{#1}}%
+}
+\usepackage[french]{babel}
+
+\renewcommand{\footnoterule}{\vfill\kern -3pt \hrule width 0.4\columnwidth \kern 2.6pt}
+
+\begin{document}
+
+\pagestyle{fancy}
+
+\thispagestyle{empty}
+
+\begin{center}
+	\begin{minipage}{0.88\linewidth}
+	\begin{tcolorbox}[colframe=yellow,colback=yellow!15]
+		\begin{center}
+			\begin{tabular}{c}
+				{\Huge \texttt{tkz-grapheur [fr]}}\\
+				\\
+				{\LARGE Un système de grapheur, basé sur \TikZ.}\\
+				\\
+				{\small \texttt{Version \TPversion{} -- \TPdate}}
+		\end{tabular}
+		\end{center}
+	\end{tcolorbox}
+\end{minipage}
+\end{center}
+
+\begin{center}
+	\begin{tabular}{c}
+	\texttt{Cédric Pierquet}\\
+	{\ttfamily c pierquet -- at -- outlook . fr}\\
+	\texttt{\url{https://github.com/cpierquet/tkz-grapheur}} \\
+\end{tabular}
+\end{center}
+
+\hrule
+
+\vfill
+
+\begin{tcolorbox}[colframe=lightgray,colback=lightgray!5,halign=center]
+\begin{GraphiqueTikz}[x=0.85cm,y=0.35cm,Xmin=0,Xmax=10,Ymin=0,Ymax=16]
+	%préparation de la fenêtre
+	\TracerAxesGrilles[Elargir=2.5mm,Police=\small]{0,1,...,10}{0,2,...,16}
+	%déf des fonctions avec nom courbe + nom fonction + expression
+	\DefinirFonction[Nom=cf]<f>{3*x-6}
+	\DefinirFonction[Nom=cg]<g>{-(x-6)^2+12}
+	%antécédents et intersection
+	\TrouverIntersections[Aff=false,Nom=K]{cf}{cg}
+	\TrouverAntecedents[AffDroite,Couleur=orange,Nom=I]{cg}{8}
+	\TrouverAntecedents[Aff=false,Nom=J]{cg}{0}
+	%intégrale sous une courbe, avec intersection
+	\TracerIntegrale%
+	[Couleurs=blue/purple,Bornes=noeuds,Style=hachures,Hachures=bricks]%
+		{g(x)}%
+		{(I-2)}{(J-2)}
+	%intégrale entre les deux courbes
+	\TracerIntegrale[Bornes=noeuds,Type=entre]{f(x)}[g(x)]{(K-1)}{(K-2)}
+	%tracé des courbes et des points
+	\TracerCourbe[Couleur=red]{f(x)}
+	\TracerCourbe[Couleur=teal]{g(x)}
+	\PlacerPoints<\small>{(K-1)/below right/L,(K-2)/above left/M}%
+	\PlacerPoints[violet]<\small>{(I-1)/above left/D,(I-2)/above right/E}%
+	%essai de tangente
+	\TracerTangente[Couleurs=pink!75!black/yellow,kl=2,kr=2,AffPoint]{g}{5}
+	%essai d'image
+	\PlacerImages[Couleurs=cyan]{g}{7,7.25,7.5}
+	%surimpression des axes
+	\TracerAxesGrilles[Grads=false,Grille=false,Elargir=2.5mm]{0,1,...,10}{0,2,...,16}
+\end{GraphiqueTikz}
+\end{tcolorbox}
+
+\vspace*{5mm}
+
+\begin{tcolorbox}[colframe=lightgray,colback=lightgray!5,halign=center]
+\begin{GraphiqueTikz}%
+	[x=3.5cm,y=4cm,
+	Xmin=0,Xmax=3.5,Xgrille=pi/12,Xgrilles=pi/24,
+	Ymin=-1.05,Ymax=1.05,Ygrille=0.2,Ygrilles=0.05]
+	%préparation de la fenêtre
+	\TracerAxesGrilles[Grads=false,Elargir=2.5mm,Format=ntrig/nsqrt]%
+	{pi/6,pi/4,pi/3,pi/2,2*pi/3,3*pi/4,5*pi/6,pi}
+	{0,sqrt(2)/2,1/2,sqrt(3)/2,1,-1,-sqrt(3)/2,-1/2,-sqrt(2)/2}
+	%rajouter des valeurs
+	\RajouterValeursAxeX{0.25,1.4,3.3}{\num{0.25},\num{1.4},\num{3.3}}
+	%fonction trigo (déf + tracé)
+	\DefinirFonction[Nom=ccos,Debut=0,Fin=pi]<fcos>{cos(x)}
+	\DefinirFonction[Nom=csin,Debut=0,Fin=pi]<fsin>{sin(x)}
+	%intégrale
+	\TrouverIntersections[Aff=false,Nom=JKL]{ccos}{csin}
+	%\DefinirPts{FIN/pi/0}
+	\TracerIntegrale%
+	[Bornes=noeud/abs,Type=entre,Couleurs=cyan/cyan!50]%
+		{fsin(x)}[fcos(x)]%
+		{(JKL-1)}{pi}
+	%tracé des courbes
+	\TracerCourbe[Couleur=red,Debut=0,Fin=pi]{fcos(x)}
+	\TracerCourbe[Couleur=olive,Debut=0,Fin=pi]{fsin(x)}
+	%antécédent(s)
+	\PlacerAntecedents[Couleurs=blue/teal!50!black,Traits]{ccos}{-0.25}
+	\PlacerAntecedents[Couleurs=red/magenta!50!black,Traits]{csin}{0.5}
+	\PlacerAntecedents[Couleurs=orange/orange!50!black,Traits]{csin}{sqrt(2)/2}
+	\PlacerAntecedents[Couleurs=green!50!black/green,Traits]{csin}{sqrt(3)/2}
+	%surimpression axes
+	\TracerAxesGrilles[Grille=false,Elargir=2.5mm,Format=ntrig/nsqrt]%
+	{pi/6,pi/4,pi/3,pi/2,2*pi/3,3*pi/4,5*pi/6,pi}
+	{0,sqrt(2)/2,1/2,sqrt(3)/2,1,-1,-sqrt(3)/2,-1/2,-sqrt(2)/2}
+\end{GraphiqueTikz}
+\end{tcolorbox}
+
+\vfill
+
+
+\vspace*{5mm}
+
+\pagebreak
+
+\phantomsection
+
+\hypertarget{matoc}{}
+
+\tableofcontents
+
+\vspace*{5mm}
+
+\hrule
+
+\vspace*{5mm}
+
+\pagebreak
+
+\section{Introduction}
+
+\subsection{Description et idées générales}
+
+Avec ce modeste package, loin des capacités offertes par exemple par les excellents packages \MontreCode{tkz-*}\footnote{par exemple tkz-base \url{https://ctan.org/pkg/tkz-base} et tkz-fct \url{https://ctan.org/pkg/tkz-fct}.} (d'Alain Matthes) ou \MontreCode{tzplot}\footnote{CTAN :  \url{https://ctan.org/pkg/tzplot}.} (de In-Sung Cho), il est possible de travailler sur des graphiques de fonctions, en langage \TikZ, de manière \textit{intuitive} et \textit{explicite}.
+
+\smallskip
+
+Concernant le fonctionnement global :
+
+\smallskip
+
+\begin{itemize}
+	\item des styles particuliers pour les objets utilisés ont été définis, mais ils peuvent localement être modifiés ;
+	\item le nom des commandes est sous forme \textit{opérationnelle}, de sorte que la construction des éléments graphiques a une forme quasi \textit{algorithmique}.
+\end{itemize}
+
+\subsection{Fonctionnement global}
+
+Pour schématiser, il \textit{suffit} :
+
+\smallskip
+
+\begin{itemize}
+	\item de déclarer les paramètres de la fenêtre graphique ;
+	\item d'afficher grille/axes/graduations ;
+	\item de déclarer les fonctions ou les courbes d'interpolation ;
+	\item de déclarer éventuellement des points particuliers ;
+	\item de placer un nuage de points.
+\end{itemize}
+
+\smallskip
+
+Il sera ensuite possible :
+
+\begin{itemize}
+	\item de tracer des courbes ;
+	\item de déterminer graphiquement des images ou des antécédents ;
+	\item de rajouter des éléments de dérivation (tangentes) ou d'intégration (domaine) ;
+	\item de tracer une droite d'ajustement linéaire.
+\end{itemize}
+
+\subsection{Packages utilisés, et options du package}
+
+Le package utilise :
+
+\smallskip
+
+\begin{itemize}
+	\item \MontreCode{tikz}, avec les librairies \MontreCode{calc,intersections,patterns,patterns.meta} ;
+	\item \MontreCode{simplekv} ;
+	\item \MontreCode{xintexpr} ;
+	\item \MontreCode{xstring} ;
+	\item \MontreCode{listofitems}.
+\end{itemize}
+
+\smallskip
+
+Le package charge également \MontreCode{siunitx} avec les options classiques \texttt{[fr]}, mais il est possible de ne pas le charger en utilisant l'option \MontreCode{[nonsiunitx]}.
+
+\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]}.
+
+\smallskip
+
+Les différentes options sont bien évidemment cumulables.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%chargement par défaut
+\usepackage{tkz-grapheur}
+
+%chargement sans sinuitx, à charger manuellement
+\usepackage[nonsiunitx]{tkz-grapheur}
+
+%chargement sans tikz.babel
+\usepackage[nontikzbabel]{tkz-grapheur}
+\end{tcblisting}
+
+\pagebreak
+
+À noter également que certaines commandes peuvent utiliser des packages comme \MontreCode{nicefrac}, qui sera donc à charger le cas échéant.
+
+\smallskip
+
+Concernant la partie \textit{calculs} et \textit{tracés}, c'est le package \MontreCode{xint} qui s'en occupe.
+
+\subsection{Avertissements}
+
+Il est possible, dû aux calculs (multiples) effectués en interne, que le temps de compilation soir un peu \textit{allongé}.
+
+\smallskip
+
+La précision des résultats (de détermination) semble être aux environs de $10^{-4}$, ce qui devrait normalement garantir des tracés et lectures \textit{satisfaisantes}. Il est quand même conseillé d'être prudent quant aux résultats obtenus et ceux attendus.
+
+\subsection{Exemple introductif}
+
+On peut par exemple partir de l'exemple suivant, pour \textit{illustrer} le cheminement des commandes de ce package. Les commandes et la syntaxe seront détaillées dans les sections suivantes !
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphiqueTikz}%
+	[x=7.5cm,y=7.5cm,Xmin=0,Xmax=1.001,Xgrille=0.1,Xgrilles=0.02,
+	Ymin=0,Ymax=1.001,Ygrille=0.1,Ygrilles=0.02]
+	\TracerAxesGrilles[Elargir=2.5mm,Police=\small]%
+		{0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1}
+		{0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1}
+	\DefinirFonction[Nom=cf,Debut=0,Fin=1]<f>{x*exp(x-1)}
+	\DefinirFonction[Nom=delta,Debut=0,Fin=1]<D>{x}
+	\TracerIntegrale[Type=entre]{f(x)}[D(x)]{0}{1}
+	\TracerCourbe[Couleur=red]{f(x)}
+	\TracerCourbe[Couleur=teal]{D(x)}
+	\PlacerImages[Couleurs=blue/cyan,Traits]{f}{0.8,0.9}
+	\PlacerAntecedents[Couleurs=green!50!black/olive,Traits]{cf}{0.5}
+\end{GraphiqueTikz}
+\end{tcblisting}
+
+\newpage
+
+\section{Styles de base et création de l'environnement}
+
+\subsection{Styles de base}
+
+Les styles utilisés pour les tracés sont donnés ci-dessous.
+
+\smallskip
+
+Dans une optique de \textit{simplicité}, seule la couleur des éléments peut être paramétrée, mais si l'utilisateur le souhaite, il peut redéfinir les styles proposés.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%paramètres déclarés et stockés (utilisables dans l'environnement a posteriori)
+\tikzset{
+	Xmin/.store in=\pflxmin,Xmin/.default=-3,Xmin=-3,
+	Xmax/.store in=\pflxmax,Xmax/.default=3,Xmax=3,
+	Ymin/.store in=\pflymin,Ymin/.default=-3,Ymin=-3,
+	Ymax/.store in=\pflymax,Ymax/.default=3,Ymax=3,
+	Origx/.store in=\pflOx,Origx/.default=0,Origx=0,
+	Origy/.store in=\pflOy,Origy/.default=0,Origy=0,
+	Xgrille/.store in=\pflgrillex,Xgrille/.default=1,Xgrille=1,
+	Xgrilles/.store in=\pflgrillexs,Xgrilles/.default=0.5,Xgrilles=0.5,
+	Ygrille/.store in=\pflgrilley,Ygrille/.default=1,Ygrille=1,
+	Ygrilles/.store in=\pflgrilleys,Ygrilles/.default=0.5,Ygrilles=0.5
+}
+\end{tcblisting}
+
+On retrouve donc :
+
+\smallskip
+
+\begin{itemize}
+	\item l'origine du repère (\MontreCode{Origx}/\MontreCode{Origy}) ;
+	\item les valeurs extrêmes des axes (\MontreCode{Xmin}/\MontreCode{Xmax}/\MontreCode{Ymin}/\MontreCode{Ymax}) ;
+	\item les paramètres des grilles principales et secondaires (\MontreCode{Xgrille}/\MontreCode{Xgrilles}/\MontreCode{Ygrille}/\MontreCode{Ygrilles}).
+\end{itemize}
+
+\smallskip
+
+Concernant les styles des \textit{objets}, ils sont donnés ci-dessous.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%styles grilles/axes
+\tikzset{pflgrillep/.style={thin,lightgray}}
+\tikzset{pflgrilles/.style={very thin,lightgray}}
+\tikzset{pflaxes/.style={line width=0.8pt,->,>=latex}}
+
+%style des points (courbe / nuage)
+\tikzset{pflpointc/.style={radius=1.75pt}}
+\tikzset{pflpointnuage/.style={radius=1.75pt}}
+
+%style des courbes
+\tikzset{pflcourbe/.style={line width=1.05pt}}
+
+%style des traits (normaux, antécédents, images)
+\tikzset{pfltrait/.style={line width=0.8pt}}
+\tikzset{pfltraitantec/.style={line width=0.95pt,densely dashed}}
+\tikzset{pfltraitimg/.style={line width=0.95pt,densely dashed,->,>=latex}}
+
+%style des flèches
+\tikzset{pflflecheg/.style={<-,>=latex}}
+\tikzset{pflfleched/.style={->,>=latex}}
+\tikzset{pflflechegd/.style={<->,>=latex}}
+\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}
+
+L'environnement proposé est basé sur \TikZ, de sorte que toute commande \textit{classique} liée à \TikZ\ peut être utilisée en marge des commandes du package !
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+\begin{GraphiqueTikz}[options tikz]<clés>
+	%code(s)
+\end{GraphiqueTikz}
+\end{tcblisting}
+
+Les \MontreCode{[options tikz]} sont les options \textit{classiques} qui peuvent être passées à un environnement \TikZ, ainsi que les clés des \textsf{axes/grilles/fenêtre} présentées précédemment.
+
+\smallskip
+
+Les \MontreCode{<clés>} spécifiques (et optionnelles) sont :
+
+\smallskip
+
+\begin{itemize}
+	\item \MontreCode{TailleGrad} : taille des graduations des axes (\MontreCode{3pt} pour 3pt \textit{dessus} et 3pt \textit{dessous}) ;
+	\item \MontreCode{AffCadre} : booléen (\MontreCode{false} par défaut) pour afficher un cadre qui délimite la fenêtre graphique (hors graduations éventuelles).
+\end{itemize}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphiqueTikz}
+	[x=0.075cm,y=0.03cm,Xmin=0,Xmax=160,Xgrille=20,Xgrilles=10,
+	Origy=250,Ymin=250,Ymax=400,Ygrille=25,Ygrilles=5]
+	<AffCadre>
+\end{GraphiqueTikz}
+\end{tcblisting}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphiqueTikz}%
+	[x=0.9cm,y=0.425cm,Xmin=4,Xmax=20,Origx=4,
+	Ymin=40,Ymax=56,Ygrille=2,Ygrilles=1,Origy=40]
+	<AffCadre>
+\end{GraphiqueTikz}
+\end{tcblisting}
+
+Ce sera bien évidemment plus parlant avec les éléments graphiques rajoutés !
+
+\pagebreak
+
+\subsection{Grilles et axes}\label{creaaxesgr}
+
+La première commande \textit{utile} va permettre de créer les grilles, les axes et les graduations.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%dans l'environnement GraphiqueTikz
+\TracerAxesGrille[clés]{gradX}{gradY}
+\end{tcblisting}
+
+Les \MontreCode{[clés]}, optionnelles, disponibles sont :
+
+\smallskip
+
+\begin{itemize}
+	\item \MontreCode{Grille} : booléen (\MontreCode{true} par défaut) pour afficher les grilles (pour une grille unique, il suffit de mettre les paramètres identiques pour \MontreCode{Xgrille}/\MontreCode{Xgrilles} ou \MontreCode{Ygrille}/\MontreCode{Ygrilles}) ;
+	\item \MontreCode{Elargir} : rajout à la fin des axes (\MontreCode{0} par défaut) ;
+	\item \MontreCode{Grads} : booléen (\MontreCode{true} par défaut) pour les graduations ;
+	\item \MontreCode{Police} : police globale des graduations {\MontreCode{vide} par défaut} ;
+	\item \MontreCode{Format} : formatage particulier (voir en dessous) des valeurs des axes.
+\end{itemize}
+
+\smallskip
+
+Concernant la clé \MontreCode{Format}, elle permet de spécifier un paramétrage spécifique pour les valeurs des axes.
+
+\smallskip
+
+Elle peut être donnée sous la forme \MontreCode{fmt} pour un formatage combiné, ou sous la forme \MontreCode{fmtX/fmtY} pour différencier le formatage.
+
+\smallskip
+
+Les options possible sont :
+
+\smallskip
+
+\begin{itemize}
+	\item \MontreCode{num} : formater avec \textsf{siunitx} ;
+	\item \MontreCode{annee} : formater en année ;
+	\item \MontreCode{frac} : formater en fraction \textsf{frac} ;
+	\item \MontreCode{dfrac} : formater en fraction \textsf{dfrac} ;
+	\item \MontreCode{nfrac} : formater en fraction \textsf{nicefrac} ;\hfill(à charger !)
+	\item \MontreCode{trig} : formater en trigo avec \textsf{frac} ;
+	\item \MontreCode{dtrig} : formater en trigo avec \textsf{dfrac} ;
+	\item \MontreCode{ntrig} : formater en trigo avec \textsf{nfrac} ;
+	\item \MontreCode{sqrt} : formater en racine avec \textsf{frac} ;
+	\item \MontreCode{dsqrt} : formater en racine avec \textsf{dfrac} ;
+	\item \MontreCode{nsqrt} : formater en racine avec \textsf{nicefrac}.
+\end{itemize}
+
+\smallskip
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphiqueTikz}
+	[x=0.075cm,y=0.03cm,Xmin=0,Xmax=160,Xgrille=20,Xgrilles=10,
+	Origy=250,Ymin=250,Ymax=400,Ygrille=25,Ygrilles=5]
+	\TracerAxesGrilles[Elargir=2.5mm,Police=\small]{0,10,...,160}{250,275,...,400}
+\end{GraphiqueTikz}
+\end{tcblisting}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphiqueTikz}%
+	[x=0.9cm,y=0.425cm,Xmin=4,Xmax=20,Origx=4,
+	Ymin=40,Ymax=56,Ygrille=2,Ygrilles=1,Origy=40]
+	\TracerAxesGrilles[Elargir=2.5mm,Police=\small]{4,5,...,20}{40,42,...,56}
+\end{GraphiqueTikz}
+\end{tcblisting}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphiqueTikz}%
+	[x=2.75cm,y=3cm,
+	Xmin=0,Xmax=3.5,Xgrille=pi/12,Xgrilles=pi/24,
+	Ymin=-1.05,Ymax=1.05,Ygrille=0.2,Ygrilles=0.05]
+	\TracerAxesGrilles[Elargir=2.5mm,Format=dtrig/nsqrt,Police=\footnotesize]%
+		{pi/6,pi/4,pi/3,pi/2,2*pi/3,3*pi/4,5*pi/6,pi}
+		{0,sqrt(2)/2,1/2,sqrt(3)/2,1,-1,-sqrt(3)/2,-1/2,-sqrt(2)/2}
+\end{GraphiqueTikz}
+\end{tcblisting}
+
+Dans le cas où le formatage ne donne pas de résultat(s) satisfaisant(s), il est possible d'utiliser une commande générique de placement des graduations.
+
+\pagebreak
+
+Dans le cas où les graduations sont \textit{naturellement} définies par les données de la fenêtre et de la grille (principale), il est possible de préciser \MontreCode{auto} dans les arguments obligatoires (dans ce cas le formatage ne sera pas possible, et \MontreCode{Format=num} sera obligatoirement utilisé).
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphiqueTikz}%
+	[x=1.5cm,y=6cm,Xmin=0,Xmax=7,Xgrille=0.5,Xgrilles=0.25,
+	Ymin=0,Ymax=1,Ygrille=0.1,Ygrilles=0.05]
+	\TracerAxesGrilles[Elargir=2.5mm,Dernier]{auto}{auto}
+\end{GraphiqueTikz}
+\end{tcblisting}
+
+\pagebreak
+
+\subsection{Ajout de valeurs manuellement}\label{ajoutvals}
+
+Il est également possible d'utiliser une commande spécifique pour placer des valeurs sur les axes, indépendamment d'un système \textit{automatisé} de formatage.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%dans l'environnement GraphiqueTikz
+\RajouterValeursAxeX[clés]{positions}{valeurs formatées}
+\RajouterValeursAxeY[clés]{positions}{valeurs formatées}
+\end{tcblisting}
+
+Les \MontreCode{[clés]}, optionnelles, disponibles sont :
+
+\smallskip
+
+\begin{itemize}
+	\item \MontreCode{Police} : police globale des graduations {\MontreCode{vide} par défaut} ;
+	\item \MontreCode{Traits} : booléen pour ajouter les traits des graduations {\MontreCode{true} par défaut}.
+\end{itemize}
+
+\smallskip
+
+Les arguments obligatoires correspondent aux abscisses (en langage\TikZ) et aux labels (en langage \LaTeX) des graduations.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphiqueTikz}%
+	[x=2.75cm,y=3cm,
+	Xmin=0,Xmax=3.5,Xgrille=pi/12,Xgrilles=pi/24,
+	Ymin=-1.05,Ymax=1.05,Ygrille=0.2,Ygrilles=0.05]
+	\TracerAxesGrilles[Grad=false,Elargir=2.5mm,]{}{}
+	\RajouterValeursAxeX
+		{0.15,0.6,pi/2,2.8284}
+		{\num{0.15},$\frac35$,$\displaystyle\frac{\pi}{2}$,$\sqrt{8}$}
+	\RajouterValeursAxeY
+		{-1,0.175,0.3,sqrt(3)/2}
+		{\num{-1},\num{0.175},$\nicefrac{3}{10}$,$\frac{\sqrt{3}}{2}$}
+\end{GraphiqueTikz}
+\end{tcblisting}
+
+\pagebreak
+
+\section{Commandes spécifiques de définitions}
+
+\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.
+
+\smallskip
+
+Il existe également une commande pour tracer la courbe d'une fonction précédemment définie.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%dans l'environnement GraphiqueTikz
+\DefinirFonction[clés]<nom fct>{formule xint}
+\TracerCourbe[clés]{formule xint}
+\end{tcblisting}
+
+Les \MontreCode{[clés]} pour la définition ou le tracé, optionnelles, disponibles sont :
+
+\smallskip
+
+\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{Trace} : booléen pour tracer également la courbe (\MontreCode{false} par défaut).
+\end{itemize}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphiqueTikz}%
+	[x=0.9cm,y=0.425cm,Xmin=4,Xmax=20,Origx=4,
+	Ymin=40,Ymax=56,Ygrille=2,Ygrilles=1,Origy=40]
+	\TracerAxesGrilles[Elargir=2.5mm,Police=\small]{4,5,...,20}{40,42,...,56}
+	%définition de la fonction + tracé de la courbe
+	\DefinirFonction[Nom=cf,Debut=5,Fin=19]<f>{-2*x+3+24*log(2*x)}
+	\TracerCourbe[Couleur=red,Debut=5,Fin=19]{f(x)}
+	%ou en une seule commande si "suffisant"
+	%\DefinirFonction[Nom=cf,Debut=5,Fin=19,Trace]<f>{-2*x+3+24*log(2*x)}
+\end{GraphiqueTikz}
+\end{tcblisting}
+
+\pagebreak
+
+\subsection{Définir/tracer une courbe d'interpolation (simple)}\label{deftracinterpo}
+
+Il est également possible de définir une courbe via des points supports, donc une courbe d'interpolation simple.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%dans l'environnement GraphiqueTikz
+\DefinirCourbeInterpo[clés]{liste des points support}
+\TracerCourbeInterpo[clés]{liste des points support}
+\end{tcblisting}
+
+Les \MontreCode{[clés]} pour la définition ou le tracé, optionnelles, disponibles sont :
+
+\smallskip
+
+\begin{itemize}
+	\item \MontreCode{Nom} : nom de la courbe d'interpolation (important pour la suite !) ;
+	\item \MontreCode{Couleur} : couleur du tracé (\MontreCode{black} par défaut) ;
+	\item \MontreCode{Tension} : paramétrage de la \textit{tension} du tracé d'interpolation (\MontreCode{0.5} par défaut) ;
+	\item \MontreCode{Trace} : booléen pour tracer également la courbe (\MontreCode{false} par défaut).
+\end{itemize}
+
+L'argument obligatoire permet quant à lui de spécifier la liste des points supports sous la forme \MontreCode{(x1,y1)(x2,y2)...}.
+
+\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}
+	%courbes d'interpolation simples (avec tension diff)
+	\DefinirCourbeInterpo[Nom=interpotest,Couleur=blue,Trace]%
+		{(-6,4)(-2,-2)(3,3.5)}
+	\DefinirCourbeInterpo[Nom=interpotest,Couleur=red,Trace,Tension=1]%
+		{(-6,4)(-2,-2)(3,3.5)}
+\end{GraphiqueTikz}
+\end{tcblisting}
+
+\newpage
+
+\subsection{Définir/tracer une courbe d'interpolation (Hermite)}\label{deftracfctspline}
+
+Il est également possible de définir une courbe via des points supports, donc une courbe d'interpolation avec contrôle de la dérivée.
+
+\smallskip
+
+Certaines exploitations demandant des techniques différentes suivant le type de fonction utilisée, une clé booléenne \MontreCode{Spline} permettra au code d'adapter ses calculs suivant l'objet utilisé.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%dans l'environnement GraphiqueTikz
+\DefinirSpline[clés]{liste des points support}[\macronomspline]
+\TracerSpline[clés]{liste des points support}[\macronomspline]
+\end{tcblisting}
+
+Les \MontreCode{[clés]} pour la définition ou le tracé, optionnelles, disponibles sont :
+
+\smallskip
+
+\begin{itemize}
+	\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{Trace} : booléen pour tracer également la courbe (\MontreCode{false} par défaut).
+\end{itemize}
+
+L'argument obligatoire permet quant à lui de spécifier la liste des points supports sous la forme \MontreCode{x1/y1/f'1§x2/y2/f'2§...} avec :
+
+\begin{itemize}
+	\item \MontreCode{xi/yi} les coordonnées du point ;
+	\item \MontreCode{f'i} la dérivé au point support.
+\end{itemize}
+
+\smallskip
+
+\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}
+	%définition de la liste des points support du spline
+	\def\LISTETEST{-6/4/-2§-5/2/-2§-4/0/-2§-2/-2/0§1/2/2§3/3.5/0.5}
+	%définition et tracé du spline cubique
+	\DefinirSpline[Nom=splinetest,Trace,Couleur=olive]{\LISTETEST}
+\end{GraphiqueTikz}
+\end{tcblisting}
+
+\pagebreak
+
+\subsection{Définir des points sous forme de nœuds}\label{defpts}
+
+La seconde idée est de travailler avec des nœuds \TikZ, qui pourront être utiles pour des tracés de tangentes, des représentations d'intégrales$\ldots$
+
+\smallskip
+
+Certaines commandes (explicités ultérieurement) permettent de déterminer des points particuliers des courbes sous forme de nœuds, donc il semble intéressant de pouvoir en définir directement.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%dans l'environnement GraphiqueTikz
+\DefinirPts[clés]{Nom1/x1/y1,Nom2/x2/y2,...}
+\end{tcblisting}
+
+Les \MontreCode{[clés]}, optionnelles, disponibles sont :
+
+\smallskip
+
+\begin{itemize}
+	\item \MontreCode{Aff} : booléen pour marquer les points (\MontreCode{false} par défaut) ;
+	\item \MontreCode{Couleur} : couleur des points, si \MontreCode{Aff=true} (\MontreCode{black} par défaut).
+\end{itemize}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphiqueTikz}%
+	[x=0.9cm,y=0.425cm,Xmin=4,Xmax=20,Origx=4,
+	Ymin=40,Ymax=56,Ygrille=2,Ygrilles=1,Origy=40]
+	\TracerAxesGrilles[Elargir=2.5mm,Police=\small]{4,5,...,20}{40,42,...,56}
+	%définition de la fonction + tracé de la courbe
+	\DefinirFonction[Nom=cf,Debut=5,Fin=19,Trace,Couleur=red]<f>{-2*x+3+24*log(2*x)}
+	%nœuds manuels
+	\DefinirPts[Aff,Couleur=brown]{A/7/42,B/16/49}
+\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é).
+
+\smallskip
+
+Les calculs étant effectués en flottant en fonction des unités (re)calculées, les valeurs sont donc approchées !
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%dans l'environnement GraphiqueTikz
+\RecupererAbscisse{nœud}[\macrox]
+\RecupererOrdonnee{nœud}[\macroy]
+\RecupererCoordonnees{nœud}[\macrox][\macroy]
+\end{tcblisting}
+
+\pagebreak
+
+\section{Commandes spécifiques d'exploitation des courbes}
+
+\subsection{Placement d'images}\label{images}
+
+Il est possible de la placer des points (images) sur une courbe, avec traits de construction éventuels.
+
+La fonction/courbe utilisée doit avoir été déclarée précédemment pour que cette commande fonctionne.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%dans l'environnement GraphiqueTikz
+\PlacerImages[clés]{focntion ou courbe}{liste d'abscisses}
+\end{tcblisting}
+
+Les \MontreCode{[clés]}, optionnelles, disponibles sont :
+
+\smallskip
+
+\begin{itemize}
+	\item \MontreCode{Traits} : booléen pour afficher les traits de construction (\MontreCode{false} par défaut) ;
+	\item \MontreCode{Couleurs} : couleur des points/traits, sous la forme \MontreCode{Couleurs} ou \MontreCode{CouleurPoint/CouleurTraits} ;
+	\item \MontreCode{Spline} : booléen pour préciser que la courbe utilisée est définie comme un \textsf{spline} (\MontreCode{false} par défaut).
+\end{itemize}
+
+\smallskip
+
+Le premier argument obligatoire, permet de spécifier :
+
+\smallskip
+
+\begin{itemize}
+	\item le nom de la courbe dans la cas \MontreCode{Spline=true} ;
+	\item le nom de la fonction sinon.
+\end{itemize}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphiqueTikz}%
+	[x=0.9cm,y=0.425cm,Xmin=4,Xmax=20,Origx=4,
+	Ymin=40,Ymax=56,Ygrille=2,Ygrilles=1,Origy=40]
+	\TracerAxesGrilles[Elargir=2.5mm,Police=\small]{4,5,...,20}{40,42,...,56}
+	%définition de la fonction + tracé de la courbe
+	\DefinirFonction[Nom=cf,Debut=5,Fin=19,Trace,Couleur=red]<f>{-2*x+3+24*log(2*x)}
+	%images
+	\PlacerImages[Traits,Couleurs=teal/blue]{f}{6,7,8,9,10}
+\end{GraphiqueTikz}
+\end{tcblisting}
+
+\pagebreak
+
+\subsection{Détermination d'antécédents}\label{defanteced}
+
+Il est possible de déterminer graphiquement les antécédents d'un réel donné.
+
+La fonction/courbe utilisée doit avoir été déclarée précédemment pour que cette commande fonctionne.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%dans l'environnement GraphiqueTikz
+\TrouverAntecedents[clés]{courbe}{k}
+\end{tcblisting}
+
+Les \MontreCode{[clés]}, optionnelles, disponibles sont :
+
+\smallskip
+
+\begin{itemize}
+	\item \MontreCode{Nom} : base du nom des \textbf{nœuds} intersection (\MontreCode{S} par défaut, ce qui donnera \textsf{S-1}, \textsf{S-2}, etc) ;
+	\item \MontreCode{Aff} : booleen pour afficher les points (\MontreCode{true} par défaut) ;
+	\item \MontreCode{Couleur} : couleur des points (\MontreCode{black} par défaut) ;
+	\item \MontreCode{AffDroite} : booleen pour afficher la droite horizontale (\MontreCode{false} par défaut).
+\end{itemize}
+
+\smallskip
+
+Le premier argument obligatoire, permet de spécifier le \textbf{nom} de la courbe.
+
+\smallskip
+
+Le second argument obligatoire, permet de spécifier la valeur à atteindre.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphiqueTikz}%
+	[x=0.9cm,y=0.425cm,Xmin=4,Xmax=20,Origx=4,
+	Ymin=40,Ymax=56,Ygrille=2,Ygrilles=1,Origy=40]
+	\TracerAxesGrilles[Elargir=2.5mm,Police=\small]{4,5,...,20}{40,42,...,56}
+	%définition de la fonction + tracé de la courbe
+	\DefinirFonction[Nom=cf,Debut=5,Fin=19,Trace,Couleur=red]<f>{-2*x+3+24*log(2*x)}
+	%antécédents
+	\TrouverAntecedents[Couleur=teal,AffDroite,Aff]{cf}{53}
+	%les deux antécédents sont aux nœuds (S-1) et (S-2)
+\end{GraphiqueTikz}
+\end{tcblisting}
+
+Les \MontreCode{[clés]}, optionnelles, disponibles sont :
+
+\smallskip
+
+\begin{itemize}
+	\item \MontreCode{Nom} : base du nom des \textbf{nœuds} intersection (\MontreCode{S} par défaut, ce qui donnera \textsf{S-1}, \textsf{S-2}, etc) ;
+	\item \MontreCode{Aff} : booleen pour afficher les points (\MontreCode{true} par défaut) ;
+	\item \MontreCode{Couleur} : couleur des points (\MontreCode{black} par défaut) ;
+	\item \MontreCode{AffDroite} : booleen pour afficher la droite horizontale (\MontreCode{false} par défaut).
+\end{itemize}
+
+\pagebreak
+
+\subsection{Construction d'antécédents}\label{tracanteced}
+
+Il est possible de construire graphiquement les antécédents d'un réel donné.
+
+La fonction/courbe utilisée doit avoir été déclarée précédemment pour que cette commande fonctionne.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%dans l'environnement GraphiqueTikz
+\PlacerAntecedents[clés]{courbe}{k}
+\end{tcblisting}
+
+Les \MontreCode{[clés]}, optionnelles, disponibles sont :
+
+\smallskip
+
+\begin{itemize}
+	\item \MontreCode{Couleurs} : couleur des points/traits, sous la forme \MontreCode{Couleurs} ou \MontreCode{CouleurPoint/CouleurTraits} ;
+	\item \MontreCode{Nom} : nom \textit{éventuel} pour les points d'intersection liés aux antécédents (\MontreCode{vide} par défaut) ;
+	\item \MontreCode{Traits} : booleen pour afficher les traits de construction (\MontreCode{false} par défaut).
+\end{itemize}
+
+\smallskip
+
+Le premier argument obligatoire, permet de spécifier le \textbf{nom} de la courbe.
+
+\smallskip
+
+Le second argument obligatoire, permet de spécifier la valeur à atteindre.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphiqueTikz}%
+	[x=0.9cm,y=0.425cm,Xmin=4,Xmax=20,Origx=4,
+	Ymin=40,Ymax=56,Ygrille=2,Ygrilles=1,Origy=40]
+	\TracerAxesGrilles[Elargir=2.5mm,Police=\small]{4,5,...,20}{40,42,...,56}
+	%définition de la fonction + tracé de la courbe
+	\DefinirFonction[Nom=cf,Debut=5,Fin=19,Trace,Couleur=red]<f>{-2*x+3+24*log(2*x)}
+	%antécédents
+	\PlacerAntecedents[Couleurs=teal/cyan,Traits,Nom=PO]{cf}{53}
+	\RecupererAbscisse{(PO-1)}[\premsol]
+	\RecupererAbscisse{(PO-2)}[\deuxsol]
+\end{GraphiqueTikz}
+
+Graphiquement, les antécédents de 53 sont (environ) :
+
+\begin{itemize}
+	\item \num{\premsol}
+	\item \num{\deuxsol}
+\end{itemize}
+\end{tcblisting}
+
+\pagebreak
+
+\subsection{Intersections de deux courbes}\label{intersect}
+
+Il est également possible de déterminer (sous forme de nœuds) les éventuels points d'intersection de deux courbes préalablement définies.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%dans l'environnement GraphiqueTikz
+\TrouverIntersections[clés]{courbe1}{courbe2}
+\end{tcblisting}
+
+Les \MontreCode{[clés]}, optionnelles, disponibles sont :
+
+\smallskip
+
+\begin{itemize}
+	\item \MontreCode{Nom} : base du nom des \textbf{nœuds} intersection (\MontreCode{S} par défaut, ce qui donnera \textsf{S-1}, \textsf{S-2}, etc) ;
+	\item \MontreCode{Aff} : booléen pour afficher les points (\MontreCode{true} par défaut) ;
+	\item \MontreCode{Couleur} : couleur des points (\MontreCode{black} par défaut).
+\end{itemize}
+
+\smallskip
+
+Le premier argument obligatoire, permet de spécifier le \textbf{nom} de la première courbe.
+
+\smallskip
+
+Le premier argument obligatoire, permet de spécifier le \textbf{nom} de la seconde courbe.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphiqueTikz}%
+	[x=0.9cm,y=0.425cm,Xmin=4,Xmax=20,Origx=4,
+	Ymin=40,Ymax=56,Ygrille=2,Ygrilles=1,Origy=40]
+	\TracerAxesGrilles[Elargir=2.5mm,Police=\small]{4,5,...,20}{40,42,...,56}
+	\DefinirFonction[Nom=cf,Debut=5,Fin=19,Trace,Couleur=red]<f>{-2*x+3+24*log(2*x)}
+	\DefinirFonction[Nom=cg,Debut=5,Fin=19,Trace,Couleur=blue]<f>{0.25*(x-12)^2+46}
+	%intersections, nommées (TT-1) et (TT-2)
+	\TrouverIntersections[Nom=TT,Couleur=darkgray,Aff,Traits]{cf}{cg}
+	%récupération des points d'intersection
+	\RecupererCoordonnees{(TT-1)}[\alphaA][\betaA]
+	\RecupererCoordonnees{(TT-2)}[\alphaB][\betaB]
+\end{GraphiqueTikz}\\
+Les solutions de $f(x)=g(x)$ sont $\alpha \approx \num{\alphaA}$ et
+$\beta \approx \num{\alphaB}$.\\
+Les points d'intersection des courbes de $f$ et de $g$ sont donc
+$(\ArrondirNum[2]{\alphaA};\ArrondirNum[2]{\betaA})$ et
+$(\ArrondirNum[2]{\alphaB};\ArrondirNum[2]{\betaB})$.
+\end{tcblisting}
+
+\pagebreak
+
+\subsection{Intégrales}\label{integr}
+
+On peut également travailler avec des intégrales.
+
+Dans ce cas il est préférable de mettre en évidence le domaine \textbf{avant} les tracés, pour éviter la surimpression par rapport aux courbes/points.
+
+\smallskip
+
+Il est possible de :
+
+\begin{itemize}
+	\item représenter une intégrale \textbf{sous} une courbe définie ;
+	\item représenter une intégrale \textbf{entre} deux courbes (sauf avec des splines\ldots) ;
+	\item les bornes d'intégration peuvent être des abscisses et/ou des nœuds.
+\end{itemize}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%dans l'environnement GraphiqueTikz
+\TracerIntegrale[clés]<options spécifiques>{fonction ou spline}[courbe inf]{A}{B}
+\end{tcblisting}
+
+Les \MontreCode{[clés]} pour la définition ou le tracé, optionnelles, disponibles sont :
+
+\begin{itemize}
+	\item \MontreCode{Couleurs} =: couleurs du remplissage, sous la forme \MontreCode{Couleur} ou \MontreCode{CouleurBord/CouleurFond} (\MontreCode{gray} par défaut) ;
+	\item \MontreCode{Style} : type de remplissage, parmi \MontreCode{remplissage}/\MontreCode{hachures} (\MontreCode{remplissage} par défaut) ;
+	\item \MontreCode{Opacite} : opacité (\MontreCode{0.5} par défaut) du remplissage ;
+	\item \MontreCode{Hachures} : style (\MontreCode{north west lines} par défaut) du remplissage hachures ;
+	\item \MontreCode{Type} : type d'intégrale parmi \MontreCode{dessous}/\MontreCode{entre} (\MontreCode{dessous} par défaut) ;
+	\item \MontreCode{Pas} : pas (calculé par défaut sinon) pour le tracé ;
+	\item \MontreCode{Jonction} : jonction des segments (\MontreCode{bevel} par défaut) ;
+	\item \MontreCode{Bornes} : type des bornes parmi :
+	\begin{itemize}
+		\item \MontreCode{abs} pour les bornes données par les abscisses ;
+		\item \MontreCode{noeuds} pour les bornes données par les nœuds ;
+		\item \MontreCode{abs/noeud} pour les bornes données par abscisse et nœud ;
+		\item \MontreCode{noeud/abs} pour les bornes données par nœud et abscisse ;
+	\end{itemize}
+	\item \MontreCode{Bord} : booléen (\MontreCode{true} par défaut) pour afficher les traits latéraux,%
+	\item \MontreCode{Spline} : booléen (\MontreCode{false} par défaut) pour préciser qu'un spline est utilisé ;
+	\item \MontreCode{NomSpline} : nom (important !) du spline généré précédemment \MontreCode{\textbackslash monspline}.
+\end{itemize}
+
+\smallskip
+
+Le premier argument obligatoire est la fonction ou la courbe du spline.
+
+\smallskip
+
+Les deux derniers arguments obligatoires sont les bornes de l'intégrale, données sous une forme en adéquation avec la clé \MontreCode{Bornes}.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphiqueTikz}%
+	[x=0.6cm,y=0.06cm,
+	Xmin=0,Xmax=21,Xgrille=1,Xgrilles=0.5,
+	Ymin=0,Ymax=155,Ygrille=10,Ygrilles=5]
+	\TracerAxesGrilles%
+		[Grads=false,Elargir=2.5mm]{}{}
+	\DefinirFonction[Nom=cf,Debut=1,Fin=20,Couleur=red]<f>{80*x*exp(-0.2*x)}
+	\TracerIntegrale
+		[Bornes=abs,Couleurs=blue/cyan!50]%
+		{f(x)}{3}{12}
+	\TracerCourbe[Couleur=red,Debut=1,Fin=20]{f(x)}
+	\TracerAxesGrilles%
+		[Grille=false,Elargir=2.5mm,Police=\small]{0,1,...,20}{0,10,...,150}
+\end{GraphiqueTikz}
+\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[Grads=false,Elargir=2.5mm]{}{}
+	\def\LISTETEST{-6/2/0§-1/-2/0§2/1/0§3.5/0/-1}
+	\DefinirSpline[Nom=splinetest]{\LISTETEST}
+	\TracerIntegrale[Spline,Style=hachures,Couleurs=purple]{splinetest}{-5.75}{-4.75}
+	\TracerIntegrale[Spline,Couleurs=blue]{splinetest}{-2}{-1}
+	\TracerIntegrale[Spline,Couleurs=orange]{splinetest}{1}{3}
+	\TracerSpline[Couleur=olive]{\LISTETEST}
+	\TracerAxesGrilles[Grille=false,Elargir=2.5mm]
+		{-7,-6,...,4}%
+		{-3,-2.5,...,3}
+\end{GraphiqueTikz}
+\end{tcblisting}
+
+\pagebreak
+
+\subsection{Tangentes}\label{tgte}
+
+L'idée de cette commande est de tracer la tangente à une courbe précédemment définie, en spécifiant :
+
+\begin{itemize}
+	\item le point (abscisse ou nœud) en lequel on souhaite travailler ;
+	\item éventuellement le direction (dans le cas d'une discontinuité ou d'une borne) ;
+	\item éventuellement le pas ($h$) du calcul ;
+	\item les \textit{écartements latéraux} pour tracer la tangente.
+\end{itemize}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%dans l'environnement GraphiqueTikz
+\TracerTangente[clés]{fonction ou courbe}{point}<options traits>
+\end{tcblisting}
+
+Les \MontreCode{[clés]} pour la définition ou le tracé, optionnelles, disponibles sont :
+
+\begin{itemize}
+	\item \MontreCode{Couleurs} =: couleurs des tracés, sous la forme \MontreCode{Couleur} ou \MontreCode{CouleurLigne/CouleurPoint} (\MontreCode{black} par défaut) ;
+	\item \MontreCode{DecG} =: écartement horizontal gauche pour débuter le tracé (\MontreCode{1} par défaut) ;
+	\item \MontreCode{DecD} =: écartement horizontal gauche pour débuter le tracé (\MontreCode{1} par défaut) ;
+	\item \MontreCode{AffPoint} : booléen pour afficher le point support (\MontreCode{false} par défaut) ;
+	\item \MontreCode{Spline} : booléen pour préciser qu'un spline est utilisé (\MontreCode{false} par défaut) ;
+	\item \MontreCode{h} : pas $h$ utilisé pour les calculs (\MontreCode{0.01} par défaut) ;
+	\item \MontreCode{Sens} : permet de sprécifier le \textit{sens} de la tangente, parmi \MontreCode{gd}/\MontreCode{g}/\MontreCode{d} (\MontreCode{gd} par défaut) ;
+	\item \MontreCode{Noeud} : booléen pour préciser qu'un nœud est utilisé (\MontreCode{false} par défaut).
+\end{itemize}
+
+\smallskip
+
+Le premier argument obligatoire est la fonction ou la courbe du spline (le cas échéant).
+
+\smallskip
+
+Le dernier argument obligatoire est le point de travail (version abscisse ou nœud suivant la clé \MontreCode{Noeud}).
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphiqueTikz}%
+	[x=0.9cm,y=0.425cm,Xmin=4,Xmax=20,Origx=4,
+	Ymin=40,Ymax=56,Ygrille=2,Ygrilles=1,Origy=40]
+	\TracerAxesGrilles[Elargir=2.5mm,Police=\small]{4,5,...,20}{40,42,...,56}
+	\DefinirFonction[Nom=cf,Debut=5,Fin=19,Couleur=red,Trace]<f>{-2*x+3+24*log(2*x)}
+	\TrouverAntecedents[Couleur=teal,Nom=JKL,Aff=false]{cf}{53}
+	%tangente
+	\TracerTangente%
+		[Couleurs=cyan/gray,DecG=2.5,DecD=2.5,Noeud,AffPoint]{f}{(JKL-1)}
+\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=-3,Ymax=5]
+	\TracerAxesGrilles[Elargir=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+	\def\LISTETEST{-6/4/-0.5§-5/2/-2§-4/0/-2§-2/-2/0§1/2/2§3/3.5/0.5}
+	\DefinirSpline[Nom=splinetest,Trace,Couleur=olive]{\LISTETEST}
+	\TracerTangente[Couleurs=red,Spline,AffPoint]{splinetest}{1}
+	\TracerTangente%
+		[Couleurs=blue,Spline,DecG=1.5,DecD=1.5,AffPoint]{splinetest}{-3}%
+		<pflflechegd>
+	\TracerTangente[Sens=g,Couleurs=orange,Spline,DecG=1.5,AffPoint]{splinetest}{3}
+	\TracerTangente[Sens=d,Couleurs=violet,Spline,DecD=1.5,AffPoint]{splinetest}{-6}
+\end{GraphiqueTikz}
+\end{tcblisting}
+
+\pagebreak
+
+\section{Commandes spécifiques des statistiques à deux variables}
+
+\subsection{Le nuage de points}\label{nuage}
+
+En marge des commandes liées aux fonctions, il est également possible de représenter des séries statistiques doubles.
+
+\smallskip
+
+Le paragraphe suivant montre que l'ajout d'une clé permet de rajouter la droite d'ajustement linéaire.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%dans l'environnement GraphiqueTikz
+\TracerNuage[clés]{ListeX}{ListeY}
+\end{tcblisting}
+
+La \MontreCode{[clé]} optionnelle est :
+
+\smallskip
+
+\begin{itemize}
+	\item \MontreCode{CouleurNuage} : couleur des points du nuage (\MontreCode{black} par défaut).
+\end{itemize}
+
+\smallskip
+
+Les arguments, obligatoires, permettent de spécifier :
+
+\smallskip
+
+\begin{itemize}
+	\item la liste des abscisses ;
+	\item la liste des ordonnées.
+\end{itemize}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphiqueTikz}%
+	[x=0.075cm,y=0.03cm,Xmin=0,Xmax=160,Xgrille=20,Xgrilles=10,
+	Origy=250,Ymin=250,Ymax=400,Ygrille=25,Ygrilles=5]
+	%préparation de la fenêtre
+	\TracerAxesGrilles[Elargir=2.5mm,Police=\small]{0,10,...,160}{250,275,...,400}
+	%nuage de points
+	\TracerNuage[CouleurNuage=red]{0,50,100,140}{275,290,315,350}
+\end{GraphiqueTikz}
+\end{tcblisting}
+
+\subsection{La droite de régression}\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}.
+
+\smallskip
+
+Dans ce cas, de nouvelles clés sont disponibles :
+
+\smallskip
+
+\begin{itemize}
+	\item \MontreCode{CouleurDroite} : couleur de la droite (\MontreCode{black} par défaut) ;
+	\item \MontreCode{Arrondis} : précision des coefficients (\MontreCode{vide} par défaut) ;
+	\item \MontreCode{Debut} : abscisse initiale du tracé (\MontreCode{\textbackslash pflxmin} par défaut) ;
+	\item \MontreCode{Fin} : abscisse terminale du tracé (\MontreCode{\textbackslash pflxmax} par défaut) ;
+	\item \MontreCode{Nom} : nom du tracé, pour exploitation ultérieure (\MontreCode{reglin} par défaut).
+\end{itemize}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphiqueTikz}%
+	[x=0.075cm,y=0.03cm,Xmin=0,Xmax=160,Xgrille=20,Xgrilles=10,
+	Origy=250,Ymin=250,Ymax=400,Ygrille=25,Ygrilles=5]
+	\TracerAxesGrilles[Elargir=2.5mm,Police=\small]{0,10,...,160}{250,275,...,400}
+	%nuage et droite
+	\TracerNuage%
+		[CouleurDroite=red,CouleurDroite=brown,TracerDroite]%
+		{0,50,100,140}{275,290,315,350}
+	%image
+	\PlacerImages[Couleurs=cyan/magenta,Traits]{d}{120}
+	%antécédents
+	\PlacerAntecedents[Couleurs=blue/green!50!black,Traits]{reglin}{300}
+\end{GraphiqueTikz}
+\end{tcblisting}
+
+\pagebreak
+
+\section{Codes source des exemples de la page d'accueil}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphiqueTikz}[x=0.85cm,y=0.35cm,Xmin=0,Xmax=10,Ymin=0,Ymax=16]
+	%préparation de la fenêtre
+	\TracerAxesGrilles[Elargir=2.5mm,Police=\small]{0,1,...,10}{0,2,...,16}
+	%déf des fonctions avec nom courbe + nom fonction + expression (tracés à la fin !)
+	\DefinirFonction[Nom=cf]<f>{3*x-6}
+	\DefinirFonction[Nom=cg]<g>{-(x-6)^2+12}
+	%antécédents et intersection
+	\TrouverIntersections[Aff=false,Nom=K]{cf}{cg}
+	\TrouverAntecedents[AffDroite,Couleur=orange,Nom=I]{cg}{8}
+	\TrouverAntecedents[Aff=false,Nom=J]{cg}{0}
+	%intégrale sous une courbe, avec intersection
+	\TracerIntegrale%
+		[Couleurs=blue/purple,Bornes=noeuds,Style=hachures,Hachures=bricks]%
+		{g(x)}%
+		{(I-2)}{(J-2)}
+	%intégrale entre les deux courbes
+	\TracerIntegrale[Bornes=noeuds,Type=entre]%
+		{f(x)}[g(x)]%
+		{(K-1)}{(K-2)}
+	%tracé des courbes et des points
+	\TracerCourbe[Couleur=red]{f(x)}
+	\TracerCourbe[Couleur=teal]{g(x)}
+	\PlacerPoints<\small>{(K-1)/below right/L,(K-2)/above left/M}%
+	\PlacerPoints[violet]<\small>{(I-1)/above left/D,(I-2)/above right/E}%
+	%tangente
+	\TracerTangente[Couleurs=pink!75!black/yellow,kl=2,kr=2,AffPoint]{g}{5}
+	%images
+	\PlacerImages[Couleurs=cyan]{g}{7,7.25,7.5}
+	%surimpression des axes
+	\TracerAxesGrilles[Grads=false,Grille=false,Elargir=2.5mm]{0,1,...,10}{0,2,...,16}
+\end{GraphiqueTikz}
+\end{tcblisting}
+
+\pagebreak
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphiqueTikz}%
+	[x=3.5cm,y=4cm,
+	Xmin=0,Xmax=3.5,Xgrille=pi/12,Xgrilles=pi/24,
+	Ymin=-1.05,Ymax=1.05,Ygrille=0.2,Ygrilles=0.05]
+	%préparation de la fenêtre
+	\TracerAxesGrilles[Grads=false,Elargir=2.5mm,Format=ntrig/nsqrt]%
+		{pi/6,pi/4,pi/3,pi/2,2*pi/3,3*pi/4,5*pi/6,pi}
+		{0,sqrt(2)/2,1/2,sqrt(3)/2,1,-1,-sqrt(3)/2,-1/2,-sqrt(2)/2}
+	%rajouter des valeurs
+	\RajouterValeursAxeX{0.25,1.4,3.3}{\num{0.25},\num{1.4},\num{3.3}}
+	%fonction trigo (déf + tracé)
+	\DefinirFonction[Nom=ccos,Debut=0,Fin=pi]<fcos>{cos(x)}
+	\DefinirFonction[Nom=csin,Debut=0,Fin=pi]<fsin>{sin(x)}
+	%intégrale
+	\TrouverIntersections[Aff=false,Nom=JKL]{ccos}{csin}
+	\TracerIntegrale%
+		[Bornes=noeud/abs,Type=entre,Couleurs=cyan/cyan!50]%
+		{fsin(x)}[fcos(x)]%
+		{(JKL-1)}{pi}
+	%tracé des courbes
+	\TracerCourbe[Couleur=red,Debut=0,Fin=pi]{fcos(x)}
+	\TracerCourbe[Couleur=olive,Debut=0,Fin=pi]{fsin(x)}
+	%antécédent(s)
+	\PlacerAntecedents[Couleurs=blue/teal!50!black,Traits]{ccos}{-0.25}
+	\PlacerAntecedents[Couleurs=red/magenta!50!black,Traits]{csin}{0.5}
+	\PlacerAntecedents[Couleurs=orange/orange!50!black,Traits]{csin}{sqrt(2)/2}
+	\PlacerAntecedents[Couleurs=green!50!black/green,Traits]{csin}{sqrt(3)/2}
+	%surimpression axes
+	\TracerAxesGrilles[Grille=false,Elargir=2.5mm,Format=ntrig/nsqrt]%
+		{pi/6,pi/4,pi/3,pi/2,2*pi/3,3*pi/4,5*pi/6,pi}
+		{0,sqrt(2)/2,1/2,sqrt(3)/2,1,-1,-sqrt(3)/2,-1/2,-sqrt(2)/2}
+\end{GraphiqueTikz}
+\end{tcblisting}
+
+\newpage
+
+\section{Commandes auxiliaires}
+
+\subsection{Intro}
+
+En marge des commandes purement \textit{graphiques}, quelques commandes auxiliaires sont disponibles :
+
+\begin{itemize}
+	\item une pour formater un nombre avec une précision donnée ;
+	\item une pour travailler sur des nombres aléatoires, avec contraintes.
+\end{itemize}
+
+\subsection{Arrondi formaté}\label{numarrond}
+
+La commande \MontreCode{\textbackslash ArrondirNum} permet de formater, grâce au package \MontreCode{siunitx}, un nombre (ou un calcul), avec une précision donnée. Cela peut être \textit{utile} pour formater des résultats obtenus grâce aux commandes de récupération des coordonnées, par exemple.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+\ArrondirNum[précision]{calcul xint}
+\end{tcblisting}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\ArrondirNum{1/3}\\
+\ArrondirNum{16.1}\\
+\ArrondirNum[3]{log(10)}\\
+\end{tcblisting}
+
+\subsection{Nombre aléatoire sous contraintes}\label{nbalea}
+
+L'idée de cette deuxième commande est de pouvoir déterminer un nombre aléatoire :
+
+\begin{itemize}
+	\item entier ou décimal ;
+	\item sous contraintes (entre deux valeurs fixées).
+\end{itemize}
+
+Cela peut permettre, par exemple, de travailler sur des courbes avec points \textit{aléatoires}, mais respectant certaines contraintes.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+\ChoisirNbAlea(*)[precision (déf 0)]{borne inf}{borne sup}[\macro]
+\end{tcblisting}
+
+La version étoilée prend les contraintes sous forme stricte ($\text{borne inf} < \text{macro} < \text{borne sup}$) alors que la version normale prend les contraintes sous forme large ($\text{borne inf} \leq \text{macro} \leq \text{borne sup}$).
+
+\smallskip
+
+À noter que les \textit{bornes} peuvent être des \textit{macros} existantes !
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+%un nombre (2 chiffres après la virgule) entre 0.75 et 0.95
+%un nombre (2 chiffres après la virgule) entre 0.05 et 0.25
+%un nombre (2 chiffres après la virgule) entre 0.55 et \YrandMax
+%un nombre (2 chiffres après la virgule) entre \YrandMin et 0.45
+\ChoisirNbAlea[2]{0.75}{0.95}[\YrandMax]%
+\ChoisirNbAlea[2]{0.05}{0.25}[\YrandMin]%
+\ChoisirNbAlea*[2]{0.55}{\YrandMax}[\YrandA]%
+\ChoisirNbAlea*[2]{\YrandMin}{0.45}[\YrandB]%
+%vérification
+\num{\YrandMax} \& \num{\YrandMin} \& \num{\YrandA} \& \num{\YrandB}
+\end{tcblisting}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+%un nombre (2 chiffres après la virgule) entre 0.75 et 0.95
+%un nombre (2 chiffres après la virgule) entre 0.05 et 0.25
+%un nombre (2 chiffres après la virgule) entre 0.55 et \YrandMax
+%un nombre (2 chiffres après la virgule) entre \YrandMin et 0.45
+\ChoisirNbAlea[2]{0.75}{0.95}[\YrandMax]%
+\ChoisirNbAlea[2]{0.05}{0.25}[\YrandMin]%
+\ChoisirNbAlea*[2]{0.55}{\YrandMax}[\YrandA]%
+\ChoisirNbAlea*[2]{\YrandMin}{0.45}[\YrandB]%
+%vérification
+\num{\YrandMax} \& \num{\YrandMin} \& \num{\YrandA} \& \num{\YrandB}
+\end{tcblisting}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+%la courbe est prévue pour qu'il y ait 3 antécédents
+\ChoisirNbAlea[2]{0.75}{0.95}[\YrandMax]%
+\ChoisirNbAlea[2]{0.05}{0.25}[\YrandMin]%
+\ChoisirNbAlea*[2]{0.55}{\YrandMax}[\YrandA]%
+\ChoisirNbAlea*[2]{\YrandMin}{0.45}[\YrandB]%
+
+\begin{GraphiqueTikz}
+	[x=0.075cm,y=7.5cm,Xmin=0,Xmax=150,Xgrille=10,Xgrilles=5,
+	Ymin=0,Ymax=1,Ygrille=0.1,Ygrilles=0.05]
+	\TracerAxesGrilles[Dernier,Elargir=2.5mm]{auto}{auto}
+	\DefinirCourbeInterpo[Couleur=red,Trace,Nom=fonctiontest,Tension=0.75]
+	{(0,\YrandA)(40,\YrandMin)(90,\YrandMax)(140,\YrandB)}
+	\TrouverAntecedents[Aff=false,Nom=ANTECED]{fonctiontest}{0.5}
+	\PlacerAntecedents[Couleurs=blue/teal,Traits]{fonctiontest}{0.5}
+	\RecupererAbscisse{(ANTECED-1)}[\Aalpha]
+	\RecupererAbscisse{(ANTECED-2)}[\Bbeta]
+	\RecupererAbscisse{(ANTECED-3)}[\Cgamma]
+\end{GraphiqueTikz}
+
+Les solutions de $f(x)=\num{0.5}$ sont, par lecture graphique :
+$\begin{cases}
+	\alpha \approx \ArrondirNum[0]{\Aalpha} \\
+	\beta \approx \ArrondirNum[0]{\Bbeta} \\
+	\gamma \approx \ArrondirNum[0]{\Cgamma}
+\end{cases}$.
+\end{tcblisting}
+
+\newpage
+
+\section{Liste des commandes}
+
+Les commandes disponibles sont :
+
+\NewDocumentCommand\lstcmd{ m m m}{%
+	\item[\texttt{#1}] : \mintinline{latex}|#2|\hfill{}page \pageref{#3}
+}
+
+\begin{description}
+	\lstcmd{environnement~~}{\begin{GraphiqueTikz}...\end{GraphiqueTikz}}{creaenvt}
+	\lstcmd{axes et grilles}{\TracerAxesGrille}{creaaxesgr}
+	\lstcmd{aj val axes X~~}{\RajouterValeursAxeX}{ajoutvals}
+	\lstcmd{aj val axes Y~~}{\RajouterValeursAxeY}{ajoutvals}
+	\lstcmd{def fonction~~~}{\DefinirFonction}{deftracfct}
+	\lstcmd{tracé courbe~~~}{\TracerCourbe}{deftracfct}
+	\lstcmd{def interpo~~~~}{\DefinirCourbeInterpo}{deftracinterpo}
+	\lstcmd{tracé interpo~~}{\TracerCourbeInterpo}{deftracinterpo}
+	\lstcmd{def spline~~~~~}{\DefinirSpline}{deftracfctspline}
+	\lstcmd{tracé spline~~~}{\TracerSpline}{deftracfctspline}
+	\lstcmd{def points~~~~~}{\DefinirPts}{defpts}
+	\lstcmd{récup absc~~~~~}{\RecupererAbscisse}{recupcoordo}
+	\lstcmd{récup ordo~~~~~}{\RecupererOrdonnee}{recupcoordo}
+	\lstcmd{récup coordos~~}{\RecupererCoordonnees}{recupcoordo}
+	\lstcmd{images~~~~~~~~~}{\PlacerImages}{images}
+	\lstcmd{antécédents~~~~}{\TrouverAntecedents}{defanteced}
+	\lstcmd{antécédents~~~~}{\PlacerAntecedents}{tracanteced}
+	\lstcmd{intersection~~~}{\TrouverIntersections}{intersect}
+	\lstcmd{intégrale~~~~~~}{\TracerIntegrale}{integr}
+	\lstcmd{tangente~~~~~~~}{\TracerTangente}{tgte}
+	\lstcmd{stats 2 var~~~~}{\TracerNuage}{nuage}
+	\lstcmd{arrondi~~~~~~~~}{\ArrondirNum}{numarrond}
+	\lstcmd{nb aléat~~~~~~~}{\ChoisirNbAlea}{nbalea}
+\end{description}
+
+\pagebreak
+
+\section{Historique}
+
+\begin{quote}
+\begin{verbatim}
+0.1.0 : Version initiale
+\end{verbatim}
+\end{quote}
+
+\end{document}
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/doc/latex/tkz-grapheur/tkz-grapheur-doc-fr.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/tkz-grapheur/tkz-grapheur.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-grapheur/tkz-grapheur.sty	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/tkz-grapheur/tkz-grapheur.sty	2024-05-12 19:13:12 UTC (rev 71241)
@@ -0,0 +1,1170 @@
+% Author     : C. Pierquet
+% 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/11 0.1.0 Des outils en TikZ pour travailler comme avec un grapheur]
+
+%====HISTORIQUE
+% v 0.1.0	Version initiale [fr]
+
+%====OPTION
+\newif\if at loadsiunitx \@loadsiunitxtrue
+\DeclareOption{nonsiunitx}{\@loadsiunitxfalse}%
+\newif\if at loadtikzbabel \@loadtikzbabeltrue
+\DeclareOption{nontikzbabel}{\@loadtikzbabelfalse}%
+\DeclareOption*{}
+\ProcessOptions\relax
+
+%====BASE
+\RequirePackage{tikz}
+\RequirePackage{ifthen}
+\usetikzlibrary{calc,intersections,patterns,patterns.meta}
+\RequirePackage{simplekv}
+\RequirePackage{xintexpr}
+\RequirePackage{xstring}
+\RequirePackage{listofitems}
+
+%====SIUNITX
+\if at loadsiunitx
+	\RequirePackage{siunitx}
+	\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}
+\fi
+
+%====TIKZ.BABEL
+\if at loadtikzbabel
+	\usetikzlibrary{babel}
+\fi
+
+%====COMMANDE POUR NB DECIMAL ALEA ENTRE BORNES 
+\NewDocumentCommand\ChoisirNbAlea{ s O{0} m m O{\monbnalea} }{%
+	\def\tmpborneinf{\xinteval{floor(#3)}}%inf=\tmpborneinf\par%
+	\def\tmpbornesup{\xinteval{ceil(#4)}}%sup=\tmpbornesup\par%
+	\xintifboolexpr{#2 == 0}%
+		{%
+			\xdef#5{\fpeval{randint(\tmpborneinf,\tmpbornesup)}}%
+		}%
+		{%
+			\def\tmptest{0}%
+			\whiledo{\tmptest=0}{%
+				\xintifboolexpr{(\tmpbornesup-\tmpborneinf) == 1}%
+					{%
+						\xdef\tmpresalea{\fpeval{\tmpborneinf+round(rand(),#2)}}%
+					}%
+					{%
+						\xdef\tmpresalea{\fpeval{round(randint(\tmpborneinf,\tmpbornesup)+rand(),#2)}}%
+					}%
+				%essai=\tmpresalea\par
+				\IfBooleanTF{#1}%
+					{%
+						\xintifboolexpr{\tmpresalea < #4 'and' \tmpresalea > #3 }{\def\tmptest{1}}{\def\tmptest{0}}%
+					}%
+					{%
+						\xintifboolexpr{\tmpresalea <= #4 'and' \tmpresalea >= #3 }{\def\tmptest{1}}{\def\tmptest{0}}%
+					}%
+			}%
+			\xdef#5{\tmpresalea}%
+			%res=%
+		}%
+}
+
+%====PATCH NUM
+\@ifundefined{ArrondirNum}%
+	{%
+		\NewDocumentCommand\ArrondirNum{ O{2} m}{\num{\xintfloateval{round(#2,#1)}}\relax}%
+	}%
+	{%
+		\RenewDocumentCommand\ArrondirNum{ O{2} m}{\num{\xintfloateval{round(#2,#1)}}\relax}%
+	}%
+
+%====STYLES DE BASE
+\tikzset{pflpointc/.style={radius=1.75pt}}
+\tikzset{pflpointnuage/.style={radius=1.75pt}}
+\tikzset{pflcadre/.style={line width=0.8pt,gray}}
+\tikzset{pflcourbe/.style={line width=1.05pt}}
+\tikzset{pfltrait/.style={line width=0.8pt}}
+\tikzset{pflflecheg/.style={<-,>=latex}}
+\tikzset{pflfleched/.style={->,>=latex}}
+\tikzset{pflflechegd/.style={<->,>=latex}}
+\tikzset{pfltraitantec/.style={line width=0.9pt,densely dashed}}
+\tikzset{pfltraitimg/.style={line width=0.9pt,densely dashed,->,>=latex}}
+\tikzset{pflgrillep/.style={thin,lightgray}}
+\tikzset{pflgrilles/.style={very thin,lightgray}}
+\tikzset{pflaxes/.style={line width=0.8pt,->,>=latex}}
+\tikzset{
+	Xmin/.store in=\pflxmin,Xmin/.default=-3,Xmin=-3,
+	Xmax/.store in=\pflxmax,Xmax/.default=3,Xmax=3,
+	Ymin/.store in=\pflymin,Ymin/.default=-3,Ymin=-3,
+	Ymax/.store in=\pflymax,Ymax/.default=3,Ymax=3,
+	Origx/.store in=\pflOx,Origx/.default=0,Origx=0,
+	Origy/.store in=\pflOy,Origy/.default=0,Origy=0,
+	Xgrille/.store in=\pflgrillex,Xgrille/.default=1,Xgrille=1,
+	Xgrilles/.store in=\pflgrillexs,Xgrilles/.default=0.5,Xgrilles=0.5,
+	Ygrille/.store in=\pflgrilley,Ygrille/.default=1,Ygrille=1,
+	Ygrilles/.store in=\pflgrilleys,Ygrilles/.default=0.5,Ygrilles=0.5
+}
+
+%====CONSTANTE PI pour xint, à voir si incompatibilité...
+\xintdefvar pi:=3.141592653589793238462643;
+
+%===COMMANDE INTERNE POUR FORMATER EN FRACTIONS
+\NewDocumentCommand\FormatterFraction{ s O{} m }{%
+	%*=moins sur le numérateur
+	%2=argument.optionnel[d/t/dec=...]
+	%3=argument mandataire {calcul ou fraction}
+	\def\calculargument{\xintPRaw{\xintIrr{\xinteval{#3}}}}%on calcule et on transforme en A/B
+	\IfSubStr{\calculargument}{/}%on teste si le symbole / apparaît
+	{%si oui := fraction
+		\StrBefore{\calculargument}{/}[\numerateur]%on extrait le numérateur
+		\StrBehind{\calculargument}{/}[\denominateur]%on extrait le dénominateur
+		\ifblank{#2}%
+		{%
+			\IfBooleanTF{#1}%
+			{\ensuremath{\frac{\num{\numerateur}}{\num{\denominateur}}}}%
+			{%
+				\ifthenelse{\numerateur < 0}%
+					{\ensuremath{-\frac{\num{\fpeval{abs(\numerateur)}}}{\num{\denominateur}}}}%
+					{\ensuremath{\frac{\num{\numerateur}}{\num{\denominateur}}}}%
+			}%
+		}%
+		{}%si l'argument optionnel est vide
+		\IfStrEq{#2}{d}%
+		{%
+			\IfBooleanTF{#1}%
+			{\ensuremath{\displaystyle\frac{\num{\numerateur}}{\num{\denominateur}}}}%
+			{%
+				\ifthenelse{\numerateur < 0}%
+					{\ensuremath{-\displaystyle\frac{\num{\fpeval{abs(\numerateur)}}}{\num{\denominateur}}}}%
+					{\ensuremath{\displaystyle\frac{\num{\numerateur}}{\num{\denominateur}}}}%
+			}%
+		}%
+		{}%si l'argument optionnel est vide
+		\IfStrEq{#2}{t}%
+		{%
+			\IfBooleanTF{#1}%
+			{\ensuremath{\tfrac{\num{\numerateur}}{\num{\denominateur}}}}%
+			{%
+				\ifthenelse{\numerateur < 0}%
+					{\ensuremath{-\frac{\num{\fpeval{abs(\numerateur)}}}{\num{\denominateur}}}}%
+					{\ensuremath{\frac{\num{\numerateur}}{\num{\denominateur}}}}%
+			}%
+		}%
+		{}%si l'argument optionnel est vide
+		\IfStrEq{#2}{n}%
+		{%
+			\ensuremath{\nicefrac{\num{\numerateur}}{\num{\denominateur}}}%
+		}%
+		{}%si l'argument optionnel est vide
+	}{%si non := entier
+		\num{\calculargument}%on affiche l'entier, avec le package siunitx
+	}%
+}
+
+%affichage d'un label en radians
+\NewDocumentCommand\FormatterTrigo{ O{t} m }{%étoilée en dfrac
+	\IfStrEq{#2}{0}%cas où l'argument vaut 0
+		{\def\restmp{0}}%
+		{%
+			\StrDel{#2}{*}[\restmpsansmoins]%
+			\StrSubstitute{\restmpsansmoins}{pi}{\pi}[\restmppi]%
+			\IfSubStr{#2}{/}%
+			{%
+				\StrCut{\restmppi}{/}\tmpnum\tmpdenom%
+				\IfSubStr{\tmpnum}{-}%
+				{%
+					\StrDel{\tmpnum}{-}[\restmppinum]%
+					\IfStrEqCase{#1}{%
+						{t}{\def\restmp{-\frac{\restmppinum}{\tmpdenom}}}%
+						{d}{\def\restmp{-\displaystyle\frac{\restmppinum}{\tmpdenom}}}%
+						{n}{\def\restmp{\nicefrac{-\restmppinum}{\tmpdenom}}}%
+					}%
+				}%
+				{%
+					\IfStrEqCase{#1}{%
+						{t}{\def\restmp{\frac{\tmpnum}{\tmpdenom}}}%
+						{d}{\def\restmp{\displaystyle\frac{\tmpnum}{\tmpdenom}}}%
+						{n}{\def\restmp{\nicefrac{\tmpnum}{\tmpdenom}}}%
+					}%
+				}%
+			}%
+			{%
+				\def\restmp{\restmppi}%
+			}%
+		}%
+	\ensuremath{\restmp}%
+}
+
+%====FORMATAGE DES RACINES SIMPLES
+\NewDocumentCommand\FormatterRacine{ O{t} m }{%
+	\IfStrEq{#2}{0}%cas où l'argument vaut 0
+		{\ensuremath{0}}%
+		{%
+			\IfSubStr{#2}{sqrt}%
+				{%
+					\StrDel{#2}{*}[\tmpargbrut]%
+					\StrBetween[1,1]{\tmpargbrut}{sqrt(}{)}[\tmpargnumrac]%
+					\StrBefore{\tmpargbrut}{sqrt}[\tmparavantrac]%
+					\IfStrEqCase{\tmparavantrac}{
+						{}{\xdef\tmparavantrac{}}%
+						{-}{\xdef\tmparavantrac{-}}%
+					}[\xdef\tmparavantrac{\num{\tmparavantrac}}]%
+					\IfSubStr{\tmpargbrut}{/}%
+						{%
+							\StrBehind{\tmpargbrut}{/}[\tmpargdenomrac]%
+							\IfStrEqCase{#1}{%
+								{d}{%
+									\ensuremath{\displaystyle\frac{\tmparavantrac\sqrt{\num{\tmpargnumrac}}}{\num{\tmpargdenomrac}}}%
+								}%
+								{t}{%
+									\ensuremath{\frac{\tmparavantrac\sqrt{\num{\tmpargnumrac}}}{\num{\tmpargdenomrac}}}%
+								}%
+								{n}{%
+									\ensuremath{\nicefrac{\tmparavantrac\sqrt{\num{\tmpargnumrac}}}{\num{\tmpargdenomrac}}}%
+								}%
+							}%
+						}%
+						{%
+							\ensuremath{\tmparavantrac\sqrt{\num{\tmpargnumrac}}}%
+						}%
+				}%
+				{%
+					\FormatterFraction[#1]{#2}%
+				}%
+		}%
+}
+
+%====COMMANDE INTERNE DE CONVERSION
+\ExplSyntaxOn
+	\NewDocumentCommand\ConvertirPtToCm{ m } { \dim_to_decimal_in_unit:nn { #1 } { 1 cm } }
+\ExplSyntaxOff
+
+%====RECUPERER COORDONNEES NOEUD
+\NewDocumentCommand\RecupererAbscisse{ m O{\monabs} }{%
+	\path #1;
+	\pgfgetlastxy{\macrox}{\macroy}%
+	\xdef#2{\xintfloateval{(\ConvertirPtToCm{\macrox})/(\pflxunit)}}%
+}
+\NewDocumentCommand\RecupererOrdonnee{ m O{\monordo} }{%
+	\path #1;
+	\pgfgetlastxy{\macrox}{\macroy}%
+	\xdef#2{\xintfloateval{(\ConvertirPtToCm{\macroy})/(\pflyunit)}}%
+}
+
+\NewDocumentCommand\RecupererCoordonnees{ m O{\monabs} O{\monordo} }{%
+	\RecupererAbscisse{#1}[#2]%
+	\RecupererOrdonnee{#1}[#3]%
+}
+
+%===UNITÉS
+\newcommand\DistanceEntreNoeuds[3][\MyTmpDist]{%
+    \pgfpointdiff{\pgfpointanchor{#2}{center}}
+                 {\pgfpointanchor{#3}{center}}
+    % no need to use a new dimen
+    \pgf at xa=\pgf at x
+    \pgf at ya=\pgf at y
+    % to convert from pt to cm   
+    \pgfmathparse{veclen(\pgf at xa,\pgf at ya)/28.45274}
+    \global\let#1\pgfmathresult %macro globale
+}
+
+\newcommand\TikZUnites{
+    \coordinate (@0) at (0,0) ;
+    \coordinate (@X) at (1,0) ;
+    \coordinate (@Y) at (0,1) ;
+    \DistanceEntreNoeuds[\pflxunit]{@0}{@X}
+    \DistanceEntreNoeuds[\pflyunit]{@0}{@Y}
+}
+
+%====ENVIRONNEMENT
+\defKV[GraphiqueTikz]{%
+	TailleGrad=\def\pflthickgrad{#1}
+}
+\setKVdefault[GraphiqueTikz]{%
+	AffCadre=false,%
+	TailleGrad=3pt
+}
+
+\NewDocumentEnvironment{GraphiqueTikz}{ O{} D<>{} }%
+%1 = options tikz, classiques
+%2 = clés spécifiques
+{%
+	\restoreKV[GraphiqueTikz]%
+	\setKV[GraphiqueTikz]{#2}%
+	%l'environnement
+	\begin{tikzpicture}[#1]%
+		%unités x/y pour des calculs de coordonnées
+		\TikZUnites
+		%noeuds
+		\coordinate (bbxTop) at (current bounding box.north) ;
+		\coordinate (bbxBottom) at (current bounding box.south) ;
+		\ifboolKV[GraphiqueTikz]{AffCadre}{\draw[pflcadre] ({\pflxmin},{\pflymin}) rectangle ({\pflxmax},{\pflymax}) ;}{}%
+		%back to normal
+}%
+{%
+	\end{tikzpicture}%
+}
+
+%====AXES
+\defKV[GraphiqueTikzAxes]{
+	Format=\def\pflformataxes{#1}
+}
+\setKVdefault[GraphiqueTikzAxes]{%
+	Grille=true,%
+	Elargir=0,%
+	Grads=true,%
+	Origine=false,%
+	Police={},%
+	Format=num,%
+	Traits=true,%
+	Dernier=false
+}
+
+\NewDocumentCommand\FormatterValeurAxex{ m m }{%
+	\IfStrEqCase{#1}{%
+		{num}{\num{#2}}%
+		{annee}{#2}%
+		{frac}{\FormatterFraction{#2}}%
+		{dfrac}{\FormatterFraction[d]{#2}}%
+		{nfrac}{\FormatterFraction[n]{#2}}%
+		{trig}{\FormatterTrigo{#2}}%
+		{dtrig}{\FormatterTrigo[d]{#2}}%
+		{ntrig}{\FormatterTrigo[n]{#2}}%
+		{sqrt}{\FormatterRacine{#2}}%
+		{dsqrt}{\FormatterRacine[d]{#2}}%
+		{nsqrt}{\FormatterRacine[n]{#2}}%
+	}[#2]%
+}
+
+\NewDocumentCommand\FormatterValeurAxey{ m m }{%
+	\IfStrEqCase{#1}{%
+		{num}{\num{#2}}%
+		{annee}{#2}%
+		{frac}{\FormatterRacine{#2}}%
+		{dfrac}{\FormatterFraction[d]{#2}}%
+		{nfrac}{\FormatterFraction[n]{#2}}%
+		{trig}{\FormatterTrigo{#2}}%
+		{dtrig}{\FormatterTrigo[d]{#2}}%
+		{ntrig}{\FormatterTrigo[n]{#2}}%
+		{sqrt}{\FormatterRacine{#2}}%
+		{dsqrt}{\FormatterRacine[d]{#2}}%
+		{nsqrt}{\FormatterRacine[n]{#2}}%
+	}[#2]%
+}
+
+\NewDocumentCommand\TracerAxesGrilles{ s O{} m D<>{#3} m D<>{#5} }{%
+	\restoreKV[GraphiqueTikzAxes]%
+	\setKV[GraphiqueTikzAxes]{#2}%
+	\IfSubStr{\pflformataxes}{/}%
+		{%
+			\StrCut{\pflformataxes}{/}{\pflformataxex}{\pflformataxey}%
+		}%
+		{%
+			\xdef\pflformataxex{\pflformataxes}\xdef\pflformataxey{\pflformataxes}%
+		}%
+	\ifboolKV[GraphiqueTikzAxes]{Grille}%
+		{%
+			\draw[pflgrilles,xstep=\pflgrillexs,ystep=\pflgrilleys] ({\pflxmin},{\pflymin}) grid ({\pflxmax},{\pflymax});
+			\draw[pflgrillep,xstep=\pflgrillex,ystep=\pflgrilley] ({\pflxmin},{\pflymin}) grid ({\pflxmax},{\pflymax});
+			\ifboolKV[GraphiqueTikzAxes]{Dernier}%
+				{%
+					\draw[pflgrillep] ({\pflxmin},{\pflymax})--({\pflxmax},{\pflymax}) ;
+					\draw[pflgrillep] ({\pflxmax},{\pflymin})--({\pflxmax},{\pflymax}) ;
+				}%
+				{}%
+		}%
+		{}%
+	\draw[pflaxes] ({\pflxmin},{\pflOy}) -- ([xshift={\useKV[GraphiqueTikzAxes]{Elargir}}]{\pflxmax},{\pflOy}) ;
+	\draw[pflaxes] ({\pflOx},{\pflymin}) -- ([yshift={\useKV[GraphiqueTikzAxes]{Elargir}}]{\pflOx},{\pflymax}) ;
+	\IfEq{#3}{auto}%
+		{%
+			\xdef\tmprangexvalues{\xintfloateval{seq(i,i=\pflxmin..[\pflgrillex]..\pflxmax)}}\StrDel{\tmprangexvalues}{ }[\tmprangexvalues]%
+			\xdef\pflformataxex{num}%
+		}%
+		{%
+			\xdef\tmprangexvalues{#3}%
+		}%
+	\IfEq{#5}{auto}%
+		{%
+			\xdef\tmprangeyvalues{\xintfloateval{seq(i,i=\pflymin..[\pflgrilley]..\pflymax)}}\StrDel{\tmprangeyvalues}{ }[\tmprangeyvalues]%
+			\xdef\pflformataxey{num}%
+		}%
+		{%
+			\xdef\tmprangeyvalues{#5}%
+		}%
+	\foreach \x in \tmprangexvalues {\draw[pfltrait] ([yshift=\pflthickgrad]{\x},{\pflOy})--++(0,{-2*\pflthickgrad}) ;}
+	\foreach \y in \tmprangeyvalues {\draw[pfltrait] ([xshift=\pflthickgrad]{\pflOx},{\y})--++({-2*\pflthickgrad},0) ;}
+	\ifboolKV[GraphiqueTikzAxes]{Grads}%
+		{%
+			%origine
+			\ifboolKV[GraphiqueTikzAxes]{Origine}%
+				{%
+					\draw ({\pflOx},{\pflOy}) node[below left,font={\useKV[GraphiqueTikzAxes]{Police}}] {\FormatterValeurAxex{\pflformataxex}{\plfOx}} ;
+					%\draw (\pflOx,\pflOy) node[below left,font={\useKV[GraphiqueTikzAxes]{Police}}] {\ifboolKV[GraphiqueTikzAxes]{Num}{\num{\pflOx}}{\pflOx}} ;
+				}%
+				{}%
+			%graduations x, sauf si auto...
+			\foreach \x in \tmprangexvalues {%
+				\IfBooleanTF{#1}%
+					{%
+						\xintifboolexpr{\x == \pflOx}{}{\draw ([yshift=-\pflthickgrad]{\x},{\pflOy}) node[below,font={\useKV[GraphiqueTikzAxes]{Police}}] {\FormatterValeurAxex{\pflformataxex}{\x}} ;}
+						%\xintifboolexpr{\x == \pflOx}{}{\draw ([yshift=-\pflthickgrad]\x,\pflOy) node[below,font={\useKV[GraphiqueTikzAxes]{Police}}] {\ifboolKV[GraphiqueTikzAxes]{Num}{\num{\x}}{\x}} ;}
+					}%
+					{%
+						\draw ([yshift=-\pflthickgrad]{\x},{\pflOy}) node[below,font={\useKV[GraphiqueTikzAxes]{Police}}] {\FormatterValeurAxex{\pflformataxex}{\x}} ;
+						%\draw ([yshift=-\pflthickgrad]\x,\pflOy) node[below,font={\useKV[GraphiqueTikzAxes]{Police}}] {\ifboolKV[GraphiqueTikzAxes]{Num}{\num{\x}}{\x}} ;
+					}%
+				}%
+			\foreach \y in \tmprangeyvalues {%
+				\IfBooleanTF{#1}%
+					{%
+						\xintifboolexpr{\y == \pflOy}{}{\draw ([xshift=-\pflthickgrad]{\pflOx},{\y}) node[left,font={\useKV[GraphiqueTikzAxes]{Police}}] {\FormatterValeurAxey{\pflformataxey}{\y}} ;}
+						%\xintifboolexpr{\y == \pflOy}{}{\draw ([xshift=-\pflthickgrad]\pflOx,\y) node[left,font={\useKV[GraphiqueTikzAxes]{Police}}] {\ifboolKV[GraphiqueTikzAxes]{Num}{\num{\y}}{\y}} ;}
+					}%
+					{%
+						\draw ([xshift=-\pflthickgrad]{\pflOx},{\y}) node[left,font={\useKV[GraphiqueTikzAxes]{Police}}] {\FormatterValeurAxey{\pflformataxey}{\y}} ;
+						%\draw ([xshift=-\pflthickgrad]\pflOx,\y) node[left,font={\useKV[GraphiqueTikzAxes]{Police}}] {\ifboolKV[GraphiqueTikzAxes]{Num}{\num{\y}}{\y}} ;
+					}%
+				}%
+		}%
+		{}%
+}
+
+%===DEFINIR POINTS
+\setKVdefault[GraphiqueTikzDefPoints]{Couleur=black,Aff=false}
+
+\NewDocumentCommand\DefinirPts{ O{} m }{%
+	\restoreKV[GraphiqueTikzDefPoints]%
+	\setKV[GraphiqueTikzDefPoints]{#1}%
+	\foreach \tmpnamept/\tmpxpt/\tmpypt in {#2}{%
+	\coordinate (\tmpnamept) at ({\tmpxpt},{\tmpypt}) ;
+		\ifboolKV[GraphiqueTikzDefPoints]{Aff}%
+			{%
+				\filldraw[{\useKV[GraphiqueTikzDefPoints]{Couleur}}] (\tmpnamept) circle[pflpointc] ;
+			}%
+			{}%
+	}
+}
+
+%===AJOUTER DES VALEURS MANUELLEMENT
+\NewDocumentCommand\RajouterValeursAxeX{ O{} m m }{%
+	\restoreKV[GraphiqueTikzAxes]%
+	\setKV[GraphiqueTikzAxes]{#1}%
+	\ifboolKV[GraphiqueTikzAxes]{Traits}{\foreach \x in {#2}{\draw[pfltrait] ([yshift=\pflthickgrad]{\x},{\pflOy})--++(0,{-2*\pflthickgrad}) ;}}{}%
+	\readlist*\LstValX{#2}%
+	\readlist*\LstValFmtX{#3}%
+	\foreach \i in {1,...,\LstValXlen}{%
+		\itemtomacro\LstValX[\i]\mavalx%
+		\itemtomacro\LstValFmtX[\i]\mavalfmtx%
+		\draw ([yshift=-\pflthickgrad]{\mavalx},{\pflOy}) node[below,font={\useKV[GraphiqueTikzAxes]{Police}}] {\mavalfmtx} ;
+	}%
+}
+
+\NewDocumentCommand\RajouterValeursAxeY{ O{} m m }{%
+	\restoreKV[GraphiqueTikzAxes]%
+	\setKV[GraphiqueTikzAxes]{#1}%
+	\ifboolKV[GraphiqueTikzAxes]{Traits}{\foreach \y in {#2}{\draw[pfltrait] ([xshift=\pflthickgrad]{\pflOx},{\y})--++({-2*\pflthickgrad},0) ;}}{}%
+	\readlist*\LstValY{#2}%
+	\readlist*\LstValFmtY{#3}%
+	\foreach \i in {1,...,\LstValXlen}{%
+		\itemtomacro\LstValY[\i]\mavaly%
+		\itemtomacro\LstValFmtY[\i]\mavalfmty%
+		\draw ([xshift=-\pflthickgrad]{\pflOx},{\mavaly}) node[left,font={\useKV[GraphiqueTikzAxes]{Police}}] {\mavalfmty} ;
+	}%
+}
+
+%====FONCTION ET COURBE
+\defKV[GraphiqueTikzCourbe]{%
+	Pas=\def\pflstepcurve{#1},%
+	Nom=\def\pflnamecurve{#1}
+}
+\setKVdefault[GraphiqueTikzCourbe]{%
+	Couleur=black,%
+	Debut={\pflxmin},%
+	Fin={\pflxmax},%
+	Pas={},%
+	Clip=true,%
+	Nom={},%
+	Trace=false,%
+	Tension=0.5
+}
+
+\NewDocumentCommand\DefinirFonction{ O{} D<>{f} m }{%
+	\restoreKV[GraphiqueTikzCourbe]%
+	\setKV[GraphiqueTikzCourbe]{#1}%
+	\xintdeffloatfunc #2(x) := #3 ;
+	\IfStrEq{\pflstepcurve}{}%
+	{%
+		\xdef\pflstepcurve{\xintfloateval{((\useKV[GraphiqueTikzCourbe]{Fin})-(\useKV[GraphiqueTikzCourbe]{Debut}))/100}}%
+	}%
+	{}%
+	\ifboolKV[GraphiqueTikzCourbe]{Clip}{\begin{scope}\clip ({\pflxmin},{\pflymin}) rectangle ({\pflxmax},{\pflymax});}{}
+		\clip ({\pflxmin},{\pflymin}) rectangle ({\pflxmax},{\pflymax});
+		\ifboolKV[GraphiqueTikzCourbe]{Trace}%
+			{%
+				\path[draw,pflcourbe,{\useKV[GraphiqueTikzCourbe]{Couleur}},name path global=\pflnamecurve] plot[smooth] coordinates {%
+					\xintthecoords\xintfloatexpr
+					seq((x,#2(x)),x={\useKV[GraphiqueTikzCourbe]{Debut}}..[\pflstepcurve]..{\useKV[GraphiqueTikzCourbe]{Fin}},{\useKV[GraphiqueTikzCourbe]{Fin}})
+					\relax
+				};
+			}%
+			{%
+				\path[draw=none,pflcourbe,{\useKV[GraphiqueTikzCourbe]{Couleur}},name path global=\pflnamecurve] plot[smooth] coordinates {%
+					\xintthecoords\xintfloatexpr
+					seq((x,#2(x)),x={\useKV[GraphiqueTikzCourbe]{Debut}}..[\pflstepcurve]..{\useKV[GraphiqueTikzCourbe]{Fin}},{\useKV[GraphiqueTikzCourbe]{Fin}})
+					\relax
+				};
+			}%
+	\ifboolKV[GraphiqueTikzCourbe]{Clip}{\end{scope}}{}
+}
+
+\NewDocumentCommand\TracerCourbe{ O{} D<>{} m }{%
+	\restoreKV[GraphiqueTikzCourbe]%
+	\setKV[GraphiqueTikzCourbe]{#1}%
+	\IfStrEq{\pflstepcurve}{}%
+		{%
+			\xdef\pflstepcurve{\xintfloateval{((\useKV[GraphiqueTikzCourbe]{Fin})-(\useKV[GraphiqueTikzCourbe]{Debut}))/100}}%
+		}%
+		{}%
+	\ifboolKV[GraphiqueTikzCourbe]{Clip}{\begin{scope}\clip ({\pflxmin},{\pflymin}) rectangle ({\pflxmax},{\pflymax});}{}
+	\IfEq{\pflnamecurve}{}%
+		{%
+			\draw[pflcourbe,{\useKV[GraphiqueTikzCourbe]{Couleur}}] plot[smooth] coordinates {%
+				\xintthecoords\xintfloatexpr
+				seq((x,#3),x={\useKV[GraphiqueTikzCourbe]{Debut}}..[\pflstepcurve]..{\useKV[GraphiqueTikzCourbe]{Fin}},{\useKV[GraphiqueTikzCourbe]{Fin}})
+				\relax
+			};
+		}%
+		{%
+			\path[draw,pflcourbe,{\useKV[GraphiqueTikzCourbe]{Couleur}},name path global=\pflnamecurve] plot[smooth] coordinates {%
+				\xintthecoords\xintfloatexpr
+				seq((x,#3),x={\useKV[GraphiqueTikzCourbe]{Debut}}..[\pflstepcurve]..{\useKV[GraphiqueTikzCourbe]{Fin}},{\useKV[GraphiqueTikzCourbe]{Fin}})
+				\relax
+			};
+		}%
+	\ifboolKV[GraphiqueTikzCourbe]{Clip}{\end{scope}}{}
+}
+
+\NewDocumentCommand\DefinirCourbeInterpo{ O{} m }{%
+	\restoreKV[GraphiqueTikzCourbe]%
+	\setKV[GraphiqueTikzCourbe]{#1}%
+	\begin{scope}
+		\ifboolKV[GraphiqueTikzCourbe]{Trace}%
+			{%
+				\path[draw,pflcourbe,{\useKV[GraphiqueTikzCourbe]{Couleur}},name path global=\pflnamecurve] plot[smooth,tension={\useKV[GraphiqueTikzCourbe]{Tension}}] coordinates {#2};
+			}%
+			{%
+				\path[draw=none,pflcourbe,{\useKV[GraphiqueTikzCourbe]{Couleur}},name path global=\pflnamecurve] plot[smooth,tension={\useKV[GraphiqueTikzCourbe]{Tension}}] coordinates {#2};
+			}%
+	\end{scope}
+}
+
+\NewDocumentCommand\TracerCourbeInterpo{ O{} m }{%
+	%2=liste
+	\restoreKV[GraphiqueTikzCourbe]%
+	\setKV[GraphiqueTikzCourbe]{#1}%
+	\begin{scope}
+		\draw[pflcourbe,{\useKV[GraphiqueTikzCourbe]{Couleur}}] plot [smooth,tension={\useKV[GraphiqueTikzCourbe]{Tension}}] coordinates {#2} ;
+	\end{scope}
+}
+
+%===INTERSECTION & ANTÉCÉDENTS
+\defKV[GraphiqueTikzIntersect]{%
+	Nom=\def\pflintercurves{#1}
+}
+\setKVdefault[GraphiqueTikzIntersect]{%
+	Nom=S,
+	Aff=true,
+	Couleur=black,
+	AffDroite=false,%
+	Traits=false
+}
+
+\NewDocumentCommand\TrouverIntersections{ O{} m m D<>{\myt} }{%
+	\restoreKV[GraphiqueTikzIntersect]%
+	\setKV[GraphiqueTikzIntersect]{#1}%
+	\path[name intersections={of=#2 and #3,name=\pflintercurves,total=\t}] \pgfextra{\xdef#4{\t}};
+	\ifboolKV[GraphiqueTikzIntersect]{Aff}%
+		{%
+			\xintifboolexpr{#4 == 0}{}%
+				{%
+					\foreach \i in {1,...,#4}{%
+						\ifboolKV[GraphiqueTikzIntersect]{Traits}%
+							{%
+								\draw[pfltraitimg,{\useKV[GraphiqueTikzIntersect]{Couleur}}]let \p1 = (\pflintercurves-\i) in (\pflintercurves-\i) -- ({\x1},{\pflOy}) ;
+							}%
+							{}%
+						\filldraw[{\useKV[GraphiqueTikzIntersect]{Couleur}}] (\pflintercurves-\i) circle[pflpointc] ;
+					}
+				}%
+		}%
+		{}%
+}
+
+\NewDocumentCommand\TrouverAntecedents{ O{} m m D<>{\myantec} }{%
+	\restoreKV[GraphiqueTikzIntersect]%
+	\setKV[GraphiqueTikzIntersect]{#1}%
+	\begin{scope}
+		\clip ({\pflxmin},{\pflymin}) rectangle ({\pflxmax},{\pflymax});
+		\ifboolKV[GraphiqueTikzIntersect]{AffDroite}%
+			{%
+				\path[draw,{\useKV[GraphiqueTikzIntersect]{Couleur}},pflcourbe,name path=tmpanteced] ({\pflxmin},{#3})--({\pflxmax},{#3}) ;
+			}%
+			{%
+				\path[draw=none,pflcourbe,name path=tmpanteced] ({\pflxmin},{#3})--({\pflxmax},{#3}) ;
+			}%
+		\path[name intersections={of=#2 and tmpanteced,name=\pflintercurves,total=\t}] \pgfextra{\xdef#4{\t}};
+		\ifboolKV[GraphiqueTikzIntersect]{Aff}%
+			{%
+				\xintifboolexpr{#4 == 0}{}%
+				{%
+					\foreach \i in {1,...,#4}{%
+						\filldraw[{\useKV[GraphiqueTikzIntersect]{Couleur}}] (\pflintercurves-\i) circle[pflpointc] ;
+					}
+				}%
+			}%
+			{}%
+	\end{scope}
+}
+
+%====INTÉGRALES
+\defKV[GraphiqueTikzIntegr]{%
+	Couleurs=\def\pfldomtikzcolors{#1},%
+	Style=\def\pfldomtikzstyle{#1},%
+	Opacite=\def\pfldomtikzopac{#1},%
+	Hachures=\def\pfldomtikzhatch{#1},%
+	Type=\def\pfldomtikztype{#1},%
+	Pas=\def\pflstepcurve{#1},%
+	Bornes=\def\pflintbornes{#1},%
+	Jonction=\def\pfldomtikzjoin{#1},%
+	NomSpline=\def\pfldomtikznamespline{#1}
+}
+\setKVdefault[GraphiqueTikzIntegr]{%
+	Couleurs=gray,%
+	Style=remplissage,%
+	Opacite=0.5,%
+	Hachures={north west lines},%
+	Type=dessous,%
+	Pas={},%
+	Jonction=bevel,%
+	Bornes=abs,%
+	Bord=true,%
+	Spline=false,%
+	NomSpline={\monspline}
+}
+
+\NewDocumentCommand\TracerIntegrale{ O{} D<>{} m O{0} m m }{%
+	%1 = clés
+	%2 = options particulières tikz
+	%3 = fonction, en tikz
+	%4 = fonction n°2 éventuelle
+	%de #5 à #6
+	\restoreKV[GraphiqueTikzIntegr]% revenir au valeurs par défaut
+	\setKV[GraphiqueTikzIntegr]{#1}% lit les arguments optionnels
+	%les couleurs
+	\IfSubStr{\pfldomtikzcolors}{/}%
+		{%
+			\StrCut{\pfldomtikzcolors}{/}{\pfldomtikzcolorbord}{\pfldomtikzcolorfond}
+		}%
+		{%
+			\xdef\pfldomtikzcolorbord{\pfldomtikzcolors}\xdef\pfldomtikzcolorfond{\pfldomtikzcolors}
+		}%
+	\ifboolKV[GraphiqueTikzIntegr]{Bord}%
+		{%
+			\tikzset{integralebordtikzstyle/.style={draw=\pfldomtikzcolorbord}}
+		}%
+		{%
+			\tikzset{integralebordtikzstyle/.style={draw=none}}
+		}%
+	\IfStrEq{\pfldomtikzstyle}{hachures}%
+	{%
+		\tikzset{integraletikzstyle/.style={pfltrait,pattern=\pfldomtikzhatch,pattern color=\pfldomtikzcolorfond,line join=\pfldomtikzjoin}}
+	}%
+	{}%
+	\IfStrEq{\pfldomtikzstyle}{remplissage}%
+	{%
+		\tikzset{integraletikzstyle/.style={pfltrait,fill=\pfldomtikzcolorfond,fill opacity=\pfldomtikzopac,line join=\pfldomtikzjoin}}
+	}%
+	{}%
+	%extraction des infos x/y
+	\IfStrEqCase{\pflintbornes}{%
+		{abs}%
+		{%
+			\xdef\absnoeudA{#5}%
+			\xdef\absnoeudB{#6}%
+		}%
+		{noeuds}%
+		{%
+			\path #5;
+			\pgfgetlastxy{\macrox}{\macroy}%
+			\xdef\absnoeudA{\xintfloateval{(\ConvertirPtToCm{\macrox})/(\pflxunit)}}%
+			\path #6;
+			\pgfgetlastxy{\macrox}{\macroy}%
+			\xdef\absnoeudB{\xintfloateval{(\ConvertirPtToCm{\macrox})/(\pflxunit)}}%
+		}%
+		{abs/noeud}%
+		{%
+			\xdef\absnoeudA{#5}%
+			\path #6;
+			\pgfgetlastxy{\macrox}{\macroy}%
+			\xdef\absnoeudB{\xintfloateval{(\ConvertirPtToCm{\macrox})/(\pflxunit)}}%
+		}%
+		{noeud/abs}%
+		{%
+			\path #5;
+			\pgfgetlastxy{\macrox}{\macroy}%
+			\xdef\absnoeudA{\xintfloateval{(\ConvertirPtToCm{\macrox})/(\pflxunit)}}%
+			\xdef\absnoeudB{#6}%
+		}%
+	}%
+	%suite
+	\IfStrEq{\pflstepcurve}{}%
+		{%
+			\xdef\pflstepcurve{\xintfloateval{((\absnoeudB)-(\absnoeudA))/100}}%
+		}%
+		{}%
+	\IfStrEq{\pfldomtikztype}{dessous}%
+	{%
+		\ifboolKV[GraphiqueTikzIntegr]{Spline}%
+			{%
+				\begin{scope}
+					\clip ({\absnoeudA},{\pflymin}) rectangle ({\absnoeudB},{\pflymax}) ;
+					\filldraw[integraletikzstyle,integralebordtikzstyle,#2] ({\absnoeudA},{\pflOy}) -- \pfldomtikznamespline -- ({\absnoeudB},{\pflOy}) -- cycle ;
+				\end{scope}
+				\path[draw=none,pflcourbe,name path=tmpintbornea] ({\absnoeudA},{\pflymin})--({\absnoeudA},{\pflymax}) ;
+				\path[name intersections={of=#3 and tmpintbornea,name=YYY}] ;
+				\draw[\pfldomtikzcolorbord,pfltrait] ({\absnoeudA},{\pflOy})-- (YYY-1) ;
+				\path[draw=none,pflcourbe,name path=tmpintborneb] ({\absnoeudB},{\pflymin})--({\absnoeudB},{\pflymax}) ;
+				\path[name intersections={of=#3 and tmpintborneb,name=ZZZ}] ;
+				\draw[\pfldomtikzcolorbord,pfltrait] ({\absnoeudB},{\pflOy})-- (ZZZ-1) ;
+			}%
+			{%
+				\begin{scope}
+					\clip ({\pflxmin},{\pflymin}) rectangle ({\pflxmax},{\pflymax});
+					\draw[integraletikzstyle,integralebordtikzstyle,#2] ({\absnoeudA},{\pflOy}) -- plot[smooth] coordinates {\xintthecoords\xintfloatexpr seq((x,#3),x=\absnoeudA..[\pflstepcurve]..\absnoeudB,\absnoeudB)\relax} -- ({\absnoeudB},{\pflOy}) -- cycle ;
+				\end{scope}
+			}%
+	}%
+	{}%
+	\IfStrEq{\pfldomtikztype}{entre}%
+	{%
+		\begin{scope}
+			\clip ({\pflxmin},{\pflymin}) rectangle ({\pflxmax},{\pflymax});
+			\draw[integraletikzstyle,integralebordtikzstyle,#2] plot[smooth] coordinates {\xintthecoords\xintfloatexpr seq((x,#3),x=\absnoeudA..[\pflstepcurve]..\absnoeudB,\absnoeudB)\relax} -- plot[smooth] coordinates {\xintthecoords\xintfloatexpr seq((x,#4),x=\absnoeudB..[-(\pflstepcurve)]..\absnoeudA,\absnoeudA)\relax} -- cycle ;
+		\end{scope}
+	}%
+	{}%
+}
+
+\NewDocumentCommand\PlacerPoints{ s O{black} D<>{\normalfont\normalsize} m }{%
+	\IfBooleanTF{#1}%
+		{%
+			\foreach \Point in {#4}{%
+				\filldraw[#2] \Point circle[pflpointc] ;
+			}
+		}%
+		{%
+			\foreach \Point/\Pos/\Label in {#4}{%
+				\filldraw[#2] \Point circle[pflpointc] node[\Pos,font=#3] {\Label} ;
+			}
+		}%
+}
+
+% %====STATS À 2 VARIABLES
+\defKV[GraphiqueTikzRegLin]{%
+	Arrondis=\def\pflarrondisreglin{#1},
+	Nom=\def\pflnamereglin{#1},
+	Debut=\def\pflreglinmin{#1},
+	Fin=\def\pflreglinmax{#1}
+}
+\setKVdefault[GraphiqueTikzRegLin]{
+	CouleurNuage=black,
+	CouleurDroite=black,
+	Arrondis={},
+	Debut={\pflxmin},
+	Fin={\pflxmax},
+	Nom=reglin,
+	TracerDroite=false
+}
+
+\NewDocumentCommand\TracerNuage{ O{} D<>{d} m m }{%
+	\useKVdefault[GraphiqueTikzRegLin]%
+	\setKV[GraphiqueTikzRegLin]{#1}% on paramètres les nouvelles clés et on les simplifie
+	%listes des données
+	\def\xliste{#3}
+	\def\yliste{#4}
+	\readlist*\LX{\xliste}
+	\readlist*\LY{\yliste}
+	%taille des listes
+	\def\LNB{\inteval{\LXlen}}
+	%nuage
+	\foreach \i in {1,...,\LXlen}{%
+		\filldraw[{\useKV[GraphiqueTikzRegLin]{CouleurNuage}}] ({\LX[\i]},{\LY[\i]}) circle[pflpointnuage] ;
+	}
+	%droite de régression
+	\ifboolKV[GraphiqueTikzRegLin]{TracerDroite}%
+		{%
+			%mini LX
+			\def\tmpxminreglin{\fpeval{min(#2)}}
+			\def\tmpxmaxreglin{\fpeval{max(#2)}}
+			%somme des LX et des LY OK
+			\xdef\LXSomme{0}
+			\xdef\LYSomme{0}
+			\foreach \i in {1,2,...,\LNB}{
+				\xdef\LXSomme{\xintfloateval{\LXSomme+\LX[\i]}}
+			}
+			\foreach \i in {1,2,...,\LNB}{
+				\xdef\LYSomme{\xintfloateval{\LYSomme+\LY[\i]}}
+			}
+			%moyenne des LX et des LY OK
+			\xdef\LXmoy{\xintfloateval{\LXSomme/\LNB}}
+			\xdef\LYmoy{\xintfloateval{\LYSomme/\LNB}}
+			%variance des LX et des LY OK
+			\xdef\LXvar{0}
+			\foreach \i in {1,2,...,\LNB}{
+				\xdef\LXvar{\xintfloateval{\LXvar+(\LX[\i]-\LXmoy)*(\LX[\i]-\LXmoy)}}
+			}
+			\xdef\LXvar{\xintfloateval{\LXvar/\LNB}}
+			\xdef\LYvar{0}
+			\foreach \i in {1,2,...,\LNB}{
+				\xdef\LYvar{\xintfloateval{\LYvar+(\LY[\i]-\LYmoy)*(\LY[\i]-\LYmoy)}}
+			}
+			\xdef\LYvar{\xintfloateval{\LYvar/\LNB}}
+			%covariance des XY OK
+			\xdef\LXYvar{0}
+			\foreach \i in {1,2,...,\LNB}{
+				\xdef\LXYvar{\xintfloateval{\LXYvar+(\LX[\i]-\LXmoy)*(\LY[\i]-\LYmoy)}}
+			}
+			\xdef\LXYvar{\xintfloateval{\LXYvar/\LNB}}
+			%COEFFS OK
+			\IfStrEq{\pflarrondisreglin}{}%
+			{%
+				\xdef\tmpcoeffreglina{\xintfloateval{\LXYvar/\LXvar}}
+				\xdef\tmpcoeffreglinb{\xintfloateval{\LYmoy-\tmpcoeffreglina*\LXmoy}}
+			}%
+			{%
+				\IfSubStr{\pflarrondisreglin}{/}%
+				{%
+					\StrCut{\pflarrondisreglin}{/}{\pflarrondisreglina}{\pflarrondisreglinb}
+				}%
+				{%
+					\xdef\pflarrondisreglina{\pflarrondisreglin}\xdef\pflarrondisreglinb{\pflarrondisreglin}
+				}%
+				\xdef\tmpcoeffreglina{\xintfloateval{round(\LXYvar/\LXvar,\pflarrondisreglina)}}
+				\xdef\tmpcoeffreglinb{\xintfloateval{round(\LYmoy-\tmpcoeffreglina*\LXmoy,\pflarrondisreglinb)}}
+			}%
+			\xintdeffloatfunc #2(x) := (\tmpcoeffreglina)*x+(\tmpcoeffreglinb) ;
+			%tracé
+			\begin{scope}
+				\clip ({\pflxmin},{\pflymin}) rectangle ({\pflxmax},{\pflymax});
+				\draw[pflcourbe,{\useKV[GraphiqueTikzRegLin]{CouleurDroite}},name path global=\pflnamereglin,samples=2,domain=\pflreglinmin:\pflreglinmax] plot (\x,{\tmpcoeffreglina*\x+\tmpcoeffreglinb}) ;
+			\end{scope}
+		}%
+		{}%
+}
+
+%===IMAGES & ANTÉCÉDENTS
+\defKV[GraphiqueTikzImg]{
+	Couleurs=\def\pflimgcolors{#1},%
+	Nom=\def\pflantecednoms{#1}
+}
+
+\setKVdefault[GraphiqueTikzImg]{
+	Couleurs=black,
+	Traits=false,
+	Spline=false,%
+	Nom={}
+}
+
+\NewDocumentCommand\PlacerImages{ O{} m m }{%
+	\useKVdefault[GraphiqueTikzImg]%
+	\setKV[GraphiqueTikzImg]{#1}%
+	\IfSubStr{\pflimgcolors}{/}%
+		{%
+			\StrCut{\pflimgcolors}{/}{\pflimgcolorpt}{\pflimgcolorline}
+		}%
+		{%
+			\xdef\pflimgcolorpt{\pflimgcolors}\xdef\pflimgcolorline{\pflimgcolors}
+		}%
+	\ifboolKV[GraphiqueTikzImg]{Spline}%
+		{%
+			\foreach \i in {#3}{%
+				\path[draw=none,pflcourbe,name path=tmpimage] ({\i},{\pflymin})--({\i},{\pflymax}) ;
+				\path[name intersections={of=#2 and tmpimage,name=ZZ}] ;
+				\ifboolKV[GraphiqueTikzImg]{Traits}%
+					{%
+						\draw[\pflimgcolorline,pfltraitimg] let \p1 = (ZZ-1) in ({\x1},{\pflOy}) |- ({\pflOx},{\y1}) ;
+					}%
+					{}%
+				\filldraw[\pflimgcolorpt] (ZZ-1) circle[radius=2pt] ;
+			}
+		}%
+		{%
+			\foreach \i in {#3}{%
+				\xdef\tmpresimg{\xintfloateval{#2(\i)}}%
+				\ifboolKV[GraphiqueTikzImg]{Traits}%
+					{%
+						\draw[\pflimgcolorline,pfltraitimg] ({\i},{\pflOy}) |- ({\pflOx},{\tmpresimg}) ;
+					}%
+					{}%
+				\filldraw[\pflimgcolorpt] ({\i},{\tmpresimg}) circle[radius=2pt] ;
+			}%
+		}
+}
+
+\NewDocumentCommand\PlacerAntecedents{ O{} m m }{%avec le nom de la courbe...
+	\useKVdefault[GraphiqueTikzImg]%
+	\setKV[GraphiqueTikzImg]{#1}%
+	\xdef\pflstepcurve{\xintfloateval{0.1*\pflgrillexs}}
+	\IfSubStr{\pflimgcolors}{/}%
+	{%
+		\StrCut{\pflimgcolors}{/}{\pflimgcolorpt}{\pflimgcolorline}%
+	}%
+	{%
+		\xdef\pflimgcolorpt{\pflimgcolors}\xdef\pflimgcolorline{\pflimgcolors}%
+	}%
+	\begin{scope}
+		\clip ({\pflxmin},{\pflymin}) rectangle ({\pflxmax},{\pflymax});
+		\path[draw=none,pflcourbe,name path=tmpanteced] ({\pflxmin},{#3})--({\pflxmax},{#3}) ;
+		\path[name intersections={of=#2 and tmpanteced,name=ZZ,total=\t}] \pgfextra{\xdef\tmptotanteced{\t}};
+		\xintifboolexpr{\tmptotanteced == 0}{}%
+			{%
+				\ifboolKV[GraphiqueTikzImg]{Traits}%
+					{%
+						\draw[\pflimgcolorline,pfltraitantec] ({\pflxmin},{#3})--({\pflxmax},{#3}) ;
+					}%
+					{}%
+				\foreach \i in {1,...,\tmptotanteced}{%
+					\IfStrEq{\pflantecednoms}{}%
+						{}%
+						{%
+							\coordinate (\pflantecednoms-\i) at (ZZ-\i) ;
+						}%
+					\ifboolKV[GraphiqueTikzImg]{Traits}%
+						{%
+							\draw[\pflimgcolorline,pfltraitimg] let \p1 = (ZZ-\i) in (ZZ-\i) -- ({\x1},{\pflOy}) ;
+						}%
+						{}%
+					\filldraw[\pflimgcolorpt] (ZZ-\i) circle[radius=2pt] ;
+				}%
+			}%
+	\end{scope}
+}
+
+%====SPLINES CUBIQUES
+\newcommand\pflextractcoeff[2]{%1=liste,2=numero
+	\setsepchar{§}%
+	\readlist*\lcoeffs{#1}
+	\ifnum \lcoeffslen=1
+		\def\COEFFA{#1}
+		\def\COEFFB{#1}
+	\else
+		\itemtomacro\lcoeffs[#2]\COEFF
+		\IfSubStr{\COEFF}{/}%
+			{\StrCut{\COEFF}{/}{\COEFFA}{\COEFFB}}%
+			{\def\COEFFA{\COEFF}\def\COEFFB{\COEFF}}
+	\fi
+}
+
+\defKV[GraphiqueTikzSpline]{%
+	Nom=\def\pflsplinename{#1},%
+	Coeffs=\def\pflsplinecoeffs{#1}
+}
+
+\setKVdefault[GraphiqueTikzSpline]{%
+	Nom=spline,%
+	Couleur=black,%
+	Coeffs=3,%
+	Trace=false
+}
+
+\NewDocumentCommand\GenererSpline{ m m O{\monspline} }{%
+	%1=liste
+	\setsepchar[.]{§./}%
+	\readlist*\SPLlistepoints{#1}%
+	%les données
+	\def\tmpsplinenumdeb{1}
+	\def\tmpsplinenumfin{\SPLlistepointslen}%
+	\pflextractcoeff{#2}{\tmpsplinenumdeb}%
+	%nb de calculs
+	\def\SPLnbsplines{\inteval{\tmpsplinenumfin-1}}%
+	%extraction des coordonnées
+	\itemtomacro\SPLlistepoints[\tmpsplinenumdeb,1]\xa%
+	\itemtomacro\SPLlistepoints[\tmpsplinenumdeb,2]\ya%
+	\itemtomacro\SPLlistepoints[\tmpsplinenumdeb,3]\fprimea%
+	\itemtomacro\SPLlistepoints[\tmpsplinenumdeb,1]\xb%
+	\itemtomacro\SPLlistepoints[\tmpsplinenumdeb,2]\yb%
+	\itemtomacro\SPLlistepoints[\tmpsplinenumdeb,3]\fprimeb%
+	\xdef#3{(\xa,\ya) ..controls +({atan \fprimea}:{(\xb-\xa)/\COEFFA}) and +({-180 + atan \fprimeb}:{(\xb-\xa)/\COEFFA}).. (\xb,\yb)}%
+	\foreach \i in {\tmpsplinenumdeb,...,\SPLnbsplines}{%
+		%extraction des coeffs de compensation
+		\pflextractcoeff{#2}{\i}%
+		\def\j{\inteval{\i+1}}%
+		\itemtomacro\SPLlistepoints[\i,1]\xa%
+		\itemtomacro\SPLlistepoints[\i,2]\ya%
+		\itemtomacro\SPLlistepoints[\i,3]\fprimea%
+		\itemtomacro\SPLlistepoints[\j,1]\xb%
+		\itemtomacro\SPLlistepoints[\j,2]\yb%
+		\itemtomacro\SPLlistepoints[\j,3]\fprimeb%
+		\xdef#3{#3 ..controls +({atan \fprimea}:{(\xb-\xa)/\COEFFA}) and +({-180 + atan \fprimeb}:{(\xb-\xa)/\COEFFB}).. (\xb,\yb)}%
+	}%
+}
+
+\NewDocumentCommand\DefinirSpline{ O{} m D<>{\monspline} }{%
+	%1=liste
+	\restoreKV[GraphiqueTikzSpline]%
+	\setKV[GraphiqueTikzSpline]{#1}%
+	\GenererSpline{#2}{\pflsplinecoeffs}<#3>%
+	\begin{scope}
+		\ifboolKV[GraphiqueTikzSpline]{Trace}%
+			{%
+				\path[draw,pflcourbe,{\useKV[GraphiqueTikzSpline]{Couleur}},name path global=\pflsplinename] #3 ;
+			}%
+			{%
+				\path[draw=none,pflcourbe,name path global=\pflsplinename] #3 ;
+			}%
+	\end{scope}
+}
+
+\NewDocumentCommand\TracerSpline{ O{} m D<>{\monspline} }{%
+	%1=liste
+	\restoreKV[GraphiqueTikzSpline]%
+	\setKV[GraphiqueTikzSpline]{#1}%
+	\GenererSpline{#2}{\pflsplinecoeffs}<#3>%
+	\begin{scope}
+		\draw[pflcourbe,{\useKV[GraphiqueTikzSpline]{Couleur}}] #3 ;
+	\end{scope}
+}
+
+%===NOMBRE DÉRIVÉ ET TANGENTE (EXPÉRIEMENTAL)
+\NewDocumentCommand\CalculerNbDerive{ s m m m }{%*=gauche+nomfct+abspt+h
+	\IfBooleanTF{#1}%
+		{%
+			\xdef\TmpResNbDeriv{\xintfloateval{(#2(#3)-#2(#3-#4))/(#4)}}%
+		}%
+		{%
+			\xdef\TmpResNbDeriv{\xintfloateval{(#2(#3+#4)-#2(#3))/(#4)}}%
+		}%
+}
+
+\defKV[GraphiqueTikzTgte]{%
+	Couleurs=\def\pfltgttikzcolors{#1},%
+	DecG=\def\pfltgttikzkl{#1},%
+	DecD=\def\pfltgttikzkr{#1},%
+	h=\def\pfltgttikzh{#1},%
+	Sens=\def\pfltgttikzsens{#1},%
+	Delta=\def\tmptgtedelta{#1}
+}
+\setKVdefault[GraphiqueTikzTgte]{%
+	Couleurs=black,%
+	DecG=1,%
+	DecD=1,%
+	AffPoint=false,%
+	Spline=false,%
+	h=0.1,%
+	Sens=gd,%
+	Noeud=false,%
+	Delta=0.01
+}
+
+\NewDocumentCommand\TracerTangente{ O{} m m D<>{} }{%
+	\restoreKV[GraphiqueTikzTgte]%
+	\setKV[GraphiqueTikzTgte]{#1}%
+	%en fonction de la gestion de l'abscisse
+	\ifboolKV[GraphiqueTikzTgte]{Noeud}%
+		{%
+			\path #3;
+			\pgfgetlastxy{\macrox}{\macroy}%
+			\xdef\pfltgttikzx{\xintfloateval{(\ConvertirPtToCm{\macrox})/(\pflxunit)}}%
+		}%
+		{%
+			\xdef\pfltgttikzx{#3}%
+		}%
+	%parties communes
+	\IfSubStr{\pfltgttikzcolors}{/}%
+		{%
+			\StrCut{\pfltgttikzcolors}{/}{\pfltgttikzline}{\pfltgttikzpoint}
+		}%
+		{%
+			\xdef\pfltgttikzline{\pfltgttikzcolors}\xdef\pfltgttikzpoint{\pfltgttikzcolors}
+		}%
+	\xdef\tmptgtdeb{\xintfloateval{\pfltgttikzx-(\pfltgttikzkl)}}%
+	\xdef\tmptgtfin{\xintfloateval{\pfltgttikzx+(\pfltgttikzkr)}}%
+	%suivant le type de courbe
+	\ifboolKV[GraphiqueTikzTgte]{Spline}%
+		{%
+				\path[name path=tmpimage] ({\pfltgttikzx},{\pflymin})--({\pfltgttikzx},{\pflymax}) ;
+				\path[name intersections={of=#2 and tmpimage,name=TANp}] ;
+				\IfStrEq{\pfltgttikzsens}{gd}%
+					{%
+						\path[name path=L-vline] ({\pfltgttikzx-\tmptgtedelta},{\pflymin}) -- ({\pfltgttikzx-\tmptgtedelta},{\pflymax}) ;
+						\path[name path=R-vline] ({\pfltgttikzx+\tmptgtedelta},{\pflymin}) -- ({\pfltgttikzx+\tmptgtedelta},{\pflymax}) ;
+						%\coordinate (LXcoor) at ($(TANp-1)+({-\tmptgtedelta},0)$) ;
+						%\coordinate (RXcoor) at ($(TANp-1)+({\tmptgtedelta},0)$) ;
+					}%
+					{}%
+				\IfStrEq{\pfltgttikzsens}{g}%
+					{%
+						\path[name path=L-vline] ({\pfltgttikzx-\tmptgtedelta},{\pflymin}) -- ({\pfltgttikzx-\tmptgtedelta},{\pflymax}) ;
+						\path[name path=R-vline] ({\pfltgttikzx},{\pflymin}) -- ({\pfltgttikzx},{\pflymax}) ;
+						%\coordinate (LXcoor) at ($(TANp-1)+({-\tmptgtedelta},0)$) ;
+						%\coordinate (RXcoor) at (TANp-1) ;
+						\def\tmptgtfin{\pfltgttikzx}%
+					}%
+					{}%
+				\IfStrEq{\pfltgttikzsens}{d}%
+					{%
+						\path[name path=L-vline] ({\pfltgttikzx},{\pflymin}) -- ({\pfltgttikzx},{\pflymax}) ;
+						\path[name path=R-vline] ({\pfltgttikzx+\tmptgtedelta},{\pflymin}) -- ({\pfltgttikzx+\tmptgtedelta},{\pflymax}) ;
+						\def\tmptgtdeb{\pfltgttikzx}%
+					}%
+					{}%
+				\path[name intersections={of=#2 and L-vline,name=LXcut}] ;
+				\path[name intersections={of=#2 and R-vline,name=RXcut}] ;
+				\coordinate (tzXproj) at ($(LXcut-1)!(TANp-1)!(RXcut-1)$) ; % projection
+				\coordinate (LLpoint) at ($(LXcut-1)+(TANp-1)-(tzXproj)$) ; % move
+				\coordinate (RRpoint) at ($(RXcut-1)+(TANp-1)-(tzXproj)$) ; % move
+				\path (LLpoint);
+				\pgfgetlastxy{\macrox}{\macroy}%
+				\xdef\tzTANLLX{\xintfloateval{(\ConvertirPtToCm{\macrox})/(\pflxunit)}}%
+				\xdef\tzTANLLY{\xintfloateval{(\ConvertirPtToCm{\macroy})/(\pflyunit)}}%
+				\path (RRpoint);
+				\pgfgetlastxy{\macrox}{\macroy}%
+				\xdef\tzTANRRX{\xintfloateval{(\ConvertirPtToCm{\macrox})/(\pflxunit)}}%
+				\xdef\tzTANRRY{\xintfloateval{(\ConvertirPtToCm{\macroy})/(\pflyunit)}}%
+				\def\tztangentLFn{(\tzTANRRY-\tzTANLLY)/(\tzTANRRX-\tzTANLLX)*(\x-\tzTANLLX)+\tzTANLLY}%
+				\begin{scope}
+					\clip ({\pflxmin},{\pflymin}) rectangle ({\pflxmax},{\pflymax}) ;
+					\draw[pfltrait,\pfltgttikzline,domain=\tmptgtdeb:\tmptgtfin,samples=2,#4] plot (\x,{\tztangentLFn}) ;
+				\end{scope}
+		}%
+		{%
+			\IfStrEq{\pfltgttikzsens}{g}%
+				{%
+					\CalculerNbDerive*{#2}{\pfltgttikzx}{\pfltgttikzh}%
+				}%
+				{%
+					\CalculerNbDerive{#2}{\pfltgttikzx}{\pfltgttikzh}%
+				}%
+			\begin{scope}
+				\clip ({\pflxmin},{\pflymin}) rectangle ({\pflxmax},{\pflymax}) ;
+				\draw[pfltrait,\pfltgttikzline,#4] plot[smooth] coordinates {%
+					\xintthecoords\xintfloatexpr
+					seq((x,\TmpResNbDeriv*(x-(\pfltgttikzx))+#2(\pfltgttikzx)),x=\tmptgtdeb,\tmptgtfin)
+					\relax
+				};
+			\end{scope}
+		}%
+	\ifboolKV[GraphiqueTikzTgte]{AffPoint}%
+		{%
+			\ifboolKV[GraphiqueTikzTgte]{Spline}%
+				{%
+					\filldraw[\pfltgttikzpoint] (TANp-1) circle[pflpointc] ;
+				}%
+				{%
+					\xdef\tmpimgtgt{\xintfloateval{#2(\pfltgttikzx)}}%
+					\filldraw[\pfltgttikzpoint] ({\pfltgttikzx},\tmpimgtgt) circle[pflpointc] ;
+				}%
+		}%
+		{}%
+}
+
+\endinput
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/tex/latex/tkz-grapheur/tkz-grapheur.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/tlpkg/bin/tlpkg-ctan-check
===================================================================
--- trunk/Master/tlpkg/bin/tlpkg-ctan-check	2024-05-12 19:12:00 UTC (rev 71240)
+++ trunk/Master/tlpkg/bin/tlpkg-ctan-check	2024-05-12 19:13:12 UTC (rev 71241)
@@ -853,7 +853,7 @@
     timbreicmc times timetable timing-diagrams tinos tipa tipa-de tipauni tipfr
     tiscreen titlecaps titlefoot titlepages titlepic titleref titlesec titling
     tkz-base tkz-berge tkz-bernoulli tkz-doc tkz-elements tkz-euclide
-    tkz-fct tkz-graph tkz-orm tkz-tab tkzexample
+    tkz-fct tkz-graph tkz-grapheur tkz-orm tkz-tab tkzexample
     tlc-article tlc2 tlc3-examples tlcockpit tlmgr-intro-zh-cn tlmgrbasics
     to-be-determined tocbibind tocdata tocloft tocvsec2 todo todonotes
     tokcycle tokenizer tonevalue toolbox tools

Modified: trunk/Master/tlpkg/libexec/ctan2tds
===================================================================
--- trunk/Master/tlpkg/libexec/ctan2tds	2024-05-12 19:12:00 UTC (rev 71240)
+++ trunk/Master/tlpkg/libexec/ctan2tds	2024-05-12 19:13:12 UTC (rev 71241)
@@ -1891,6 +1891,7 @@
  'tipa-de'		=> '&POST_rmsymlink',
  'tkz-berge'		=> '&POSTtkz_berge',
  'tkz-bernoulli'        => '&POST_onelevel',
+ 'tkz-grapheur'		=> '&POST_onelevel',
  'tlc3-examples'	=> '&POSTtlc3_examples',
  'tlcockpit'		=> '&POST_do_man',
  'trivialpursuit'	=> '&POST_onelevel',

Modified: trunk/Master/tlpkg/tlpsrc/collection-pictures.tlpsrc
===================================================================
--- trunk/Master/tlpkg/tlpsrc/collection-pictures.tlpsrc	2024-05-12 19:12:00 UTC (rev 71240)
+++ trunk/Master/tlpkg/tlpsrc/collection-pictures.tlpsrc	2024-05-12 19:13:12 UTC (rev 71241)
@@ -244,6 +244,7 @@
 depend tkz-euclide
 depend tkz-fct
 depend tkz-graph
+depend tkz-grapheur
 depend tkz-orm
 depend tkz-tab
 depend tkzexample

Added: trunk/Master/tlpkg/tlpsrc/tkz-grapheur.tlpsrc
===================================================================


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