summaryrefslogtreecommitdiff
path: root/graphics/pgf/contrib/profsio/tex/ProfSio.sty
diff options
context:
space:
mode:
Diffstat (limited to 'graphics/pgf/contrib/profsio/tex/ProfSio.sty')
-rw-r--r--graphics/pgf/contrib/profsio/tex/ProfSio.sty126
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