texlive[68482] Master/texmf-dist: proflycee (8oct23)

commits+karl at tug.org commits+karl at tug.org
Sun Oct 8 22:54:20 CEST 2023


Revision: 68482
          https://tug.org/svn/texlive?view=revision&revision=68482
Author:   karl
Date:     2023-10-08 22:54:20 +0200 (Sun, 08 Oct 2023)
Log Message:
-----------
proflycee (8oct23)

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-arithm.tex
    trunk/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-listings.tex
    trunk/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-piton.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-10-08 20:54:09 UTC (rev 68481)
+++ trunk/Master/texmf-dist/doc/latex/proflycee/ProfLycee-doc.tex	2023-10-08 20:54:20 UTC (rev 68482)
@@ -5,8 +5,8 @@
 % 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.7.7}
-\def\PLdate{29 septembre 2023}
+\def\PLversion{2.7.8}
+\def\PLdate{8 octobre 2023}
 \usepackage{amsfonts}
 \usepackage{ProfLycee}
 \useproflyclib{piton,minted,pythontex,ecritures}
@@ -144,12 +144,12 @@
 		keywordstyle={\color{violet}},%
 		classoffset=2,%
 		alsoletter={-},%
-		morekeywords={\ResolutionApprochee,\SolutionTVI,\CalculTermeRecurrence,\ToileRecurrence,\SolutionSeuil,\IntegraleApprochee,\GrilleTikz,\AxesTikz,\AxexTikz,\AxeyTikz,\FenetreTikz,\FenetreSimpleTikz,\DeclareFonctionTikz,\CourbeTikz,\OrigineTikz,\SplineTikz,\TangenteTikz,\MiniSchemaSignes,\MiniSchemaSignesTkzTab,\IntegraleApprocheeTikz,\CartoucheCapytale,\PaveTikz,\TetraedreTikz,\CercleTrigo,\AffPoint,\AffVecteur,\TrouveEqCartPlan,\TrouveEqParamDroite,\TrouveEqCartDroite,\TrouveNorme,\TrouveDistancePtPlan,\EquationReduite,\CalculsRegLin,\PointsRegLin,\NuagePointsTikz,\PointMoyenTikz,\BoiteMoustaches,\BoiteMoustachesAxe,\Histogramme,\CalcBinomP,\CalcBinomC,\BinomP,\BinomC,\CalcPoissP,\CalcPoissC,\PoissonP,\PoissonC,\CalcGeomP,\CalcGeomC,\GeomP,\GeomC,\CalcHypergeomP,\CalcHypergeomP,\HypergeomP,\HypergeomC,\CalcNormC,\NormaleC,\CalcExpoC,\ExpoC,\ArbreProbasTikz,\LoiNormaleGraphe,\LoiExpoGraphe,\NbAlea,\VarNbAlea,\TirageAleatoireEntiers,\Arrangement,\Combinaison,\ConversionDecBin,\ConversionBinHex,\ConversionVersDec,\ConversionBaseDix,\ConversionDepuisBaseDix,\PresentationPGCD,\EquationDiophantienne,\ConversionFraction,\SimplificationRacine,\EcritureEnsemble,\EcritureTrinome,\MesurePrincipale,\LigneTrigo,\SudoMaths,\FonctionRepartTikz,\IntervalleFF,\IntervalleFO,\IntervalleOF,\IntervalleOO,\RepereOij,\RepereOuv,\RepereOijk,\ReperePlan,\RepereEspace,\jfalg,\jfexp,\LoiNormale,\LoiBinomiale,\LoiPoisson,\LoiExpo,\LoiUnif,\Courbe,\Suite,\CoordPtPl,\CoordPtEsp,\CoordVecPl,\CoordVecEsp,\MatDeux,\Vecteur,\Esper,\Varianc,\EcType,\dx,\Integrale,\Modulo,\Arrondi,\CodePythonLstFichier,\CodePythonLstFichierAlt,\colorlet,\PtsDiscontinuite
+		morekeywords={\ResolutionApprochee,\SolutionTVI,\CalculTermeRecurrence,\ToileRecurrence,\SolutionSeuil,\IntegraleApprochee,\GrilleTikz,\AxesTikz,\AxexTikz,\AxeyTikz,\FenetreTikz,\FenetreSimpleTikz,\DeclareFonctionTikz,\CourbeTikz,\OrigineTikz,\SplineTikz,\TangenteTikz,\MiniSchemaSignes,\MiniSchemaSignesTkzTab,\IntegraleApprocheeTikz,\CartoucheCapytale,\PaveTikz,\TetraedreTikz,\CercleTrigo,\AffPoint,\AffVecteur,\TrouveEqCartPlan,\TrouveEqParamDroite,\TrouveEqCartDroite,\TrouveNorme,\TrouveDistancePtPlan,\EquationReduite,\CalculsRegLin,\PointsRegLin,\NuagePointsTikz,\PointMoyenTikz,\BoiteMoustaches,\BoiteMoustachesAxe,\Histogramme,\CalcBinomP,\CalcBinomC,\BinomP,\BinomC,\CalcPoissP,\CalcPoissC,\PoissonP,\PoissonC,\CalcGeomP,\CalcGeomC,\GeomP,\GeomC,\CalcHypergeomP,\CalcHypergeomP,\HypergeomP,\HypergeomC,\CalcNormC,\NormaleC,\CalcExpoC,\ExpoC,\ArbreProbasTikz,\LoiNormaleGraphe,\LoiExpoGraphe,\NbAlea,\VarNbAlea,\TirageAleatoireEntiers,\Arrangement,\Combinaison,\ConversionDecBin,\ConversionBinHex,\ConversionVersDec,\ConversionHexBin,\ConversionBaseDix,\ConversionDepuisBaseDix,\PresentationPGCD,\EquationDiophantienne,\ConversionFraction,\SimplificationRacine,\EcritureEnsemble,\EcritureTrinome,\MesurePrincipale,\LigneTrigo,\SudoMaths,\FonctionRepartTikz,\IntervalleFF,\IntervalleFO,\IntervalleOF,\IntervalleOO,\RepereOij,\RepereOuv,\RepereOijk,\ReperePlan,\RepereEspace,\jfalg,\jfexp,\LoiNormale,\LoiBinomiale,\LoiPoisson,\LoiExpo,\LoiUnif,\Courbe,\Suite,\CoordPtPl,\CoordPtEsp,\CoordVecPl,\CoordVecEsp,\MatDeux,\Vecteur,\Esper,\Varianc,\EcType,\dx,\Integrale,\Modulo,\Arrondi,\CodePythonLstFichier,\CodePythonLstFichierAlt,\colorlet,\PtsDiscontinuite,\ListeDiviseurs,\ArbreDiviseurs
 		},%
 		keywordstyle={\color{CouleurVertForet}},%
 		classoffset=3,%
 		alsoletter={-},%
-		morekeywords={minimum-decimal-digits,scale,nonamssymb,build,Precision,Intervalle,Variable,NomFct,NomSol,va,vb,Stretch,Balayage,Calculatrice,Majuscule,No,UNo,NomSuite,Simple,Exact,Conclusion,Sens,ResultatBrut,Methode,NbSubDiv,AffFormule,Expr,Signe,Variables,Affp,Affs,Epaisseur,Police,ElargirOx,ElargirOy,Labelx,Labely,AffLabel,PosLabelx,PosLabely,EchelleFleche,TypeFleche,PosGrad,HautGrad,AffGrad,AffOrigine,Annee,Trigo,Dfrac,Style,Coeffs,AffPoints,TaillePoints,xl,xr,Code,Racines,Largeur,Hauteur,Cadre,Fct,Nom,PosLabel,DecalLabel,TailleLabel,AffTermes,RemplirbOpacite,CouleurRemplissage,Lignes,Gobble,Alignement,Filigrane,BarreTitre,CouleurNombres,Centre,EspacementVertical,Label,Titre,Profondeur,Angle,Fuite,Sommets,Math,Aff,Plein,Cube,Alpha,Beta,Rayon,Marge,TailleValeurs,TailleAngles,CouleurFond,Decal,MoinsPi,AffAngles,AffTraits,AffValeurs,Equationcos,Equationsin,sin,cos,AffTraitsEq,CouleurSol,OptionCoeffs,SimplifCoeffs,Facteur,OptionCoeffs,Reel,Oppose,Rgras,SimplifCoeffs,VectDirecteur,NomCoeffa,NomCoeffb,NomCoeffr,NomCoeffrd,NomXmin,NomXmax,Ox,Oy,xg,yg,AffNom,Elevation,Moyenne,AffMoyenne,Pointilles,Valeurs,Elargir,Min,Max,DebutOx,FinOx,ListeCouleurs,ElargirX,ElargirY,LabelX,LabelY,GradX,GradY,AffEffectifs,PosEffectifs,Opacite,AffBornes,GrilleV,PoliceAxes,PoliceEffectifs,EpaisseurTraits,Unite,EspaceNiveau,EspaceFeuille,Type,PoliceProbas,InclineProbas,Fleche,StyleTrait,EpaisseurTrait,CouleurAire,CouleurCourbe,AfficheM,AfficheCadre,ValMin,ValMax,NbVal,Sep,Tri,Repetition,Notation,NotationAncien,Formule,AffBase,Details,BaseDep,Zeros,DecalH,DecalV,Noeud,Rect,CouleurRes,DecalRect,Rectangle,CouleurResultat,AfficheConclusion,AfficheDelimiteurs,Lettre,Inconnues,Entier,Cadres,PresPGCD,Mathpunct,Option,Alea,Anegatif,Crochets,Brut,Etapes,Epaisseurg,CouleurCase,CouleurTexte,NbSubCol,NbLig,NbCol,Legendes,PoliceLeg,ListeLegV,ListeLegH,DecalLegende,Couleur,Uno,Grille,ExtraGrilleY,PosLegende,Pointilles,Extremite,Frac,PremLigne,Type,Pos,Echelle},%
+		morekeywords={minimum-decimal-digits,scale,nonamssymb,build,Precision,Intervalle,Variable,NomFct,NomSol,va,vb,Stretch,Balayage,Calculatrice,Majuscule,No,UNo,NomSuite,Simple,Exact,Conclusion,Sens,ResultatBrut,Methode,NbSubDiv,AffFormule,Expr,Signe,Variables,Affp,Affs,Epaisseur,Police,ElargirOx,ElargirOy,Labelx,Labely,AffLabel,PosLabelx,PosLabely,EchelleFleche,TypeFleche,PosGrad,HautGrad,AffGrad,AffOrigine,Annee,Trigo,Dfrac,Style,Coeffs,AffPoints,TaillePoints,xl,xr,Code,Racines,Largeur,Hauteur,Cadre,Fct,Nom,PosLabel,DecalLabel,TailleLabel,AffTermes,RemplirbOpacite,CouleurRemplissage,Lignes,Gobble,Alignement,Filigrane,BarreTitre,CouleurNombres,Centre,EspacementVertical,Label,Titre,Profondeur,Angle,Fuite,Sommets,Math,Aff,Plein,Cube,Alpha,Beta,Rayon,Marge,TailleValeurs,TailleAngles,CouleurFond,Decal,MoinsPi,AffAngles,AffTraits,AffValeurs,Equationcos,Equationsin,sin,cos,AffTraitsEq,CouleurSol,OptionCoeffs,SimplifCoeffs,Facteur,OptionCoeffs,Reel,Oppose,Rgras,SimplifCoeffs,VectDirecteur,NomCoeffa,NomCoeffb,NomCoeffr,NomCoeffrd,NomXmin,NomXmax,Ox,Oy,xg,yg,AffNom,Elevation,Moyenne,AffMoyenne,Pointilles,Valeurs,Elargir,Min,Max,DebutOx,FinOx,ListeCouleurs,ElargirX,ElargirY,LabelX,LabelY,GradX,GradY,AffEffectifs,PosEffectifs,Opacite,AffBornes,GrilleV,PoliceAxes,PoliceEffectifs,EpaisseurTraits,Unite,EspaceNiveau,EspaceFeuille,Type,PoliceProbas,InclineProbas,Fleche,StyleTrait,EpaisseurTrait,CouleurAire,CouleurCourbe,AfficheM,AfficheCadre,ValMin,ValMax,NbVal,Sep,Tri,Repetition,Notation,NotationAncien,Formule,AffBase,Details,BaseDep,Zeros,DecalH,DecalV,Noeud,Rect,CouleurRes,DecalRect,Rectangle,CouleurResultat,AfficheConclusion,AfficheDelimiteurs,Lettre,Inconnues,Entier,Cadres,PresPGCD,Mathpunct,Option,Alea,Anegatif,Crochets,Brut,Etapes,Epaisseurg,CouleurCase,CouleurTexte,NbSubCol,NbLig,NbCol,Legendes,PoliceLeg,ListeLegV,ListeLegH,DecalLegende,Couleur,Uno,Grille,ExtraGrilleY,PosLegende,Pointilles,Extremite,Frac,PremLigne,Type,Pos,Echelle,AffNom,EspaceNiveau,CouleurDetails,Fleches,EspaceFeuille,Details},%
 		keywordstyle={\color{orange!75!black}}
 		}
 	}
