diff options
Diffstat (limited to 'graphics/pgf/contrib/profsio/tex/ProfSio.sty')
-rw-r--r-- | graphics/pgf/contrib/profsio/tex/ProfSio.sty | 126 |
1 files changed, 125 insertions, 1 deletions
diff --git a/graphics/pgf/contrib/profsio/tex/ProfSio.sty b/graphics/pgf/contrib/profsio/tex/ProfSio.sty index 20c2729ffc..12d1804ec0 100644 --- a/graphics/pgf/contrib/profsio/tex/ProfSio.sty +++ b/graphics/pgf/contrib/profsio/tex/ProfSio.sty @@ -3,7 +3,8 @@ % : Luatruthtable from Chetan Shirore and Dr. Ajit Kumar https://ctan.org/pkg/luatruthtable \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{ProfSio}[2023/09/29 0.1.8 Pour les enseignants de Maths en BTS SIO] +\ProvidesPackage{ProfSio}[2023/12/13 0.1.9 Pour les enseignants de Maths en BTS SIO] +%0.1.9 Travail sur les chemins de longueur donnée + fermeture transitive %0.1.8 Possibilité de représenter une table de Karnaugh via son expression + corrections mineures %0.1.7 Ajout des simplifications booléennes d'expressions classiques %0.1.6 Correction dans les simplifications de Karnaugh + Possibilité de travailler avec le contraire @@ -1855,4 +1856,127 @@ end } } +%------Chemins de longueur donnée + fermeture transitive +\ifluatex +\RequirePackage{lualinalg} + +\setKVdefault[MatAdj]{Bordure=false,Sommets=ABCDEFGHIJKLMNOPQRSTUVWXYZ,Num=false,PoliceBordure=\footnotesize} + +\NewDocumentCommand\MatriceAdjacence{ O{} m }{% + \restoreKV[MatAdj]% + \setKV[MatAdj]{#1}% + %on définit la matrice + \matrixNew{M}{#2}% + %formatage + \ifboolKV[MatAdj]{Bordure}% + {% + \ensuremath{% + \begin{pNiceMatrix}[first-row,first-col] + \xintFor* ##1 in {\xintSeq{1}{\matrixNumRows{M}}}\do{&\Block{1-1}<\useKV[MatAdj]{PoliceBordure}>{\StrChar{\useKV[MatAdj]{Sommets}}{##1}}} \\ + \xintFor* ##1 in {\xintSeq{1}{\matrixNumRows{M}}}\do{% + \Block{1-1}<\scriptsize>{\StrChar{\useKV[MatAdj]{Sommets}}{##1}} \xintFor* ##2 in {\xintSeq{1}{\matrixNumRows{M}}}\do{&\ifboolKV[MatAdj]{Num}{\num{\matrixGetElement{M}{##1}{##2}}}{\matrixGetElement{M}{##1}{##2}}} \\ + }% + \end{pNiceMatrix}% + }% + }% + {% + \ensuremath{\matrixPrint[type=pmatrix]{M}} + }% +} + +\NewDocumentCommand\PuissanceMatrice{ O{} m m }{% + \restoreKV[MatAdj]% + \setKV[MatAdj]{#1}% + %on définit la matrice + \matrixNew{M}{#2}% + \matrixOp{Mpuiss}{M^#3}% + %formatage + \ifboolKV[MatAdj]{Bordure}% + {% + \ensuremath{% + \begin{pNiceMatrix}[first-row,first-col] + \xintFor* ##1 in {\xintSeq{1}{\matrixNumRows{M}}}\do{&\Block{1-1}<\useKV[MatAdj]{PoliceBordure}>{\StrChar{\useKV[MatAdj]{Sommets}}{##1}}} \\ + \xintFor* ##1 in {\xintSeq{1}{\matrixNumRows{M}}}\do{% + \Block{1-1}<\useKV[MatAdj]{PoliceBordure}>{\StrChar{\useKV[MatAdj]{Sommets}}{##1}} \xintFor* ##2 in {\xintSeq{1}{\matrixNumRows{M}}}\do{&\ifboolKV[MatAdj]{Num}{\num{\matrixGetElement{Mpuiss}{##1}{##2}}}{\matrixGetElement{Mpuiss}{##1}{##2}}} \\ + }% + \end{pNiceMatrix}% + }% + }% + {% + \ensuremath{\matrixPrint[type=pmatrix]{Mpuiss}} + }% +} + +\defKV[GrphNbChemLg]{De=\def\GrphNbChemLgDeb{#1},Vers=\def\GrphNbChemLgFin{#1},Sommets=\def\GrphNbChemLgSomm{#1}} +\setKVdefault[GrphNbChemLg]{Longueur=2,De=A,Vers=A,Sommets={ABCDEFGHIJKLMNOPQRSTUVWXYZ},Num=false} + +\NewDocumentCommand\NbCheminsLongueur{ O{} m }{% + \restoreKV[GrphNbChemLg]% + \setKV[GrphNbChemLg]{#1}% + %on définit la matrice + \matrixNew{M}{#2}% + \StrPosition{\GrphNbChemLgSomm}{\GrphNbChemLgDeb}[\nbcheminsdepart]% + \StrPosition{\GrphNbChemLgSomm}{\GrphNbChemLgFin}[\nbcheminsarrivee]% + %on calcule la puissance + \matrixOp{Mpuiss}{M^\useKV[GrphNbChemLg]{Longueur}}% + %test !! + \ifboolKV[GrphNbChemLg]{Num}% + {% + \num{\matrixGetElement{Mpuiss}{\nbcheminsdepart}{\nbcheminsarrivee}}% + }% + {% + \matrixGetElement{Mpuiss}{\nbcheminsdepart}{\nbcheminsarrivee}% + }% +} + +\setKVdefault[GrphFermTrans]{Enonce=false,Formule=false,Brut=false,NomMatrice=M,Bordure=false,Sommets=ABCDEFGHIJKLMNOPQRSTUVWXYZ,Num=false,PoliceBordure=\footnotesize,Complet=false} + +\NewDocumentCommand\FermetureTransitive{ O{} m }{% + \restoreKV[GrphFermTrans]% + \setKV[GrphFermTrans]{#1}% + \matrixNew{M}{#2}% + %formule de calcul + \xdef\FermTransFormule{M}% + \xintFor* ##1 in {\xintSeq{2}{\matrixNumRows{M}}}\do{% + \xdef\FermTransFormule{\FermTransFormule+M^##1}% + }% + \matrixOp{MFT}{\FermTransFormule}% + %gestion de la clé complète + \ifboolKV[GrphFermTrans]{Complet}% + {% + \setKV[GrphFermTrans]{Enonce=true,Formule=true}% + }% + {}% + %simplification éventuelle + \ifboolKV[GrphFermTrans]{Brut}% + {% + \ensuremath{\ifboolKV[GrphFermTrans]{Formule}{\useKV[GrphFermTrans]{NomMatrice} \xintFor* ##1 in {\xintSeq{2}{\matrixNumRows{M}}}\do{+\useKV[GrphFermTrans]{NomMatrice}^{##1}}=}{}\matrixPrint[type=pmatrix]{MFT}}% + }% + {% + \xintFor* ##1 in {\xintSeq{1}{\matrixNumRows{M}}}\do{%lignes + \xintFor* ##2 in {\xintSeq{1}{\matrixNumRows{M}}}\do{%colonnes + \xintifboolexpr{\matrixGetElement{MFT}{##1}{##2} == 0}% + {}% + {\matrixSetElement{MFT}{##1}{##2}{1}}% + }% + }% + \ifboolKV[GrphFermTrans]{Bordure}% + {% + \ensuremath{% + \ifboolKV[GrphFermTrans]{Enonce}{\widehat{\useKV[GrphFermTrans]{NomMatrice}}=}{}\ifboolKV[GrphFermTrans]{Formule}{\useKV[GrphFermTrans]{NomMatrice} \xintFor* ##1 in {\xintSeq{2}{\matrixNumRows{M}}}\do{\oplus\useKV[GrphFermTrans]{NomMatrice}^{[##1]}}=}{}% + \begin{pNiceMatrix}[first-row,first-col] + \xintFor* ##1 in {\xintSeq{1}{\matrixNumRows{M}}}\do{&\Block{1-1}<\useKV[GrphFermTrans]{PoliceBordure}>{\StrChar{\useKV[GrphFermTrans]{Sommets}}{##1}}} \\ + \xintFor* ##1 in {\xintSeq{1}{\matrixNumRows{M}}}\do{% + \Block{1-1}<\useKV[GrphFermTrans]{PoliceBordure}>{\StrChar{\useKV[GrphFermTrans]{Sommets}}{##1}} \xintFor* ##2 in {\xintSeq{1}{\matrixNumRows{M}}}\do{&\matrixGetElement{MFT}{##1}{##2}} \\ + }% + \end{pNiceMatrix}% + }% + }% + {% + \ensuremath{\ifboolKV[GrphFermTrans]{Enonce}{\widehat{\useKV[GrphFermTrans]{NomMatrice}}=}{}\ifboolKV[GrphFermTrans]{Formule}{\useKV[GrphFermTrans]{NomMatrice} \xintFor* ##1 in {\xintSeq{2}{\matrixNumRows{M}}}\do{\oplus\useKV[GrphFermTrans]{NomMatrice}^{[##1]}}=}{}\matrixPrint[type=pmatrix]{MFT}}% + }% + }% +} +\fi + \endinput
\ No newline at end of file |