diff options
Diffstat (limited to 'macros/generic/systeme/systeme.tex')
-rw-r--r-- | macros/generic/systeme/systeme.tex | 46 |
1 files changed, 39 insertions, 7 deletions
diff --git a/macros/generic/systeme/systeme.tex b/macros/generic/systeme/systeme.tex index 9bda0ef046..833edf60f6 100644 --- a/macros/generic/systeme/systeme.tex +++ b/macros/generic/systeme/systeme.tex @@ -4,9 +4,9 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % \def\SYSname {systeme} % -\def\SYSver {0.32} % +\def\SYSver {0.33} % % % -\def\SYSdate {2019/01/13} % +\def\SYSdate {2020/04/13} % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % @@ -58,6 +58,7 @@ \long\def\SYS_execarg#1{#1} \long\def\SYS_gobtwoargs#1#2{} \def\SYS_addtotok#1#2{#1\expandafter{\the#1#2}} +\def\SYS_xaddtotok#1#2{\SYS_expaddtotok#1{\expanded{#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} @@ -155,6 +156,28 @@ \sysequivsign{<=}\leq \sysequivsign{>=}\geq +\def\syssignspace#1{\edef\SYS_signspace{\ifdim#1=0pt \else\hskip\dimexpr#1\relax\fi}} +\def\syseqspace#1{\edef\SYS_eqspace{\ifdim#1=0pt \else\hskip\dimexpr#1\relax\fi}} +\syssignspace{0pt} +\syseqspace{0pt} + +\def\SYS_firsttonil#1#2\_nil{#1} +\def\SYS_firstletter#1#2{\string#1\expandafter\SYS_firsttonil\detokenize{#2.}\_nil} +\def\sysalign#1{% + \xs_ifempty{#1}{\sysalign_i r}{\sysalign_i#1},l,\_nil +} +\def\sysalign_i#1,#2,#3\_nil{% + \let\SYS_leftright\hfil + \if\SYS_firstletter c{#1}\let\SYS_leftleft\hfil \else + \if\SYS_firstletter l{#1}\let\SYS_leftleft\empty\else + \let\SYS_leftleft\hfil \let\SYS_leftright\empty\fi\fi + \let\SYS_rightleft\hfil + \if\SYS_firstletter c{#2}\let\SYS_rightright\hfil \else + \if\SYS_firstletter r{#2}\let\SYS_rightright\empty \else + \let\SYS_rightleft\empty \let\SYS_rightright\hfil\fi\fi +} +\sysalign{r,l} + % #1 est l'équation courante. La macro la sépare en 2 membres -> \SYS_leftmember et \SYS_rightmember % le signe de séparation entre les 2 membres se trouve dans \SYS_currenteqsign \def\SYS_splitinmembers#1{% @@ -238,7 +261,7 @@ \fi } {\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'équation !}% + \errmessage{Package systeme Error: l'inconnue "\detokenize\expandafter{\SYS_letterfound}" a deja ete trouvee dans l'equation !}% \fi \ifSYS_sortvariable \SYS_insletter\SYS_letterfound% l'insérer si besoin dans la liste ordonnée des variables @@ -606,15 +629,16 @@ \SYS_makesyspreamble_i1% } + \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 + {\SYS_xaddtotok\SYS_systempreamble{\SYS_leftleft$##$\SYS_leftright&\hfil\SYS_signspace$##$\SYS_signspace\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 + \SYS_xaddtotok\SYS_systempreamble{\SYS_leftleft$##$\SYS_leftright&\hfil\SYS_signspace$##$\SYS_signspace\hfil&}% une colonne pour le terme constant et son signe \fi - \SYS_addtotok\SYS_systempreamble{\hfil$##$&$##$&$##$\hfil\null}% ajouter 1 colonne pour le signe = et une pour le terme de droite + \SYS_xaddtotok\SYS_systempreamble{\SYS_leftleft$##$\SYS_leftright&\hfil\SYS_eqspace$##$\SYS_eqspace\hfil&\SYS_rightleft$##$\SYS_rightright\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émentaire (pas de mode math) \fi @@ -686,4 +710,12 @@ v0.32 13/01/2019 les noms des termes. - Correction d'un bug : si version étoilée et terme constant dans membre de gauche, défaut d'alignement. - - Nettoyage du code.
\ No newline at end of file + - Nettoyage du code. +---------------------------------------------------------------------- +v0.33 13/04/2020 + - possibilité de choisir un espacement avant et après les signes + + et - avec \syssignspace{<skip>}. De même pour = avec + \syseqspace{<skip>} + - possibilité de choisir l'alignement des colonnes des termes à + gauche du signe = et celle à droite avec \sysalign{x,y} où + x et y sont "c", "r", ou "l"
\ No newline at end of file |