@@ -854,6 +854,10 @@
 \VarNbAlea{macro}{calcul}
 %liste d'entiers aléatoires
 \TirageAleatoireEntiers[options]{macro}
+%liste des diviseurs
+\ListeDiviseurs(*)[option]{nombre}
+%arbre des diviseurs
+\ArbreDiviseurs[options]{nombre}
 \end{PresCodeTexPL}
 
 \begin{PresCodeTexPL}{listing only}
@@ -868,6 +872,7 @@
 %conversions
 \ConversionDecBin(*)[clés]{nombre}
 \ConversionBinHex[clés]{nombre}
+\ConversionHexBin[clés]{nombre}
 \ConversionVersDec[clés]{nombre}
 \ConversionBaseDix[clés]{nombre}{base de départ}
 \ConversionDepuisBaseDix[options]{nombre en base 10}{base d'arrivée}
@@ -6738,6 +6743,7 @@
 
 \begin{itemize}
 	\item décimal en binaire avec blocs de 4 chiffres en sortie ;
+	\item hexadécimal en binaire avec blocs de 4 chiffres en sortie ;
 	\item conversion binaire ou hexadécimal en décimal avec écriture polynomiale.
 \end{itemize}
 \vspace*{-\baselineskip}\leavevmode
@@ -6875,6 +6881,51 @@
 
 \pagebreak
 
+\subsection{Conversion hexadécimal vers binaire}\label{convhexbin}
+
+\begin{noteblock}
+\cmaj{2.7.8} 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 découpe chaque caractère hexa en bloc de 4 chiffres binaires ;
+	\item elle affiche la conversion en binaire.
+\end{itemize}
+\vspace*{-\baselineskip}\leavevmode
+\end{noteblock}
+
+\begin{PresCodeTexPL}{listing only}
+\ConversionHexBin[clés]{nombre}
+\end{PresCodeTexPL}
+
+\begin{cautionblock}
+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}
+
+La commande est à insérer dans un environnement mathématique.
+\end{cautionblock}
+
+\begin{PresCodeTexPL}{listing only}
+%conversion avec détails et affichage de la base
+$\ConversionHexBin{ACDC}$
+%conversion sans détails et affichage de la base
+$\ConversionHexBin[Details=false]{ACDC}$
+%conversion sans détails et sans affichage de la base
+$\ConversionHexBin[AffBase=false,Details=false]{ACDC}$
+\end{PresCodeTexPL}
+
+\begin{PresCodeSortiePL}{text only}
+$\ConversionHexBin{ACDC}$
+
+$\ConversionHexBin[Details=false]{ACDC}$
+
+$\ConversionHexBin[AffBase=false,Details=false]{ACDC}$
+\end{PresCodeSortiePL}
+
 \subsection{Conversion binaire ou hexadécimal en décimal}
 
 \begin{noteblock}
