texlive[49690] Master/texmf-dist: systeme (13jan19)

commits+karl at tug.org commits+karl at tug.org
Mon Jan 14 00:30:38 CET 2019


Revision: 49690
          http://tug.org/svn/texlive?view=revision&revision=49690
Author:   karl
Date:     2019-01-14 00:30:37 +0100 (Mon, 14 Jan 2019)
Log Message:
-----------
systeme (13jan19)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/generic/systeme/README
    trunk/Master/texmf-dist/doc/generic/systeme/systeme_fr.pdf
    trunk/Master/texmf-dist/doc/generic/systeme/systeme_fr.tex
    trunk/Master/texmf-dist/tex/generic/systeme/systeme.sty
    trunk/Master/texmf-dist/tex/generic/systeme/systeme.tex

Modified: trunk/Master/texmf-dist/doc/generic/systeme/README
===================================================================
--- trunk/Master/texmf-dist/doc/generic/systeme/README	2019-01-13 23:30:14 UTC (rev 49689)
+++ trunk/Master/texmf-dist/doc/generic/systeme/README	2019-01-13 23:30:37 UTC (rev 49690)
@@ -1,9 +1,9 @@
                              L'extension
                               systeme
 
-                                v0.31
+                                v0.32
 
-                          1er janvier 2018
+                           13 janvier 2019
 
 Author    : Christian Tellechea
 Email     : unbonpetit at netc.fr     (CT)
@@ -24,4 +24,4 @@
 
 This package allows you to enter systems of linear equations or
 inequalities in a intuitive way, and produces output where the terms
-and signs are aligned vertically.
\ No newline at end of file
+and signs are aligned vertically.

Modified: trunk/Master/texmf-dist/doc/generic/systeme/systeme_fr.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/generic/systeme/systeme_fr.tex
===================================================================
--- trunk/Master/texmf-dist/doc/generic/systeme/systeme_fr.tex	2019-01-13 23:30:14 UTC (rev 49689)
+++ trunk/Master/texmf-dist/doc/generic/systeme/systeme_fr.tex	2019-01-13 23:30:37 UTC (rev 49690)
@@ -1,22 +1,14 @@
 %  Documentation de systeme
-\documentclass[10pt]{article}
+\documentclass[10pt,french]{article}
 \usepackage[utf8]{inputenc}
 \usepackage[T1]{fontenc}
-\usepackage[a4paper,margin=2.75cm,head=12pt,headsep=7mm,footskip=7mm]{geometry}
+\usepackage[a4paper,margin=3cm,head=12pt,headsep=7mm,footskip=7mm]{geometry}
 \usepackage[bottom]{footmisc}
