texlive[65753] Master: resolsysteme (7feb23)

commits+karl at tug.org commits+karl at tug.org
Tue Feb 7 21:49:10 CET 2023


Revision: 65753
          http://tug.org/svn/texlive?view=revision&revision=65753
Author:   karl
Date:     2023-02-07 21:49:10 +0100 (Tue, 07 Feb 2023)
Log Message:
-----------
resolsysteme (7feb23)

Modified Paths:
--------------
    trunk/Master/tlpkg/bin/tlpkg-ctan-check
    trunk/Master/tlpkg/libexec/ctan2tds
    trunk/Master/tlpkg/tlpsrc/collection-mathscience.tlpsrc

Added Paths:
-----------
    trunk/Master/texmf-dist/doc/latex/resolsysteme/
    trunk/Master/texmf-dist/doc/latex/resolsysteme/README.md
    trunk/Master/texmf-dist/doc/latex/resolsysteme/ResolSysteme-doc.pdf
    trunk/Master/texmf-dist/doc/latex/resolsysteme/ResolSysteme-doc.tex
    trunk/Master/texmf-dist/doc/latex/resolsysteme/ResolSysteme-exemples-pyluatex.pdf
    trunk/Master/texmf-dist/doc/latex/resolsysteme/ResolSysteme-exemples-pyluatex.tex
    trunk/Master/texmf-dist/doc/latex/resolsysteme/ResolSysteme-exemples.pdf
    trunk/Master/texmf-dist/doc/latex/resolsysteme/ResolSysteme-exemples.tex
    trunk/Master/texmf-dist/tex/latex/resolsysteme/
    trunk/Master/texmf-dist/tex/latex/resolsysteme/ResolSysteme.sty
    trunk/Master/tlpkg/tlpsrc/resolsysteme.tlpsrc

Added: trunk/Master/texmf-dist/doc/latex/resolsysteme/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/resolsysteme/README.md	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/resolsysteme/README.md	2023-02-07 20:49:10 UTC (rev 65753)
@@ -0,0 +1,7 @@
+ResolSysteme is a package to work with Linear Systems and matrix.
+-------------------------------------------------------------------------
+ResolSysteme est un package pour travailler avec des systèmes linéaires.
+-------------------------------------------------------------------------
+Author : Cédric Pierquet
+email : cpierquet at outlook.fr
+Licence : Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txt
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/doc/latex/resolsysteme/README.md
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/resolsysteme/ResolSysteme-doc.pdf
===================================================================
(Binary files differ)

Index: trunk/Master/texmf-dist/doc/latex/resolsysteme/ResolSysteme-doc.pdf
===================================================================
--- trunk/Master/texmf-dist/doc/latex/resolsysteme/ResolSysteme-doc.pdf	2023-02-07 20:48:04 UTC (rev 65752)
+++ trunk/Master/texmf-dist/doc/latex/resolsysteme/ResolSysteme-doc.pdf	2023-02-07 20:49:10 UTC (rev 65753)

