summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/nicematrix/nicematrix.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/nicematrix/nicematrix.dtx')
-rw-r--r--macros/latex/contrib/nicematrix/nicematrix.dtx524
1 files changed, 291 insertions, 233 deletions
diff --git a/macros/latex/contrib/nicematrix/nicematrix.dtx b/macros/latex/contrib/nicematrix/nicematrix.dtx
index f2ecb695bc..2f7bfdc597 100644
--- a/macros/latex/contrib/nicematrix/nicematrix.dtx
+++ b/macros/latex/contrib/nicematrix/nicematrix.dtx
@@ -15,8 +15,8 @@
%
% \fi
% \iffalse
-\def\myfileversion{6.0}
-\def\myfiledate{2021/08/10}
+\def\myfileversion{6.1}
+\def\myfiledate{2021/08/20}
%
%
%<*batchfile>
@@ -65,7 +65,7 @@ version 2005/12/01 or later.
\usepackage{titlesec}
\titlespacing*{\section}{0pt}{6.5ex plus 1ex minus .2ex}{4.3ex plus .2ex}
\titlespacing*{\subsection}{0pt}{4.5ex plus 1ex minus .2ex}{2ex plus .2ex}
-\usepackage{footnotehyper}
+\usepackage[hyperfootnotes=false]{footnotehyper}
\usepackage{varwidth}
\def\LetterAt{@}
\parindent 0pt
@@ -165,7 +165,7 @@ version 2005/12/01 or later.
% can upload the file |nicematrix.sty| in the repertory of your
% project in order to take full advantage of the latest version de
% \pkg{nicematrix}.\footnote{The latest version of the file
-% \verb|nicematrix.sty| may be downloaded from the \textsc{svn} server of
+% |nicematrix.sty| may be downloaded from the \textsc{svn} server of
% TeXLive:\newline
% \small
% \url{https:www.tug.org/svn/texlive/trunk/Master/texmf-dist/tex/latex/nicematrix/nicematrix.sty}}
@@ -216,7 +216,7 @@ version 2005/12/01 or later.
% \begin{tabular}{llll}
% \{NiceTabular\} & \{NiceArray\} & \{NiceMatrix\} \\
% \{NiceTabular*\} & \{pNiceArray\} & \{pNiceMatrix\} \\
-% & \{bNiceArray\} & \{bNiceMatrix\} \\
+% \{NiceTabularX\} & \{bNiceArray\} & \{bNiceMatrix\} \\
% & \{BNiceArray\} & \{BNiceMatrix\} \\
% & \{vNiceArray\} & \{vNiceMatrix\} \\
% & \{VNiceArray\} & \{VNiceMatrix\}
@@ -241,6 +241,12 @@ version 2005/12/01 or later.
% \pkg{nicematrix}): |{matrix}|, |{pmatrix}|, etc.
%
% \medskip
+% L'environnement |{NiceTabularX}| is similar to the environment |{tabularx}|
+% from the eponymous package.\footnote{In fact, it's possible to use directly the
+% |X| columns in the environnement |{NiceTabular}| (and the required
+% width for the tabular is fixed by the key |width|): cf. p.~\pageref{X-columns}}.
+%
+% \medskip
% \textbf{It's recommended to use primarily the classical environments and to use the
% environments of \pkg{nicematrix} only when some feature provided by these
% environments is used (this will save memory).}
@@ -412,7 +418,7 @@ version 2005/12/01 or later.
% \bigskip
% It's also possible to use the key |baseline| to align a matrix on an
% horizontal rule (drawn by |\hline|). In this aim, one should give the value
-% |line-|\textsl{i} where \textsl{i} is the number of the row following the
+% |line-|\textsl{i} where \textsl{i} is the number of the row \emph{following} the
% horizontal rule.
%
% \smallskip
@@ -422,7 +428,7 @@ version 2005/12/01 or later.
%
% \smallskip
% \begin{BVerbatim}[baseline=c,boxwidth=9cm]
-% $A=\begin{pNiceArray}{cc|cc}[baseline=line-3]
+% $A=\begin{pNiceArray}{cc|cc}~emphase#[baseline=line-3]@
% \dfrac1A & \dfrac1B & 0 & 0 \\
% \dfrac1C & \dfrac1D & 0 & 0 \\
% \hline
@@ -449,14 +455,14 @@ version 2005/12/01 or later.
%
% In the environments of \pkg{nicematrix}, it's possible to use the command
% |\Block| in order to place an element in the center of a rectangle of merged
-% cells of the array.\footnote{The spaces after a command \verb|\Block| are deleted.}
+% cells of the array.\footnote{The spaces after a command |\Block| are deleted.}
%
% The command |\Block| must be used in the upper leftmost cell of the array with
% two arguments.
%
% \begin{itemize}
% \item The first argument is the size of the block with the syntax
-% $i$\verb|-|$j$ where $i$ is the number of rows of the block and $j$ its number
+% $i$|-|$j$ where $i$ is the number of rows of the block and $j$ its number
% of columns.
%
% If this argument is empty, its default
@@ -689,7 +695,7 @@ version 2005/12/01 or later.
% \item It's possible do draw a frame around the cell with the key |draw| of the
% command |\Block| and to fill the background with rounded corners with the keys
% |fill| and |rounded-corners|.\footnote{If one simply wishes to color the
-% background of a unique celle, there is no point using the command |\Block|:
+% background of a unique cell, there is no point using the command |\Block|:
% it's possible to use the command |\cellcolor| (when the key |colortbl-like| is
% used).}
%
@@ -767,10 +773,10 @@ version 2005/12/01 or later.
% \end{center}
%
% \medskip
-% \colorbox{yellow!50}{\bfseries New 5.17}\enskip In order to have an horizontal
-% positionning of the content of the block computed with the limits of the
-% columns of the LaTeX array (and not with the contents of those columns), one
-% may use the key |L|, |R| and |C| of the command |\Block|.
+% In order to have an horizontal positionning of the content of the block
+% computed with the limits of the columns of the LaTeX array (and not with the
+% contents of those columns), one may use the key |L|, |R| and |C| of the
+% command |\Block|.
%
%
% \section{The rules}
@@ -965,7 +971,7 @@ version 2005/12/01 or later.
% \begin{itemize}
% \item These blocks are:
% \begin{itemize}
-% \item the blocks created by the command |\Block|\footnote{And also the command \verb|\multicolumn| but
+% \item the blocks created by the command |\Block|\footnote{And also the command |\multicolumn| but
% it's recommended to use instead |\Block| in the environments of
% \pkg{nicematrix}.} presented
% p.~\pageref{Block};
@@ -1032,9 +1038,8 @@ version 2005/12/01 or later.
% \end{center}
%
% \bigskip
-% \colorbox{yellow!50}{\bfseries New 5.17}\enskip The key
-% |hvlines-except-borders| is similar to the key |hvlines| but does not draw the
-% rules on the horizontal and vertical borders of the array.
+% The key |hvlines-except-borders| is similar to the key |hvlines| but does not
+% draw the rules on the horizontal and vertical borders of the array.
%
% \subsubsection{The (empty) corners}
%
@@ -1306,7 +1311,7 @@ version 2005/12/01 or later.
% New commands are available in that |\CodeBefore|: |\cellcolor|,
% |\rectanglecolor|, |\rowcolor|, |\columncolor|, |\rowcolors|,
% |\rowlistcolors|, |\chessboardcolors| and |arraycolor|.\footnote{Remark that,
-% in the \verb|\CodeBefore|, PGF/Tikz nodes of the form ``\verb+(i-|j)+'' are
+% in the |\CodeBefore|, PGF/Tikz nodes of the form ``\verb+(i-|j)+'' are
% also available to indicate the position to the potential rules:
% cf.~p.~\pageref{nodes-i}.}
% \label{code-before}
@@ -1768,23 +1773,34 @@ version 2005/12/01 or later.
%
% \medskip
% That command also takes in as optional argument (between square brackets)
-% a list of key-value pairs. The available keys are |cell-space-top-limit|,
-% |cell-space-bottom-limit| and |cell-space-limits| with the same meaning that
-% the corresponding global keys (cf. p.~\pageref{cell-space}).
-%
+% a list of key-value pairs.
+% \begin{itemize}
+% \item The keys |cell-space-top-limit|, |cell-space-bottom-limit| and
+% |cell-space-limits| are available with the same meaning that the corresponding
+% global keys (cf. p.~\pageref{cell-space}).
+% \item \colorbox{yellow!50}{\bfseries New 6.1}\enskip The key |color| sets the
+% color of the text.\footnote{The key |color| uses the command
+% |\color| but inserts also an instruction |\leavevmode| before. This
+% instruction prevents a extra vertical space in the cells which belong to
+% columns of type |p|, |b|, |m| and |X| (which start in
+% vertical mode).}
+% \end{itemize}
+%
% \medskip
% \begin{BVerbatim}[boxwidth=11cm,baseline=c]
-% \begin{NiceTabular}{cccc}[hlines,colortbl-like]
+% \begin{NiceTabular}{cccc}[colortbl-like]
+% \hline
% ~emphase#\RowStyle[cell-space-limits=3pt]{\rotate}@
% first & second & third & fourth \\
-% \rowcolor{blue!50}~emphase#\RowStyle{\color{white}\sffamily}@
+% \rowcolor{blue!50}~emphase#\RowStyle[color=white]{\sffamily}@
% 1 & 2 & 3 & 4 \\
% \end{NiceTabular}
% \end{BVerbatim}
-% \begin{NiceTabular}{cccc}[hlines,colortbl-like]
+% \begin{NiceTabular}{cccc}[colortbl-like]
+% \hline
% \RowStyle[cell-space-limits=3pt]{\rotate}
% first & second & third & fourth \\
-% \rowcolor{blue!50}\RowStyle{\color{white}\sffamily}
+% \rowcolor{blue!50}\RowStyle[color=white]{\sffamily}
% 1 & 2 & 3 & 4 \\
% \end{NiceTabular}
%
@@ -1926,6 +1942,7 @@ version 2005/12/01 or later.
%
% \subsection{The columns X}
%
+% \label{X-columns}
% \colorbox{yellow!50}{\textbf{New 6.0}}
%
% The environment |{NiceTabular}| provides |X| columns similar to those provided
@@ -2247,7 +2264,7 @@ version 2005/12/01 or later.
%
%
% Consider the following matrix composed classicaly with the environment
-% \verb|{pmatrix}| of \pkg{amsmath}.\par\nobreak
+% |{pmatrix}| of \pkg{amsmath}.\par\nobreak
%
% \medskip
% \begin{BVerbatim}[baseline=c,boxwidth=10cm]
@@ -2263,7 +2280,7 @@ version 2005/12/01 or later.
%
%
% \bigskip
-% If we add \verb|\ldots| instructions in the second row, the geometry of the
+% If we add |\ldots| instructions in the second row, the geometry of the
% matrix is modified.\par\nobreak
%
% \medskip
@@ -2279,8 +2296,8 @@ version 2005/12/01 or later.
% \end{pmatrix}$
%
% \bigskip
-% By default, with \pkg{nicematrix}, if we replace \verb|{pmatrix}| by
-% \verb|{pNiceMatrix}| and \verb|\ldots| by \verb|\Ldots|, the geometry of the matrix is not
+% By default, with \pkg{nicematrix}, if we replace |{pmatrix}| by
+% |{pNiceMatrix}| and |\ldots| by |\Ldots|, the geometry of the matrix is not
% changed.\par\nobreak
%
% \medskip
@@ -2298,7 +2315,7 @@ version 2005/12/01 or later.
% \bigskip
% However, one may prefer the geometry of the first matrix $A$ and would like to
% have such a geometry with a dotted line in the second row. It's possible by
-% using the option \verb|nullify-dots| (and only one instruction \verb|\Ldots| is
+% using the option |nullify-dots| (and only one instruction |\Ldots| is
% necessary).\par\nobreak
%
% \medskip
@@ -2369,7 +2386,7 @@ version 2005/12/01 or later.
% \medskip
% Remark: Unlike the command |\hdotsfor| of \pkg{amsmath}, the command
% |\Hdotsfor| may be used even when the package \pkg{colortbl}\footnote{We
-% recall that when \pkg{xcolor} is loaded with the option \verb|table|, the
+% recall that when \pkg{xcolor} is loaded with the option |table|, the
% package \pkg{colortbl} is loaded.} is loaded (but you might have problem if
% you use |\rowcolor| on the same row as |\Hdotsfor|).
%
@@ -2591,8 +2608,8 @@ version 2005/12/01 or later.
% regarding the rules (the rules specified by the specifier \verb+|+ in the
% preamble, by the command |\Hline| and by the keys |hlines|, |vlines|,
% |hvlines| and |hvlines-except-borders| are not drawn within the
-% blocks).\footnote{On the other side, the command \verb|\line| in the
-% \verb|\CodeAfter| (cf.~p.~\pageref{line-in-code-after}) does \emph{not} create
+% blocks).\footnote{On the other side, the command |\line| in the
+% |\CodeAfter| (cf.~p.~\pageref{line-in-code-after}) does \emph{not} create
% block.}
%
% \medskip
@@ -2877,7 +2894,7 @@ version 2005/12/01 or later.
%
% \bigskip
% It's also possible to specify some delimiters\footnote{Those delimiters are
-% \verb|(|, \verb|[|, |\{| and the closing ones. Of course, it's also
+% |(|, |[|, |\{| and the closing ones. Of course, it's also
% possible to put \verb+|+ and \verb+||+ in the preamble of the environement.}
% by placing them in the preamble of the environment (for the environments with
% a preamble: |{NiceArray}|, |{pNiceArray}|, etc.). This syntax is inspired by
@@ -3294,7 +3311,7 @@ version 2005/12/01 or later.
% rotation of 90° in the direct sens.
%
% In the following command, we use that command in the
-% |code-for-first-row|.\footnote{It can also be used in \verb|RowStyle|
+% |code-for-first-row|.\footnote{It can also be used in |\RowStyle|
% (cf.~p.~\pageref{RowStyle}.}
%
%\bigskip
@@ -3393,9 +3410,9 @@ version 2005/12/01 or later.
% \medskip
% In fact, the option |small| corresponds to the following tuning:
% \begin{itemize}
-% \item the cells of the array are composed with \verb|\scriptstyle|;
-% \item \verb|\arraystretch| is set to $0.47$;
-% \item \verb|\arraycolsep| is set to $1.45$~pt;
+% \item the cells of the array are composed with |\scriptstyle|;
+% \item |\arraystretch| is set to $0.47$;
+% \item |\arraycolsep| is set to $1.45$~pt;
% \item the characteristics of the dotted lines are also modified.
% \end{itemize}
%
@@ -4336,7 +4353,7 @@ version 2005/12/01 or later.
%
% \begin{Verbatim}
% \ttfamily \small
-% \begin{NiceTabular}{m{4.5cm}m{4.5cm}m{4.5cm}}[hvlines]
+% \begin{NiceTabular}{X[m]X[m]X[m]}[hvlines,cell-space-limits=3pt]
% \Block[~emphase#tikz={pattern=grid,pattern color=lightgray}@]{}
% {pattern = grid,\\ pattern color = lightgray}
% & \Block[~emphase#tikz={pattern = north west lines,pattern color=blue}@]{}
@@ -4352,7 +4369,7 @@ version 2005/12/01 or later.
%
% \begin{center}
% \ttfamily \small
-% \begin{NiceTabular}{m{4.5cm}m{4.5cm}m{4.5cm}}[hvlines]
+% \begin{NiceTabular}{X[m]X[m]X[m]}[hvlines,cell-space-limits=3pt]
% \Block[tikz={pattern=grid,pattern color=lightgray}]{}
% {pattern = grid,\\ pattern color = lightgray}
% & \Block[tikz={pattern = north west lines,pattern color=blue}]{}
@@ -5528,52 +5545,18 @@ version 2005/12/01 or later.
\bool_if:nTF { ! \c_@@_siunitx_loaded_bool }
{ \cs_set_eq:NN \@@_renew_NC@rewrite@S: \prg_do_nothing: }
{
-% \end{macrocode}
-% For version of \pkg{siunitx} at least equal to 3.0, the adaptation is different
-% from previous ones. We test the version of \pkg{siunitx} by the existence of the
-% control sequence |\siunitx_cell_begin:w|.
-% \begin{macrocode}
- \cs_if_exist:NTF \siunitx_cell_begin:w
+ \cs_new_protected:Npn \@@_renew_NC@rewrite@S:
{
- \cs_new_protected:Npn \@@_renew_NC@rewrite@S:
+ \renewcommand*{\NC@rewrite@S}[1][]
{
- \renewcommand*{\NC@rewrite@S}[1][]
- {
- \@temptokena \exp_after:wN
- {
- \tex_the:D \@temptokena
- > {
- \@@_Cell:
- \keys_set:nn { siunitx } { ##1 }
- \siunitx_cell_begin:w
- }
-% \end{macrocode}
-% |\@@_true_c:| will be replaced statically by |c| at the end of the construction
-% of the preamble.
-% \begin{macrocode}
- \@@_true_c:
- < { \siunitx_cell_end: \@@_end_Cell: }
- }
- \NC@find
- }
+% \end{macrocode}
+% |\@temptokena| is a toks (not supported by \pkg{expl3}).
+% \begin{macrocode}
+ \@temptokena \exp_after:wN
+ { \tex_the:D \@temptokena \@@_S: [ ##1 ] }
+ \NC@find
}
- }
- {
- \cs_new_protected:Npn \@@_renew_NC@rewrite@S:
- {
- \renewcommand*{\NC@rewrite@S}[1][]
- {
- \@temptokena \exp_after:wN
- {
- \tex_the:D \@temptokena
- > { \@@_Cell: \c_@@_table_collect_begin_tl S {##1} }
- \@@_true_c:
- < { \c_@@_table_print_tl \@@_end_Cell: }
- }
- \NC@find
- }
- }
- }
+ }
}
}
% \end{macrocode}
@@ -6002,10 +5985,11 @@ version 2005/12/01 or later.
% \begin{macrocode}
\seq_new:N \g_@@_blocks_seq
% \end{macrocode}
-% We also manage a sequence of the \emph{positions} of the blocks. Of course,
-% it's redundant with the previous sequence, but it's for efficiency. In that
+% We also manage a sequence of the \emph{positions} of the blocks. In that
% sequence, each block is represented by only the four first components:
-% |{|\textsl{imin}|}{|\textsl{jmin}|}{|\textsl{imax}|}{|\textsl{jmax}|}|.
+% |{|\textsl{imin}|}{|\textsl{jmin}|}{|\textsl{imax}|}{|\textsl{jmax}|}|. A
+% block with the key |hvlines| won't appear in that sequence (otherwise, the
+% lines in that block would not be drawn!).
% \begin{macrocode}
\seq_new:N \g_@@_pos_of_blocks_seq
% \end{macrocode}
@@ -6038,9 +6022,9 @@ version 2005/12/01 or later.
% \end{macrocode}
%
% \medskip
-% If the user has used the key |corners| (or the key |hvlines-except-corners|),
-% all the cells which are in an (empty) corner will be stored in the following
-% sequence.
+% If the user has used the key |corners| (or the key |hvlines-except-corners|,
+% even though that key is deprecated), all the cells which are in an (empty)
+% corner will be stored in the following sequence.
% \begin{macrocode}
\seq_new:N \l_@@_corners_cells_seq
% \end{macrocode}
@@ -7293,13 +7277,13 @@ version 2005/12/01 or later.
% \bigskip
% \subsection*{Important code used by \{NiceArrayWithDelims\} }
%
-% The pseudo-environment |\@@_Cell:|--|\@@_end_Cell:| will be used to format the
+% The pseudo-environment |\@@_cell_begin:w|--|\@@_cell_end:| will be used to format the
% cells of the array. In the code, the affectations are global because this
% pseudo-environment will be used in the cells of a |\halign| (via an
% environment |{array}|).
%
% \begin{macrocode}
-\cs_new_protected:Npn \@@_Cell:
+\cs_new_protected:Npn \@@_cell_begin:w
{
% \end{macrocode}
% The token list |\g_@@_post_action_cell_tl| will be set during the
@@ -7328,7 +7312,7 @@ version 2005/12/01 or later.
% \end{macrocode}
% The content of the cell is composed in the box |\l_@@_cell_box| because we want
% to compute some dimensions of the box. The |\hbox_set_end:| corresponding to
-% this |\hbox_set:Nw| will be in the |\@@_end_Cell:| (and the potential
+% this |\hbox_set:Nw| will be in the |\@@_cell_end:| (and the potential
% |\c_math_toggle_token| also).
% \begin{macrocode}
\hbox_set:Nw \l_@@_cell_box
@@ -7462,7 +7446,7 @@ version 2005/12/01 or later.
% \end{macrocode}
%
% \begin{macrocode}
-\cs_new_protected:Npn \@@_end_Cell:
+\cs_new_protected:Npn \@@_cell_end:
{
\@@_math_toggle_token:
\hbox_set_end:
@@ -7644,9 +7628,9 @@ version 2005/12/01 or later.
% \smallskip
% \begin{scope}
% \color{gray}
-% \verb|\@@_draw_Cdots:nnn {2}{2}{}|
+% |\@@_draw_Cdots:nnn {2}{2}{}|
%
-% \verb|\@@_draw_Cdots:nnn {3}{2}{color=red}|
+% |\@@_draw_Cdots:nnn {3}{2}{color=red}|
% \end{scope}
%
%
@@ -7858,6 +7842,10 @@ version 2005/12/01 or later.
\cs_new_protected:Npn \@@_pre_array_ii:
{
% \end{macrocode}
+% The number of letters |X| in the preamble of the array.
+% \begin{macrocode}
+ \int_gzero:N \g_@@_total_X_weight_int
+% \end{macrocode}
% If \pkg{booktabs} is loaded, we have to patch the macro |\@BTnormal| which is
% a macro of \pkg{booktabs}. The macro |\@BTnormal| draws an horizontal rule but
% it occurs after a vertical skip done by a low level TeX command. When this
@@ -8028,7 +8016,7 @@ version 2005/12/01 or later.
% The counter |\c@jCol| will be used to count the columns of the array.
% Since we want to know the total number of columns of the matrix, we also
% create a counter |\g_@@_col_total_int|. These counters are updated in the
-% command |\@@_Cell:| executed at the beginning of each cell.
+% command |\@@_cell_begin:w| executed at the beginning of each cell.
% \begin{macrocode}
\int_gzero_new:N \g_@@_col_total_int
% \end{macrocode}
@@ -8104,7 +8092,7 @@ version 2005/12/01 or later.
% \end{macrocode}
%
% \bigskip
-% If there is a exterior row, we patch a command used in |\@@_Cell:| in order to
+% If there is a exterior row, we patch a command used in |\@@_cell_begin:w| in order to
% keep track of some dimensions needed to the construction of that ``last row''.
% \begin{macrocode}
\int_compare:nNnT \l_@@_last_row_int > { -2 }
@@ -8252,6 +8240,13 @@ version 2005/12/01 or later.
cell-space-top-limit = #1 ,
cell-space-bottom-limit = #1 ,
} ,
+ color .code:n =
+ {
+ \leavevmode \color { #1 }
+ \tl_gput_right:Nn \g_@@_row_style_tl
+ { \leavevmode \color { #1 } }
+ } ,
+ color .value_required:n = true ,
unknown .code:n = \@@_error:n { Unknown~key~for~RowStyle }
}
% \end{macrocode}
@@ -8276,7 +8271,7 @@ version 2005/12/01 or later.
{
% \end{macrocode}
% First, we give values to the LaTeX counters |iRow| and |jCol|. We remind that,
-% in the |code-before| (and in the |\CodeAfter|) they represent the numbers of
+% in the |\CodeBefore| (and in the |\CodeAfter|) they represent the numbers of
% rows and columns of the array (without the potential last row and last
% column). The value of |\g_@@_row_total_int| is the number of the last row
% (with potentially a last exterior row) and |\g_@@_col_total_int| is the number
@@ -8550,8 +8545,8 @@ version 2005/12/01 or later.
%
% The sequence |\g_@@_blocks_seq| will contain the carateristics of the blocks
% (specified by |\Block|) of the array. The sequence |\g_@@_pos_of_blocks_seq|
-% will contain only the position of the blocks. Of course, this is redundant but
-% it's for efficiency.
+% will contain only the position of the blocks (except the blocks with the key
+% |hvlines|).
% \begin{macrocode}
\seq_gclear:N \g_@@_blocks_seq
\seq_gclear:N \g_@@_pos_of_blocks_seq
@@ -8605,15 +8600,16 @@ version 2005/12/01 or later.
% \begin{macrocode}
\tl_if_empty:NF \l_@@_rules_color_tl
{ \exp_after:wN \@@_set_CT@arc@: \l_@@_rules_color_tl \q_stop }
-% \bigskip
% \end{macrocode}
+%
+% \bigskip
% The argument |#6| is the last argument of |{NiceArrayWithDelims}|. With that
% argument of type ``|t \CodeBefore|'', we test whether there is the keyword
-% |\CodeBefore| at the beginning of the environment. If that keyword is present,
-% we have now to extract all the content between that keyword |\CodeBefore| and
-% the (other) keyword |\Body|. It's the job that will do the command
-% |\@@_pre_array_i:w|. After that job, the command |\@@_pre_array_i:w| will go
-% on with |\@@_pre_array:|.
+% |\CodeBefore| at the beginning of the body of the environment. If that keyword
+% is present, we have now to extract all the content between that keyword
+% |\CodeBefore| and the (other) keyword |\Body|. It's the job that will do the
+% command |\@@_pre_array_i:w|. After that job, the command |\@@_pre_array_i:w|
+% will go on with |\@@_pre_array:|.
% \begin{macrocode}
\IfBooleanTF { #6 } \@@_pre_array_i:w \@@_pre_array:
}
@@ -8644,25 +8640,34 @@ version 2005/12/01 or later.
% \bigskip
% Now, if there is at least one |X|-column in the environment, we compute the
% width that those columns will have (in the next compilation). In fact,
-% |l_@@_X_columns_dim| will the the width of a column of weight $1$. For a
+% |l_@@_X_columns_dim| will be the width of a column of weight $1$. For a
% |X|-column of weight~$n$, the width will be |l_@@_X_columns_dim| multiplied
% by~$n$.
% \begin{macrocode}
\int_compare:nNnT \g_@@_total_X_weight_int > 0
{
- \bool_if:NTF \l_@@_X_columns_aux_bool
- { \dim_set_eq:NN \l_tmpa_dim \l_@@_X_columns_dim }
- {
- \dim_set:Nn \l_tmpa_dim
- {
- ( \l_@@_width_dim - \box_wd:N \l_@@_the_array_box )
- / \int_use:N \g_@@_total_X_weight_int
- }
- }
\tl_gput_right:Nx \g_@@_aux_tl
{
\bool_set_true:N \l_@@_X_columns_aux_bool
- \dim_set:Nn \l_@@_X_columns_dim { \dim_use:N \l_tmpa_dim }
+ \dim_set:Nn \l_@@_X_columns_dim
+ {
+ \dim_compare:nNnTF
+ {
+ \dim_abs:n
+ { \l_@@_width_dim - \box_wd:N \l_@@_the_array_box }
+ }
+ <
+ { 0.001 pt }
+ { \dim_use:N \l_@@_X_columns_dim }
+ {
+ \dim_eval:n
+ {
+ ( \l_@@_width_dim - \box_wd:N \l_@@_the_array_box )
+ / \int_use:N \g_@@_total_X_weight_int
+ + \l_@@_X_columns_dim
+ }
+ }
+ }
}
}
% \end{macrocode}
@@ -8959,10 +8964,6 @@ version 2005/12/01 or later.
}
}
% \end{macrocode}
-% The number of letters |X| in the preamble of the array.
-% \begin{macrocode}
- \int_gzero:N \g_@@_total_X_weight_int
-% \end{macrocode}
% The sequence |\g_@@_cols_vlsim_seq| will contain the numbers of the columns
% where you will to have to draw vertical lines in the potential sub-matrices
% (hence the name |vlism|).
@@ -9075,7 +9076,7 @@ version 2005/12/01 or later.
m { \@@_patch_preamble_iv:n #1 }
\@@_w: { \@@_patch_preamble_v:nnnn { } #1 }
\@@_W: { \@@_patch_preamble_v:nnnn { \cs_set_eq:NN \hss \hfil } #1 }
- \@@_true_c: { \@@_patch_preamble_vi:n #1 }
+ \@@_S: { \@@_patch_preamble_vi:n }
( { \@@_patch_preamble_vii:nn #1 }
[ { \@@_patch_preamble_vii:nn #1 }
\{ { \@@_patch_preamble_vii:nn #1 }
@@ -9119,9 +9120,9 @@ version 2005/12/01 or later.
{
\tl_gput_right:Nn \g_@@_preamble_tl
{
- > { \@@_Cell: \str_set:Nn \l_@@_hpos_cell_str { #1 } }
+ > { \@@_cell_begin:w \str_set:Nn \l_@@_hpos_cell_str { #1 } }
#1
- < \@@_end_Cell:
+ < \@@_cell_end:
}
% \end{macrocode}
%
@@ -9177,10 +9178,12 @@ version 2005/12/01 or later.
}
}
\tl_gput_right:Nx \g_@@_internal_code_after_tl
- { \@@_vline:nn { \@@_succ:n \c@jCol } { \int_use:N \l_tmpa_int } }
+ {
+ \@@_vline:nnnn
+ { \@@_succ:n \c@jCol } { \int_use:N \l_tmpa_int } { 1 } { }
+ }
\int_zero:N \l_tmpa_int
- \str_if_eq:nnT { #1 } { \q_stop }
- { \bool_gset_true:N \g_tmpb_bool }
+ \str_if_eq:nnT { #1 } { \q_stop } { \bool_gset_true:N \g_tmpb_bool }
\@@_patch_preamble:n #1
}
}
@@ -9204,13 +9207,15 @@ version 2005/12/01 or later.
c .value_forbidden:n = true ,
l .code:n = \str_set:Nn \l_@@_hpos_col_str { l } ,
l .value_forbidden:n = true ,
+ si .code:n = \str_set:Nn \l_@@_hpos_col_str { si } ,
+ si .value_forbidden:n = true ,
p .code:n = \str_set:Nn \l_@@_vpos_col_str { p } ,
p .value_forbidden:n = true ,
t .meta:n = p ,
m .code:n = \str_set:Nn \l_@@_vpos_col_str { m } ,
m .value_forbidden:n = true ,
b .code:n = \str_set:Nn \l_@@_vpos_col_str { b } ,
- b .value_forbidden:n = true
+ b .value_forbidden:n = true ,
}
% \end{macrocode}
%
@@ -9269,19 +9274,22 @@ version 2005/12/01 or later.
{
\use:x
{
- \@@_patch_preamble_iv_v:nnnn
+ \@@_patch_preamble_iv_v:nnnnnn
{ \str_if_eq:VnTF \l_@@_vpos_col_str { p } { t } { b } }
{ \dim_eval:n { #1 } }
{
% \end{macrocode}
% The parameter |\l_@@_hpos_col_str| (as |\l_@@_vpos_col_str|) exists only
-% during the contruction of the preamble. During the composition of the array
+% during the construction of the preamble. During the composition of the array
% itself, you will have, in each cell, the parameter |\l_@@_hpos_cell_str| which
-% will provide
+% will provide the horizontal alignment of the column to which belongs the cell.
% \begin{macrocode}
\str_if_eq:VnTF \l_@@_hpos_col_str j
{ \str_set:Nn \exp_not:N \l_@@_hpos_cell_str { c } }
- { \str_set:Nn \exp_not:N \l_@@_hpos_cell_str \l_@@_hpos_col_str }
+ {
+ \str_set:Nn \exp_not:N \l_@@_hpos_cell_str
+ { \l_@@_hpos_col_str }
+ }
\str_case:Vn \l_@@_hpos_col_str
{
c { \exp_not:N \centering }
@@ -9290,6 +9298,8 @@ version 2005/12/01 or later.
}
}
{ \str_if_eq:VnT \l_@@_vpos_col_str { m } \@@_center_cell_box: }
+ { \str_if_eq:VnT \l_@@_hpos_col_str { si } \siunitx_cell_begin:w }
+ { \str_if_eq:VnT \l_@@_hpos_col_str { si } \siunitx_cell_end: }
}
% \end{macrocode}
%
@@ -9313,8 +9323,12 @@ version 2005/12/01 or later.
%
% |#4| is an extra-code which contains |\l_@@_center_cell_box| (when the column
% is a |m| column) or nothing (in the other cases).
+%
+% |#5| is a code put just before the |c|.
+%
+% |#6| is a code put just after the |c|.
% \begin{macrocode}
-\cs_new_protected:Npn \@@_patch_preamble_iv_v:nnnn #1 #2 #3 #4
+\cs_new_protected:Npn \@@_patch_preamble_iv_v:nnnnnn #1 #2 #3 #4 #5 #6
{
\tl_gput_right:Nn \g_@@_preamble_tl
{
@@ -9325,7 +9339,7 @@ version 2005/12/01 or later.
% mono-column blocks.
% \begin{macrocode}
\dim_set:Nn \l_@@_col_width_dim { #2 }
- \@@_Cell:
+ \@@_cell_begin:w
\begin { minipage } [ #1 ] { #2 }
% \end{macrocode}
% The following lines have been taken from |array.sty|.
@@ -9342,14 +9356,14 @@ version 2005/12/01 or later.
#3
% \end{macrocode}
% The following code is to allow something like |\centering| in |\RowStyle|.
-% However, there is extra vertical space if |\color{...}| is used in
-% |\RowStyle| (we should try to add a key |color| to the command |\RowStyle|.
% \begin{macrocode}
\g_@@_row_style_tl
\arraybackslash
+ #5
}
c
< {
+ #6
% \end{macrocode}
% The following line has been taken from |array.sty|.
% \begin{macrocode}
@@ -9360,7 +9374,7 @@ version 2005/12/01 or later.
% |\@@_center_cell_box:| (see just below).
% \begin{macrocode}
#4
- \@@_end_Cell:
+ \@@_cell_end:
}
}
}
@@ -9417,12 +9431,12 @@ version 2005/12/01 or later.
% \begin{macrocode}
\dim_set:Nn \l_@@_col_width_dim { #4 }
\hbox_set:Nw \l_@@_cell_box
- \@@_Cell:
+ \@@_cell_begin:w
\str_set:Nn \l_@@_hpos_cell_str { #3 }
}
c
< {
- \@@_end_Cell:
+ \@@_cell_end:
#1
\hbox_set_end:
\bool_if:NT \g_@@_rotate_bool \@@_rotate_cell_box:
@@ -9439,17 +9453,65 @@ version 2005/12/01 or later.
% \end{macrocode}
%
% \medskip
-% For |\@@_true_c:| which will appear in our redefinition of the columns of type
-% |S| (of \pkg{siunitx}).
+% For |\@@_S:|. If the user has used |S[...]|, |S| has been replaced by |\@@_S:|
+% during the first expansion of the preamble (done with the tools of standard
+% LaTeX and \pkg{array}).
% \begin{macrocode}
\cs_new_protected:Npn \@@_patch_preamble_vi:n #1
{
- \tl_gput_right:Nn \g_@@_preamble_tl { c }
+ \str_if_eq:nnTF { #1 } { [ }
+ { \@@_patch_preamble_vi_i:w [ }
+ { \@@_patch_preamble_vi_i:w [ ] { #1 } }
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_patch_preamble_vi_i:w [ #1 ]
+ { \@@_patch_preamble_vi_ii:n { #1 } }
+% \end{macrocode}
+%
+% For version of \pkg{siunitx} at least equal to 3.0, the adaptation is different
+% from previous ones. We test the version of \pkg{siunitx} by the existence of the
+% control sequence |\siunitx_cell_begin:w|. When we will decide that only the
+% previous posterior to 3.0 are supported by \pkg{nicematrix}, we will delete
+% the second definition of |\@@_patch_preamble_vi_ii:n|.
+% \begin{macrocode}
+\AtBeginDocument
+ {
+ \cs_if_exist:NTF \siunitx_cell_begin:w
+ {
+ \cs_new_protected:Npn \@@_patch_preamble_vi_ii:n #1
+ {
+ \tl_gput_right:Nn \g_@@_preamble_tl
+ {
+ > {
+ \@@_cell_begin:w
+ \keys_set:nn { siunitx } { #1 }
+ \siunitx_cell_begin:w
+ }
+ c
+ < { \siunitx_cell_end: \@@_cell_end: }
+ }
% \end{macrocode}
% We increment the counter of columns and then we test for the presence of a |<|.
% \begin{macrocode}
- \int_gincr:N \c@jCol
- \@@_patch_preamble_x:n
+ \int_gincr:N \c@jCol
+ \@@_patch_preamble_x:n
+ }
+ }
+ {
+ \cs_new_protected:Npn \@@_patch_preamble_vi_ii:n #1
+ {
+ \tl_gput_right:Nn \g_@@_preamble_tl
+ {
+ > { \@@_cell_begin:w \c_@@_table_collect_begin_tl S { #1 } }
+ c
+ < { \c_@@_table_print_tl \@@_cell_end: }
+ }
+ \int_gincr:N \c@jCol
+ \@@_patch_preamble_x:n
+ }
+ }
}
% \end{macrocode}
%
@@ -9585,7 +9647,7 @@ version 2005/12/01 or later.
%
% \medskip
% The following set of keys is for the specifier |X| in the preamble of the
-% array. Such specifier may have as key all the keys of
+% array. Such specifier may have as keys all the keys of
% |{ WithArrows / p-column }| but also a key as 1, 2, 3, etc. The following set
% of keys will be used to retrieve that value (in the counter |\l_@@_weight_int|).
% \begin{macrocode}
@@ -9617,7 +9679,7 @@ version 2005/12/01 or later.
% initial value is $1$). The user may specify a different value (such as $2$,
% $3$, etc.) by putting that value in the optional argument of the specifier.
% The weights of the |X| columns are used in the computation of the actual width
-% of those columns.
+% of those columns as in \pkg{tabu} of \pkg{tabularray}.
% \begin{macrocode}
\int_zero_new:N \l_@@_weight_int
\int_set:Nn \l_@@_weight_int { 1 }
@@ -9626,9 +9688,9 @@ version 2005/12/01 or later.
\int_gadd:Nn \g_@@_total_X_weight_int \l_@@_weight_int
% \end{macrocode}
%
-% We test whether we know the width of the |X|-columns by reading the |aux| file.
+% We test whether we know the width of the |X|-columns by reading the |aux| file
% (after the first compilation, the width of the |X|-columns is computed and
-% written on the |aux| file).
+% written in the |aux| file).
% \begin{macrocode}
\bool_if:NTF \l_@@_X_columns_aux_bool
{ \@@_patch_preamble_iv_iv:n { \l_@@_weight_int \l_@@_X_columns_dim } }
@@ -9636,7 +9698,7 @@ version 2005/12/01 or later.
\tl_gput_right:Nn \g_@@_preamble_tl
{
> {
- \@@_Cell:
+ \@@_cell_begin:w
\bool_set_true:N \l_@@_X_column_bool
% \end{macrocode}
% The following code will nullify the box of the cell.
@@ -9652,7 +9714,7 @@ version 2005/12/01 or later.
c
< {
\end { minipage }
- \@@_end_Cell:
+ \@@_cell_end:
}
}
\int_gincr:N \c@jCol
@@ -9832,9 +9894,9 @@ version 2005/12/01 or later.
{
\tl_gput_right:Nn \g_@@_preamble_tl
{
- > { \@@_Cell: \str_set:Nn \l_@@_hpos_cell_str { #1 } }
+ > { \@@_cell_begin:w \str_set:Nn \l_@@_hpos_cell_str { #1 } }
#1
- < \@@_end_Cell:
+ < \@@_cell_end:
}
% \end{macrocode}
%
@@ -9873,7 +9935,7 @@ version 2005/12/01 or later.
\tl_gput_right:Nn \g_@@_preamble_tl
{
> {
- \@@_Cell:
+ \@@_cell_begin:w
\begin { minipage } [ #1 ] { \dim_eval:n { #3 } }
\mode_leave_vertical:
\arraybackslash
@@ -9883,7 +9945,7 @@ version 2005/12/01 or later.
< {
\vrule height 0 pt depth \box_dp:N \@arstrutbox width 0 pt
\end { minipage }
- \@@_end_Cell:
+ \@@_cell_end:
}
}
% \end{macrocode}
@@ -9902,12 +9964,12 @@ version 2005/12/01 or later.
{
> {
\hbox_set:Nw \l_@@_cell_box
- \@@_Cell:
+ \@@_cell_begin:w
\str_set:Nn \l_@@_hpos_cell_str { #3 }
}
c
< {
- \@@_end_Cell:
+ \@@_cell_end:
#1
\hbox_set_end:
\bool_if:NT \g_@@_rotate_bool \@@_rotate_cell_box:
@@ -10895,7 +10957,7 @@ version 2005/12/01 or later.
\c@MaxMatrixCols
{ \@@_pred:n \l_@@_last_col_int }
}
- { > \@@_Cell: #2 < \@@_end_Cell: }
+ { > \@@_cell_begin:w #2 < \@@_cell_end: }
}
}
% \end{macrocode}
@@ -11136,16 +11198,16 @@ version 2005/12/01 or later.
% etc.) and no corners. In that case, we switch to a shortcut version of
% |\@@_vline_i:nn| and |\@@_hline:nn|.
% \begin{macrocode}
- \bool_lazy_all:nT
- {
- { \seq_if_empty_p:N \g_@@_pos_of_blocks_seq }
- { \seq_if_empty_p:N \g_@@_pos_of_xdots_seq }
- { \seq_if_empty_p:N \l_@@_corners_cells_seq }
- }
- {
- \cs_set_eq:NN \@@_vline_i:nn \@@_vline_i_complete:nn
- \cs_set_eq:NN \@@_hline_i:nn \@@_hline_i_complete:nn
- }
+ % \bool_lazy_all:nT
+ % {
+ % { \seq_if_empty_p:N \g_@@_pos_of_blocks_seq }
+ % { \seq_if_empty_p:N \g_@@_pos_of_xdots_seq }
+ % { \seq_if_empty_p:N \l_@@_corners_cells_seq }
+ % }
+ % {
+ % \cs_set_eq:NN \@@_vline_i:nn \@@_vline_i_complete:nn
+ % \cs_set_eq:NN \@@_hline_i:nn \@@_hline_i_complete:nn
+ % }
\tl_if_empty:NF \l_@@_hlines_clist \@@_draw_hlines:
\tl_if_empty:NF \l_@@_vlines_clist \@@_draw_vlines:
% \end{macrocode}
@@ -13779,7 +13841,7 @@ version 2005/12/01 or later.
}
}
% \end{macrocode}
-% This definition may seem complicated by we must remind that the number of row
+% This definition may seem complicated but we must remind that the number of row
% |\c@iRow| is incremented in the first cell of the row, \emph{after} a
% potential vertical rule on the left side of the first cell.
%
@@ -13801,26 +13863,29 @@ version 2005/12/01 or later.
% \bigskip
% The following command will be executed in the |internal-code-after|. The rule
% will be drawn \emph{before} the column |#1| (that is to say on the left side).
-% |#2| is the number of consecutive occurrences of \verb+|+.
+% |#2| is the number of consecutive occurrences of \verb+|+. |#3| and |#4| are
+% numbers of rows that define the delimitation of the horizontal rule that we
+% have to draw. If |#4| is empty, that means that the rule extends until the
+% last row.
% \begin{macrocode}
-\cs_new_protected:Npn \@@_vline:nn #1 #2
- {
+\cs_new_protected:Npn \@@_vline:nnnn #1 #2 #3 #4
+ {
% \end{macrocode}
-% The following test is for the case where the user don't use all the columns
+% The following test is for the case where the user does not use all the columns
% specified in the preamble of the environment (for instance, a preamble of
% \verb+|c|c|c|+ but only two columns used).
% \begin{macrocode}
\int_compare:nNnT { #1 } < { \c@jCol + 2 }
{
\pgfpicture
- \@@_vline_i:nn { #1 } { #2 }
+ \@@_vline_i:nnnn { #1 } { #2 } { #3 } { #4 }
\endpgfpicture
}
}
% \end{macrocode}
%
% \begin{macrocode}
-\cs_new_protected:Npn \@@_vline_i:nn #1 #2
+\cs_new_protected:Npn \@@_vline_i:nnnn #1 #2 #3 #4
{
% \end{macrocode}
% |\l_tmpa_tl| is the number of row and |\l_tmpb_tl| the number of column. When
@@ -13829,7 +13894,10 @@ version 2005/12/01 or later.
% \begin{macrocode}
\tl_set:Nx \l_tmpb_tl { #1 }
\tl_clear_new:N \l_tmpc_tl
- \int_step_variable:nNn \c@iRow \l_tmpa_tl
+ \int_step_variable:nnNn
+ { #3 }
+ { \tl_if_blank:nTF { #4 } { \int_use:N \c@iRow } { #4 } }
+ \l_tmpa_tl
{
% \end{macrocode}
% The boolean |\g_tmpa_bool| indicates whether the small vertical rule will be
@@ -13845,8 +13913,7 @@ version 2005/12/01 or later.
{ \@@_test_vline_in_block:nnnn ##1 }
\seq_map_inline:Nn \g_@@_pos_of_stroken_blocks_seq
{ \@@_test_vline_in_stroken_block:nnnn ##1 }
- \clist_if_empty:NF \l_@@_corners_clist
- \@@_test_in_corner_v:
+ \clist_if_empty:NF \l_@@_corners_clist \@@_test_in_corner_v:
\bool_if:NTF \g_tmpa_bool
{
\tl_if_empty:NT \l_tmpc_tl
@@ -13873,7 +13940,7 @@ version 2005/12/01 or later.
{ #1 }
{ #2 }
\l_tmpc_tl
- { \int_use:N \c@iRow }
+ { \tl_if_blank:nTF { #4 } { \int_use:N \c@iRow } { #4 } }
\tl_clear:N \l_tmpc_tl
}
}
@@ -13988,7 +14055,7 @@ version 2005/12/01 or later.
{
\tl_if_eq:NnF \l_@@_vlines_clist { all }
{ \clist_if_in:NnT \l_@@_vlines_clist { ##1 } }
- { \@@_vline:nn { ##1 } 1 }
+ { \@@_vline:nnnn { ##1 } 1 1 { } }
}
}
% \end{macrocode}
@@ -14000,18 +14067,20 @@ version 2005/12/01 or later.
% \bigskip
% The following command will be executed in the |internal-code-after|. The rule
% will be drawn \emph{before} the row |#1|. |#2| is the number of consecutive
-% occurrences of |\Hline|.
+% occurrences of |\Hline|. |#3| and |#4| are numbers of columns that define the
+% delimitation of the horizontal rule that we have to draw. If |#4| is empty,
+% that means that the rule extends until the last column.
% \begin{macrocode}
-\cs_new_protected:Npn \@@_hline:nn #1 #2
+\cs_new_protected:Npn \@@_hline:nnnn #1 #2 #3 #4
{
\pgfpicture
- \@@_hline_i:nn { #1 } { #2 }
+ \@@_hline_i:nnnn { #1 } { #2 } { #3 } { #4 }
\endpgfpicture
}
% \end{macrocode}
%
% \begin{macrocode}
-\cs_new_protected:Npn \@@_hline_i:nn #1 #2
+\cs_new_protected:Npn \@@_hline_i:nnnn #1 #2 #3 #4
{
% \end{macrocode}
% |\l_tmpa_tl| is the number of row and |\l_tmpb_tl| the number of column. When
@@ -14020,7 +14089,10 @@ version 2005/12/01 or later.
% \begin{macrocode}
\tl_set:Nn \l_tmpa_tl { #1 }
\tl_clear_new:N \l_tmpc_tl
- \int_step_variable:nNn \c@jCol \l_tmpb_tl
+ \int_step_variable:nnNn
+ { #3 }
+ { \tl_if_blank:nTF { #4 } { \int_use:N \c@jCol } { #4 } }
+ \l_tmpb_tl
{
% \end{macrocode}
% The boolean |\g_tmpa_bool| indicates whether the small horizontal rule will be
@@ -14063,7 +14135,7 @@ version 2005/12/01 or later.
{ #1 }
{ #2 }
\l_tmpc_tl
- { \int_use:N \c@jCol }
+ { \tl_if_blank:nTF { #4 } { \int_use:N \c@jCol } { #4 } }
\tl_clear:N \l_tmpc_tl
}
}
@@ -14172,7 +14244,7 @@ version 2005/12/01 or later.
{
\tl_if_eq:NnF \l_@@_hlines_clist { all }
{ \clist_if_in:NnT \l_@@_hlines_clist { ##1 } }
- { \@@_hline:nn { ##1 } 1 }
+ { \@@_hline:nnnn { ##1 } 1 1 { } }
}
}
% \end{macrocode}
@@ -14209,7 +14281,7 @@ version 2005/12/01 or later.
+ \doublerulesep * ( \int_max:nn 0 { #1 - 1 } )
}
\tl_gput_right:Nx \g_@@_internal_code_after_tl
- { \@@_hline:nn { \@@_succ:n { \c@iRow } } { #1 } }
+ { \@@_hline:nnnn { \@@_succ:n { \c@iRow } } { #1 } 1 { } }
\ifnum 0 = `{ \fi }
}
% \end{macrocode}
@@ -15150,7 +15222,7 @@ version 2005/12/01 or later.
b .code:n = \str_set:Nn \l_@@_vpos_of_block_tl b ,
b .value_forbidden:n = true ,
color .tl_set:N = \l_@@_color_tl ,
- color .value_required:n = true ,
+ color .value_required:n = true
}
% \end{macrocode}
%
@@ -15627,21 +15699,14 @@ version 2005/12/01 or later.
\cs_new_protected:Npn \@@_Block_v:nnnnnn #1 #2 #3 #4 #5 #6
{
% \end{macrocode}
-% The sequence of the positions of the blocks will be used when drawing the rules
-% (in fact, there is also the |\multicolumn| and the |\diagbox| in that sequence).
-% \begin{macrocode}
- \seq_gput_left:Nn \g_@@_pos_of_blocks_seq { { #1 } { #2 } { #3 } { #4 } }
-% \end{macrocode}
-%
% The group is for the keys.
% \begin{macrocode}
\group_begin:
\keys_set:nn { NiceMatrix / Block / SecondPass } { #5 }
% \end{macrocode}
%
-%
% \begin{macrocode}
- \bool_if:NT \l_@@_hvlines_block_bool
+ \bool_if:NTF \l_@@_hvlines_block_bool
{
\tl_gput_right:Nx \g_nicematrix_code_after_tl
{
@@ -15651,6 +15716,15 @@ version 2005/12/01 or later.
{ \int_use:N \l_@@_last_row_int - \int_use:N \l_@@_last_col_int }
}
}
+ {
+% \end{macrocode}
+% The sequence of the positions of the blocks (excepted the blocks with the key
+% |hvlines|) will be used when drawing the rules (in fact, there is also the
+% |\multicolumn| and the |\diagbox| in that sequence).
+% \begin{macrocode}
+ \seq_gput_left:Nn \g_@@_pos_of_blocks_seq
+ { { #1 } { #2 } { #3 } { #4 } }
+ }
% \end{macrocode}
%
% \begin{macrocode}
@@ -16096,7 +16170,7 @@ version 2005/12/01 or later.
}
% \end{macrocode}
%
-
+%
% \bigskip
% The first argument of |\@@_hvlines_block:nnn| is a list of options for the
% rules that we will draw. The second argument is the upper-left cell of the
@@ -16113,40 +16187,16 @@ version 2005/12/01 or later.
\@@_cut_on_hyphen:w #3 \q_stop
\tl_set:Nx \l_tmpa_tl { \int_eval:n { \l_tmpa_tl + 1 } }
\tl_set:Nx \l_tmpb_tl { \int_eval:n { \l_tmpb_tl + 1 } }
- \pgfpicture
- \pgfrememberpicturepositiononpagetrue
- \pgf@relevantforpicturesizefalse
- \CT@arc@
- \pgfsetlinewidth { 1.1 \l_@@_line_width_dim }
-% \end{macrocode}
-% First, the vertical rules.
-% \begin{macrocode}
- \@@_qpoint:n { row - \l_tmpa_tl }
- \dim_set_eq:NN \l_tmpa_dim \pgf@y
- \@@_qpoint:n { row - \l_tmpc_tl }
- \dim_set_eq:NN \l_tmpb_dim \pgf@y
\int_step_inline:nnn \l_tmpd_tl \l_tmpb_tl
- {
- \@@_qpoint:n { col - ##1 }
- \pgfpathmoveto { \pgfpoint \pgf@x \l_tmpa_dim }
- \pgfpathlineto { \pgfpoint \pgf@x \l_tmpb_dim }
- \pgfusepathqstroke
- }
-% \end{macrocode}
-% Now, the horizontal rules.
-% \begin{macrocode}
- \@@_qpoint:n { col - \l_tmpb_tl }
- \dim_set:Nn \l_tmpa_dim { \pgf@x + 0.5 \arrayrulewidth }
- \@@_qpoint:n { col - \l_tmpd_tl }
- \dim_set:Nn \l_tmpb_dim { \pgf@x - 0.5 \arrayrulewidth }
+ {
+ \use:x
+ { \@@_vline:nnnn { ##1 } 1 { \l_tmpc_tl } { \@@_pred:n \l_tmpa_tl } }
+ }
\int_step_inline:nnn \l_tmpc_tl \l_tmpa_tl
- {
- \@@_qpoint:n { row - ##1 }
- \pgfpathmoveto { \pgfpoint \l_tmpa_dim \pgf@y }
- \pgfpathlineto { \pgfpoint \l_tmpb_dim \pgf@y }
- \pgfusepathqstroke
- }
- \endpgfpicture
+ {
+ \use:x
+ { \@@_hline:nnnn { ##1 } 1 { \l_tmpd_tl } { \@@_pred:n \l_tmpb_tl } }
+ }
}
% \end{macrocode}
%
@@ -17562,8 +17612,8 @@ version 2005/12/01 or later.
% \begin{macrocode}
\@@_msg_new:nn { Unknown~key~for~RowStyle }
{
- As~for~now,~there~is~only~three~keys~available~here:~'cell-space-top-limit',~
- 'cell-space-bottom-limit~and~'cell-space-limits'~(and~you~try~to~use~
+ As~for~now,~there~is~only~four~keys~available~here:~'cell-space-top-limit',~
+ 'cell-space-bottom-limit~'cell-space-limits'~and~color~(and~you~try~to~use~
'\l_keys_key_str').~If~you~go~on,~this~key~will~be~ignored.
}
% \end{macrocode}
@@ -18705,6 +18755,14 @@ version 2005/12/01 or later.
%
% The key |define-L-C-R| has been deleted.
%
+%
+% \subsection*{Changes between versions 6.0 and 6.1}
+%
+% Better computation of the widths of the |X| columns.
+%
+% Key |\color| for the command |\RowStyle|.
+%
+%
% \PrintIndex
%
% \tableofcontents