From e186dcfd02caa676aaf0a7893abedd25964a11fc Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Thu, 30 Jun 2022 20:39:18 +0000 Subject: proflycee (30jun22) git-svn-id: svn://tug.org/texlive/trunk@63768 c570f23f-e606-0410-a88d-b1316a301751 --- .../doc/latex/proflycee/ProfLycee-doc.pdf | Bin 655594 -> 667760 bytes .../doc/latex/proflycee/ProfLycee-doc.tex | 217 ++++++++++++++++++++- .../texmf-dist/tex/latex/proflycee/ProfLycee.sty | 153 ++++++++++++++- 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 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 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(*)[]{} +\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[]{} +\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[]{} +\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 -- cgit v1.2.3