Property changes on: trunk/Master/texmf-dist/doc/latex/resolsysteme/ResolSysteme-doc.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/resolsysteme/ResolSysteme-doc.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/resolsysteme/ResolSysteme-doc.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/resolsysteme/ResolSysteme-doc.tex	2023-02-07 20:49:10 UTC (rev 65753)
@@ -0,0 +1,626 @@
+% !TeX TXS-program:compile = txs:///arara
+% arara: lualatex: {shell: yes, synctex: no, interaction: batchmode}
+% arara: lualatex: {shell: yes, synctex: no, interaction: batchmode} if found('log', '(undefined references|Please rerun|Rerun to get)')
+
+\documentclass[a4paper,11pt]{article}
+\def\TPversion{0.1.1}
+\def\TPdate{7 Février 2023}
+\usepackage[executable=python.exe]{pyluatex}
+\usepackage[table,svgnames]{xcolor}
+\usepackage{amsmath,amssymb}
+\usepackage[bold-style=ISO,math-style=french]{unicode-math}
+\setmainfont{TeX Gyre Schola}
+\setmathfont{TeX Gyre Schola Math}
+\usepackage[pyluatex]{ResolSysteme}
+\usepackage{awesomebox}
+\usepackage{fontawesome5}
+\usepackage{systeme}
+\usepackage{enumitem}
+\usepackage{tabularray}
+\usepackage{multicol}
+\usepackage{fancyvrb}
+\usepackage{fancyhdr}
+\sisetup{locale=FR,output-decimal-marker={,}}
+\fancyhf{}
+\renewcommand{\headrulewidth}{0pt}
+\lfoot{\sffamily\small [ResolSysteme]}
+\cfoot{\sffamily\small - \thepage{} -}
+\rfoot{\hyperlink{matoc}{\small\faArrowAltCircleUp[regular]}}
+
+%\usepackage{hvlogos}
+\usepackage{hologo}
+\providecommand\tikzlogo{Ti\textit{k}Z}
+\providecommand\TeXLive{\TeX{}Live\xspace}
+\providecommand\PSTricks{\textsf{PSTricks}\xspace}
+\let\pstricks\PSTricks
+\let\TikZ\tikzlogo
+\newcommand\TableauDocumentation{%
+	\begin{tblr}{width=\linewidth,colspec={X[c]X[c]X[c]X[c]X[c]X[c]},cells={font=\sffamily}}
+		{\huge \LaTeX} & & & & &\\
+		& {\huge \hologo{pdfLaTeX}} & & & & \\
+		& & {\huge \hologo{LuaLaTeX}} & & & \\
+		& & & {\huge \TikZ} & & \\
+		& & & & {\huge \TeXLive} & \\
+		& & & & & {\huge \hologo{MiKTeX}} \\
+	\end{tblr}
+}
+
+\usepackage{hyperref}
+\urlstyle{same}
+\hypersetup{pdfborder=0 0 0}
+\usepackage[margin=1.5cm]{geometry}
+\setlength{\parindent}{0pt}
+\definecolor{LightGray}{gray}{0.9}
+
+\usepackage[french]{babel}
+
+\usepackage[most]{tcolorbox}
+\tcbuselibrary{minted}
+\NewTCBListing{PresentationCode}{ O{blue} m }{%
+	sharp corners=downhill,enhanced,arc=12pt,skin=bicolor,%
+	colback=#1!1!white,colframe=#1!75!black,colbacklower=white,%
+	attach boxed title to top right={yshift=-\tcboxedtitleheight},title=Code \LaTeX,%
+	boxed title style={%
+		colframe=#1!75!black,colback=#1!15!white,%
+		,sharp corners=downhill,arc=12pt,%
+	},%
+	top=\baselineskip,%
+	fonttitle=\color{#1!90!black}\itshape\ttfamily\footnotesize,%
+	listing engine=minted,minted style=colorful,
+	minted language=tex,minted options={tabsize=4,fontsize=\small,autogobble},
+	#2
+}
+
+\NewTCBListing{PresentationCodePython}{ O{DarkRed} m }{%
+	sharp corners=downhill,enhanced,arc=12pt,skin=bicolor,%
+	colback=#1!1!white,colframe=#1!75!black,colbacklower=white,%
+	attach boxed title to top right={yshift=-\tcboxedtitleheight},title=Code Python,%
+	boxed title style={%
+		colframe=#1!75!black,colback=#1!15!white,%
+		,sharp corners=downhill,arc=12pt,%
+	},%
+	fonttitle=\color{#1!90!black}\itshape\ttfamily\footnotesize,%
+	listing engine=minted,minted style=colorful,
+	minted language=python,minted options={tabsize=2,fontsize=\footnotesize,autogobble},
+	#2
+}
+
+\newcommand\Cle[1]{{\bfseries\sffamily\textlangle #1\textrangle}}
+
+\begin{document}
+
+\setlength{\aweboxleftmargin}{0.07\linewidth}
+\setlength{\aweboxcontentwidth}{0.93\linewidth}
+\setlength{\aweboxvskip}{8pt}
+
+\pagestyle{fancy}
+
+\thispagestyle{empty}
+
+\vspace{2cm}
+
+\begin{center}
+	\begin{minipage}{0.75\linewidth}
+	\begin{tcolorbox}[colframe=yellow,colback=yellow!15]
+		\begin{center}
+			\begin{tabular}{c}
+				{\Huge \texttt{ResolSysteme [fr]}}\\
+				\\
+				{\LARGE Des outils pour des} \\
+				\\
+				{\LARGE systèmes linéaires,} \\
+				\\
+				{\LARGE avec xint ou pyluatex.} \\
+			\end{tabular}
+			
+			\bigskip
+			
+			{\small \texttt{Version \TPversion{} -- \TPdate}}
+		\end{center}
+	\end{tcolorbox}
+\end{minipage}
+\end{center}
+
+\vspace{0.5cm}
+
+\begin{center}
+	\begin{tabular}{c}
+	\texttt{Cédric Pierquet}\\
+	{\ttfamily c pierquet -- at -- outlook . fr}\\
+	\texttt{\url{https://github.com/cpierquet/ResolSysteme}}
+\end{tabular}
+\end{center}
+
+\vspace{0.25cm}
+
+{$\blacktriangleright$~~Des commandes pour travailler sur des matrices carrées (2x2, 3x3 ou 4x4).}
+
+\smallskip
+
+{$\blacktriangleright$~~Des commandes pour résoudre des systèmes linéaires (2x2, 3x3 ou 4x4).}
+
+\smallskip
+
+\vspace{1cm}
+
+\begin{center}
+	\begin{tcolorbox}[enhanced,colframe=ForestGreen,colback=lightgray!5,center,width=0.95\linewidth,drop fuzzy shadow=lightgray]
+	Le \textbf{déterminant} de $A=\begin{pNiceMatrix} -1&{0,5} \\ \frac12&4 \end{pNiceMatrix}$ est
+	$\det(A)=\DetMatrice[dec](-1,0.5 § 1/2,4)$.
+	
+	\medskip
+	
+	L'\textbf{inverse} de la matrice $A=\begin{pNiceMatrix} 1&2&3&4\\5&6&7&0\\1&1&1&1\\-2&-3&-5&-6 \end{pNiceMatrix}$ est $A^{-1}=\MatriceInversePY*[n]<cell-space-limits=2pt>(1,2,3,4 § 5,6,7,0 § 1,1,1,1 § -2,-3,-5,-6)$.
+	
+	\medskip
+	
+	La \textbf{solution} de $\systeme[xyzt]{y+z+t=1,x+z+t=-1,x+y+t=1,x+y+z=0}$ est $\mathcal{S}=\left\lbrace\SolutionSystemePY*[d](0,1,1,1 § 1,0,1,1 § 1,1,0,1 § 1,1,1,0)(1,-1,1,0)\right\rbrace$.
+	\end{tcolorbox}
+\end{center}
+
+\vspace{0.5cm}
+
+%\hfill{}\textit{Merci aux membres du groupe \faFacebook{} du \og Coin \LaTeX{} \fg{} pour leur aide et leurs idées !}
+
+%\hfill{}\textit{Merci à Denis Bitouzé et à Patrick Bideault pour leurs retours et idées !}
+
+\vfill
+
+\hrule
+
+\medskip
+
+\TableauDocumentation
+
+\medskip
+
+\hrule
+
+\medskip
+
+\newpage
+
+\phantomsection
+\hypertarget{matoc}{}
+
+\tableofcontents
+
+\newpage
+
+\part{Introduction}
+
+\section{Le package ResolSysteme}
+
+\subsection{Introduction}
+
+\begin{noteblock}
+L'idée est de \textit{proposer} des outils pour travailler sur des systèmes linéaires (de taille réduite !) :
+
+\begin{itemize}
+	\item en affichant la \textbf{solution} (si elle existe) ;
+	\item en affichant le \textbf{déterminant} et l'éventuelle \textbf{inverse} de la matrice des coefficients.
+\end{itemize}
+\vspace*{-\baselineskip}\leavevmode
+\end{noteblock}
+
+\begin{importantblock}
+À noter que les calculs -- en interne -- peuvent être effectués de deux manières :
+
+\begin{itemize}
+	\item via les packages \textsf{xint*} pour des formats \textbf{2x2} ou \textbf{3x3} ;
+	\item via \textsf{python} et le package \textsf{pyluatex} (à charger manuellement du fait des options spécifiques) pour des formats \textbf{2x2}, \textbf{3x3} ou \textbf{4x4}.
+\end{itemize}
+
+Il n'est pas prévu -- pour le moment -- de travailler sur des matrices/systèmes plus grands.
+\end{importantblock}
+
+\begin{warningblock}
+L'utilisation de \textsf{pyluatex} nécessite une compilation adaptée, à savoir en \hologo{LuaLaTeX} et en activant le mode \textsf{--shell-escape}. 
+
+\smallskip
+
+La méthode par \textsf{python} utilise quoi qu'il en soit le module \texttt{sympy}, qui doit donc être installé !
+\end{warningblock}
+
+\subsection{Packages utilisés, choix de formatage}
+
+\begin{noteblock}
+Le package charge les packages suivantes :
+
+\begin{itemize}
+	\item \texttt{xintexpr} et \texttt{xinttools} ;
+	\item \texttt{sinuitx}, \texttt{nicefrac} et \texttt{nicematrix} ;
+	\item \texttt{xstring} et \texttt{listofitems}.
+\end{itemize}
+
+Il est compatible avec les compilations usuelles en \textsf{latex}, \textsf{pdflatex}, \textsf{lualatex} (obligatoire pour \textsf{pyluatex} !!) ou \textsf{xelatex}.
+\end{noteblock}
+
+\begin{importantblock}
+Les nombres sont formatés par la commande \texttt{\textbackslash num} de \textsf{sinuitx}, donc les options choisies par l'utilisateur se propageront aux résultats numériques.
+
+\smallskip
+
+L'affichage des matrices est gérée par le package \textsf{nicematrix}, et des options spécifiques \textit{simples} pourront être placées dans les différentes commandes.
+\end{importantblock}
+
+\subsection{Chargement du package, et option}
+
+\begin{importantblock}
+Le package peut donc se charger de deux manières différentes, suivant si l'utilisateur utilise \textsf{python} ou non. Les commandes \textit{classiques} sont disponibles même si \textsf{python} est utilisé.
+\end{importantblock}
+
+\begin{PresentationCode}{listing only}
+%chargement du package sans passer par pyluatex, calculs via xint
+\usepackage{ResolSysteme}
+\end{PresentationCode}
+
+\begin{PresentationCode}{listing only}
+%chargement du package pyluatex et du package avec [pyluatex]
+\usepackage[options]{pyluatex}
+\usepackage[pyluatex]{ResolSysteme}
+\end{PresentationCode}
+
+\pagebreak
+
+\part{Commandes}
+
+\section{Une commande interne : écriture sous forme d'une fraction}
+
+\subsection{La commande}
+
+\begin{cautionblock}
+En \textit{interne}, le code utilise une commande pour formater un résultat sous forme fractionnaire, avec gestion des entiers et gestion du signe \og $-$ \fg.
+\end{cautionblock}
+
+\begin{PresentationCode}{listing only}
+\ConvVersFrac(*)[option de formatage]{calcul}
+\end{PresentationCode}
+
+\subsection{Utilisation}
+
+\begin{tipblock}
+Concernant cette commande, qui est dans un bloc \texttt{ensuremath} :
+
+\begin{itemize}
+	\item la version \textit{étoilée} force l'écriture du signe \og $-$ \fg{} avant l'éventuelle fraction ;
+	\item le premier argument, \textit{optionnel} et entre \textsf{[...]} permet de spécifier un formatage du résultat :
+	\begin{itemize}
+		\item \Cle{t} pour l'affichage de la fraction en mode \textsf{tfrac} ;
+		\item \Cle{d} pour l'affichage de la fraction en mode \textsf{dfrac} ;
+		\item \Cle{n} pour l'affichage de la fraction en mode \textsf{nicefrac} ;
+		\item \Cle{dec} pour l'affichage du résultat en mode \texttt{décimal} (sans arrondi !) ;
+		\item \Cle{dec=k} pour l'affichage du résultat en mode \texttt{décimal} arrondi à $10^{-k}$ ;
+	\end{itemize}
+	\item le second argument, \textit{obligatoire}, est quant à lui, le calcul en syntaxe \textsf{xint}.
+\end{itemize}
+\vspace*{-\baselineskip}\leavevmode
+\end{tipblock}
+
+\begin{PresentationCode}{listing only}
+\ConvVersFrac{-10+1/3*(-5/16)}          %sortie par défaut (fraction avec - sur numérateur)
+
+\ConvVersFrac*{-10+1/3*(-5/16)}         %sortie avec - avant la fraction
+
+\ConvVersFrac*[d]{-10+1/3*(-5/16)}      %sortie en displaystyle
+
+\ConvVersFrac[n]{-10+1/3*(-5/16)}       %sortie en nicefrac
+
+\ConvVersFrac[dec=4]{-10+1/3*(-5/16)}   %sortie en décimal arrondi à 0,0001
+
+\ConvVersFrac{2+91/7}                   %entier correctement formaté
+\end{PresentationCode}
+
+\begin{PresentationCode}{text only}
+\hfill\ConvVersFrac{-10+1/3*(-5/16)} \qquad
+\ConvVersFrac*{-10+1/3*(-5/16)} \qquad
+\ConvVersFrac*[d]{-10+1/3*(-5/16)} \qquad
+\ConvVersFrac[n]{-10+1/3*(-5/16)} \qquad
+\ConvVersFrac[dec=4]{-10+1/3*(-5/16)} \qquad
+\ConvVersFrac{2+91/7}\hfill~
+\end{PresentationCode}
+
+\subsection{Interaction avec les commandes \og matricielles \fg, limitations}
+
+\begin{warningblock}
+En \textit{interne}, le formatage des résultats est géré par cette commande, et les options disponibles existent donc de la même manière pour les commandes liées aux systèmes linéaires.
+
+\smallskip
+
+Il ne sera par contre pas possible de spécifier des options différentes pour chacun des coefficients, autrement dit l'éventuelle option se propagera sur l'ensemble des résultats !
+
+\smallskip
+
+Les \textit{transformations} en fraction devraient pouvoir fonctionner avec des calculs \textit{classiques}, mais il est possible que, dans des cas \textit{spécifiques}, les résultats ne soient pas ceux attendus !
+\end{warningblock}
+
+\pagebreak
+
+\section{Calcul de déterminant}
+
+\subsection{Introduction}
+
+\begin{cautionblock}
+La première commande (matricielle) disponible est pour calculer le déterminant d'une matrice :
+
+\begin{itemize}
+	\item \textbf{2x2} ou \textbf{3x3} pour le package \textit{classique} ;
+	\item \textbf{2x2} ou \textbf{3x3} ou \textbf{4x4} pour le package \textit{lua}.
+\end{itemize}
+\vspace*{-\baselineskip}\leavevmode
+\end{cautionblock}
+
+\begin{PresentationCode}{listing only}
+%version classique
+\DetMatrice(*)[option de formatage](matrice)
+
+%version python
+\DetMatricePY(*)[option de formatage](matrice)
+\end{PresentationCode}
+
+\subsection{Utilisation}
+
+\begin{tipblock}
+Concernant cette commande, qui est à insérer dans un environnement \textit{math} :
+
+\begin{itemize}
+	\item la version \textit{étoilée} force l'écriture du signe \og $-$ \fg{} avant l'éventuelle fraction ;
+	\item le premier argument, \textit{optionnel} et entre \textsf{[...]} permet de spécifier un formatage du résultat :
+	\begin{itemize}
+		\item \Cle{t} pour l'affichage de la fraction en mode \textsf{tfrac} ;
+		\item \Cle{d} pour l'affichage de la fraction en mode \textsf{dfrac} ;
+		\item \Cle{n} pour l'affichage de la fraction en mode \textsf{nicefrac} ;
+		\item \Cle{dec} pour l'affichage du résultat en mode \texttt{décimal} (sans arrondi !) ;
+		\item \Cle{dec=k} pour l'affichage du résultat en mode \texttt{décimal} arrondi à $10^{-k}$ ;
+	\end{itemize}
+	\item le second argument, \textit{obligatoire} et entre \textsf{(...)}, est quant à lui, la matrice donnée par ses coefficients \textsf{a11,a12,... § a21,a22,...} (syntaxe \textit{héritée} de \texttt{sympy}).
+\end{itemize}
+\vspace*{-\baselineskip}\leavevmode
+\end{tipblock}
+
+\begin{PresentationCode}{}
+%version classique
+Le dét. de $A=\begin{pNiceMatrix}1&2\\3&4\end{pNiceMatrix}$ est
+$\det(A)=\DetMatrice(1,2 § 3,4)$.
+\end{PresentationCode}
+
+\begin{PresentationCode}{}
+%version classique
+Le dét. de $A=\begin{pNiceMatrix}-1&{0,5}\\\frac12&4\end{pNiceMatrix}$ est
+$\det(A)=\DetMatrice[dec](-1,0.5 § 1/2,4)$.
+\end{PresentationCode}
+
+\begin{PresentationCode}{}
+%version classique
+Le dét. de $A=\begin{pNiceMatrix}-1&\frac13&4\\\frac13&4&-1\\-1&0&0\end{pNiceMatrix}$ est
+$\det(A) \approx \DetMatrice[dec=3](-1,1/3,4 § 1/3,4,-1 § -1,0,0)$.
+\end{PresentationCode}
+
+\begin{PresentationCode}{}
+%version python
+Le dé. de $A=\begin{pNiceMatrix}1&2\\3&4\end{pNiceMatrix}$ est
+$\det(A)=\DetMatricePY(1,2 § 3,4)$.
+\end{PresentationCode}
+
+\begin{PresentationCode}{}
+Le dét. de $A=\begin{pNiceMatrix}-1&{0,5}\\\frac12&4\end{pNiceMatrix}$ est
+$\det(A)=\DetMatricePY*[d](-1,0.5 § 1/2,4)$.\end{PresentationCode}
+
+\begin{PresentationCode}{}
+%version python
+Le dét. de $A=\begin{pNiceMatrix}-1&\frac13&4\\\frac13&4&-1\\-1&0&0\end{pNiceMatrix}$ est
+$\det(A) \approx \DetMatricePY[dec=3](-1,1/3,4 § 1/3,4,-1 § -1,0,0)$.
+\end{PresentationCode}
+
+\section{Inverse d'une matrice}
+
+\subsection{Introduction}
+
+\begin{cautionblock}
+La deuxième commande (matricielle) disponible est pour calculer l'éventuelle inverse d'une matrice :
+
+\begin{itemize}
+	\item \textbf{2x2} ou \textbf{3x3} pour le package \textit{classique} ;
+	\item \textbf{2x2} ou \textbf{3x3} ou \textbf{4x4} pour le package \textit{lua}.
+\end{itemize}
+\vspace*{-\baselineskip}\leavevmode
+\end{cautionblock}
+
+\begin{PresentationCode}{listing only}
+%version classique
+\MatriceInverse(*)[option de formatage]<options nicematrix>(matrice)
+
+%version python
+\MatriceInversePY(*)[option de formatage]<options nicematrix>(matrice)
+\end{PresentationCode}
+
+\subsection{Utilisation}
+
+\begin{tipblock}
+Concernant cette commande, qui est à insérer dans un environnement \textit{math} :
+
+\begin{itemize}
+	\item la version \textit{étoilée} force l'écriture du signe \og $-$ \fg{} avant l'éventuelle fraction ;
+	\item le premier argument, \textit{optionnel} et entre \textsf{[...]} permet de spécifier un formatage du résultat :
+	\begin{itemize}
+		\item \Cle{t} pour l'affichage de la fraction en mode \textsf{tfrac} ;
+		\item \Cle{d} pour l'affichage de la fraction en mode \textsf{dfrac} ;
+		\item \Cle{n} pour l'affichage de la fraction en mode \textsf{nicefrac} ;
+		\item \Cle{dec} pour l'affichage du résultat en mode \texttt{décimal} (sans arrondi !) ;
+		\item \Cle{dec=k} pour l'affichage du résultat en mode \texttt{décimal} arrondi à $10^{-k}$ ;
+	\end{itemize}
+	\item le deuxième argument, \textit{optionnel} et entre \textsf{<...>} correspond aux \Cle{options} à passer à l'environnement \texttt{pNiceMatrix} ;
+	\item le troisième argument, \textit{obligatoire} et entre \textsf{(...)}, est quant à lui, la matrice donnée par ses coefficients \textsf{a11,a12,... § a21,a22,...} (syntaxe héritée de \texttt{sympy}).
+\end{itemize}
+À noter que si la matrice n'est pas inversible, le texte \texttt{Matrice non inversible} est affiché.
+\end{tipblock}
+
+\begin{PresentationCode}{}
+%version classique
+L'inverse de $A=\begin{pNiceMatrix}1&2\\3&4\end{pNiceMatrix}$ est
+$A^{-1}=\MatriceInverse<cell-space-limits=2pt>(1,2 § 3,4)$.
+\end{PresentationCode}
+
+\begin{PresentationCode}{}
+%version classique
+L'inverse de $A=\begin{pNiceMatrix}1&2&3\\4&5&6\\7&8&8\end{pNiceMatrix}$ est
+$A^{-1}=\MatriceInverse[n]<cell-space-limits=2pt>(1,2,3 § 4,5,6 § 7,8,8)$.
+\end{PresentationCode}
+
+\begin{PresentationCode}{}
+%version python
+L'inverse de $A=\begin{pNiceMatrix}1&2\\3&4\end{pNiceMatrix}$ est
+$A^{-1}=\MatriceInversePY*[d]<cell-space-limits=2pt>(1,2 § 3,4)$.
+\end{PresentationCode}
+
+\begin{PresentationCode}{}
+%version python
+L'inv. de $A=\begin{pNiceMatrix}1&2&3&4\\5&6&7&0\\1&1&1&1\\-2&-3&-5&-6\end{pNiceMatrix}$ est
+$A^{-1}=
+\MatriceInversePY*[n]<cell-space-limits=2pt>(1,2,3,4 § 5,6,7,0 § 1,1,1,1 § -2,-3,-5,-6)$.
+\end{PresentationCode}
+
+\section{Résolution d'un système linéaire}
+
+\subsection{Introduction}
+
+\begin{cautionblock}
+La deuxième commande (matricielle) disponible est pour déterminer l'éventuelle solution d'un système linéaire  qui s'écrit matriciellement $A\times X=B$:
+
+\begin{itemize}
+	\item \textbf{2x2} ou \textbf{3x3} pour le package \textit{classique} ;
+	\item \textbf{2x2} ou \textbf{3x3} ou \textbf{4x4} pour le package \textit{lua}.
+\end{itemize}
+\vspace*{-\baselineskip}\leavevmode
+\end{cautionblock}
+
+\begin{PresentationCode}{listing only}
+%version classique
+\SolutionSysteme(*)[opt de formatage]<opts nicematrix>(matriceA)(matriceB)[opt Matrice]
+
+%version python
+\SolutionSystemePY(*)[opt de formatage]<opts nicematrix>(matriceA)(matriceB)[opt Matrice]
+\end{PresentationCode}
+
+\subsection{Utilisation}
+
+\begin{tipblock}
+Concernant cette commande, qui est à insérer dans un environnement \textit{math} :
+
+\begin{itemize}
+	\item la version \textit{étoilée} force l'écriture du signe \og $-$ \fg{} avant l'éventuelle fraction ;
+	\item le premier argument, \textit{optionnel} et entre \textsf{[...]} permet de spécifier un formatage du résultat :
+	\begin{itemize}
+		\item \Cle{t} pour l'affichage de la fraction en mode \textsf{tfrac} ;
+		\item \Cle{d} pour l'affichage de la fraction en mode \textsf{dfrac} ;
+		\item \Cle{n} pour l'affichage de la fraction en mode \textsf{nicefrac} ;
+		\item \Cle{dec} pour l'affichage du résultat en mode \texttt{décimal} (sans arrondi !) ;
+		\item \Cle{dec=k} pour l'affichage du résultat en mode \texttt{décimal} arrondi à $10^{-k}$ ;
+	\end{itemize}
+	\item le deuxième argument, \textit{optionnel} et entre \textsf{<...>} correspond aux \Cle{options} à passer à l'environnement \texttt{pNiceMatrix} ;
+	\item le troisième argument, \textit{obligatoire} et entre \textsf{(...)}, est quant à lui, la matrice $A$ donnée par ses coefficients \textsf{a11,a12,... § a21,a22,...} (syntaxe héritée de \texttt{sympy}) ;
+	\item le quatrième argument, \textit{obligatoire} et entre \textsf{(...)}, est quant à lui, la matrice $B$ donnée par ses coefficients \textsf{b11,b21,...} (syntaxe héritée de \texttt{sympy}) ;
+	\item le dernier argument, \textit{optionnel} et entre \textsf{[...]}, permet -- grâce à \Cle{Matrice} -- de présenter le vecteur solution.
+\end{itemize}
+À noter que si la matrice n'est pas inversible, le texte \texttt{Matrice non inversible} est affiché.
+\end{tipblock}
+
+\begin{PresentationCode}{}
+%version classique
+La solution de $\systeme{3x+y-2z=-1,2x-y+z=4,x-y-2z=5}$ est $\mathcal{S}=%
+\left\lbrace \SolutionSysteme*[d](3,1,-2 § 2,-1,1 § 1,-1,-2)(-1,4,5) \right\rbrace$.\\
+\end{PresentationCode}
+
+\begin{PresentationCode}{}
+%version python
+La solution de $\systeme{x+y+z=-1,3x+2y-z=6,-x-y+2z=-5}$ est $\mathcal{S}=%
+\left\lbrace \SolutionSystemePY(1,1,1 § 3,2,-1 § -1,-1,2)(-1,6,-5) \right\rbrace$.
+\end{PresentationCode}
+
+\begin{PresentationCode}{}
+%version python
+La solution de $\systeme[xyzt]{x+2y+3z+4t=-10,5x+6y+7z=0,x+y+z+t=4,-2x-3y-5z-6t=7}$
+est $\mathcal{S}=%
+\left\lbrace
+	\SolutionSystemePY%
+		[dec]<cell-space-limits=2pt>%
+		(1,2,3,4 § 5,6,7,0 § 1,1,1,1 § -2,-3,-5,-6)(-10,0,4,7)%
+		[Matrice]
+\right\rbrace$.
+\end{PresentationCode}
+
+\begin{PresentationCode}{}
+%pas de solution
+La solution de $\systeme{x+2y=-5,4x+8y=1}$ est $\mathcal{S}=%
+\left\lbrace \SolutionSystemePY(1,2 § 4,8)(-5,1) \right\rbrace$.
+\end{PresentationCode}
+
+\pagebreak
+
+\part{Fonctions python utilisées}
+
+\begin{cautionblock}
+Les fonctions utilisées par les packages \textsf{pyluatex} ou \textsf{pythontex} sont données ci-dessous.
+
+Elles sont accessibles en \textit{natif} une fois l'option \textsf{lua} activée, grâce notamment à la macro \texttt{\textbackslash py}.
+\end{cautionblock}
+
+\begin{PresentationCodePython}{listing only}
+import sympy as sy
+x = sy.Symbol('x')
+y = sy.Symbol('y')
+z = sy.Symbol('z')
+t = sy.Symbol('t')
+
+def resol_systeme_QQ(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,u) :
+	solution=sy.solve([a*x+b*y+c*z+d*t-e,f*x+g*y+h*z+i*t-j,k*x+l*y+m*z+n*t-o,p*x+q*y+r*z+s*t-u],[x,y,z,t])
+	return solution
+
+def resol_systeme_TT(a,b,c,d,e,f,g,h,i,j,k,l) :
+	solution=sy.solve([a*x+b*y+c*z-d,e*x+f*y+g*z-h,i*x+j*y+k*z-l],[x,y,z])
+	return solution
+
+def resol_systeme_DD(a,b,c,d,e,f) :
+	solution=sy.solve([a*x+b*y-c,d*x+e*y-f],[x,y])
+	return solution
+
+def det_matrice_QQ(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p) :
+	MatTmp = sy.Matrix(([a,b,c,d],[e,f,g,h],[i,j,k,l],[m,n,o,p]))
+	DetMatTmp = MatTmp.det()
+	return DetMatTmp
+
+def det_matrice_TT(a,b,c,d,e,f,g,h,i) :
+	MatTmp = sy.Matrix(([a,b,c],[d,e,f],[g,h,i]))
+	DetMatTmp = MatTmp.det()
+	return DetMatTmp
+
+def det_matrice_DD(a,b,c,d) :
+	MatTmp = sy.Matrix(([a,b],[c,d]))
+	DetMatTmp = MatTmp.det()
+	return DetMatTmp
+
+def inverse_matrice_QQ(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p) :
+	MatTmp = sy.Matrix(([a,b,c,d],[e,f,g,h],[i,j,k,l],[m,n,o,p]))
+	DetMatTmp = MatTmp.inv()
+	return DetMatTmp
+
+def inverse_matrice_DD(a,b,c,d) :
+	MatTmp = sy.Matrix(([a,b],[c,d]))
+	InvMatTmp = MatTmp.inv()
+	return InvMatTmp
+
+def inverse_matrice_TT(a,b,c,d,e,f,g,h,i) :
+	MatTmp = sy.Matrix(([a,b,c],[d,e,f],[g,h,i]))
+	InvMatTmp = MatTmp.inv()
+	return InvMatTmp
+\end{PresentationCodePython}
+
+\pagebreak
+
+\part{Historique}
+
+\verb|v0.1.1|~:~~~~Correction d'un bug avec le caractère \og ; \fg{}
+
+\verb|v0.1.0|~:~~~~Version initiale
+
+\end{document}
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/doc/latex/resolsysteme/ResolSysteme-doc.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/resolsysteme/ResolSysteme-exemples-pyluatex.pdf
===================================================================
(Binary files differ)

Index: trunk/Master/texmf-dist/doc/latex/resolsysteme/ResolSysteme-exemples-pyluatex.pdf
===================================================================
--- trunk/Master/texmf-dist/doc/latex/resolsysteme/ResolSysteme-exemples-pyluatex.pdf	2023-02-07 20:48:04 UTC (rev 65752)
+++ trunk/Master/texmf-dist/doc/latex/resolsysteme/ResolSysteme-exemples-pyluatex.pdf	2023-02-07 20:49:10 UTC (rev 65753)

Property changes on: trunk/Master/texmf-dist/doc/latex/resolsysteme/ResolSysteme-exemples-pyluatex.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/resolsysteme/ResolSysteme-exemples-pyluatex.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/resolsysteme/ResolSysteme-exemples-pyluatex.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/resolsysteme/ResolSysteme-exemples-pyluatex.tex	2023-02-07 20:49:10 UTC (rev 65753)
@@ -0,0 +1,107 @@
+% !TeX TXS-program:compile = txs:///lualatex/[--shell-escape]
+
+\documentclass[french,a4paper,10pt]{article}
+\usepackage[margin=1.5cm]{geometry}
+\usepackage[executable=python.exe]{pyluatex}
+\usepackage[pyluatex]{ResolSysteme}
+\usepackage{systeme}
+\usepackage[most]{tcolorbox}
+\sisetup{locale=FR,output-decimal-marker={,}}
+\usepackage{babel}
+\newtcblisting{ShowCodeTeX}[1][]{colback=white,colframe=red!75!black,listing options={style=tcblatex},#1}
+
+\begin{document}
+
+\part*{Version \og pyluatex \fg}
+
+\section{Préambule, avec le package pyluatex}
+
+\begin{ShowCodeTeX}[listing only]
+\documentclass[french,a4paper,10pt]{article}
+\usepackage[margin=1.5cm]{geometry}
+\usepackage[executable=python.exe]{pyluatex}
+\usepackage[pyluatex]{ResolSysteme}              %version pyluatex, lua + shell-escape
+\usepackage{systeme}
+\sisetup{locale=FR,output-decimal-marker={,}}
+\end{ShowCodeTeX}
+
+\section{Inverse d'une matrice, 2x2 ou 3x3 ou 4x4}
+
+\begin{ShowCodeTeX}
+L'inverse de $A=\begin{pNiceMatrix} 1&2 \\ 3&4 \end{pNiceMatrix}$ est
+$A^{-1}=\MatriceInversePY<cell-space-limits=2pt>(1,2 § 3,4)$.
+\end{ShowCodeTeX}
+
+\begin{ShowCodeTeX}
+L'inverse de $A=\begin{pNiceMatrix} 1&2 \\ 3&4 \end{pNiceMatrix}$ est
+$A^{-1}=\MatriceInversePY*<cell-space-limits=2pt>(1,2 § 3,4)$.
+\end{ShowCodeTeX}
+
+\begin{ShowCodeTeX}
+L'inverse de $A=\begin{pNiceMatrix} 1&2 \\ 3&6 \end{pNiceMatrix}$ est
+$A^{-1}=\MatriceInversePY<cell-space-limits=2pt>(1,2 § 3,6)$.
+\end{ShowCodeTeX}
+
+\begin{ShowCodeTeX}
+L'inverse de $A=\begin{pNiceMatrix} 1&2 \\ 3&4 \end{pNiceMatrix}$ est
+$A^{-1}=\MatriceInversePY*[d]<cell-space-limits=2pt>(1,2 § 3,4)$.
+\end{ShowCodeTeX}
+
+\begin{ShowCodeTeX}
+L'inverse de $A=\begin{pNiceMatrix} 1&2&3\\4&5&6\\7&8&8 \end{pNiceMatrix}$ est
+$A^{-1}=\MatriceInversePY<cell-space-limits=2pt>(1,2,3 § 4,5,6 § 7,8,8)$.
+\end{ShowCodeTeX}
+
+\begin{ShowCodeTeX}
+L'inverse de $A=\begin{pNiceMatrix} 1&2&3\\4&5&6\\7&8&8 \end{pNiceMatrix}$ est
+$A^{-1}=\MatriceInversePY*<cell-space-limits=2pt>(1,2,3 § 4,5,6 § 7,8,8)$.
+\end{ShowCodeTeX}
+
+\begin{ShowCodeTeX}
+L'inverse de $A=\begin{pNiceMatrix} 1&2&3&4\\5&6&7&0\\1&1&1&1\\2&-3&-5&-6 \end{pNiceMatrix}$
+est $A^{-1}=\MatriceInversePY*[n]<cell-space-limits=2pt>(1,2,3,4 § 5,6,7,0 § 1,1,1,1 § 2,-3,-5,-6)$.
+\end{ShowCodeTeX}
+
+\section{Résolution d'un système, 2x2 ou 3x3 ou 4x4}
+
+\begin{ShowCodeTeX}
+La solution de $\systeme{-9x-8y=-8,3x-6y=-7}$ est $\mathcal{S}=%
+\left\lbrace \SolutionSystemePY(-9,-8 § 3,-6)(-8,-7) \right\rbrace$.
+\end{ShowCodeTeX}
+
+\begin{ShowCodeTeX}
+La solution de $\systeme{x+2y=-5,4x+8y=1}$ est $\mathcal{S}=%
+\left\lbrace \SolutionSystemePY(1,2 § 4,8)(-5,1) \right\rbrace$.
+\end{ShowCodeTeX}
+
+\begin{ShowCodeTeX}
+La solution de $\systeme{-9x-8y=-8,3x-6y=-7}$ est $\mathcal{S}=%
+\left\lbrace \SolutionSystemePY*[d](-9,-8 § 3,-6)(-8,-7) \right\rbrace$.
+\end{ShowCodeTeX}
+
+\begin{ShowCodeTeX}
+La solution de $\systeme{x+y+z=-1,3x+2y-z=6,-x-y+2z=-5}$ est $\mathcal{S}=%
+\left\lbrace \SolutionSystemePY(1,1,1 § 3,2,-1 § -1,-1,2)(-1,6,-5) \right\rbrace$.
+\end{ShowCodeTeX}
+
+\begin{ShowCodeTeX}
+La solution de $\systeme{x+y+z=-1,3x+2y-z=-5,-x-y+2z=0}$ est donnée par $X=%
+\SolutionSystemePY*[d]<cell-space-limits=2pt>(1,1,1 § 3,2,-1 § -1,-1,2)(-1,-5,0)[Matrice]$.
+\end{ShowCodeTeX}
+
+\begin{ShowCodeTeX}
+La solution de $\systeme[xyzt]{y+z+t=1,x+z+t=-1,x+y+t=1,x+y+z=0}$ est $\mathcal{S}=%
+\left\lbrace\SolutionSystemePY*[d](0,1,1,1 § 1,0,1,1 § 1,1,0,1 § 1,1,1,0)(1,-1,1,0)\right\rbrace$.
+\end{ShowCodeTeX}
+
+\begin{ShowCodeTeX}
+La solution de $\systeme[xyzt]{x+2y+3z+4t=-10,5x+6y+7z=0,x+y+z+t=4,-2x-3y-5z-6t=7}$ est $\mathcal{S}=
+\left\lbrace
+\SolutionSystemePY
+    [dec]<cell-space-limits=2pt>
+    (1,2,3,4 § 5,6,7,0 § 1,1,1,1 § -2,-3,-5,-6)(-10,0,4,7)
+    [Matrice]
+\right\rbrace$.
+\end{ShowCodeTeX}
+
+\end{document}
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/doc/latex/resolsysteme/ResolSysteme-exemples-pyluatex.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/resolsysteme/ResolSysteme-exemples.pdf
===================================================================
(Binary files differ)

Index: trunk/Master/texmf-dist/doc/latex/resolsysteme/ResolSysteme-exemples.pdf
===================================================================
--- trunk/Master/texmf-dist/doc/latex/resolsysteme/ResolSysteme-exemples.pdf	2023-02-07 20:48:04 UTC (rev 65752)
+++ trunk/Master/texmf-dist/doc/latex/resolsysteme/ResolSysteme-exemples.pdf	2023-02-07 20:49:10 UTC (rev 65753)

Property changes on: trunk/Master/texmf-dist/doc/latex/resolsysteme/ResolSysteme-exemples.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/resolsysteme/ResolSysteme-exemples.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/resolsysteme/ResolSysteme-exemples.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/resolsysteme/ResolSysteme-exemples.tex	2023-02-07 20:49:10 UTC (rev 65753)
@@ -0,0 +1,103 @@
+% !TeX document-id = {f9c98d52-d889-44e1-8a1d-1b1aa5b344f6}
+% !TeX TXS-program:compile = txs:///pdflatex
+
+\documentclass[french,a4paper,10pt]{article}
+\usepackage[margin=1.5cm]{geometry}
+\usepackage{ResolSysteme}
+\usepackage{systeme}
+\usepackage{babel}
+\usepackage[most]{tcolorbox}
+\sisetup{locale=FR,output-decimal-marker={,}}
+\newtcblisting{ShowCodeTeX}[1][]{colback=white,colframe=red!75!black,listing options={style=tcblatex},#1}
+
+\begin{document}
+
+\part*{Version \og classique \fg{} avec xint}
+
+\section{Préambule sans utiliser python}
+
+\begin{ShowCodeTeX}[listing only]
+\documentclass[french,a4paper,10pt]{article}
+\usepackage[margin=1.5cm]{geometry}
+\usepackage{ResolSysteme}                     %version classique
+\usepackage{systeme}
+\sisetup{locale=FR,output-decimal-marker={,}}
+\end{ShowCodeTeX}
+
+\section{Déterminant d'une matrice, 2x2 ou 3x3}
+
+\begin{ShowCodeTeX}
+Le déterminant de $A=\begin{pNiceMatrix} 1&2 \\ 3&4 \end{pNiceMatrix}$ est
+$\det(A)=\DetMatrice(1,2 § 3,4)$.
+\end{ShowCodeTeX}
+
+\begin{ShowCodeTeX}
+Le déterminant de $A=\begin{pNiceMatrix} -1&{0,5} \\ \frac12&4 \end{pNiceMatrix}$ est
+$\det(A)=\DetMatrice[dec](-1,0.5 § 1/2,4)$.
+\end{ShowCodeTeX}
+
+\begin{ShowCodeTeX}
+Le dét. de $A=\begin{pNiceMatrix} -1&\frac13&4 \\ \frac13&4&-1 \\ -1&0&0 \end{pNiceMatrix}$ est
+$\det(A) \approx \DetMatrice[dec=3](-1,1/3,4 § 1/3,4,-1 § -1,0,0)$.
+\end{ShowCodeTeX}
+
+\section{Inverse d'une matrice, 2x2 ou 3x3}
+
+\begin{ShowCodeTeX}
+L'inverse de $A=\begin{pNiceMatrix} 1&2 \\ 3&4 \end{pNiceMatrix}$ est
+$A^{-1}=\MatriceInverse<cell-space-limits=2pt>(1,2 § 3,4)$.
+\end{ShowCodeTeX}
+
+\begin{ShowCodeTeX}
+L'inverse de $A=\begin{pNiceMatrix} 1&2 \\ 3&4 \end{pNiceMatrix}$ est
+$A^{-1}=\MatriceInverse*<cell-space-limits=2pt>(1,2 § 3,4)$.
+\end{ShowCodeTeX}
+
+\begin{ShowCodeTeX}
+L'inverse de $A=\begin{pNiceMatrix} 1&2 \\ 3&4 \end{pNiceMatrix}$ est
+$A^{-1}=\MatriceInverse[d]<cell-space-limits=2pt>(1,2 § 3,4)$.
+\end{ShowCodeTeX}
+
+\begin{ShowCodeTeX}
+L'inverse de $A=\begin{pNiceMatrix} 1&2&3\\4&5&6\\7&8&8 \end{pNiceMatrix}$ est
+$A^{-1}=\MatriceInverse<cell-space-limits=2pt>(1,2,3 § 4,5,6 § 7,8,8)$.
+\end{ShowCodeTeX}
+
+\begin{ShowCodeTeX}
+L'inverse de $A=\begin{pNiceMatrix} 1&2&3\\4&5&6\\7&8&8 \end{pNiceMatrix}$ est
+$A^{-1}=\MatriceInverse[n]<cell-space-limits=2pt>(1,2,3 § 4,5,6 § 7,8,8)$.
+\end{ShowCodeTeX}
+
+\section*{Résolution d'un système, 2x2 ou 3x3}
+
+\begin{ShowCodeTeX}
+La solution de $\systeme{-9x-8y=-8,3x-6y=-7}$ est $\mathcal{S}=%
+\left\lbrace \SolutionSysteme(-9,-8 § 3,-6)(-8,-7) \right\rbrace$.
+\end{ShowCodeTeX}
+
+\begin{ShowCodeTeX}
+La solution de $\systeme{-9x-8y=-8,3x-6y=-7}$ est $\mathcal{S}=%
+\left\lbrace \SolutionSysteme*[d](-9,-8 § 3,-6)(-8,-7) \right\rbrace$.
+\end{ShowCodeTeX}
+
+\begin{ShowCodeTeX}
+La solution de $\systeme{x+y+z=-1,3x+2y-z=6,-x-y+2z=-5}$ est $\mathcal{S}=%
+\left\lbrace \SolutionSysteme(1,1,1 § 3,2,-1 § -1,-1,2)(-1,6,-5) \right\rbrace$.
+\end{ShowCodeTeX}
+
+\begin{ShowCodeTeX}
+La solution de $\systeme{x+y+z=-1,3x+2y-z=6,-x-y+2z=-5}$ est donnée par $X=%
+\SolutionSysteme(1,1,1 § 3,2,-1 § -1,-1,2)(-1,6,-5)[Matrice]$.
+\end{ShowCodeTeX}
+
+\begin{ShowCodeTeX}
+La solution de $\systeme{3x+y-2z=-1,2x-y+z=4,x-y-2z=5}$ est $\mathcal{S}=%
+\left\lbrace \SolutionSysteme(3,1,-2 § 2,-1,1 § 1,-1,-2)(-1,4,5) \right\rbrace$.
+\end{ShowCodeTeX}
+
+\begin{ShowCodeTeX}
+La solution de $\systeme{3x+y-2z=-1,2x-y+z=4,x-y-2z=5}$ est $\mathcal{S}=%
+\left\lbrace \SolutionSysteme*[d](3,1,-2 § 2,-1,1 § 1,-1,-2)(-1,4,5) \right\rbrace$.
+\end{ShowCodeTeX}
+
+\end{document}
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/doc/latex/resolsysteme/ResolSysteme-exemples.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/resolsysteme/ResolSysteme.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/resolsysteme/ResolSysteme.sty	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/resolsysteme/ResolSysteme.sty	2023-02-07 20:49:10 UTC (rev 65753)
@@ -0,0 +1,751 @@
+% Author.........: C. Pierquet
+% licence........: Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txtf
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{ResolSysteme}[2023/02/07 v0.1.1 Travailler sur un systeme lineaire avec xint ou pyluatex]
+% 0.1.1		Correction d'un bug avec le séparateur ";"
+% 0.1.0		Version initiale
+
+%------Option(s)
+\newif\if at pyluatex \@pyluatexfalse
+\DeclareOption{pyluatex}{\@pyluatextrue}
+\DeclareOption*{}
+\ProcessOptions\relax
+
+%------Packages utiles
+\RequirePackage{nicematrix}
+\RequirePackage{ifthen}
+\RequirePackage{xintexpr}
+\RequirePackage{xinttools}
+\RequirePackage{listofitems}
+\RequirePackage{siunitx}
+\RequirePackage{nicefrac}
+\RequirePackage{xstring}
+
+%-------Option pyluatex pour les scripts python via pyluatex !
+\if at pyluatex %package pyluatex à charger par l'utilisateur !
+\begin{python}
+import sympy as sy
+x = sy.Symbol('x')
+y = sy.Symbol('y')
+z = sy.Symbol('z')
+t = sy.Symbol('t')
+
+def resol_systeme_QQ(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,u) :
+	solution=sy.solve([a*x+b*y+c*z+d*t-e,f*x+g*y+h*z+i*t-j,k*x+l*y+m*z+n*t-o,p*x+q*y+r*z+s*t-u],[x,y,z,t])
+	return solution
+
+def resol_systeme_TT(a,b,c,d,e,f,g,h,i,j,k,l) :
+	solution=sy.solve([a*x+b*y+c*z-d,e*x+f*y+g*z-h,i*x+j*y+k*z-l],[x,y,z])
+	return solution
+
+def resol_systeme_DD(a,b,c,d,e,f) :
+	solution=sy.solve([a*x+b*y-c,d*x+e*y-f],[x,y])
+	return solution
+
+def det_matrice_QQ(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p) :
+	MatTmp = sy.Matrix(([a,b,c,d],[e,f,g,h],[i,j,k,l],[m,n,o,p]))
+	DetMatTmp = MatTmp.det()
+	return DetMatTmp
+
+def det_matrice_TT(a,b,c,d,e,f,g,h,i) :
+	MatTmp = sy.Matrix(([a,b,c],[d,e,f],[g,h,i]))
+	DetMatTmp = MatTmp.det()
+	return DetMatTmp
+
+def det_matrice_DD(a,b,c,d) :
+	MatTmp = sy.Matrix(([a,b],[c,d]))
+	DetMatTmp = MatTmp.det()
+	return DetMatTmp
+
+def inverse_matrice_QQ(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p) :
+	MatTmp = sy.Matrix(([a,b,c,d],[e,f,g,h],[i,j,k,l],[m,n,o,p]))
+	DetMatTmp = MatTmp.inv()
+	return DetMatTmp
+
+def inverse_matrice_DD(a,b,c,d) :
+	MatTmp = sy.Matrix(([a,b],[c,d]))
+	InvMatTmp = MatTmp.inv()
+	return InvMatTmp
+
+def inverse_matrice_TT(a,b,c,d,e,f,g,h,i) :
+	MatTmp = sy.Matrix(([a,b,c],[d,e,f],[g,h,i]))
+	InvMatTmp = MatTmp.inv()
+	return InvMatTmp
+
+\end{python}
+\fi
+
+%------conversion en fraction, version interne !
+\NewDocumentCommand\ConvVersFrac{ s O{} m }{%
+	%*=moins devant
+	%2=argument.optionnel[d/t/dec=...]
+	%3=argument mandataire {calcul ou fraction}
+	\def\calculargument{\xintPRaw{\xintIrr{\xinteval{#3}}}}%on calcule et on transforme en A/B
+	\IfSubStr{\calculargument}{/}%on teste si le symbole / apparaît
+	{%si oui := fraction
+		\StrBefore{\calculargument}{/}[\numerateur]%on extrait le numérateur
+		\StrBehind{\calculargument}{/}[\denominateur]%on extrait le dénominateur
+		\ifblank{#2}%
+		{%
+			\IfBooleanTF{#1}%
+			{%
+				\ifthenelse{\numerateur < 0}%
+				{\ensuremath{-\frac{\num{\fpeval{abs(\numerateur)}}}{\num{\denominateur}}}}%
+				{\ensuremath{\frac{\num{\numerateur}}{\num{\denominateur}}}}%
+			}%
+			{\ensuremath{\frac{\num{\numerateur}}{\num{\denominateur}}}}%
+		}%
+		{}%si l'argument optionnel est vide
+		\IfStrEq{#2}{d}%
+		{%
+			\IfBooleanTF{#1}%
+			{%
+				\ifthenelse{\numerateur < 0}%
+				{\ensuremath{-\dfrac{\num{\fpeval{abs(\numerateur)}}}{\num{\denominateur}}}}%
+				{\ensuremath{\dfrac{\num{\numerateur}}{\num{\denominateur}}}}%
+			}%
+			{\ensuremath{\dfrac{\num{\numerateur}}{\num{\denominateur}}}}%
+		}%
+		{}%si l'argument optionnel est vide
+		\IfStrEq{#2}{t}%
+		{%
+			\IfBooleanTF{#1}%
+			{%
+				\ifthenelse{\numerateur < 0}%
+				{\ensuremath{-\tfrac{\num{\fpeval{abs(\numerateur)}}}{\num{\denominateur}}}}%
+				{\ensuremath{\tfrac{\num{\numerateur}}{\num{\denominateur}}}}%
+			}%
+			{\ensuremath{\tfrac{\num{\numerateur}}{\num{\denominateur}}}}%
+		}%
+		{}%si l'argument optionnel est vide
+		\IfStrEq{#2}{n}%
+		{%
+			\IfBooleanTF{#1}%
+			{%
+				\ifthenelse{\numerateur < 0}%
+				{\ensuremath{-\nicefrac{\num{\fpeval{abs(\numerateur)}}}{\num{\denominateur}}}}%
+				{\ensuremath{\nicefrac{\num{\numerateur}}{\num{\denominateur}}}}%
+			}%
+			{\ensuremath{\nicefrac{\num{\numerateur}}{\num{\denominateur}}}}%
+		}%
+		{}%si l'argument optionnel est vide
+		\IfSubStr{#2}{dec}%on veut la forme décimale
+		{%
+			\IfSubStr{#2}{=}%si on rajoute une précision
+				{%
+					\StrBehind{#2}{=}[\precdecimal]%
+					\ensuremath{\num{\xintfloateval{round(#3,\precdecimal)}}}%
+				}%
+				{%
+					\ensuremath{\num{\xintfloateval{#3}}}%
+				}%
+		}%
+		{}%si l'argument optionnel est vide
+	}{%si non := entier
+		\num{\calculargument}%on affiche l'entier, avec le package siunitx
+	}%
+}
+
+%------Commande classique, 2x2 ou 3x3
+\NewDocumentCommand\MatriceInverse{ s O{} D<>{} r() }{%
+	%*=fractions avec - devant
+	%2=options conversion
+	%3=options nicematrix
+	%4=matrice (,,;,,)
+	%---------------------
+	%lectures des matrices
+	\setsepchar{§/,}%
+	\readlist*\MAMATRICEA{#4}%
+	\def\MatDim{\MAMATRICEAlen}%
+	%les coeffs de A et le déterminant et les coeff de l'inverse
+	\ifnum \MAMATRICEAlen=3
+		\itemtomacro\MAMATRICEA[1,1]\MatA
+		\itemtomacro\MAMATRICEA[1,2]\MatB
+		\itemtomacro\MAMATRICEA[1,3]\MatC
+		\itemtomacro\MAMATRICEA[2,1]\MatD
+		\itemtomacro\MAMATRICEA[2,2]\MatE
+		\itemtomacro\MAMATRICEA[2,3]\MatF
+		\itemtomacro\MAMATRICEA[3,1]\MatG
+		\itemtomacro\MAMATRICEA[3,2]\MatH
+		\itemtomacro\MAMATRICEA[3,3]\MatI
+		%le déterminant
+		\def\DETMATRICE{\xinteval{\MatA*\MatE*\MatI+\MatD*\MatH*\MatC+\MatB*\MatF*\MatG-\MatG*\MatE*\MatC-\MatD*\MatB*\MatI-\MatA*\MatH*\MatF}}%
+		%matrice inverse, si elle existe...
+		\xintifboolexpr{\DETMATRICE == 0}%
+			{\text{Matrice non inversible}}%
+			{%
+				\IfBooleanTF{#1}%
+					{%
+						\def\MatInvA{\ConvVersFrac*[#2]{(\MatE*\MatI-\MatH*\MatF)/\DETMATRICE}}%
+						\def\MatInvB{\ConvVersFrac*[#2]{(-\MatB*\MatI+\MatC*\MatH)/\DETMATRICE}}%
+						\def\MatInvC{\ConvVersFrac*[#2]{(\MatB*\MatF-\MatC*\MatE)/\DETMATRICE}}%
+						\def\MatInvD{\ConvVersFrac*[#2]{(-\MatD*\MatI+\MatF*\MatG)/\DETMATRICE}}%
+						\def\MatInvE{\ConvVersFrac*[#2]{(\MatA*\MatI-\MatC*\MatG)/\DETMATRICE}}%
+						\def\MatInvF{\ConvVersFrac*[#2]{(-\MatA*\MatF+\MatD*\MatC)/\DETMATRICE}}%
+						\def\MatInvG{\ConvVersFrac*[#2]{(\MatD*\MatH-\MatE*\MatG)/\DETMATRICE}}%
+						\def\MatInvH{\ConvVersFrac*[#2]{(-\MatA*\MatH+\MatB*\MatG)/\DETMATRICE}}%
+						\def\MatInvI{\ConvVersFrac*[#2]{(\MatA*\MatE-\MatB*\MatD)/\DETMATRICE}}%
+					}%
+					{%
+						\def\MatInvA{\ConvVersFrac[#2]{(\MatE*\MatI-\MatH*\MatF)/\DETMATRICE}}%
+						\def\MatInvB{\ConvVersFrac[#2]{(-\MatB*\MatI+\MatC*\MatH)/\DETMATRICE}}%
+						\def\MatInvC{\ConvVersFrac[#2]{(\MatB*\MatF-\MatC*\MatE)/\DETMATRICE}}%
+						\def\MatInvD{\ConvVersFrac[#2]{(-\MatD*\MatI+\MatF*\MatG)/\DETMATRICE}}%
+						\def\MatInvE{\ConvVersFrac[#2]{(\MatA*\MatI-\MatC*\MatG)/\DETMATRICE}}%
+						\def\MatInvF{\ConvVersFrac[#2]{(-\MatA*\MatF+\MatD*\MatC)/\DETMATRICE}}%
+						\def\MatInvG{\ConvVersFrac[#2]{(\MatD*\MatH-\MatE*\MatG)/\DETMATRICE}}%
+						\def\MatInvH{\ConvVersFrac[#2]{(-\MatA*\MatH+\MatB*\MatG)/\DETMATRICE}}%
+						\def\MatInvI{\ConvVersFrac[#2]{(\MatA*\MatE-\MatB*\MatD)/\DETMATRICE}}%
+					}%
+				\begin{pNiceMatrix}[#3]
+					{\MatInvA}&{\MatInvB}&{\MatInvC} \\
+					{\MatInvD}&{\MatInvE}&{\MatInvF} \\
+					{\MatInvG}&{\MatInvH}&{\MatInvI}
+				\end{pNiceMatrix}%
+			}%
+	\fi
+	\ifnum \MAMATRICEAlen=2
+		\itemtomacro\MAMATRICEA[1,1]\MatA
+		\itemtomacro\MAMATRICEA[1,2]\MatB
+		\itemtomacro\MAMATRICEA[2,1]\MatC
+		\itemtomacro\MAMATRICEA[2,2]\MatD
+		%le déterminant
+		\def\DETMATRICE{\xinteval{\MatA*\MatD-\MatB*\MatC}}%
+		%matrice inverse, si elle existe...
+		\xintifboolexpr{\DETMATRICE == 0}%
+			{\text{Matrice non inversible}}%
+			{%
+				\IfBooleanTF{#1}%
+				{%
+					\def\MatInvA{\ConvVersFrac*[#2]{(\MatD)/\DETMATRICE}}%
+					\def\MatInvB{\ConvVersFrac*[#2]{(-\MatB)/\DETMATRICE}}%
+					\def\MatInvC{\ConvVersFrac*[#2]{(-\MatC)/\DETMATRICE}}%
+					\def\MatInvD{\ConvVersFrac*[#2]{(\MatA)/\DETMATRICE}}%
+				}%
+				{%
+					\def\MatInvA{\ConvVersFrac[#2]{(\MatD)/\DETMATRICE}}%
+					\def\MatInvB{\ConvVersFrac[#2]{(-\MatB)/\DETMATRICE}}%
+					\def\MatInvC{\ConvVersFrac[#2]{(-\MatC)/\DETMATRICE}}%
+					\def\MatInvD{\ConvVersFrac[#2]{(\MatA)/\DETMATRICE}}%
+				}%
+				\begin{pNiceMatrix}[#3]
+					{\MatInvA}&{\MatInvB} \\
+					{\MatInvC}&{\MatInvD}
+				\end{pNiceMatrix}%
+			}%
+	\fi
+}
+
+\NewDocumentCommand\DetMatrice{ s O{} r() }{%
+	%*=fractions avec - devant
+	%2=options conversion
+	%3=matrice (,,;,,)
+	%---------------------
+	%lectures des matrices
+	\setsepchar{§/,}%
+	\readlist*\MAMATRICEA{#3}%
+	%les coeffs de A et le déterminant et les coeff de l'inverse
+	\ifnum \MAMATRICEAlen=3
+		\itemtomacro\MAMATRICEA[1,1]\MatA
+		\itemtomacro\MAMATRICEA[1,2]\MatB
+		\itemtomacro\MAMATRICEA[1,3]\MatC
+		\itemtomacro\MAMATRICEA[2,1]\MatD
+		\itemtomacro\MAMATRICEA[2,2]\MatE
+		\itemtomacro\MAMATRICEA[2,3]\MatF
+		\itemtomacro\MAMATRICEA[3,1]\MatG
+		\itemtomacro\MAMATRICEA[3,2]\MatH
+		\itemtomacro\MAMATRICEA[3,3]\MatI
+		%le déterminant
+		\def\DETMATRICE{\xinteval{\MatA*\MatE*\MatI+\MatD*\MatH*\MatC+\MatB*\MatF*\MatG-\MatG*\MatE*\MatC-\MatD*\MatB*\MatI-\MatA*\MatH*\MatF}}%
+	\fi
+	\ifnum \MAMATRICEAlen=2
+		\itemtomacro\MAMATRICEA[1,1]\MatA
+		\itemtomacro\MAMATRICEA[1,2]\MatB
+		\itemtomacro\MAMATRICEA[2,1]\MatC
+		\itemtomacro\MAMATRICEA[2,2]\MatD
+		%le déterminant
+		\def\DETMATRICE{\xinteval{\MatA*\MatD-\MatB*\MatC}}%
+	\fi
+	\IfBooleanTF{#1}%
+		{%
+			\ConvVersFrac*[#2]{\DETMATRICE}%
+		}%
+		{%
+			\ConvVersFrac[#2]{\DETMATRICE}%
+		}%
+}
+
+\NewDocumentCommand\SolutionSysteme{ s O{} D<>{} r() r() O{} }{%
+	%*=fractions avec - devant
+	%2=options conversion
+	%3=options nicematrix
+	%4=matrice (,,;,,) principale
+	%5=matrice (;;) second membre
+	%6=résultat sous forme d'une matrice
+	%---------------------
+	%lectures des matrices
+	\setsepchar{§/,}%
+	\readlist*\MAMATRICEA{#4}%
+	\setsepchar{,}%
+	\readlist*\MAMATRICEB{#5}%
+	\def\MatDim{\MAMATRICEAlen}%
+	%les coeffs de A et le déterminant et les coeff de l'inverse
+	\ifnum \MAMATRICEAlen=3
+		\itemtomacro\MAMATRICEA[1,1]\MatA
+		\itemtomacro\MAMATRICEA[1,2]\MatB
+		\itemtomacro\MAMATRICEA[1,3]\MatC
+		\itemtomacro\MAMATRICEA[2,1]\MatD
+		\itemtomacro\MAMATRICEA[2,2]\MatE
+		\itemtomacro\MAMATRICEA[2,3]\MatF
+		\itemtomacro\MAMATRICEA[3,1]\MatG
+		\itemtomacro\MAMATRICEA[3,2]\MatH
+		\itemtomacro\MAMATRICEA[3,3]\MatI
+		%le déterminant
+		\def\DETMATRICE{\xinteval{\MatA*\MatE*\MatI+\MatD*\MatH*\MatC+\MatB*\MatF*\MatG-\MatG*\MatE*\MatC-\MatD*\MatB*\MatI-\MatA*\MatH*\MatF}}%
+		%les coeffs de B
+		\itemtomacro\MAMATRICEB[1]\MatBA
+		\itemtomacro\MAMATRICEB[2]\MatBB
+		\itemtomacro\MAMATRICEB[3]\MatBC
+		%matrice inverse, si elle existe...
+		\xintifboolexpr{\DETMATRICE == 0}%
+			{\text{Matrice non inversible}}%
+			{%
+				\def\MatInvA{(\MatE*\MatI-\MatH*\MatF)/\DETMATRICE}%
+				\def\MatInvB{(-\MatB*\MatI+\MatC*\MatH)/\DETMATRICE}%
+				\def\MatInvC{(\MatB*\MatF-\MatC*\MatE)/\DETMATRICE}%
+				\def\MatInvD{(-\MatD*\MatI+\MatF*\MatG)/\DETMATRICE}%
+				\def\MatInvE{(\MatA*\MatI-\MatC*\MatG)/\DETMATRICE}%
+				\def\MatInvF{(-\MatA*\MatF+\MatD*\MatC)/\DETMATRICE}%
+				\def\MatInvG{(\MatD*\MatH-\MatE*\MatG)/\DETMATRICE}%
+				\def\MatInvH{(-\MatA*\MatH+\MatB*\MatG)/\DETMATRICE}%
+				\def\MatInvI{(\MatA*\MatE-\MatB*\MatD)/\DETMATRICE}%
+				%
+				\IfBooleanTF{#1}%version étoilée := moinsdevant
+					{%
+						\def\MatResA{\ConvVersFrac*[#2]{\MatInvA*\MatBA+\MatInvB*\MatBB+\MatInvC*\MatBC}}%
+						\def\MatResB{\ConvVersFrac*[#2]{\MatInvD*\MatBA+\MatInvE*\MatBB+\MatInvF*\MatBC}}%
+						\def\MatResC{\ConvVersFrac*[#2]{\MatInvG*\MatBA+\MatInvH*\MatBB+\MatInvI*\MatBC}}%
+					}%
+					{%
+						\def\MatResA{\ConvVersFrac[#2]{\MatInvA*\MatBA+\MatInvB*\MatBB+\MatInvC*\MatBC}}%
+						\def\MatResB{\ConvVersFrac[#2]{\MatInvD*\MatBA+\MatInvE*\MatBB+\MatInvF*\MatBC}}%
+						\def\MatResC{\ConvVersFrac[#2]{\MatInvG*\MatBA+\MatInvH*\MatBB+\MatInvI*\MatBC}}%
+					}%
+				\IfStrEq{#6}{Matrice}%si matrice
+					{%
+						\begin{pNiceMatrix}[#3]
+							{\MatResA} \\
+							{\MatResB} \\
+							{\MatResC}
+						\end{pNiceMatrix}%
+					}%
+					{%
+						\left( {\MatResA} ; {\MatResB} ; {\MatResC} \right)%
+					}%
+			}%
+	\fi
+	\ifnum \MAMATRICEAlen=2
+		\itemtomacro\MAMATRICEA[1,1]\MatA
+		\itemtomacro\MAMATRICEA[1,2]\MatB
+		\itemtomacro\MAMATRICEA[2,1]\MatC
+		\itemtomacro\MAMATRICEA[2,2]\MatD
+		%le déterminant
+		\def\DETMATRICE{\xinteval{\MatA*\MatD-\MatB*\MatC}}%
+		%les coeffs de B
+		\itemtomacro\MAMATRICEB[1]\MatBA
+		\itemtomacro\MAMATRICEB[2]\MatBB
+		%matrice inverse, si elle existe...
+		\xintifboolexpr{\DETMATRICE == 0}%
+			{\text{Matrice non inversible}}%
+			{%
+				\def\MatInvA{(\MatD)/\DETMATRICE}%
+				\def\MatInvB{(-\MatB)/\DETMATRICE}%
+				\def\MatInvC{(-\MatC)/\DETMATRICE}%
+				\def\MatInvD{(\MatA)/\DETMATRICE}%
+				%
+				\IfBooleanTF{#1}%
+					{%
+						\def\MatResA{\ConvVersFrac*[#2]{\MatInvA*\MatBA+\MatInvB*\MatBB}}%
+						\def\MatResB{\ConvVersFrac*[#2]{\MatInvC*\MatBA+\MatInvD*\MatBB}}%
+					}%
+					{%
+						\def\MatResA{\ConvVersFrac[#2]{\MatInvA*\MatBA+\MatInvB*\MatBB}}%
+						\def\MatResB{\ConvVersFrac[#2]{\MatInvC*\MatBA+\MatInvD*\MatBB}}%
+					}%
+				\IfStrEq{#6}{Matrice}%si matrice
+					{%
+						\begin{pNiceMatrix}[#3]
+							{\MatResA} \\
+							{\MatResB}
+						\end{pNiceMatrix}%
+					}%
+					{%
+						\left( {\MatResA} ; {\MatResB} \right)%
+					}%
+			}%
+	\fi
+}
+
+%------Commandes via pyluatex
+\if at pyluatex %package pyluatex à charger par l'utilisateur !
+\NewDocumentCommand\SolutionSystemePY{ s O{} D<>{} r() r() O{} }{%
+	%*=avec le moins devant
+	%2=Option Fraction
+	%3=matrice du système
+	%4=second membre
+	%5=option NiceMatrix
+	%6=résultat sous forme d'une matrice
+	%---------------------
+	%lectures des matrices
+	\setsepchar{§/,}%
+	\readlist*\MAMATRICEA{#4}%
+	\setsepchar{,}%
+	\readlist*\MAMATRICEB{#5}%
+	%système QuatreQuatre
+	\ifnum \MAMATRICEAlen=4
+		\itemtomacro\MAMATRICEA[1,1]\MatA
+		\itemtomacro\MAMATRICEA[1,2]\MatB
+		\itemtomacro\MAMATRICEA[1,3]\MatC
+		\itemtomacro\MAMATRICEA[1,4]\MatD
+		\itemtomacro\MAMATRICEA[2,1]\MatE
+		\itemtomacro\MAMATRICEA[2,2]\MatF
+		\itemtomacro\MAMATRICEA[2,3]\MatG
+		\itemtomacro\MAMATRICEA[2,4]\MatH
+		\itemtomacro\MAMATRICEA[3,1]\MatI
+		\itemtomacro\MAMATRICEA[3,2]\MatJ
+		\itemtomacro\MAMATRICEA[3,3]\MatK
+		\itemtomacro\MAMATRICEA[3,4]\MatL
+		\itemtomacro\MAMATRICEA[4,1]\MatM
+		\itemtomacro\MAMATRICEA[4,2]\MatN
+		\itemtomacro\MAMATRICEA[4,3]\MatO
+		\itemtomacro\MAMATRICEA[4,4]\MatP
+		%les coeffs de B
+		\itemtomacro\MAMATRICEB[1]\MatBA
+		\itemtomacro\MAMATRICEB[2]\MatBB
+		\itemtomacro\MAMATRICEB[3]\MatBC
+		\itemtomacro\MAMATRICEB[4]\MatBD
+		%les solutions
+		\def\DETMATRICE{\xinteval{\py{det_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP)}}}%
+		\xintifboolexpr{\DETMATRICE == 0}%
+			{\text{Matrice non inversible}}%
+			{%
+			\IfBooleanTF{#1}%
+				{
+					\def\MatResA{\ConvVersFrac*[#2]{\py{resol_systeme_QQ(\MatA,\MatB,\MatC,\MatD,\MatBA,\MatE,\MatF,\MatG,\MatH,\MatBB,\MatI,\MatJ,\MatK,\MatL,\MatBC,\MatM,\MatN,\MatO,\MatP,\MatBD)[x]}}}%
+					\def\MatResB{\ConvVersFrac*[#2]{\py{resol_systeme_QQ(\MatA,\MatB,\MatC,\MatD,\MatBA,\MatE,\MatF,\MatG,\MatH,\MatBB,\MatI,\MatJ,\MatK,\MatL,\MatBC,\MatM,\MatN,\MatO,\MatP,\MatBD)[y]}}}%
+					\def\MatResC{\ConvVersFrac*[#2]{\py{resol_systeme_QQ(\MatA,\MatB,\MatC,\MatD,\MatBA,\MatE,\MatF,\MatG,\MatH,\MatBB,\MatI,\MatJ,\MatK,\MatL,\MatBC,\MatM,\MatN,\MatO,\MatP,\MatBD)[z]}}}%
+					\def\MatResD{\ConvVersFrac*[#2]{\py{resol_systeme_QQ(\MatA,\MatB,\MatC,\MatD,\MatBA,\MatE,\MatF,\MatG,\MatH,\MatBB,\MatI,\MatJ,\MatK,\MatL,\MatBC,\MatM,\MatN,\MatO,\MatP,\MatBD)[t]}}}%
+				}%
+				{%
+					\def\MatResA{\ConvVersFrac[#2]{\py{resol_systeme_QQ(\MatA,\MatB,\MatC,\MatD,\MatBA,\MatE,\MatF,\MatG,\MatH,\MatBB,\MatI,\MatJ,\MatK,\MatL,\MatBC,\MatM,\MatN,\MatO,\MatP,\MatBD)[x]}}}%
+					\def\MatResB{\ConvVersFrac[#2]{\py{resol_systeme_QQ(\MatA,\MatB,\MatC,\MatD,\MatBA,\MatE,\MatF,\MatG,\MatH,\MatBB,\MatI,\MatJ,\MatK,\MatL,\MatBC,\MatM,\MatN,\MatO,\MatP,\MatBD)[y]}}}%
+					\def\MatResC{\ConvVersFrac[#2]{\py{resol_systeme_QQ(\MatA,\MatB,\MatC,\MatD,\MatBA,\MatE,\MatF,\MatG,\MatH,\MatBB,\MatI,\MatJ,\MatK,\MatL,\MatBC,\MatM,\MatN,\MatO,\MatP,\MatBD)[z]}}}%
+					\def\MatResD{\ConvVersFrac[#2]{\py{resol_systeme_QQ(\MatA,\MatB,\MatC,\MatD,\MatBA,\MatE,\MatF,\MatG,\MatH,\MatBB,\MatI,\MatJ,\MatK,\MatL,\MatBC,\MatM,\MatN,\MatO,\MatP,\MatBD)[t]}}}%
+				}%
+				\IfStrEq{#6}{Matrice}%si matrice
+				{%
+					\begin{pNiceMatrix}[#3]
+						{\MatResA} \\
+						{\MatResB} \\
+						{\MatResC} \\
+						{\MatResD}
+					\end{pNiceMatrix}%
+				}%
+				{%
+					\left( {\MatResA} ; {\MatResB} ; {\MatResC} ; {\MatResD} \right)%
+				}%
+			}%
+	\fi
+	%système TroisTrois
+	\ifnum \MAMATRICEAlen=3
+		\itemtomacro\MAMATRICEA[1,1]\MatA
+		\itemtomacro\MAMATRICEA[1,2]\MatB
+		\itemtomacro\MAMATRICEA[1,3]\MatC
+		\itemtomacro\MAMATRICEA[2,1]\MatD
+		\itemtomacro\MAMATRICEA[2,2]\MatE
+		\itemtomacro\MAMATRICEA[2,3]\MatF
+		\itemtomacro\MAMATRICEA[3,1]\MatG
+		\itemtomacro\MAMATRICEA[3,2]\MatH
+		\itemtomacro\MAMATRICEA[3,3]\MatI
+		%les coeffs de B
+		\itemtomacro\MAMATRICEB[1]\MatBA
+		\itemtomacro\MAMATRICEB[2]\MatBB
+		\itemtomacro\MAMATRICEB[3]\MatBC
+		%les solutions
+		\def\DETMATRICE{\xinteval{\py{det_matrice_TT(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI)}}}%
+		\xintifboolexpr{\DETMATRICE == 0}%
+			{\text{Matrice non inversible}}%
+			{%
+				\IfBooleanTF{#1}%
+					{
+						\def\MatResA{\ConvVersFrac*[#2]{\py{resol_systeme_TT(\MatA,\MatB,\MatC,\MatBA,\MatD,\MatE,\MatF,\MatBB,\MatG,\MatH,\MatI,\MatBC)[x]}}}%
+						\def\MatResB{\ConvVersFrac*[#2]{\py{resol_systeme_TT(\MatA,\MatB,\MatC,\MatBA,\MatD,\MatE,\MatF,\MatBB,\MatG,\MatH,\MatI,\MatBC)[y]}}}%
+						\def\MatResC{\ConvVersFrac*[#2]{\py{resol_systeme_TT(\MatA,\MatB,\MatC,\MatBA,\MatD,\MatE,\MatF,\MatBB,\MatG,\MatH,\MatI,\MatBC)[z]}}}%
+					}%
+					{%
+						\def\MatResA{\ConvVersFrac[#2]{\py{resol_systeme_TT(\MatA,\MatB,\MatC,\MatBA,\MatD,\MatE,\MatF,\MatBB,\MatG,\MatH,\MatI,\MatBC)[x]}}}%
+						\def\MatResB{\ConvVersFrac[#2]{\py{resol_systeme_TT(\MatA,\MatB,\MatC,\MatBA,\MatD,\MatE,\MatF,\MatBB,\MatG,\MatH,\MatI,\MatBC)[y]}}}%
+						\def\MatResC{\ConvVersFrac[#2]{\py{resol_systeme_TT(\MatA,\MatB,\MatC,\MatBA,\MatD,\MatE,\MatF,\MatBB,\MatG,\MatH,\MatI,\MatBC)[z]}}}%
+					}%
+				\IfStrEq{#6}{Matrice}%si matrice
+					{%
+						\begin{pNiceMatrix}[#3]
+							{\MatResA} \\
+							{\MatResB} \\
+							{\MatResC}
+						\end{pNiceMatrix}%
+					}%
+					{%
+						\left( {\MatResA} ; {\MatResB} ; {\MatResC} \right)%
+					}%
+			}%
+	\fi
+	%système DeuxDeux
+	\ifnum \MAMATRICEAlen=2
+		\itemtomacro\MAMATRICEA[1,1]\MatA
+		\itemtomacro\MAMATRICEA[1,2]\MatB
+		\itemtomacro\MAMATRICEA[2,1]\MatC
+		\itemtomacro\MAMATRICEA[2,2]\MatD
+		%les coeffs de B
+		\itemtomacro\MAMATRICEB[1]\MatBA
+		\itemtomacro\MAMATRICEB[2]\MatBB
+		%solutions
+		\def\DETMATRICE{\xinteval{\py{det_matrice_DD(\MatA,\MatB,\MatC,\MatD)}}}%
+		\xintifboolexpr{\DETMATRICE == 0}%
+			{\text{Matrice non inversible}}%
+			{%
+				\IfBooleanTF{#1}%
+				{
+					\def\MatResA{\ConvVersFrac*[#2]{\py{resol_systeme_DD(\MatA,\MatB,\MatBA,\MatC,\MatD,\MatBB)[x]}}}%
+					\def\MatResB{\ConvVersFrac*[#2]{\py{resol_systeme_DD(\MatA,\MatB,\MatBA,\MatC,\MatD,\MatBB)[y]}}}%
+				}%
+				{%
+					\def\MatResA{\ConvVersFrac[#2]{\py{resol_systeme_DD(\MatA,\MatB,\MatBA,\MatC,\MatD,\MatBB)[x]}}}%
+					\def\MatResB{\ConvVersFrac[#2]{\py{resol_systeme_DD(\MatA,\MatB,\MatBA,\MatC,\MatD,\MatBB)[y]}}}%
+				}%
+				\IfStrEq{#6}{Matrice}%si matrice
+					{%
+						\begin{pNiceMatrix}[#3]
+							{\MatResA} \\
+							{\MatResB}
+						\end{pNiceMatrix}%
+					}%
+					{%
+						\left( {\MatResA} ; {\MatResB} \right)%
+					}%
+			}%
+	\fi
+}
+
+\NewDocumentCommand\MatriceInversePY{ s O{} D<>{} r() }{%
+	%*=fractions avec - devant
+	%2=options conversion
+	%3=options nicematrix
+	%4=matrice (,,;,,)
+	%---------------------
+	%lectures des matrices
+	\setsepchar{§/,}%
+	\readlist*\MAMATRICEA{#4}%
+	%les coeffs de A et le déterminant et les coeff de l'inverse
+	\ifnum \MAMATRICEAlen=4
+		\itemtomacro\MAMATRICEA[1,1]\MatA
+		\itemtomacro\MAMATRICEA[1,2]\MatB
+		\itemtomacro\MAMATRICEA[1,3]\MatC
+		\itemtomacro\MAMATRICEA[1,4]\MatD
+		\itemtomacro\MAMATRICEA[2,1]\MatE
+		\itemtomacro\MAMATRICEA[2,2]\MatF
+		\itemtomacro\MAMATRICEA[2,3]\MatG
+		\itemtomacro\MAMATRICEA[2,4]\MatH
+		\itemtomacro\MAMATRICEA[3,1]\MatI
+		\itemtomacro\MAMATRICEA[3,2]\MatJ
+		\itemtomacro\MAMATRICEA[3,3]\MatK
+		\itemtomacro\MAMATRICEA[3,4]\MatL
+		\itemtomacro\MAMATRICEA[4,1]\MatM
+		\itemtomacro\MAMATRICEA[4,2]\MatN
+		\itemtomacro\MAMATRICEA[4,3]\MatO
+		\itemtomacro\MAMATRICEA[4,4]\MatP
+		%les solutions
+		\def\DETMATRICE{\xinteval{\py{det_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP)}}}%
+		\xintifboolexpr{\DETMATRICE == 0}%
+			{\text{Matrice non inversible}}%
+			{%
+			\IfBooleanTF{#1}%
+			{
+				\def\MatInvA{\ConvVersFrac*[#2]{\py{inverse_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP)[0]}}}%
+				\def\MatInvB{\ConvVersFrac*[#2]{\py{inverse_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP)[1]}}}%
+				\def\MatInvC{\ConvVersFrac*[#2]{\py{inverse_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP)[2]}}}%
+				\def\MatInvD{\ConvVersFrac*[#2]{\py{inverse_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP)[3]}}}%
+				\def\MatInvE{\ConvVersFrac*[#2]{\py{inverse_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP)[4]}}}%
+				\def\MatInvF{\ConvVersFrac*[#2]{\py{inverse_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP)[5]}}}%
+				\def\MatInvG{\ConvVersFrac*[#2]{\py{inverse_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP)[6]}}}%
+				\def\MatInvH{\ConvVersFrac*[#2]{\py{inverse_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP)[7]}}}%
+				\def\MatInvI{\ConvVersFrac*[#2]{\py{inverse_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP)[8]}}}%
+				\def\MatInvJ{\ConvVersFrac*[#2]{\py{inverse_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP)[9]}}}%
+				\def\MatInvK{\ConvVersFrac*[#2]{\py{inverse_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP)[10]}}}%
+				\def\MatInvL{\ConvVersFrac*[#2]{\py{inverse_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP)[11]}}}%
+				\def\MatInvM{\ConvVersFrac*[#2]{\py{inverse_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP)[12]}}}%
+				\def\MatInvN{\ConvVersFrac*[#2]{\py{inverse_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP)[13]}}}%
+				\def\MatInvO{\ConvVersFrac*[#2]{\py{inverse_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP)[14]}}}%
+				\def\MatInvP{\ConvVersFrac*[#2]{\py{inverse_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP)[15]}}}%
+			}%
+			{%
+				\def\MatInvA{\ConvVersFrac[#2]{\py{inverse_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP)[0]}}}%
+				\def\MatInvB{\ConvVersFrac[#2]{\py{inverse_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP)[1]}}}%
+				\def\MatInvC{\ConvVersFrac[#2]{\py{inverse_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP)[2]}}}%
+				\def\MatInvD{\ConvVersFrac[#2]{\py{inverse_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP)[3]}}}%
+				\def\MatInvE{\ConvVersFrac[#2]{\py{inverse_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP)[4]}}}%
+				\def\MatInvF{\ConvVersFrac[#2]{\py{inverse_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP)[5]}}}%
+				\def\MatInvG{\ConvVersFrac[#2]{\py{inverse_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP)[6]}}}%
+				\def\MatInvH{\ConvVersFrac[#2]{\py{inverse_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP)[7]}}}%
+				\def\MatInvI{\ConvVersFrac[#2]{\py{inverse_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP)[8]}}}%
+				\def\MatInvJ{\ConvVersFrac[#2]{\py{inverse_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP)[9]}}}%
+				\def\MatInvK{\ConvVersFrac[#2]{\py{inverse_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP)[10]}}}%
+				\def\MatInvL{\ConvVersFrac[#2]{\py{inverse_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP)[11]}}}%
+				\def\MatInvM{\ConvVersFrac[#2]{\py{inverse_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP)[12]}}}%
+				\def\MatInvN{\ConvVersFrac[#2]{\py{inverse_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP)[13]}}}%
+				\def\MatInvO{\ConvVersFrac[#2]{\py{inverse_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP)[14]}}}%
+				\def\MatInvP{\ConvVersFrac[#2]{\py{inverse_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP)[15]}}}%
+			}%
+			\begin{pNiceMatrix}[#3]
+				{\MatInvA} & {\MatInvB} & {\MatInvC} & {\MatInvD} \\
+				{\MatInvE} & {\MatInvF} & {\MatInvG} & {\MatInvH} \\
+				{\MatInvI} & {\MatInvJ} & {\MatInvK} & {\MatInvL} \\
+				{\MatInvM} & {\MatInvN} & {\MatInvO} & {\MatInvP} \\
+			\end{pNiceMatrix}%
+		}%
+	\fi
+	\ifnum \MAMATRICEAlen=3
+		\itemtomacro\MAMATRICEA[1,1]\MatA
+		\itemtomacro\MAMATRICEA[1,2]\MatB
+		\itemtomacro\MAMATRICEA[1,3]\MatC
+		\itemtomacro\MAMATRICEA[2,1]\MatD
+		\itemtomacro\MAMATRICEA[2,2]\MatE
+		\itemtomacro\MAMATRICEA[2,3]\MatF
+		\itemtomacro\MAMATRICEA[3,1]\MatG
+		\itemtomacro\MAMATRICEA[3,2]\MatH
+		\itemtomacro\MAMATRICEA[3,3]\MatI
+		\def\DETMATRICE{\xinteval{\py{det_matrice_TT(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI)}}}%
+		\xintifboolexpr{\DETMATRICE == 0}%
+			{\text{Matrice non inversible}}%
+			{%
+			\IfBooleanTF{#1}%
+			{%
+				\def\MatInvA{\ConvVersFrac*[#2]{\py{inverse_matrice_TT(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI)[0]}}}
+				\def\MatInvB{\ConvVersFrac*[#2]{\py{inverse_matrice_TT(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI)[1]}}}
+				\def\MatInvC{\ConvVersFrac*[#2]{\py{inverse_matrice_TT(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI)[2]}}}
+				\def\MatInvD{\ConvVersFrac*[#2]{\py{inverse_matrice_TT(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI)[3]}}}
+				\def\MatInvE{\ConvVersFrac*[#2]{\py{inverse_matrice_TT(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI)[4]}}}
+				\def\MatInvF{\ConvVersFrac*[#2]{\py{inverse_matrice_TT(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI)[5]}}}
+				\def\MatInvG{\ConvVersFrac*[#2]{\py{inverse_matrice_TT(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI)[6]}}}
+				\def\MatInvH{\ConvVersFrac*[#2]{\py{inverse_matrice_TT(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI)[7]}}}
+				\def\MatInvI{\ConvVersFrac*[#2]{\py{inverse_matrice_TT(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI)[8]}}}
+			}%
+			{%
+				\def\MatInvA{\ConvVersFrac[#2]{\py{inverse_matrice_TT(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI)[0]}}}
+				\def\MatInvB{\ConvVersFrac[#2]{\py{inverse_matrice_TT(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI)[1]}}}
+				\def\MatInvC{\ConvVersFrac[#2]{\py{inverse_matrice_TT(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI)[2]}}}
+				\def\MatInvD{\ConvVersFrac[#2]{\py{inverse_matrice_TT(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI)[3]}}}
+				\def\MatInvE{\ConvVersFrac[#2]{\py{inverse_matrice_TT(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI)[4]}}}
+				\def\MatInvF{\ConvVersFrac[#2]{\py{inverse_matrice_TT(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI)[5]}}}
+				\def\MatInvG{\ConvVersFrac[#2]{\py{inverse_matrice_TT(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI)[6]}}}
+				\def\MatInvH{\ConvVersFrac[#2]{\py{inverse_matrice_TT(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI)[7]}}}
+				\def\MatInvI{\ConvVersFrac[#2]{\py{inverse_matrice_TT(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI)[8]}}}
+			}%
+			\begin{pNiceMatrix}[#3]
+				{\MatInvA} & {\MatInvB} & {\MatInvC} \\
+				{\MatInvD} & {\MatInvE} & {\MatInvF} \\
+				{\MatInvG} & {\MatInvH} & {\MatInvI}
+			\end{pNiceMatrix}%
+			}%
+	\fi
+	\ifnum \MAMATRICEAlen=2
+		\itemtomacro\MAMATRICEA[1,1]\MatA
+		\itemtomacro\MAMATRICEA[1,2]\MatB
+		\itemtomacro\MAMATRICEA[2,1]\MatC
+		\itemtomacro\MAMATRICEA[2,2]\MatD
+		\def\DETMATRICE{\xinteval{\py{det_matrice_DD(\MatA,\MatB,\MatC,\MatD)}}}%
+		\xintifboolexpr{\DETMATRICE == 0}%
+			{\text{Matrice non inversible}}%
+			{%
+			\IfBooleanTF{#1}%
+			{%
+				\def\MatInvA{\ConvVersFrac*[#2]{\py{inverse_matrice_DD(\MatA,\MatB,\MatC,\MatD)[0]}}}
+				\def\MatInvB{\ConvVersFrac*[#2]{\py{inverse_matrice_DD(\MatA,\MatB,\MatC,\MatD)[1]}}}
+				\def\MatInvC{\ConvVersFrac*[#2]{\py{inverse_matrice_DD(\MatA,\MatB,\MatC,\MatD)[2]}}}
+				\def\MatInvD{\ConvVersFrac*[#2]{\py{inverse_matrice_DD(\MatA,\MatB,\MatC,\MatD)[3]}}}
+			}%
+			{%
+				\def\MatInvA{\ConvVersFrac[#2]{\py{inverse_matrice_DD(\MatA,\MatB,\MatC,\MatD)[0]}}}
+				\def\MatInvB{\ConvVersFrac[#2]{\py{inverse_matrice_DD(\MatA,\MatB,\MatC,\MatD)[1]}}}
+				\def\MatInvC{\ConvVersFrac[#2]{\py{inverse_matrice_DD(\MatA,\MatB,\MatC,\MatD)[2]}}}
+				\def\MatInvD{\ConvVersFrac[#2]{\py{inverse_matrice_DD(\MatA,\MatB,\MatC,\MatD)[3]}}}
+			}%
+			\begin{pNiceMatrix}[#3]
+				{\MatInvA} & {\MatInvB} \\
+				{\MatInvC} & {\MatInvD}
+			\end{pNiceMatrix}%
+		}%
+	\fi
+}
+
+\NewDocumentCommand\DetMatricePY{ s O{} r() }{%
+	%*=fractions avec - devant
+	%2=options conversion
+	%3=matrice (,,;,,)
+	%---------------------
+	%lectures des matrices
+	\setsepchar{§/,}%
+	\readlist*\MAMATRICEA{#3}%
+	\def\MatDim{\MAMATRICEAlen}%
+	%les coeffs de A et le déterminant et les coeff de l'inverse
+	\ifnum \MAMATRICEAlen=4
+		\itemtomacro\MAMATRICEA[1,1]\MatA
+		\itemtomacro\MAMATRICEA[1,2]\MatB
+		\itemtomacro\MAMATRICEA[1,3]\MatC
+		\itemtomacro\MAMATRICEA[1,4]\MatD
+		\itemtomacro\MAMATRICEA[2,1]\MatE
+		\itemtomacro\MAMATRICEA[2,2]\MatF
+		\itemtomacro\MAMATRICEA[2,3]\MatG
+		\itemtomacro\MAMATRICEA[2,4]\MatH
+		\itemtomacro\MAMATRICEA[3,1]\MatI
+		\itemtomacro\MAMATRICEA[3,2]\MatJ
+		\itemtomacro\MAMATRICEA[3,3]\MatK
+		\itemtomacro\MAMATRICEA[3,4]\MatL
+		\itemtomacro\MAMATRICEA[4,1]\MatM
+		\itemtomacro\MAMATRICEA[4,2]\MatN
+		\itemtomacro\MAMATRICEA[4,3]\MatO
+		\itemtomacro\MAMATRICEA[4,4]\MatP
+		%les solutions
+		\def\DETMATRICE{\xinteval{\py{det_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP)}}}%
+	\fi
+	\ifnum \MAMATRICEAlen=3
+		\itemtomacro\MAMATRICEA[1,1]\MatA
+		\itemtomacro\MAMATRICEA[1,2]\MatB
+		\itemtomacro\MAMATRICEA[1,3]\MatC
+		\itemtomacro\MAMATRICEA[2,1]\MatD
+		\itemtomacro\MAMATRICEA[2,2]\MatE
+		\itemtomacro\MAMATRICEA[2,3]\MatF
+		\itemtomacro\MAMATRICEA[3,1]\MatG
+		\itemtomacro\MAMATRICEA[3,2]\MatH
+		\itemtomacro\MAMATRICEA[3,3]\MatI
+		\def\DETMATRICE{\xinteval{\py{det_matrice_TT(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI)}}}%
+	\fi
+	\ifnum \MAMATRICEAlen=2
+		\itemtomacro\MAMATRICEA[1,1]\MatA
+		\itemtomacro\MAMATRICEA[1,2]\MatB
+		\itemtomacro\MAMATRICEA[2,1]\MatC
+		\itemtomacro\MAMATRICEA[2,2]\MatD
+		\def\DETMATRICE{\xinteval{\py{det_matrice_DD(\MatA,\MatB,\MatC,\MatD)}}}%
+	\fi
+	\IfBooleanTF{#1}%
+		{%
+			\ConvVersFrac*[#2]{\DETMATRICE}%
+		}%
+		{%
+			\ConvVersFrac[#2]{\DETMATRICE}%
+		}%
+}
+\fi
+
+\endinput
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/tex/latex/resolsysteme/ResolSysteme.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/tlpkg/bin/tlpkg-ctan-check
===================================================================
--- trunk/Master/tlpkg/bin/tlpkg-ctan-check	2023-02-07 20:48:04 UTC (rev 65752)
+++ trunk/Master/tlpkg/bin/tlpkg-ctan-check	2023-02-07 20:49:10 UTC (rev 65753)
@@ -703,7 +703,7 @@
     refcheck refcount refenums reflectgraphics refman refstyle
     regcount regexpatch register regstats
     reledmac relenc relsize reotex repeatindex repere repltext
-    rerunfilecheck rescansync resmes resphilosophica rest-api
+    rerunfilecheck rescansync resmes resolsysteme resphilosophica rest-api
     resumecls resumemac returntogrid reverxii revquantum revtex revtex4-1
     rgltxdoc ribbonproofs rjlparshap rlepsf rmathbr rmpage
     robotarm roboto robustcommand robustindex rojud

Modified: trunk/Master/tlpkg/libexec/ctan2tds
===================================================================
--- trunk/Master/tlpkg/libexec/ctan2tds	2023-02-07 20:48:04 UTC (rev 65752)
+++ trunk/Master/tlpkg/libexec/ctan2tds	2023-02-07 20:49:10 UTC (rev 65753)
@@ -1769,6 +1769,7 @@
  'pxbase'               => '&POSTpxbase',
  'pxchfon'              => '&POSTpxchfon',
  'recipebook'		=> '&POST_rmsymlink',
+ 'resolsysteme'		=> '&POST_onelevel',
  'sanskrit'		=> '&POSTsanskrit',
  'schule'		=> '&POSTschule',
  'scontents'		=> '&POSTscontents',

Modified: trunk/Master/tlpkg/tlpsrc/collection-mathscience.tlpsrc
===================================================================
--- trunk/Master/tlpkg/tlpsrc/collection-mathscience.tlpsrc	2023-02-07 20:48:04 UTC (rev 65752)
+++ trunk/Master/tlpkg/tlpsrc/collection-mathscience.tlpsrc	2023-02-07 20:49:10 UTC (rev 65753)
@@ -191,6 +191,7 @@
 depend rank-2-roots
 depend rbt-mathnotes
 depend rec-thy
+depend resolsysteme
 depend rest-api
 depend revquantum
 depend ribbonproofs

Added: trunk/Master/tlpkg/tlpsrc/resolsysteme.tlpsrc
===================================================================


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