texlive[67172] Master/texmf-dist: proflycee (20may23)

commits+karl at tug.org commits+karl at tug.org
Sat May 20 22:18:54 CEST 2023


Revision: 67172
          http://tug.org/svn/texlive?view=revision&revision=67172
Author:   karl
Date:     2023-05-20 22:18:53 +0200 (Sat, 20 May 2023)
Log Message:
-----------
proflycee (20may23)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/proflycee/ProfLycee-doc.pdf
    trunk/Master/texmf-dist/doc/latex/proflycee/ProfLycee-doc.tex
    trunk/Master/texmf-dist/tex/latex/proflycee/ProfLycee.sty
    trunk/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-aleatoire.tex
    trunk/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-analyse.tex
    trunk/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-arithm.tex
    trunk/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-geom.tex
    trunk/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-probas.tex

Modified: trunk/Master/texmf-dist/doc/latex/proflycee/ProfLycee-doc.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/proflycee/ProfLycee-doc.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/proflycee/ProfLycee-doc.tex	2023-05-20 20:18:42 UTC (rev 67171)
+++ trunk/Master/texmf-dist/doc/latex/proflycee/ProfLycee-doc.tex	2023-05-20 20:18:53 UTC (rev 67172)
@@ -5,8 +5,9 @@
 % arara: lualatex: {shell: yes, synctex: no, interaction: batchmode} if found('log', '(undefined references|Please rerun|Rerun to get)')
 
 \documentclass[a4paper,french,11pt]{article}
-\def\PLversion{2.6.3}
-\def\PLdate{9 mai 2023}
+\def\PLversion{2.6.4}
+\def\PLdate{19 mai 2023}
+\usepackage{amsfonts}
 \usepackage{ProfLycee}
 \useproflyclib{piton,minted,pythontex}
 \usepackage[math-style=french]{fourier-otf}
@@ -307,8 +308,9 @@
 
 \medskip
 
