diff options
author | Karl Berry <karl@freefriends.org> | 2020-09-08 21:07:10 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2020-09-08 21:07:10 +0000 |
commit | 3741b8b40f8f8c90286ae327cb29eadc441fb84e (patch) | |
tree | 13d718edb6f3d277f7306f10cadfaa142b3fe7ac | |
parent | 8e729e92f045234de5911140817f9815cecc614f (diff) |
witharrows (8sep20)
git-svn-id: svn://tug.org/texlive/trunk@56296 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r-- | Master/texmf-dist/doc/generic/witharrows/witharrows-french.pdf | bin | 266688 -> 270033 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/generic/witharrows/witharrows-french.tex | 40 | ||||
-rw-r--r-- | Master/texmf-dist/doc/generic/witharrows/witharrows.pdf | bin | 638897 -> 643250 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/generic/witharrows/witharrows.tex | 38 | ||||
-rw-r--r-- | Master/texmf-dist/source/generic/witharrows/witharrows.dtx | 97 | ||||
-rw-r--r-- | Master/texmf-dist/tex/generic/witharrows/witharrows.sty | 38 |
6 files changed, 150 insertions, 63 deletions
diff --git a/Master/texmf-dist/doc/generic/witharrows/witharrows-french.pdf b/Master/texmf-dist/doc/generic/witharrows/witharrows-french.pdf Binary files differindex 3c95de9c427..10b2e831912 100644 --- a/Master/texmf-dist/doc/generic/witharrows/witharrows-french.pdf +++ b/Master/texmf-dist/doc/generic/witharrows/witharrows-french.pdf diff --git a/Master/texmf-dist/doc/generic/witharrows/witharrows-french.tex b/Master/texmf-dist/doc/generic/witharrows/witharrows-french.tex index 95b3e772566..86b7f660f96 100644 --- a/Master/texmf-dist/doc/generic/witharrows/witharrows-french.tex +++ b/Master/texmf-dist/doc/generic/witharrows/witharrows-french.tex @@ -49,8 +49,8 @@ Title = L’extension witharrows , Subject = Une extension pour plain-TeX et LaTeX , Author = F. Pantigny + } } -} \NewDocumentEnvironment {scope} {} {} {} @@ -468,8 +468,16 @@ la page~\pageref{NestedEnv}. Jusqu'à présent, nous n'avons utilisé l'environnement |{WithArrows}| qu'avec deux colonnes. Néanmoins, il est possible de l'utiliser avec un nombre arbitraire de colonnes grâce à l'option |format|. La valeur donnée à cette option est similaire au préambule d'un environnement |{array}|: il s'agit d'une séquence de lettres |r|, |c| et -|l|. La valeur initiale de cette option |format| est, en fait, |rl|. +|l| mais aussi |R|, |C| et |L|. +\smallskip +\colorbox{yellow!50}{\textbf{Nouveau 2.6}}\enskip +Les lettres |R|, |C| et |L| placent des groupes vides |{}| qui permettent un espacement correct lorsque ces +colonnes contiennent des symboles de type |\mathrel| (comme $=$, $\le$, etc.) ou |\mathbin| (comme $+$, $×$, etc.). +Ce système est inspiré par l'environnement |{IEEEeqnarray}| de \pkg{IEEEtrantools}. + +\smallskip +La valeur initiale du paramètre |format| est, en fait, |rL|. \bigskip Par exemple, si on veut seulement une colonne alignée à gauche, on peut utiliser l'option |format=l|. @@ -492,7 +500,7 @@ Dans l'exemple suivant, on utilise cinq colonnes toutes centrées (l'environneme présenté p.~\pageref{DispWithArrows}). \begin{Verbatim} -\begin{DispWithArrows*}[~emphase#format = ccccc@, +\begin{DispWithArrows*}[~emphase#format = cCcCc@, wrap-lines, interline=1mm] k & \;\le\; & t & \;\le\; & k+1 \\ @@ -504,7 +512,7 @@ k & \;\le\; & t & \;\le\; & k+1 \\ \frac{1}{k+1} & \le & \ln(k+1)-\ln(k) & \le & \frac{1}{k} \end{DispWithArrows*} \end{Verbatim} -\begin{DispWithArrows*}[format = ccccc, +\begin{DispWithArrows*}[format = cCcCc, wrap-lines, interline=1mm] k & \;\le\; & t & \;\le\; & k+1 \\ @@ -2464,13 +2472,13 @@ E & \Longleftrightarrow \frac{(x+4)}3 + \frac{5x+3}5 = 7 \subsection{Boucle numérotée automatique} Supposons que nous voulions tracer une boucle avec des flèches numérotées. Dans ce but, il est -possible d'écrire une commande dédiée |\BoucleNumérotée| qui fera le travail quand elle +possible d'écrire une commande dédiée |\NumberedLoop| qui fera le travail quand elle sera utilisée dans le |code-after|. Dans l'exemple suivant, nous avons écrit cette commande avec |\NewDocumentCommand| de \pkg{xparse} et |\foreach| de \pkg{pgffor} (ces deux extensions sont chargées quand \pkg{witharrows} est chargé.). \begin{Verbatim} -\NewDocumentCommande \NombreedLoop {} +\NewDocumentCommande \NomberedLoop {} {\foreach \j dans {2,...,\WithArrowsNbLines} { \pgfmathtruncatemacro{\i}{\j-1} \Arrow[rr]{\i}{\j}{\i} } @@ -2484,7 +2492,7 @@ compteur). \bigskip \begin{Verbatim} -$\begin{WithArrows}[~emphase#code-after = \BoucleNumérotée@] +$\begin{WithArrows}[~emphase#code-after = \NumberedLoop@] a.\;& f \text{ est continue sur } E \\ b.\;& f \text{ est continue en } 0 \\ c.\;& f \text{ est bornée sur la sphère unité} \\ @@ -2495,14 +2503,14 @@ e.\;& f \text{ est lipschitzienne} \bigskip \begin{scope} -\NewDocumentCommand \BoucleNumérotée {} +\NewDocumentCommand \NumberedLoop {} {\foreach \j in {2,...,\WithArrowsNbLines} { \pgfmathtruncatemacro{\i}{\j-1} \Arrow[rr]{\i}{\j}{\i} } \Arrow[rr,xoffset=1cm,tikz=<-]{1}{\WithArrowsNbLines}{\WithArrowsNbLines}} -$\begin{WithArrows}[code-after = \BoucleNumérotée] +$\begin{WithArrows}[code-after = \NumberedLoop] a.\;& f \text{ est continue sur } E \\ b.\;& f \text{ est continue en } 0 \\ c.\;& f \text{ est bornée sur la sphère unité} \\ @@ -2523,7 +2531,7 @@ tikz-code = {\draw (~#1) to node {\footnotesize (~#3)} (~#2) ;} \WithArrowsOptions{tikz-code = {\draw (#1) to node {\footnotesize (#3)} (#2) ;}} -$\begin{WithArrows}[code-after = \BoucleNumérotée] +$\begin{WithArrows}[code-after = \NumberedLoop] a.\;& f \text{ est continue on } E \\ b.\;& f \text{ est continue dans } 0 \\ c.\;& f \text{ est bornée sur la sphère unité} \\ @@ -2537,7 +2545,17 @@ e.\;& f \text{ est lipschitzienne} \section*{Autre documentation} Le document |witharrows.pdf| (fourni avec l'extension \pkg{witharrows}) contient une traduction anglaise de la -documentation ici présente, ainsi que le code source commenté et un historique des versions. +documentation ici présente, ainsi que le code source commenté et un historique des versions. + + +\bigskip +Les versions successives du fichier |witharrows.sty| fournies par TeXLive sont disponibles sur le serveur +\textsc{svn} de TeXLive : + +{ +\small +\url{https:www.tug.org/svn/texlive/trunk/Master/texmf-dist/tex/latex/nicematrix/witharrows.sty} +} diff --git a/Master/texmf-dist/doc/generic/witharrows/witharrows.pdf b/Master/texmf-dist/doc/generic/witharrows/witharrows.pdf Binary files differindex 3d89c2d2429..7b350f06316 100644 --- a/Master/texmf-dist/doc/generic/witharrows/witharrows.pdf +++ b/Master/texmf-dist/doc/generic/witharrows/witharrows.pdf diff --git a/Master/texmf-dist/doc/generic/witharrows/witharrows.tex b/Master/texmf-dist/doc/generic/witharrows/witharrows.tex index 2b94910abee..3e806744d6e 100644 --- a/Master/texmf-dist/doc/generic/witharrows/witharrows.tex +++ b/Master/texmf-dist/doc/generic/witharrows/witharrows.tex @@ -18,8 +18,8 @@ %% and version 1.3 or later is part of all distributions of %% LaTeX version 2005/12/01 or later. %% -\def\myfileversion{2.5.1} -\def\myfiledate{2020/07/28} +\def\myfileversion{2.6} +\def\myfiledate{2020/09/08} \input tikz.tex \input expl3-generic.tex \usetikzlibrary{arrows.meta,bending} @@ -71,10 +71,19 @@ \sort_return_same: } } +\cs_new_protected:Npn \__witharrows_convert_to_str_seq:N #1 + { + \seq_clear:N \l_tmpa_seq + \seq_map_inline:Nn #1 + { + \seq_put_left:Nx \l_tmpa_seq { \tl_to_str:n { ##1 } } + } + \seq_set_eq:NN #1 \l_tmpa_seq + } \cs_new_protected:Npn \__witharrows_set_seq_of_str_from_clist:Nn #1 #2 { \seq_set_from_clist:Nn #1 { #2 } - \seq_set_map:NNn #1 #1 { \tl_to_str:n { ##1 } } + \__witharrows_convert_to_str_seq:N #1 } \cs_new_protected:Npn \__witharrows_save:N #1 { @@ -327,7 +336,7 @@ \tl_if_empty:nTF { #1 } { \__witharrows_error:n { Invalid~option~format } } { - \regex_match:nnTF { \A[rcl]*\Z } { #1 } + \regex_match:nnTF { \A[rclRCL]*\Z } { #1 } { \tl_set:Nn \l__witharrows_format_str { #1 } } { \__witharrows_error:n { Invalid~option~format } } } , @@ -592,7 +601,7 @@ \int_zero_new:N \l__witharrows_pos_of_arrow_int \int_zero_new:N \l__witharrows_jump_int \int_set:Nn \l__witharrows_jump_int 1 - \str_set:Nn \l__witharrows_format_str { rl } + \str_set:Nn \l__witharrows_format_str { rL } \skip_zero:N \l__witharrows_interline_skip \tl_clear_new:N \l__witharrows_code_before_tl \tl_clear_new:N \l__witharrows_code_after_tl @@ -612,7 +621,7 @@ { \seq_pop_right:NNTF \l__witharrows_format_seq \l__witharrows_type_col_str { - \use:x + \use:e { \int_gdecr:N \g__witharrows_col_int \__witharrows_construct_halign: @@ -621,21 +630,26 @@ \cs_set_eq:cN { \l__witharrows_command_name_str } \__witharrows_Arrow } \str_if_eq:VnT \l__witharrows_type_col_str { c } \hfil + \str_if_eq:VnT \l__witharrows_type_col_str { C } \hfil \str_if_eq:VnT \l__witharrows_type_col_str { r } \hfill + \str_if_eq:VnT \l__witharrows_type_col_str { R } \hfill \int_gincr:N \g__witharrows_col_int \int_gset:Nn \g__witharrows_static_col_int { \int_use:N \g__witharrows_col_int } \c_math_toggle_token - { - { } - \bool_if:NT \l__witharrows_displaystyle_bool \displaystyle - #### - } + \str_if_eq:VnT \l__witharrows_type_col_str { C } { { } } + \str_if_eq:VnT \l__witharrows_type_col_str { L } { { } } + \bool_if:NT \l__witharrows_displaystyle_bool \displaystyle + ## + \str_if_eq:VnT \l__witharrows_type_col_str { C } { { } } + \str_if_eq:VnT \l__witharrows_type_col_str { R } { { } } \c_math_toggle_token \int_compare:nNnTF \g__witharrows_col_int = \l__witharrows_nb_cols_int - { \__witharrows_construct_nodes: } + \__witharrows_construct_nodes: { \str_if_eq:VnT \l__witharrows_type_col_str { l } \hfil + \str_if_eq:VnT \l__witharrows_type_col_str { L } \hfil \str_if_eq:VnT \l__witharrows_type_col_str { c } \hfil + \str_if_eq:VnT \l__witharrows_type_col_str { C } \hfil \bool_if:NT \l__witharrows_in_DispWithArrows_bool { \tabskip = \c_zero_skip } & } diff --git a/Master/texmf-dist/source/generic/witharrows/witharrows.dtx b/Master/texmf-dist/source/generic/witharrows/witharrows.dtx index b32e5f62d81..79f46f5d697 100644 --- a/Master/texmf-dist/source/generic/witharrows/witharrows.dtx +++ b/Master/texmf-dist/source/generic/witharrows/witharrows.dtx @@ -15,8 +15,8 @@ % % \fi % \iffalse -\def\myfileversion{2.5.1} -\def\myfiledate{2020/07/28} +\def\myfileversion{2.6} +\def\myfiledate{2020/09/08} % % %<*batchfile> @@ -505,8 +505,18 @@ version 2005/12/01 or later. % So far, we have used the environment |{WithArrows}| with two columns. However, % it's possible to use the environment with an arbitrary number of columns with % the option |format|. The value given to this option is like the preamble of an -% environment |{array}|, that is to say a sequence of letters |r|, |c| and |l|. -% The initial value of the option |format| is, in fact, |rl|. +% environment |{array}|, that is to say a sequence of letters |r|, |c| and |l|, +% but also |R|, |C| and |L|. +% +% \smallskip +% \colorbox{yellow!50}{\textbf{New 2.6}}\enskip +% The letters |R|, |C| and |L| add empty groups |{}| which provide correct +% spaces when these columns contain symbols with the type |\mathrel| (such as +% $=$, $\leq$, etc.) or |\mathbin| (such as $+$, $\times$, etc.). This system is +% inspired by the environment |{IEEEeqnarray}| of the package \pkg{IEEEtrantools}. +% +% \smallskip +% The initial value of the parameter |format| is, in fact, |rL|. % % \bigskip % For exemple, if we want only one column left-aligned, we use the option |format=l|. @@ -529,7 +539,7 @@ version 2005/12/01 or later. % |{DispWithArrows*}| is presented p.~\pageref{DispWithArrows}). % % \begin{Verbatim} -% \begin{DispWithArrows*}[~emphase#format = ccccc@, +% \begin{DispWithArrows*}[~emphase#format = cCcCc@, % wrap-lines, % tikz = {align = flush left}, % interline=1mm] @@ -542,7 +552,7 @@ version 2005/12/01 or later. % \frac{1}{k+1} & \le & \ln(k+1)-\ln(k) & \le & \frac{1}{k} % \end{DispWithArrows*} % \end{Verbatim} -% \begin{DispWithArrows*}[format = ccccc, +% \begin{DispWithArrows*}[format = cCcCc, % wrap-lines, % tikz = {align = flush left}, % interline=1mm] @@ -1870,7 +1880,7 @@ version 2005/12/01 or later. % \interitem % \section{Advanced features} % -% \subsection{Utilisation with plain-TeX} +% \subsection{Use with plain-TeX} % \label{plain-TeX} % % The extension \pkg{witharrows} can be used with plain-TeX. In this case, the @@ -2300,7 +2310,7 @@ version 2005/12/01 or later. % % % \bigskip -% Example of utilisation: +% Example of use: % % \begin{Verbatim} % $\begin{WithArrows}[groups] @@ -2917,14 +2927,29 @@ version 2005/12/01 or later. % \end{macrocode} % % \bigskip -% The following command creates a sequence of strings (|str|) from a |clist|. Be -% careful: we use |\seq_set_map:NNn| and the name of that function will maybe -% change to |\eq_set_map_x:NNn|. +% The following command creates a sequence of strings (|str|) from a |clist|. +% +% +% The following command converts all the elements of a sequence (which are token +% lists) into strings. +% \begin{macrocode} +\cs_new_protected:Npn \@@_convert_to_str_seq:N #1 + { + \seq_clear:N \l_tmpa_seq + \seq_map_inline:Nn #1 + { + \seq_put_left:Nx \l_tmpa_seq { \tl_to_str:n { ##1 } } + } + \seq_set_eq:NN #1 \l_tmpa_seq + } +% \end{macrocode} +% +% The following command creates a sequence of strings (|str|) from a |clist|. % \begin{macrocode} \cs_new_protected:Npn \@@_set_seq_of_str_from_clist:Nn #1 #2 { \seq_set_from_clist:Nn #1 { #2 } - \seq_set_map:NNn #1 #1 { \tl_to_str:n { ##1 } } + \@@_convert_to_str_seq:N #1 } % \end{macrocode} % @@ -3192,7 +3217,7 @@ version 2005/12/01 or later. % We will also use a ``static'' version of the counter of columns, called % |\g_@@_static_col_int|. The value will be set directly in each cell of the % array by an instruction in the template of the |\halign|. The aim of this -% programmation is to try to detect some utilisation of |\omit| (which should be +% programmation is to try to detect some use of |\omit| (which should be % forbidden) in the cells of the |\halign|. % \begin{macrocode} \seq_new:N \g_@@_static_col_int_seq @@ -3618,7 +3643,7 @@ version 2005/12/01 or later. \tl_if_empty:nTF { #1 } { \@@_error:n { Invalid~option~format } } { - \regex_match:nnTF { \A[rcl]*\Z } { #1 } + \regex_match:nnTF { \A[rclRCL]*\Z } { #1 } { \tl_set:Nn \l_@@_format_str { #1 } } { \@@_error:n { Invalid~option~format } } } , @@ -4162,7 +4187,7 @@ version 2005/12/01 or later. % \end{macrocode} % % In the preamble of the |\halign|, there will be \emph{two} counters of the -% columns. The aim of this programmation is to detect the utilisation of a +% columns. The aim of this programmation is to detect the use of a % command |\omit| in a cell of the |\halign| (it should be forbidden). % For example, in the part of the preamble concerning the third column (if there % is a third column in the environment), we will have the following instructions : @@ -4223,7 +4248,7 @@ version 2005/12/01 or later. % The string |\l_@@_format_str| corresponds to the option |format|. Now, we set % the initial value for this option. % \begin{macrocode} - \str_set:Nn \l_@@_format_str { rl } + \str_set:Nn \l_@@_format_str { rL } % \end{macrocode} % % @@ -4370,8 +4395,8 @@ version 2005/12/01 or later. % stream of TeX. That means that the part of the preamble concerning the last % cell will be constructed first. % \item The function |\@@_construct_halign:| is recursive in order to treat -% succesively all the letters of the preamble. -% \item Each part of the preamble is created with a |\use:x| function. This +% successively all the letters of the preamble. +% \item Each part of the preamble is created with a |\use:e| function. This % expansion of the preamble gives the ability of controlling which parts of the % code will be expanded during the construction of the preamble (other parts % will be expanded and executed only during the execution of the |\halign|). @@ -4386,18 +4411,18 @@ version 2005/12/01 or later. \seq_pop_right:NNTF \l_@@_format_seq \l_@@_type_col_str { % \end{macrocode} -% Here is the |\use:x| which is fundamental: it will really construct the part +% Here is the |\use:e| which is fundamental: it will really construct the part % of the preamble corresponding to a column by expanding only some parts of the % following code. % \begin{macrocode} - \use:x + \use:e { % \end{macrocode} % Before the recursive call of |\@@_construct_halign:|, we decrease the integer % |\g_@@_col_bool|. But, during the construction of the column which is % constructed first (that is to say which is the last column of the |\halign|), % it is \emph{not} lowered because |\int_decr:N|, which is protected, won't be -% expanded by the |\use:x|. +% expanded by the |\use:e|. % % We begin the construction of a generic column. % \begin{macrocode} @@ -4409,7 +4434,7 @@ version 2005/12/01 or later. % We redefine the command |\Arrow| (or the name given to the corresponding % command by the option |command-name|) in each cell of the last column. % The braces around |\l_@@_command_name_str| are mandatory because -% |\l_@@_command_name_str| will be expanded by the |\use:x| and the command +% |\l_@@_command_name_str| will be expanded by the |\use:e| and the command % |\cs_set_eq:cN| must still be efficient during the execution of the |\halign|. % \begin{macrocode} \cs_set_eq:cN { \l_@@_command_name_str } \@@_Arrow @@ -4432,18 +4457,21 @@ version 2005/12/01 or later. %</LaTeX> } \str_if_eq:VnT \l_@@_type_col_str { c } \hfil + \str_if_eq:VnT \l_@@_type_col_str { C } \hfil \str_if_eq:VnT \l_@@_type_col_str { r } \hfill + \str_if_eq:VnT \l_@@_type_col_str { R } \hfill \int_gincr:N \g_@@_col_int \int_gset:Nn \g_@@_static_col_int { \int_use:N \g_@@_col_int } \c_math_toggle_token - { - { } - \bool_if:NT \l_@@_displaystyle_bool \displaystyle - #### - } + \str_if_eq:VnT \l_@@_type_col_str { C } { { } } + \str_if_eq:VnT \l_@@_type_col_str { L } { { } } + \bool_if:NT \l_@@_displaystyle_bool \displaystyle + ## + \str_if_eq:VnT \l_@@_type_col_str { C } { { } } + \str_if_eq:VnT \l_@@_type_col_str { R } { { } } \c_math_toggle_token \int_compare:nNnTF \g_@@_col_int = \l_@@_nb_cols_int - { \@@_construct_nodes: } + \@@_construct_nodes: { % \end{macrocode} % The following glue (|\hfil|) will be added only if we are not in the last cell @@ -4451,7 +4479,9 @@ version 2005/12/01 or later. % |\@@_construct_nodes:|). % \begin{macrocode} \str_if_eq:VnT \l_@@_type_col_str { l } \hfil + \str_if_eq:VnT \l_@@_type_col_str { L } \hfil \str_if_eq:VnT \l_@@_type_col_str { c } \hfil + \str_if_eq:VnT \l_@@_type_col_str { C } \hfil \bool_if:NT \l_@@_in_DispWithArrows_bool { \tabskip = \c_zero_skip } & } @@ -7681,6 +7711,13 @@ version 2005/12/01 or later. % % \section{History} % +% The successive versions of the file |witharrows.sty| provided by TeXLive are available on the +% \textsc{svn} server of TeXLive: +% +% { +% \small +% \url{https:www.tug.org/svn/texlive/trunk/Master/texmf-dist/tex/latex/witharrows/witharrows.sty} +% } % \subsection*{Changes between versions 1.0 and 1.1} % % Option for the command |\\| and option |interline| @@ -7887,6 +7924,10 @@ version 2005/12/01 or later. % % Correction of the erroneous programmation of the nodes aliases. % +% \subsection*{Changes between 2.5.1 and 2.6} +% +% The key |format| now support the letters |R|, |C| and |L|. +% % \PrintIndex % % \tableofcontents diff --git a/Master/texmf-dist/tex/generic/witharrows/witharrows.sty b/Master/texmf-dist/tex/generic/witharrows/witharrows.sty index 0edf18a42e3..9f49ebbca2e 100644 --- a/Master/texmf-dist/tex/generic/witharrows/witharrows.sty +++ b/Master/texmf-dist/tex/generic/witharrows/witharrows.sty @@ -18,8 +18,8 @@ %% and version 1.3 or later is part of all distributions of %% LaTeX version 2005/12/01 or later. %% -\def\myfileversion{2.5.1} -\def\myfiledate{2020/07/28} +\def\myfileversion{2.6} +\def\myfiledate{2020/09/08} \RequirePackage{tikz} \usetikzlibrary{arrows.meta,bending} \RequirePackage{l3keys2e} @@ -150,10 +150,19 @@ \sort_return_same: } } +\cs_new_protected:Npn \__witharrows_convert_to_str_seq:N #1 + { + \seq_clear:N \l_tmpa_seq + \seq_map_inline:Nn #1 + { + \seq_put_left:Nx \l_tmpa_seq { \tl_to_str:n { ##1 } } + } + \seq_set_eq:NN #1 \l_tmpa_seq + } \cs_new_protected:Npn \__witharrows_set_seq_of_str_from_clist:Nn #1 #2 { \seq_set_from_clist:Nn #1 { #2 } - \seq_set_map:NNn #1 #1 { \tl_to_str:n { ##1 } } + \__witharrows_convert_to_str_seq:N #1 } \cs_new_protected:Npn \__witharrows_save:N #1 { @@ -469,7 +478,7 @@ \tl_if_empty:nTF { #1 } { \__witharrows_error:n { Invalid~option~format } } { - \regex_match:nnTF { \A[rcl]*\Z } { #1 } + \regex_match:nnTF { \A[rclRCL]*\Z } { #1 } { \tl_set:Nn \l__witharrows_format_str { #1 } } { \__witharrows_error:n { Invalid~option~format } } } , @@ -727,7 +736,7 @@ \int_zero_new:N \l__witharrows_pos_of_arrow_int \int_zero_new:N \l__witharrows_jump_int \int_set:Nn \l__witharrows_jump_int 1 - \str_set:Nn \l__witharrows_format_str { rl } + \str_set:Nn \l__witharrows_format_str { rL } \seq_clear_new:N \l__witharrows_labels_seq \bool_set_false:N \l__witharrows_tag_next_line_bool \skip_zero:N \l__witharrows_interline_skip @@ -756,7 +765,7 @@ { \seq_pop_right:NNTF \l__witharrows_format_seq \l__witharrows_type_col_str { - \use:x + \use:e { \int_gdecr:N \g__witharrows_col_int \__witharrows_construct_halign: @@ -770,21 +779,26 @@ } } \str_if_eq:VnT \l__witharrows_type_col_str { c } \hfil + \str_if_eq:VnT \l__witharrows_type_col_str { C } \hfil \str_if_eq:VnT \l__witharrows_type_col_str { r } \hfill + \str_if_eq:VnT \l__witharrows_type_col_str { R } \hfill \int_gincr:N \g__witharrows_col_int \int_gset:Nn \g__witharrows_static_col_int { \int_use:N \g__witharrows_col_int } \c_math_toggle_token - { - { } - \bool_if:NT \l__witharrows_displaystyle_bool \displaystyle - #### - } + \str_if_eq:VnT \l__witharrows_type_col_str { C } { { } } + \str_if_eq:VnT \l__witharrows_type_col_str { L } { { } } + \bool_if:NT \l__witharrows_displaystyle_bool \displaystyle + ## + \str_if_eq:VnT \l__witharrows_type_col_str { C } { { } } + \str_if_eq:VnT \l__witharrows_type_col_str { R } { { } } \c_math_toggle_token \int_compare:nNnTF \g__witharrows_col_int = \l__witharrows_nb_cols_int - { \__witharrows_construct_nodes: } + \__witharrows_construct_nodes: { \str_if_eq:VnT \l__witharrows_type_col_str { l } \hfil + \str_if_eq:VnT \l__witharrows_type_col_str { L } \hfil \str_if_eq:VnT \l__witharrows_type_col_str { c } \hfil + \str_if_eq:VnT \l__witharrows_type_col_str { C } \hfil \bool_if:NT \l__witharrows_in_DispWithArrows_bool { \tabskip = \c_zero_skip } & } |