-\usepackage{libertine}
+\usepackage{libertine,amsmath,fancybox,enumitem,systeme,xcolor,amssymb,array,longtable,fancyhdr}
 \renewcommand*\oldstylenums[1]{{\fontfamily{fxlj}\selectfont #1}}
 \usepackage[scaled=0.8]{luximono}
 \usepackage[libertine]{newtxmath}%
-\usepackage{amsmath}
-\usepackage{fancybox}
-\usepackage{enumitem}
-\usepackage{systeme}
-\usepackage{xcolor}
-\usepackage{amssymb}
-\usepackage{array,longtable}
 \usepackage[protrusion=true,expansion,final,babel=true]{microtype}
-\usepackage{fancyhdr}
 \fancypagestyle{plain}{%
 	\fancyhead[L]{\small L'extension \bfseries systeme}
 	\fancyhead[C]{}
@@ -93,12 +85,13 @@
 \def\longfrdate{\expandafter\longfrdate at i\SYSdate\@nil}
 \makeatother
 
-\usepackage[frenchb]{babel}
+\usepackage{babel}
 \frenchbsetup{StandardLists=true}
 
 \usepackage[plainpages=false,pdfpagelabels,bookmarks=true,bookmarksopen=true,colorlinks=true,hyperfootnotes=false,filecolor=black,linkcolor=blue,urlcolor=magenta,pdfauthor={Christian TELLECHEA},pdftitle={systeme},pdfsubject={Saisie intuitive de systèmes d'équations},pdfkeywords={systeme},pdfcreator={LaTeX}]{hyperref}
 
 \setitemize{leftmargin=3em,topsep=0pt,parsep=0pt,itemsep=0pt,label=--}
+
 \begin{document}
 \begin{titlepage}
 	\null\par\vspace{1.5cm}
@@ -156,7 +149,7 @@
 -a+2b+c=-5}/
 La virgule, qui est le séparateur par défaut, peut être changée en tout autre caractère. Il suffit de placer ce nouveau caractère dans l'argument de la commande \verb-\syseqsep-.
 
-La commande \verb-\systeme- fonctionnera en mode math ou non et donnera un résultat correct si toutes les inconnues se trouvent dans le membre de gauche, le membre de droite étant celui des constantes. Les équations doivent être \emph{développées}, c'est-à-dire que chaque terme est séparé de son voisin par un "+" ou un "-". De plus, les inconnues doivent être des lettres minuscules non accentuées, c'est-à-dire tout caractère de \og\verb-a-\fg{} à \og\verb-z-\fg.
+La commande \verb-\systeme- fonctionnera en mode math ou non et donnera un résultat correct si toutes les inconnues se trouvent dans le membre de gauche, le membre de droite étant celui des constantes. Les équations doivent être \emph{développées}, c'est-à-dire que chaque terme est séparé de son voisin par un "+" ou un "-". De plus, les inconnues doivent être des lettres minuscules non accentuées, c'est-à-dire tout caractère de \og\verb-a-\fg{} à \og\verb-z-\fg. Les espaces sont ignorés dans l'argument de la macro \verb|\systeme|.
 
 L'alignement construit sera un tableau précédé d'une accolade et aura les spécificités suivantes :
 \begin{itemize}
@@ -225,7 +218,7 @@
 y_1-x_1+3y_2=4,
 2x_1-y_2-y_1=-1}/
 
-Lorque les inconnues sont indicées, elles sont classés alphabétiquement puis dans l'ordre croissant de leur indice.
+Lorsque les inconnues sont indicées, elles sont classés alphabétiquement puis dans l'ordre croissant de leur indice.
 
 Le tri alphabétique est une facilité mais il peut s'avérer gênant surtout dans les systèmes $4\times4$ où, bien souvent, la 4\ieme{} inconnue est \og$t$\fg{} :
 \exemple{Tri alphabétique indésirable}/\systeme{x+2y-3z+t=0,
@@ -252,8 +245,8 @@
 	A-\alpha+3\beta=4,
 	2A+\alpha-\beta=0,
 	-A+3\alpha-2\beta=5}/
-	\item seules les inconnues figurant dans l'argument optionnel sont reconnues dans les équations. Dans l'exemple ci dessous, la lettre $m$ n'est pas reconnue comme inconnue :
-	\exemple{Iconnues forcées}/\systeme[xy]{mx-y=3,
+	\item seules les inconnues figurant dans l'argument optionnel sont reconnues dans les équations. Dans l'exemple ci dessous, la lettre $m$ n'est pas comprise comme étant une inconnue :
+	\exemple{Inconnues forcées}/\systeme[xy]{mx-y=3,
 	x-m^2y=-1}/
 \end{enumerate}
 
@@ -305,7 +298,7 @@
 \systeme{x+2y-z=0,2x-y+z=1,x-3y+2z=1}/
 
 \subsection{Colonne supplémentaire}
-Lorsqu'une équation comporte le signe \og\verb- at -\fg{}, tout ce qui se trouve à droite de ce caractère sera mis dans une colonne supplementaire au fer à gauche qui se trouvera à droite du système, en dernière position.
+Lorsqu'une équation comporte le signe \og\verb- at -\fg{}, tout ce qui se trouve à droite de ce caractère sera mis dans une colonne supplémentaire au fer à gauche qui se trouvera à droite du système, en dernière position.
 \exemple{Colonne supplémentaire}/\systeme{x+y=125 at L_1,
 x-y=12 at L_2}/
 
@@ -351,10 +344,14 @@
 \systeme{a+b=4,2a-b=5}
 \quad
 \systeme{x-3y=0,2x+y=1}/
+
 On peut effacer (et donc annuler) le schéma de numérotation automatique en entrant un argument vide : \verb-\sysautonum{}-.
 
-Il existe un compteur global\footnote{Il s'agit d'un compteur \TeX{} portant le doux nom de {\ttfamily\string\SYSeqnum}, accessible via les commandes \TeX{} habituelles, c'est-à-dire qu'on peut le faire précéder de \texttt{\string\number}, \texttt{\string\romannumeral} pour l'afficher.} d'équations accessible de la même façon que le compteur local mais avec \og\verb-**-\fg{}. Voici un exemple de numérotation persistante, où l'on voit que \number\SYSeqnum\ équations ont été écrites jusqu'ici :
-\exemple{Numérotation globale}/\sysautonum*{\hbox{eq (**)}}
+Il existe un compteur global\footnote{Il s'agit d'un compteur \TeX{} portant le doux nom de {\ttfamily\string\SYSeqnum}, accessible via les commandes \TeX{} habituelles, c'est-à-dire qu'on peut le faire précéder de \texttt{\string\number}, \texttt{\string\romannumeral} pour l'afficher.} d'équations accessible de la même façon que le compteur local mais avec \og\verb-**-\fg{}. Voici un exemple de numérotation persistante :
+\exemple{Numérotation globale}/On met en évidence que \number\SYSeqnum{}
+équations ont été écrites jusqu'ici~:
+
+\sysautonum*{\hbox{eq (**)}}
 \systeme{x-y+z=3,
 2x+y+z=1,
 x-z=8}
@@ -362,10 +359,20 @@
 \systeme{u+w=9,
 v+2w=0,
 u-v=1}/
+
+Il est enfin possible d'utiliser la colonne supplémentaire pour retenir le numéro d'une équation et le rappeler plus tard :
+\exemple{Numérotation globale}/\syscodeextracol{\kern1em}{}
+\systeme{x-y+z=3@\gdef\foo{**}(\textbf{**}),
+         2x+y+z=1@\gdef\bar{**}(\textbf{**}),
+         x-z=8@\gdef\baz{**}(\textbf{**})}
+
+L'équation \no\foo{} est la première du système,
+\bar{} et \baz{} sont les deux suivantes./
+
 On peut à tout moment réinitialiser le compteur global d'équations à l'aide de \og\verb-\sysreseteqnum-\fg.
 
 \subsection{Substitution post traitement}
-Juste avant l'affichage du système, il est encore possible de substituter dans le code du système tout caractère par un autre\footnote{Plus exactement, toute \emph{suite de tokens} par une autre.}. Pour cela, la commande \verb-\syssubstitute- agit pour tous les systèmes à venir et son argument est fait de caractères allant par paires; le premier étant le caractère à substituer et le second étant ce par quoi il le sera. Les subtitutions définies par \verb-\syssubstitute- viennent \emph{s'ajouter} à celles déjà définies.
+Juste avant l'affichage du système, il est encore possible de substituer dans le code du système tout caractère par un autre\footnote{Plus exactement, toute \emph{suite de tokens} par une autre.}. Pour cela, la commande \verb-\syssubstitute- agit pour tous les systèmes à venir et son argument est fait de caractères allant par paires; le premier étant le caractère à substituer et le second étant ce par quoi il le sera. Les substitutions définies par \verb-\syssubstitute- viennent \emph{s'ajouter} à celles déjà définies.
 
 Dans cet exemple, on entre des coefficients décimaux où le point est le séparateur décimal. On va demander à ce que tous les \og\verb-.-\fg{} soient remplacés par des \og\verb-,-\fg{}. On remplacera aussi l'inconnue $a_1$ par $x_n$, et $a_2$ par $x_{n+1}$, ces 3 substitutions étant faites avec \verb-\syssubstitute{.,{a_1}{x_n}{a_2}{x_{n+1}}}- :
 \exemple{Substitution post traitement}/\syssubstitute{.,{a_1}{x_n}{a_2}{x_{n+1}}}
@@ -375,7 +382,6 @@
 
 \section{Liste des commandes}
 Voici la liste de toutes les commandes définies par cette extension :
-
 \begin{longtable}{>\footnotesize l>\footnotesize p{9cm}}\\\hline
 \hfill\normalsize Commandes\hfill\null &\hfill\normalsize Description\hfill\null\\\hline
 \verb-\systeme{<code système>}-&compose un système d'équations ou d'inéquations\\

Modified: trunk/Master/texmf-dist/tex/generic/systeme/systeme.sty
===================================================================
--- trunk/Master/texmf-dist/tex/generic/systeme/systeme.sty	2019-01-13 23:30:14 UTC (rev 49689)
+++ trunk/Master/texmf-dist/tex/generic/systeme/systeme.sty	2019-01-13 23:30:37 UTC (rev 49690)
@@ -1,3 +1,4 @@
+\def\SYSstyfile{0}
 \RequirePackage{xstring}
 \input systeme.tex
 \ProvidesPackage\SYSname[\SYSdate\space v\SYSver\space Mise en forme de systemes d'equations (CT)]

Modified: trunk/Master/texmf-dist/tex/generic/systeme/systeme.tex
===================================================================
--- trunk/Master/texmf-dist/tex/generic/systeme/systeme.tex	2019-01-13 23:30:14 UTC (rev 49689)
+++ trunk/Master/texmf-dist/tex/generic/systeme/systeme.tex	2019-01-13 23:30:37 UTC (rev 49690)
@@ -1,657 +1,651 @@
 % !TeX encoding = ISO-8859-1
 % Ce fichier contient le code de l'extension "systeme"
-\expandafter\edef\csname SYS at savedatcatcode\endcsname{\number\catcode`\@}
-\catcode`\@11
 %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %                                                                    %
 \def\SYSname                   {systeme}                             %
-\def\SYSver                      {0.31}                              %
+\def\SYSver                      {0.32}                              %
 %                                                                    %
-\def\SYSdate                  {2018/01/01}                           %
+\def\SYSdate                  {2019/01/13}                           %
 %                                                                    %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% --------------------------------------------------------------------
-% Author     : Christian Tellechea
-% Status     : Maintained
-% Email      : unbonpetit at netc.fr
-% Package URL: https://www.ctan.org/pkg/systeme
-% Bug tracker: https://framagit.org/unbonpetit/systeme/issues
-% Repository : https://framagit.org/unbonpetit/systeme/tree/master
-% Copyright  : Christian Tellechea 2017
-% Licence    : Released under the LaTeX Project Public License v1.3c
-%              or later, see http://www.latex-project.org/lppl.txt
-% Files      : 1) systeme.tex
-%              2) systeme.sty
-%              3) systeme-fr.tex
-%              4) systeme-fr.pdf
-%              5) README
-% --------------------------------------------------------------------
-% --------------------------------------------------------------------
+%                                                                    %
+% Author     : Christian Tellechea                                   %
+% Status     : Maintained                                            %
+% Email      : unbonpetit at netc.fr                                    %
+% Package URL: https://www.ctan.org/pkg/systeme                      %
+% Bug tracker: https://framagit.org/unbonpetit/systeme/issues        %
+% Repository : https://framagit.org/unbonpetit/systeme/tree/master   %
+% Copyright  : Christian Tellechea 2011-2019                         %
+% Licence    : Released under the LaTeX Project Public License v1.3c %
+%              or later, see http://www.latex-project.org/lppl.txt   %
+% Files      : 1) systeme.tex                                        %
+%              2) systeme.sty                                        %
+%              3) systeme-fr.tex                                     %
+%              4) systeme-fr.pdf                                     %
+%              5) README                                             %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\unless\ifdefined\SYSstyfile
+	\immediate\write-1 {Package: \SYSname\space\SYSdate\space\space v\SYSver\space\space Saisie naturelle de systemes d'equations}%
+\fi
 
-\def\SYS at newmacro#1{%
-	\ifdefined#1%
-		\errmessage{Package systeme Error: la macro \string#1\space existe deja. Contacter l'auteur svp.}%
-	\fi
-	\def#1%
-}
-\SYS at newmacro\SYSlongdate   {1\ier{} janvier 218}
+\expandafter\edef\csname SYS_restorecatcode\endcsname{\catcode\number`\_=\number\catcode`\_\relax}
+\catcode`\_11
 
-\newtoks\SYS at systemecode
-\newtoks\SYS at systempreamble
+\begingroup
+	\catcode`\_8
+	\gdef\SYSunder{_}
+\endgroup
 
-\newif\ifSYS at firstterm
-\newif\ifSYS at sortvariable
-\newif\ifSYS at star
-\newif\ifSYS at extracol
-\newif\ifSYS at autonum
-\newif\ifSYS at followautonum
-\newif\ifSYS at constterm
+\unless\ifdefined\xstringversion
+	\def\SYS_nextaction{\input xstring.tex\relax}%
+	\expandafter\SYS_nextaction
+\fi
 
+\newtoks\SYS_systemecode
+\newtoks\SYS_systempreamble
+
+\newif\ifSYS_firstterm
+\newif\ifSYS_sortvariable
+\newif\ifSYS_star
+\newif\ifSYS_extracol
+\newif\ifSYS_autonum
+\newif\ifSYS_followautonum
+\newif\ifSYS_constterm
+
 \newcount\SYSeqnum
 
-\expandafter\ifx\csname @latexerr\endcsname\relax% on n'utilise pas LaTeX ?
-	\ifdefined\xstringversion\else\def\SYS at nextaction{\input xstring.tex}\expandafter\SYS at nextaction\fi
-	\immediate\write\m at ne{Package: \SYSname\space\SYSdate\space\space v\SYSver\space\space Saisie naturelle de systemes d'equations}%
-	\newskip\normalbaselineskip \normalbaselineskip=12pt
-	\long\def\@firstoftwo#1#2{#1}
-	\long\def\@secondoftwo#1#2{#2}
-	\long\def\@firstofone#1{#1}
-	\long\def\@gobble#1{}
-	\long\def\@ifnextchar#1#2#3{%
-		\let\reserved at d=#1%
-		\def\reserved at a{#2}%
-		\def\reserved at b{#3}%
-		\futurelet\@let at arg\@ifnch}
-	\def\@ifnch{%
-		\ifx\@let at arg\@sptoken
-			\let\reserved at c\@xifnch
-		\else
-			\ifx\@let at arg\reserved at d
-				\let\reserved at c\reserved at a
-			\else
-				\let\reserved at c\reserved at b
-			\fi
-		\fi
-		\reserved at c}
-	\def\:{\let\@sptoken= } \:
-	\def\:{\@xifnch} \expandafter\def\: {\futurelet\@let at arg\@ifnch}
-	\long\def\@testopt#1#2{\@ifnextchar[{#1}{#1[{#2}]}}
-	\def\@ifstar#1{\@ifnextchar *{\@firstoftwo{#1}}}
-	\def\@empty{}
-	\def\space{ }
+\long\def\SYS_execarg#1{#1}
+\long\def\SYS_gobtwoargs#1#2{}
+\def\SYS_addtotok#1#2{#1\expandafter{\the#1#2}}
+\def\SYS_expaddtotok#1#2{\xs_exparg{\SYS_addtotok#1}{#2}}
+\def\SYS_addtotab{\SYS_addtotok\SYS_systemecode}
+\def\SYS_cslet#1{\expandafter\let\csname#1\endcsname}
+\def\SYS_letcs#1#2{\expandafter\let\expandafter#1\csname#2\endcsname}
+\def\SYS_firstinlist#1,#2\_nil{#1}
+\def\SYS_removefirstinlist#1,{}
+\def\SYS_ifinstr#1#2{%
+	\def\SYS_ifinstr_i##1#2##2\_nil{\xs_ifempty{##2}\xs_execsecond\xs_execfirst}%
+	\SYS_ifinstr_i#1\__nil#2\_nil
+}
+
+\ifdefined\usepackage\else% on n'utilise pas LaTeX ?
+	\newskip\normalbaselineskip
+	\normalbaselineskip=12pt
 \fi
 
-% d\'efinit ce qu'est le s\'eparateur des \'equations par d\'efaut
-\SYS at newmacro\syseqsep{\def\SYS at defaulteqsep}
+% d\xE9finit ce qu'est le s\xE9parateur des \xE9quations par d\xE9faut
+\def\syseqsep{\def\SYS_defaulteqsep}
 \syseqsep{,}
 
-% d\'efinit le coefficient pour l'espacement interligne
-\SYS at newmacro\syslineskipcoeff{\def\SYS at lineskipcoeff}
+% d\xE9finit le coefficient pour l'espacement interligne
+\def\syslineskipcoeff{\def\SYS_lineskipcoeff}
 \syslineskipcoeff{1.25}
 
-% d\'efinit le signe qui marquera une colonne suppl\'ementaire \`a droite du tableau
-\SYS at newmacro\sysextracolsign{\def\SYS at extracolsign}
-\expandafter\sysextracolsign\expandafter{\string @}% on d\'efinit l'arobas avec le bon catcode.
+% d\xE9finit le signe qui marquera une colonne suppl\xE9mentaire \xE0 droite du tableau
+\def\sysextracolsign{\def\SYS_extracolsign}
+\xs_exparg\sysextracolsign{\string @}% on d\xE9finit l'arobas avec le bon catcode.
 
-% d\'efinit ce qui sera ins\'er\'e au d\'ebut et \`a la fin de la colonne suppl\'ementaire
-\SYS at newmacro\syscodeextracol#1#2{\def\SYS at extracolstart{#1}\def\SYS at extracolend{#2}}
+% d\xE9finit ce qui sera ins\xE9r\xE9 au d\xE9but et \xE0 la fin de la colonne suppl\xE9mentaire
+\def\syscodeextracol#1#2{\def\SYS_extracolstart{#1}\def\SYS_extracolend{#2}}
 \syscodeextracol{\kern1.5em$}{$}
 
-\SYS at newmacro\sysreseteqnum{\global\SYSeqnum\z@}
+\def\sysreseteqnum{\global\SYSeqnum0 }
 
-\SYS at newmacro\SYS at cslet#1{\expandafter\let\csname#1\endcsname}
+% d\xE9finit l'autonum\xE9rotation
+\def\sysautonum{%
+	\xs_ifstar
+		{\SYS_followautonumtrue\SYS_autonum}
+		{\SYS_followautonumfalse\SYS_autonum}%
+}
 
-% d\'efinit l'autonum\'erotation
-\SYS at newmacro\sysautonum{\@ifstar{\SYS at followautonumtrue\SYS at autonum}{\SYS at followautonumfalse\SYS at autonum}}
-
-\SYS at newmacro\SYS at autonum#1{%
-	\ifx\@empty#1\@empty
-		\SYS at extracolfalse
-		\SYS at autonumfalse
-	\else
-		\SYS at extracoltrue
-		\SYS at autonumtrue
-		\def\SYS at autonumarg{#1}%
-	\fi
+\def\SYS_autonum#1{%
+	\xs_ifempty{#1}
+		{\SYS_extracolfalse
+		\SYS_autonumfalse
+		}
+		{\SYS_extracoltrue
+		\SYS_autonumtrue
+		\def\SYS_autonumarg{#1}%
+		}%
 }
 
-% dimension qui sera ajout\'ee \`a la hauteur et \`a la profondeur du strutup ou strutdown
-% ins\'er\'e \`a la premi\`ere et la derni\`ere \'equation
-\SYS at newmacro\SYS at extrastrutdim{1.5pt}
+% dimension qui sera ajout\xE9e \xE0 la hauteur et \xE0 la profondeur du strutup ou strutdown
+% ins\xE9r\xE9 \xE0 la premi\xE8re et la derni\xE8re \xE9quation
+\def\SYS_extrastrutdim{1.5pt}
 
-% liste des signes devant \^etre compris comme signe d'\'egalit\'e s\'eparant les 2 membres de l'\'equation
-\SYS at newmacro\SYS at equalsignlist{<=,>=,=,<,>,\leq,\geq,\leqslant,\geqslant}
+% liste des signes devant \xEAtre compris comme signe d'\xE9galit\xE9 s\xE9parant les 2 membres de l'\xE9quation
+\def\SYS_equalsignlist{<=,>=,=,<,>,\leq,\geq,\leqslant,\geqslant}
 
-\SYS at newmacro\sysaddeqsign#1{%
+\def\sysaddeqsign#1{%
 	\saveexpandmode\expandarg
-	\IfSubStr{\expandafter,\SYS at equalsignlist,}{,#1,}
-		\relax
-		{\expandafter\def\expandafter\SYS at equalsignlist\expandafter{\SYS at equalsignlist,#1}}%
+	\IfSubStr{\expandafter,\SYS_equalsignlist,}{,#1,}
+		{}
+		{\xs_exparg{\def\SYS_equalsignlist}{\SYS_equalsignlist,#1}}%
 	\restoreexpandmode
 }
 
-% enl\`eve l'item #2 de la sc #1 qui contient une liste
-\SYS at newmacro\SYS at removeiteminlist#1#2{%
+% enl\xE8ve l'item #2 de la sc #1 qui contient une liste
+\def\SYS_removeiteminlist#1#2{%
 	\saveexpandmode\expandarg
 	\IfSubStr{\expandafter,#1,}{,#2,}
-		{\StrSubstitute{\expandafter\@nil\expandafter,#1,\@nil}{,#2,},[#1]%
-		\StrDel#1{\noexpand\@nil,}[#1]%
-		\StrDel#1{,\@nil}[#1]%
+		{\StrSubstitute{\expandafter\_nil\expandafter,#1,\_nil}{,#2,},[#1]%
+		\StrDel#1{\noexpand\_nil,}[#1]%
+		\StrDel#1{,\_nil}[#1]%
 		}%
-		\relax
+		{}%
 	\restoreexpandmode
 }
 
-\SYS at newmacro\sysremoveeqsign#1{%
-	\SYS at removeiteminlist\SYS at equalsignlist{#1}%
-	\SYS at removeiteminlist\SYS at equivsignlist{#1}%
+\def\sysremoveeqsign#1{%
+	\SYS_removeiteminlist\SYS_equalsignlist{#1}%
+	\SYS_removeiteminlist\SYS_equivsignlist{#1}%
 }
 
-% d\'efinit le signe d'\'egalit\'e #1 comme devant \^etre remplac\'e par #2 lors de l'affichage
-\SYS at newmacro\sysequivsign#1#2{%
-	\IfSubStr\SYS at equivsignlist{\noexpand#1,}\relax{\expandafter\def\expandafter\SYS at equivsignlist\expandafter{\SYS at equivsignlist#1,}}%
-	\expandafter\def\csname SYS at equivsign@\string#1\endcsname{#2}%
+% d\xE9finit le signe d'\xE9galit\xE9 #1 comme devant \xEAtre remplac\xE9 par #2 lors de l'affichage
+\def\sysequivsign#1#2{%
+	\IfSubStr\SYS_equivsignlist{\noexpand#1,}
+		{}
+		{\xs_exparg{\def\SYS_equivsignlist}{\SYS_equivsignlist#1,}}%
+	\expandafter\def\csname SYS_equivsign_\string#1\endcsname{#2}%
 }
 
-\SYS at newmacro\SYS at equivsignlist{}
+\def\SYS_equivsignlist{}
 
 \sysequivsign{<=}\leq
 \sysequivsign{>=}\geq
 
-\SYS at newmacro\SYS at firstiteminlist#1,#2\@nil{#1}
-
-\SYS at newmacro\SYS at removefirstiteminlist#1,{}
-
-% #1 est l'\'equation courante. La macro la s\'epare en 2 membres -> \SYS at leftmember et \SYS at rightmember
-% le signe de s\'eparation entre les 2 membres se trouve dans \SYS at currenteqsign
-\SYS at newmacro\SYS at splitinmembers#1{%
-	\def\SYS at leftmember{#1}\let\SYS at currenteqsign\@empty\let\SYS at rightmember\@empty
-	\expandafter\SYS at splitinmembers@i\expandafter{\SYS at equalsignlist,}% parcourt \SYS at equalsignlist pour s\'eparer en 2 membres
-	\IfSubStr{\expandafter,\SYS at equivsignlist}{\expandafter,\SYS at currenteqsign,}% si le signe est dans la liste des substitutions
-		{\expandafter\let\expandafter\SYS at currenteqsign\csname SYS at equivsign@\detokenize\expandafter{\SYS at currenteqsign}\endcsname}% le remplacer
-		\relax
+% #1 est l'\xE9quation courante. La macro la s\xE9pare en 2 membres -> \SYS_leftmember et \SYS_rightmember
+% le signe de s\xE9paration entre les 2 membres se trouve dans \SYS_currenteqsign
+\def\SYS_splitinmembers#1{%
+	\def\SYS_leftmember{#1}%
+	\let\SYS_currenteqsign\empty
+	\let\SYS_rightmember\empty
+	\xs_exparg\SYS_splitinmembers_i{\SYS_equalsignlist,}% parcourt \SYS_equalsignlist pour s\xE9parer en 2 membres
+	\IfSubStr{\expandafter,\SYS_equivsignlist}{\expandafter,\SYS_currenteqsign,}% si le signe est dans la liste des substitutions
+		{\SYS_letcs\SYS_currenteqsign{SYS_equivsign_\detokenize\expandafter{\SYS_currenteqsign}}}% le remplacer
+		{}%
 }
 
-% #1 est la liste des signes d'\'egalit\'e
-\SYS at newmacro\SYS at splitinmembers@i#1{%
-	\ifx\@empty#1\@empty
-	\else
-		\IfSubStr\SYS at leftmember{\SYS at firstiteminlist#1\@nil}% si l'\'equation contient un des signes
-			{\expandafter\def\expandafter\SYS at currenteqsign\expandafter{\SYS at firstiteminlist#1\@nil}% sauvagarde le signe
-			\StrBehind\SYS at leftmember\SYS at currenteqsign[\SYS at rightmember]% proc\`ede \`a la s\'eparation
-			\StrBefore\SYS at leftmember\SYS at currenteqsign[\SYS at leftmember]% en deux membres
-			\let\SYS at nextaction\relax
+% #1 est la liste des signes d'\xE9galit\xE9
+\def\SYS_splitinmembers_i#1{%
+	\xs_ifempty{#1}
+		{}
+		{\IfSubStr\SYS_leftmember{\SYS_firstinlist#1\_nil}% si l'\xE9quation contient un des signes
+			{\xs_exparg{\def\SYS_currenteqsign}{\SYS_firstinlist#1\_nil}% sauvagarde le signe
+			\StrBehind\SYS_leftmember\SYS_currenteqsign[\SYS_rightmember]% proc\xE8de \xE0 la s\xE9paration
+			\StrBefore\SYS_leftmember\SYS_currenteqsign[\SYS_leftmember]% en deux membres
 			}%
-			{\def\SYS at nextaction{\expandafter\SYS at splitinmembers@i\expandafter{\SYS at removefirstiteminlist#1}}}% sinon, recommencer en enlevant le 1er signe
-		\expandafter\SYS at nextaction
-	\fi
+			{\xs_exparg\SYS_splitinmembers_i{\SYS_removefirstinlist#1}% sinon, recommencer en enlevant le 1er signe
+			}%
+		}%
 }
 
-\SYS at newmacro\SYS at ifcontains#1#2{%
-	\def\SYS at ifcontains@i##1#2##2\@nil{\ifx\@empty##2\@empty\expandafter\@secondoftwo\else\expandafter\@firstoftwo\fi}%
-	\SYS at ifcontains@i#1\@@nil#2\@nil
+% analyse une \xE9quation et la d\xE9coupe en termes et signes
+\def\SYS_spliteqinterms#1{%
+	\IfSubStr{\noexpand#1}\SYS_extracolsign% y a t-il un signe de colonne suppl\xE9mentaire ?
+		{\StrBefore{\noexpand#1}\SYS_extracolsign[\SYS_leftmember]%
+		\StrBehind{\noexpand#1}\SYS_extracolsign[\SYS_rightmember]%
+		\SYS_cslet{SYS_extracol_\SYS_eqnumber}\SYS_rightmember
+		\SYS_extracoltrue
+		}%
+		{\def\SYS_leftmember{#1}%
+		}%
+	\xs_exparg\SYS_splitinmembers{\SYS_leftmember}% trouver les membres de gauche et droite et le signe qui les s\xE9pare
+	\xs_ifx{\SYS_currenteqsign\empty}
+		{}%
+		{\SYS_cslet{SYS_eqsign_\SYS_eqnumber}\SYS_currenteqsign}% stocker ce signe s'il existe
+	\IfBeginWith\SYS_leftmember\space
+		{\StrGobbleLeft\SYS_leftmember1[\SYS_leftmember]}
+		{}% pas d'espace pour commencer le membre de gauche
+	\IfBeginWith\SYS_leftmember+% amputer le membre de gauche du premier signe et le stocker temporairement s'il existe et sinon...
+		{\StrSplit\SYS_leftmember1\SYS_currentsign\SYS_leftmember
+		}%
+		{\IfBeginWith\SYS_leftmember-%
+			{\StrSplit\SYS_leftmember1\SYS_currentsign\SYS_leftmember}%
+			{\def\SYS_currentsign{+}}% ce signe est "+"
+		}%
+	\SYS_spliteqinterms_i1%
+	\SYS_cslet{SYS_right_\SYS_eqnumber}\SYS_rightmember
 }
 
-% analyse une \'equation et la d\'ecoupe en termes et signes
-\SYS at newmacro\SYS at spliteqinterms#1{%
-	\IfSubStr{\noexpand#1}\SYS at extracolsign% y a t-il un signe de colonne suppl\'ementaire ?
-		{\StrBefore{\noexpand#1}\SYS at extracolsign[\SYS at leftmember]%
-		\StrBehind{\noexpand#1}\SYS at extracolsign[\SYS at rightmember]%
-		\SYS at cslet{SYS at extracol@\SYS at eqnumber}\SYS at rightmember
-		\SYS at extracoltrue
+\def\SYS_spliteqinterms_i#1{%
+	\StrPosition\SYS_leftmember+[\SYS_posplus]%
+	\StrPosition\SYS_leftmember-[\SYS_posminus]%
+	\xs_ifnum{\numexpr\SYS_posplus+\SYS_posminus=0 }% il n'y a ni "+" ni "-"
+		{\let\SYS_currentterm\SYS_leftmember% prendre tout ce qui reste
+		\SYS_assignterm% et assigner ce dernier terme avec le dernier signe trouv\xE9
+		}
+		{\edef\SYS_nextsign{\ifnum\SYS_posplus=0 -\else\ifnum\SYS_posminus=0 +\else\ifnum\SYS_posplus<\SYS_posminus+\else-\fi\fi\fi}% d\xE9cider de ce qu'est le prochain signe
+		\StrBefore\SYS_leftmember\SYS_nextsign[\SYS_currentterm]% prendre ce qu'il y a avant
+		\StrBehind\SYS_leftmember\SYS_nextsign[\SYS_leftmember]% et stocker ce qu'il y a ensuite pour apr\xE8s
+		\SYS_assignterm% assigner ce qu'il y a avant avec le dernier signe trouv\xE9
+		\let\SYS_currentsign\SYS_nextsign% on continue, le prochain signe devient le signe courant
+		\xs_exparg\SYS_spliteqinterms_i{\number\numexpr#1+1}%
 		}%
-		{\def\SYS at leftmember{#1}}%
-	\expandafter\SYS at splitinmembers\expandafter{\SYS at leftmember}% trouver les membres de gauche et droite et le signe qui les s\'epare
-	\unless\ifx\SYS at currenteqsign\@empty
-		\SYS at cslet{SYS at eqsign@\SYS at eqnumber}\SYS at currenteqsign% stocker ce signe s'il existe
-	\fi
-	\IfBeginWith\SYS at leftmember\space{\StrGobbleLeft\SYS at leftmember\@ne[\SYS at leftmember]}\relax% pas d'espace pour commencer le membre de gauche
-	\IfBeginWith\SYS at leftmember+% amputer le membre de gauche du premier signe et le stocker temporairement s'il existe et sinon...
-		{\StrSplit\SYS at leftmember\@ne\SYS at currentsign\SYS at leftmember}%
-		{\IfBeginWith\SYS at leftmember-%
-			{\StrSplit\SYS at leftmember\@ne\SYS at currentsign\SYS at leftmember}%
-			{\def\SYS at currentsign{+}}}% ce signe est "+"
-	\SYS at spliteqinterms@i\@ne
-	\SYS at cslet{SYS at right@\SYS at eqnumber}\SYS at rightmember
 }
 
-\SYS at newmacro\SYS at spliteqinterms@i#1{%
-	\StrPosition\SYS at leftmember+[\SYS at posplus]%
-	\StrPosition\SYS at leftmember-[\SYS at posminus]%
-	\ifnum\numexpr\SYS at posplus+\SYS at posminus=\z@ % il n'y a ni "+" ni "-"
-		\let\SYS at currentterm\SYS at leftmember% prendre tout ce qui reste
-		\SYS at assignterm% et assigner ce dernier terme avec le dernier signe trouv\'e
-	\else
-		\edef\SYS at nextsign{\ifnum\SYS at posplus=\z at -\else\ifnum\SYS at posminus=\z at +\else\ifnum\SYS at posplus<\SYS at posminus+\else-\fi\fi\fi}% d\'ecider de ce qu'est le prochain signe
-		\StrBefore\SYS at leftmember\SYS at nextsign[\SYS at currentterm]% prendre ce qu'il y a avant
-		\StrBehind\SYS at leftmember\SYS at nextsign[\SYS at leftmember]% et stocker ce qu'il y a ensuite pour apr\`es
-		\SYS at assignterm% assigner ce qu'il y a avant avec le dernier signe trouv\'e
-		\let\SYS at currentsign\SYS at nextsign% on continue, le prochain signe devient le signe courant
-		\expandafter\SYS at spliteqinterms@i\expandafter{\number\numexpr#1+1\expandafter}%
-	\fi
-}
-
-\SYS at newmacro\SYS at assignterm{%
-	\expandafter\SYS at findletter\expandafter{\SYS at currentterm}% trouver le nom de la variable
-	\ifx\SYS at letterfound\@empty
-		\SYS at consttermtrue
-		\ifcsname SYS at term@const@\SYS at eqnumber\endcsname% si terme constant d\'ej\`a rencontr\'e, l'ajouter \`a celui qui existe
-			\SYS at expaddtocs\SYS at currentsign\SYS at currentterm
-			\expandafter\SYS at expaddtocs\csname SYS at term@const@\SYS at eqnumber\endcsname{\SYS at currentsign}%
+\def\SYS_assignterm{%
+	\xs_exparg\SYS_findletter{\SYS_currentterm}% trouver le nom de la variable
+	\xs_ifx{\SYS_letterfound\empty}
+		{\SYS_consttermtrue
+		\ifcsname SYS_term_const_\SYS_eqnumber\endcsname% si terme constant d\xE9j\xE0 rencontr\xE9, l'ajouter \xE0 celui qui existe
+			\xs_eaddtomacro\SYS_currentsign\SYS_currentterm
+			\expandafter\xs_eaddtomacro\csname SYS_term_const_\SYS_eqnumber\endcsname{\SYS_currentsign}%
 		\else
-			\SYS at cslet{SYS at sign@const@\SYS at eqnumber}\SYS at currentsign% sinon proc\'eder aux assignations
-			\SYS at cslet{SYS at term@const@\SYS at eqnumber}\SYS at currentterm
+			\SYS_cslet{SYS_sign_const_\SYS_eqnumber}\SYS_currentsign% sinon proc\xE9der aux assignations
+			\SYS_cslet{SYS_term_const_\SYS_eqnumber}\SYS_currentterm
 		\fi
-	\else
-		\ifcsname SYS at term@\detokenize\expandafter{\SYS at letterfound}@\SYS at eqnumber\endcsname
-			\errmessage{Package systeme Error: l'inconnue "\detokenize\expandafter{\SYS at letterfound}" a deja ete trouvee dans l'equation !}%
+		}
+		{\ifcsname SYS_term_\detokenize\expandafter{\SYS_letterfound}_\SYS_eqnumber\endcsname
+			\errmessage{Package systeme Error: l'inconnue "\detokenize\expandafter{\SYS_letterfound}" a deja ete trouvee dans l'\xE9quation !}%
 		\fi
-		\ifSYS at sortvariable
-			\SYS at insletter\SYS at letterfound% l'ins\'erer si besoin dans la liste ordonn\'ee des variables
+		\ifSYS_sortvariable
+			\SYS_insletter\SYS_letterfound% l'ins\xE9rer si besoin dans la liste ordonn\xE9e des variables
 		\fi
-% 		\show\SYS at letterlist
-		\SYS at cslet{SYS at sign@\detokenize\expandafter{\SYS at letterfound}@\SYS at eqnumber}\SYS at currentsign% proc\'eder aux assignations
-		\SYS at cslet{SYS at term@\detokenize\expandafter{\SYS at letterfound}@\SYS at eqnumber}\SYS at currentterm
-	\fi
+		\SYS_cslet{SYS_sign_\detokenize\expandafter{\SYS_letterfound}_\SYS_eqnumber}\SYS_currentsign% proc\xE9der aux assignations
+		\SYS_cslet{SYS_term_\detokenize\expandafter{\SYS_letterfound}_\SYS_eqnumber}\SYS_currentterm
+		}%
 }
 
-% cherche la premi\`ere lettre minuscule dans #1
-\SYS at newmacro\SYS at findletter#1{%
+% cherche la premi\xE8re lettre minuscule dans #1
+\def\SYS_findletter#1{%
 	\saveexploremode\exploregroups
-	\StrRemoveBraces{#1}[\SYS at currentfindletter]%
-	\let\SYS at letterfound\@empty
-	\SYS at findletter@i
+	\StrRemoveBraces{#1}[\SYS_currentfindletter]%
+	\let\SYS_letterfound\empty
+	\SYS_findletter_i
 	\restoreexploremode
 }
 
-\SYS at newmacro\SYS at findletter@i{%
-	\StrSplit\SYS at currentfindletter\@ne\SYS at currentchar\SYS at currentfindletter
-	\ifSYS at sortvariable% si le tri auto est activ\'e
-		\ifcat\relax\expandafter\noexpand\SYS at currentchar
-			\let\SYS at nextaction\@secondoftwo% faux si c'est une sc
+\def\SYS_findletter_i{%
+	\StrSplit\SYS_currentfindletter1\SYS_currentchar\SYS_currentfindletter
+	\ifSYS_sortvariable% si le tri auto est activ\xE9
+		\ifcat\relax\expandafter\noexpand\SYS_currentchar
+			\let\SYS_nextaction\xs_execsecond% faux si c'est une sc
 		\else
-			\ifnum\expandafter`\SYS at currentchar<`a
-				\let\SYS at nextaction\@secondoftwo% pas une lettre minuscule
-			\else
-				\ifnum\expandafter`\SYS at currentchar>`z
-					\let\SYS at nextaction\@secondoftwo% pas une lettre minuscule
-				\else
-					\SYS at testsubscript% tester s'il y a un indice
-					\let\SYS at nextaction\@firstoftwo
-				\fi
-			\fi
+			\xs_ifnum{\expandafter`\SYS_currentchar<`a }
+				{\let\SYS_nextaction\xs_execsecond% pas une lettre minuscule
+				}
+				{\xs_ifnum{\expandafter`\SYS_currentchar>`z }
+					{\let\SYS_nextaction\xs_execsecond% pas une lettre minuscule
+					}
+					{\SYS_testsubscript% tester s'il y a un indice
+					\let\SYS_nextaction\xs_execfirst
+					}%
+				}%
 		\fi
 	\else
 		\noexploregroups
-		\IfSubStr\SYS at letterlist\SYS at currentchar% ce qui est trouv\'e est dans la liste ?
-			{\SYS at testsubscript% tester s'il y a un indice apr\`es le caract\`ere courant
-			\let\SYS at nextaction\@firstoftwo
+		\IfSubStr\SYS_letterlist\SYS_currentchar% ce qui est trouv\xE9 est dans la liste ?
+			{\SYS_testsubscript% tester s'il y a un indice apr\xE8s le caract\xE8re courant
+			\let\SYS_nextaction\xs_execfirst
 			}%
-			{\let\SYS at nextaction\@secondoftwo}%
+			{\let\SYS_nextaction\xs_execsecond
+			}%
 		\exploregroups
 	\fi
-	\SYS at nextaction
-		{\let\SYS at letterfound\SYS at currentchar
-		\IfSubStr\SYS at letterfound_\relax{\SYS at addtocs\SYS at letterfound{_{-1}}}%
+	\SYS_nextaction
+		{\let\SYS_letterfound\SYS_currentchar
+		\IfSubStr\SYS_letterfound\SYSunder\relax{\xs_eaddtomacro\SYS_letterfound{\SYSunder{-1}}}%
 		}%
-		{\unless\ifx\SYS at currentfindletter\@empty\expandafter\SYS at findletter@i\fi}%
+		{\xs_ifx{\SYS_currentfindletter\empty}{}{\SYS_findletter_i}%
+		}%
 }
 
-\SYS at newmacro\SYS at addtocs#1#2{\expandafter\def\expandafter#1\expandafter{#1#2}}
-
-\SYS at newmacro\SYS at expaddtocs#1#2{\expandafter\SYS at addtocs\expandafter#1\expandafter{#2}}
-
-% teste si \SYS at currentfindletter commence par "_" et si oui, rajoute les 2 caract\`eres \`a \SYS at currentchar et les enl\`eve \`a \SYS at currentfindletter
-\SYS at newmacro\SYS at testsubscript{%
+% teste si \SYS_currentfindletter commence par "_" et si oui, rajoute les 2 caract\xE8res \xE0 \SYS_currentchar et les enl\xE8ve \xE0 \SYS_currentfindletter
+\def\SYS_testsubscript{%
 	\noexploregroups
-	\IfBeginWith\SYS at currentfindletter_%
-		{%\StrChar\SYS at currentfindletter\tw@[\SYS at currentletterafter]% TODO BUGFIX
-		\StrGobbleLeft\SYS at currentfindletter1[\SYS at currentletterafter]%
-%		\show\SYS at currentletterafter
+	\IfBeginWith\SYS_currentfindletter\SYSunder
+		{\StrGobbleLeft\SYS_currentfindletter1[\SYS_currentletterafter]%
 		\exploregroups
-		\StrRemoveBraces\SYS at currentletterafter[\SYS at currentletterafter]%
-		\IfInteger\SYS at currentletterafter
-			{\ifnum\SYS at currentletterafter=\m at ne\errmessage{L'indice ne doit pas etre -1.}\fi}%
-			{\errmessage{L'indice n'est pas un nombre entier !}}%
-		\SYS at expaddtocs\SYS at currentchar{\expandafter_\expandafter{\SYS at currentletterafter}}%
-		}\relax
+		\StrRemoveBraces\SYS_currentletterafter[\SYS_currentletterafter]%
+		\IfInteger\SYS_currentletterafter
+			{\xs_ifnum{\SYS_currentletterafter=-1 }
+				{\errmessage{L'indice ne doit pas etre -1.}}
+				{}%
+			}%
+			{\errmessage{L'indice n'est pas un nombre entier !}%
+			}%
+		\xs_eeaddtomacro\SYS_currentchar{\expandafter\SYSunder\expandafter{\number\SYS_currentletterafter}}% Bug 0.31 -> corrig\xE9 0.32: si espace apr\xE8s l'inbdice : supprim\xE9
+		}
+		{}%
 	\exploregroups
 }
 
-% ins\`ere l'inconnue dans la sc #1 \`a sa place dans \SYS at letterlist
-\SYS at newmacro\SYS at insletter#1{%
-	\IfSubStr\SYS at letterlist{#1}%
-		\relax
-		{\let\SYS at insunknown#1%
-		\StrChar{#1}\thr@@[\SYS at insnum]%
-		\StrRemoveBraces\SYS at insnum[\SYS at insnum]%
-		\StrChar{#1}\@ne[\SYS at currentinsletter]%
-		\let\SYS at letterlist@left\@empty
-		\let\SYS at letterlist@right\SYS at letterlist
-		\SYS at insletter@i}%
+% ins\xE8re l'inconnue dans la sc #1 \xE0 sa place dans \SYS_letterlist
+\def\SYS_insletter#1{%
+	\IfSubStr\SYS_letterlist{#1}%
+		{}
+		{\let\SYS_insunknown#1%
+		\StrChar{#1}3[\SYS_insnum]%
+		\StrRemoveBraces\SYS_insnum[\SYS_insnum]%
+		\StrChar{#1}1[\SYS_currentinsletter]%
+		\let\SYS_letterlist_left\empty
+		\let\SYS_letterlist_right\SYS_letterlist
+		\SYS_insletter_i
+		}%
 }
 
-\SYS at newmacro\SYS at insletter@i{%
-	\ifx\SYS at letterlist@right\@empty% l'inconnue viendra \`a la fin de \SYS at letterlist
-		\SYS at expaddtocs\SYS at letterlist@left\SYS at insunknown
-		\let\SYS at letterlist\SYS at letterlist@left
-	\else
-		\StrChar\SYS at letterlist@right\@ne[\SYS at currentletter]% la lettre suivante
-		\unless\ifnum\expandafter`\SYS at currentinsletter>\expandafter`\SYS at currentletter% est elle la bonne ?
-			\let\SYS at letterlist@right at right\SYS at letterlist@right
-			\let\SYS at letterlist@right at left\@empty
-			\expandafter\expandafter\expandafter\SYS at insletter@ii%
-		\else% sinon
-			\StrSplit\SYS at letterlist@right\thr@@\SYS at currentletter\SYS at letterlist@right
-			\SYS at expaddtocs\SYS at letterlist@left\SYS at currentletter
-			\expandafter\expandafter\expandafter\SYS at insletter@i
-		\fi
-	\fi
+\def\SYS_insletter_i{%
+	\xs_ifx{\SYS_letterlist_right\empty}% l'inconnue viendra \xE0 la fin de \SYS_letterlist
+		{\xs_eaddtomacro\SYS_letterlist_left\SYS_insunknown
+		\let\SYS_letterlist\SYS_letterlist_left
+		}
+		{\StrChar\SYS_letterlist_right1[\SYS_currentletter]% la lettre suivante
+		\xs_ifnum{\expandafter`\SYS_currentinsletter>\expandafter`\SYS_currentletter\relax}% lettre pas bonne ?
+			{\StrSplit\SYS_letterlist_right3\SYS_currentletter\SYS_letterlist_right
+			\xs_eaddtomacro\SYS_letterlist_left\SYS_currentletter
+			\SYS_insletter_i
+			}% sinon
+			{\let\SYS_letterlist_right_right\SYS_letterlist_right
+			\let\SYS_letterlist_right_left\empty
+			\SYS_insletter_ii%
+			}%
+		}%
 }
 
-\SYS at newmacro\SYS at insletter@ii{%
-	\ifx\SYS at letterlist@right at right\@empty
-		\let\SYS at letterlist\SYS at letterlist@left
-		\SYS at expaddtocs\SYS at letterlist\SYS at letterlist@right at left
-		\SYS at expaddtocs\SYS at letterlist\SYS at insunknown
-	\else
-		\StrChar\SYS at letterlist@right at right\@ne[\SYS at currentletter]% la lettre suivante
-		\ifnum\expandafter`\SYS at currentinsletter<\expandafter`\SYS at currentletter% est elle une autre ?
-			\let\SYS at letterlist\SYS at letterlist@left
-			\SYS at expaddtocs\SYS at letterlist\SYS at letterlist@right at left
-			\SYS at expaddtocs\SYS at letterlist\SYS at insunknown
-			\SYS at expaddtocs\SYS at letterlist\SYS at letterlist@right at right
-		\else
-			\StrChar\SYS at letterlist@right at right\thr@@[\SYS at currentsubscript]% le prochain indice
-			\StrRemoveBraces\SYS at currentsubscript[\SYS at currentsubscript]%
-			\unless\ifnum\SYS at insnum>\SYS at currentsubscript% est-il le bon, c'est-\`a-dire trop grand ?
-				\let\SYS at letterlist\SYS at letterlist@left
-				\SYS at expaddtocs\SYS at letterlist\SYS at letterlist@right at left
-				\SYS at expaddtocs\SYS at letterlist\SYS at insunknown
-				\SYS at expaddtocs\SYS at letterlist\SYS at letterlist@right at right
-			\else
-				\StrSplit\SYS at letterlist@right at right\thr@@\SYS at currentletter\SYS at letterlist@right at right
-				\SYS at expaddtocs\SYS at letterlist@right at left\SYS at currentletter
-				\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\SYS at insletter@ii
-			\fi
-		\fi
-	\fi
+\def\SYS_insletter_ii{%
+	\xs_ifx{\SYS_letterlist_right_right\empty}
+		{\let\SYS_letterlist\SYS_letterlist_left
+		\xs_eaddtomacro\SYS_letterlist\SYS_letterlist_right_left
+		\xs_eaddtomacro\SYS_letterlist\SYS_insunknown
+		}
+		{\StrChar\SYS_letterlist_right_right1[\SYS_currentletter]% la lettre suivante
+		\xs_ifnum{\expandafter`\SYS_currentinsletter<\expandafter`\SYS_currentletter\relax}% est elle une autre ?
+			{\let\SYS_letterlist\SYS_letterlist_left
+			\xs_eaddtomacro\SYS_letterlist\SYS_letterlist_right_left
+			\xs_eaddtomacro\SYS_letterlist\SYS_insunknown
+			\xs_eaddtomacro\SYS_letterlist\SYS_letterlist_right_right
+			}
+			{\StrChar\SYS_letterlist_right_right3[\SYS_currentsubscript]% le prochain indice
+			\StrRemoveBraces\SYS_currentsubscript[\SYS_currentsubscript]%
+			\xs_ifnum{\SYS_insnum>\SYS_currentsubscript\relax}% est-il le bon, c'est-\xE0-dire trop grand ?
+				{\StrSplit\SYS_letterlist_right_right3\SYS_currentletter\SYS_letterlist_right_right
+				\xs_eaddtomacro\SYS_letterlist_right_left\SYS_currentletter
+				\SYS_insletter_ii
+				}
+				{\let\SYS_letterlist\SYS_letterlist_left
+				\xs_eaddtomacro\SYS_letterlist\SYS_letterlist_right_left
+				\xs_eaddtomacro\SYS_letterlist\SYS_insunknown
+				\xs_eaddtomacro\SYS_letterlist\SYS_letterlist_right_right
+				}%
+			}%
+		}%
 }
 
-\SYS at newmacro\SYS at addtotok#1#2{#1\expandafter{\the#1#2}}
-
-\SYS at newmacro\SYS at expaddtotok#1#2{\expandafter\SYS at addtotok\expandafter#1\expandafter{#2}}
-
-\SYS at newmacro\SYS at addtocode{\SYS at addtotok\SYS at systemecode}
-
-\SYS at newmacro\SYS at expaddtocode#1{\expandafter\SYS at addtocode\expandafter{#1}}
-
 % reconstruit le code du tableau qui sera dans le \halign
-\SYS at newmacro\SYS at buildsystem#1#2{% #1=no ligne, #2=no inconnue
-	\StrSplit\SYS at letterlist@tmp3\SYS at currentvariable\SYS at letterlist@tmp
-	\ifcsname SYS at sign@\detokenize\expandafter{\SYS at currentvariable}@#1\endcsname
-		\expandafter\expandafter\expandafter\ifx\csname SYS at sign@\detokenize\expandafter{\SYS at currentvariable}@#1\endcsname+% signe + ?
-			\ifnum#2=\@ne% premi\`ere variable ?
-				\let\SYS at nextaction\@gobble
-			\else
-				\ifSYS at firstterm% premier terme de l'\'equation ?'
-					\let\SYS at nextaction\@gobble
+\def\SYS_buildsystem#1#2{% #1=no ligne, #2=no inconnue
+	\StrSplit\SYS_letterlist_tmp3\SYS_currentvariable\SYS_letterlist_tmp
+	\ifcsname SYS_sign_\detokenize\expandafter{\SYS_currentvariable}_#1\endcsname
+		\xs_eearg\xs_ifx{\csname SYS_sign_\detokenize\expandafter{\SYS_currentvariable}_#1\endcsname+}% signe + ?
+			{\xs_ifnum{#2=1 }% premi\xE8re variable ?
+				{\xs_gobarg
+				}
+				{\ifSYS_firstterm% premier terme de l'\xE9quation ?'
+					\expandafter\xs_gobarg
 				\else
-					\let\SYS at nextaction\@firstofone
+					\expandafter\SYS_execarg
 				\fi
-			\fi
-		\else
-			\ifnum#2=\@ne
-				\expandafter\def\csname SYS at term@\detokenize\expandafter{\SYS at currentvariable}@#1\expandafter\expandafter\expandafter\endcsname
+				}%
+			}
+			{\xs_ifnum{#2=1 }
+				{\expandafter\def\csname SYS_term_\detokenize\expandafter{\SYS_currentvariable}_#1\expandafter\expandafter\expandafter\endcsname
 					\expandafter\expandafter\expandafter{%
-					\csname SYS at sign@\detokenize\expandafter{\SYS at currentvariable}@#1\expandafter\expandafter\expandafter\endcsname
-					\csname SYS at term@\detokenize\expandafter{\SYS at currentvariable}@#1\endcsname}%
-				\let\SYS at nextaction\@gobble
-			\else
-				\let\SYS at nextaction\@firstofone
-			\fi
-		\fi
-		\SYS at nextaction{%
-			\SYS at addtocode{{}}%
-			\expandafter\SYS at expaddtocode\expandafter{\csname SYS at sign@\detokenize\expandafter{\SYS at currentvariable}@#1\endcsname{}}%
+					\csname SYS_sign_\detokenize\expandafter{\SYS_currentvariable}_#1\expandafter\expandafter\expandafter\endcsname
+					\csname SYS_term_\detokenize\expandafter{\SYS_currentvariable}_#1\endcsname}%
+				\xs_gobarg
+				}
+				{\SYS_execarg
+				}%
 			}%
-		\SYS at firsttermfalse
+			{%
+			\SYS_addtotab{{}}%
+			\xs_eearg\SYS_addtotab{\csname SYS_sign_\detokenize\expandafter{\SYS_currentvariable}_#1\endcsname{}}%
+			}%
+		\SYS_firsttermfalse
 	\fi
-	\unless\ifSYS at star
-		\unless\ifnum#2=\@ne\SYS at addtocode&\fi
+	\unless\ifSYS_star
+		\xs_ifnum{#2=1 }
+			{}
+			{\SYS_addtotab&}%
 	\fi
-	\ifcsname SYS at term@\detokenize\expandafter{\SYS at currentvariable}@#1\endcsname
-		\expandafter\SYS at expaddtocode\expandafter{\csname SYS at term@\detokenize\expandafter{\SYS at currentvariable}@#1\endcsname}%
+	\ifcsname SYS_term_\detokenize\expandafter{\SYS_currentvariable}_#1\endcsname
+		\xs_eearg\SYS_addtotab{\csname SYS_term_\detokenize\expandafter{\SYS_currentvariable}_#1\endcsname}%
 	\fi
-	\unless\ifSYS at star\SYS at addtocode&\fi
-	\ifnum#2<\SYS at numberofvariable
-		\edef\SYS at nextaction{\noexpand\SYS at buildsystem{#1}{\number\numexpr#2+1}}%
-		\expandafter\SYS at nextaction
-	\else
-		\ifSYS at constterm
-			\SYS at addtocode{{}}%
-			\ifSYS at firstterm\else\expandafter\SYS at expaddtocode\expandafter{\csname SYS at sign@const@#1\endcsname}\fi
-			\SYS at addtocode{{}&}%
-			\expandafter\SYS at expaddtocode\expandafter{\csname SYS at term@const@#1\endcsname&}%
+	\unless\ifSYS_star
+		\SYS_addtotab&%
+	\fi
+	\xs_ifnum{#2<\SYS_numberofvariable\relax}
+		{\xs_exparg{\SYS_buildsystem{#1}}{\number\numexpr#2+1}%
+		}
+		{\ifSYS_constterm
+			\ifcsname SYS_sign_const_#1\endcsname% si le terme constant existe dans cette ligne
+				\SYS_addtotab{{}}%
+				\ifSYS_firstterm\else
+					\xs_eearg\SYS_addtotab{\csname SYS_sign_const_#1\endcsname}%
+				\fi
+				\SYS_addtotab{{}}%
+				\unless\ifSYS_star
+					\SYS_addtotab&% Bug 0.31 -> corrig\xE9 0.32
+				\fi
+				\xs_eearg\SYS_addtotab{\csname SYS_term_const_#1\endcsname}%
+			\else
+				\unless\ifSYS_star
+					\SYS_addtotab&% Bug 0.31 -> corrig\xE9 0.32
+				\fi
+			\fi
+			\SYS_addtotab&%
 		\fi
-		\ifcsname SYS at eqsign@#1\endcsname
-			\SYS at addtocode{{}}%
-			\expandafter\SYS at expaddtocode\expandafter{\csname SYS at eqsign@#1\endcsname{}&}%
-			\expandafter\SYS at expaddtocode\expandafter{\csname SYS at right@#1\endcsname}%
+		\ifcsname SYS_eqsign_#1\endcsname
+			\SYS_addtotab{{}}%
+			\xs_eearg\SYS_addtotab{\csname SYS_eqsign_#1\endcsname{}&}%
+			\xs_eearg\SYS_addtotab{\csname SYS_right_#1\endcsname}%
 		\else
-			\SYS at addtocode&%
+			\SYS_addtotab&%
 		\fi
 		\saveexploremode\exploregroups
-		\ifcsname SYS at extracol@#1\endcsname
-			\SYS at addtocode&%
-			\expandafter\IfSubStr\csname SYS at extracol@#1\endcsname{**}% le contenu de l'extra col contient-il "**" ?
-				{\expandafter\let\expandafter\SYS at autonumarg\csname SYS at extracol@#1\endcsname
-				\StrSubstitute\SYS at autonumarg{**}{\number\numexpr\SYSeqnum+#1-\SYS at eqnumber}[\SYS at currentautonum]%
-				\SYS at cslet{SYS at extracol@#1}\SYS at currentautonum
-				\SYS at autonumtrue
+		\ifcsname SYS_extracol_#1\endcsname
+			\SYS_addtotab&%
+			\expandafter\IfSubStr\csname SYS_extracol_#1\endcsname{**}% le contenu de l'extra col contient-il "**" ?
+				{\SYS_letcs\SYS_autonumarg{SYS_extracol_#1}%
+				\StrSubstitute\SYS_autonumarg{**}{\number\numexpr\SYSeqnum+#1-\SYS_eqnumber}[\SYS_currentautonum]%
+				\SYS_cslet{SYS_extracol_#1}\SYS_currentautonum
+				\SYS_autonumtrue
 				}%
-				{\expandafter\IfSubStr\csname SYS at extracol@#1\endcsname*% le contenu de l'extra col contient-il "*" ?
-					{\expandafter\let\expandafter\SYS at autonumarg\csname SYS at extracol@#1\endcsname
-					\StrSubstitute\SYS at autonumarg*{\noexpand#1}[\SYS at currentautonum]%
-					\SYS at cslet{SYS at extracol@#1}\SYS at currentautonum
-					\SYS at autonumtrue
+				{\expandafter\IfSubStr\csname SYS_extracol_#1\endcsname*% le contenu de l'extra col contient-il "*" ?
+					{\SYS_letcs\SYS_autonumarg{SYS_extracol_#1}%
+					\StrSubstitute\SYS_autonumarg*{\noexpand#1}[\SYS_currentautonum]%
+					\SYS_cslet{SYS_extracol_#1}\SYS_currentautonum
+					\SYS_autonumtrue
 					}%
-					{\ifSYS at autonum
-						\IfSubStr\SYS at autonumarg{**}%
-							{\StrSubstitute\SYS at autonumarg{**}{\number\numexpr\SYSeqnum+#1-\SYS at eqnumber}[\SYS at currentautonum]}%
-							{\StrSubstitute\SYS at autonumarg*{\noexpand#1}[\SYS at currentautonum]}%
-						\SYS at expaddtocode\SYS at currentautonum
+					{\ifSYS_autonum
+						\IfSubStr\SYS_autonumarg{**}%
+							{\StrSubstitute\SYS_autonumarg{**}{\number\numexpr\SYSeqnum+#1-\SYS_eqnumber}[\SYS_currentautonum]}%
+							{\StrSubstitute\SYS_autonumarg*{\noexpand#1}[\SYS_currentautonum]}%
+						\xs_exparg\SYS_addtotab\SYS_currentautonum
 					\fi
 					}%
 				}%
-			\expandafter\SYS at expaddtocode\expandafter{\csname SYS at extracol@#1\endcsname}%
+			\xs_eearg\SYS_addtotab{\csname SYS_extracol_#1\endcsname}%
 		\else% pas d'extra colonne pour cette ligne ?
-			\ifSYS at autonum% mais si il y un autonum
-				\SYS at addtocode&%
-				\IfSubStr\SYS at autonumarg{**}%
-					{\StrSubstitute\SYS at autonumarg{**}{\number\numexpr\SYSeqnum+#1-\SYS at eqnumber}[\SYS at currentautonum]}%
-					{\StrSubstitute\SYS at autonumarg*{\noexpand#1}[\SYS at currentautonum]}%
-				\SYS at expaddtocode\SYS at currentautonum
+			\ifSYS_autonum% mais si il y un autonum
+				\SYS_addtotab&%
+				\IfSubStr\SYS_autonumarg{**}%
+					{\StrSubstitute\SYS_autonumarg{**}{\number\numexpr\SYSeqnum+#1-\SYS_eqnumber}[\SYS_currentautonum]}%
+					{\StrSubstitute\SYS_autonumarg*{\noexpand#1}[\SYS_currentautonum]}%
+				\xs_exparg\SYS_addtotab\SYS_currentautonum
 			\fi
 		\fi
 		\restoreexploremode
-		\ifnum#1<\SYS at eqnumber
-			\SYS at addtocode\cr
-			\SYS at firsttermtrue
-			\let\SYS at letterlist@tmp\SYS at letterlist
-			\edef\SYS at nextaction{\noexpand\SYS at buildsystem{\number\numexpr#1+1}{1}}%
-			\expandafter\expandafter\expandafter\SYS at nextaction
-		\else% fin de l'alignement
-			\SYS at addtocode{\SYS at strutdown\cr}%
-		\fi
-	\fi
+		\xs_ifnum{#1<\SYS_eqnumber\relax}
+			{\SYS_addtotab\cr
+			\SYS_firsttermtrue
+			\let\SYS_letterlist_tmp\SYS_letterlist
+			\xs_exparg\SYS_buildsystem{\number\numexpr#1+1}{1}%
+			}% fin de l'alignement
+			{\SYS_addtotab{\SYS_strutdown\cr}%
+			}%
+		}%
 }
 
-% ajoute "_\m at ne" \`a tous les tokens de #1 qui n'ont pas un indice
-\SYS at newmacro\SYS at scanletterlist#1{%
-	\let\SYS at letterlist\@empty
-	\def\SYS at lettersremaining{#1}%
-	\SYS at scanletterlist@i
+% ajoute "_{-1}" \xE0 tous les tokens de #1 qui n'ont pas un indice
+\def\SYS_scanletterlist#1{%
+	\let\SYS_letterlist\empty
+	\def\SYS_lettersremaining{#1}%
+	\SYS_scanletterlist_i
 }
 
-\SYS at newmacro\SYS at scanletterlist@i{%
-	\StrSplit\SYS at lettersremaining\@ne\SYS at currentchar\SYS at lettersremaining
-	\SYS at expaddtocs\SYS at letterlist\SYS at currentchar
-	\IfBeginWith\SYS at lettersremaining_%
-		{\StrChar\SYS at lettersremaining\tw@[\SYS at currentchar]%
-		\StrRemoveBraces\SYS at currentchar[\SYS at currentchar]%
-		\SYS at expaddtocs\SYS at letterlist{\expandafter_\expandafter{\SYS at currentchar}}%
-		\StrGobbleLeft\SYS at lettersremaining\tw@[\SYS at lettersremaining]%
+\def\SYS_scanletterlist_i{%
+	\StrSplit\SYS_lettersremaining1\SYS_currentchar\SYS_lettersremaining
+	\xs_eaddtomacro\SYS_letterlist\SYS_currentchar
+	\IfBeginWith\SYS_lettersremaining\SYSunder
+		{\StrChar\SYS_lettersremaining2[\SYS_currentchar]%
+		\StrRemoveBraces\SYS_currentchar[\SYS_currentchar]%
+		\xs_eeaddtomacro\SYS_letterlist{\expandafter\SYSunder\expandafter{\SYS_currentchar}}%
+		\StrGobbleLeft\SYS_lettersremaining2[\SYS_lettersremaining]%
 		}%
-		{\SYS at addtocs\SYS at letterlist{_{-1}}}%
-	\unless\ifx\SYS at lettersremaining\empty\expandafter\SYS at scanletterlist@i\fi
+		{\xs_eaddtomacro\SYS_letterlist{\SYSunder{-1}}%
+		}%
+	\xs_ifx{\SYS_lettersremaining\empty}
+		{}
+		{\SYS_scanletterlist_i}%
 }
 
-\SYS at newmacro\sysdelim#1#2{\def\SYS at delim@left{\left#1}\def\SYS at delim@right{\right#2}}
+\def\sysdelim#1#2{\def\SYS_delim_left{\left#1}\def\SYS_delim_right{\right#2}}
 \sysdelim\{.
 
-\SYS at newmacro\systeme{\@ifstar{\SYS at startrue\SYS at systeme@i}{\SYS at starfalse\SYS at systeme@i}}
+\def\systeme{\xs_ifstar{\SYS_startrue\SYS_systeme_i}{\SYS_starfalse\SYS_systeme_i}}
 
-\SYS at newmacro\SYS at systeme@i{%
+\def\SYS_systeme_i{%
 	\relax\iffalse{\fi\ifnum0=`}\fi
 	\begingroup
 		\mathcode`\,="013B
-		\catcode`\^7 \catcode`\_8
+		\catcode`\^7
+		\catcode`\_8
 		\expandarg\noexploregroups
-		\setbox\z@\hbox{$($}%
-		\edef\SYS at strutup{\vrule depth\z@ width\z@ height\dimexpr\ht\z at +\SYS at extrastrutdim\relax}%
-		\edef\SYS at strutdown{\vrule height\z@ width\z@ depth\dimexpr\dp\z at +\SYS at extrastrutdim\relax}%
-		\SYS at cslet++\SYS at cslet--%
-		\@testopt\SYS at systeme@ii{}%
+		\setbox0 \hbox{$($}%
+		\edef\SYS_strutup  {\vrule depth0pt width0pt height\dimexpr\ht0 +\SYS_extrastrutdim\relax}%
+		\edef\SYS_strutdown{\vrule height0pt width0pt depth\dimexpr\dp0 +\SYS_extrastrutdim\relax}%
+		\SYS_cslet++\SYS_cslet--%
+		\xs_testopt\SYS_systeme_ii{}%
 }
 
-\SYS at newmacro\SYS at systeme@ii[#1]{%
-		\ifx\@empty#1\@empty
-			\let\SYS at letterlist\@empty
-			\SYS at sortvariabletrue
-		\else
-			\SYS at scanletterlist{#1}% ajoute des _{-1} si besoin
-			\SYS at sortvariablefalse
-		\fi
-		\SYS at consttermfalse
-		\expandafter\@testopt\expandafter\SYS at systeme@iii\expandafter{\SYS at defaulteqsep}%
+\def\SYS_systeme_ii[#1]{%
+		\xs_ifempty{#1}
+			{\let\SYS_letterlist\empty
+			\SYS_sortvariabletrue
+			}
+			{\SYS_scanletterlist{#1}% ajoute des _{-1} si besoin
+			\SYS_sortvariablefalse
+			}%
+		\SYS_consttermfalse
+		\xs_exparg{\xs_testopt\SYS_systeme_iii}{\SYS_defaulteqsep}%
 }
 
-\SYS at newmacro\SYS at systeme@iii[#1]#2{%
-		\SYS at newmacro\SYS at systeme@iv##1#1##2\@nil{%
-			\ifx\@empty##1\@empty
-				\SYS at addtocode\cr% une ligne vide
-			\else
-				\SYS at spliteqinterms{##1}% analyser l'eq courante
-			\fi
-			\ifx\@empty##2\@empty% tant qu'il reste des \'equations
-			\else
-				\edef\SYS at eqnumber{\number\numexpr\SYS at eqnumber+\@ne}% augmenter de 1 leur nombre
-				\global\advance\SYSeqnum\@ne
-				\def\SYS at nextaction{\SYS at systeme@iv##2\@nil}% recommencer avec ce qu'il reste
-				\expandafter\SYS at nextaction
-			\fi
+\def\SYS_systeme_iii[#1]#2{%
+		\def\SYS_systeme_iv##1#1##2\_nil{%
+			\xs_ifempty{##1}
+				{\SYS_addtotab\cr}% on a une ligne vide
+				{\SYS_spliteqinterms{##1}}% analyser l'\xE9q courante
+			\xs_ifempty{##2}% tant qu'il reste des \xE9quations
+				{}
+				{\edef\SYS_eqnumber{\number\numexpr\SYS_eqnumber+1}% augmenter de 1 leur nombre
+				\global\advance\SYSeqnum1
+				\SYS_systeme_iv##2\_nil% recommencer avec ce qu'il reste
+				}%
 		}%
-		\global\advance\SYSeqnum\@ne
-		\def\SYS at eqnumber{1}%
-		\ifdefined\SYS at autonumarg
-			\ifx\SYS at autonumarg\@empty% on initialise que si \SYS at autonumarg est vide
-				\SYS at extracolfalse
-				\SYS at autonumfalse
-			\fi
+		\global\advance\SYSeqnum1
+		\def\SYS_eqnumber{1}%
+		\ifdefined\SYS_autonumarg
+			\xs_ifx{\SYS_autonumarg\empty}% on initialise que si \SYS_autonumarg est vide
+				{\SYS_extracolfalse
+				\SYS_autonumfalse
+				}
+				{}%
 		\else
-			\SYS at extracolfalse
-			\SYS at autonumfalse
+			\SYS_extracolfalse
+			\SYS_autonumfalse
 		\fi
-		\SYS at systeme@iv#2#1\@nil% analyser toutes les \'equations et en faire des termes et des signes
-		\StrCount\SYS at letterlist_[\SYS at numberofvariable]%
-		\SYS at systemecode{}\SYS at systempreamble{}%
-		\ifSYS at star
-			\SYS at makesyspreamble\@ne
-		\else
-			\SYS at makesyspreamble\SYS at numberofvariable% fabriquer le pr\'eambule du \halign
+		\SYS_systeme_iv#2#1\_nil% analyser toutes les \xE9quations et en faire des termes et des signes
+		\StrCount\SYS_letterlist\SYSunder[\SYS_numberofvariable]%
+		\SYS_systemecode{}\SYS_systempreamble{}%
+		\xs_exparg\SYS_makesyspreamble{\number\ifSYS_star1\else\SYS_numberofvariable\fi\space}% fabriquer le pr\xE9ambule du \halign
+		\SYS_firsttermtrue
+		\let\SYS_letterlist_tmp\SYS_letterlist
+		\SYS_buildsystem11% construire le syst\xE8me...
+		\ifdefined\SYS_substlist
+			\xs_ifx{\SYS_substlist\empty}
+				{}
+				{\edef\SYS_systemcs{\the\SYS_systemecode}%
+				\SYS_substlist
+				\SYS_systemecode\expandafter{\SYS_systemcs}%
+				}%
 		\fi
-		\SYS at firsttermtrue
-		\let\SYS at letterlist@tmp\SYS at letterlist
-		\SYS at buildsystem11% construire le syst\`eme...
-		\ifdefined\SYS at substlist
-			\unless\ifx\SYS at substlist\@empty
-				\edef\SYS at systemcs{\the\SYS at systemecode}%
-				\SYS at substlist
-				\SYS at systemecode\expandafter{\SYS at systemcs}%
-			\fi
-		\fi
-		\ifmmode
-			\expandafter\@firstofone
-		\else
-			\expandafter\SYS at entermath
-		\fi
-			{\SYS at delim@left
+		\csname SYS_\ifmmode execarg\else entermath\fi\endcsname
+			{\SYS_delim_left
 			\vcenter{%
-				\lineskiplimit\z@\lineskip\z@
-				\baselineskip\SYS at lineskipcoeff\normalbaselineskip
-				\halign\expandafter\expandafter\expandafter{\expandafter\the\expandafter\SYS at systempreamble\the\SYS at systemecode}%
+				\lineskiplimit=0pt
+				\lineskip=0pt
+				\baselineskip\SYS_lineskipcoeff\normalbaselineskip
+				\halign\expandafter\expandafter\expandafter{\expandafter\the\expandafter\SYS_systempreamble\the\SYS_systemecode}%
 				}%
-			\SYS at delim@right
+			\SYS_delim_right
 			}% ...l'afficher en mode math
 	\endgroup
 	\ifnum0=`{\fi\iffalse}\fi
-	\unless\ifSYS at followautonum
-		\ifdefined\SYS at autonumarg
-			\let\SYS at autonumarg\@empty% annule la num\'erotation auto
+	\unless\ifSYS_followautonum
+		\ifdefined\SYS_autonumarg
+			\let\SYS_autonumarg\empty% annule la num\xE9rotation auto
 		\fi
 	\fi
 }
 
-% Construire le pr\'eambule du \halign
-\SYS at newmacro\SYS at makesyspreamble#1{%
-	\def\SYS at preamblenum{#1}%
-	\SYS at makesyspreamble@i\@ne
+% Construire le pr\xE9ambule du \halign
+\def\SYS_makesyspreamble#1{%
+	\def\SYS_preamblenum{#1}%
+	\SYS_makesyspreamble_i1%
 }
 
-\SYS at newmacro\SYS at makesyspreamble@i#1{%
-	\ifnum#1<\SYS at preamblenum% tant qu'il reste des variables
-		\SYS at addtotok\SYS at systempreamble{\hfil$##$&\hfil$##$&}% une colonne pour le terme et une pour le signe
-		\expandafter\SYS at makesyspreamble@i\expandafter{\number\numexpr#1+\@ne\expandafter}%
-	\else
-		\ifSYS at constterm
-			\SYS at addtotok\SYS at systempreamble{\hfil$##$&\hfil$##$&}% une colonne pour le terme constant et son signe
+\def\SYS_makesyspreamble_i#1{%
+	\xs_ifnum{#1<\SYS_preamblenum\relax}% tant qu'il reste des variables
+		{\SYS_addtotok\SYS_systempreamble{\hfil$##$&\hfil$##$&}% une colonne pour le terme et une pour le signe
+		\xs_exparg\SYS_makesyspreamble_i{\number\numexpr#1+1}%
+		}
+		{\ifSYS_constterm
+			\SYS_addtotok\SYS_systempreamble{\hfil$##$&\hfil$##$&}% une colonne pour le terme constant et son signe
 		\fi
-		\SYS at addtotok\SYS at systempreamble{\hfil$##$&$##$&$##$\hfil\null}% ajouter 1 colonne pour le signe = et une pour le terme de droite
-		\ifSYS at extracol
-			\SYS at addtotok\SYS at systempreamble{&\SYS at extracolstart##\SYS at extracolend\hfil\null}% la colonne suppl\'ementaire (pas de mode math)
+		\SYS_addtotok\SYS_systempreamble{\hfil$##$&$##$&$##$\hfil\null}% ajouter 1 colonne pour le signe = et une pour le terme de droite
+		\ifSYS_extracol
+			\SYS_addtotok\SYS_systempreamble{&\SYS_extracolstart##\SYS_extracolend\hfil\null}% la colonne suppl\xE9mentaire (pas de mode math)
 		\fi
-		\SYS at addtotok\SYS at systempreamble{\cr\SYS at strutup}% ajouter la fin du pr\'eambule et le strut de premi\`ere ligne
-	\fi
+		\SYS_addtotok\SYS_systempreamble{\cr\SYS_strutup}% ajouter la fin du pr\xE9ambule et le strut de premi\xE8re ligne
+		}%
 }
 
-\SYS at newmacro\SYS at entermath#1{$\relax#1$}
+\def\SYS_entermath#1{$\relax#1$}
 
-% d\'efinit les substitutions \`a faire dans le tableau avant l'affichage
-\SYS at newmacro\syssubstitute{%
-	\unless\ifdefined\SYS at substlist\let\SYS at substlist\@empty\fi
-	\SYS at substitute@i
+% d\xE9finit les substitutions \xE0 faire dans le tableau avant l'affichage
+\def\syssubstitute{%
+	\unless\ifdefined\SYS_substlist\let\SYS_substlist\empty\fi
+	\SYS_substitute_i
 }
 
-\SYS at newmacro\SYS at substitute@i#1{%
-	\ifx\@empty#1\@empty
-	\else
-		\SYS at addtocs\SYS at substlist{\StrSubstitute\SYS at systemcs}%
-		\StrChar{\noexpand#1}\@ne[\SYS at currentchar]\StrRemoveBraces\SYS at currentchar[\SYS at currentchar]%
-		\SYS at expaddtocs\SYS at substlist{\expandafter{\expandafter\noexpand\SYS at currentchar}}%
-		\StrChar{\noexpand#1}\tw@[\SYS at currentchar]\StrRemoveBraces\SYS at currentchar[\SYS at currentchar]%
-		\SYS at expaddtocs\SYS at substlist{\expandafter{\expandafter\noexpand\SYS at currentchar}[\SYS at systemcs]}%
-		\def\SYS at nextaction{\expandafter\SYS at substitute@i\expandafter{\@gobbletwo#1}}%
-		\expandafter\SYS at nextaction
-	\fi
+\def\SYS_substitute_i#1{%
+	\xs_ifempty{#1}
+		{}
+		{\xs_addtomacro\SYS_substlist{\StrSubstitute\SYS_systemcs}%
+		\StrChar{\noexpand#1}1[\SYS_currentchar]\StrRemoveBraces\SYS_currentchar[\SYS_currentchar]%
+		\xs_eaddtomacro\SYS_substlist{\expandafter{\expandafter\noexpand\SYS_currentchar}}%
+		\StrChar{\noexpand#1}2[\SYS_currentchar]\StrRemoveBraces\SYS_currentchar[\SYS_currentchar]%
+		\xs_eaddtomacro\SYS_substlist{\expandafter{\expandafter\noexpand\SYS_currentchar}[\SYS_systemcs]}%
+		\xs_exparg\SYS_substitute_i{\SYS_gobtwoargs#1}%
+		}%
 }
 
 % annule les substitutions
-\SYS at newmacro\sysnosubstitute{\let\SYS at substlist\@empty}
+\def\sysnosubstitute{\let\SYS_substlist\empty}
 
-\catcode`\@\SYS at savedatcatcode\relax
+\SYS_restorecatcode
 
 \endinput
 
@@ -660,29 +654,36 @@
 ######################################################################
 
 v0.1        27/02/2011
-	- Premi\`ere version publique sur le CTAN
+	- Premi\xE8re version publique sur le CTAN.
 ----------------------------------------------------------------------
 v0.2        08/03/2011
     - Le premier argument optionnel met en place de nouvelles
-      fonctionnalit\'es
-    - Possibilit\'e d'avoir des inconnues indic\'ees
-    - Mise en place d'une colonne suppl\'ementaire et d'une
-      num\'erotation automatique
-    - La commande \'etoil\'ee \systeme* d\'egrade l'alignement pour ne
-      plus prendre en compte que les signes d'\'egalit\'e
+      fonctionnalit\xE9s.
+    - Possibilit\xE9 d'avoir des inconnues indic\xE9es.
+    - Mise en place d'une colonne suppl\xE9mentaire et d'une
+      num\xE9rotation automatique.
+    - La commande \xE9toil\xE9e \systeme* d\xE9grade l'alignement pour ne
+      plus prendre en compte que les signes d'\xE9galit\xE9.
     - Une substitution est possible en fin de traitement, juste
-      avant d'afficher le syst\`eme.
+      avant d'afficher le syst\xE8me.
 ----------------------------------------------------------------------
 v0.2a       15/05/2011
-    - Bug corrig\'e lorsque les termes comportent des accolades
+    - Bug corrig\xE9 lorsque les termes comportent des accolades.
 ----------------------------------------------------------------------
-v0.2b       2011/06/23
-    - La commande \setdelim permet de modifier les d\'elimiteurs
-      extensibles plac\'es de part et d'autre du syst\`eme.
+v0.2b       23/06/2011
+    - La commande \setdelim permet de modifier les d\xE9limiteurs
+      extensibles plac\xE9s de part et d'autre du syst\xE8me.
 ----------------------------------------------------------------------
 v0.3        21/12/2013
-    - Un terme constant est permis dans le membre de gauche
-    ----------------------------------------------------------------------
+    - Un terme constant est permis dans le membre de gauche.
+----------------------------------------------------------------------
 v0.31       01/01/2018
-    - Il manquait un "&" apr\`es le terme constant, merci \`a Thomas Soll
-      de l'avoir signal\'e
\ No newline at end of file
+    - Il manquait un "&" apr\xE8s le terme constant, merci \xE0 Thomas Soll
+      de l'avoir signal\xE9.
+----------------------------------------------------------------------
+v0.32       13/01/2019
+    - Correction d'un bug : les espaces \xE9taient pris en compte dans
+      les noms des termes.
+    - Correction d'un bug : si version \xE9toil\xE9e et terme constant dans
+      membre de gauche, d\xE9faut d'alignement.
+    - Nettoyage du code.
\ No newline at end of file



More information about the tex-live-commits mailing list