-{\small\noindent%
+{\footnotesize\noindent%
 {\deblst} résoudre, de manière approchée, des équations\\
+{\deblst} calculer (et représenter) une valeur approchée d'une intégrale\\
 {\deblst} tracer \textit{facilement} des repères/grilles/courbes\\
 {\deblst} tracer  des courbes \textit{lisses} avec gestion des extrema et des dérivées\\
 {\deblst} présenter du code \textsf{python} ou \textsf{pseudocode}, une console d'exécution \textsf{Python} \\
@@ -326,11 +328,14 @@
 {\deblst} générer des listes d'entiers aléatoires (avec ou sans répétitions)\\
 {\deblst} déterminer la mesure principale d'un angle \\
 {\deblst} calculer les lignes trigonométriques d'angles \og classiques \fg{} \\
+{\deblst} résoudre une équation diophantienne \og classique \fg{} \\
+{\deblst} travailler avec un peu de géométrie analytique \\
+
 {\deblst} \ldots}
 
 ~
 
-\hfill{}\textsl{Merci à Anne et quark67 pour ses retours et sa relecture !}
+\hfill{}\textsl{Merci à Anne et quark67 pour leurs retours et relectures !}
 
 \hfill{}\textsl{Merci à Christophe et Denis pour leurs retours et éclairages !}
 
@@ -394,7 +399,7 @@
 
 \begin{itemize}
 	\item \ctex{xcolor} avec l' option \textsf{[table,svgnames]} ;
-	\item \ctex{tikz}, \ctex{pgf}, \ctex{pgffor}, \ctex{nicefrac} ;
+	\item \ctex{tikz}, \ctex{pgf}, \ctex{pgffor}, \ctex{nicefrac}, \ctex{nicematrix} ;
 	\item \ctex{tcolorbox} avec l'option \textsf{[most]} ;
 	\item \ctex{xparse}, \ctex{xstring}, \ctex{simplekv}, \ctex{xinttools} ;
 	\item \ctex{listofitems}, \ctex{xintexpr} , \ctex{xintbinhex}, \ctex{xintgcd} ;
@@ -595,9 +600,6 @@
 
 %Valeur approchée d'une intégrale
 \IntegraleApprochee[clés]{fonction}{a}{b}
-
-%Équation réduite d'une droite
-\EquationReduite[option]{A/xa/ya,B/xb/yb}
 \end{PresCodeTexPL}
 
 \begin{PresCodeTexPL}{listing only}
@@ -640,8 +642,6 @@
 \begin{PseudoCodeAlt}(*)[largeur]{commandes tcbox}...\end{PseudoCodeAlt}
 \end{PresCodeTexPL}
 
-\pagebreak
-
 \begin{PresCodeTexPL}{listing only}
 %terminal OS
 \begin{TerminalWin}[largeur]{clés}[options]...\end{TerminalWin}
@@ -662,6 +662,42 @@
 \end{PresCodeTexPL}
 
 \begin{PresCodeTexPL}{listing only}
+%Affichage des coordonnées d'un point (2 ou 3 coordonnées)
+\AffPoint[options de formatage](liste des coordonnées)
+%Affichage des coordonnées d'un vecteur (2 ou 3 coordonnées)
+\AffVecteur[options de formatage]<options nicematrix>(liste des coordonnées)
+
+%Avec un vecteur normal et un point
+\TrouveEqCartPlan[clés](vecteur normal)(point)
+%Avec deux vecteurs directeurs et un point
+\TrouveEqCartPlan[clés](vecteur dir1)(vecteur dir2)(point)
+%Avec trois points
+\TrouveEqCartPlan[clés](point1)(point2)(point3)
+
+%Avec un vecteur directeur et un point
+\TrouveEqParamDroite[clés](vecteur directeur)(point)
+%Avec deux points
+\TrouveEqParamDroite[clés](point1)(point2)
+
+%Avec un vecteur normal (choix par défaut) et un point
+\TrouveEqCartDroite[clés](vecteur normal)(point)
+%Avec un vecteur directeur et un point
+\TrouveEqCartDroite[clés,VectDirecteur](vecteur directeur)(point1)
+%Avec deux points
+\TrouveEqCartDroite[clés](point1)(point2)
+
+%Avec le point et le plan via vect normal + point
+\TrouveDistancePtPlan(point)(vec normal du plan)(point du plan)
+%Avec le point et le plan via vect normal + point
+\TrouveDistancePtPlan(point)(équation cartésienne)
+\end{PresCodeTexPL}
+
+\begin{PresCodeTexPL}{listing only}
+%Équation réduite d'une droite
+\EquationReduite[option]{A/xa/ya,B/xb/yb}
+\end{PresCodeTexPL}
+
+\begin{PresCodeTexPL}{listing only}
 %paramètres d'une régression linéaire, nuage de points
 \CalculsRegLin[clés]{listeX}{listeY}
 \PointsRegLin[clés]{listeX}{listeY}
@@ -756,6 +792,9 @@
 
 %PGCD présenté
 \PresentationPGCD[options]{a}{b}
+
+%Équation diophantienne
+\EquationDiophantienne[clés]{equation}
 \end{PresCodeTexPL}
 
 \begin{PresCodeTexPL}{listing only}
@@ -1180,80 +1219,6 @@
 
 \newpage
 
-\section{Équation réduite d'une droite}\label{eqreduite}
-
-\subsection{Idée}
-
-\begin{tipblock}
-\cmaj{2.6.3} L'idée est de proposer une commande pour déterminer l'équation réduite d'une droite passant par deux points :
-\begin{itemize}
-	\item en traitant les cas particuliers \textit{horizontale}, \textit{verticale} ;
-	\item en affichant une méthode de résolution ;
-	\item en travaillant sous forme exacte fractionnaire (les racines carrées ou autres ne seront pas gérés).
-\end{itemize}
-
-À noter que les calculs et résultats sont traités par la commande de \textit{conversion de fraction} de \ctex{ProfLycee}.
-\end{tipblock}
-
-\begin{warningblock}
-La commande se charge de formater (normalement !) correctement les différentes étapes de calculs (il se peut quand même que cela puisse ne pas donner le résultat réellement escompté\ldots) :
-
-\begin{itemize}
-	\item en travaillant en fraction ;
-	\item en mettant les parenthèses nécessaires devant les éventuels nombres négatifs ;
-	\item en traitant les cas particuliers $m=\pm1$ et $b=0$.
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{warningblock}
-
-\begin{PresCodeTexPL}{listing only}
-\EquationReduite[option]{A/xa/ya,B/xb/yb}
-\end{PresCodeTexPL}
-
-\subsection{Clés et arguments}
-
-\begin{cautionblock}
-Concernant le fonctionnement de la commande :
-
-\begin{itemize}
-	\item le premier argument, optionnel et entre \ctex{[...]} et valant \Cle{[d]} par défaut, permet de formater les fractions éventuelles en mode \ctex{\textbackslash displaystyle} ;
-	\item le second argument, obligatoire et entre \ctex{\{...\}}, permet de donner les coordonnées des points concernés.
-\end{itemize}
-\vspace*{-\baselineskip}\leavevmode
-\end{cautionblock}
-
-\begin{PresCodePL}{}
-\EquationReduite{C/2/0,D/-2/-8}
-\end{PresCodePL}
-
-\subsection{Exemples}
-
-\begin{PresCodePL}{}
-\EquationReduite{I/-4/5,J/-4/12}
-\end{PresCodePL}
-
-\begin{PresCodePL}{}
-\EquationReduite{U/-4/5,V/-4/5}
-\end{PresCodePL}
-
-\begin{PresCodePL}{}
-\EquationReduite{L/10/7,M/-2/7}
-\end{PresCodePL}
-
-\begin{PresCodePL}{}
-\EquationReduite{L/{1/3}/2.5,M/{-5/7}/{3/5}}
-\end{PresCodePL}
-
-\begin{PresCodePL}{}
-\EquationReduite{P/4/-4,Q/-2/2}
-\end{PresCodePL}
-
-\begin{PresCodePL}{}
-\EquationReduite{G/-4/5,H/10/4}
-\end{PresCodePL}
-
-\newpage
-
 \phantom{t}\par\vfill\par
 \begin{PART}
 	\begin{center}
@@ -3853,8 +3818,438 @@
 \hfill~
 \end{PresCodeSortiePL}
 
+\pagebreak
+
+\phantom{t}\par\vfill\par
+\begin{PART}
+	\begin{center}
+		\Huge\MakeUppercase{Outils pour la géométrie analytique}
+	\end{center}
+\end{PART}
+\par\vfill\par\phantom{t}
+
 \newpage
 
+\part{Outils pour la géométrie analytique}
+
+\section{Affichage de coordonnées}\label{affcoord}
+
+\subsection{Idée}
+
+\begin{tipblock}
+\cmaj{2.6.4} L'idée est de proposer des commandes pour simplifier la saisie de coordonnées de vecteurs ou de points (plan ou espace), en saisissant les coordonnées \textit{en ligne}.
+
+\smallskip
+
+À noter que les calculs et résultats sont traités par la commande de \textit{conversion de fraction} de \ctex{ProfLycee}.
+\end{tipblock}
+
+\begin{warningblock}
+Logiquement les commandes (à insérer dans un environnement mathématique) doivent donner des résultats satisfaisants pour tout ce qui est \textit{rationnel}, mais cela ne sera pas pertinent dans le cas de coordonnées irrationnelles\ldots
+\end{warningblock}
+
+\begin{PresCodeTexPL}{listing only}
+%Affichage des coordonnées d'un point (2 ou 3 coordonnées)
+\AffPoint[options de formatage](liste des coordonnées)
+
+%Affichage des coordonnées d'un vecteur (2 ou 3 coordonnées)
+\AffVecteur[options de formatage]<options nicematrix>(liste des coordonnées)
+\end{PresCodeTexPL}
+
+\begin{warningblock}
+Dans cette partie liée à la géométrie analytique, j'ai choisi de saisir les arguments (coordonnées) via les délimiteurs \ctex{(...)} :
+
+\begin{itemize}
+	\item avec le séparateur \ctex{,} pour les points ;
+	\item avec le séparateur \ctex{;} pour les vecteurs.
+\end{itemize}
+
+De ce fait, le code \textit{sait} s'il est face à un point ou à un vecteur, et adapte sa méthode de calcul en conséquence !
+\end{warningblock}
+
+\subsection{Options et arguments}
+
+\begin{cautionblock}
+Concernant les arguments des commandes :
+
+\begin{itemize}
+	\item le premier argument, optionnel et entre \ctex{[...]} permet de spécifier la ou les caractéristiques de formatage des coordonnées, de manière globale ou individuelle, et de manière cohérente avec les options disponibles pour la commande de \textit{conversion en fraction} de \ctex{ProfLycee} :
+	\begin{itemize}
+		\item \Cle{d} : pour un formatage en \ctex{dfrac} si nécessaire ;
+		\item \Cle{t} : pour un formatage en \ctex{tfrac} si nécessaire ;
+		\item \Cle{n} : pour un formatage en \ctex{nicefrac} si nécessaire ;
+		\item \Cle{dec} : pour la forme décimale (brute) ;
+		\item \Cle{dec=k} : pour la forme décimale à $10^{-k}$.
+	\end{itemize}
+	Il est possible de spécifier des formatages différents en utilisant une \textit{liste} sous la forme \Cle{f1,f2} ou \Cle{f1,f2,f3} ;
+	\item l'argument \textit{optionnel} et entre \ctex{<...>} (uniquement pour les vecteurs !) permet de spécifier des options de type \textit{nicematrix} ;
+	\item l'argument obligatoire, et entre \ctex{\{...\}} est quant à lui la liste des coordonnées, en ligne et au format \textit{naturel xint}.
+\end{itemize}
+\vspace*{-\baselineskip}\leavevmode
+\end{cautionblock}
+
+\begin{noteblock}
+Il est donc possible de mettre des \textit{calculs} dans l'argument des coordonnées.
+
+Il suffit \textit{juste} d'utiliser une syntaxe compréhensible par les commandes du package \ctex{xint}.
+\end{noteblock}
+
+\begin{PresCodePL}{}
+%Point, avec affichage classique en dfrac
+$\AffPoint(1,2/3)$ \\
+%Point, avec affichage en décimal + dfrac + dfrac
+$\AffPoint[dec,d,d](-0.5,1,2/3)$ \\
+%Vecteurs, avec affichages classiques
+$\AffVecteur(1;2)$ et $\AffVecteur(1;2;3)$ \\
+%Vecteurs, avec option nicematrix et affichage en décimal + tfrac
+$\AffVecteur[dec;t]<cell-space-limits=2pt>(0.5;2/3)$ \\
+%Vecteurs, avec option nicematrix et affichage en décimal
+$\AffVecteur[dec]<cell-space-limits=2pt>(0.5;0.6;0.75)$ \\
+%Vecteurs, avec cacluls et affichage classique
+$\AffVecteur((2-(-3));(5-6);(1-1))$
+\end{PresCodePL}
+
+\newpage
+
+\section{Équation cartésienne d'un plan de l'espace}\label{eqcartplan}
+
+\subsection{Idée et commande}
+
+\begin{tipblock}
+\cmaj{2.6.4} L'idée est de proposer une commande pour déterminer une équation cartésienne d'un plan dans l'un des cas suivants :
+
+\begin{itemize}
+	\item en donnant un vecteur normal et un point ;
+	\item en donnant deux vecteurs directeurs et un point ;
+	\item en donnant trois points.
+\end{itemize}
+\vspace*{-\baselineskip}\leavevmode
+\end{tipblock}
+
+\begin{PresCodeTexPL}{listing only}
+%Avec un vecteur normal et un point
+\TrouveEqCartPlan[clés](vecteur normal)(point)
+%Avec deux vecteurs directeurs et un point
+\TrouveEqCartPlan[clés](vecteur dir1)(vecteur dir2)(point)
+%Avec trois points
+\TrouveEqCartPlan[clés](point1)(point2)(point3)
+\end{PresCodeTexPL}
+
+\subsection{Clés et arguments}
+
+\begin{cautionblock}
+Concernant les arguments des commandes :
+
+\begin{itemize}
+	\item le premier argument, optionnel et entre \ctex{[...]}  contient les clés :
+	\begin{itemize}
+		\item \Cle{OptionCoeffs} pour spécifier un formatage \textit{global} des coefficients ; \hfill{}défaut : \Cle{d}
+		\item \Cle{SimplifCoeffs} pour forcer des coefficients simples (entiers et premiers entre eux) ;
+		
+		\hfill{}défaut : \Cle{false}
+		\item \Cle{Facteur} pour spécifier un facteur personnalisé aux simplifications. \hfill{}défaut : \Cle{1}
+	\end{itemize}
+	\item les arguments suivants, entre \ctex{(...)} correspondent aux données utilisées (entre 2 et 3).
+\end{itemize}
+
+À noter que les séparateurs \ctex{,} ou \ctex{;} permettent de spécifier point ou vecteur.
+\end{cautionblock}
+
+\begin{PresCodePL}{}
+Une équation cartésienne du plan $\mathcal{P}$ de vecteur normal $\vec{n} \AffVecteur(1;2;3)$ et passant par le point A de coordonnées $\AffPoint(4,5,6)$ est $\mathcal{P}$ : $\TrouveEqCartPlan(1;2;3)(4,5,6)$
+\end{PresCodePL}
+
+\begin{PresCodePL}{}
+Une équation cartésienne du plan $\mathcal{P}$ de vecteur normal $\vec{n} \AffVecteur[n](1/2;2/3;3/5)$ et passant par le point A de coordonnées $\AffPoint(4,5,6)$ est $\mathcal{P}$ : $\TrouveEqCartPlan(1/2;2/3;3/5)(4,5,6) \Leftrightarrow \TrouveEqCartPlan[SimplifCoeffs](1/2;2/3;3/5)(4,5,6)$
+\end{PresCodePL}
+
+\begin{PresCodePL}{}
+Une équation cartésienne du plan $\mathcal{P}$ de vecteur normal $\vec{n} \AffVecteur[n](1;2/3;0)$ et passant par le point A de coordonnées $\AffPoint[dec,dec,d](0.75,0.56,1/3)$ est $\mathcal{P}$ :  $\TrouveEqCartPlan(1;2/3;0)(0.75,0.56,1/3) \Leftrightarrow  \TrouveEqCartPlan[SimplifCoeffs](1;2/3;0)(0.75,0.56,1/3)$
+\end{PresCodePL}
+
+\begin{PresCodePL}{}
+Une équation cartésienne du plan $\mathcal{P}_3$ passant par les points $A\AffPoint(2,0,1)$, $B\AffPoint(3,1,1)$ et $C\AffPoint(1,-2,0)$ est
+\[ \mathcal{P}_3 \text{ : } \TrouveEqCartPlan(2,0,1)(3,1,1)(1,-2,0)\]
+\end{PresCodePL}
+
+
+
+\begin{PresCodePL}{}
+Une équation cartésienne du plan $\mathcal{R}$ passant par le points $A\AffPoint(0,0,1)$, $B\AffPoint(4,2,3)$ et $C\AffPoint(-3,1,1)$ est
+\[ \mathcal{R} \text{ : } \TrouveEqCartPlan[SimplifCoeffs](0,0,1)(4,2,3)(-3,1,1)\]
+\[ \mathcal{R} \text{ : } \TrouveEqCartPlan[SimplifCoeffs,Facteur=-1](0,0,1)(4,2,3)(-3,1,1)\]
+\end{PresCodePL}
+
+\begin{PresCodePL}{}
+Une équation cartésienne du plan $\mathcal{P}_0$ dirigé par les vecteurs $\AffVecteur(9;7;-8)$ et $\AffVecteur(-2;2;-1)$ et passant par le point $A\AffPoint(5,1,-1)$ est :
+\[ \mathcal{P}_0 \text{ : } \TrouveEqCartPlan[SimplifCoeffs](9;7;-8)(-2;2;-1)(5,1,-1)\]
+\end{PresCodePL}
+
+\newpage
+
+\section{Équation paramétrique d'une droite de l'espace}\label{eqparamdroite}
+
+\subsection{Idée et commande}
+
+\begin{tipblock}
+\cmaj{2.6.4} L'idée est de proposer une commande pour déterminer un système d'équations paramétriques d'une droite de l'espace dans l'un des cas suivants :
+
+\begin{itemize}
+	\item en donnant un vecteur directeur et un point ;
+	\item en donnant deux points.
+\end{itemize}
+\vspace*{-\baselineskip}\leavevmode
+\end{tipblock}
+
+\begin{PresCodeTexPL}{listing only}
+%Avec un vecteur directeur et un point
+\TrouveEqParamDroite[clés](vecteur directeur)(point)
+%Avec deux points
+\TrouveEqParamDroite[clés](point1)(point2)
+\end{PresCodeTexPL}
+
+\subsection{Clés et arguments}
+
+\begin{cautionblock}
+Concernant les arguments des commandes :
+
+\begin{itemize}
+	\item le premier argument, optionnel et entre \ctex{[...]}  contient les clés :
+	\begin{itemize}
+		\item \Cle{OptionCoeffs} pour spécifier un formatage \textit{global} des coefficients ; \hfill{}défaut : \Cle{d}
+		\item \Cle{Reel} pour coder le paramètre réel ; \hfill{}défaut : \Cle{k}
+		\item le booléen \Cle{Oppose} pour utiliser plutôt l'opposé du vecteur directeur ; \hfill{}défaut : \Cle{false}
+		\item le booléen \Cle{Rgras} pour utiliser le symbole \textbf{R} ou lieu de $\mathbb{R}$ (si \ctex{amsfonts} est chargé !).
+		
+		\hfill{}défaut : \Cle{false}
+	\end{itemize}
+	\item les arguments suivants, entre \ctex{(...)} correspondent aux données utilisées.
+\end{itemize}
+
+À noter que les séparateurs \ctex{,} ou \ctex{;} permettent de spécifier point ou vecteur.
+\end{cautionblock}
+
+\begin{PresCodePL}{}
+Une équation paramétrique de la droite $(d)$ dirigée par le vecteur $\vec{u}\AffVecteur(2;5;-4)$ et passant par $A\AffPoint(-1,-1,-1)$ est
+\[ \TrouveEqParamDroite(2;5;-4)(-1,-1,-1) \]
+\end{PresCodePL}
+
+\begin{PresCodePL}{}
+Une équation paramétrique de la droite $(d)$ passant par $\AffPoint(2,5,-4)$ et $\AffPoint(-1,-1,-1)$ est
+\[ \TrouveEqParamDroite[Oppose](2,5,-4)(-1,-1,-1) \text{ ou } \TrouveEqParamDroite(2,5,-4)(-1,-1,-1) \]
+\end{PresCodePL}
+
+\begin{PresCodePL}{}
+Une équation paramétrique de la droite $(d)$ dirigée par le vecteur $\vec{u}\AffVecteur(0;-1;3)$ et passant par $O\AffPoint(0,0,0)$ est
+\[ \TrouveEqParamDroite(0;-1;3)(0,0,0) \]
+\end{PresCodePL}
+
+\begin{PresCodePL}{}
+Une équation paramétrique de la droite $(d)$ dirigée par le vecteur $\vec{u}\AffVecteur(-1;2;3)$ et passant par $A\AffPoint(2,0,-3)$ est
+\[ \TrouveEqParamDroite[Reel=\ell,Rgras](-1;2;3)(2,0,-3) \]
+\end{PresCodePL}
+
+\newpage
+
+\section{Équation cartésienne d'une droite du plan}\label{eqcartdroite}
+
+\subsection{Idée et commande}
+
+\begin{tipblock}
+\cmaj{2.6.4} L'idée est de proposer une commande pour déterminer une équation cartésienne d'une droite du plan dans l'un des cas suivants :
+
+\begin{itemize}
+	\item en donnant un vecteur directeur et un point ;
+	\item en donnant un vecteur normal et un point ;
+	\item en donnant deux points.
+\end{itemize}
+\vspace*{-\baselineskip}\leavevmode
+\end{tipblock}
+
+\begin{PresCodeTexPL}{listing only}
+%Avec un vecteur normal (choix par défaut) et un point
+\TrouveEqCartDroite[clés](vecteur normal)(point)
+%Avec un vecteur directeur et un point
+\TrouveEqCartDroite[clés,VectDirecteur](vecteur directeur)(point1)
+%Avec deux points
+\TrouveEqCartDroite[clés](point1)(point2)
+\end{PresCodeTexPL}
+
+\subsection{Clés et arguments}
+
+\begin{cautionblock}
+Concernant les arguments des commandes :
+
+\begin{itemize}
+	\item le premier argument, optionnel et entre \ctex{[...]}  contient les clés :
+	\begin{itemize}
+		\item \Cle{OptionCoeffs} pour spécifier un formatage \textit{global} des coefficients ; \hfill{}défaut : \Cle{d}
+		\item le booléen \Cle{SimplifCoeffs} pour forcer des coeffs simples (entiers et premiers entre eux) ;
+		
+		\hfill{}défaut : \Cle{false}
+		\item \Cle{Facteur} pour spécifier un facteur personnalisé aux simplifications ; \hfill{}défaut : \Cle{1}
+		\item le booléen \Cle{VectDirecteur} pour pour préciser que le vecteur utilisé est directeur.\hfill{}défaut : \Cle{false}
+	\end{itemize}
+	\item les arguments suivants, entre \ctex{(...)} correspondent aux données utilisées.
+\end{itemize}
+
+À noter que les séparateurs \ctex{,} ou \ctex{;} permettent de spécifier point ou vecteur.
+\end{cautionblock}
+
+\begin{PresCodePL}{}
+Une équation cartésienne de la droite $\mathcal{D}$ de vecteur normal $\vec{n} \AffVecteur(1;2)$ et passant par le point A de coordonnées $\AffPoint(4,5)$ est $\mathcal{D}$ : $\TrouveEqCartDroite[VectNormal](1;2)(4,5)$
+\end{PresCodePL}
+
+\begin{PresCodePL}{}
+Une équation cartésienne de la droite $\mathcal{D}$ de vecteur directeur $\vec{u} \AffVecteur[n](1/2;2/3)$ et passant par le point A de coordonnées $\AffPoint(5,6)$ est $\mathcal{D}$ : $\TrouveEqCartDroite[VectDirecteur](1/2;2/3)(5,6) \Leftrightarrow \TrouveEqCartDroite[SimplifCoeffs,VectDirecteur](1/2;2/3)(5,6) \Leftrightarrow \TrouveEqCartDroite[SimplifCoeffs,VectDirecteur,Facteur=-1](1/2;2/3)(5,6)$
+\end{PresCodePL}
+
+\begin{PresCodePL}{}
+Une équation cartésienne de la droite $\mathcal{D}$ passant par les points $\AffPoint(2,4)$ et $\AffPoint(-4,2)$ est \[\mathcal{D}  \text{ : } \TrouveEqCartDroite(2,4)(-4,2) \Leftrightarrow \TrouveEqCartDroite[SimplifCoeffs](2,4)(-4,2)\]
+\end{PresCodePL}
+
+\newpage
+
+\section{Distance d'un point à un plan}\label{distptplan}
+
+\subsection{Idée et commande}
+
+\begin{tipblock}
+\cmaj{2.6.4} L'idée est de proposer une commande pour déterminer la distance d'un point à un plan :
+
+\begin{itemize}
+	\item en donnant le point puis le plan défini par vecteur normal \&{} point ;
+	\item en donnant le point puis le plan défini par une équation cartésienne.
+\end{itemize}
+\vspace*{-\baselineskip}\leavevmode
+\end{tipblock}
+
+\begin{PresCodeTexPL}{listing only}
+%Avec le point et le plan via vect normal + point
+\TrouveDistancePtPlan(point)(vec normal du plan)(point du plan)
+%Avec le point et le plan via vect normal + point
+\TrouveDistancePtPlan(point)(équation cartésienne)
+\end{PresCodeTexPL}
+
+\begin{noteblock}
+Le résultat étant souvent écrit à l'aide d'une racine carrée, le code se charge de simplifier le résultat sous la forme $\frac{a\sqrt{n}}{b}$.
+
+Dans le cas où les coordonnées ne seraient pas rationnelles, le résultat risque de ne pas être conforme à celui attendu.
+\end{noteblock}
+
+\subsection{Clés et arguments}
+
+\begin{cautionblock}
+Concernant les arguments de cette commande :
+
+\begin{itemize}
+	\item si on travaille avec une équation cartésienne, elle est à donner sous la forme \ctex{ax+by+cz=0} ou \ctex{ax+by+cz}
+	\item les séparateurs \ctex{,} ou \ctex{;} permettent de spécifier point ou vecteur pour les arguments 1 et 3.
+\end{itemize}
+\vspace*{-\baselineskip}\leavevmode
+\end{cautionblock}
+
+\begin{PresCodePL}{}
+La distance entre le point $\AffPoint(1,2,3)$ et le plan de vecteur normal $\AffVecteur(-1;-2;3)$ et passant par $\AffPoint(5,0,2)$ vaut
+\[ d = \displaystyle\TrouveDistancePtPlan(1,2,3)(-1;-2;3)(5,0,2) \]
+\end{PresCodePL}
+
+\begin{PresCodePL}{}
+La distance entre le point $\AffPoint(1,2,3)$ et le plan d'équation $x+2y+2z-7=0$ vaut
+\[ d = \displaystyle\TrouveDistancePtPlan(1,2,3)(x+2y-2z+7) \]
+\end{PresCodePL}
+
+\begin{PresCodePL}{}
+La distance entre le point $\AffPoint(-7,0,4)$ et le plan d'équation $0,5x+2y-z-1=0$ vaut
+\[ d = \displaystyle\TrouveDistancePtPlan(-7,0,4)(0.5x+2y-z-1=0) \]
+\end{PresCodePL}
+
+\begin{PresCodePL}{}
+La distance entre le point $H\AffPoint(0,4,8)$ et le plan d'équation $-x+y+z-4=0$ vaut
+\[ d = \displaystyle\TrouveDistancePtPlan(0,4,8)(-x+y+z-4=0) \]
+\end{PresCodePL}
+
+\begin{PresCodePL}{}
+La distance entre le point $H\AffPoint(0,0,5)$ et le plan d'équation $z-1=0$ vaut
+\[ d = \displaystyle\TrouveDistancePtPlan(0,0,5)(z-1=0) \]
+\end{PresCodePL}
+
+\newpage
+
+\section{Équation réduite d'une droite du plan}\label{eqreduite}
+
+\subsection{Idée}
+
+\begin{tipblock}
+\cmaj{2.6.3} L'idée est de proposer une commande pour déterminer l'équation réduite d'une droite passant par deux points :
+\begin{itemize}
+	\item en traitant les cas particuliers \textit{horizontale}, \textit{verticale} ;
+	\item en affichant une méthode de résolution ;
+	\item en travaillant sous forme exacte fractionnaire (les racines carrées ou autres ne seront pas gérés).
+\end{itemize}
+
+À noter que les calculs et résultats sont traités par la commande de \textit{conversion de fraction} de \ctex{ProfLycee}.
+\end{tipblock}
+
+\begin{warningblock}
+La commande se charge de formater (normalement !) correctement les différentes étapes de calculs (il se peut quand même que cela puisse ne pas donner le résultat réellement escompté\ldots) :
+
+\begin{itemize}
+	\item en travaillant en fraction ;
+	\item en mettant les parenthèses nécessaires devant les éventuels nombres négatifs ;
+	\item en traitant les cas particuliers $m=\pm1$ et $b=0$.
+\end{itemize}
+\vspace*{-\baselineskip}\leavevmode
+\end{warningblock}
+
+\begin{PresCodeTexPL}{listing only}
+\EquationReduite[option]{A/xa/ya,B/xb/yb}
+\end{PresCodeTexPL}
+
+\subsection{Clés et arguments}
+
+\begin{cautionblock}
+Concernant le fonctionnement de la commande :
+
+\begin{itemize}
+	\item le premier argument, optionnel et entre \ctex{[...]} et valant \Cle{[d]} par défaut, permet de formater les fractions éventuelles en mode \ctex{\textbackslash displaystyle} ;
+	\item le second argument, obligatoire et entre \ctex{\{...\}}, permet de donner les coordonnées des points concernés.
+\end{itemize}
+\vspace*{-\baselineskip}\leavevmode
+\end{cautionblock}
+
+\begin{PresCodePL}{}
+\EquationReduite{C/2/0,D/-2/-8}
+\end{PresCodePL}
+
+\subsection{Exemples}
+
+\begin{PresCodePL}{}
+\EquationReduite{I/-4/5,J/-4/12}
+\end{PresCodePL}
+
+\begin{PresCodePL}{}
+\EquationReduite{U/-4/5,V/-4/5}
+\end{PresCodePL}
+
+\begin{PresCodePL}{}
+\EquationReduite{L/10/7,M/-2/7}
+\end{PresCodePL}
+
+\begin{PresCodePL}{}
+\EquationReduite{L/{1/3}/2.5,M/{-5/7}/{3/5}}
+\end{PresCodePL}
+
+\begin{PresCodePL}{}
+\EquationReduite{P/4/-4,Q/-2/2}
+\end{PresCodePL}
+
+\begin{PresCodePL}{}
+\EquationReduite{G/-4/5,H/10/4}
+\end{PresCodePL}
+
+\newpage
+
 \phantom{t}\par\vfill\par
 \begin{PART}
 	\begin{center}
@@ -4418,7 +4813,9 @@
 	\item \Cle{Epaisseur} qui est l'épaisseur des graduations ; \hfill~défaut \Cle{1pt}
 	\item \Cle{Police} qui est le style des labels des graduations ; \hfill~défaut \Cle{\textbackslash{}normalsize\textbackslash{}normalfont}
 	\item \Cle{PosGrad} qui est la position des graduations par rapport à l'axe ; \hfill~défaut \Cle{below} et \Cle{left}
-	\item \Cle{HautGrad} qui est la position des graduations (sous la forme \Cle{lgt} ou \Cle{lgta/lgtb}) ; \hfill~défaut \Cle{4pt}
+	\item \Cle{HautGrad} qui est la position des graduations (sous la forme \Cle{lgt} ou \Cle{lgta/lgtb}) ;
+	
+	\hfill~défaut \Cle{4pt}
 	\item le booléen \Cle{AffGrad} pour afficher les valeurs (formatés avec \ctex{num} donc dépendant de \ctex{sisetup}) des graduations  ; \hfill~défaut \Cle{true}
 	\item le booléen \Cle{AffOrigine} pour afficher la graduation de l'origine ; \hfill~défaut \Cle{true}
 	\item le booléen \Cle{Annee} qui permet de ne pas formater les valeurs des graduations (type \textsf{année}). \hfill~défaut \Cle{false}
@@ -4494,7 +4891,9 @@
 \begin{itemize}
 	\item \Cle{Taille} qui est la taille des points du nuage ; \hfill~défaut \Cle{2pt}
 	\item \Cle{Style} parmi \Cle{o} (rond) ou \Cle{x} (croix) ou \Cle{+} (plus) ; \hfill~défaut \Cle{o}
-	\item \Cle{Couleur} qui est la couleur (éventuellement \Cle{couleurA/couleurB} pour les ronds). \hfill~défaut \Cle{blue}
+	\item \Cle{Couleur} qui est la couleur (éventuellement \Cle{couleurA/couleurB} pour les ronds).
+	
+	\hfill~défaut \Cle{blue}
 \end{itemize}
 \vspace*{-\baselineskip}\leavevmode
 \end{cautionblock}
@@ -4502,14 +4901,12 @@
 \begin{PresCodeTexPL}{listing only}
 \def\LLX{1994,1995,1996,1997,1998,1999,2000,2001,2002,2004,2005,2006,2007,2008, 2009,2010}
 \def\LLY{1718,1710,1708,1700,1698,1697,1691,1688,1683,1679,1671,1670,1663,1661, 1656,1649}
+\end{PresCodeTexPL}
 
+\begin{PresCodeTexPL}{listing only}
 \begin{tikzpicture}[...]
 	\NuagePointsTikz[Couleur=blue/red]{\LLX}{\LLY}
 \end{tikzpicture}
-~~
-\begin{tikzpicture}[...]
-	\NuagePointsTikz[Couleur=ForestGreen,Style=x,Taille=6pt]{\LLX}{\LLY}
-\end{tikzpicture}
 \end{PresCodeTexPL}
 
 \begin{PresCodeSortiePL}{text only}
@@ -4523,7 +4920,19 @@
 	\AxeyTikz{1640,1650,...,1720}
 	\NuagePointsTikz[Couleur=blue/red]{\LLX}{\LLY}
 \end{tikzpicture}
+\end{PresCodeSortiePL}
 
+\begin{PresCodeTexPL}{listing only}
+\begin{tikzpicture}[...]
+	\NuagePointsTikz[Couleur=ForestGreen,Style=x,Taille=6pt]{\LLX}{\LLY}
+\end{tikzpicture}
+\end{PresCodeTexPL}
+
+\begin{PresCodeSortiePL}{text only}
+\def\LLX{1994,1995,1996,1997,1998,1999,2000,2001,2002,2004,2005,2006,2007,2008,2009,2010}
+\def\LLY{1718,1710,1708,1700,1698,1697,1691,1688,1683,1679,1671,1670,1663,1661,1656,1649}
+\CalculsRegLin{\LLX}{\LLY}
+
 \begin{tikzpicture}[x=0.35cm,y=0.07cm,Ox=1992,xmin=1992,xmax=2012,xgrille=2,xgrilles=1,Oy=1640,ymin=1640,ymax=1730,ygrille=10,ygrilles=5]
 	\GrilleTikz \AxesTikz
 	\AxexTikz[Annee,Police=\small]{1992,1994,...,2010}
@@ -4711,7 +5120,9 @@
 	\item le booléen \Cle{AffMoyenne} qui permet d'afficher ou non la moyenne (sous forme d'un point) ;
 	
 	\hfill~défaut \Cle{false}
-	\item le booléen \Cle{Pointilles} qui permet d'afficher des pointillés au niveau des paramètres ; \hfill~défaut \Cle{false}
+	\item le booléen \Cle{Pointilles} qui permet d'afficher des pointillés au niveau des paramètres ;
+	
+	\hfill~défaut \Cle{false}
 	\item le booléen \Cle{Valeurs} qui permet d'afficher les valeurs des paramètres au niveau des abscisses.
 	
 	\hfill~défaut \Cle{false}
@@ -5452,7 +5863,9 @@
 \begin{itemize}
 	\item les versions étoilées ne formatent pas le résultat grâce à \ctex{\textbackslash num} de \ctex{sinuitx} ;
 	\item le booléen \Cle{Notation} pour avoir la notation au début ; \hfill~défaut \Cle{false}
-	\item le booléen \Cle{NotationAncien} pour avoir la notation \og ancienne \fg{} des combinaisons au début ; \hfill~défaut \Cle{false}
+	\item le booléen \Cle{NotationAncien} pour avoir la notation \og ancienne \fg{} des combinaisons au début ;
+	
+	\hfill~défaut \Cle{false}
 	\item le booléen \Cle{Formule} permet de présenter la formule avant le résultat ;
 	
 	\hfill~défaut \Cle{false}
@@ -5857,8 +6270,6 @@
 \PresentationPGCD[CouleurResultat]{150}{27}
 \end{PresCodePL}
 
-\pagebreak
-
 \begin{PresCodePL}{}
 \PresentationPGCD[CouleurResultat,Couleur=ForestGreen]{1250}{450}.
 
@@ -5887,6 +6298,77 @@
 
 \newpage
 
+\section{Résolution d'une équation diophantienne}\label{eqdioph}
+
+\subsection{Idée}
+
+\begin{tipblock}
+L'idée est de proposer une résolution d'équation diophantienne du type $ax+by=c$ avec $(a;b;c) \in \mathbb{Z}^3$.
+
+\smallskip
+
+Le \textit{code} se charge de tester les différentes conditions d'existence, et d'adapter la rédaction (fixée et non modifiable\ldots) aux différentes situations :
+
+\begin{itemize}
+	\item cas où $\text{PGCD}(a;b)=1$ ;\hfill~existence de solutions
+	\item cas où $\text{PGCD}(a;b) \neq 1$ et $\text{PGCD}(a;b) \mid c$;\hfill~existence de solutions
+	\item cas où $\text{PGCD}(a;b) \neq 1$ et $\text{PGCD}(a;b) \not\mid c$.\hfill~pas de solution
+\end{itemize}
+\vspace*{-\baselineskip}\leavevmode
+\end{tipblock}
+
+\begin{warningblock}
+Logiquement le \textit{code} se charge de \textit{parenthéser} de manière automatique pour les nombres négatifs, mais il se peut que certains cas particuliers puissent donner des résultats \og non esthétiques \fg{}\ldots
+\end{warningblock}
+
+\begin{PresCodeTexPL}{listing only}
+\EquationDiophantienne[Clés]{equation}
+\end{PresCodeTexPL}
+
+\subsection{Options et clés}
+
+\begin{cautionblock}
+Concernant les Clés disponibles pour cette commande, à donner entre \ctex{[...]} :
+
+\begin{itemize}
+	\item la clé \Cle{Lettre} pour spécifier le \textit{nom} de l'équation ; \hfill{}défaut \Cle{E}
+	\item la clé \Cle{Inconnues} qui paramètre les noms des inconnues, sous la forme \Cle{x/y} ; \hfill{}défaut \Cle{x/y}
+	\item la clé \Cle{Entier} qui gère le nom de l'entier dans la solution ; \hfill{}défaut \Cle{k}
+	\item le booléen \Cle{Cadres} pour mettre en valeur les solutions ;\hfill{}défaut \Cle{false}
+	\item le booléen \Cle{PresPGCD} présenter le calcul du PGCD de $|a|$ et de $|b|$.\hfill{}défaut \Cle{true}
+\end{itemize}
+
+L'argument obligatoire, et entre \ctex{\{...\}} est quant à lui l'équation, en langage \og naturel \fg{} du type \ctex{ax+by=c} (le \textit{code} se charge d'extraire les coefficients, donc pas besoin des signes *).
+\end{cautionblock}
+
+\begin{PresCodePL}{}
+\EquationDiophantienne{48x+18y=3}
+\end{PresCodePL}
+
+\begin{PresCodePL}{}
+\EquationDiophantienne[PresPGCD=false]{48x+18y=-5}
+\end{PresCodePL}
+
+\pagebreak
+
+\begin{PresCodePL}{}
+\EquationDiophantienne{3x+4y=1}
+\end{PresCodePL}
+
+\pagebreak
+
+\begin{PresCodePL}{}
+\EquationDiophantienne[Cadres,Inconnues=u/v,Entier=l]{48u+18v=12}
+\end{PresCodePL}
+
+\pagebreak
+
+\begin{PresCodePL}{}
+\EquationDiophantienne{47x-18y=1}
+\end{PresCodePL}
+
+\newpage
+
 \phantom{t}\par\vfill\par
 \begin{PART}
 	\begin{center}
@@ -6567,6 +7049,12 @@
 
 \part{Historique}
 
+{\small \bverb|v 2.6.4|~:~~~~Résolution d'une équation diophantienne $ax+by=c$ (page \pageref{eqdioph})
+
+{\small \bverb|       |~:~~~~Correction de bugs mineurs
+
+{\small \bverb|       |~:~~~~Ajout de commandes en géométrie analytique (pages \pageref{affcoord} et \pageref{eqcartplan} et \pageref{eqparamdroite} et \pageref{eqcartdroite} et \pageref{distptplan})
+
 {\small \bverb|v 2.6.3|~:~~~~Ajout d'une commande pour déterminer une équation réduite (page \pageref{eqreduite})
 
 {\small \bverb|v 2.6.2|~:~~~~Ajout d'une clé [AffTraitsEq] pour les équations trigo (page \pageref{cercletrigo})

Modified: trunk/Master/texmf-dist/tex/latex/proflycee/ProfLycee.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/proflycee/ProfLycee.sty	2023-05-20 20:18:42 UTC (rev 67171)
+++ trunk/Master/texmf-dist/tex/latex/proflycee/ProfLycee.sty	2023-05-20 20:18:53 UTC (rev 67172)
@@ -3,8 +3,9 @@
 % or later, see http://www.latex-project.org/lppl.txtf
 
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{ProfLycee}[2023/05/09 2.6.3 Aide pour l'utilisation de LaTeX en lycee]
-% 2.6.3	Ajout d'une commande pour l'équation affine d'une droite passant par deux points
+\ProvidesPackage{ProfLycee}[2023/05/19 2.6.4 Aide pour l'utilisation de LaTeX en lycee]
+% 2.6.4	Correction d'un dysfonctionnement avec les racines (oubli du \num) + Equation diophantienne ax+by=c + Eq cartésiennes (plan & droite) + Corrections de bugs mineurs
+% 2.6.3	Ajout d'une commande pour rédiger l'obtention de l'équation affine d'une droite passant par deux points
 % 2.6.2	Correction de commandes pour la pseudo3d + nouvelle clé pour la trigo
 % 2.6.1	Ajout de commandes pour du calcul intégral (valeur approchée + tikz)
 % 2.6.0	Ajout d'une clé [Brut] pour les mesures principales + commande calcul ligne trigo

Modified: trunk/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-aleatoire.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-aleatoire.tex	2023-05-20 20:18:42 UTC (rev 67171)
+++ trunk/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-aleatoire.tex	2023-05-20 20:18:53 UTC (rev 67172)
@@ -25,7 +25,7 @@
 	\setKV[kvensemble]{#1}%
 	\ifboolKV[kvensemble]{Mathpunct}%
 		{\left\lbrace \PLensopt{} \mathpunct{} \StrSubstitute{#2}{/}{\mathpunct{}{\PLenssep}\mathpunct{}} \mathpunct{} \right\rbrace}%
-		{\left\lbrace \PLensopt{} \StrSubstitute{#2}{/}{{\PLenssep}} \right\rbrace}
+		{\left\lbrace \PLensopt{} \StrSubstitute{#2}{/}{{\PLenssep}} \right\rbrace}%
 }
 
 %%------TRINOMEALEA

Modified: trunk/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-analyse.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-analyse.tex	2023-05-20 20:18:42 UTC (rev 67171)
+++ trunk/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-analyse.tex	2023-05-20 20:18:53 UTC (rev 67172)
@@ -334,7 +334,7 @@
 		\ensuremath{\frac{%
 			\xintifboolexpr{\RacNumSimpl == 1 && \RacRacSimpl == 1}%
 			{1}%
-			{ \xintifboolexpr{\RacNumSimpl == 1}{}{\RacNumSimpl} \xintifboolexpr{\RacRacSimpl == 1}{}{\sqrt{\RacRacSimpl}} }%
+			{ \xintifboolexpr{\RacNumSimpl == 1}{}{\RacNumSimpl} \xintifboolexpr{\RacRacSimpl == 1}{}{\sqrt{\num{\RacRacSimpl}}} }%
 			}%
 			{ \RacDenomSimpl }}%
 	}%

Modified: trunk/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-arithm.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-arithm.tex	2023-05-20 20:18:42 UTC (rev 67171)
+++ trunk/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-arithm.tex	2023-05-20 20:18:53 UTC (rev 67172)
@@ -16,12 +16,12 @@
 \NewDocumentCommand\ConversionDecBin{ s O{} m }{%
 	\useKVdefault[CONVDECBIN]
 	\setKV[CONVDECBIN]{#2}% on paramètres les nouvelles clés et on les simplifie
-	\def\resbrut{\xintDecToBin{#3}}
-	\StrLen{\resbrut}[\nbchiffres]
-	\def\nbgrp{\fpeval{4*ceil(\nbchiffres/4,0)}}
-	\IfBooleanTF{#1}
-		{\num{#3}\ifboolKV[CONVDECBIN]{AffBase}{_{10}}{}=\num[digit-group-size=4]{\resbrut}\ifboolKV[CONVDECBIN]{AffBase}{_{2}}{}}
-		{\num{#3}\ifboolKV[CONVDECBIN]{AffBase}{_{10}}{}=\num[digit-group-size=4,minimum-integer-digits=\nbgrp]{\resbrut}\ifboolKV[CONVDECBIN]{AffBase}{_{2}}{}}
+	\def\resbrut{\xintDecToBin{#3}}%
+	\StrLen{\resbrut}[\nbchiffres]%
+	\def\nbgrp{\fpeval{4*ceil(\nbchiffres/4,0)}}%
+	\IfBooleanTF{#1}%
+		{\num{#3}\ifboolKV[CONVDECBIN]{AffBase}{_{10}}{}=\num[digit-group-size=4]{\resbrut}\ifboolKV[CONVDECBIN]{AffBase}{_{2}}{}}%
+		{\num{#3}\ifboolKV[CONVDECBIN]{AffBase}{_{10}}{}=\num[digit-group-size=4,minimum-integer-digits=\nbgrp]{\resbrut}\ifboolKV[CONVDECBIN]{AffBase}{_{2}}{}}%
 }
 
 \setKVdefault[CONVBINHEX]{%
@@ -43,35 +43,35 @@
 
 %la conversion complète
 \newcommand\ConversionBinHex[2][]{%
-	\useKVdefault[CONVBINHEX]
+	\useKVdefault[CONVBINHEX]%
 	\setKV[CONVBINHEX]{#1}% on paramètres les nouvelles clés et on les simplifie
-	\def\chbrut{#2}
+	\def\chbrut{#2}%
 	\StrLen{\chbrut}[\nbchiffres] %nb de chiffres du binaire
 	\xdef\nbgrp{\fpeval{4*ceil(\nbchiffres/4,0)}} %nb de chiffres avec blocs de 4
 	\xdef\nbblocs{\fpeval{\nbgrp/4}} %nb de blocs
 	%on rajoute des zeros si besoin := OK
-	\xdef\resinter{\chbrut}
-	\num[digit-group-size=4]{\chbrut}\ifboolKV[CONVBINHEX]{AffBase}{_{2}}{}=
+	\xdef\resinter{\chbrut}%
+	\num[digit-group-size=4]{\chbrut}\ifboolKV[CONVBINHEX]{AffBase}{_{2}}{}=%
 	\ifboolKV[CONVBINHEX]{Details}{%
-	\ifnum\nbchiffres<\nbgrp
-		\xdef\nbz{\inteval{\nbgrp-\nbchiffres}}
-		\xdef\resinter{\PLstrzeros{\nbz}\chbrut}
-		\num[digit-group-size=4,minimum-integer-digits=\nbgrp]{\resinter}=
-	\fi
+	\ifnum\nbchiffres<\nbgrp%
+		\xdef\nbz{\inteval{\nbgrp-\nbchiffres}}%
+		\xdef\resinter{\PLstrzeros{\nbz}\chbrut}%
+		\num[digit-group-size=4,minimum-integer-digits=\nbgrp]{\resinter}=%
+	\fi%
 	%découpage par blocs et conversion en hexa := OK
-	\newcount\cpt
-	\cpt0
-	\loop\ifnum \cpt<\nbblocs
+	\newcount\cpt%
+	\cpt0%
+	\loop\ifnum \cpt<\nbblocs%
 		\def\iinit{\fpeval{4*\cpt+1}}%
 		\def\ifinal{\fpeval{4*(\cpt+1)}}%
 		\StrMid{\resinter}{\iinit}{\ifinal}[\blocinter]%
-		{\underbracket{\blocinter}_{\xintBinToHex{\blocinter}}\,}
-		\advance\cpt by 1
-	\repeat
-	\!=
+		{\underbracket{\blocinter}_{\xintBinToHex{\blocinter}}\,}%
+		\advance\cpt by 1%
+	\repeat%
+	\!=%
 	}%
-	{}
-	\xintBinToHex{\chbrut}\ifboolKV[CONVBINHEX]{AffBase}{_{16}}{}
+	{}%
+	\xintBinToHex{\chbrut}\ifboolKV[CONVBINHEX]{AffBase}{_{16}}{}%
 }
 
 %hexa/bin->dec avec écriture polynomiale
@@ -94,62 +94,62 @@
 \newcommand\ConversionVersDec[2][]{%
 	\useKVdefault[CONVTODEC]
 	\setKV[CONVTODEC]{#1}% on paramètres les nouvelles clés et on les simplifie
-	\def\nbdepart{#2}
-	\StrLen{\nbdepart}[\nbchiffres]
-	\StrChar{\nbdepart}{1}[\chiffre]
+	\def\nbdepart{#2}%
+	\StrLen{\nbdepart}[\nbchiffres]%
+	\StrChar{\nbdepart}{1}[\chiffre]%
 	%si on est en base 16
 	\xintifboolexpr{\basedepart == 16}%
 	{%
-		\nbdepart\ifboolKV[CONVTODEC]{AffBase}{_{\basedepart}}{} =
+		\nbdepart\ifboolKV[CONVTODEC]{AffBase}{_{\basedepart}}{} =%
 		\ifboolKV[CONVTODEC]{Details}{%
 			\xintHexToDec{\chiffre}\times\basedepart^{\inteval{\nbchiffres-1}}%
-			\newcount\cpt
-			\cpt2
-			\loop\ifnum \cpt<\inteval{\nbchiffres+1}
-				\def\puiss{\inteval{\nbchiffres-\cpt}}
-				\StrChar{\nbdepart}{\cpt}[\chiffre]
+			\newcount\cpt%
+			\cpt2%
+			\loop\ifnum \cpt<\inteval{\nbchiffres+1}%
+				\def\puiss{\inteval{\nbchiffres-\cpt}}%
+				\StrChar{\nbdepart}{\cpt}[\chiffre]%
 				\ifboolKV[CONVTODEC]{Zeros}%
 					{%
 						+\xintHexToDec{\chiffre}\times\basedepart^{\puiss}%
-					}
-					{
-						\ifnum\xintHexToDec{\chiffre} > 0
+					}%
+					{%
+						\ifnum\xintHexToDec{\chiffre} > 0%
 							+\xintHexToDec{\chiffre}\times\basedepart^{\puiss}%
-						\fi
-					}
-				\advance\cpt by 1
-			\repeat
-			=
-			}
-			{}
-		\num{\xintHexToDec{\nbdepart}}\ifboolKV[CONVTODEC]{AffBase}{_{10}}{}
+						\fi%
+					}%
+				\advance\cpt by 1%
+			\repeat%
+			=%
+			}%
+			{}%
+		\num{\xintHexToDec{\nbdepart}}\ifboolKV[CONVTODEC]{AffBase}{_{10}}{}%
 	}%
-	{}
+	{}%
 	\xintifboolexpr{\basedepart == 2}%
 	{%
-		\num[digit-group-size=4]{\nbdepart}\ifboolKV[CONVTODEC]{AffBase}{_{\basedepart}}{} =
+		\num[digit-group-size=4]{\nbdepart}\ifboolKV[CONVTODEC]{AffBase}{_{\basedepart}}{} =%
 		\ifboolKV[CONVTODEC]{Details}{%
 			\chiffre\times\basedepart^{\inteval{\nbchiffres-1}}%
-			\newcount\cpt
-			\cpt2
-			\loop\ifnum \cpt<\inteval{\nbchiffres+1}
-				\def\puiss{\inteval{\nbchiffres-\cpt}}
-				\StrChar{\nbdepart}{\cpt}[\chiffre]
+			\newcount\cpt%
+			\cpt2%
+			\loop\ifnum \cpt<\inteval{\nbchiffres+1}%
+				\def\puiss{\inteval{\nbchiffres-\cpt}}%
+				\StrChar{\nbdepart}{\cpt}[\chiffre]%
 				\ifboolKV[CONVTODEC]{Zeros}%
 				{%
 					+\chiffre\times\basedepart^{\puiss}%
 				}
 				{
-					\ifnum\chiffre > 0
+					\ifnum\chiffre > 0%
 						+\chiffre\times\basedepart^{\puiss}%
-					\fi
-				}
-			\advance\cpt by 1
-			\repeat
-			=
-			}
-			{}
-		\num{\xintBinToDec{\nbdepart}}\ifboolKV[CONVTODEC]{AffBase}{_{10}}{}
+					\fi%
+				}%
+			\advance\cpt by 1%
+			\repeat%
+			=%
+			}%
+			{}%
+		\num{\xintBinToDec{\nbdepart}}\ifboolKV[CONVTODEC]{AffBase}{_{10}}{}%
 	}%
 	{}%
 }
@@ -157,30 +157,30 @@
 \newcommand\ConversionBaseDix[3][]{%1=options,%2=nb,%3=basedep ??
 	\useKVdefault[CONVTODEC]
 	\setKV[CONVTODEC]{#1}% on paramètres les nouvelles clés et on les simplifie
-	\def\NBdepart{#2}
-	\def\basedepart{#3}
-	\StrLen{\NBdepart}[\nbchiffres]
-	\StrChar{\NBdepart}{1}[\chiffre]
-	\NBdepart\ifboolKV[CONVTODEC]{AffBase}{_{\basedepart}}{} =
+	\def\NBdepart{#2}%
+	\def\basedepart{#3}%
+	\StrLen{\NBdepart}[\nbchiffres]%
+	\StrChar{\NBdepart}{1}[\chiffre]%
+	\NBdepart\ifboolKV[CONVTODEC]{AffBase}{_{\basedepart}}{} =%
 	\ifboolKV[CONVTODEC]{Details}{%
 		\xintHexToDec{\chiffre}\times\basedepart^{\inteval{\nbchiffres-1}}%
-		\newcount\cpt
-		\cpt2
-		\loop\ifnum \cpt<\inteval{\nbchiffres+1}
-			\def\puiss{\inteval{\nbchiffres-\cpt}}
-			\StrChar{\NBdepart}{\cpt}[\chiffre]
+		\newcount\cpt%
+		\cpt2%
+		\loop\ifnum \cpt<\inteval{\nbchiffres+1}%
+			\def\puiss{\inteval{\nbchiffres-\cpt}}%
+			\StrChar{\NBdepart}{\cpt}[\chiffre]%
 			\ifboolKV[CONVTODEC]{Zeros}%
 				{%
 					+\xintHexToDec{\chiffre}\times\basedepart^{\puiss}%
-				}
-				{
-					\ifnum\xintHexToDec{\chiffre} > 0
+				}%
+				{%
+					\ifnum\xintHexToDec{\chiffre} > 0%
 						+\xintHexToDec{\chiffre}\times\basedepart^{\puiss}%
-					\fi
-				}
-			\advance\cpt by 1
-		\repeat
-		=
+					\fi%
+				}%
+			\advance\cpt by 1%
+		\repeat%
+		=%
 		}%
 		{}%
 	\num{\convertbasetobasedix{#2}{#3}}\ifboolKV[CONVTODEC]{AffBase}{_{10}}{}%
@@ -231,7 +231,7 @@
 			}
 			%dernière
 			\xdef\ValQ{\fpeval{trunc(\ValTMP/#3,0)}}\xdef\ValR{\fpeval{\ValTMP-#3*\ValQ}}%
-			\\ \num{\ValTMP}\uppercase{&}\num{\ValB}\times\num{\ValQ}\uppercase{&}\PLnoeud{\PLConvNoeud2}{\num{\ValR}}
+			\\ \num{\ValTMP}\uppercase{&}\num{\ValB}\times\num{\ValQ}\uppercase{&}\PLnoeud{\PLConvNoeud2}{\num{\ValR}}%
 		\end{array} \right| \Rightarrow \num{#2}_{10}=\ifboolKV[convfromten]{CouleurRes}{\mathcolor{\PLConvCouleur}{\convertbasedixtobase{#2}{#3}_{#3}}}{\convertbasedixtobase{#2}{#3}_{#3}}}%
 	\ifboolKV[convfromten]{Rect}%
 	{%
@@ -263,6 +263,8 @@
 	AfficheDelimiteurs=true
 }
 
+\RequirePackage{xintgcd}
+
 \newcommand\PresentationPGCD[3][]{%
 	\useKVdefault[prespgcd]%
 	\setKV[prespgcd]{#1}%
@@ -274,7 +276,7 @@
 		{}%
 		\begin{array}{@{\,}r@{\;=\;}l@{\;+\;}r}
 			%1ère division
-			\xdef\ValQ{\fpeval{trunc(\ValA/\ValB,0)}}\xdef\ValR{\fpeval{\ValA-\ValB*\ValQ}}
+			\xdef\ValQ{\fpeval{trunc(\ValA/\ValB,0)}}\xdef\ValR{\fpeval{\ValA-\ValB*\ValQ}}%
 			\num{\ValA}\uppercase{&}\num{\ValB}\times\num{\ValQ}\uppercase{&}%
 			\xintifboolexpr{\ValR == \respgcd}%
 			{\PLnoeud{\PLPGCDNoeud1}{\num{\ValR}}}%noeud si c'est le pgcd
@@ -308,4 +310,150 @@
 	}{}%
 }
 
+%%===égalité de Bezout
+\NewDocumentCommand\AffCoeffBezout{ m }{%
+	\xintifboolexpr{#1 < 0}%
+		{\left( \num{#1} \right)}%
+		{\num{#1}}%
+}
+\NewDocumentCommand\EgaliteBezout{ O{black} m m }{%
+	\xintAssign{\xintBezout{#2}{#3}}\to\TmpU\TmpV\TmpD%
+	\ensuremath{\num{#2} \times \mathcolor{#1}{\AffCoeffBezout{\TmpU}} + \AffCoeffBezout{#3} \times \mathcolor{#1}{\AffCoeffBezout{\TmpV}} = \num{\TmpD}}%
+}
+
+%%===Équations diophantiennes
+\RequirePackage{cancel}
+\NewDocumentCommand\AffCoeffDioph{ m }{%
+	\xintifboolexpr{#1 < 0}%
+		{\left( \num{#1} \right)}%
+		{\num{#1}}%
+}
+\NewDocumentCommand\AffCoeffDiophSign{ m }{%
+	\xintifboolexpr{#1 < 0}%
+		{\num{#1}}%
+		{+\num{#1}}%
+}
+
+\defKV[eqdioph]{%
+	Lettre=\def\LettreSolEDioph{#1},%
+	Couleur=\def\CouleurSolEDioph{#1},%
+	Inconnues=\def\InconnuesSolEDioph{#1},%
+	Entier=\def\KKK{#1}
+}
+
+\setKVdefault[eqdioph]{%
+	Lettre=E,%
+	Couleur=black,%
+	Inconnues=x/y,%
+	Entier=k,%
+	Cadres=false,%
+	PresPGCD=true
+}
+
+\NewDocumentCommand\EquationDiophantienne{ O{} m }{%v2 avec équation en "dur"
+	\useKVdefault[eqdioph]%
+	\setKV[eqdioph]{#1}%
+	\setlength{\parindent}{0pt}%
+	%extractions des paramètres
+	\StrBefore[1]{\InconnuesSolEDioph}{/}[\XXX]%
+	\StrBehind[1]{\InconnuesSolEDioph}{/}[\YYY]%
+	\StrBefore{#2}{\XXX}[\AA]%
+	\StrBetween{#2}{\XXX}{\YYY}[\BB]%
+	\StrBehind{#2}{=}[\CC]%
+	\IfStrEq{\AA}{}%
+		{\def\AA{1}}{}%
+	\IfStrEq{\AA}{-}%
+		{\def\AA{-1}}{}%
+	\StrLen{\BB}[\lgtB]%
+	\xintifboolexpr{ \lgtB > 1 }%+b ou -b
+		{%
+			\StrDel{\BB}{+}[\BB]%
+		}%
+		{%
+			\IfStrEq{\BB}{-}%
+				{\def\BB{-1}}{}%
+			\IfStrEq{\BB}{+}%
+				{\def\BB{1}}{}%
+		}%
+	%Calcul du PGCD
+	\xdef\PGCDD{\xinteval{gcd(\AA,\BB)}}%
+	On cherche à résoudre l'équation diophantienne :\[ \num{\AA}\XXX + \AffCoeffDioph{\BB}\YYY=\num{\CC} \xintifboolexpr{ \PGCDD == 1 'or' \xintiiRem{\CC}{\PGCDD} != 0 }{\qquad (\LettreSolEDioph)}{} \]%
+	\ifboolKV[eqdioph]{PresPGCD}%
+		{D'après l'algorithme d'Euclide : \PresentationPGCD[Rectangle=false]{\xinteval{abs(\AA)}}{\xinteval{abs(\BB)}}.}%
+		{Le PGCD de \num{\AA} et de \num{\BB} vaut \num{\PGCDD}.}%
+	\par\smallskip
+	\xintifboolexpr{ \xintiiRem{\CC}{\PGCDD} == 0 }%solutions obligatoires
+		{%
+			\xintifboolexpr{ \PGCDD == 1}%
+				{%
+					Les entiers \num{\xinteval{abs(\AA)}} et \num{\xinteval{abs(\BB)}} sont premiers entre eux, donc l'équation $(\LettreSolEDioph)$ admet une infinité de solutions.\par
+					\xdef\AAA{\AA}\xdef\BBB{\BB}\xdef\CCC{\CC}%
+				}%
+				{%
+					Le PGCD de \num{\AA} et \num{\BB} divise \num{\CC}, donc on peut simplifier l'équation diophantienne par \num{\PGCDD}.%
+					\xdef\AAA{\xintiieval{\AA/\PGCDD}}\xdef\BBB{\xintiieval{\BB/\PGCDD}}\xdef\CCC{\xintiieval{\CC/\PGCDD}}%
+					%
+					\[ \num{\AA}\XXX+\AffCoeffDioph{\BB}\YYY=\num{\CC} \underset{\div\num{\PGCDD}}{\Longleftrightarrow} \num{\AAA}\XXX+\AffCoeffDioph{\BBB}\YYY=\num{\CCC} \qquad (\LettreSolEDioph) \]%
+					Les entiers \num{\AAA} et \num{\BBB} sont premiers entre eux, donc l'équation $(\LettreSolEDioph)$ admet une infinité de solutions.\par
+				}%
+			\xintAssign{\xintBezout{\AAA}{\BBB}}\to\TmpU\TmpV\TmpD
+			%
+			On détermine une solution particulière de $(E)$ : \[ \num{\AAA} \times \mathcolor{\CouleurSolEDioph}{\AffCoeffBezout{\TmpU}} + \AffCoeffBezout{\BBB} \times \mathcolor{\CouleurSolEDioph}{\AffCoeffBezout{\TmpV}} = \num{\TmpD}
+			\xintifboolexpr{ \CCC != 1}%
+				{%
+					\underset{\times\AffCoeffDioph{\CCC}}{\implies}
+					\num{\AAA} \times \mathcolor{\CouleurSolEDioph}{\AffCoeffDioph{\xinteval{\TmpU*\CCC}}} + \AffCoeffBezout{\BBB} \times \mathcolor{\CouleurSolEDioph}{\AffCoeffDioph{\xinteval{\TmpV*\CCC}}} = \num{\CCC}
+				}%
+				{}%
+				\qquad ({\LettreSolEDioph}_0)
+			 \]%
+			%
+			Par soustraction :
+			%
+			\[%
+			{\renewcommand\arraystretch{1.25}%
+				\begin{array}{ @{\,} c @{\,} c @{\;\times\;} c @{\;+\;} c @{\;\times\;} c @{\;=\;} c }
+					& \num{\AAA} & \XXX & \AffCoeffDioph{\BBB} & \YYY & \num{\CCC} \\
+					-~~~~~ & \num{\AAA} & \mathcolor{\CouleurSolEDioph}{\AffCoeffDioph{\xinteval{\TmpU*\CCC}}} & \AffCoeffDioph{\BBB} & \mathcolor{\CouleurSolEDioph}{\AffCoeffDioph{\xinteval{\TmpV*\CCC}}} & \num{\CCC} \\ \hline
+					& \num{\AAA} & \left( \XXX \mathcolor{\CouleurSolEDioph}{\AffCoeffDiophSign{\xinteval{-\TmpU*\CCC}}} \right)& \AffCoeffDioph{\BBB} & \left( \YYY \mathcolor{\CouleurSolEDioph}{\AffCoeffDiophSign{\xinteval{-\TmpV*\CCC}}} \right) & 0\\
+				\end{array}}
+			\]%
+			\xdef\TmpPartieA{\XXX \mathcolor{\CouleurSolEDioph}{\AffCoeffDiophSign{\xinteval{-\TmpU*\CCC}}}}%
+			\xdef\TmpPartieB{\YYY \mathcolor{\CouleurSolEDioph}{\AffCoeffDiophSign{\xinteval{-\TmpV*\CCC}}}}%
+			%
+			On en déduit que $\num{\AAA} \times \underbrace{\left( \TmpPartieA \right)}_{\text{entier}} = \num{\xinteval{-\BBB}} \times \left( \TmpPartieB \right)$, et donc que $\num{\AAA} \mid \num{\xinteval{-\BBB}} \times \left( \TmpPartieB \right)$.\par\smallskip
+			Or \num{\xinteval{abs(\AAA)}} et \num{\xinteval{abs(\BBB)}} sont premiers entre eux, donc d'après le théorème de Gauss, on a $\num{\AAA} \mid \TmpPartieB$.\par
+			Il existe donc un entier $\KKK$ tel que $\TmpPartieB = \num{\AAA} \times \KKK$, ce qui donne 
+			$\ifboolKV[eqdioph]{Cadres}
+				{\boxed{\YYY = \mathcolor{\CouleurSolEDioph}{\num{\xinteval{\CCC*\TmpV}}}  \AffCoeffDiophSign{\AAA}\KKK}}
+				{\YYY = \mathcolor{\CouleurSolEDioph}{\num{\xinteval{\CCC*\TmpV}}}  \AffCoeffDiophSign{\AAA}\KKK}
+			$.\par
+			En remplaçant, on obtient :
+			%
+			\begin{align*}
+				\num{\AAA} \times \left( \TmpPartieA \right) = \num{\xinteval{-\BBB}} \times \left( \TmpPartieB \right) & \implies \num{\AAA} \times \left( \TmpPartieA \right) = \num{\xinteval{-\BBB}} \times \big( \underbrace{\mathcolor{\CouleurSolEDioph}{\num{\xinteval{\CCC*\TmpV}}} \AffCoeffDiophSign{\AAA}\KKK}_{\mathclap{\YYY}}  \mathcolor{\CouleurSolEDioph}{\AffCoeffDiophSign{\xinteval{-\CCC*\TmpV}}} \big) \\
+				& \implies \num{\AAA} \times \left( \TmpPartieA \right) = \num{\xinteval{-\BBB}} \times \left( \num{\AAA}\KKK \right) \\
+				& \implies \TmpPartieA = \num{\xinteval{-\BBB}}\KKK \\
+				& \implies \ifboolKV[eqdioph]{Cadres}
+					{\boxed{\XXX = \mathcolor{\CouleurSolEDioph}{\num{\xinteval{\CCC*\TmpU}}} \AffCoeffDiophSign{\xinteval{-\BBB}}\KKK}}
+					{\XXX = \mathcolor{\CouleurSolEDioph}{\num{\xinteval{\CCC*\TmpU}}} \AffCoeffDiophSign{\xinteval{-\BBB}}\KKK}
+			\end{align*}
+			%
+			Ainsi, si $\XXX$ et $\YYY$ sont solutions de $(\LettreSolEDioph)$, alors il existe un entier $\KKK$ tel que ${\XXX=\mathcolor{\CouleurSolEDioph}{\num{\xinteval{\CCC*\TmpU}}} \AffCoeffDiophSign{\xinteval{-\BBB}}\KKK}$ et ${\YYY=\mathcolor{\CouleurSolEDioph}{\num{\xinteval{\CCC*\TmpV}}}  \AffCoeffDiophSign{\AAA}\KKK}$.\par\medskip
+			Réciproquement, soit $\KKK$ un entier quelconque :
+			%
+			\begin{align*}
+				\num{\AAA} \times \left( \mathcolor{\CouleurSolEDioph}{\num{\xinteval{\CCC*\TmpU}}} \AffCoeffDiophSign{\xinteval{-\BBB}}\KKK \right) + \AffCoeffDioph{\BBB} \times  \left( \mathcolor{\CouleurSolEDioph}{\num{\xinteval{\CCC*\TmpV}}}  \AffCoeffDiophSign{\AAA}\KKK \right) & = \num{\AAA} \times \mathcolor{\CouleurSolEDioph}{\AffCoeffDioph{\xinteval{\CCC*\TmpU}}} + \cancel{\AffCoeffDioph{\AAA} \times \AffCoeffDioph{\xinteval{-\BBB}} \KKK} + \AffCoeffDioph{\BBB} \times \mathcolor{\CouleurSolEDioph}{\AffCoeffDioph{\xinteval{\CCC*\TmpV}}} +  \cancel{\AffCoeffDioph{\BBB} \times \AffCoeffDioph{\AAA} \KKK} \\
+				& = \underbrace{\num{\AAA} \times \mathcolor{\CouleurSolEDioph}{\AffCoeffDioph{\xinteval{\CCC*\TmpU}}} +  \AffCoeffDioph{\BBB} \times \mathcolor{\CouleurSolEDioph}{\AffCoeffDioph{\xinteval{\CCC*\TmpV}}}}_{=\,\num{\CCC} \text{ d'après } ({\LettreSolEDioph}_0)} \\
+				& = \num{\CCC}
+			\end{align*}
+			%
+			On en déduit que $\left(\mathcolor{\CouleurSolEDioph}{\num{\xinteval{\CCC*\TmpU}}} \AffCoeffDiophSign{\xinteval{-\BBB}}\KKK \mathpunct{}; \mathcolor{\CouleurSolEDioph}{\num{\xinteval{\CCC*\TmpV}}}  \AffCoeffDiophSign{\AAA}\KKK \right)$ est solution de $(\LettreSolEDioph)$.\par\medskip
+			En conclusion, les solutions de $(E)$ sont donc les couples $\left(\mathcolor{\CouleurSolEDioph}{\num{\xinteval{\CCC*\TmpU}}} \AffCoeffDiophSign{\xinteval{-\BBB}}\KKK \mathpunct{}; \mathcolor{\CouleurSolEDioph}{\num{\xinteval{\CCC*\TmpV}}} \AffCoeffDiophSign{\AAA}\KKK \right)$, avec $\KKK$ un entier relatif.
+		}%
+		{%
+			Le PGCD de \num{\AA} et \num{\BB} ne divise pas \num{\CC}, donc l'équation $(\LettreSolEDioph)$ n'admet aucune solution.
+		}%
+}
+
 \endinput
\ No newline at end of file

Modified: trunk/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-geom.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-geom.tex	2023-05-20 20:18:42 UTC (rev 67171)
+++ trunk/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-geom.tex	2023-05-20 20:18:53 UTC (rev 67172)
@@ -135,5 +135,493 @@
 	mainlevee/.default={5mm et 0.6pt}
 }
 
+%%Equations Cartésiennes + Affichages coordonnées
+\RequirePackage{nicematrix}
+\NewDocumentCommand\AffCoeffSgn{ s O{} m m D<>{} }{%
+	\IfStrEq{#5}{}%si argument vide, on convertit en fraction
+		{%
+			\xintifboolexpr{\xinteval{#3} == 0}%
+				{}%on n'affiche rien si le coeff est nul
+				{%sinon on teste >0 puis else
+					\xintifboolexpr{\xinteval{#3} > 0}%
+						{%
+							\IfBooleanTF{#1}{}{+}%
+							\xintifboolexpr{\xinteval{#3} == 1}%
+								{#4}%
+								{\ConversionFraction[#2]{#3}#4}%
+						}%
+						{%
+							\xintifboolexpr{\xinteval{#3} == -1}%
+								{-#4\relax}%
+								{\ConversionFraction[#2]{#3}#4}%
+						}%
+				}%
+		}%
+		%sinon on met en brut
+		{%
+			#3#4
+		}%
+}
 
+\NewDocumentCommand\AffCoeffSgnSimpl{ s O{} m D<>{} }{%
+	\IfStrEq{#4}{}%si argument vide, on convertit en fraction
+		{%
+			\xintifboolexpr{\xinteval{#3} == 0}%
+				{}%on n'affiche rien si le coeff est nul
+				{%sinon on teste >0 puis else
+					\xintifboolexpr{\xinteval{#3} > 0}%
+						{%
+							\IfBooleanTF{#1}{}{+}%
+							\xintifboolexpr{\xinteval{#3} == 1}%
+								{#3}%
+								{+\ConversionFraction[#2]{#3}}%
+						}%
+						{%
+							\xintifboolexpr{\xinteval{#3} == -1}%
+								{#3\relax}%
+								{\ConversionFraction[#2]{#3}}%
+					}	%
+				}%
+		}%
+	%sinon on met en brut
+		{%
+			#3
+		}%
+}
+
+\defKV[eqcartplan]{%
+	OptionCoeffs=\def\eqcartplformat{#1},%
+	Facteur=\def\eqcartplfact{#1}
+}
+
+\setKVdefault[eqcartplan]{%
+	OptionCoeffs={d},%
+	SimplifCoeffs=false,%
+	Facteur=1
+}
+
+\NewDocumentCommand\TrouveEqCartPlan{ O{} r() r() d() }{%test commande générique avec VP ou PPP ou PVV
+	\restoreKV[eqcartplan]% revenir au valeurs par défaut
+	\setKV[eqcartplan]{#1}% lit les arguments optionnels
+	\IfNoValueTF{#4}%c'est Vect+Point
+		{%
+			\setsepchar{;}\readlist*\CoordVecNorm{#2}%
+			\setsepchar{,}\readlist*\CoordPt{#3}%
+			\itemtomacro\CoordVecNorm[1]\vecnx%
+			\itemtomacro\CoordVecNorm[2]\vecny%
+			\itemtomacro\CoordVecNorm[3]\vecnz%
+			\itemtomacro\CoordPt[1]\xpta%
+			\itemtomacro\CoordPt[2]\ypta%
+			\itemtomacro\CoordPt[3]\zpta%
+			%calculs
+			\xdef\coeffd{-((\xpta)*(\vecnx)+(\ypta)*(\vecny)+(\zpta)*(\vecnz))}%
+			\xdef\PPCMDenom{\xinteval{lcm([\xintDenominator{\xintIrr{\xinteval{\vecnx}}},\xintDenominator{\xintIrr{\xinteval{\vecny}}},\xintDenominator{\xintIrr{\xinteval{\vecnz}}},\xintDenominator{\xintIrr{\xinteval{\coeffd}}}])}}%
+			\xdef\PGCDsiEntiers{1}%
+			\xintifboolexpr{\xinteval{isint(\vecnx)}*\xinteval{isint(\vecny)}*\xinteval{isint(\vecnz)}*\xinteval{isint(\coeffd)} == 1}%tous les coeffs sont entiers
+				{%
+					\xdef\PGCDsiEntiers{\xinteval{gcd([\xinteval{\vecnx},\xinteval{\vecny},\xinteval{\vecnz},\xinteval{\coeffd}])}}%
+				}%
+				{}%
+			%affichages
+			\ifboolKV[eqcartplan]{SimplifCoeffs}%
+				{%
+					\AffCoeffSgn*[\eqcartplformat]{(\vecnx)*(\eqcartplfact)*\PPCMDenom/\PGCDsiEntiers}{x} \AffCoeffSgn[\eqcartplformat]{(\vecny)*(\eqcartplfact)*\PPCMDenom/\PGCDsiEntiers}{y} \AffCoeffSgn[\eqcartplformat]{(\vecnz)*(\eqcartplfact)*\PPCMDenom/\PGCDsiEntiers}{z} \AffCoeffSgnSimpl*[\eqcartplformat]{\coeffd*\PPCMDenom/\PGCDsiEntiers} = 0%
+				}%
+				{%
+					\AffCoeffSgn*[\eqcartplformat]{\vecnx}{x} \AffCoeffSgn[\eqcartplformat]{\vecny}{y} \AffCoeffSgn[\eqcartplformat]{\vecnz}{z} \AffCoeffSgnSimpl*[\eqcartplformat]{\coeffd} = 0%
+				}%
+		}%sinon c'est Point+Point+Point ou vectdir+vectdir+point
+		{%
+			\IfSubStr{#2}{,}%c'est point+point+point
+				{%
+					\setsepchar{,}\readlist*\CoordPtA{#2}%
+					\setsepchar{,}\readlist*\CoordPtB{#3}%
+					\setsepchar{,}\readlist*\CoordPtC{#4}%
+					\itemtomacro\CoordPtA[1]\ptxa%
+					\itemtomacro\CoordPtA[2]\ptya%
+					\itemtomacro\CoordPtA[3]\ptza%
+					\itemtomacro\CoordPtB[1]\ptxb%
+					\itemtomacro\CoordPtB[2]\ptyb%
+					\itemtomacro\CoordPtB[3]\ptzb%
+					\itemtomacro\CoordPtC[1]\ptxc%
+					\itemtomacro\CoordPtC[2]\ptyc%
+					\itemtomacro\CoordPtC[3]\ptzc%
+					%calculs
+					\xdef\vecxab{(\ptxb-\ptxa)}%
+					\xdef\vecyab{(\ptyb-\ptya)}%
+					\xdef\veczab{(\ptzb-\ptza)}%
+					\xdef\vecxac{(\ptxc-\ptxa)}%
+					\xdef\vecyac{(\ptyc-\ptya)}%
+					\xdef\veczac{(\ptzc-\ptza)}%
+					%coeffs a/b/c
+					\xdef\coeffa{(\vecyab*\veczac-\veczab*\vecyac)}%
+					\xdef\coeffb{(\vecxac*\veczab-\vecxab*\veczac)}%
+					\xdef\coeffc{(\vecxab*\vecyac-\vecxac*\vecyab)}%
+					%coeffd
+					\xdef\coeffd{(-(\ptxa)*\vecyab*\veczac-(\ptza)*\vecxab*\vecyac-(\ptya)*\vecxac*\veczab+(\ptza)*\vecyab*\vecxac+(\ptxa)*\veczab*\vecyac+(\ptya)*\vecxab*\veczac)}%
+					%pour simplifier
+					\xdef\PPCMDenom{\xinteval{lcm([\xintDenominator{\xintIrr{\xinteval{\coeffa}}},\xintDenominator{\xintIrr{\xinteval{\coeffb}}},\xintDenominator{\xintIrr{\xinteval{\coeffc}}},\xintDenominator{\xintIrr{\xinteval{\coeffd}}}])}}%
+					\xdef\PGCDsiEntiers{1}%
+					\xintifboolexpr{\xinteval{isint(\coeffa)}*\xinteval{isint(\coeffb)}*\xinteval{isint(\coeffc)}*\xinteval{isint(\coeffd)} == 1}%tous les coeffs sont entiers
+						{%
+							\xdef\PGCDsiEntiers{\xinteval{gcd([\xinteval{\coeffa},\xinteval{\coeffb},\xinteval{\coeffc},\xinteval{\coeffd}])}}%
+						}%
+						{}%
+					%affichages
+					\ifboolKV[eqcartplan]{SimplifCoeffs}%
+						{%
+							\AffCoeffSgn*[\eqcartplformat]{\coeffa*(\eqcartplfact)*\PPCMDenom/\PGCDsiEntiers}{x} \AffCoeffSgn[\eqcartplformat]{\coeffb*(\eqcartplfact)*\PPCMDenom/\PGCDsiEntiers}{y} \AffCoeffSgn[\eqcartplformat]{\coeffc*(\eqcartplfact)*\PPCMDenom/\PGCDsiEntiers}{z} \AffCoeffSgnSimpl*[\eqcartplformat]{\coeffd*(\eqcartplfact)*\PPCMDenom/\PGCDsiEntiers} = 0%
+						}%
+						{%
+							\AffCoeffSgn*[\eqcartplformat]{\coeffa}{x} \AffCoeffSgn[\eqcartplformat]{\coeffb}{y} \AffCoeffSgn[\eqcartplformat]{\coeffc}{z} \AffCoeffSgnSimpl*[\eqcartplformat]{\coeffd} = 0%
+						}%
+				}%
+				{%
+					\setsepchar{;}\readlist*\CoordVecA{#2}%
+					\setsepchar{;}\readlist*\CoordVecB{#3}%
+					\setsepchar{,}\readlist*\CoordPtC{#4}%
+					\itemtomacro\CoordVecA[1]\vecxab%
+					\itemtomacro\CoordVecA[2]\vecyab%
+					\itemtomacro\CoordVecA[3]\veczab%
+					\itemtomacro\CoordVecB[1]\vecxac%
+					\itemtomacro\CoordVecB[2]\vecyac%
+					\itemtomacro\CoordVecB[3]\veczac%
+					\itemtomacro\CoordPtC[1]\ptxc%
+					\itemtomacro\CoordPtC[2]\ptyc%
+					\itemtomacro\CoordPtC[3]\ptzc%
+					%coeff a/b/c
+					\xdef\coeffa{((\vecyab)*(\veczac)-(\vecyac)*(\veczab))}%
+					\xdef\coeffb{((\veczab)*(\vecxac)-(\veczac)*(\vecxab))}%
+					\xdef\coeffc{((\vecxab)*(\vecyac)-(\vecxac)*(\vecyab))}%
+					%coeffd
+					\xdef\coeffd{-((\ptxc)*\coeffa+(\ptyc)*\coeffb+(\ptzc)*\coeffc)}%
+					%pour simplifier
+					\xdef\PPCMDenom{\xinteval{lcm([\xintDenominator{\xintIrr{\xinteval{\coeffa}}},\xintDenominator{\xintIrr{\xinteval{\coeffb}}},\xintDenominator{\xintIrr{\xinteval{\coeffc}}},\xintDenominator{\xintIrr{\xinteval{\coeffd}}}])}}%
+					\xdef\PGCDsiEntiers{1}%
+					\xintifboolexpr{\xinteval{isint(\coeffa)}*\xinteval{isint(\coeffb)}*\xinteval{isint(\coeffc)}*\xinteval{isint(\coeffd)} == 1}%tous les coeffs sont entiers
+						{%
+							\xdef\PGCDsiEntiers{\xinteval{gcd([\xinteval{\coeffa},\xinteval{\coeffb},\xinteval{\coeffc},\xinteval{\coeffd}])}}%
+						}%
+						{}%
+					%affichages
+					\ifboolKV[eqcartplan]{SimplifCoeffs}%
+						{%
+							\AffCoeffSgn*[\eqcartplformat]{\coeffa*(\eqcartplfact)*\PPCMDenom/\PGCDsiEntiers}{x} \AffCoeffSgn[\eqcartplformat]{\coeffb*(\eqcartplfact)*\PPCMDenom/\PGCDsiEntiers}{y} \AffCoeffSgn[\eqcartplformat]{\coeffc*(\eqcartplfact)*\PPCMDenom/\PGCDsiEntiers}{z} \AffCoeffSgnSimpl*[\eqcartplformat]{\coeffd*(\eqcartplfact)*\PPCMDenom/\PGCDsiEntiers} = 0%
+						}%
+						{%
+							\AffCoeffSgn*[\eqcartplformat]{\coeffa}{x} \AffCoeffSgn[\eqcartplformat]{\coeffb}{y} \AffCoeffSgn[\eqcartplformat]{\coeffc}{z} \AffCoeffSgnSimpl*[\eqcartplformat]{\coeffd} = 0%
+						}%
+				}%
+		}%
+}
+
+\defKV[eqcartdroite]{%
+	OptionCoeffs=\def\eqcartdteformat{#1},%
+	Facteur=\def\eqcartdtefact{#1}
+}
+
+\setKVdefault[eqcartdroite]{%
+	OptionCoeffs={d},%
+	SimplifCoeffs=false,%
+	VectDirecteur=false,%
+	Facteur=1
+}
+
+\NewDocumentCommand\TrouveEqCartDroite{ O{} r() r() }{%vect/point ou point/point
+	\restoreKV[eqcartdroite]% revenir au valeurs par défaut
+	\setKV[eqcartdroite]{#1}% lit les arguments optionnels
+	%on teste si c'est point/point
+	\IfSubStr{#2}{;}%c'est vecteur+point, sinon c'est point+point
+		{%
+			\setsepchar{;}\readlist*\CoordVec{#2}%
+			\setsepchar{,}\readlist*\CoordPt{#3}%
+			\itemtomacro\CoordVec[1]\vecnx%
+			\itemtomacro\CoordVec[2]\vecny%
+			\itemtomacro\CoordPt[1]\xpta%
+			\itemtomacro\CoordPt[2]\ypta%
+			%calculs
+			\ifboolKV[eqcartdroite]{VectDirecteur}%
+				{%
+					\xdef\coeffd{((\xpta)*(\vecny)-(\ypta)*(\vecnx))}%
+				}%
+				{%
+					\xdef\coeffd{-((\xpta)*(\vecnx)+(\ypta)*(\vecny))}%
+				}%
+			\xdef\PPCMDenom{\xinteval{lcm([\xintDenominator{\xintIrr{\xinteval{\vecnx}}},\xintDenominator{\xintIrr{\xinteval{\vecny}}},\xintDenominator{\xintIrr{\xinteval{\coeffd}}}])}}%
+			\xdef\PGCDsiEntiers{1}%
+			\xintifboolexpr{\xinteval{isint(\vecnx)}*\xinteval{isint(\vecny)}*\xinteval{isint(\coeffd)} == 1}%tous les coeffs sont entiers
+				{%
+					\xdef\PGCDsiEntiers{\xinteval{gcd([\xinteval{\vecnx},\xinteval{\vecny},\xinteval{\coeffd}])}}%
+				}%
+				{}%
+			%affichages
+			\ifboolKV[eqcartdroite]{SimplifCoeffs}%
+				{%
+					\ifboolKV[eqcartdroite]{VectDirecteur}%
+						{%
+							\AffCoeffSgn*[\eqcartdteformat]{-(\vecny)*(\eqcartdtefact)*\PPCMDenom/\PGCDsiEntiers}{x} \AffCoeffSgn[\eqcartdteformat]{(\vecnx)*(\eqcartdtefact)*\PPCMDenom/\PGCDsiEntiers}{y} \AffCoeffSgnSimpl*[\eqcartdteformat]{\coeffd*(\eqcartdtefact)*\PPCMDenom/\PGCDsiEntiers} = 0%
+						}%
+						{%
+							\AffCoeffSgn*[\eqcartdteformat]{(\vecnx)*(\eqcartdtefact)*\PPCMDenom/\PGCDsiEntiers}{x} \AffCoeffSgn[\eqcartdteformat]{(\vecny)*(\eqcartdtefact)*\PPCMDenom/\PGCDsiEntiers}{y} \AffCoeffSgnSimpl*[\eqcartdteformat]{\coeffd*(\eqcartdtefact)*\PPCMDenom/\PGCDsiEntiers} = 0%
+						}%
+				}%
+				{%
+					\ifboolKV[eqcartdroite]{VectDirecteur}%
+						{%
+							\AffCoeffSgn*[\eqcartdteformat]{-(\vecny)}{x} \AffCoeffSgn[\eqcartdteformat]{\vecnx}{y} \AffCoeffSgnSimpl*[\eqcartdteformat]{\coeffd} = 0%
+						}%
+						{%
+							\AffCoeffSgn*[\eqcartdteformat]{\vecnx}{x} \AffCoeffSgn[\eqcartdteformat]{\vecny}{y} \AffCoeffSgnSimpl*[\eqcartdteformat]{\coeffd} = 0%
+						}%
+				}%
+		}%
+		{%
+			\setsepchar{,}\readlist*\CoordPtA{#2}%
+			\setsepchar{,}\readlist*\CoordPtB{#3}%
+			\itemtomacro\CoordPtA[1]\xpta%
+			\itemtomacro\CoordPtA[2]\ypta%
+			\itemtomacro\CoordPtB[1]\xptb%
+			\itemtomacro\CoordPtB[2]\yptb%
+			\xdef\vecnx{((\xptb)-(\xpta))}%
+			\xdef\vecny{((\yptb)-(\ypta))}%
+			%calculs
+			\xdef\coeffd{((\xpta)*(\vecny)-(\ypta)*(\vecnx))}%
+			\xdef\PPCMDenom{\xinteval{lcm([\xintDenominator{\xintIrr{\xinteval{\vecnx}}},\xintDenominator{\xintIrr{\xinteval{\vecny}}},\xintDenominator{\xintIrr{\xinteval{\coeffd}}}])}}%
+			\xdef\PGCDsiEntiers{1}%
+			\xintifboolexpr{\xinteval{isint(\vecnx)}*\xinteval{isint(\vecny)}*\xinteval{isint(\coeffd)} == 1}%tous les coeffs sont entiers
+				{%
+					\xdef\PGCDsiEntiers{\xinteval{gcd([\xinteval{\vecnx},\xinteval{\vecny},\xinteval{\coeffd}])}}%
+				}%
+				{}%
+			%affichages
+			\ifboolKV[eqcartdroite]{SimplifCoeffs}%
+				{%
+					\AffCoeffSgn*[\eqcartdteformat]{-(\vecny)*(\eqcartdtefact)*\PPCMDenom/\PGCDsiEntiers}{x} \AffCoeffSgn[\eqcartdteformat]{(\vecnx)*(\eqcartdtefact)*\PPCMDenom/\PGCDsiEntiers}{y} \AffCoeffSgnSimpl*[\eqcartdteformat]{\coeffd*(\eqcartdtefact)*\PPCMDenom/\PGCDsiEntiers} = 0%
+				}%
+				{%
+					\AffCoeffSgn*[\eqcartdteformat]{-(\vecny)}{x} \AffCoeffSgn[\eqcartdteformat]{(\vecnx)}{y} \AffCoeffSgnSimpl*[\eqcartdteformat]{\coeffd} = 0%
+				}%
+		}%
+}
+
+\NewDocumentCommand\AffVecteur{ O{d} D<>{} r() }{%
+	\setsepchar{;}\readlist*\CoordVec{#3}%
+	\xintifboolexpr{\CoordVeclen == 2}%
+		{%
+			\IfSubStr{#1}{;}%si l'option est globale...
+				{%
+					\setsepchar{;}\readlist*\OptVec{#1}%
+					\itemtomacro\OptVec[1]\optvecx%
+					\itemtomacro\OptVec[2]\optvecy%
+				}%
+				{%
+					\xdef\optvecx{#1}\xdef\optvecy{#1}%
+				}%
+			\itemtomacro\CoordVec[1]\vecx%
+			\itemtomacro\CoordVec[2]\vecy%
+			\begin{pNiceMatrix}[#2] \ConversionFraction[\optvecx]{\vecx} \\ \ConversionFraction[\optvecy]{\vecy} \end{pNiceMatrix}%
+		}%
+		{}%
+	\xintifboolexpr{\CoordVeclen == 3}%
+	{%
+		\IfSubStr{#1}{;}%si l'option est globale...
+			{%
+				\setsepchar{;}\readlist*\OptVec{#1}%
+				\itemtomacro\OptVec[1]\optvecx%
+				\itemtomacro\OptVec[2]\optvecy%
+				\itemtomacro\OptVec[3]\optvecz%
+			}%
+			{%
+				\xdef\optvecx{#1}\xdef\optvecy{#1}\xdef\optvecz{#1}%
+			}%
+		\itemtomacro\CoordVec[1]\vecx%
+		\itemtomacro\CoordVec[2]\vecy%
+		\itemtomacro\CoordVec[3]\vecz%
+		\begin{pNiceMatrix}[#2] \ConversionFraction[\optvecx]{\vecx} \\ \ConversionFraction[\optvecy]{\vecy} \\ \ConversionFraction[\optvecz]{\vecz} \end{pNiceMatrix}%
+	}%
+	{}%
+}
+
+\NewDocumentCommand\AffPoint{ O{d} r() }{%
+	\setsepchar{,}
+	\readlist*\CoordPt{#2}%
+	\xintifboolexpr{\CoordPtlen == 2}%
+		{%
+			\IfSubStr{#1}{,}%si l'option est globale...
+				{%
+					\setsepchar{,}\readlist*\OptPt{#1}%
+					\itemtomacro\OptPt[1]\optptx%
+					\itemtomacro\OptPt[2]\optpty%
+				}%
+				{%
+					\xdef\optptx{#1}\xdef\optpty{#1}%
+				}%
+			\itemtomacro\CoordPt[1]\ptx%
+			\itemtomacro\CoordPt[2]\pty%
+			\left( \ConversionFraction[\optptx]{\ptx} ; \ConversionFraction[\optpty]{\pty} \right)%
+		}%
+		{}%
+	\xintifboolexpr{\CoordPtlen == 3}%
+		{%
+			\IfSubStr{#1}{,}%si l'option est globale...
+				{%
+					\setsepchar{,}\readlist*\OptPt{#1}%
+					\itemtomacro\OptPt[1]\optptx%
+					\itemtomacro\OptPt[2]\optpty%
+					\itemtomacro\OptPt[3]\optptz%
+				}%
+				{%
+					\xdef\optptx{#1}\xdef\optpty{#1}\xdef\optptz{#1}%
+				}%
+			\itemtomacro\CoordPt[1]\ptx%
+			\itemtomacro\CoordPt[2]\pty%
+			\itemtomacro\CoordPt[3]\ptz%
+			\left( \ConversionFraction[\optptx]{\ptx} ; \ConversionFraction[\optpty]{\pty} ; \ConversionFraction[\optptz]{\ptz} \right)%
+		}%
+		{}%
+}
+
+%%Équation paramétrique de droite
+\defKV[eqparamdroite]{%
+	OptionCoeffs=\def\eqparamdteformat{#1},%
+	Reel=\def\eqparamdtereel{#1}
+}
+
+\setKVdefault[eqparamdroite]{%
+	OptionCoeffs={d},%
+	Reel=k,%
+	Aligne=false,%
+	Oppose=false,%
+	Rgras=false
+}
+
+\NewDocumentCommand\AffVarDteParam{ m m }{%
+	\xdef\restmp{\ConversionFraction[\eqparamdteformat]{#1} \AffCoeffSgn[\eqcartdteformat]{#2}{\eqparamdtereel}}%
+	\xintifboolexpr{\xinteval{#1} == 0 'and' \xinteval{#2} == 0}{\xdef\restmp{0}}{}%
+	\xintifboolexpr{\xinteval{#1} == 0 'and' \xinteval{#2} != 0}{\xdef\restmp{\AffCoeffSgn*[\eqcartdteformat]{#2}{\eqparamdtereel}}}{}%
+	\restmp%
+}
+
+\NewDocumentCommand\AffVarDteParamAlign{ m m }{%
+	\xdef\restmp{\ConversionFraction[\eqparamdteformat]{#1} & \AffCoeffSgn[\eqcartdteformat]{#2}{\eqparamdtereel}}%
+	\xintifboolexpr{\xinteval{#1} == 0 'and' \xinteval{#2} == 0}{\xdef\restmp{0 & }}{}%
+	\xintifboolexpr{\xinteval{#1} == 0 'and' \xinteval{#2} != 0}{\xdef\restmp{ & \AffCoeffSgn*[\eqcartdteformat]{#2}{\eqparamdtereel}}}{}%
+	\restmp%
+}
+
+\NewDocumentCommand\TrouveEqParamDroite{ O{} r() r() }{%vect/point ou point/point
+	\restoreKV[eqparamdroite]% revenir au valeurs par défaut
+	\setKV[eqparamdroite]{#1}% lit les arguments optionnels
+	%on teste si c'est point/point
+	\IfSubStr{#2}{;}%c'est vecteur+point, sinon c'est point+point
+		{%
+			\setsepchar{;}\readlist*\CoordVec{#2}%
+			\setsepchar{,}\readlist*\CoordPt{#3}%
+			\itemtomacro\CoordVec[1]\vecdirx%
+			\itemtomacro\CoordVec[2]\vecdiry%
+			\itemtomacro\CoordVec[3]\vecdirz%
+			\itemtomacro\CoordPt[1]\xpta%
+			\itemtomacro\CoordPt[2]\ypta%
+			\itemtomacro\CoordPt[3]\zpta%
+		}%
+		{%
+			\setsepchar{,}\readlist*\CoordPtA{#2}%
+			\setsepchar{,}\readlist*\CoordPtB{#3}%
+			\itemtomacro\CoordPtA[1]\xpta%
+			\itemtomacro\CoordPtA[2]\ypta%
+			\itemtomacro\CoordPtA[2]\zpta%
+			\itemtomacro\CoordPtB[1]\xptb%
+			\itemtomacro\CoordPtB[2]\yptb%
+			\itemtomacro\CoordPtB[2]\zptb%
+			\ifboolKV[eqparamdroite]{Oppose}%
+				{%
+					\xdef\vecdirx{((\xpta)-(\xptb))}%
+					\xdef\vecdiry{((\ypta)-(\yptb))}%
+					\xdef\vecdirz{((\zpta)-(\zptb))}%
+				}%
+				{%
+					\xdef\vecdirx{((\xptb)-(\xpta))}%
+					\xdef\vecdiry{((\yptb)-(\ypta))}%
+					\xdef\vecdirz{((\zptb)-(\zpta))}%
+				}%
+		}%
+	\ifboolKV[eqparamdroite]{Aligne}%
+		{%
+			\left\lbrace\begin{array}{@{\,}l@{\;=\;}l@{\;}r}
+				x & \AffVarDteParamAlign{\xpta}{\vecdirx} \\
+				y & \AffVarDteParamAlign{\ypta}{\vecdiry} \\
+				z & \AffVarDteParamAlign{\zpta}{\vecdirz} \\
+			\end{array}\right.
+			\text{, } \eqparamdtereel \in \ifboolKV[eqparamdroite]{Rgras}{\textbf{R}}{\mathbb{R}}%
+		}%
+		{%
+			\begin{dcases}
+				x = \AffVarDteParam{\xpta}{\vecdirx} \\
+				y = \AffVarDteParam{\ypta}{\vecdiry} \\
+				z = \AffVarDteParam{\zpta}{\vecdirz} \\
+			\end{dcases}
+			\text{, } \eqparamdtereel \in \ifboolKV[eqparamdroite]{Rgras}{\textbf{R}}{\mathbb{R}}%
+		}%
+}
+
+\NewDocumentCommand\TrouveDistancePtPlan{ r() r() d() }{%pt+vect+pt
+	\IfNoValueTF{#3}%c'est Point + Equation // sinon c'est point + vectnorm + point
+		{%
+			\StrDel{#2}{=0}[\tmpeq]%
+			%%\tmpeq \text{ et }%
+			\setsepchar{,}\readlist*\CoordPtA{#1}%
+			\itemtomacro\CoordPtA[1]\xa%
+			\itemtomacro\CoordPtA[2]\ya%
+			\itemtomacro\CoordPtA[3]\za%.
+			%calcul de d
+			\StrSubstitute{\tmpeq}{x}{(0)}[\tmpcoeffd]%
+			\StrSubstitute{\tmpcoeffd}{y}{(0)}[\tmpcoeffd]%
+			\StrSubstitute{\tmpcoeffd}{z}{(0)}[\tmpcoeffd]%
+			\xdef\coeffd{\tmpcoeffd}%
+			%%d=\xinteval{\coeffd} \text{ et }%
+			%calcul de a
+			\StrSubstitute{\tmpeq}{x}{(1)}[\tmpcoeffa]%
+			\StrSubstitute{\tmpcoeffa}{y}{(0)}[\tmpcoeffa]%
+			\StrSubstitute{\tmpcoeffa}{z}{(0)}[\tmpcoeffa]%
+			\xdef\vectx{(\tmpcoeffa)-(\coeffd)}%
+			%%a=\xinteval{\vectx} \text{ et }%
+			%calcul de b
+			\StrSubstitute{\tmpeq}{x}{(0)}[\tmpcoeffb]%
+			\StrSubstitute{\tmpcoeffb}{y}{(1)}[\tmpcoeffb]%
+			\StrSubstitute{\tmpcoeffb}{z}{(0)}[\tmpcoeffb]%
+			\xdef\vecty{(\tmpcoeffb)-(\coeffd)}%
+			%%b=\xinteval{\vecty} \text{ et }%
+			%calcul de c
+			\StrSubstitute{\tmpeq}{x}{(0)}[\tmpcoeffc]%
+			\StrSubstitute{\tmpcoeffc}{y}{(0)}[\tmpcoeffc]%
+			\StrSubstitute{\tmpcoeffc}{z}{(1)}[\tmpcoeffc]%
+			\xdef\vectz{(\tmpcoeffc)-(\coeffd)}%
+			%c=\xinteval{\vectz} \text{ et }%
+			%calcul du numérateur
+			\StrSubstitute{\tmpeq}{x}{(\xa)}[\resnum]%
+			\StrSubstitute{\resnum}{y}{(\ya)}[\resnum]%
+			\StrSubstitute{\resnum}{z}{(\za)}[\resnum]%
+			%%\text{num}=\xinteval{\resnum} \text{ et }
+			%le carré
+			\xdef\restmp{(\resnum)**2/((\vectx)**2+(\vecty)**2+(\vectz)**2)}%
+			%%\text{resultatcarré}=\xinteval{\restmp} \text{ et }%
+		}%
+		{%
+			\setsepchar{,}\readlist*\CoordPtA{#1}%
+			\setsepchar{;}\readlist*\CoordVec{#2}%
+			\setsepchar{,}\readlist*\CoordPtB{#3}%
+			\itemtomacro\CoordPtA[1]\xa%
+			\itemtomacro\CoordPtA[2]\ya%
+			\itemtomacro\CoordPtA[3]\za%
+			\itemtomacro\CoordVec[1]\vectx%
+			\itemtomacro\CoordVec[2]\vecty%
+			\itemtomacro\CoordVec[3]\vectz%
+			\itemtomacro\CoordPtB[1]\xb%
+			\itemtomacro\CoordPtB[2]\yb%
+			\itemtomacro\CoordPtB[3]\zb%
+			\def\restmp{((\vectx)*((\xb)-(\xa))+(\vecty)*((\yb)-(\ya))+(\vectz)*((\zb)-(\za)))**2/((\vectx)**2+(\vecty)**2+(\vectz)**2)}%
+		}%
+	\SimplificationRacine{\restmp}%
+}
+
 \endinput
\ No newline at end of file

Modified: trunk/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-probas.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-probas.tex	2023-05-20 20:18:42 UTC (rev 67171)
+++ trunk/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-probas.tex	2023-05-20 20:18:53 UTC (rev 67172)
@@ -14,53 +14,53 @@
 	\xintFloatToDecimal{\xintfloateval{binomial(#1,#3)*#2^#3*(1-#2)^(#1-#3)}}
 }
 \newcommand\CalcBinomC[4]{%npab
-	\def\BorneInf{#3}\def\BorneSup{#4}
+	\def\BorneInf{#3}\def\BorneSup{#4}%
 	\ifthenelse{\equal{#3}{*}}%
-		{\def\BorneInf{0}}
-		{}
+		{\def\BorneInf{0}}%
+		{}%
 	\ifthenelse{\equal{#4}{*}}%
-		{\def\BorneSup{#1}}
-		{}
-	\xintFloatToDecimal{\xintfloateval{add(binomial(#1,i)*#2^i*(1-#2)^(#1-i), i=\BorneInf..\BorneSup)}}
+		{\def\BorneSup{#1}}%
+		{}%
+	\xintFloatToDecimal{\xintfloateval{add(binomial(#1,i)*#2^i*(1-#2)^(#1-i), i=\BorneInf..\BorneSup)}}%
 }
 \newcommand\CalcGeomP[2]{%pk
-	\xintFloatToDecimal{\xintfloateval{(1-#1)^(#2-1)*(#1)}}
+	\xintFloatToDecimal{\xintfloateval{(1-#1)^(#2-1)*(#1)}}%
 }
 \newcommand\CalcGeomC[3]{%pab
-	\def\BorneInf{#2}\def\BorneSup{#3}
+	\def\BorneInf{#2}\def\BorneSup{#3}%
 	\ifthenelse{\equal{#2}{*}}%
-		{\def\BorneInf{1}}
-		{}
+		{\def\BorneInf{1}}%
+		{}%
 	\ifthenelse{\equal{#3}{*}}%
-		{\def\BorneSup{\fpeval{trunc(1/#1*10,0)}}}
-		{}
-	\xintFloatToDecimal{\xintfloateval{add((1-#1)^(i-1)*(#1), i=\BorneInf..\BorneSup)}}
+		{\def\BorneSup{\fpeval{trunc(1/#1*10,0)}}}%
+		{}%
+	\xintFloatToDecimal{\xintfloateval{add((1-#1)^(i-1)*(#1), i=\BorneInf..\BorneSup)}}%
 }
 \newcommand\CalcHypergeomP[4]{%Nnmk
-	\xintFloatToDecimal{\xintfloateval{binomial(#3,#4)*binomial(#1-#3,#2-#4)/binomial(#1,#2)}}
+	\xintFloatToDecimal{\xintfloateval{binomial(#3,#4)*binomial(#1-#3,#2-#4)/binomial(#1,#2)}}%
 }
 \newcommand\CalcHypergeomC[5]{%Nnmab
-	\def\BorneInf{#4}\def\BorneSup{#5}
+	\def\BorneInf{#4}\def\BorneSup{#5}%
 	\ifthenelse{\equal{#4}{*}}%
-		{\def\BorneInf{0}}
-		{}
+		{\def\BorneInf{0}}%
+		{}%
 	\ifthenelse{\equal{#5}{*}}%
-		{\def\BorneSup{#1}}
-		{}
-	\xintFloatToDecimal{\xintfloateval{add(binomial(#3,i)*binomial(#1-#3,#2-i)/binomial(#1,#2), i=\BorneInf..\BorneSup)}}
+		{\def\BorneSup{#1}}%
+		{}%
+	\xintFloatToDecimal{\xintfloateval{add(binomial(#3,i)*binomial(#1-#3,#2-i)/binomial(#1,#2), i=\BorneInf..\BorneSup)}}%
 }
 \newcommand\CalcPoissP[2]{%lk
-	\xintFloatToDecimal{\xintfloateval{exp(-#1)*#1^#2/factorial(#2)}}
+	\xintFloatToDecimal{\xintfloateval{exp(-#1)*#1^#2/factorial(#2)}}%
 }
 \newcommand\CalcPoissC[3]{%lab
-	\def\BorneInf{#2}\def\BorneSup{#3}
+	\def\BorneInf{#2}\def\BorneSup{#3}%
 	\ifthenelse{\equal{#2}{*}}%
-		{\def\BorneInf{0}}
-		{}
+		{\def\BorneInf{0}}%
+		{}%
 	\ifthenelse{\equal{#3}{*}}%
-		{\def\BorneSup{10*#1}}
-		{}
-	\xintFloatToDecimal{\xintfloateval{add(exp(-#1)*#1^i/factorial(i), i=\BorneInf..\BorneSup)}}
+		{\def\BorneSup{10*#1}}%
+		{}%
+	\xintFloatToDecimal{\xintfloateval{add(exp(-#1)*#1^i/factorial(i), i=\BorneInf..\BorneSup)}}%
 }
 %utiles idée de https://tex.stackexchange.com/questions/355574/im-searching-for-a-table-with-cdf-of-standard-normal-distribution
 \xintdeffloatvar a_1,a_2,a_3,a_4,a_5,a_6 :=
@@ -72,25 +72,25 @@
 
 \newcommand\CalcNormC[4]{%msab
 	%def des bornes de l'intervalle suivant l'absence de a ou de b...
-	\def\BorneInf{#3}\def\BorneSup{#4}
+	\def\BorneInf{#3}\def\BorneSup{#4}%
 	\ifthenelse{\equal{#3}{*}}%
-		{\def\BorneInf{#4-10*#2}}
-		{}
+		{\def\BorneInf{#4-10*#2}}%
+		{}%
 	\ifthenelse{\equal{#4}{*}}%
-		{\def\BorneSup{#3+10*#2}}
-		{}
-	\xintFloatToDecimal{\xintfloateval{Phi((\BorneSup-#1)/#2)-Phi((\BorneInf-#1)/#2)}}
+		{\def\BorneSup{#3+10*#2}}%
+		{}%
+	\xintFloatToDecimal{\xintfloateval{Phi((\BorneSup-#1)/#2)-Phi((\BorneInf-#1)/#2)}}%
 }
 %calculs "simples" fiabilite
 \newcommand\CalcExpoC[3]{%lab
 	\def\BorneInf{#2}\def\BorneSup{#3}
 	\ifthenelse{\equal{#2}{*}}%
-		{\def\BorneInf{0}}
-		{}
+		{\def\BorneInf{0}}%
+		{}%
 	\ifthenelse{\equal{#3}{*}}%
-		{\def\BorneSup{100/#1}}
-		{}
-	\xintFloatToDecimal{\xintfloateval{exp(-#1*\BorneInf)-exp(-#1*\BorneSup)}}
+		{\def\BorneSup{100/#1}}%
+		{}%
+	\xintFloatToDecimal{\xintfloateval{exp(-#1*\BorneInf)-exp(-#1*\BorneSup)}}%
 }
 
 %calculs formatés
@@ -97,54 +97,54 @@
 \NewDocumentCommand{\BinomP}{ s O{3} m m m }{%*=sci,2=prec,3=n,4=p,5=k
 	\IfBooleanTF{#1}%
 	{%
-		\num[exponent-mode=scientific]{\xintFloatToDecimal{\xintfloateval{round(binomial(#3,#5)*#4^#5*(1-#4)^(#3-#5),#2)}}}
+		\num[exponent-mode=scientific]{\xintFloatToDecimal{\xintfloateval{round(binomial(#3,#5)*#4^#5*(1-#4)^(#3-#5),#2)}}}%
 	}%
 	{%
-		\num[minimum-decimal-digits=#2]{\xintFloatToDecimal{\xintfloateval{round(binomial(#3,#5)*#4^#5*(1-#4)^(#3-#5),#2)}}}
-	}
+		\num[minimum-decimal-digits=#2]{\xintFloatToDecimal{\xintfloateval{round(binomial(#3,#5)*#4^#5*(1-#4)^(#3-#5),#2)}}}%
+	}%
 }
 
 \NewDocumentCommand{\BinomC}{ s O{3} m m m m }{%*=sci,2=prec,3=n,4=p,5=a,6=b
-	\def\BorneInf{#5}\def\BorneSup{#6}
+	\def\BorneInf{#5}\def\BorneSup{#6}%
 	\ifthenelse{\equal{#5}{*}}%
-		{\def\BorneInf{0}}
-		{}
+		{\def\BorneInf{0}}%
+		{}%
 	\ifthenelse{\equal{#6}{*}}%
-		{\def\BorneSup{#3}}
-		{}
+		{\def\BorneSup{#3}}%
+		{}%
 	\IfBooleanTF{#1}%
 	{%
-		\num[exponent-mode=scientific]{\xintFloatToDecimal{\xintfloateval{round(add(binomial(#3,i)*#4^i*(1-#4)^(#3-i), i=\BorneInf..\BorneSup),#2)}}}
+		\num[exponent-mode=scientific]{\xintFloatToDecimal{\xintfloateval{round(add(binomial(#3,i)*#4^i*(1-#4)^(#3-i), i=\BorneInf..\BorneSup),#2)}}}%
 	}%
 	{%
-		\num[minimum-decimal-digits=#2]{\xintFloatToDecimal{\xintfloateval{round(add(binomial(#3,i)*#4^i*(1-#4)^(#3-i), i=\BorneInf..\BorneSup),#2)}}}
-	}
+		\num[minimum-decimal-digits=#2]{\xintFloatToDecimal{\xintfloateval{round(add(binomial(#3,i)*#4^i*(1-#4)^(#3-i), i=\BorneInf..\BorneSup),#2)}}}%
+	}%
 }
 
 \NewDocumentCommand{\GeomP}{ s O{3} m m }{%*=sci,2=prec,3=p,4=k
 	\IfBooleanTF{#1}%
 	{%
-		\num[exponent-mode=scientific]{\xintFloatToDecimal{\xintfloateval{round((1-#3)^(#4-1)*(#3),#2)}}}
+		\num[exponent-mode=scientific]{\xintFloatToDecimal{\xintfloateval{round((1-#3)^(#4-1)*(#3),#2)}}}%
 	}%
 	{%
-		\num[minimum-decimal-digits=#2]{\xintFloatToDecimal{\xintfloateval{round((1-#3)^(#4-1)*(#3),#2)}}}
-	}
+		\num[minimum-decimal-digits=#2]{\xintFloatToDecimal{\xintfloateval{round((1-#3)^(#4-1)*(#3),#2)}}}%
+	}%
 }
 
 \NewDocumentCommand{\GeomC}{ s O{3} m m m }{%*=sci,2=prec,3=p,4=a,5=b
-	\def\BorneInf{#4}\def\BorneSup{#5}
+	\def\BorneInf{#4}\def\BorneSup{#5}%
 	\ifthenelse{\equal{#4}{*}}%
-		{\def\BorneInf{1}}
-		{}
+		{\def\BorneInf{1}}%
+		{}%
 	\ifthenelse{\equal{#5}{*}}%
-		{\def\BorneSup{\fpeval{trunc(1/#3*10,0)}}}
-		{}
+		{\def\BorneSup{\fpeval{trunc(1/#3*10,0)}}}%
+		{}%
 	\IfBooleanTF{#1}%
 	{%
-		\num[exponent-mode=scientific]{\xintFloatToDecimal{\xintfloateval{round(add((1-#3)^(i-1)*(#3), i=\BorneInf..\BorneSup),#2)}}}
+		\num[exponent-mode=scientific]{\xintFloatToDecimal{\xintfloateval{round(add((1-#3)^(i-1)*(#3), i=\BorneInf..\BorneSup),#2)}}}%
 	}%
 	{%
-		\num[minimum-decimal-digits=#2]{\xintFloatToDecimal{\xintfloateval{round(add((1-#3)^(i-1)*(#3), i=\BorneInf..\BorneSup),#2)}}}
+		\num[minimum-decimal-digits=#2]{\xintFloatToDecimal{\xintfloateval{round(add((1-#3)^(i-1)*(#3), i=\BorneInf..\BorneSup),#2)}}}%
 	}
 }
 
@@ -151,91 +151,91 @@
 \NewDocumentCommand{\HypergeomP}{ s O{3} m m m m }{%*=sci,2=prec,3=N,4=n,5=m,6=k
 	\IfBooleanTF{#1}%
 	{%
-		\num[exponent-mode=scientific]{\xintFloatToDecimal{\xintfloateval{round(binomial(#5,#6)*binomial(#3-#5,#4-#6)/binomial(#3,#4),#2)}}}
+		\num[exponent-mode=scientific]{\xintFloatToDecimal{\xintfloateval{round(binomial(#5,#6)*binomial(#3-#5,#4-#6)/binomial(#3,#4),#2)}}}%
 	}%
 	{%
-		\num[minimum-decimal-digits=#2]{\xintFloatToDecimal{\xintfloateval{round(binomial(#5,#6)*binomial(#3-#5,#4-#6)/binomial(#3,#4),#2)}}}
+		\num[minimum-decimal-digits=#2]{\xintFloatToDecimal{\xintfloateval{round(binomial(#5,#6)*binomial(#3-#5,#4-#6)/binomial(#3,#4),#2)}}}%
 	}
 }
 
 \NewDocumentCommand{\HypergeomC}{ s O{3} m m m m m }{%*=sci,2=prec,3=N,4=n,5=m,6=a,7=b
-	\def\BorneInf{#6}\def\BorneSup{#7}
+	\def\BorneInf{#6}\def\BorneSup{#7}%
 	\ifthenelse{\equal{#6}{*}}%
-		{\def\BorneInf{0}}
-		{}
+		{\def\BorneInf{0}}%
+		{}%
 	\ifthenelse{\equal{#7}{*}}%
-		{\def\BorneSup{#3}}
-		{}
+		{\def\BorneSup{#3}}%
+		{}%
 	\IfBooleanTF{#1}%
 	{%
-		\num[exponent-mode=scientific]{\xintFloatToDecimal{\xintfloateval{round(add(binomial(#5,i)*binomial(#3-#5,#4-i)/binomial(#3,#4), i=\BorneInf..\BorneSup),#2)}}}
+		\num[exponent-mode=scientific]{\xintFloatToDecimal{\xintfloateval{round(add(binomial(#5,i)*binomial(#3-#5,#4-i)/binomial(#3,#4), i=\BorneInf..\BorneSup),#2)}}}%
 	}%
 	{%
 		\num[minimum-decimal-digits=#2]{\xintFloatToDecimal{\xintfloateval{round(add(binomial(#5,i)*binomial(#3-#5,#4-i)/binomial(#3,#4), i=\BorneInf..\BorneSup),#2)}}}
-	}
+	}%
 }
 
 \NewDocumentCommand{\PoissonP}{ s O{3} m m }{%*=sci,2=prec,3=lbda,4=k
 	\IfBooleanTF{#1}%
 	{%
-		\num[exponent-mode=scientific]{\xintFloatToDecimal{\xintfloateval{round(exp(-#3)*#3^#4/factorial(#4),#2)}}}
+		\num[exponent-mode=scientific]{\xintFloatToDecimal{\xintfloateval{round(exp(-#3)*#3^#4/factorial(#4),#2)}}}%
 	}%
 	{%
-		\num[minimum-decimal-digits=#2]{\xintFloatToDecimal{\xintfloateval{round(exp(-#3)*#3^#4/factorial(#4),#2)}}}
-	}
+		\num[minimum-decimal-digits=#2]{\xintFloatToDecimal{\xintfloateval{round(exp(-#3)*#3^#4/factorial(#4),#2)}}}%
+	}%
 }
 
 \NewDocumentCommand{\PoissonC}{ s O{3} m m m }{%*=ing,2=prec,3=lbda,4=a,5=b
-	\def\BorneInf{#4}\def\BorneSup{#5}
+	\def\BorneInf{#4}\def\BorneSup{#5}%
 	\ifthenelse{\equal{#4}{*}}%
-		{\def\BorneInf{0}}
-		{}
+		{\def\BorneInf{0}}%
+		{}%
 	\ifthenelse{\equal{#5}{*}}%
-		{\def\BorneSup{10*#3}}
-		{}
+		{\def\BorneSup{10*#3}}%
+		{}%
 	\IfBooleanTF{#1}%
 	{%
-		\num[exponent-mode=scientific]{\xintFloatToDecimal{\xintfloateval{round(add(exp(-#3)*#3^i/factorial(i), i=\BorneInf..\BorneSup),#2)}}}
+		\num[exponent-mode=scientific]{\xintFloatToDecimal{\xintfloateval{round(add(exp(-#3)*#3^i/factorial(i), i=\BorneInf..\BorneSup),#2)}}}%
 	}%
 	{%
-		\num[minimum-decimal-digits=#2]{\xintFloatToDecimal{\xintfloateval{round(add(exp(-#3)*#3^i/factorial(i), i=\BorneInf..\BorneSup),#2)}}}
-	}
+		\num[minimum-decimal-digits=#2]{\xintFloatToDecimal{\xintfloateval{round(add(exp(-#3)*#3^i/factorial(i), i=\BorneInf..\BorneSup),#2)}}}%
+	}%
 }
 
 \NewDocumentCommand{\NormaleC}{ s O{3} m m m m }{%
 	%*=ing,2=prec,3=mu,4=sigma,5=a,6=b
 	%def des bornes de l'intervalle suivant l'absence de a ou de b...
-	\def\BorneInf{#5}\def\BorneSup{#6}
+	\def\BorneInf{#5}\def\BorneSup{#6}%
 	\ifthenelse{\equal{#5}{*}}%
-		{\def\BorneInf{#6-10*#4}}
-		{}
+		{\def\BorneInf{#6-10*#4}}%
+		{}%
 	\ifthenelse{\equal{#6}{*}}%
-		{\def\BorneSup{#5+10*#4}}
-		{}
+		{\def\BorneSup{#5+10*#4}}%
+		{}%
 	\IfBooleanTF{#1}%
 	{%
-		\num[exponent-mode=scientific]{\xintFloatToDecimal{\xintfloateval{round(Phi((\BorneSup-#3)/#4)-Phi((\BorneInf-#3)/#4),#2)}}}
+		\num[exponent-mode=scientific]{\xintFloatToDecimal{\xintfloateval{round(Phi((\BorneSup-#3)/#4)-Phi((\BorneInf-#3)/#4),#2)}}}%
 	}%
 	{%
-		\num[minimum-decimal-digits=#2]{\xintFloatToDecimal{\xintfloateval{round(Phi((\BorneSup-#3)/#4)-Phi((\BorneInf-#3)/#4),#2)}}}
-	}
+		\num[minimum-decimal-digits=#2]{\xintFloatToDecimal{\xintfloateval{round(Phi((\BorneSup-#3)/#4)-Phi((\BorneInf-#3)/#4),#2)}}}%
+	}%
 }
 
 \NewDocumentCommand{\ExpoC}{ s O{3} m m m }{%*=ing,2=prec,3=lbda,4=a,5=b
-	\def\BorneInf{#4}\def\BorneSup{#5}
+	\def\BorneInf{#4}\def\BorneSup{#5}%
 	\ifthenelse{\equal{#4}{*}}%
-		{\def\BorneInf{0}}
-		{}
+		{\def\BorneInf{0}}%
+		{}%
 	\ifthenelse{\equal{#5}{*}}%
-		{\def\BorneSup{100/#3}}
-		{}
+		{\def\BorneSup{100/#3}}%
+		{}%
 	\IfBooleanTF{#1}%
 	{%
-		\num[exponent-mode=scientific]{\xintFloatToDecimal{\xintfloateval{round(exp(-#3*\BorneInf)-exp(-#3*\BorneSup),#2)}}}
+		\num[exponent-mode=scientific]{\xintFloatToDecimal{\xintfloateval{round(exp(-#3*\BorneInf)-exp(-#3*\BorneSup),#2)}}}%
 	}%
 	{%
 		\num[minimum-decimal-digits=#2]{\xintFloatToDecimal{\xintFloatToDecimal{\xintfloateval{round(exp(-#3*\BorneInf)-exp(-#3*\BorneSup),#2)}}}}
-	}
+	}%
 }
 
 %%------ARBRESPROBAS



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