texlive[63768] Master/texmf-dist: proflycee (30jun22)

commits+karl at tug.org commits+karl at tug.org
Thu Jun 30 22:39:18 CEST 2022


Revision: 63768
          http://tug.org/svn/texlive?view=revision&revision=63768
Author:   karl
Date:     2022-06-30 22:39:18 +0200 (Thu, 30 Jun 2022)
Log Message:
-----------
proflycee (30jun22)

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-06-30 20:39:05 UTC (rev 63767)
+++ trunk/Master/texmf-dist/doc/latex/proflycee/ProfLycee-doc.tex	2022-06-30 20:39:18 UTC (rev 63768)
@@ -42,8 +42,8 @@
 \setlength{\parindent}{0pt}
 \definecolor{LightGray}{gray}{0.9}
 
-\def\PLversion{1.1.6}
-\def\PLdate{28 Juin 2022}
+\def\PLversion{1.1.7}
+\def\PLdate{30 Juin 2022}
 
 \tcbset{vignettes/.style={%
 		nobeforeafter,box align=base,boxsep=0pt,enhanced,sharp corners=all,rounded corners=southeast,%
@@ -206,6 +206,8 @@
 
 Une commande pour déterminer des paramètres ($a$, $b$, $r$ et $r^2$) d'une régression linéaire par moindres carrés.
 
+Quelques commandes pour convertir bin/dec/hex avec certains détails.
+
 \vspace{1.5cm}
 
 \hfill{}\textit{Merci à Anne pour ses retours et sa relecture !}
@@ -2630,8 +2632,217 @@
 
 \newpage
 
-\section{Historique}
+\section{Conversions binaire/hexadécimal/décimal}
 
+\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 hexédacimal 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ésenter en bloc 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 hexadécimal vers binaire}
+
+\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 avec détails et affichage, et modif taille crochet
+$\PLconvbinhex[trait=1.5pt]{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}$
+%conversion avec détails et sans affichage
+$\PLconvbinhex[affbase=false]{110011111}$
+\end{codetex}
+
+\begin{codesortie}
+$\PLconvbinhex{110011111}$
+
+$\PLconvbinhex[trait=1.5pt]{110011111}$
+
+$\PLconvbinhex[details=false]{110011111}$
+
+$\PLconvbinhex[affbase=false,details=false]{110011111}$
+
+$\PLconvbinhex[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} qi 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,details=false]{AC0DC}$
+\end{codesortie}
+
+\newpage
+
+{\small \bverb|v1.1.7|~:~~~~Conversions bin/hex/dec (basées sur \ctex{xintbinhex}) avec quelques détails
+
 {\small \bverb|v1.1.6|~:~~~~Ajout d'une commande \textsf{PLregln} pour déterminer les paramètres d'une régression linéaire par moindres carrés
 
 {\small \bverb|v1.1.5|~:~~~~Ajout de deux commandes \textsf{aidesignePL} et \textsf{aidesignetkztabPL} pour, en \TikZ, créer des petits schémas \og de signe \fg

Modified: trunk/Master/texmf-dist/tex/latex/proflycee/ProfLycee.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/proflycee/ProfLycee.sty	2022-06-30 20:39:05 UTC (rev 63767)
+++ trunk/Master/texmf-dist/tex/latex/proflycee/ProfLycee.sty	2022-06-30 20:39:18 UTC (rev 63768)
@@ -3,7 +3,8 @@
 % or later, see http://www.latex-project.org/lppl.txtf
 
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{ProfLycee}[2022/06/28 - v1.1.6 - Aide pour l'utilisation de LaTeX en lycée]
+\ProvidesPackage{ProfLycee}[2022/06/30 - v1.1.7 - Aide pour l'utilisation de LaTeX en lycée]
+% 1.1.7	Ajout de commandes pour des conversions bin/dec/hex
 % 1.1.6	Ajout d'une commande pour déterminer les paramètres d'un régression linéaire par moindres carrés
 % 1.1.5	Ajout de commandes pour "visualiser" le signe de ax+b ou de ax2+bx+c (cf tnsana !)
 % 1.1.4	Ajout d'une commande cercletrigoPL pour, en \TikZ, créer facilement un cercle trigo avec options
@@ -42,6 +43,7 @@
 \RequirePackage{xfp}
 \RequirePackage{xstring}
 \RequirePackage{xintexpr}
+\RequirePackage{xintbinhex}
 \RequirePackage{simplekv}
 \RequirePackage{listofitems}
 \RequirePackage{tabularray}
@@ -1285,4 +1287,153 @@
 	\foreach \i in {1,2,...,\LNB} {\filldraw[\RegLinNuageCouleur] ({\LX[\i]-\RegLinNuageOx},{\LY[\i]-\RegLinNuageOy}) circle[radius=\RegLinNuageTaille] ;}
 }
 
+%=============ConversionsBases========= OK !!
+%dec->bin avec blocs de 4 chiffres
+\setKVdefault[CONVDECBIN]{%
+	affbase=true
+}
+\NewDocumentCommand\PLconvdecbin{ s O{} m }{%
+	\useKVdefault[CONVDECBIN]
+	\setKV[CONVDECBIN]{#2}% on paramètres les nouvelles clés et on les simplifie
+	\def\resbrut{\xintDecToBin{#3}}
+	\StrLen{\resbrut}[\nbchiffres]
+	\def\nbgrp{\fpeval{4*ceil(\nbchiffres/4,0)}}
+	\IfBooleanTF{#1}
+		{\num{#3}\ifboolKV[CONVDECBIN]{affbase}{_{10}}{}=\num[digit-group-size=4]{\resbrut}\ifboolKV[CONVDECBIN]{affbase}{_{2}}{}}
+		{\num{#3}\ifboolKV[CONVDECBIN]{affbase}{_{10}}{}=\num[digit-group-size=4,minimum-integer-digits=\nbgrp]{\resbrut}\ifboolKV[CONVDECBIN]{affbase}{_{2}}{}}
+}
+
+%bin->hexa avec blocs de 4 chiffres
+\defKV[CONVBINHEX]{%
+	trait=\def\epcrochet{#1}
+}
+\setKVdefault[CONVBINHEX]{%
+	trait=0.5pt,%
+	affbase=true,%
+	details=true
+}
+
+%bourrage de 0 avant
+\ExplSyntaxOn
+\NewExpandableDocumentCommand{\PLstrzeros}{m}
+{
+	\int_compare:nT { #1 > 0 }
+	{
+		0 \prg_replicate:nn { #1 - 1 } { 0 }
+	}
+}
+\ExplSyntaxOff
+
+%conversion (visuelle) d'un bloc de 4 chiffres binaires
+\newcommand\PLconvblocbinhex[2][0.5pt]{%
+	\underbracket[#1]{#2}_{\xintBinToHex{#2}}
+}
+
+%la conversion complète
+\newcommand\PLconvbinhex[2][]{%
+	\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
+	\xdef\nbgrp{\fpeval{4*ceil(\nbchiffres/4,0)}} %nb de chiffres avec blocs de 4
+	\xdef\nbblocs{\fpeval{\nbgrp/4}} %nb de blocs
+	%on rajoute des zeros si besoin := OK
+	\xdef\resinter{\chbrut}
+	\num[digit-group-size=4]{\chbrut}\ifboolKV[CONVBINHEX]{affbase}{_{2}}{}=
+	\ifboolKV[CONVBINHEX]{details}{%
+	\ifnum\nbchiffres<\nbgrp
+		\xdef\nbz{\inteval{\nbgrp-\nbchiffres}}
+		\xdef\resinter{\PLstrzeros{\nbz}\chbrut}
+		\num[digit-group-size=4,minimum-integer-digits=\nbgrp]{\resinter}=
+	\fi
+	%découpage par blocs et conversion en hexa := OK
+	\newcount\cpt
+	\cpt0
+	\loop\ifnum \cpt<\nbblocs
+		\def\iinit{\fpeval{4*\cpt+1}}
+		\def\ifinal{\fpeval{4*(\cpt+1)}}
+		\StrMid{\resinter}{\iinit}{\ifinal}[\blocinter]
+		\PLconvblocbinhex[\epcrochet]{\blocinter}
+		\advance\cpt by 1
+	\repeat
+	=
+	}%
+	{}
+	\xintBinToHex{\chbrut}\ifboolKV[CONVBINHEX]{affbase}{_{16}}{}
+}
+
+%bin/hexa->dec avec écriture polynomiale
+\defKV[CONVTODEC]{%
+	basedep=\def\basedepart{#1}
+}
+\setKVdefault[CONVTODEC]{%
+	basedep=2,%
+	affbase=true,%
+	details=true,%
+	zeros=true
+}
+
+\newcommand\PLconvtodec[2][]{%
+	\useKVdefault[CONVTODEC]
+	\setKV[CONVTODEC]{#1}% on paramètres les nouvelles clés et on les simplifie
+	\def\nbdepart{#2}
+	\StrLen{\nbdepart}[\nbchiffres]
+	\StrChar{\nbdepart}{1}[\chiffre]
+	%si on est en base 16
+	\xintifboolexpr{\basedepart == 16}%
+	{%
+		\nbdepart\ifboolKV[CONVTODEC]{affbase}{_{\basedepart}}{} =
+		\ifboolKV[CONVTODEC]{details}{%
+			\xintHexToDec{\chiffre}\times\basedepart^{\inteval{\nbchiffres-1}}%
+			\newcount\cpt
+			\cpt2
+			\loop\ifnum \cpt<\inteval{\nbchiffres+1}
+				\def\puiss{\inteval{\nbchiffres-\cpt}}
+				\StrChar{\nbdepart}{\cpt}[\chiffre]
+				\ifboolKV[CONVTODEC]{zeros}%
+					{%
+						+\xintHexToDec{\chiffre}\times\basedepart^{\puiss}%
+					}
+					{
+						\ifnum\xintHexToDec{\chiffre} > 0
+							+\xintHexToDec{\chiffre}\times\basedepart^{\puiss}%
+						\fi
+					}
+				\advance\cpt by 1
+			\repeat
+			=
+			}
+			{}
+		\num{\xintHexToDec{\nbdepart}}\ifboolKV[CONVTODEC]{affbase}{_{10}}{}
+	}%
+	{}
+	\xintifboolexpr{\basedepart == 2}%
+	{%
+		\num[digit-group-size=4]{\nbdepart}\ifboolKV[CONVTODEC]{affbase}{_{\basedepart}}{} =
+		\ifboolKV[CONVTODEC]{details}{%
+			\chiffre\times\basedepart^{\inteval{\nbchiffres-1}}%
+			\newcount\cpt
+			\cpt2
+			\loop\ifnum \cpt<\inteval{\nbchiffres+1}
+				\def\puiss{\inteval{\nbchiffres-\cpt}}
+				\StrChar{\nbdepart}{\cpt}[\chiffre]
+				\ifboolKV[CONVTODEC]{zeros}%
+				{%
+					+\chiffre\times\basedepart^{\puiss}%
+				}
+				{
+					\ifnum\chiffre > 0
+						+\chiffre\times\basedepart^{\puiss}%
+					\fi
+				}
+			\advance\cpt by 1
+			\repeat
+			=
+			}
+			{}
+		\num{\xintBinToDec{\nbdepart}}\ifboolKV[CONVTODEC]{affbase}{_{10}}{}
+	}%
+	{}
+}
+
 \endinput
\ No newline at end of file



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