diff options
Diffstat (limited to 'Master/texmf-dist/tex/generic/autoaligne/autoaligne.tex')
-rw-r--r-- | Master/texmf-dist/tex/generic/autoaligne/autoaligne.tex | 94 |
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 |