@@ -7190,6 +7241,90 @@
 
 \newpage
 
+\section{Diviseurs}\label{listediv}
+
+\subsection{Idées}
+
+\begin{tipblock}
+L'idée est de proposer des commandes pour travailler sur les diviseurs d'un entier :
+
+\begin{itemize}
+	\item afficher la liste des diviseurs sous forme d'un ensemble ordonné ;
+	\item créer un arbre pour retrouver les diviseurs par la décomposition en facteurs premiers.
+\end{itemize}
+
+Le code se charge de déterminer les diviseurs et de mettre en forme l'arbre.
+\end{tipblock}
+
+\begin{PresCodeTexPL}{listing only}
+\ListeDiviseurs(*)[Clé]{nombre}
+\end{PresCodeTexPL}
+
+\begin{PresCodeTexPL}{listing only}
+\ArbreDiviseurs[Clés]{nombre}
+\end{PresCodeTexPL}
+
+\subsection{Options et clés}
+
+\begin{cautionblock}
+En ce qui concerne la commande pour la liste des diviseurs :
+
+\begin{itemize}
+	\item la version \textit{étoilée} permet d'afficher le nom de l'ensemble via \ctex{\textbackslash mathscr}, \ctex{\textbackslash mathcal} sinon;
+	\item le booléen \Cle{AffNom} permet d'afficher le nom de l'ensemble ; \hfill{}défaut \Cle{true}
+	\item l'argument obligatoire, et entre \ctex{\{...\}}, est quant lui le nombre, y compris en langage \ctex{xint}.
+\end{itemize}
+
+À noter que la commande est incluse dans un bloc \ctex{\textbackslash ensuremath}, donc les \ctex{$...$} ne sont pas nécessaires.
+\end{cautionblock}
+
+\begin{PresCodePL}{}
+%sortie par défaut
+\ListeDiviseurs{150}
+
+%sortie avec \mathscr (si chargé)
+\ListeDiviseurs*{300}
+
+%sortie sans libellé
+\ListeDiviseurs[AffNom=false]{60}
+\end{PresCodePL}
+
+\begin{cautionblock}
+En ce qui concerne la commande pour l'arbre (créé en \TikZ) permettant d'obtenir la liste des diviseurs (je remercie Christophe Poulain pour un \textit{bout de code} que j'ai adapté et pour son aide précieuse) :
+
+\begin{itemize}
+	\item les clés disponible sont :
+	\begin{itemize}
+		\item la clé \Cle{EspaceNiveau} qui est l'espace horizontal (en cm) entre les étages ; \hfill{}défaut \Cle{2.25}
+		\item la clé \Cle{EspaceFeuille} qui est l'espace vertical entre les feuilles ; \hfill{}défaut \Cle{0.66}
+		\item le booléen \Cle{Details} pour afficher les calculs des diviseurs ; \hfill{}défaut \Cle{true}
+		\item la clé \Cle{CouleurDetails} pour la couleur des détails ; \hfill{}défaut \Cle{red}
+		\item la clé \Cle{Echelle} pour spécifier une échelle globale (y compris le texte) de la figure ;
+		
+		\hfill{}défaut \Cle{1}
+		\item le booléen \Cle{Fleches} pour afficher une flèche sur les branches.\hfill{}défaut \Cle{true}
+	\end{itemize}
+	\item l'argument obligatoire, et entre \ctex{\{...\}}, est quant lui le nombre, y compris en langage \ctex{xint}.
+\end{itemize}
+\vspace*{-\baselineskip}\leavevmode
+\end{cautionblock}
+
+\begin{PresCodePL}{}
+%sortie par défaut
+\ArbreDiviseurs{60}
+\end{PresCodePL}
+
+\begin{PresCodePL}{}
+%sortie personnalisée
+\ArbreDiviseurs[EspaceNiveau=4,EspaceFeuille=1,Details=false]{60}
+\end{PresCodePL}
+
+\begin{PresCodePL}{}
+\ArbreDiviseurs[EspaceNiveau=2,Echelle=0.75,CouleurDetails=teal,Fleches=false]{2^2*3*5*7*11}
+\end{PresCodePL}
+
+\newpage
+
 \phantom{t}\par\vfill\par
 \begin{PART}
 	\begin{center}
@@ -7803,6 +7938,8 @@
 
 \part{Historique}
 
+{\small \bverb|v 2.7.8|~:~~~~Conversion présentée hexa/bin (page \pageref{convhexbin})} + Liste et arbres de diviseurs (page \pageref{listediv})
+
 {\small \bverb|v 2.7.7|~:~~~~Points de discontinuité pour des splines (page \pageref{discont})}
 
 {\small \bverb|v 2.7.6|~:~~~~Amélioration dans la console d'exécution avec \textsf{piton}}

Modified: trunk/Master/texmf-dist/tex/latex/proflycee/ProfLycee.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/proflycee/ProfLycee.sty	2023-10-08 20:54:09 UTC (rev 68481)
+++ trunk/Master/texmf-dist/tex/latex/proflycee/ProfLycee.sty	2023-10-08 20:54:20 UTC (rev 68482)
@@ -3,7 +3,8 @@
 % or later, see http://www.latex-project.org/lppl.txtf
 
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{ProfLycee}[2023/09/29 2.7.7 Aide pour l'utilisation de LaTeX en lycee]
+\ProvidesPackage{ProfLycee}[2023/10/06 2.7.8 Aide pour l'utilisation de LaTeX en lycee]
+% 2.7.8	Conversion hexa->bin présentée
 % 2.7.7	Ajout d'une commande pour matérialiser des points de discontinuité
 % 2.7.6	Amélioration de la gestion de la console piton
 % 2.7.5	Ajout d'options pour les environnements de code (piton + listings)

Modified: trunk/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-arithm.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-arithm.tex	2023-10-08 20:54:09 UTC (rev 68481)
+++ trunk/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-arithm.tex	2023-10-08 20:54:20 UTC (rev 68482)
@@ -8,6 +8,9 @@
 % and version 1.3 or later is part of all distributions of LaTeX
 % version 2005/12/01 or later.
 
+\RequirePackage{ifthen}
+\RequirePackage{modulus}
+
 %%------ConversionsBases
 %dec->bin avec blocs de 4 chiffres
 \setKVdefault[CONVDECBIN]{%
@@ -25,7 +28,7 @@
 }
 
 \setKVdefault[CONVBINHEX]{%
-	%trait=0.5pt,%
+	%Epaisseur=0.75pt,%
 	AffBase=true,%
 	Details=true
 }
@@ -46,7 +49,7 @@
 	\useKVdefault[CONVBINHEX]%
 	\setKV[CONVBINHEX]{#1}% on paramètres les nouvelles clés et on les simplifie
 	\def\chbrut{#2}%
-	\StrLen{\chbrut}[\nbchiffres] %nb de chiffres du binaire
+	\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
@@ -74,6 +77,43 @@
 	\xintBinToHex{\chbrut}\ifboolKV[CONVBINHEX]{AffBase}{_{16}}{}%
 }
 
+%hexa-bin par bloc de 4
+\setKVdefault[CONVHEXBIN]{%
+	%Epaisseur=0.75pt,
+	AffBase=true,%
+	Details=true
+}
+
+\newcommand\ConvHexBinBloc[1]{%
+	\def\binbrut{\xintHexToBin{#1}}%
+	\StrLen{\binbrut}[\nbchiffresbinbrut]%nb
+	\PLstrzeros{\xinteval{4-\nbchiffresbinbrut}}{\binbrut}%
+}
+
+\newcommand\ConversionHexBin[2][]{%
+	\useKVdefault[CONVHEXBIN]%
+	\setKV[CONVHEXBIN]{#1}% on paramètres les nouvelles clés et on les simplifie
+	%\def\thicktraitshexbin{\useKV[CONVHEXBIN]{Epaisseur}}%
+	\ifboolKV[CONVHEXBIN]{AffBase}{#2_{16}=}{#2=}%
+	\StrLen{#2}[\nbchiffreshex]%nb
+	\ifboolKV[CONVHEXBIN]{Details}%
+	{%
+		\foreach \i in {1,...,\nbchiffreshex}{%
+			\StrChar{#2}{\i}[\tmpcharhex]%
+			{\underbracket{\ConvHexBinBloc{\tmpcharhex}}_{\tmpcharhex}\,}
+		}%
+		\ifboolKV[CONVHEXBIN]{AffBase}{{}_{2}}{}%
+	}%
+	{%
+		\foreach \i in {1,...,\nbchiffreshex}{%
+			\StrChar{#2}{\i}[\tmpcharhex]%
+			\ConvHexBinBloc{\tmpcharhex}\,%
+		}%
+		\!\ifboolKV[CONVHEXBIN]{AffBase}{{}_{2}}{}%
+	}%
+}
+
+
 %hexa/bin->dec avec écriture polynomiale
 \defKV[CONVTODEC]{%
 	BaseDep=\def\basedepart{#1}
@@ -456,4 +496,180 @@
 		}%
 }
 
+%liste diviseurs
+\setKVdefault[listdiv]{%
+	AffNom=true
+}
+\NewDocumentCommand\ListeDiviseurs{ s O{} m }{%
+	\useKVdefault[listdiv]%
+	\setKV[listdiv]{#2}%
+	\xdef\tmplistdiv{1}%
+	\xdef\argcal{\xinteval{#3}}%
+	\xintFor* ##1 in {\xintSeq{2}{\argcal}}\do{%
+		\xintifboolexpr{ \xintiiRem{\argcal}{##1} == 0 }%
+		{%
+			\xdef\tmplistdiv{\tmplistdiv /\num{##1}}
+		}%
+		{}%
+	}%
+	\ensuremath{\ifboolKV[listdiv]{AffNom}{\IfBooleanTF{#1}{\mathscr{D}}{\mathcal{D}}_{\num{\argcal}}=}{}\EcritureEnsemble[\strut]{\tmplistdiv}}
+}
+
+%arbre diviseurs
+\defKV[arbrediviseurs]{%
+	EspaceNiveau=\def\TmpEspNiv{#1},%
+	EspaceFeuille=\def\TMpEspFeuille{#1},%
+	CouleurDetails=\def\TmpCoulDetails{#1},%
+	Echelle=\def\TmpEchelle{#1}
+}
+
+\setKVdefault[arbrediviseurs]{%
+	EspaceNiveau=2.25,%
+	EspaceFeuille=0.66,%
+	Details=true,%
+	CouleurDetails=red,%
+	Echelle=1,%
+	Fleches=true
+}
+
+\NewDocumentCommand\ArbreDiviseurs{ O{} m }{%
+	\useKVdefault[arbrediviseurs]%
+	\setKV[arbrediviseurs]{#1}%
+	% test avec CPoulain ^^
+	\xdef\tmpcalc{\xinteval{#2}}%
+	\xdef\tmparg{}%
+	\newcount\anp\newcount\bnp\newcount\cnp%
+	\newcount\pileb\newcount\exposant%
+	\exposant=0\relax%
+	\anp=\tmpcalc\relax%
+	\bnp=2\relax%
+	\pileb=2\relax%
+	\whiledo{\the\anp > 1}{%
+		\modulo{\the\anp}{\the\bnp}%
+		\ifnum\remainder=0\relax%
+		\cnp=\numexpr\anp/\bnp\relax%
+		\exposant=\numexpr\exposant+1\relax%
+		\anp=\cnp\relax%
+		\else%
+		\ifnum\exposant>0\relax%
+		\xdef\tmparg{\tmparg\the\pileb,\the\exposant*}%
+		%\expandafter\UpdatetoksCPier\Foo\nil%
+		\fi%
+		\bnp=\numexpr\bnp+1\relax%
+		\pileb=\bnp\relax%
+		\exposant=0\relax%
+		\fi%
+	}%
+	\xdef\tmparg{\tmparg\the\bnp,{\the\exposant}}%
+	%\expandafter\UpdatetoksCPier\the\bnp,{\the\exposant}\nil%
+	% \xdef\argnum{\xinteval{#2}}%
+	% \def\decompotmp{\DecompoPremierExposant{#2}}%
+	\setsepchar{*/,}%
+	\xdef\Foo{\tmparg}%
+	\readlist*\readcaractdiv{\Foo}%
+	% fin test CPoulain ^^
+	\xdef\arbredivnbdivprem{\readcaractdivlen}%nombre diviseurs permiers
+	\xdef\arbredivnbdiv{1}%
+	\xintFor* ##1 in {\xintSeq{1}{\arbredivnbdivprem}}\do{\xdef\arbredivnbdiv{\xinteval{\arbredivnbdiv*(\readcaractdiv[##1,2]+1)}}}%nombre diviseurs
+	\def\HauteurTotale{\xinteval{\arbredivnbdiv-1}}%
+	\ifboolKV[arbrediviseurs]{Fleches}%
+	{\tikzstyle{flechearbrediv} = [line width=\fpeval{\TmpEchelle*0.6}pt,->,>=latex]}%
+	{\tikzstyle{flechearbrediv} = [line width=\fpeval{\TmpEchelle*0.6}pt]}%
+	\begin{tikzpicture}[scale=\TmpEchelle,every node/.style={scale=\TmpEchelle}]
+		% grille d'aide
+		% \draw[xstep=\TmpEspNiv,ystep=\TMpEspFeuille,thin,lightgray] (0,{(-\arbredivnbdiv+1)*\TMpEspFeuille}) grid ({\arbredivnbdivprem*\TmpEspNiv},0) ;
+		% dernier niveau OK
+		\xdef\nbsommets{\arbredivnbdiv}%
+		\xintFor* ##1 in {\xintSeq{1}{\nbsommets}}\do%
+		{%
+			\itemtomacro\readcaractdiv[\arbredivnbdivprem,2]\tmppuiss%
+			\xdef\tmpdiv{\xinteval{\tmppuiss+1}}%
+			\node[outer sep=0pt] (N-\arbredivnbdivprem-##1) at ({\arbredivnbdivprem*\TmpEspNiv},{-(##1-1)*\TMpEspFeuille}) {$\num{\readcaractdiv[\arbredivnbdivprem,1]}^{\xinteval{\xintiiRem{\xinteval{##1-1}}{\tmpdiv}}}$} ;%
+		}
+		% niveaux suivants, en descendant
+		\xintFor* ##2 in {\xintSeq{\arbredivnbdivprem-1}{1}}\do%
+		{%
+			\xdef\nbsommets{\xintieval{\nbsommets/(\readcaractdiv[##2+1,2]+1)}}%
+			\xdef\espacementsommets{\xinteval{\arbredivnbdiv/(\nbsommets)}}%
+			\xdef\OffsetNiveau{\xintieval{(\HauteurTotale-(\nbsommets-1)*\espacementsommets)}}%
+			\xintFor* ##3 in {\xintSeq{1}{\nbsommets}}\do%
+			{%
+				\itemtomacro\readcaractdiv[##2,2]\tmppuiss%
+				\xdef\tmpdiv{\xinteval{\tmppuiss+1}}%
+				\node[outer sep=0pt] (N-##2-##3) at ({##2*\TmpEspNiv},{(-(##3-1)*\espacementsommets-0.5*\OffsetNiveau)*\TMpEspFeuille}) {$\num{\readcaractdiv[##2,1]}^{\xinteval{\xintiiRem{\xinteval{##3-1}}{\tmpdiv}}}$} ;
+			}%
+		}%
+		% racine
+		\coordinate (Racine) at ({0},{-0.5*(\arbredivnbdiv-1)*(\TMpEspFeuille)}) ;
+		% \draw (Racine) node {$\Omega$} ;
+		% les flèches, qui partent de la racine
+		\xintFor* ##4 in {\xintSeq{1}{\xinteval{\readcaractdiv[1,2]+1}}}\do%
+		{%
+			\draw[flechearbrediv] (Racine) -- (N-1-##4) ;
+		}%
+		% les flèches successives
+		\foreach \nivdep in {1,...,\xinteval{\arbredivnbdivprem-1}}%
+		{%
+			\xdef\nbsommetsniv{1}%
+			\foreach \i in {1,...,\nivdep}{\xdef\nbsommetsniv{\xinteval{\nbsommetsniv*(\readcaractdiv[\i,2]+1)}}}%calcul du nombre de sommets de départ
+			% boucle sur sommets de départ
+			\foreach \numsom in {1,...,\nbsommetsniv}%
+			{%
+				\xdef\nivplusun{\xinteval{\nivdep+1}}%
+				\foreach \nbsousbranches in {1,...,\xinteval{\readcaractdiv[\nivplusun,2]+1}}%
+				{%
+					\xdef\sumsomarriv{\xinteval{ (\readcaractdiv[\nivplusun,2]+1)*(\numsom-1) + \nbsousbranches }}%
+					\draw[flechearbrediv] (N-\nivdep-\numsom) -- (N-\nivplusun-\sumsomarriv) ;
+				}
+			}%
+		}%
+		\ifboolKV[arbrediviseurs]{Details}%
+		{%
+			% essai de génération des calculs := ouaiissssss
+			\foreach \i in {1,...,\arbredivnbdiv}{%
+				\xdef\resdiv{1}%
+				% on extrait la premiere puissance := on obtient la répartition ?
+				\itemtomacro\readcaractdiv[-1,2]\tmppuiss\xdef\tmpdiv{\xinteval{(\tmppuiss+1)}}%
+				% création de la liste des puissances !!
+				\xdef\calculdiviseur{\num{\readcaractdiv[-1,1]}^{\xinteval{\xintiiRem{\xinteval{\i-1}}{\tmpdiv}}}}%
+				\xdef\resdiv{\xinteval{\resdiv*(\readcaractdiv[-1,1])^(\xinteval{\xintiiRem{\xinteval{\i-1}}{\tmpdiv}})}}%
+				% on complète avec les autres parties ??
+				\foreach \nbprem in {2,...,\arbredivnbdivprem}{%
+					% il reste à stocker les produits des puissances, en descendant... erf.....
+					\xdef\tmppuisscumul{1}%
+					\foreach \k in {1,...,\xinteval{\nbprem-1}}{%
+						\itemtomacro\readcaractdiv[-\k,2]\tmppuissrepet%
+						\xdef\tmppuisscumul{\xinteval{\tmppuisscumul*(\tmppuissrepet+1)}}%
+					}%
+					\itemtomacro\readcaractdiv[-\nbprem,2]\tmppuiss%
+					\xdef\tmpdivniv{\xinteval{(\tmppuiss+1)}}%
+					% \xdef\tmpdiv{\xinteval{(\tmppuissrepet+1)}}%
+					\xdef\calculdiviseur{\num{\readcaractdiv[-\nbprem,1]}^{\xinteval{\xintiiRem{\xintieval{trunc((\i-1)/(\tmppuisscumul),0)}}{\tmpdivniv}}}\times\calculdiviseur}%
+					\xdef\resdiv{\xinteval{\resdiv*(\readcaractdiv[-\nbprem,1])^(\xinteval{\xintiiRem{\xintieval{trunc((\i-1)/(\tmppuisscumul),0)}}{\tmpdivniv}})}}%
+				}%
+				\draw ([xshift=1cm]N-\arbredivnbdivprem-\i) node[right,\TmpCoulDetails] {$\calculdiviseur=\num{\resdiv}$} ;
+			}%
+		}{}%
+	\end{tikzpicture}%
+}
+
+%somme des chiffres
+\ifthenelse{\isundefined{\SommeChiffres}}%
+	{%
+		\NewDocumentCommand\SommeChiffres{ m }{%
+			\StrLen{#1}[\nbchiffres]%
+			\xdef\tmpres{0}%
+			\foreach \i in {1,...,\nbchiffres}{\StrChar{#1}{\i}[\tmpchf]\xdef\tmpres{\xinteval{\tmpres+\tmpchf}}}%
+			\ensuremath{\num{\tmpres}}%
+		}
+	}%
+	{%
+		\RenewDocumentCommand\SommeChiffres{ m }{%
+			\StrLen{#1}[\nbchiffres]%
+			\xdef\tmpres{0}%
+			\foreach \i in {1,...,\nbchiffres}{\StrChar{#1}{\i}[\tmpchf]\xdef\tmpres{\xinteval{\tmpres+\tmpchf}}}%
+			\ensuremath{\num{\tmpres}}%
+		}
+	}%
+
 \endinput
\ No newline at end of file

Modified: trunk/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-listings.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-listings.tex	2023-10-08 20:54:09 UTC (rev 68481)
+++ trunk/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-listings.tex	2023-10-08 20:54:20 UTC (rev 68482)
@@ -328,7 +328,7 @@
 					columns=fullflexible,firstnumber=\CodePseudoCodeLstFirstLine,%
 					stringstyle=\color{MotsClesPseudoCodeChaine},
 					classoffset=0,%
-					keywords={Pour,Fonction,Début,allant,Fin,Si,alors,Sinon,SinonSi,FinSi,FinPour,FinTantQue,TantQue},%
+					keywords={Pour,Fonction,Début,Debut,allant,Fin,Si,alors,Sinon,SinonSi,FinSi,FinPour,FinTantQue,TantQue,Variable,Variables},%
 					keywordstyle=\color{MotsClesPseudoCodeA},%
 					classoffset=1,%
 					morekeywords={Afficher,Retourner,Saisir},%
@@ -473,7 +473,7 @@
 				columns=fullflexible,firstnumber=\CodePseudoCodeLstFirstLine,
 				stringstyle=\color{MotsClesPseudoCodeChaine},
 				classoffset=0,%
-				keywords={Pour,Fonction,Début,allant,Fin,Si,alors,Sinon,SinonSi,FinSi,FinPour,FinTantQue,TantQue},%
+				keywords={Pour,Fonction,Debut,Début,allant,Fin,Si,alors,Sinon,SinonSi,FinSi,FinPour,FinTantQue,TantQue,Variable,Variables},%
 				keywordstyle=\color{MotsClesPseudoCodeA},%
 				classoffset=1,%
 				morekeywords={Afficher,Retourner,Saisir},%

Modified: trunk/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-piton.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-piton.tex	2023-10-08 20:54:09 UTC (rev 68481)
+++ trunk/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-piton.tex	2023-10-08 20:54:20 UTC (rev 68482)
@@ -137,7 +137,7 @@
 		}
 		{}%
 	%on crée la boîte
-	\tcolorbox[stylebase,filigrane,cadre,titre]
+	\tcolorbox[stylebase,filigrane,cadre,titre,#2]
 }%
 {%
 	\endtcolorbox%



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