texlive[64765] Master/texmf-dist: proflycee (20oct22)

commits+karl at tug.org commits+karl at tug.org
Thu Oct 20 22:37:30 CEST 2022


Revision: 64765
          http://tug.org/svn/texlive?view=revision&revision=64765
Author:   karl
Date:     2022-10-20 22:37:29 +0200 (Thu, 20 Oct 2022)
Log Message:
-----------
proflycee (20oct22)

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

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	2022-10-20 20:37:01 UTC (rev 64764)
+++ trunk/Master/texmf-dist/doc/latex/proflycee/ProfLycee-doc.tex	2022-10-20 20:37:29 UTC (rev 64765)
@@ -33,6 +33,8 @@
 \usepackage{graphics}
 \usepackage{hvlogos}
 \usepackage{simplekv}
+\usepackage{menukeys}
+\let\tab\relax
 \usepackage{tabto}
 \usepackage{pgf,pgfplots}
 \pgfplotsset{
@@ -63,8 +65,8 @@
 \setlength{\parindent}{0pt}
 \definecolor{LightGray}{gray}{0.9}
 
-\def\PLversion{1.3.5}
-\def\PLdate{17 Octobre 2022}
+\def\PLversion{1.3.6}
+\def\PLdate{18 Octobre 2022}
 
 \tcbset{vignettes/.style={%
 		nobeforeafter,box align=base,boxsep=0pt,enhanced,sharp corners=all,rounded corners=southeast,%
@@ -308,7 +310,7 @@
 	\item \ctex{xcolor} avec les options \textsf{[table,svgnames]} ;
 	\item \ctex{tikz}, \ctex{pgf}, \ctex{xfp} ;
 	\item \ctex{xparse}, \ctex{xkeyval}, \ctex{xstring}, \ctex{simplekv} ;
-	\item \ctex{listofitems}, \ctex{xintexpr} et \ctex{xintbinhex} ;
+	\item \ctex{listofitems}, \ctex{xintexpr} , \ctex{xintbinhex} et \ctex{xintgcd};
 	\item \ctex{tabularray}, \ctex{fontawesome5}, \ctex{tcolorbox}.
 \end{itemize}
 \end{codeinfo}
@@ -354,11 +356,11 @@
 \begin{codeinfo}
 En compilant (notamment avec les packages \ctex{minted} et \ctex{pythontex}) on peut spécifier des répertoires particuliers pour les (ou des) fichiers auxiliaires.
 
-Avec l'option \Cle{build}, l'utilisateur a la possibilité de placer les fichiers temporaires de \ctex{minted} et \ctex{pythontex} dans un répertoire \textsf{build} du répertoire courant.
+Avec l'option \Cle{build}, l'utilisateur a la possibilité de placer les fichiers temporaires de \ctex{minted} et \ctex{pythontex} dans un répertoire \menu{build} du répertoire courant.
 
 \smallskip
 
-Dans ce cas il vaut mieux créer au préalable le répertoire \textsf{build} avant de compiler un fichier !
+Dans ce cas il vaut mieux créer au préalable le répertoire \menu{build} avant de compiler un fichier !
 \end{codeinfo}
 
 \begin{codetex}[listing only]
@@ -509,7 +511,7 @@
 \end{codetex}
 
 \begin{codecles}
-Certains paramètres peuvent être gérés directement dans la commande \ctex{\textbackslash splinetikz} :
+Certains paramètres peuvent être gérés directement dans la commande \ctex{splinetikz} :
 %
 \begin{itemize}
 	\item la couleur de la courbe par la \textsf{clé} \Cle{couleur} ;\hfill{}défaut \Cle{red}
@@ -654,11 +656,11 @@
 \subsection{Définitions}
 
 \begin{codeidee}
-En parallèle de l'outil \ctex{\textbackslash splinetikz}, il existe l'outil \ctex{\textbackslash tangentetikz} qui va permettre de tracer des tangentes à l'aide de la liste de points précédemment définie pour l'outil \ctex{\textbackslash splinetikz}.
+En parallèle de l'outil \ctex{splinetikz}, il existe l'outil \ctex{tangentetikz} qui va permettre de tracer des tangentes à l'aide de la liste de points précédemment définie pour l'outil \ctex{splinetikz}.
 
 \smallskip
 
-NB : il peut fonctionner indépendamment de l'outil \ctex{\textbackslash splinetikz} puisque la liste des points de travail est gérée de manière autonome !
+NB : il peut fonctionner indépendamment de l'outil \ctex{splinetikz} puisque la liste des points de travail est gérée de manière autonome !
 \end{codeidee}
 
 \begin{codetex}[listing only]
@@ -1007,7 +1009,7 @@
 \subsection{La commande \og ligneCF \fg}
 
 \begin{codeinfo}
-Une fois les paramètres déclarés, il faut créer les différentes lignes, grâce à la \ctex{\textbackslash ligneCF}.
+Une fois les paramètres déclarés, il faut créer les différentes lignes, grâce à la \ctex{ligneCF}.
 \end{codeinfo}
 
 \begin{codetex}[listing only]
@@ -1089,7 +1091,7 @@
 \end{codeinfo}
 
 \begin{codeinfo}
-Le style utilisé pour formater le code Python n'est pas modifiable. Il donne un rendu proche de celui des packages commes \ctex{pythontex} ou \ctex{minted}.
+Le style utilisé pour formater le code Python n'est pas modifiable. Il donne un rendu proche de celui des packages comme \ctex{pythontex} ou \ctex{minted}.
 
 \smallskip
 
@@ -1099,7 +1101,7 @@
 \subsection{Présentation de code Python grâce à listings}
 
 \begin{codeidee}
-L'environnement \ctex{\textbackslash envcodepython} permet de présenter du code python, dans une \ctex{tcolorbox} avec un style particulier.
+L'environnement \ctex{envcodepython} permet de présenter du code python, dans une \ctex{tcolorbox} avec un style particulier.
 \end{codeidee}
 
 \begin{codetex}[listing only]
@@ -1288,7 +1290,7 @@
 \subsection{Présentation de code Python via pythontex}\label{pythontex}
 
 \begin{codeidee}
-L'environnement \ctex{\textbackslash envcodepythontex} est donc lié à \ctex{pythontex} (chargé par \ctex{ProfLycee}, avec l'option \textit{autogobble}) permet de présenter du code python, dans une \ctex{tcolorbox} avec un style particulier.
+L'environnement \ctex{envcodepythontex} est donc lié à \ctex{pythontex} (chargé par \ctex{ProfLycee}, avec l'option \textit{autogobble}) permet de présenter du code python, dans une \ctex{tcolorbox} avec un style particulier.
 \end{codeidee}
 
 \begin{codetex}[listing only]
@@ -1346,7 +1348,7 @@
 \end{codeinfo}
 
 \begin{codeidee}
-L'environnement \ctex{\textbackslash envcodepythonminted} permet de présenter du code python, dans une \ctex{tcolorbox} avec un style (\textit{minted}) particulier.
+L'environnement \ctex{envcodepythonminted} permet de présenter du code python, dans une \ctex{tcolorbox} avec un style (\textit{minted}) particulier.
 \end{codeidee}
 
 \begin{codetex}[listing only]
@@ -1402,7 +1404,7 @@
 \begin{codeidee}
 \ctex{pythontex} permet également de \textit{simuler} (en exécutant également !) du code python dans une \textit{console}.
 
-C'est l'environnement \ctex{\textbackslash envconsolepythontex} qui permet de le faire.
+C'est l'environnement \ctex{envconsolepythontex} qui permet de le faire.
 \end{codeidee}
 
 \begin{codetex}[listing only]
@@ -1470,7 +1472,7 @@
 \subsection{Présentation de Pseudo-Code}
 
 \begin{codeidee}
-L'environnement \ctex{\textbackslash envpseudocode} permet de présenter du (pseudo-code) dans une \ctex{tcolorbox}.
+L'environnement \ctex{envpseudocode} permet de présenter du (pseudo-code) dans une \ctex{tcolorbox}.
 \end{codeidee}
 
 \begin{codeinfo}
@@ -1555,7 +1557,7 @@
 \begin{codeinfo}
 Le style \ctex{listings} utilisé par la commande a l'option \Cle{mathescape} activé, et accessible grâce aux délimiteurs \Cle{(*...*)}.
 
-Cela permet d'insérer du code \LaTeX{} dans l'environnement \ctex{\textbackslash envpseudocode} (attention au fontes de rendu par contre !).
+Cela permet d'insérer du code \LaTeX{} dans l'environnement \ctex{envpseudocode} (attention au fontes de rendu par contre !).
 \end{codeinfo}
 
 \begin{codetex}[listing only]
@@ -2367,7 +2369,7 @@
 \end{codesortie}
 
 \begin{codeinfo}
-IL existe également une commande auxiliaire, \ctex{PLreglinpts} pour afficher le nuage de points avec quelques options, dans un environnement \TikZ{} classique (sans \textsf{pgfplot})\ldots
+Il existe également une commande auxiliaire, \ctex{PLreglinpts} pour afficher le nuage de points avec quelques options, dans un environnement \TikZ{} classique (sans \textsf{pgfplot})\ldots
 \end{codeinfo}
 
 \begin{codetex}[listing only]
@@ -2712,9 +2714,9 @@
 Il existe, de manière marginale, quelques commandes complémentaires qui ne seront pas trop détaillées mais qui sont présentes dans l'introduction :
 
 \begin{itemize}
-	\item \ctex{\textbackslash{}PLfenetre} qui restreint les tracés à la fenêtre (utile pour des courbes qui \textit{débordent}) ;
-	\item \ctex{\textbackslash{}PLfenetresimple} qui permet d'automatiser le tracé des grilles/axes/graduations dans leurs versions par défaut, avec peu de paramétrages ;
-	\item \ctex{\textbackslash{}PLorigine} pour rajouter le libellé de l'origine si non affiché par les axes.
+	\item \ctex{PLfenetre} qui restreint les tracés à la fenêtre (utile pour des courbes qui \textit{débordent}) ;
+	\item \ctex{PLfenetresimple} qui permet d'automatiser le tracé des grilles/axes/graduations dans leurs versions par défaut, avec peu de paramétrages ;
+	\item \ctex{PLorigine} pour rajouter le libellé de l'origine si non affiché par les axes.
 \end{itemize}
 \end{codeinfo}
 
@@ -2739,7 +2741,7 @@
 \end{codetex}
 
 \begin{codecles}
-Cette commande, liée à la commande \ctex{\textbackslash{}PLreglin} permet de représenter le nuage de points associé aux deux listes, avec les \Cle{clés} suivantes :
+Cette commande, liée à la commande \ctex{PLreglin} permet de représenter le nuage de points associé aux deux listes, avec les \Cle{clés} suivantes :
 
 \begin{itemize}
 	\item \Cle{taille} qui est la taille des points du nuage ; \hfill~défaut \Cle{2pt}
@@ -2788,7 +2790,7 @@
 \end{codetex}
 
 \begin{codecles}
-Cette commande permet de rajouter le point moyen du nuage, calculé par la commande \ctex{\textbackslash{}PLreglin}, avec les \Cle{clés} :
+Cette commande permet de rajouter le point moyen du nuage, calculé par la commande \ctex{PLreglin}, avec les \Cle{clés} :
 
 \begin{itemize}
 	\item \Cle{police}, comme précédemment ; \hfill~défaut \Cle{\textbackslash{}normalsize\textbackslash{}normalfont} ;
@@ -3345,8 +3347,8 @@
 Les \Cle{donnees} seront à préciser sous forme \ctex{<sommet1>/<proba1>/<position1>,<sommet2>/<proba2>/<position2>,...} avec comme \og sens de lecture \fg{} de la gauche vers la droite puis du haut vers le bas (on balaye les \textit{sous-arbres}), avec comme possibilités :
 
 \begin{itemize}
-	\item une donnée \Cle{<proba>} peut être laissée vide ;
-	\item une donnée \Cle{<position>} peut valoir \Cle{above} (au-dessus), \Cle{below} (en-dessous) ou être laissée \Cle{vide} (sur).
+	\item une donnée \Cle{proba} peut être laissée vide ;
+	\item une donnée \Cle{position} peut valoir \Cle{above} (au-dessus), \Cle{below} (en-dessous) ou être laissée \Cle{vide} (sur).
 \end{itemize}
 \end{codeinfo}
 
@@ -3556,6 +3558,390 @@
 
 \newpage
 
+\part{Outils pour l'arithmétique}
+
+\section{Conversions binaire/hexadécimal/décimal}\label{conversions}
+
+\subsection{Idée}
+
+\begin{codeidee}
+L'idée est de \textit{compléter} les possibilités offertes par le package \ctex{xintbinhex}, en mettant en forme quelques conversions :
+
+\begin{itemize}
+	\item décimal en binaire avec blocs de 4 chiffres en sortie ;
+	\item conversion binaire ou hexadécimal en décimal avec écriture polynomiale.
+\end{itemize}
+\end{codeidee}
+
+\begin{codeinfo}
+Le package \ctex{xintbinhex} est la base de ces macros, puisqu'il permet de faire des conversions directes !
+
+\smallskip
+
+Les macros présentées ici ne font que les intégrer dans un environnement adapté à une correction ou une présentation !
+\end{codeinfo}
+
+\begin{codetex}[listing only]
+\xintDecToHex{100}
+\xintDecToBin{51}
+\xintHexToDec{A4C}
+\xintBinToDec{110011}
+\xintBinToHex{11111111}
+\xintHexToBin{ACDC}
+\xintCHexToBin{3F}
+\end{codetex}
+
+\begin{codesortie}
+\xintDecToHex{100}
+
+\xintDecToBin{51}
+
+\xintHexToDec{A4C}
+
+\xintBinToDec{110011}
+
+\xintBinToHex{11111111}
+
+\xintHexToBin{ACDC}
+
+\xintCHexToBin{3F}
+\end{codesortie}
+
+\subsection{Conversion décimal vers binaire}
+
+\begin{codetex}[listing only]
+\PLconvdecbin(*)[<clés>]{<nombre>}
+\end{codetex}
+
+\begin{codecles}
+Concernant la commande en elle même, peu de paramétrage :
+
+\begin{itemize}
+	\item la version \textit{étoilée} qui permet de ne pas afficher de zéros avant pour \og compléter \fg{} ;
+	\item le booléen \Cle{affbase} qui permet d'afficher ou non la base des nombres ; \hfill{}défaut \Cle{true}
+	\item l'argument, mandataire, est le nombre entier à convertir.
+\end{itemize}
+
+Le formatage est géré par \ctex{sinuitx}, le mieux est donc de positionner la commande dans un environnement mathématique.
+
+\smallskip
+
+Les nombres écrits en binaire sont, par défaut, présentés en bloc(s) de 4 chiffres.
+\end{codecles}
+
+\begin{codetex}[listing only]
+% Conversion avec affichage de la base et par bloc de 4
+$\PLconvdecbin{415}$
+% Conversion avec affichage de la base et sans forcément des blocs de 4
+$\PLconvdecbin*{415}$
+% Conversion sans affichage de la base et par bloc de 4
+$\PLconvdecbin[affbase=false]{415}$
+% Conversion sans affichage de la base et sans forcément des blocs de 4
+$\PLconvdecbin*[affbase=false]{415}$
+\end{codetex}
+
+\begin{codesortie}
+$\PLconvdecbin{415}$
+
+\smallskip
+
+$\PLconvdecbin*{415}$
+
+\smallskip
+
+$\PLconvdecbin[affbase=false]{415}$
+
+\smallskip
+
+$\PLconvdecbin*[affbase=false]{415}$
+\end{codesortie}
+
+\subsection{Conversion binaire vers hexadécimal}
+
+\begin{codeinfo}
+L'idée est ici de présenter la conversion, grâce à la conversion \og directe \fg{} par blocs de 4 chiffres :
+
+\begin{itemize}
+	\item la macro rajoute éventuellement les zéros pour compléter ;
+	\item elle découpe par blocs de 4 chiffres binaires ;
+	\item elle présente la conversion de chacun des blocs de 4 chiffres binaires ;
+	\item elle affiche la conversion en binaire.
+\end{itemize}
+\end{codeinfo}
+
+\begin{codetex}[listing only]
+\PLconvbinhex[<clés>]{<nombre>}
+\end{codetex}
+
+\begin{codecles}
+Quelques \Cle{clés} sont disponibles pour cette commande :
+
+\begin{itemize}
+	\item le booléen \Cle{affbase} qui permet d'afficher ou non la base des nombres ; \hfill{}défaut \Cle{true}
+	\item le booléen \Cle{details} qui permet d'afficher ou le détail par bloc de 4. \hfill{}défaut \Cle{true}
+	%\item la clé \Cle{trait} qui permet de modifier l'épaisseur du crochet. \hfill{}défaut \Cle{0.5pt}
+\end{itemize}
+
+Le formatage est géré par le package \ctex{sinuitx}, le mieux est de positionner la commande dans un environnement mathématique.
+\end{codecles}
+
+\begin{codetex}[listing only]
+%conversion avec détails et affichage de la base
+$\PLconvbinhex{110011111}$
+%conversion sans détails et affichage de la base
+$\PLconvbinhex[details=false]{110011111}$
+%conversion sans détails et sans affichage de la base
+$\PLconvbinhex[affbase=false,details=false]{110011111}$
+\end{codetex}
+
+\begin{codesortie}
+$\PLconvbinhex{110011111}$
+
+$\PLconvbinhex[details=false]{110011111}$
+
+$\PLconvbinhex[affbase=false,details=false]{110011111}$
+\end{codesortie}
+
+\pagebreak
+
+\subsection{Conversion binaire ou hexadécimal en décimal}
+
+\begin{codeinfo}
+L'idée est ici de présenter la conversion, grâce à l'écriture polynômiale :
+
+\begin{itemize}
+	\item écrit la somme des puissances ;
+	\item convertir si besoin les \textit{chiffres} hexadécimal ;
+	\item peut ne pas afficher les monômes de coefficient 0.
+\end{itemize}
+\end{codeinfo}
+
+\begin{codetex}[listing only]
+\PLconvtodec[<clés>]{<nombre>}
+\end{codetex}
+
+\begin{codecles}
+Quelques \Cle{clés} sont disponibles pour cette commande :
+
+\begin{itemize}
+	\item la clé \Cle{basedep} qui est la base de départ (2 ou 16 !) ; \hfill{}défaut \Cle{2}
+	\item le booléen \Cle{affbase} qui permet d'afficher ou non la base des nombres ; \hfill{}défaut \Cle{true}
+	\item le booléen \Cle{details} qui permet d'afficher ou le détail par bloc de 4 ; \hfill{}défaut \Cle{true}
+	\item le booléen \Cle{zeros} qui affiche les chiffres 0 dans la somme. \hfill{}défaut \Cle{true}
+\end{itemize}
+
+Le formatage est toujours géré par le package \ctex{sinuitx}, le mieux est de positionner la commande dans un environnement mathématique.
+\end{codecles}
+
+\begin{codetex}[listing only]
+%conversion 16->10 avec détails et affichage de la base et zéros
+$\PLconvtodec[basedep=16]{19F}$
+%conversion 2->10 avec détails et affichage de la base et zéros
+$\PLconvtodec{110011}$
+%conversion 2->10 avec détails et affichage de la base et sans zéros
+$\PLconvtodec[zeros=false]{110011}$
+%conversion 16->10 sans détails et affichage de la base et avec zéros
+$\PLconvtodec[basedep=16,details=false]{AC0DC}$
+%conversion 16->10 avec détails et sans affichage de la base et sans zéros
+$\PLconvtodec[zeros=false,basedep=16]{AC0DC}$
+\end{codetex}
+
+\begin{codesortie}
+$\PLconvtodec[basedep=16]{19F}$
+
+$\PLconvtodec{110011}$
+
+$\PLconvtodec[zeros=false]{110011}$
+
+$\PLconvtodec[basedep=16,details=false]{AC0DC}$
+
+$\PLconvtodec[zeros=false,basedep=16]{AC0DC}$
+\end{codesortie}
+
+\newpage
+
+\section{Conversion \og présentée \fg{} d'un nombre en décimal}\label{convrestes}
+
+\subsection{Idée}
+
+\begin{codeidee}
+L'idée est de proposer une \og présentation \fg{} par divisions euclidiennes pour la conversion d'un entier donné en base 10 dans une base quelconque.
+
+\smallskip
+
+Les commandes de la section précédente donne \textit{juste} les résultats, dans cette section il y a en plus la présentation de la conversion.
+
+\smallskip
+
+La commande utilise -- par défaut -- du code \TikZ{} en mode \ctex{overlay}, donc on pourra déclarer -- si ce n'est pas fait -- dans le préambule, la commande qui suit.
+\end{codeidee}
+
+\begin{codetex}[listing only]
+...
+\tikzstyle{every picture}+=[remember picture]
+...
+\end{codetex}
+
+\subsection{Code et clés}
+
+\begin{codetex}[]
+%conversion basique
+\PLconvDepuisDec{78}{2}
+\end{codetex}
+
+\begin{codeinfo}
+La \og tableau \fg, qui est géré par \ctex{array} est inséré dans un \ctex{ensuremath}, donc les \ctex{\$...\$} ne sont pas utiles.
+\end{codeinfo}
+
+\begin{codetex}[listing only]
+\PLconvDepuisDec[<options>]{<nombre en base 10>}{<base d'arrivée>}
+\end{codetex}
+
+\begin{codecles}
+Quelques options pour cette commande :
+
+\begin{itemize}
+	\item la clé \Cle{couleur} pour la couleur du \og rectangle \fg{} des restes ; \hfill{}défaut \Cle{red}
+	\item la clé \Cle{decalh} pour gérer le décalage H du \og rectangle \fg{}, qui peut être donné soit sous la forme \Cle{esp} ou soit sous la forme \Cle{espgauche/espdroite}; \hfill{}défaut \Cle{2pt}
+	\item la clé \Cle{decalv} pour le décalage vertical du \og rectangle \fg{} ; \hfill{}défaut \Cle{3pt}
+	\item la clé \Cle{noeud} pour le préfixe du nœud du premier et du dernier reste (pour utilisation en \TikZ) ; \hfill{}défaut \Cle{EEE}
+	\item le booléen \Cle{rect} pour afficher ou non le \og rectangle \fg{} des restes ; \hfill{}défaut \Cle{true}
+	\item le booléen \Cle{couleurres} pour afficher ou non la conversion en couleur (identique au rectangle). \hfill{}défaut \Cle{false}
+\end{itemize}
+\end{codecles}
+
+\begin{codetex}[listing only]
+%conversion avec changement de couleur
+\PLconvDepuisDec[couleur=DarkBlue]{45}{2}
+
+%conversion sans le rectangle
+Par divisions euclidiennes successives, \PLconvDepuisDec[rect=false]{54}{3}.
+
+%conversion avec gestion du decalh pour le placement précis du rectangle
+\PLconvDepuisDec[couleur=Goldenrod,decalh=6pt/2pt]{1012}{16}
+
+%conversion avec nœud personnalisé et réutilisation
+\PLconvDepuisDec[couleur=ForestGreen,couleurres,noeud=TEST]{100}{9}.
+\begin{tikzpicture}
+	\draw[overlay,ForestGreen,thick,->] (TEST2.south east) to[bend right] ++ (3cm,-1cm) node[right] {test } ;
+\end{tikzpicture}
+\end{codetex}
+
+\begin{codesortie}
+\PLconvDepuisDec[couleur=DarkBlue]{45}{2}
+
+\medskip
+
+Par divisions euclidiennes successives, \PLconvDepuisDec[rect=false]{54}{3}.
+
+\medskip
+
+\PLconvDepuisDec[couleur=Goldenrod,decalh=6pt/2pt]{1012}{16}
+
+\medskip
+
+On obtient donc \PLconvDepuisDec[couleur=ForestGreen,couleurres,noeud=TEST]{100}{9}.
+\begin{tikzpicture}
+	\draw[overlay,ForestGreen,thick,->] (TEST2.south east) to[bend right] ++ (3cm,-1cm) node[right] {test } ;
+\end{tikzpicture}
+
+\vspace{1.5cm}
+
+~
+\end{codesortie}
+
+\newpage
+
+\section{Algorithme d'Euclide pour le PGCD}\label{prespgcd}
+
+\subsection{Idée}
+
+\begin{codeidee}
+L'idée est de proposer une \og présentation \fg{} de l'algorithme d'Euclide pour le calcul du PGCD de deux entiers.
+
+Le package \ctex{xintgcd} permet déjà de le faire, il s'agit ici de travailler sur la \textit{mise en forme} avec alignement des restes.
+\end{codeidee}
+
+\begin{codetex}[listing only]
+\PresentationPGCD[<options>]{a}{b}
+\end{codetex}
+
+\begin{codetex}[listing only]
+...
+\tikzstyle{every picture}+=[remember picture]
+...
+\PresentationPGCD{150}{27}
+\end{codetex}
+
+\begin{codesortie}
+\PresentationPGCD{150}{27}
+\end{codesortie}
+
+\begin{codeattention}
+La mise en valeur du dernier reste non nul est géré par du code \TikZ, en mode \ctex{overlay}, donc il faut bien penser à déclarer dans le préambule :
+
+\hspace{5mm}\ctex{\textbackslash{}tikzstyle\{every picture\}+=[remember picture]}
+\end{codeattention}
+
+\subsection{Options et clés}
+
+\begin{codecles}
+Quelques options disponibles pour cette commande :
+
+\begin{itemize}
+	\item la clé \Cle{Couleur} qui correspond à la couleur pour la mise en valeur ; \hfill{}défaut \Cle{red}
+	\item la clé \Cle{DecalRect} qui correspond à l'écartement du rectangle de mise en valeur ; \hfill{}défaut \Cle{2pt}
+	\item le booléen \Cle{Rectangle} qui gère l'affichage ou non du rectangle de mise ne valeur ; \hfill{}défaut \Cle{true}
+	\item la clé \Cle{Noeud} qui gère le préfixe du nom du nœud \TikZ{} du rectangle (pour exploitation ultérieure) ; \hfill{}défaut \Cle{FFF}
+	\item le booléen \Cle{CouleurResultat} pour mettre ou non en couleur de PGCD ; \hfill{}défaut \Cle{false}
+	\item le booléen \Cle{AfficheConclusion} pour afficher ou non la conclusion ; \hfill{}défaut \Cle{true}
+	\item le booléen \Cle{AfficheDelimiteurs} pour afficher ou non les délimiteurs (accolade gauche et trait droit). \hfill{}défaut \Cle{true}
+\end{itemize}
+
+\medskip
+
+Le rectangle de mise en valeur est donc un nœud \TikZ{} qui sera nommé, par défaut \ctex{FFF1}.
+
+\medskip
+
+La présentation est dans un environnement \ctex{ensuremath} donc les \ctex{\$...\$} ne sont pas indispensables.
+\end{codecles}
+
+\begin{codetex}[]
+\PresentationPGCD[CouleurResultat]{150}{27}
+\end{codetex}
+
+\pagebreak
+
+\begin{codetex}[]
+\PresentationPGCD[CouleurResultat,Couleur=ForestGreen]{1250}{450}.
+
+\PresentationPGCD[CouleurResultat,Couleur=DarkBlue]{13500}{2500}.
+
+\PresentationPGCD[Rectangle=false]{420}{540}.
+
+\medskip
+
+D'après l'algorithme d'Euclide, on a $\left| \PresentationPGCD[Couleur=LightSkyBlue,AfficheConclusion=false,AfficheDelimiteurs=false]{123456789}{9876} \right.$
+\begin{tikzpicture}
+	\draw[overlay,LightSkyBlue,thick,<-] (FFF1.east) to[bend right] ++ (2cm,0.75cm) node[right] {dernier reste non nul} ;
+\end{tikzpicture}
+\end{codetex}
+
+\subsection{Compléments}
+
+\begin{codeinfo}
+La présentation des divisions euclidiennes est gérée par un tableau du type \ctex{array}, avec alignement vertical de symboles \ctex{=} et \ctex{+}.
+
+Par défaut, les délimiteurs choisis sont donc l'accolade gauche et le trait droit, mais la clé booléenne \Cle{AfficheDelimiteurs=false} permet de choisir des délimiteurs différents.
+\end{codeinfo}
+
+\begin{codetex}[]
+$\left[ \PresentationPGCD[AfficheConclusion=false,AfficheDelimiteurs=false]{1234}{5} \right]$
+\end{codetex}
+
+\newpage
+
 \part{Outils divers et variés}
 
 \section{Fractions, ensembles}
@@ -3578,7 +3964,7 @@
 \item le second, mandataire, est le \textsf{calcul} ou la \textsf{division} à convertir.
 \end{itemize}
 
-À noter que la macro est dans un bloc \textsf{ensuremath} donc les \textsf{\$\ldots\$} ne sont pas nécessaires.
+À noter que la macro est dans un bloc \ctex{ensuremath} donc les \ctex{\$...\$} ne sont pas nécessaires.
 \end{codecles}
 
 \begin{codetex}[listing only]
@@ -3911,298 +4297,8 @@
 \end{center}
 \end{codesortie}
 
-\section{Conversions binaire/hexadécimal/décimal}\label{conversions}
-
-\subsection{Idée}
-
-\begin{codeidee}
-L'idée est de \textit{compléter} les possibilités offertes par le package \ctex{xintbinhex}, en mettant en forme quelques conversions :
-
-\begin{itemize}
-	\item décimal en binaire avec blocs de 4 chiffres en sortie ;
-	\item conversion binaire ou hexadécimal en décimal avec écriture polynomiale.
-\end{itemize}
-\end{codeidee}
-
-\begin{codeinfo}
-Le package \ctex{xintbinhex} est la base de ces macros, puisqu'il permet de faire des conversions directes !
-
-\smallskip
-
-Les macros présentées ici ne font que les intégrer dans un environnement adapté à une correction ou une présentation !
-\end{codeinfo}
-
-\begin{codetex}[listing only]
-\xintDecToHex{100}
-\xintDecToBin{51}
-\xintHexToDec{A4C}
-\xintBinToDec{110011}
-\xintBinToHex{11111111}
-\xintHexToBin{ACDC}
-\xintCHexToBin{3F}
-\end{codetex}
-
-\begin{codesortie}
-\xintDecToHex{100}
-
-\xintDecToBin{51}
-
-\xintHexToDec{A4C}
-
-\xintBinToDec{110011}
-
-\xintBinToHex{11111111}
-
-\xintHexToBin{ACDC}
-
-\xintCHexToBin{3F}
-\end{codesortie}
-
-\subsection{Conversion décimal vers binaire}
-
-\begin{codetex}[listing only]
-\PLconvdecbin(*)[<clés>]{<nombre>}
-\end{codetex}
-
-\begin{codecles}
-Concernant la commande en elle même, peu de paramétrage :
-
-\begin{itemize}
-	\item la version \textit{étoilée} qui permet de ne pas afficher de zéros avant pour \og compléter \fg{} ;
-	\item le booléen \Cle{affbase} qui permet d'afficher ou non la base des nombres ; \hfill{}défaut \Cle{true}
-	\item l'argument, mandataire, est le nombre entier à convertir.
-\end{itemize}
-
-Le formatage est géré par \ctex{sinuitx}, le mieux est donc de positionner la commande dans un environnement mathématique.
-
-\smallskip
-
-Les nombres écrits en binaire sont, par défaut, présentés en bloc(s) de 4 chiffres.
-\end{codecles}
-
-\begin{codetex}[listing only]
-% Conversion avec affichage de la base et par bloc de 4
-$\PLconvdecbin{415}$
-% Conversion avec affichage de la base et sans forcément des blocs de 4
-$\PLconvdecbin*{415}$
-% Conversion sans affichage de la base et par bloc de 4
-$\PLconvdecbin[affbase=false]{415}$
-% Conversion sans affichage de la base et sans forcément des blocs de 4
-$\PLconvdecbin*[affbase=false]{415}$
-\end{codetex}
-
-\begin{codesortie}
-$\PLconvdecbin{415}$
-
-\smallskip
-
-$\PLconvdecbin*{415}$
-
-\smallskip
-
-$\PLconvdecbin[affbase=false]{415}$
-
-\smallskip
-
-$\PLconvdecbin*[affbase=false]{415}$
-\end{codesortie}
-
-\subsection{Conversion binaire vers hexadécimal}
-
-\begin{codeinfo}
-L'idée est ici de présenter la conversion, grâce à la conversion \og directe \fg{} par blocs de 4 chiffres :
-
-\begin{itemize}
-	\item la macro rajoute éventuellement les zéros pour compléter ;
-	\item elle découpe par blocs de 4 chiffres binaires ;
-	\item elle présente la conversion de chacun des blocs de 4 chiffres binaires ;
-	\item elle affiche la conversion en binaire.
-\end{itemize}
-\end{codeinfo}
-
-\begin{codetex}[listing only]
-\PLconvbinhex[<clés>]{<nombre>}
-\end{codetex}
-
-\begin{codecles}
-Quelques \Cle{clés} sont disponibles pour cette commande :
-
-\begin{itemize}
-	\item le booléen \Cle{affbase} qui permet d'afficher ou non la base des nombres ; \hfill{}défaut \Cle{true}
-	\item le booléen \Cle{details} qui permet d'afficher ou le détail par bloc de 4. \hfill{}défaut \Cle{true}
-	%\item la clé \Cle{trait} qui permet de modifier l'épaisseur du crochet. \hfill{}défaut \Cle{0.5pt}
-\end{itemize}
-
-Le formatage est géré par le package \ctex{sinuitx}, le mieux est de positionner la commande dans un environnement mathématique.
-\end{codecles}
-
-\begin{codetex}[listing only]
-%conversion avec détails et affichage de la base
-$\PLconvbinhex{110011111}$
-%conversion sans détails et affichage de la base
-$\PLconvbinhex[details=false]{110011111}$
-%conversion sans détails et sans affichage de la base
-$\PLconvbinhex[affbase=false,details=false]{110011111}$
-\end{codetex}
-
-\begin{codesortie}
-$\PLconvbinhex{110011111}$
-
-$\PLconvbinhex[details=false]{110011111}$
-
-$\PLconvbinhex[affbase=false,details=false]{110011111}$
-\end{codesortie}
-
-\pagebreak
-
-\subsection{Conversion binaire ou hexadécimal en décimal}
-
-\begin{codeinfo}
-L'idée est ici de présenter la conversion, grâce à l'écriture polynômiale :
-
-\begin{itemize}
-	\item écrit la somme des puissances ;
-	\item convertir si besoin les \textit{chiffres} hexadécimal ;
-	\item peut ne pas afficher les monômes de coefficient 0.
-\end{itemize}
-\end{codeinfo}
-
-\begin{codetex}[listing only]
-\PLconvtodec[<clés>]{<nombre>}
-\end{codetex}
-
-\begin{codecles}
-Quelques \Cle{clés} sont disponibles pour cette commande :
-
-\begin{itemize}
-	\item la clé \Cle{basedep} qui est la base de départ (2 ou 16 !) ; \hfill{}défaut \Cle{2}
-	\item le booléen \Cle{affbase} qui permet d'afficher ou non la base des nombres ; \hfill{}défaut \Cle{true}
-	\item le booléen \Cle{details} qui permet d'afficher ou le détail par bloc de 4 ; \hfill{}défaut \Cle{true}
-	\item le booléen \Cle{zeros} qui affiche les chiffres 0 dans la somme. \hfill{}défaut \Cle{true}
-\end{itemize}
-
-Le formatage est toujours géré par le package \ctex{sinuitx}, le mieux est de positionner la commande dans un environnement mathématique.
-\end{codecles}
-
-\begin{codetex}[listing only]
-%conversion 16->10 avec détails et affichage de la base et zéros
-$\PLconvtodec[basedep=16]{19F}$
-%conversion 2->10 avec détails et affichage de la base et zéros
-$\PLconvtodec{110011}$
-%conversion 2->10 avec détails et affichage de la base et sans zéros
-$\PLconvtodec[zeros=false]{110011}$
-%conversion 16->10 sans détails et affichage de la base et avec zéros
-$\PLconvtodec[basedep=16,details=false]{AC0DC}$
-%conversion 16->10 avec détails et sans affichage de la base et sans zéros
-$\PLconvtodec[zeros=false,basedep=16]{AC0DC}$
-\end{codetex}
-
-\begin{codesortie}
-$\PLconvtodec[basedep=16]{19F}$
-
-$\PLconvtodec{110011}$
-
-$\PLconvtodec[zeros=false]{110011}$
-
-$\PLconvtodec[basedep=16,details=false]{AC0DC}$
-
-$\PLconvtodec[zeros=false,basedep=16]{AC0DC}$
-\end{codesortie}
-
 \newpage
 
-\section{Conversion \og présentée \fg{} d'un nombre en décimal}\label{convrestes}
-
-\subsection{Idée}
-
-\begin{codeidee}
-L'idée est de proposer une \og présentation \fg{} par divisions euclidiennes pour la conversion d'un entier donné en base 10 dans une base quelconque.
-
-\smallskip
-
-Les commandes de la section précédente donne \textit{juste} les résultats, dans cette section il y a en plus la présentation de la conversion.
-
-\smallskip
-
-La commande utilise -- par défaut -- du code \TikZ{} en mode \ctex{overlay}, donc on pourra déclarer -- si ce n'est pas fait -- dans le préambule, la commande qui suit.
-\end{codeidee}
-
-\begin{codetex}[listing only]
-...
-\tikzstyle{every picture}+=[remember picture]
-...
-\end{codetex}
-
-\subsection{Code et clés}
-
-\begin{codetex}[]
-%conversion basique
-\PLconvDepuisDec{78}{2}
-\end{codetex}
-
-\begin{codeinfo}
-La \og tableau \fg, qui est géré par \ctex{array} est inséré dans un \ctex{ensuremath}, donc les \ctex{\$...\$} ne sont pas utiles.
-\end{codeinfo}
-
-\begin{codetex}[listing only]
-\PLconvDepuisDec[<options>]{<nombre en base 10>}{<base d'arrivée>}
-\end{codetex}
-
-\begin{codecles}
-Quelques options pour cette commande :
-
-\begin{itemize}
-	\item la clé \Cle{couleur} pour la couleur du \og rectangle \fg{} des restes ; \hfill{}défaut \Cle{red}
-	\item la clé \Cle{decalh} pour gérer le décalage H du \og rectangle \fg{}, qui peut être donné soit sous la forme \Cle{esp} ou soit sous la forme \Cle{espgauche/espdroite}; \hfill{}défaut \Cle{2pt}
-	\item la clé \Cle{decalv} pour le décalage vertical du \og rectangle \fg{} ; \hfill{}défaut \Cle{3pt}
-	\item la clé \Cle{noeud} pour le préfixe du nœud du premier et du dernier reste (pour utilisation en \TikZ) ; \hfill{}défaut \Cle{EEE}
-	\item le booléen \Cle{rect} pour afficher ou non le \og rectangle \fg{} des restes ; \hfill{}défaut \Cle{true}
-	\item le booléen \Cle{couleurres} pour afficher ou non la conversion en couleur (identique au rectangle). \hfill{}défaut \Cle{false}
-\end{itemize}
-\end{codecles}
-
-\begin{codetex}[listing only]
-%conversion avec changement de couleur
-\PLconvDepuisDec[couleur=DarkBlue]{45}{2}
-
-%conversion sans le rectangle
-Par divisions euclidiennes successives, \PLconvDepuisDec[rect=false]{54}{3}.
-
-%conversion avec gestion du decalh pour le placement précis du rectangle
-\PLconvDepuisDec[couleur=Goldenrod,decalh=6pt/2pt]{1012}{16}
-
-%conversion avec nœud personnalisé et réutilisation
-\PLconvDepuisDec[couleur=ForestGreen,couleurres,noeud=TEST]{100}{9}.
-\begin{tikzpicture}
-	\draw[overlay,ForestGreen,thick,->] (TEST2.south east) to[bend right] ++ (3cm,-1cm) node[right] {test } ;
-\end{tikzpicture}
-\end{codetex}
-
-\begin{codesortie}
-\PLconvDepuisDec[couleur=DarkBlue]{45}{2}
-
-\medskip
-
-Par divisions euclidiennes successives, \PLconvDepuisDec[rect=false]{54}{3}.
-
-\medskip
-
-\PLconvDepuisDec[couleur=Goldenrod,decalh=6pt/2pt]{1012}{16}
-
-\medskip
-
-On obtient donc \PLconvDepuisDec[couleur=ForestGreen,couleurres,noeud=TEST]{100}{9}.
-\begin{tikzpicture}
-	\draw[overlay,ForestGreen,thick,->] (TEST2.south east) to[bend right] ++ (3cm,-1cm) node[right] {test } ;
-\end{tikzpicture}
-
-\vspace{1.5cm}
-
-~
-\end{codesortie}
-
-\newpage
-
 \section{Style \og main levée \fg{} en \TikZ}\label{mainlevee}
 
 \subsection{Idée}
@@ -4272,6 +4368,69 @@
 
 \newpage
 
+\section{Écriture d'un trinôme, trinôme aléatoire}\label{trinome}
+
+
+\subsection{Idée}
+
+\begin{codeidee}
+L'idée est de proposer une commande pour écrire, sous forme développée réduite, un trinôme en fonction de ses coefficients $a$, $b$ et $c$ (avec $a\neq0$), avec la gestion des coefficients nuls ou égaux à $\pm1$.
+
+\smallskip
+
+En combinant avec le package \ctex{xfp} et fonction de générateur d'entiers aléatoires, on peut de ce fait proposer une commande pour générer aléatoirement des trinômes à coefficients entiers (pour des fiches d'exercices par exemple).
+
+\smallskip
+
+L'affichage des monômes est géré par le package \ctex{siunitx} et le tout est dans un environnement \ctex{ensuremath}.
+\end{codeidee}
+
+\begin{codetex}[listing only]
+\EcritureTrinome[<options>]{a}{b}{c}
+\end{codetex}
+
+\begin{codetex}[]
+\EcritureTrinome{1}{7}{0}\\
+\EcritureTrinome{1.5}{7.3}{2.56}\\
+\EcritureTrinome{-1}{0}{12}\\
+\EcritureTrinome{-1}{-5}{0}
+\end{codetex}
+
+\subsection{Clés et options}
+
+\begin{codecles}
+Quelques clés et options sont disponibles :
+
+\begin{itemize}
+	\item la clé booléenne \Cle{Alea} pour autoriser les coefficients aléatoires (voir plus bas pour la syntaxe) ;\hfill{}défaut \Cle{false}
+	\item la clé booléenne \Cle{Anegatif} pour autoriser $a$ à être négatif.\hfill{}défaut \Cle{true}
+\end{itemize}
+\end{codecles}
+
+\begin{codeinfo}
+La clé \Cle{Alea} va modifier la manière de saisir les coefficients, il suffira dans ce cas de  préciser les bornes, sous la forme \ctex{valmin,valmax}, de chacun des coefficients. C'est ensuite le package \ctex{xfp} qui va se charger de générer les coefficients.
+\end{codeinfo}
+
+\begin{codetex}[sidebyside]
+Avec $a$ entre 1 et 5 (et signe aléatoire) puis $b$ entre $-2$ et 7 puis $c$ entre $-10$ et 20 :
+
+$f(x)=\EcritureTrinome[Alea]{1,5}{-5,5}{-10,10}$\\
+$g(x)=\EcritureTrinome[Alea]{1,5}{-5,5}{-10,10}$\\
+$h(x)=\EcritureTrinome[Alea]{1,5}{-5,5}{-10,10}$
+
+\medskip
+
+Avec $a$ entre 1 et 10 (forcément positif) puis $b$ entre $-2$ et 2 puis $c$ entre 0 et 4 :
+
+\EcritureTrinome[Alea,Anegatif=false]{1,10}{-2,2}{0,4}
+
+\EcritureTrinome[Alea,Anegatif=false]{1,10}{-2,2}{0,4}
+
+\EcritureTrinome[Alea,Anegatif=false]{1,10}{-2,2}{0,4}
+\end{codetex}
+
+\newpage
+
 \part{Jeux et récréations}
 
 \section{PixelART via un fichier csv, en \TikZ}\label{pixelart}
@@ -4336,7 +4495,6 @@
 \begin{filecontents*}[overwrite]{basique.csv}
 A,B,C,D
 A,B,D,C
-B,A,C,D
 B,A,D,C
 C,A,B,D
 \end{filecontents*}
@@ -4774,6 +4932,10 @@
 
 \part{Historique}
 
+{\small \bverb|v1.3.6|~:~~~~Présentation de l'algorithme d'Euclide pour le PGCD (page \pageref{prespgcd})
+
+{\small \bverb|      |~:~~~~Affichage d'un trinôme par coefficients, aléatoires ou non (page \pageref{trinome})
+
 {\small \bverb|v1.3.5|~:~~~~Correction d'un bug avec la loi géométrique (page \pageref{calcprobas})
 	
 {\small \bverb|v1.3.4|~:~~~~Ajout de petits schémas, en \TikZ{}, de lois normales et exponentielles (page \pageref{schemasprobas})
@@ -4806,7 +4968,7 @@
 
 {\small \bverb|v1.2.1|~:~~~~Amélioration de la gestion du csv pour Pixelart
 
-{\small \bverb|v1.2  |~:~~~~Correction d'un méchant bug sur Pixelart
+{\small \bverb|v1.2.0|~:~~~~Correction d'un \textit{méchant} bug sur Pixelart
 
 {\small \bverb|v1.1.9|~:~~~~Pixelart en \TikZ{} (page \pageref{pixelart})
 

Modified: trunk/Master/texmf-dist/tex/latex/proflycee/ProfLycee.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/proflycee/ProfLycee.sty	2022-10-20 20:37:01 UTC (rev 64764)
+++ trunk/Master/texmf-dist/tex/latex/proflycee/ProfLycee.sty	2022-10-20 20:37:29 UTC (rev 64765)
@@ -3,7 +3,8 @@
 % or later, see http://www.latex-project.org/lppl.txtf
 
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{ProfLycee}[2022/10/17 v1.3.5 - Aide pour l'utilisation de LaTeX en lycee]
+\ProvidesPackage{ProfLycee}[2022/10/18 v1.3.6 - Aide pour l'utilisation de LaTeX en lycee]
+% 1.3.6	Ajout d'un "générateur" de trinômes (ou mise en forme basique)
 % 1.3.5	Correction de bugs sur les calculs de probas (loi géométrique)
 % 1.3.4	Ajout des calculs de probas geomtriques et hypergeometriques + petits schémas probas
 % 1.3.3	Ajout de commandes pour des arbres de probas classiques, en tikz
@@ -2989,4 +2990,107 @@
 	\end{tikzpicture}
 }
 
+%===============TRINOMEALEA============== OK!
+\setKVdefault[trinomealea]{%
+	Alea=false,%
+	Anegatif=true
+}
+
+\NewDocumentCommand\EcritureTrinome{ O{} m m m }{%
+	\useKVdefault[trinomealea]%
+	\setKV[trinomealea]{#1}%
+	\ifboolKV[trinomealea]{Alea}%
+	{%
+		\xdef\Coeffa{\fpeval{randint(#2)}}\xdef\Coeffb{\fpeval{randint(#3)}}\xdef\Coeffc{\fpeval{randint(#4)}}%
+		\xdef\AleaSigneA{\fpeval{randint(1,2)}}%
+		\ifboolKV[trinomealea]{Anegatif}%
+			{\xintifboolexpr{\AleaSigneA == 1}{\def\TriSigneA{}}{\def\TriSigneA{-}}}%
+			{\def\TriSigneA{}}%forcément a>0
+	}%
+	{%
+		\xdef\Coeffa{#2}\xdef\Coeffb{#3}\xdef\Coeffc{#4}%
+		\def\TriSigneA{}%
+	}%
+	\def\TriPartieA{\num{\TriSigneA\Coeffa} x^2}%
+	\xintifboolexpr{\Coeffa == 1}%
+		{\def\TriPartieA{x^2}}{}%
+	\xintifboolexpr{\Coeffa == -1}%
+		{\def\TriPartieA{-x^2}}{}%
+	\def\TriPartieB{\num[print-implicit-plus]{\Coeffb}x}%
+	\xintifboolexpr{\Coeffb == 0}%
+		{\def\TriPartieB{}}{}%
+	\xintifboolexpr{\Coeffb == 1}%
+		{\def\TriPartieB{+x}}{}%
+	\xintifboolexpr{\Coeffb == -1}%
+		{\def\TriPartieB{-x}}{}%
+	\xintifboolexpr{\Coeffc == 0}%
+		{\def\TriPartieC{}}{\def\TriPartieC{\num[print-implicit-plus]{\Coeffc}}}%
+	%formatage
+	\ensuremath{\TriPartieA\TriPartieB\TriPartieC}%
+}
+
+
+%=================PRESPGCD=============== OK!
+\DeclareMathOperator{\PLpgcd}{PGCD}
+\defKV[prespgcd]{%
+	Couleur=\def\PLPGCDCouleur{#1},%
+	DecalRect=\def\PLPGCDDecal{#1},%
+	Noeud=\def\PLPGCDNoeud{#1}
+}
+
+\setKVdefault[prespgcd]{%
+	Couleur=red,%
+	DecalRect=2pt,%
+	Rectangle=true,%
+	Noeud=FFF,%
+	CouleurResultat=false,%
+	AfficheConclusion=true,%
+	AfficheDelimiteurs=true
+}
+
+\newcommand\PresentationPGCD[3][]{%
+	\useKVdefault[prespgcd]%
+	\setKV[prespgcd]{#1}%
+	\xdef\respgcd{\xinteval{gcd(#2,#3)}}
+	\xdef\ValA{#2}\xdef\ValB{#3}%on stocke les valeurs du départ
+	\ensuremath{%
+		\ifboolKV[prespgcd]{AfficheDelimiteurs}%
+		{\left\lbrace}%
+		{}%
+		\begin{array}{@{\,}r@{\;=\;}l@{\;+\;}r}
+			%1ère division
+			\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
+			{\num{\ValR}}%
+			\xdef\ValA{\ValB}\xdef\ValB{\ValR}%nouvelles valeurs
+			\whiledo {\ValR > 0}%
+			{%
+				\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
+				{\num{\ValR}}%
+				\xdef\ValA{\ValB}\xdef\ValB{\ValR}%nouvelles valeurs
+			}%
+		\end{array}%
+		\ifboolKV[prespgcd]{AfficheDelimiteurs}%
+		{\right|}%
+		{}%
+		\ifboolKV[prespgcd]{AfficheConclusion}%
+		{%
+			\Rightarrow \PLpgcd\left(\num{#2}\mathpunct{};\num{#3}\right)=\ifboolKV[prespgcd]{CouleurResultat}{\mathcolor{\PLPGCDCouleur}{\num{\respgcd}}}{\num{\respgcd}}%
+		}%
+		{}%
+	}%
+	\ifboolKV[prespgcd]{Rectangle}%
+	{%
+		\begin{tikzpicture}
+			\draw[overlay,rounded corners=4pt,\PLPGCDCouleur,thick] ($(\PLPGCDNoeud1.north west)+(-\PLPGCDDecal,\PLPGCDDecal)$) rectangle ($(\PLPGCDNoeud1.south east)+(\PLPGCDDecal,-\PLPGCDDecal)$) ;
+		\end{tikzpicture}%
+	}{}%
+}
+
 \endinput
\ No newline at end of file



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