summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2022-06-30 20:39:18 +0000
committerKarl Berry <karl@freefriends.org>2022-06-30 20:39:18 +0000
commite186dcfd02caa676aaf0a7893abedd25964a11fc (patch)
tree11041da928cc4b7516a710e5b1f54d71ac4c36dc
parent9ec59fedbf912856c113d160cbc1d115093876ba (diff)
proflycee (30jun22)
git-svn-id: svn://tug.org/texlive/trunk@63768 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r--Master/texmf-dist/doc/latex/proflycee/ProfLycee-doc.pdfbin655594 -> 667760 bytes
-rw-r--r--Master/texmf-dist/doc/latex/proflycee/ProfLycee-doc.tex217
-rw-r--r--Master/texmf-dist/tex/latex/proflycee/ProfLycee.sty153
3 files changed, 366 insertions, 4 deletions
diff --git a/Master/texmf-dist/doc/latex/proflycee/ProfLycee-doc.pdf b/Master/texmf-dist/doc/latex/proflycee/ProfLycee-doc.pdf
index 30af5a6176d..2d5662a6559 100644
--- a/Master/texmf-dist/doc/latex/proflycee/ProfLycee-doc.pdf
+++ b/Master/texmf-dist/doc/latex/proflycee/ProfLycee-doc.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/proflycee/ProfLycee-doc.tex b/Master/texmf-dist/doc/latex/proflycee/ProfLycee-doc.tex
index 40588e3c7cc..4d6357e042b 100644
--- a/Master/texmf-dist/doc/latex/proflycee/ProfLycee-doc.tex
+++ b/Master/texmf-dist/doc/latex/proflycee/ProfLycee-doc.tex
@@ -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 @@ Deux commandes pour, en \TikZ, créer des petits schémas \og de signe \fg.
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,7 +2632,216 @@ Quelques \Cle{Clés} sont disponibles pour cette commande, essentiellement pour
\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
diff --git a/Master/texmf-dist/tex/latex/proflycee/ProfLycee.sty b/Master/texmf-dist/tex/latex/proflycee/ProfLycee.sty
index 98f5b192c63..d1902bc2ac1 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}[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