summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/nicematrix/nicematrix.sty
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2019-07-19 20:42:46 +0000
committerKarl Berry <karl@freefriends.org>2019-07-19 20:42:46 +0000
commit0770d0964f61096883b1a75524e16c31da08b9a4 (patch)
tree0c2477a566d7b068ad490c114121f39163784f39 /Master/texmf-dist/tex/latex/nicematrix/nicematrix.sty
parent5abfca443b064af0c3d64883243452ef36ab2483 (diff)
nicematrix (19jul19)
git-svn-id: svn://tug.org/texlive/trunk@51680 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/nicematrix/nicematrix.sty')
-rw-r--r--Master/texmf-dist/tex/latex/nicematrix/nicematrix.sty453
1 files changed, 276 insertions, 177 deletions
diff --git a/Master/texmf-dist/tex/latex/nicematrix/nicematrix.sty b/Master/texmf-dist/tex/latex/nicematrix/nicematrix.sty
index 86dc6b39765..a1e3830d1cf 100644
--- a/Master/texmf-dist/tex/latex/nicematrix/nicematrix.sty
+++ b/Master/texmf-dist/tex/latex/nicematrix/nicematrix.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.2.1}
-\def\myfiledate{2019/07/02}
+\def\myfileversion{2.3}
+\def\myfiledate{2019/07/18}
\RequirePackage{tikz}
\usetikzlibrary{fit}
\RequirePackage{expl3}[2019/02/15]
@@ -36,6 +36,12 @@
\RequirePackage { array }
\RequirePackage { amsmath }
\RequirePackage { xparse } [ 2018-10-17 ]
+\cs_new_protected:Nn \__nm_error:n { \msg_error:nn { nicematrix } { #1 } }
+\cs_new_protected:Nn \__nm_error:nn { \msg_error:nn { nicematrix } { #1 } { #2 } }
+\cs_new_protected:Npn \__nm_msg_new:nn { \msg_new:nnn { nicematrix } }
+\cs_new_protected:Npn \__nm_msg_new:nnn { \msg_new:nnnn { nicematrix } }
+\cs_new_protected:Npn \__nm_msg_redirect_name:nn
+ { \msg_redirect_name:nnn { nicematrix } }
\bool_new:N \c__nm_revtex_bool
\@ifclassloaded { revtex4-1 }
{ \bool_set_true:N \c__nm_revtex_bool }
@@ -43,21 +49,33 @@
\@ifclassloaded { revtex4-2 }
{ \bool_set_true:N \c__nm_revtex_bool }
{ }
-\cs_new_protected:Nn \__nm_error:n { \msg_error:nn { nicematrix } { #1 } }
-\cs_new_protected:Nn \__nm_error:nn { \msg_error:nn { nicematrix } { #1 } { #2 } }
-\cs_new_protected:Npn \__nm_msg_new:nn { \msg_new:nnn { nicematrix } }
-\cs_new_protected:Npn \__nm_msg_new:nnn { \msg_new:nnnn { nicematrix } }
-\cs_new_protected:Npn \__nm_msg_redirect_name:nn
- { \msg_redirect_name:nnn { nicematrix } }
+\__nm_msg_new:nn { Draft~mode }
+ { The~compilation~is~in~draft~mode:~the~dotted~lines~won't~be~drawn. }
+\bool_if:NT \c__nm_draft_bool
+ { \msg_warning:nn { nicematrix } { Draft~mode } }
+\AtBeginDocument
+ {
+ \clist_map_inline:nn
+ {
+ siunitx
+ }
+ {
+ \bool_new:c { c__nm_#1_loaded_bool }
+ \@ifpackageloaded { #1 }
+ { \bool_set_true:c { c__nm_#1_loaded_bool } }
+ { }
+ }
+ }
\ProvideDocumentCommand \iddots { }
{
\mathinner
- { \mkern 1 mu
- \raise \p@ \hbox { . }
+ {
+ \mkern 1 mu
+ \raise \p@ \hbox:n { . }
\mkern 2 mu
- \raise 4 \p@ \hbox { . }
+ \raise 4 \p@ \hbox:n { . }
\mkern 2 mu
- \raise 7 \p@ \vbox { \kern 7 pt \hbox { . } } \mkern 1 mu
+ \raise 7 \p@ \vbox { \kern 7 pt \hbox:n { . } } \mkern 1 mu
}
}
\int_new:N \g__nm_env_int
@@ -68,18 +86,54 @@
\bool_new:N \l__nm_exterior_column_bool
\bool_new:N \g__nm_exterior_column_found_bool
\bool_new:N \l__nm_in_NiceArray_bool
-\seq_new:N \c__nm_env_with_preamble_seq
-\seq_set_from_clist:Nn \c__nm_env_with_preamble_seq
+\cs_set_protected:Npn \__nm_adapt_S_column:
+ {
+ \bool_if:NT \c__nm_siunitx_loaded_bool
+ {
+ \group_begin:
+ \@temptokena = { }
+ \cs_set_eq:NN \NC@find \prg_do_nothing:
+ \NC@rewrite@S { }
+ \exp_args:NNo \tl_gset:Nn \g_tmpa_tl { \tex_the:D \@temptokena }
+ \group_end:
+ \tl_new:N \c__nm_table_collect_begin_tl
+ \tl_set:Nx \l_tmpa_tl { \tl_item:Nn \g_tmpa_tl 2 }
+ \tl_gset:Nx \c__nm_table_collect_begin_tl { \tl_item:Nn \l_tmpa_tl 1 }
+ \tl_new:N \c__nm_table_print_tl
+ \tl_gset:Nx \c__nm_table_print_tl { \tl_item:Nn \g_tmpa_tl { -1 } }
+ }
+ \cs_gset_eq:NN \__nm_adapt_S_column: \prg_do_nothing:
+ }
+\cs_new_protected:Npn \__nm_renew_NC@rewrite@S:
+ {
+ \renewcommand*{\NC@rewrite@S}[1][]
+ {
+ \@temptokena \exp_after:wN
+ {
+ \tex_the:D \@temptokena
+ > { \__nm_Cell: \c__nm_table_collect_begin_tl S {##1} }
+ c
+ < { \c__nm_table_print_tl \__nm_end_Cell: }
+ }
+ \NC@find
+ }
+ }
+\__nm_msg_new:nn { Option~Transparent~suppressed }
{
- NiceArray , NiceArrayCwithDelims , pNiceArrayC , vNiceArrayC , VNiceArrayC ,
- bNiceArrayC , BNiceArrayC , NiceArrayRCwithDelims , pNiceArrayRC ,
- vNiceArrayRC , VNiceArrayRC , bNiceArrayRC , BNiceArrayRC
+ The~option~'Transparent'~has~been~renamed~'transparent'.\\
+ However,~you~can~go~on~for~this~time.
+ }
+\__nm_msg_new:nn { Option~RenewMatrix~suppressed }
+ {
+ The~option~'RenewMatrix~has~been~renamed~'renew-matrix'.\\
+ However,~you~can~go~on~for~this~time.
}
\str_new:N \l__nm_pos_env_str
\str_set:Nn \l__nm_pos_env_str c
\bool_new:N \l__nm_exterior_arraycolsep_bool
\bool_new:N \l__nm_parallelize_diags_bool
\bool_set_true:N \l__nm_parallelize_diags_bool
+\bool_new:N \l__nm_hlines_bool
\bool_new:N \l__nm_nullify_dots_bool
\bool_new:N \l__nm_auto_columns_width_bool
\tl_new:N \l__nm_code_for_last_col_tl
@@ -96,6 +150,7 @@
\dim_new:N \g__nm_extra_right_margin_dim
\keys_define:nn { NiceMatrix / Global }
{
+ hlines .bool_set:N = \l__nm_hlines_bool ,
parallelize-diags .bool_set:N = \l__nm_parallelize_diags_bool ,
parallelize-diags .default:n = true ,
renew-dots .bool_set:N = \l__nm_renew_dots_bool ,
@@ -156,10 +211,13 @@
{
renew-matrix .code:n = \__nm_renew_matrix: ,
renew-matrix .value_forbidden:n = true ,
- RenewMatrix .meta:n = renew-matrix ,
+ RenewMatrix .code:n = \__nm_error:n { Option~RenewMatrix~suppressed }
+ \__nm_renew_matrix: ,
transparent .meta:n = { renew-dots , renew-matrix } ,
transparent .value_forbidden:n = true,
- Transparent .meta:n = transparent,
+ Transparent .code:n = \__nm_error:n { Option~Transparent~suppressed }
+ \__nm_renew_matrix:
+ \bool_set_true:N \l__nm_renew_dots_bool ,
code-for-last-col .tl_set:N = \l__nm_code_for_last_col_tl ,
code-for-last-col .value_required:n = true ,
code-for-first-row .tl_set:N = \l__nm_code_for_first_row_tl ,
@@ -189,6 +247,7 @@
allow-duplicate-names,~
code-for-last-col,~
exterior-arraycolsep,~
+ hlines,~
left-margin,~
letter-for-dotted-lines,~
nullify-dots,~
@@ -221,6 +280,7 @@
create-extra-nodes,~
extra-left-margin,~
extra-right-margin,~
+ hlines,~
left-margin,~
name,~
nullify-dots,~
@@ -265,6 +325,7 @@
columns-width,~
extra-left-margin,~
extra-right-margin,~
+ hlines,~
left-margin,~
name,~
nullify-dots,~
@@ -279,12 +340,14 @@
\int_compare:nNnT \g__nm_column_int = 1 { \int_gincr:N \g__nm_row_int }
\int_gset:Nn \g__nm_column_total_int
{ \int_max:nn \g__nm_column_total_int \g__nm_column_int }
- \hbox_set:Nw \l_tmpa_box $ % $
+ \hbox_set:Nw \l_tmpa_box
+ \c_math_toggle_token
\int_compare:nNnT \g__nm_row_int = \c_zero_int
\l__nm_code_for_first_row_tl
}
\cs_new_protected:Nn \__nm_end_Cell:
- { $ % $
+ {
+ \c_math_toggle_token
\hbox_set_end:
\dim_gset:Nn \g__nm_max_cell_width_dim
{ \dim_max:nn \g__nm_max_cell_width_dim { \box_wd:N \l_tmpa_box } }
@@ -344,41 +407,11 @@
nested.~You~can~go~on,~but,~maybe,~you~will~have~errors~or~an~incorrect~
result.
}
-\cs_new_protected:Npn \__nm_define_dots:
+\__nm_msg_new:nn { Outside~math~mode }
{
- \cs_set_eq:NN \Ldots \__nm_Ldots
- \cs_set_eq:NN \Cdots \__nm_Cdots
- \cs_set_eq:NN \Vdots \__nm_Vdots
- \cs_set_eq:NN \Ddots \__nm_Ddots
- \cs_set_eq:NN \Iddots \__nm_Iddots
- \bool_if:NT \l__nm_renew_dots_bool
- {
- \cs_set_eq:NN \ldots \__nm_Ldots
- \cs_set_eq:NN \cdots \__nm_Cdots
- \cs_set_eq:NN \vdots \__nm_Vdots
- \cs_set_eq:NN \ddots \__nm_Ddots
- \cs_set_eq:NN \iddots \__nm_Iddots
- \cs_set_eq:NN \dots \__nm_Ldots
- \cs_set_eq:NN \hdotsfor \__nm_Hdotsfor
- }
- }
-\cs_new_protected:Npn \__nm_define_dots_to_nil:
- {
- \cs_set_eq:NN \Ldots \prg_do_nothing:
- \cs_set_eq:NN \Cdots \prg_do_nothing:
- \cs_set_eq:NN \Vdots \prg_do_nothing:
- \cs_set_eq:NN \Ddots \prg_do_nothing:
- \cs_set_eq:NN \Iddots \prg_do_nothing:
- \bool_if:NT \l__nm_renew_dots_bool
- {
- \cs_set_eq:NN \ldots \prg_do_nothing:
- \cs_set_eq:NN \cdots \prg_do_nothing:
- \cs_set_eq:NN \vdots \prg_do_nothing:
- \cs_set_eq:NN \ddots \prg_do_nothing:
- \cs_set_eq:NN \iddots \prg_do_nothing:
- \cs_set_eq:NN \dots \prg_do_nothing:
- \cs_set_eq:NN \hdotsfor \__nm_Hdotsfor
- }
+ The~environment~\{\@currenvir\}~can~be~used~only~in~math~mode~
+ (and~not~in~\token_to_str:N \vcenter).\_
+ If~you~go~on,~you~will~have~other~errors.
}
\cs_new_protected:Nn \__nm_renewcolumntype:nn
{
@@ -399,7 +432,8 @@
\box_move_down:nn \l_tmpa_dim
{
\vbox:n
- { \hbox_to_wd:nn { \box_wd:N \l_tmpb_box }
+ {
+ \hbox_to_wd:nn { \box_wd:N \l_tmpb_box }
{
\hfil
\tikz [ remember~picture , overlay ]
@@ -434,13 +468,21 @@
}
}
}
+\cs_new_protected:Npn \__nm_test_if_math_mode:
+ {
+ \ifmmode \else
+ \__nm_error:n { Outside~math~mode }
+ \fi
+ }
\NewDocumentEnvironment { NiceArray } { O { } m ! O { } }
{
+ \__nm_adapt_S_column:
+ \__nm_test_if_math_mode:
\bool_if:NT \l__nm_in_NiceArray_bool
{ \__nm_error:n { Yet~in~NiceArray } }
+ \bool_set_true:N \l__nm_in_NiceArray_bool
\cs_if_exist:NT \tikz@library@external@loaded
{ \tikzset { external / export = false } }
- \bool_set_true:N \l__nm_in_NiceArray_bool
\group_insert_after:N \__nm_after_array:
\tl_gclear_new:N \g__nm_lines_to_draw_tl
\int_gincr:N \g__nm_env_int
@@ -454,7 +496,7 @@
{
\group_insert_after:N \__nm_write_max_cell_width:
\cs_if_free:cTF { __nm_max_cell_width_ \int_use:N \g__nm_env_int }
- { \dim_set:Nn \l__nm_columns_width_dim \c_zero_dim }
+ { \dim_zero:N \l__nm_columns_width_dim }
{
\dim_set:Nx \l__nm_columns_width_dim
{ \use:c { __nm_max_cell_width _ \int_use:N \g__nm_env_int } }
@@ -475,7 +517,21 @@
\tl_gset_eq:NN \g__nm_name_str \l__nm_name_str
\cs_set:Npn \ialign
{
- \everycr { \noalign { \int_gzero:N \g__nm_column_int } }
+ \everycr
+ {
+ \noalign
+ {
+ \int_gzero:N \g__nm_column_int
+ \bool_if:NT \l__nm_hlines_bool
+ {
+ \int_compare:nNnT \g__nm_row_int > { -1 }
+ {
+ \hrule \@height \arrayrulewidth
+ \skip_vertical:n { - \arrayrulewidth }
+ }
+ }
+ }
+ }
\tabskip = \c_zero_skip
\cs_set:Npn \ialign
{
@@ -510,22 +566,30 @@
{
\int_gset_eq:NN \g__nm_last_vdotted_col_int \g__nm_column_int
\tl_gput_right:Nx \g__nm_code_after_tl
- {
- \exp_not:N \__nm_vdottedline:n
- \exp_not:N {
- \int_use:N \g__nm_column_int
- \exp_not:N }
- }
+ { \__nm_vdottedline:n { \int_use:N \g__nm_column_int } }
}
}
}
- \bool_if:NTF \c__nm_draft_bool
- \__nm_define_dots_to_nil:
- \__nm_define_dots:
+ \cs_set_eq:NN \Ldots \__nm_Ldots
+ \cs_set_eq:NN \Cdots \__nm_Cdots
+ \cs_set_eq:NN \Vdots \__nm_Vdots
+ \cs_set_eq:NN \Ddots \__nm_Ddots
+ \cs_set_eq:NN \Iddots \__nm_Iddots
\cs_set_eq:NN \hdottedline \__nm_hdottedline:
\cs_set_eq:NN \Hspace \__nm_Hspace:
\cs_set_eq:NN \Hdotsfor \__nm_Hdotsfor
\cs_set_eq:NN \multicolumn \__nm_multicolumn:nnn
+ \bool_if:NT \l__nm_renew_dots_bool
+ {
+ \cs_set_eq:NN \ldots \__nm_Ldots
+ \cs_set_eq:NN \cdots \__nm_Cdots
+ \cs_set_eq:NN \vdots \__nm_Vdots
+ \cs_set_eq:NN \ddots \__nm_Ddots
+ \cs_set_eq:NN \iddots \__nm_Iddots
+ \cs_set_eq:NN \dots \__nm_Ldots
+ \cs_set_eq:NN \hdotsfor \__nm_Hdotsfor
+ }
+ \bool_if:NT \c__nm_siunitx_loaded_bool \__nm_renew_NC@rewrite@S:
\seq_gclear_new:N \g__nm_empty_cells_seq
\seq_gclear_new:N \g__nm_multicolumn_cells_seq
\seq_gclear_new:N \g__nm_multicolumn_sizes_seq
@@ -538,7 +602,8 @@
\cs_set_eq:NN \@ifnextchar \new@ifnextchar
\bool_if:NF \l__nm_exterior_arraycolsep_bool
{ \skip_horizontal:n { - \arraycolsep } }
- \skip_horizontal:n { \l__nm_left_margin_dim + \l__nm_extra_left_margin_dim }
+ \skip_horizontal:n \l__nm_left_margin_dim
+ \skip_horizontal:n \l__nm_extra_left_margin_dim
\bool_if:NTF \c__nm_revtex_bool
{
\cs_set_eq:NN \@acoll \@arrayacol
@@ -553,23 +618,38 @@
{ \endarray
\bool_if:NF \l__nm_exterior_arraycolsep_bool
{ \skip_horizontal:n { - \arraycolsep } }
- \skip_horizontal:n
- { \g__nm_right_margin_dim + \g__nm_extra_right_margin_dim }
+ \skip_horizontal:n \g__nm_right_margin_dim
+ \skip_horizontal:n \g__nm_extra_right_margin_dim
}
\NewDocumentEnvironment { pNiceMatrix } { }
- { \left( \begin{NiceMatrix} }
+ {
+ \__nm_test_if_math_mode:
+ \left( \begin{NiceMatrix}
+ }
{ \end{NiceMatrix} \right) }
\NewDocumentEnvironment { bNiceMatrix } { }
- { \left[ \begin{NiceMatrix} }
+ {
+ \__nm_test_if_math_mode:
+ \left[ \begin{NiceMatrix}
+ }
{ \end{NiceMatrix} \right] }
\NewDocumentEnvironment { BNiceMatrix } { }
- { \left\{ \begin{NiceMatrix} }
+ {
+ \__nm_test_if_math_mode:
+ \left\{ \begin{NiceMatrix}
+ }
{ \end{NiceMatrix} \right\} }
\NewDocumentEnvironment { vNiceMatrix } { }
- { \left\lvert \begin{NiceMatrix} }
+ {
+ \__nm_test_if_math_mode:
+ \left\lvert \begin{NiceMatrix}
+ }
{ \end{NiceMatrix} \right\rvert }
\NewDocumentEnvironment { VNiceMatrix } {}
- { \left\lVert \begin{NiceMatrix} }
+ {
+ \__nm_test_if_math_mode:
+ \left\lVert \begin{NiceMatrix}
+ }
{ \end{NiceMatrix} \right\rVert }
\cs_new_protected:Nn \__nm_write_max_cell_width:
{
@@ -581,10 +661,13 @@
\cs_gset:cpn { __nm_max_cell_width_ \int_use:N \g__nm_env_int }
{ \dim_use:N \g__nm_max_cell_width_dim }
}
- \iow_now:Nx \@mainaux
+ \str_if_empty:NF \g__nm_name_str
{
- \cs_gset:cpn { __nm_max_cell_width_ \g__nm_name_str }
- { \dim_use:N \g__nm_max_cell_width_dim }
+ \iow_now:Nx \@mainaux
+ {
+ \cs_gset:cpn { __nm_max_cell_width_ \g__nm_name_str }
+ { \dim_use:N \g__nm_max_cell_width_dim }
+ }
}
\iow_now:Nn \@mainaux \ExplSyntaxOff
}
@@ -606,32 +689,37 @@
\pgfpointanchor \l_tmpa_tl { west }
\dim_gset:Nn \g_tmpb_dim \pgf@x
\end { pgfpicture }
- \dim_compare:nTF
- { \dim_abs:n { \g_tmpb_dim - \g_tmpa_dim } < 0.5 pt }
+ \dim_compare:nNnTF
+ { \dim_abs:n { \g_tmpb_dim - \g_tmpa_dim } } < { 0.5 pt }
\prg_return_false:
\prg_return_true:
}
}
}
-\cs_new_protected:Nn \__nm_instruction_of_type:n
+\bool_if:NTF \c__nm_draft_bool
+ { \cs_set_protected:Npn \__nm_instruction_of_type:n #1 { } }
{
- \tl_gput_right:Nx \g__nm_lines_to_draw_tl
+ \cs_new_protected:Npn \__nm_instruction_of_type:n #1
{
- \exp_not:c { __nm _ draw _ #1 : nn }
- { \int_use:N \g__nm_row_int }
- { \int_use:N \g__nm_column_int }
+ \tl_gput_right:Nx \g__nm_lines_to_draw_tl
+ {
+ \exp_not:c { __nm _ draw _ #1 : nn }
+ { \int_use:N \g__nm_row_int }
+ { \int_use:N \g__nm_column_int }
+ }
}
}
\cs_new_protected:Nn \__nm_after_array:
{
- \int_compare:nNnTF \g__nm_row_int > 0
+ \int_compare:nNnTF \g__nm_row_int > \c_zero_int
\__nm_after_array_i:
{ \__nm_error:n { Zero~row } }
}
\__nm_msg_new:nn { Zero~row }
{
- There~is~a~problem.~Maybe~your~environment~is~empty.~Maybe~you~have~used~L,~
- ~C~and~R~instead~of~l,~c~and~r~in~the~preamble~of~your~environment.\\
+ There~is~a~problem.~Maybe~your~environment~\{\@currenvir\}~is~empty.~
+ Maybe~you~have~used~L,~C~and~R~instead~of~l,~c~and~r~in~the~preamble~
+ of~your~environment. \\
If~you~go~on,~the~result~may~be~incorrect.
}
\cs_new_protected:Nn \__nm_after_array_i:
@@ -1079,7 +1167,7 @@
\hspace
}
\cs_set_eq:NN \__nm_old_multicolumn \multicolumn
-\cs_new:Nn \__nm_multicolumn:nnn
+\cs_new:Npn \__nm_multicolumn:nnn #1 #2 #3
{
\__nm_old_multicolumn { #1 } { #2 } { #3 }
\int_compare:nNnT #1 > 1
@@ -1090,16 +1178,23 @@
}
\int_gadd:Nn \g__nm_column_int { #1 - 1 }
}
-\NewDocumentCommand \__nm_Hdotsfor { O { } m }
+\bool_if:NTF \c__nm_draft_bool
+ {
+ \NewDocumentCommand \__nm_Hdotsfor { O { } m }
+ { \prg_replicate:nn { #2 - 1 } { & } }
+ }
{
- \tl_gput_right:Nx \g__nm_lines_to_draw_tl
+ \NewDocumentCommand \__nm_Hdotsfor { O { } m }
{
- \exp_not:N \__nm_draw_Hdotsfor:nnn
- { \int_use:N \g__nm_row_int }
- { \int_use:N \g__nm_column_int }
- { #2 }
+ \tl_gput_right:Nx \g__nm_lines_to_draw_tl
+ {
+ \__nm_draw_Hdotsfor:nnn
+ { \int_use:N \g__nm_row_int }
+ { \int_use:N \g__nm_column_int }
+ { #2 }
+ }
+ \prg_replicate:nn { #2 - 1 } { & }
}
- \prg_replicate:nn { #2 - 1 } { & }
}
\cs_new_protected:Nn \__nm_draw_Hdotsfor:nnn
{
@@ -1159,10 +1254,16 @@
\__nm_draw_tikz_line:
}
\cs_generate_variant:Nn \dim_set:Nn { N v }
-\cs_set:Npn \__nm_dotfill:
- { \cleaders \hbox_to_wd:nn {.44em} {\hss .\hss } \hfill \kern \c_zero_dim }
-
-\cs_new:Nn \__nm_hdottedline:
+\bool_if:NTF \c__nm_draft_bool
+ { \cs_set_eq:NN \__nm_dotfill: \prg_do_nothing: }
+ {
+ \cs_set:Npn \__nm_dotfill:
+ {
+ \cleaders \hbox_to_wd:nn { .44 em } { \hss .\hss } \hfill
+ \skip_horizontal:n \c_zero_dim
+ }
+ }
+\cs_new:Npn \__nm_hdottedline:
{
\noalign
{
@@ -1180,19 +1281,6 @@
}
}
}
-\__nm_msg_new:nn { Use~of~hdottedline~in~first~position }
- {
- You~can't~use~the~command~\token_to_str:N\hdottedline\ in~the~first~row~
- of~the~environment~\{\@currenvir\}.~But~maybe~you~have~used~l,~c~and~r~
- instead~of~L,~C,~R~in~the~preamble~of~the~array.\\
- If~you~go~on,~this~dotted~line~will~be~ignored.
- }
-\__nm_msg_new:nn { Use~of~hdottedline~in~first~position~bis }
- {
- You~can't~use~the~command~\token_to_str:N\hdottedline\ in~the~first~row~
- of~the~environment~\{\@currenvir\}. \\
- If~you~go~on,~this~dotted~line~will~be~ignored.
- }
\cs_new_protected:Nn \__nm_vdottedline:n
{
\int_compare:nNnTF #1 = \c_zero_int
@@ -1293,6 +1381,7 @@
create-extra-nodes,~
extra-left-margin,~
extra-right-margin,~
+ hlines,~
left-margin,~
name,~
nullify-dots,~
@@ -1312,11 +1401,11 @@
\int_gincr:N \g__nm_column_int
\int_gset:Nn \g__nm_column_total_int
{ \int_max:nn \g__nm_column_total_int \g__nm_column_int }
- \hbox_set:Nw \l_tmpa_box $ % $
+ \hbox_set:Nw \l_tmpa_box \c_math_toggle_token
\l__nm_code_for_last_col_tl
}
l
- < { $ % $
+ < { \c_math_toggle_token
\hbox_set_end:
\dim_gset:Nn \g__nm_width_last_col_dim
{
@@ -1363,6 +1452,7 @@
}
\NewDocumentEnvironment { NiceArrayCwithDelims } { m m O { } m ! O { } }
{
+ \__nm_test_if_math_mode:
\dim_gzero_new:N \g__nm_width_last_col_dim
\keys_set:nn { NiceMatrix / NiceArrayC } { #3 , #5 }
\bool_set_false:N \l__nm_exterior_arraycolsep_bool
@@ -1414,6 +1504,7 @@
create-extra-nodes,~
extra-left-margin,~
extra-right-margin,~
+ hlines,~
left-margin,~
name,~
nullify-dots,~
@@ -1421,8 +1512,16 @@
renew-dots~
and~right-margin.
}
+\cs_new_protected:Npn \__nm_vline:
+ {
+ \int_compare:nNnTF \g__nm_column_int = \c_zero_int
+ { \int_compare:nNnF \g__nm_row_int < \c_zero_int \vline }
+ { \int_compare:nNnF \g__nm_row_int < \c_one_int \vline }
+ }
\NewDocumentEnvironment { NiceArrayRCwithDelims } { m m O { } m ! O { } }
{
+ \__nm_test_if_math_mode:
+ \cs_set_protected:Npn \@arrayrule { \@addtopreamble \__nm_vline: }
\int_zero:N \l__nm_nb_first_row_int
\dim_gzero_new:N \g__nm_width_last_col_dim
\keys_set:nn { NiceMatrix / NiceArrayRC } { #3 , #5 }
@@ -1430,25 +1529,25 @@
\str_set:Nn \l__nm_pos_env_str c
\box_clear_new:N \l__nm_the_array_box
\hbox_set:Nw \l__nm_the_array_box
- $ % $
+ \c_math_toggle_token
\__nm_NiceArrayC:n { #4 }
}
{
\end { NiceArray }
- $ % $
+ \c_math_toggle_token
\hbox_set_end:
\dim_set:Nn \l_tmpa_dim
{
(
\dim_max:nn
- { 12 pt }
- { \g__nm_max_ht_row_one_dim + \g__nm_max_dp_row_zero_dim }
+ { 12 pt }
+ { \g__nm_max_ht_row_one_dim + \g__nm_max_dp_row_zero_dim }
)
+ \g__nm_max_ht_row_zero_dim - \g__nm_max_ht_row_one_dim
}
\hbox_set:Nn \l_tmpa_box
{
- $ % $
+ \c_math_toggle_token
\left #1
\vcenter
{
@@ -1456,7 +1555,7 @@
\box_use_drop:N \l__nm_the_array_box
}
\right #2
- $ % $
+ \c_math_toggle_token
\skip_horizontal:n \g__nm_width_last_col_dim
}
\box_set_ht:Nn \l_tmpa_box { \box_ht:N \l_tmpa_box + \l_tmpa_dim }
@@ -1482,44 +1581,44 @@
\cs_new_protected:Nn \__nm_create_extra_nodes:
{
\begin { tikzpicture } [ remember~picture , overlay ]
- \int_step_variable:nnnNn \l__nm_nb_first_row_int 1 \g__nm_row_int \__nm_i
+ \int_step_variable:nnnNn \l__nm_nb_first_row_int 1 \g__nm_row_int \__nm_i:
{
- \dim_zero_new:c { l__nm_row_\__nm_i _min_dim }
- \dim_set_eq:cN { l__nm_row_\__nm_i _min_dim } \c_max_dim
- \dim_zero_new:c { l__nm_row_\__nm_i _max_dim }
- \dim_set:cn { l__nm_row_\__nm_i _max_dim } { - \c_max_dim }
+ \dim_zero_new:c { l__nm_row_\__nm_i: _min_dim }
+ \dim_set_eq:cN { l__nm_row_\__nm_i: _min_dim } \c_max_dim
+ \dim_zero_new:c { l__nm_row_\__nm_i: _max_dim }
+ \dim_set:cn { l__nm_row_\__nm_i: _max_dim } { - \c_max_dim }
}
- \int_step_variable:nNn \g__nm_column_total_int \__nm_j
+ \int_step_variable:nNn \g__nm_column_total_int \__nm_j:
{
- \dim_zero_new:c { l__nm_column_\__nm_j _min_dim }
- \dim_set_eq:cN { l__nm_column_\__nm_j _min_dim } \c_max_dim
- \dim_zero_new:c { l__nm_column_\__nm_j _max_dim }
- \dim_set:cn { l__nm_column_\__nm_j _max_dim } { - \c_max_dim }
+ \dim_zero_new:c { l__nm_column_\__nm_j: _min_dim }
+ \dim_set_eq:cN { l__nm_column_\__nm_j: _min_dim } \c_max_dim
+ \dim_zero_new:c { l__nm_column_\__nm_j: _max_dim }
+ \dim_set:cn { l__nm_column_\__nm_j: _max_dim } { - \c_max_dim }
}
- \int_step_variable:nnNn \l__nm_nb_first_row_int \g__nm_row_int \__nm_i
+ \int_step_variable:nnNn \l__nm_nb_first_row_int \g__nm_row_int \__nm_i:
{
- \int_step_variable:nNn \g__nm_column_total_int \__nm_j
+ \int_step_variable:nNn \g__nm_column_total_int \__nm_j:
{ \cs_if_exist:cT
- { pgf@sh@ns@nm - \int_use:N \g__nm_env_int - \__nm_i- \__nm_j }
+ { pgf@sh@ns@nm - \int_use:N \g__nm_env_int - \__nm_i: - \__nm_j: }
{
\tikz@parse@node \pgfutil@firstofone
( nm - \int_use:N \g__nm_env_int
- - \__nm_i - \__nm_j .south~west )
- \dim_set:cn { l__nm_row_\__nm_i _min_dim}
- { \dim_min:vn { l__nm_row _ \__nm_i _min_dim } \pgf@y }
- \seq_if_in:NxF \g__nm_multicolumn_cells_seq { \__nm_i - \__nm_j }
+ - \__nm_i: - \__nm_j: .south~west )
+ \dim_set:cn { l__nm_row_\__nm_i: _min_dim}
+ { \dim_min:vn { l__nm_row _ \__nm_i: _min_dim } \pgf@y }
+ \seq_if_in:NxF \g__nm_multicolumn_cells_seq { \__nm_i: - \__nm_j: }
{
- \dim_set:cn { l__nm_column _ \__nm_j _ min_dim}
- { \dim_min:vn { l__nm_column _ \__nm_j _min_dim } \pgf@x }
+ \dim_set:cn { l__nm_column _ \__nm_j: _min_dim}
+ { \dim_min:vn { l__nm_column _ \__nm_j: _min_dim } \pgf@x }
}
\tikz@parse@node \pgfutil@firstofone
- ( nm - \int_use:N \g__nm_env_int - \__nm_i - \__nm_j .north~east )
- \dim_set:cn { l__nm_row _ \__nm_i _ max_dim }
- { \dim_max:vn { l__nm_row _ \__nm_i _ max_dim } \pgf@y }
- \seq_if_in:NxF \g__nm_multicolumn_cells_seq { \__nm_i - \__nm_j }
+ ( nm - \int_use:N \g__nm_env_int - \__nm_i: - \__nm_j: .north~east )
+ \dim_set:cn { l__nm_row _ \__nm_i: _ max_dim }
+ { \dim_max:vn { l__nm_row _ \__nm_i: _ max_dim } \pgf@y }
+ \seq_if_in:NxF \g__nm_multicolumn_cells_seq { \__nm_i: - \__nm_j: }
{
- \dim_set:cn { l__nm_column _ \__nm_j _ max_dim }
- { \dim_max:vn { l__nm_column _ \__nm_j _max_dim } \pgf@x }
+ \dim_set:cn { l__nm_column _ \__nm_j: _ max_dim }
+ { \dim_max:vn { l__nm_column _ \__nm_j: _max_dim } \pgf@x }
}
}
}
@@ -1527,33 +1626,33 @@
\tikzset { name~suffix = -medium }
\__nm_create_nodes:
\int_set:Nn \l__nm_nb_first_row_int 1
- \int_step_variable:nNn { \g__nm_row_int - 1 } \__nm_i
+ \int_step_variable:nNn { \g__nm_row_int - 1 } \__nm_i:
{
- \dim_set:cn { l__nm_row _ \__nm_i _ min _ dim }
+ \dim_set:cn { l__nm_row _ \__nm_i: _ min _ dim }
{
(
- \dim_use:c { l__nm_row _ \__nm_i _ min _ dim } +
- \dim_use:c { l__nm_row _ \int_eval:n { \__nm_i + 1 } _ max _ dim }
+ \dim_use:c { l__nm_row _ \__nm_i: _ min _ dim } +
+ \dim_use:c { l__nm_row _ \int_eval:n { \__nm_i: + 1 } _ max _ dim }
)
/ 2
}
- \dim_set_eq:cc { l__nm_row _ \int_eval:n { \__nm_i + 1 } _ max _ dim }
- { l__nm_row_\__nm_i _min_dim }
+ \dim_set_eq:cc { l__nm_row _ \int_eval:n { \__nm_i: + 1 } _ max _ dim }
+ { l__nm_row_\__nm_i: _min_dim }
}
- \int_step_variable:nNn { \g__nm_column_int - 1 } \__nm_j
+ \int_step_variable:nNn { \g__nm_column_int - 1 } \__nm_j:
{
- \dim_set:cn { l__nm_column _ \__nm_j _ max _ dim }
+ \dim_set:cn { l__nm_column _ \__nm_j: _ max _ dim }
{
(
\dim_use:c
- { l__nm_column _ \__nm_j _ max _ dim } +
+ { l__nm_column _ \__nm_j: _ max _ dim } +
\dim_use:c
- { l__nm_column _ \int_eval:n { \__nm_j + 1 } _ min _ dim }
+ { l__nm_column _ \int_eval:n { \__nm_j: + 1 } _ min _ dim }
)
/ 2
}
- \dim_set_eq:cc { l__nm_column _ \int_eval:n { \__nm_j + 1 } _ min _ dim }
- { l__nm_column _ \__nm_j _ max _ dim }
+ \dim_set_eq:cc { l__nm_column _ \int_eval:n { \__nm_j: + 1 } _ min _ dim }
+ { l__nm_column _ \__nm_j: _ max _ dim }
}
\dim_sub:cn
{ l__nm_column _ 1 _ min _ dim }
@@ -1564,7 +1663,7 @@
\tikzset { name~suffix = -large }
\__nm_create_nodes:
\end{tikzpicture}
- \cs_set:Nn \__nm_create_extra_nodes: { }
+ \cs_set:Npn \__nm_create_extra_nodes: { }
\begin { tikzpicture } [ remember~picture , overlay ]
\tikz@parse@node \pgfutil@firstofone
( nm - \int_use:N \g__nm_env_int - 1 - 1 - large .north~west )
@@ -1584,25 +1683,25 @@
}
\cs_new_protected:Nn \__nm_create_nodes:
{
- \int_step_variable:nnnNn \l__nm_nb_first_row_int 1 \g__nm_row_int \__nm_i
+ \int_step_variable:nnNn \l__nm_nb_first_row_int \g__nm_row_int \__nm_i:
{
- \int_step_variable:nnnNn 1 1 \g__nm_column_total_int \__nm_j
+ \int_step_variable:nNn \g__nm_column_total_int \__nm_j:
{
\coordinate ( __nm~south~west )
- at ( \dim_use:c { l__nm_column_ \__nm_j _min_dim } ,
- \dim_use:c { l__nm_row_ \__nm_i _min_dim } ) ;
+ at ( \dim_use:c { l__nm_column_ \__nm_j: _min_dim } ,
+ \dim_use:c { l__nm_row_ \__nm_i: _min_dim } ) ;
\coordinate ( __nm~north~east )
- at ( \dim_use:c { l__nm_column_ \__nm_j _max_dim },
- \dim_use:c { l__nm_row_ \__nm_i _max_dim } ) ;
+ at ( \dim_use:c { l__nm_column_ \__nm_j: _max_dim },
+ \dim_use:c { l__nm_row_ \__nm_i: _max_dim } ) ;
\node
[
node~contents = { } ,
fit = ( __nm~south~west ) ( __nm~north~east ) ,
inner~sep = \c_zero_dim ,
- name = nm - \int_use:N \g__nm_env_int - \__nm_i - \__nm_j ,
+ name = nm - \int_use:N \g__nm_env_int - \__nm_i: - \__nm_j: ,
alias =
\str_if_empty:NF \g__nm_name_str
- { \g__nm_name_str - \__nm_i - \__nm_j }
+ { \g__nm_name_str - \__nm_i: - \__nm_j: }
]
;
}
@@ -1614,34 +1713,34 @@
}
\cs_new_protected:Npn \__nm_extract_coords: #1 - #2 \q_stop
{
- \cs_set:Npn \__nm_i { #1 }
- \cs_set:Npn \__nm_j { #2 }
+ \cs_set:Npn \__nm_i: { #1 }
+ \cs_set:Npn \__nm_j: { #2 }
}
\cs_new_protected:Nn \__nm_node_for_multicolumn:nn
{
\__nm_extract_coords: #1 \q_stop
\coordinate ( __nm~south~west ) at
(
- \dim_use:c { l__nm_column _ \__nm_j _ min _ dim } ,
- \dim_use:c { l__nm_row _ \__nm_i _ min _ dim }
+ \dim_use:c { l__nm_column _ \__nm_j: _ min _ dim } ,
+ \dim_use:c { l__nm_row _ \__nm_i: _ min _ dim }
) ;
\coordinate ( __nm~north~east ) at
(
- \dim_use:c { l__nm_column _ \int_eval:n { \__nm_j + #2 - 1 } _ max _ dim} ,
- \dim_use:c { l__nm_row _ \__nm_i _ max _ dim }
+ \dim_use:c { l__nm_column _ \int_eval:n { \__nm_j: + #2 - 1 } _ max _ dim} ,
+ \dim_use:c { l__nm_row _ \__nm_i: _ max _ dim }
) ;
\node
[
node~contents = { } ,
fit = ( __nm~south~west ) ( __nm~north~east ) ,
inner~sep = \c_zero_dim ,
- name = nm - \int_use:N \g__nm_env_int - \__nm_i - \__nm_j ,
+ name = nm - \int_use:N \g__nm_env_int - \__nm_i: - \__nm_j: ,
alias =
- \str_if_empty:NF \g__nm_name_str { \g__nm_name_str - \__nm_i - \__nm_j }
+ \str_if_empty:NF \g__nm_name_str { \g__nm_name_str - \__nm_i: - \__nm_j: }
]
;
}
-\ProcessKeysOptions {NiceMatrix}
+\ProcessKeysOptions { NiceMatrix }
\cs_new:Npn \__nm_seq_mapthread_function:NNN #1 #2 #3
{
\group_begin: