From 0bfcdbfdc41c68c26f33536e7bfa91a627d7c064 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sun, 8 Oct 2023 20:54:20 +0000 Subject: proflycee (8oct23) git-svn-id: svn://tug.org/texlive/trunk@68482 c570f23f-e606-0410-a88d-b1316a301751 --- .../doc/latex/proflycee/ProfLycee-doc.pdf | Bin 1127747 -> 1153426 bytes .../doc/latex/proflycee/ProfLycee-doc.tex | 145 +++++++++++++- .../texmf-dist/tex/latex/proflycee/ProfLycee.sty | 3 +- .../tex/latex/proflycee/proflycee-tools-arithm.tex | 220 ++++++++++++++++++++- .../latex/proflycee/proflycee-tools-listings.tex | 4 +- .../tex/latex/proflycee/proflycee-tools-piton.tex | 2 +- 6 files changed, 364 insertions(+), 10 deletions(-) diff --git a/Master/texmf-dist/doc/latex/proflycee/ProfLycee-doc.pdf b/Master/texmf-dist/doc/latex/proflycee/ProfLycee-doc.pdf index 0197baf5f85..d30b6e2c4f8 100644 Binary files a/Master/texmf-dist/doc/latex/proflycee/ProfLycee-doc.pdf and b/Master/texmf-dist/doc/latex/proflycee/ProfLycee-doc.pdf differ diff --git a/Master/texmf-dist/doc/latex/proflycee/ProfLycee-doc.tex b/Master/texmf-dist/doc/latex/proflycee/ProfLycee-doc.tex index 65359446237..976a0f42c5c 100644 --- a/Master/texmf-dist/doc/latex/proflycee/ProfLycee-doc.tex +++ b/Master/texmf-dist/doc/latex/proflycee/ProfLycee-doc.tex @@ -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 @@ Elles sont présentées de manière \textit{succincte}, mais elles sont présent \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 @@ Elles sont présentées de manière \textit{succincte}, mais elles sont présent %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 @@ L'idée est de \textit{compléter} les possibilités offertes par le package \ct \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 @@ $\ConversionBinHex[AffBase=false,Details=false]{110011111}$ \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 @@ L'argument obligatoire, et entre \ctex{\{...\}} est quant à lui l'équation, en \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 @@ La grille, créée en \TikZ, est portée par le rectangle de \og coins \fg{} $(0 \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}} diff --git a/Master/texmf-dist/tex/latex/proflycee/ProfLycee.sty b/Master/texmf-dist/tex/latex/proflycee/ProfLycee.sty index 2726c7fa851..8c89863d8c9 100644 --- a/Master/texmf-dist/tex/latex/proflycee/ProfLycee.sty +++ b/Master/texmf-dist/tex/latex/proflycee/ProfLycee.sty @@ -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) diff --git a/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-arithm.tex b/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-arithm.tex index 5980ef90006..0085e0ee981 100644 --- a/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-arithm.tex +++ b/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-arithm.tex @@ -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 diff --git a/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-listings.tex b/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-listings.tex index 40dfdae7797..5f094083fa0 100644 --- a/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-listings.tex +++ b/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-listings.tex @@ -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},% diff --git a/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-piton.tex b/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-piton.tex index 53505ead0e6..5c48f5e69a1 100644 --- a/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-piton.tex +++ b/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-piton.tex @@ -137,7 +137,7 @@ } {}% %on crée la boîte - \tcolorbox[stylebase,filigrane,cadre,titre] + \tcolorbox[stylebase,filigrane,cadre,titre,#2] }% {% \endtcolorbox% -- cgit v1.2.3