summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/generic/autoaligne/autoaligne.tex
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/generic/autoaligne/autoaligne.tex')
-rw-r--r--Master/texmf-dist/tex/generic/autoaligne/autoaligne.tex94
1 files changed, 74 insertions, 20 deletions
diff --git a/Master/texmf-dist/tex/generic/autoaligne/autoaligne.tex b/Master/texmf-dist/tex/generic/autoaligne/autoaligne.tex
index 4fdf8a605af..24555de4ab8 100644
--- a/Master/texmf-dist/tex/generic/autoaligne/autoaligne.tex
+++ b/Master/texmf-dist/tex/generic/autoaligne/autoaligne.tex
@@ -3,9 +3,9 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
\def\aanom {autoaligne} %
-\def\aaversion {1.1} %
+\def\aaversion {1.2} %
% %
-\def\aadate {2016/10/06} %
+\def\aadate {2016/10/22} %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
@@ -58,10 +58,13 @@
\expandafter\aa_restaure_catcode\expandafter\endinput
\fi
-\def\aa_mode_math#1{$\relax#1$}
+\let\aa_sep_terme_vide\relax
+\let\aa_sep_membre_vide\relax
+\def\aa_compose_en_mode_math#1{$\relax#1$}
+\def\aa_devdev_arg#1{\loi_exparg{\loi_exparg{#1}}}
\def\aavcoeff#{\def\aa_v_coeff}
-\newtoks\aa_aligne_toks
-\def\aa_ajoute_au_toks#1{\aa_aligne_toks\expandafter{\the\aa_aligne_toks#1}}
+\newtoks\aa_liste_tokens
+\def\aa_ajoute_au_toks#1{\aa_liste_tokens\expandafter{\the\aa_liste_tokens#1}}
\def\aa_developpe_et_ajoute_au_toks#1{\loi_exparg\aa_ajoute_au_toks{#1}}
\def\egaldevantmembrevide{\chardef\aa_egal_devant_membre_vide}
\egaldevantmembrevide=0% pas de signe = devant un membre vide
@@ -80,10 +83,47 @@
\def\aa_si_commence_par_i##1#2##2\_nil{\loi_exparg\loi_ifempty{\loi_gobarg##1}}%
\aa_si_commence_par_i\relax#1#2\_nil
}
-\def\aa_liste_separateurs{\\_=_+||-}% liste s\'eparateurs par d\'efaut. N'a _pas_ \`a \^etre modifi\'ee !!!
+\def\definirseparateurs#1#2#3{%
+ \loi_ifempty{#1}
+ {\aa_erreur{Separateur <vide> entre lignes non permis, "\string\\" retenu}%
+ \definirseparateurs{\\}{#2}{#3}%
+ }
+ {\loi_ifempty{#2#3}
+ {\aa_erreur{Separateurs de membre <vide> et de terme <vide> : "=" et "+||-" retenus}%
+ \definirseparateurs{#1}{=}{+||-}%
+ }
+ {\loi_ifempty{#2}
+ {\definirseparateurs{#1}{\aa_sep_membre_vide}{#3}%
+ }
+ {\loi_ifempty{#3}
+ {\def\aa_liste_separateurs{#1_#2_\aa_sep_terme_vide}}
+ {\def\aa_liste_separateurs{#1_#2_#3}}%
+ }%
+ }%
+ }%
+}
+\definirseparateurs{\\}{=}{+||-}% s\'eparateurs par d\'efaut
+\def\definirespacements{\aa_si_prochain_tok_est[\definirespacements_i{\definirespacements_i[,]}}
+\def\definirespacements_i[#1,#2]#3#4{% #3=espace avant & apr\`es s\'eparateurs 2 #4=espace avant & apr\`es s\'eparateurs 3
+ \edef\aa_insere_espacement_avant{\aa_devdev_arg\loi_ifempty{\loi_removeextremespaces{#1}}{}{\hskip\glueexpr#1\relax}}%
+ \edef\aa_insere_espacement_apres{\aa_devdev_arg\loi_ifempty{\loi_removeextremespaces{#2}}{}{\hskip\glueexpr#2\relax}}%
+ \edef\aa_espacement_signe{\dimexpr\loi_ifempty{#3}{0pt}{#3}\relax}%
+ \edef\aa_espacement_terme{\dimexpr\loi_ifempty{#4}{0pt}{#4}\relax}%
+}
+\definirespacements[,]{0pt}{0pt}% espacements par d\'efaut
+\def\aa_si_contient_moins#1{\aa_si_contient_moins_i||#1||||-||\_nil}% "||-||" est-il dans #1 ?
+\def\aa_si_contient_moins_i#1||-||#2\_nil{\loi_ifempty{#2}\loi_second\loi_first}
+\def\aa_trouver_moins_dans_separateur_de_termes{\expandafter\aa_trouver_moins_dans_separateur_de_termes_i\aa_liste_separateurs\_nil}
+\def\aa_trouver_moins_dans_separateur_de_termes_i#1_#2_#3\_nil{%
+ \aa_si_contient_moins{#2}
+ {2}
+ {\aa_si_contient_moins{#3}{3}{-1}}%
+}
\def\aa_ajoute_si_existe#1{\ifcsname#1\endcsname\loi_argcsname\aa_developpe_et_ajoute_au_toks{#1}\fi}
-\def\aa_alignement_signe{\hfil${}##{}$\hfil}% pour "=", "+" ou "-"
-\def\aa_alignement_terme_c{\hfil$##$\hfil}\def\aa_alignement_terme_d{\hfil$##$}\def\aa_alignement_terme_g{$##$\hfil}
+\def\aa_alignement_signe{\hfil\kern\aa_espacement_signe${}##{}$\kern\aa_espacement_signe\hfil}% pour "=", "+" ou "-"
+\def\aa_alignement_terme_c{\hfil\kern\aa_espacement_terme$##$\kern\aa_espacement_terme\hfil}
+\def\aa_alignement_terme_d{\hfil\kern\aa_espacement_terme$##$\kern\aa_espacement_terme}
+\def\aa_alignement_terme_g{\kern\aa_espacement_terme$##$\kern\aa_espacement_terme\hfil}
\def\autoaligne{%
\relax\iffalse{\fi\ifnum0=`}\fi
\begingroup
@@ -147,8 +187,9 @@
\def\autoaligne_iii#1{% #1=tableau
\def\-{-}\def\+{+}%
\loi_exparg{\setsepchar[_]}{\aa_liste_separateurs}%
+ \edef\aa_numero_separateur_contenant_signe_moins{\aa_trouver_moins_dans_separateur_de_termes}%
\def\readlist_iii##1||##2\_nil##3{% red\'efinir \readlist_iii pour que
- \loi_ifnum{\loi_nestcnt=3 }% si la profondeur est de 3
+ \loi_ifnum{\loi_nestcnt=\aa_numero_separateur_contenant_signe_moins\relax}% si la profondeur est celle o\`u il a y a un "-"
{\aa_si_commence_par{##30}{-}% et que la liste restant \`a examiner commence par "-" alors
{\loi_exparg{\readlist_iv1}{\expandafter\-\loi_gobarg##3##1}}% remplacer ce "-" par \-
{\readlist_iv1{##3##1}}%
@@ -164,17 +205,17 @@
\loi_argcsname\let\aa_nombre_de_membres{aa_termeslen[\aa_ligne_index,0]}% mettre \`a jour le nombre max de membres
\fi
\loi_fornum\aa_membre_index=1to\csname aa_termeslen[\aa_ligne_index,0]\endcsname\do{% pour chaque membre
- \loi_argcsname\let\aa_nombre_de_membre_courant{aa_termeslen[\aa_ligne_index,\aa_membre_index,0]}%
+ \loi_argcsname\let\aa_nombre_de_termes_courant{aa_termeslen[\aa_ligne_index,\aa_membre_index,0]}%
\ifcsname aa_nbtermes_\aa_membre_index\endcsname% mettre \`a jour le nombre max de termes dans ce membre
- \ifnum\aa_nombre_de_membre_courant>\csname aa_nbtermes_\aa_membre_index\endcsname\relax
- \loi_argcsname\let{aa_nbtermes_\aa_membre_index}\aa_nombre_de_membre_courant
+ \ifnum\aa_nombre_de_termes_courant>\csname aa_nbtermes_\aa_membre_index\endcsname\relax
+ \loi_argcsname\let{aa_nbtermes_\aa_membre_index}\aa_nombre_de_termes_courant
\fi
\else
- \loi_argcsname\let{aa_nbtermes_\aa_membre_index}\aa_nombre_de_membre_courant
+ \loi_argcsname\let{aa_nbtermes_\aa_membre_index}\aa_nombre_de_termes_courant
\fi
}%
}%
- \aa_aligne_toks{}%
+ \aa_liste_tokens{}%
% construction du pr\'eambule de l'alignement
\loi_fornum\aa_membre_index=1to\aa_nombre_de_membres\do{%
\loi_fornum\aa_terme_index=1to\csname aa_nbtermes_\aa_membre_index\endcsname\do{%
@@ -237,11 +278,11 @@
\aa_ajoute_au_toks\cr
}%
\aa_ajoute_au_toks\crcr
- \leavevmode
+ \aa_insere_espacement_avant
\ifcase\aa_consigne_alignement_vertical\relax
\or
\let\aa_boite_externe\vcenter
- \loi_antefi{\ifmmode\expandafter\loi_identity\else\expandafter\aa_mode_math\fi}%
+ \csname\ifmmode loi_identity\else aa_compose_en_mode_math\fi\expandafter\endcsname
\or
\let\aa_boite_externe\vtop
\expandafter\loi_identity
@@ -249,7 +290,14 @@
\let\aa_boite_externe\vbox
\expandafter\loi_identity
\fi
- {\aa_boite_externe{\lineskiplimit0pt \lineskip0pt \baselineskip\aa_v_coeff\baselineskip\halign\expandafter{\the\aa_aligne_toks}}}%
+ {\aa_boite_externe{%
+ \lineskiplimit0pt
+ \lineskip0pt
+ \baselineskip\aa_v_coeff\baselineskip
+ \halign\expandafter{\the\aa_liste_tokens}%
+ }%
+ }%
+ \aa_insere_espacement_apres
\endgroup
}
\aavcoeff{1}% par d\'efaut
@@ -257,7 +305,13 @@
\endinput
v1.0 01/09/2016
- premi\`ere version publique
+ - premi\`ere version publique
v1.1 06/10/2016
- correction d'un bug dans \autoaligne_iii qui mangeait le
- \endgroup final \ No newline at end of file
+ - correction d'un bug dans \autoaligne_iii qui mangeait le
+ \endgroup final
+v1.2 22/10/2016
+ - possibilit\'e de d\'efinir les s\'eparateurs
+ - possibilit\'e de d\'efinir les espaces additionnelles
+ autour des s\'eparateurs
+ - possibilit\'e de d\'efinir les espaces ins\'er\'ees avant et
+ apr\`es l'alignement \ No newline at end of file