From 423d970d7b4fc4627d5e337f4e002fbd3300a5d0 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Wed, 16 Feb 2022 21:17:13 +0000 Subject: nicematrix (16feb22) git-svn-id: svn://tug.org/texlive/trunk@62043 c570f23f-e606-0410-a88d-b1316a301751 --- .../texmf-dist/tex/latex/nicematrix/nicematrix.sty | 323 ++++++++++++--------- 1 file changed, 182 insertions(+), 141 deletions(-) (limited to 'Master/texmf-dist/tex') diff --git a/Master/texmf-dist/tex/latex/nicematrix/nicematrix.sty b/Master/texmf-dist/tex/latex/nicematrix/nicematrix.sty index c20a52be74f..51b0a3e4936 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{6.5} -\def\myfiledate{2022/01/23} +\def\myfileversion{6.6} +\def\myfiledate{2022/02/16} \RequirePackage{pgfcore} \usepgfmodule{shapes} \RequirePackage{l3keys2e} @@ -42,14 +42,15 @@ { \msg_redirect_name:nnn { nicematrix } } \bool_new:N \c__nicematrix_in_preamble_bool \bool_set_true:N \c__nicematrix_in_preamble_bool -\AtBeginDocument { \bool_set_false:N \c__nicematrix_in_preamble_bool } +\hook_gput_code:nnn { begindocument } { . } + { \bool_set_false:N \c__nicematrix_in_preamble_bool } \bool_new:N \c__nicematrix_arydshln_loaded_bool \bool_new:N \c__nicematrix_booktabs_loaded_bool \bool_new:N \c__nicematrix_enumitem_loaded_bool \bool_new:N \c__nicematrix_tabularx_loaded_bool \bool_new:N \c__nicematrix_tikz_loaded_bool \bool_new:N \c__nicematrix_varwidth_loaded_bool -\AtBeginDocument +\hook_gput_code:nnn { begindocument } { . } { \@ifpackageloaded { varwidth } { \bool_set_true:N \c__nicematrix_varwidth_loaded_bool } @@ -112,7 +113,7 @@ \tex_mkern:D 1 mu } } -\AtBeginDocument +\hook_gput_code:nnn { begindocument } { . } { \@ifpackageloaded { booktabs } { \iow_now:Nn \@mainaux \nicematrix@redefine@check@rerun } @@ -128,7 +129,7 @@ } } \bool_new:N \c__nicematrix_colortbl_loaded_bool -\AtBeginDocument +\hook_gput_code:nnn { begindocument } { . } { \@ifpackageloaded { colortbl } { \bool_set_true:N \c__nicematrix_colortbl_loaded_bool } @@ -217,13 +218,13 @@ { \cs_set:Npn \CT@drsc@ { \color { #1 } } } \cs_set_eq:NN \__nicematrix_old_pgfpointanchor \pgfpointanchor \bool_new:N \c__nicematrix_siunitx_loaded_bool -\AtBeginDocument +\hook_gput_code:nnn { begindocument } { . } { \@ifpackageloaded { siunitx } { \bool_set_true:N \c__nicematrix_siunitx_loaded_bool } { } } -\AtBeginDocument +\hook_gput_code:nnn { begindocument } { . } { \bool_if:nTF { ! \c__nicematrix_siunitx_loaded_bool } { \cs_set_eq:NN \__nicematrix_renew_NC@rewrite@S: \prg_do_nothing: } @@ -304,8 +305,8 @@ \dim_new:N \l__nicematrix_y_initial_dim \dim_new:N \l__nicematrix_x_final_dim \dim_new:N \l__nicematrix_y_final_dim -\dim_zero_new:N \l_tmpc_dim -\dim_zero_new:N \l_tmpd_dim +\dim_zero_new:N \l__nicematrix_tmpc_dim +\dim_zero_new:N \l__nicematrix_tmpd_dim \bool_new:N \g__nicematrix_empty_cell_bool \dim_new:N \g__nicematrix_width_last_col_dim \dim_new:N \g__nicematrix_width_first_col_dim @@ -391,7 +392,7 @@ \cs_new:Npn \__nicematrix_notes_label_in_tabular:n #1 { \textsuperscript { #1 } } \cs_new:Npn \__nicematrix_notes_label_in_list:n #1 { \textsuperscript { #1 } } \cs_set:Npn \thetabularnote { { \__nicematrix_notes_style:n { tabularnote } } } -\AtBeginDocument +\hook_gput_code:nnn { begindocument } { . } { \bool_if:nTF { ! \c__nicematrix_enumitem_loaded_bool } { @@ -505,11 +506,14 @@ \dim_new:N \l__nicematrix_cell_space_top_limit_dim \dim_new:N \l__nicematrix_cell_space_bottom_limit_dim \dim_new:N \l__nicematrix_inter_dots_dim -\AtBeginDocument { \dim_set:Nn \l__nicematrix_inter_dots_dim { 0.45 em } } +\hook_gput_code:nnn { begindocument } { . } + { \dim_set:Nn \l__nicematrix_inter_dots_dim { 0.45 em } } \dim_new:N \l__nicematrix_xdots_shorten_dim -\AtBeginDocument { \dim_set:Nn \l__nicematrix_xdots_shorten_dim { 0.3 em } } +\hook_gput_code:nnn { begindocument } { . } + { \dim_set:Nn \l__nicematrix_xdots_shorten_dim { 0.3 em } } \dim_new:N \l__nicematrix_radius_dim -\AtBeginDocument { \dim_set:Nn \l__nicematrix_radius_dim { 0.53 pt } } +\hook_gput_code:nnn { begindocument } { . } + { \dim_set:Nn \l__nicematrix_radius_dim { 0.53 pt } } \tl_new:N \l__nicematrix_xdots_line_style_tl \tl_const:Nn \c__nicematrix_standard_tl { standard } \tl_set_eq:NN \l__nicematrix_xdots_line_style_tl \c__nicematrix_standard_tl @@ -521,7 +525,8 @@ \bool_set_true:N \l__nicematrix_parallelize_diags_bool \clist_new:N \l__nicematrix_corners_clist \dim_new:N \l__nicematrix_notes_above_space_dim -\AtBeginDocument { \dim_set:Nn \l__nicematrix_notes_above_space_dim { 1 mm } } +\hook_gput_code:nnn { begindocument } { . } + { \dim_set:Nn \l__nicematrix_notes_above_space_dim { 1 mm } } \bool_new:N \l__nicematrix_nullify_dots_bool \bool_new:N \l__nicematrix_respect_arraystretch_bool \bool_new:N \l__nicematrix_auto_columns_width_bool @@ -714,7 +719,7 @@ { \bool_if:NTF \c__nicematrix_in_preamble_bool { - \AtBeginDocument + \hook_gput_code:nnn { begindocument } { . } { \bool_if:NT \c__nicematrix_enumitem_loaded_bool { \setlist* [ tabularnotes ] { #1 } } @@ -730,7 +735,7 @@ { \bool_if:NTF \c__nicematrix_in_preamble_bool { - \AtBeginDocument + \hook_gput_code:nnn { begindocument } { . } { \bool_if:NT \c__nicematrix_enumitem_loaded_bool { \setlist* [ tabularnotes* ] { #1 } } @@ -806,13 +811,6 @@ small .value_forbidden:n = true , renew-matrix .code:n = \__nicematrix_renew_matrix: , renew-matrix .value_forbidden:n = true , - transparent .code:n = - { - \__nicematrix_renew_matrix: - \bool_set_true:N \l__nicematrix_renew_dots_bool - \__nicematrix_error:n { Key~transparent } - } , - transparent .value_forbidden:n = true, exterior-arraycolsep .bool_set:N = \l__nicematrix_exterior_arraycolsep_bool , columns-width .code:n = \tl_if_eq:nnTF { #1 } { auto } @@ -1261,7 +1259,7 @@ \bool_if:NT \l__nicematrix_colortbl_like_bool \__nicematrix_colortbl_like: \bool_if:NT \l__nicematrix_renew_dots_bool \__nicematrix_renew_dots: \cs_set_eq:NN \multicolumn \__nicematrix_multicolumn:nnn - \AtBeginEnvironment { tabular } + \hook_gput_code:nnn { env / tabular / begin } { . } { \cs_set_eq:NN \multicolumn \__nicematrix_old_multicolumn } \seq_gclear:N \g__nicematrix_multicolumn_cells_seq \seq_gclear:N \g__nicematrix_multicolumn_sizes_seq @@ -1480,15 +1478,15 @@ \__nicematrix_qpoint:n { #1 } \dim_set_eq:NN \l_tmpb_dim \pgf@y \__nicematrix_qpoint:n { col - \__nicematrix_succ:n { #4 } } - \dim_set_eq:NN \l_tmpc_dim \pgf@x + \dim_set_eq:NN \l__nicematrix_tmpc_dim \pgf@x \__nicematrix_qpoint:n { \__nicematrix_succ:n { #3 } } - \dim_set_eq:NN \l_tmpd_dim \pgf@y + \dim_set_eq:NN \l__nicematrix_tmpd_dim \pgf@y \__nicematrix_pgf_rect_node:nnnnn { \__nicematrix_env: - #5 } { \dim_use:N \l_tmpa_dim } { \dim_use:N \l_tmpb_dim } - { \dim_use:N \l_tmpc_dim } - { \dim_use:N \l_tmpd_dim } + { \dim_use:N \l__nicematrix_tmpc_dim } + { \dim_use:N \l__nicematrix_tmpd_dim } } } \cs_new_protected:Npn \__nicematrix_patch_for_revtex: @@ -3189,7 +3187,7 @@ } { #5 } } -\AtBeginDocument +\hook_gput_code:nnn { begindocument } { . } { \cs_new_protected:Npx \__nicematrix_draw_dotted_lines: { @@ -3235,12 +3233,12 @@ \__nicematrix_qpoint:n { row - \int_min:nn { ##1 } { \c@iRow + 1 } } \dim_set_eq:NN \l_tmpb_dim \pgf@y \__nicematrix_qpoint:n { col - \int_min:nn { ##1 + 1 } { \c@jCol + 1 } } - \dim_set_eq:NN \l_tmpc_dim \pgf@x + \dim_set_eq:NN \l__nicematrix_tmpc_dim \pgf@x \__nicematrix_qpoint:n { row - \int_min:nn { ##1 + 1 } { \c@iRow + 1 } } - \dim_set_eq:NN \l_tmpd_dim \pgf@y + \dim_set_eq:NN \l__nicematrix_tmpd_dim \pgf@y \pgftransformshift { \pgfpoint \l_tmpa_dim \l_tmpb_dim } - \dim_set:Nn \l_tmpa_dim { ( \l_tmpc_dim - \l_tmpa_dim ) / 2 } - \dim_set:Nn \l_tmpb_dim { ( \l_tmpd_dim - \l_tmpb_dim ) / 2 } + \dim_set:Nn \l_tmpa_dim { ( \l__nicematrix_tmpc_dim - \l_tmpa_dim ) / 2 } + \dim_set:Nn \l_tmpb_dim { ( \l__nicematrix_tmpd_dim - \l_tmpb_dim ) / 2 } \pgfnode { __nicematrix_diag_node } { center } { } { \__nicematrix_env: - ##1 } { } \str_if_empty:NF \l__nicematrix_name_str { \pgfnodealias { \l__nicematrix_name_str - ##1 } { \__nicematrix_env: - ##1 } } @@ -3994,7 +3992,7 @@ } \pgfusepathqfill } -\AtBeginDocument +\hook_gput_code:nnn { begindocument } { . } { \tl_set:Nn \l__nicematrix_argspec_tl { O { } E { _ ^ } { { } { } } } \tl_set_rescan:Nno \l__nicematrix_argspec_tl { } \l__nicematrix_argspec_tl @@ -4124,7 +4122,7 @@ \__nicematrix_Hdotsfor_i } } -\AtBeginDocument +\hook_gput_code:nnn { begindocument } { . } { \tl_set:Nn \l__nicematrix_argspec_tl { O { } m O { } E { _ ^ } { { } { } } } \tl_set_rescan:Nno \l__nicematrix_argspec_tl { } \l__nicematrix_argspec_tl @@ -4201,7 +4199,7 @@ \int_step_inline:nnn { #2 } { #2 + #3 - 1 } { \cs_set:cpn { __nicematrix _ dotted _ #1 - ##1 } { } } } -\AtBeginDocument +\hook_gput_code:nnn { begindocument } { . } { \tl_set:Nn \l__nicematrix_argspec_tl { O { } m O { } E { _ ^ } { { } { } } } \tl_set_rescan:Nno \l__nicematrix_argspec_tl { } \l__nicematrix_argspec_tl @@ -4279,7 +4277,7 @@ \cs_new_protected:Npn \__nicematrix_rotate: { \bool_gset_true:N \g__nicematrix_rotate_bool } \cs_new:Npn \__nicematrix_double_int_eval:n #1-#2 \q_stop { \int_eval:n { #1 } - \int_eval:n { #2 } } -\AtBeginDocument +\hook_gput_code:nnn { begindocument } { . } { \tl_set:Nn \l__nicematrix_argspec_tl { O { } m m ! O { } E { _ ^ } { { } { } } } \tl_set_rescan:Nno \l__nicematrix_argspec_tl { } \l__nicematrix_argspec_tl @@ -4312,7 +4310,7 @@ } { \__nicematrix_draw_line_ii:nn { #1 } { #2 } } } -\AtBeginDocument +\hook_gput_code:nnn { begindocument } { . } { \cs_new_protected:Npx \__nicematrix_draw_line_ii:nn #1 #2 { @@ -4353,7 +4351,7 @@ nb-rows .int_set:N = \l__nicematrix_key_nb_rows_int , nb-rows .value_required:n = true , nb-rows .initial:n = 1 , - rowcolor .tl_set:N = \l_tmpc_tl , + rowcolor .tl_set:N = \l__nicematrix_tmpc_tl , rowcolor .value_required:n = true , rowcolor .initial:n = , unknown .code:n = \__nicematrix_error:n { Unknown~key~for~RowStyle } @@ -4361,12 +4359,12 @@ \NewDocumentCommand \__nicematrix_RowStyle:n { O { } m } { \keys_set:nn { NiceMatrix / RowStyle } { #1 } - \tl_if_empty:NF \l_tmpc_tl + \tl_if_empty:NF \l__nicematrix_tmpc_tl { \tl_gput_right:Nx \g_nicematrix_code_before_tl { \__nicematrix_rectanglecolor - { \l_tmpc_tl } + { \l__nicematrix_tmpc_tl } { \int_use:N \c@iRow - \int_use:N \c@jCol } { \int_use:N \c@iRow - * } } @@ -4375,7 +4373,7 @@ \tl_gput_right:Nx \g_nicematrix_code_before_tl { \__nicematrix_rowcolor - { \l_tmpc_tl } + { \l__nicematrix_tmpc_tl } { \int_eval:n { \c@iRow + 1 } - \int_eval:n { \c@iRow + \l__nicematrix_key_nb_rows_int - 1 } @@ -4503,13 +4501,13 @@ \cs_new_protected:Npn \__nicematrix_rectanglecolor:nnn #1 #2 #3 { \__nicematrix_cut_on_hyphen:w #1 \q_stop - \tl_clear_new:N \l_tmpc_tl - \tl_clear_new:N \l_tmpd_tl - \tl_set_eq:NN \l_tmpc_tl \l_tmpa_tl - \tl_set_eq:NN \l_tmpd_tl \l_tmpb_tl + \tl_clear_new:N \l__nicematrix_tmpc_tl + \tl_clear_new:N \l__nicematrix_tmpd_tl + \tl_set_eq:NN \l__nicematrix_tmpc_tl \l_tmpa_tl + \tl_set_eq:NN \l__nicematrix_tmpd_tl \l_tmpb_tl \__nicematrix_cut_on_hyphen:w #2 \q_stop - \tl_set:Nx \l__nicematrix_rows_tl { \l_tmpc_tl - \l_tmpa_tl } - \tl_set:Nx \l__nicematrix_cols_tl { \l_tmpd_tl - \l_tmpb_tl } + \tl_set:Nx \l__nicematrix_rows_tl { \l__nicematrix_tmpc_tl - \l_tmpa_tl } + \tl_set:Nx \l__nicematrix_cols_tl { \l__nicematrix_tmpd_tl - \l_tmpb_tl } \__nicematrix_cartesian_path:n { #3 } } \NewDocumentCommand \__nicematrix_cellcolor { O { } m m } @@ -4573,9 +4571,9 @@ \bool_if:NTF \l__nicematrix_rowcolors_restart_bool { \int_set:Nn \l__nicematrix_color_int 1 } { \int_set:Nn \l__nicematrix_color_int \l_tmpa_tl } - \int_zero_new:N \l_tmpc_int - \int_set:Nn \l_tmpc_int \l_tmpb_tl - \int_do_until:nNnn \l_tmpa_int > \l_tmpc_int + \int_zero_new:N \l__nicematrix_tmpc_int + \int_set:Nn \l__nicematrix_tmpc_int \l_tmpb_tl + \int_do_until:nNnn \l_tmpa_int > \l__nicematrix_tmpc_int { \int_set_eq:NN \l_tmpb_int \l_tmpa_int \bool_if:NT \l__nicematrix_respect_blocks_bool @@ -4667,11 +4665,11 @@ { \tl_set:Nx \l_tmpb_tl { \int_use:N \c@jCol } } \int_compare:nNnT \l_tmpb_tl > \c@jCol { \tl_set:Nx \l_tmpb_tl { \int_use:N \c@jCol } } - \tl_set_eq:NN \l_tmpc_tl \l_tmpa_tl + \tl_set_eq:NN \l__nicematrix_tmpc_tl \l_tmpa_tl \__nicematrix_qpoint:n { col - \l_tmpa_tl } \int_compare:nNnTF \l__nicematrix_first_col_int = \l_tmpa_tl - { \dim_set:Nn \l_tmpc_dim { \pgf@x - 0.5 \arrayrulewidth } } - { \dim_set:Nn \l_tmpc_dim { \pgf@x + 0.5 \arrayrulewidth } } + { \dim_set:Nn \l__nicematrix_tmpc_dim { \pgf@x - 0.5 \arrayrulewidth } } + { \dim_set:Nn \l__nicematrix_tmpc_dim { \pgf@x + 0.5 \arrayrulewidth } } \__nicematrix_qpoint:n { col - \__nicematrix_succ:n \l_tmpb_tl } \dim_set:Nn \l_tmpa_dim { \pgf@x + 0.5 \arrayrulewidth } \clist_map_inline:Nn \l__nicematrix_rows_tl @@ -4686,15 +4684,15 @@ \int_compare:nNnT \l_tmpb_tl > \c@iRow { \tl_set:Nx \l_tmpb_tl { \int_use:N \c@iRow } } \seq_if_in:NxF \l__nicematrix_corners_cells_seq - { \l_tmpa_tl - \l_tmpc_tl } + { \l_tmpa_tl - \l__nicematrix_tmpc_tl } { \__nicematrix_qpoint:n { row - \__nicematrix_succ:n \l_tmpb_tl } \dim_set:Nn \l_tmpb_dim { \pgf@y + 0.5 \arrayrulewidth } \__nicematrix_qpoint:n { row - \l_tmpa_tl } - \dim_set:Nn \l_tmpd_dim { \pgf@y + 0.5 \arrayrulewidth } + \dim_set:Nn \l__nicematrix_tmpd_dim { \pgf@y + 0.5 \arrayrulewidth } \pgfsetcornersarced { \pgfpoint { #1 } { #1 } } \pgfpathrectanglecorners - { \pgfpoint \l_tmpc_dim \l_tmpd_dim } + { \pgfpoint \l__nicematrix_tmpc_dim \l__nicematrix_tmpd_dim } { \pgfpoint \l_tmpa_dim \l_tmpb_dim } } } @@ -4801,7 +4799,9 @@ sep-color .value_required:n = true , tikz .tl_set:N = \l__nicematrix_tikz_rule_tl , tikz .value_required:n = true , - tikz .initial:n = + tikz .initial:n = , + width .dim_set:N = \l__nicematrix_rule_width_dim , + width .value_required:n = true } \cs_new_protected:Npn \__nicematrix_vline:n #1 { @@ -4896,7 +4896,7 @@ \__nicematrix_qpoint:n { col - \int_use:N \l__nicematrix_position_int } \dim_set_eq:NN \l_tmpb_dim \pgf@x \__nicematrix_qpoint:n { row - \int_eval:n { \l__nicematrix_local_end_int + 1 } } - \dim_set_eq:NN \l_tmpc_dim \pgf@y + \dim_set_eq:NN \l__nicematrix_tmpc_dim \pgf@y \bool_lazy_all:nT { { \int_compare_p:nNn \l__nicematrix_multiplicity_int > 1 } @@ -4907,26 +4907,26 @@ \group_begin: \CT@drsc@ \dim_add:Nn \l_tmpa_dim { 0.5 \arrayrulewidth } - \dim_sub:Nn \l_tmpc_dim { 0.5 \arrayrulewidth } - \dim_set:Nn \l_tmpd_dim + \dim_sub:Nn \l__nicematrix_tmpc_dim { 0.5 \arrayrulewidth } + \dim_set:Nn \l__nicematrix_tmpd_dim { \l_tmpb_dim - ( \doublerulesep + \arrayrulewidth ) * ( \l__nicematrix_multiplicity_int - 1 ) } \pgfpathrectanglecorners { \pgfpoint \l_tmpb_dim \l_tmpa_dim } - { \pgfpoint \l_tmpd_dim \l_tmpc_dim } + { \pgfpoint \l__nicematrix_tmpd_dim \l__nicematrix_tmpc_dim } \pgfusepath { fill } \group_end: } \pgfpathmoveto { \pgfpoint \l_tmpb_dim \l_tmpa_dim } - \pgfpathlineto { \pgfpoint \l_tmpb_dim \l_tmpc_dim } + \pgfpathlineto { \pgfpoint \l_tmpb_dim \l__nicematrix_tmpc_dim } \prg_replicate:nn { \l__nicematrix_multiplicity_int - 1 } { \dim_sub:Nn \l_tmpb_dim \arrayrulewidth \dim_sub:Nn \l_tmpb_dim \doublerulesep \pgfpathmoveto { \pgfpoint \l_tmpb_dim \l_tmpa_dim } - \pgfpathlineto { \pgfpoint \l_tmpb_dim \l_tmpc_dim } + \pgfpathlineto { \pgfpoint \l_tmpb_dim \l__nicematrix_tmpc_dim } } \CT@arc@ \pgfsetlinewidth { 1.1 \arrayrulewidth } @@ -4958,13 +4958,13 @@ \__nicematrix_qpoint:n { row - \int_use:N \l__nicematrix_local_start_int } \dim_set_eq:NN \l_tmpa_dim \pgf@y \__nicematrix_qpoint:n { col - \int_use:N \l__nicematrix_position_int } - \dim_set_eq:NN \l_tmpb_dim \pgf@x + \dim_set:Nn \l_tmpb_dim { \pgf@x - 0.5 \l__nicematrix_rule_width_dim } \__nicematrix_qpoint:n { row - \int_eval:n { \l__nicematrix_local_end_int + 1 } } - \dim_set_eq:NN \l_tmpc_dim \pgf@y + \dim_set_eq:NN \l__nicematrix_tmpc_dim \pgf@y \exp_args:NV \tikzset \l__nicematrix_tikz_rule_tl \use:x { \exp_not:N \draw [ \l__nicematrix_tikz_rule_tl ] } ( \l_tmpb_dim , \l_tmpa_dim ) -- - ( \l_tmpb_dim , \l_tmpc_dim ) ; + ( \l_tmpb_dim , \l__nicematrix_tmpc_dim ) ; \end { tikzpicture } } \cs_new_protected:Npn \__nicematrix_draw_vlines: @@ -5077,7 +5077,7 @@ \__nicematrix_qpoint:n { row - \int_use:N \l__nicematrix_position_int } \dim_set_eq:NN \l_tmpb_dim \pgf@y \__nicematrix_qpoint:n { col - \int_eval:n { \l__nicematrix_local_end_int + 1 } } - \dim_set_eq:NN \l_tmpc_dim \pgf@x + \dim_set_eq:NN \l__nicematrix_tmpc_dim \pgf@x \bool_lazy_all:nT { { \int_compare_p:nNn \l__nicematrix_multiplicity_int > 1 } @@ -5087,25 +5087,25 @@ { \group_begin: \CT@drsc@ - \dim_set:Nn \l_tmpd_dim + \dim_set:Nn \l__nicematrix_tmpd_dim { \l_tmpb_dim - ( \doublerulesep + \arrayrulewidth ) * ( \l__nicematrix_multiplicity_int - 1 ) } \pgfpathrectanglecorners { \pgfpoint \l_tmpa_dim \l_tmpb_dim } - { \pgfpoint \l_tmpc_dim \l_tmpd_dim } + { \pgfpoint \l__nicematrix_tmpc_dim \l__nicematrix_tmpd_dim } \pgfusepathqfill \group_end: } \pgfpathmoveto { \pgfpoint \l_tmpa_dim \l_tmpb_dim } - \pgfpathlineto { \pgfpoint \l_tmpc_dim \l_tmpb_dim } + \pgfpathlineto { \pgfpoint \l__nicematrix_tmpc_dim \l_tmpb_dim } \prg_replicate:nn { \l__nicematrix_multiplicity_int - 1 } { \dim_sub:Nn \l_tmpb_dim \arrayrulewidth \dim_sub:Nn \l_tmpb_dim \doublerulesep \pgfpathmoveto { \pgfpoint \l_tmpa_dim \l_tmpb_dim } - \pgfpathlineto { \pgfpoint \l_tmpc_dim \l_tmpb_dim } + \pgfpathlineto { \pgfpoint \l__nicematrix_tmpc_dim \l_tmpb_dim } } \CT@arc@ \pgfsetlinewidth { 1.1 \arrayrulewidth } @@ -5153,13 +5153,13 @@ \__nicematrix_qpoint:n { col - \int_use:N \l__nicematrix_local_start_int } \dim_set_eq:NN \l_tmpa_dim \pgf@x \__nicematrix_qpoint:n { row - \int_use:N \l__nicematrix_position_int } - \dim_set_eq:NN \l_tmpb_dim \pgf@y + \dim_set:Nn \l_tmpb_dim { \pgf@y - 0.5 \l__nicematrix_rule_width_dim } \__nicematrix_qpoint:n { col - \int_eval:n { \l__nicematrix_local_end_int + 1 } } - \dim_set_eq:NN \l_tmpc_dim \pgf@x + \dim_set_eq:NN \l__nicematrix_tmpc_dim \pgf@x \exp_args:NV \tikzset \l__nicematrix_tikz_rule_tl \use:x { \exp_not:N \draw [ \l__nicematrix_tikz_rule_tl ] } ( \l_tmpa_dim , \l_tmpb_dim ) -- - ( \l_tmpc_dim , \l_tmpb_dim ) ; + ( \l__nicematrix_tmpc_dim , \l_tmpb_dim ) ; \end { tikzpicture } } \cs_new_protected:Npn \__nicematrix_draw_hlines: @@ -5208,7 +5208,25 @@ \keys_define:nn { NiceMatrix / ColumnTypes } { } \cs_new_protected:Npn \__nicematrix_custom_line:n #1 { + \str_clear_new:N \l__nicematrix_command_str + \str_clear_new:N \l__nicematrix_letter_str + \dim_zero_new:N \l__nicematrix_rule_width_dim + \tl_clear:N \l_tmpa_tl + \bool_set_false:N \l_tmpa_bool + \bool_set_false:N \l_tmpb_bool \keys_set_known:nn { NiceMatrix / Custom-Line } { #1 } + \bool_if:NT \l_tmpa_bool + { + \cs_if_exist:NF \tikzpicture + { \__nicematrix_error:n { tikz~in~custom-line~without~tikz } } + \tl_if_empty:NF \l_tmpa_tl + { \__nicematrix_error:n { color~in~custom-line~with~tikz } } + } + \bool_if:NT \l_tmpb_bool + { + \bool_if:NF \l_tmpa_bool + { \__nicematrix_error:n { key~width~without~key~tikz } } + } \bool_lazy_and:nnTF { \str_if_empty_p:N \l__nicematrix_letter_str } { \str_if_empty_p:N \l__nicematrix_command_str } @@ -5232,7 +5250,19 @@ { \__nicematrix_error:n { Several~letters } } } \str_if_empty:NF \l__nicematrix_command_str - { \exp_args:NnV \__nicematrix_define_h_custom_line:nn { #1 } \l_tmpc_int } + { + \bool_if:NF \l_tmpa_bool + { + \dim_set:Nn \l__nicematrix_rule_width_dim + { + \arrayrulewidth * \l__nicematrix_tmpc_int + + \doublerulesep * ( \l__nicematrix_tmpc_int - 1 ) + } + } + \exp_args:NnV \__nicematrix_define_h_custom_line:nn + { #1 } + \l__nicematrix_rule_width_dim + } } } \str_const:Nn \c__nicematrix_forbidden_letters_str { lcrpmbVX:|()[]!@<> } @@ -5240,13 +5270,17 @@ { letter .str_set:N = \l__nicematrix_letter_str , letter .value_required:n = true , - letter .initial:n = , command .str_set:N = \l__nicematrix_command_str , command .value_required:n = true , - command .initial:n = , - multiplicity .int_set:N = \l_tmpc_int , + multiplicity .int_set:N = \l__nicematrix_tmpc_int , multiplicity .initial:n = 1 , multiplicity .value_required:n = true , + color .tl_set:N = \l_tmpa_tl , + color. value_required:n = true , + tikz .code:n = \bool_set_true:N \l_tmpa_bool , + width .code:n = \dim_set:Nn \l__nicematrix_rule_width_dim { #1 } + \bool_set_true:N \l_tmpb_bool , + width .value_required:n = true , } \cs_new_protected:Npn \__nicematrix_define_h_custom_line:nn #1 #2 { @@ -5254,11 +5288,7 @@ { \noalign { - \skip_vertical:n - { - \dim_eval:n - { \arrayrulewidth * #2 + \doublerulesep * ( #2 - 1) } - } + \skip_vertical:n { #2 } \tl_gput_right:Nx \g__nicematrix_internal_code_after_tl { \__nicematrix_hline:n { #1 , position = \int_eval:n { \c@iRow + 1 } } } } @@ -5266,21 +5296,20 @@ } \cs_new_protected:Npn \__nicematrix_custom_line_i:n #1 { - \tl_gput_right:Nx \g__nicematrix_preamble_tl + \bool_if:NF \l_tmpa_bool { - \exp_not:N ! + \dim_set:Nn \l__nicematrix_rule_width_dim { - \skip_horizontal:n - { - \dim_eval:n - { - \arrayrulewidth * \l_tmpc_int - + \doublerulesep * ( \l_tmpc_int - 1) - } - } + \arrayrulewidth * \l__nicematrix_tmpc_int + + \doublerulesep * ( \l__nicematrix_tmpc_int - 1) } } - \tl_gput_right:Nx \g__nicematrix_internal_code_after_tl + \tl_gput_right:Nx \g__nicematrix_preamble_tl + { + \exp_not:N ! + { \skip_horizontal:n { \dim_use:N \l__nicematrix_rule_width_dim } } + } + \tl_gput_right:Nx \g__nicematrix_internal_code_after_tl { \__nicematrix_vline:n { #1 , position = \__nicematrix_succ:n \c@jCol } } } \cs_new_protected:Npn \__nicematrix_test_hline_in_block:nnnnn #1 #2 #3 #4 @@ -6116,12 +6145,12 @@ \__nicematrix_qpoint:n { col - #2 } \dim_set_eq:NN \l_tmpb_dim \pgf@x \__nicematrix_qpoint:n { row - \__nicematrix_succ:n { \l__nicematrix_last_row_int } } - \dim_set_eq:NN \l_tmpc_dim \pgf@y + \dim_set_eq:NN \l__nicematrix_tmpc_dim \pgf@y \__nicematrix_qpoint:n { col - \__nicematrix_succ:n { \l__nicematrix_last_col_int } } - \dim_set_eq:NN \l_tmpd_dim \pgf@x + \dim_set_eq:NN \l__nicematrix_tmpd_dim \pgf@x \__nicematrix_pgf_rect_node:nnnnn { \__nicematrix_env: - #1 - #2 - block } - \l_tmpb_dim \l_tmpa_dim \l_tmpd_dim \l_tmpc_dim + \l_tmpb_dim \l_tmpa_dim \l__nicematrix_tmpd_dim \l__nicematrix_tmpc_dim \str_if_empty:NF \l__nicematrix_block_name_str { \pgfnodealias @@ -6154,7 +6183,7 @@ \__nicematrix_qpoint:n { col - #2 } \dim_set_eq:NN \l_tmpb_dim \pgf@x } - \dim_set:Nn \l_tmpd_dim { - \c_max_dim } + \dim_set:Nn \l__nicematrix_tmpd_dim { - \c_max_dim } \int_step_inline:nnn \l__nicematrix_first_row_int \g__nicematrix_row_total_int { \cs_if_exist:cT @@ -6165,18 +6194,18 @@ \pgfpointanchor { \__nicematrix_env: - ##1 - \int_use:N \l__nicematrix_last_col_int } { east } - \dim_set:Nn \l_tmpd_dim { \dim_max:nn \l_tmpd_dim \pgf@x } + \dim_set:Nn \l__nicematrix_tmpd_dim { \dim_max:nn \l__nicematrix_tmpd_dim \pgf@x } } } } - \dim_compare:nNnT \l_tmpd_dim = { - \c_max_dim } + \dim_compare:nNnT \l__nicematrix_tmpd_dim = { - \c_max_dim } { \__nicematrix_qpoint:n { col - \__nicematrix_succ:n { \l__nicematrix_last_col_int } } - \dim_set_eq:NN \l_tmpd_dim \pgf@x + \dim_set_eq:NN \l__nicematrix_tmpd_dim \pgf@x } \__nicematrix_pgf_rect_node:nnnnn { \__nicematrix_env: - #1 - #2 - block - short } - \l_tmpb_dim \l_tmpa_dim \l_tmpd_dim \l_tmpc_dim + \l_tmpb_dim \l_tmpa_dim \l__nicematrix_tmpd_dim \l__nicematrix_tmpc_dim } \bool_if:NT \l__nicematrix_medium_nodes_bool { @@ -6304,7 +6333,7 @@ \__nicematrix_qpoint:n { row - \l_tmpa_tl } \dim_set:Nn \l_tmpb_dim { \pgf@y } \__nicematrix_qpoint:n { col - \l_tmpb_tl } - \dim_set:Nn \l_tmpc_dim { \pgf@x } + \dim_set:Nn \l__nicematrix_tmpc_dim { \pgf@x } \__nicematrix_cut_on_hyphen:w #3 \q_stop \int_compare:nNnT \l_tmpa_tl > \c@iRow { \tl_set:Nx \l_tmpa_tl { \int_use:N \c@iRow } } @@ -6313,10 +6342,10 @@ \__nicematrix_qpoint:n { row - \__nicematrix_succ:n \l_tmpa_tl } \dim_set:Nn \l_tmpa_dim { \pgf@y } \__nicematrix_qpoint:n { col - \__nicematrix_succ:n \l_tmpb_tl } - \dim_set:Nn \l_tmpd_dim { \pgf@x } + \dim_set:Nn \l__nicematrix_tmpd_dim { \pgf@x } \pgfpathrectanglecorners - { \pgfpoint \l_tmpc_dim \l_tmpb_dim } - { \pgfpoint \l_tmpd_dim \l_tmpa_dim } + { \pgfpoint \l__nicematrix_tmpc_dim \l_tmpb_dim } + { \pgfpoint \l__nicematrix_tmpd_dim \l_tmpa_dim } \pgfsetlinewidth { 1.1 \l__nicematrix_line_width_dim } \pgfusepath { stroke } } @@ -6337,19 +6366,19 @@ \dim_set_eq:NN \l__nicematrix_line_width_dim \arrayrulewidth \keys_set_known:nn { NiceMatrix / BlockBorders } { #1 } \__nicematrix_cut_on_hyphen:w #2 \q_stop - \tl_set_eq:NN \l_tmpc_tl \l_tmpa_tl - \tl_set_eq:NN \l_tmpd_tl \l_tmpb_tl + \tl_set_eq:NN \l__nicematrix_tmpc_tl \l_tmpa_tl + \tl_set_eq:NN \l__nicematrix_tmpd_tl \l_tmpb_tl \__nicematrix_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 } } - \int_step_inline:nnn \l_tmpd_tl \l_tmpb_tl + \int_step_inline:nnn \l__nicematrix_tmpd_tl \l_tmpb_tl { \use:x { \__nicematrix_vline:n { position = ##1 , - start = \l_tmpc_tl , + start = \l__nicematrix_tmpc_tl , end = \__nicematrix_pred:n \l_tmpa_tl } } @@ -6360,19 +6389,19 @@ \dim_set_eq:NN \l__nicematrix_line_width_dim \arrayrulewidth \keys_set_known:nn { NiceMatrix / BlockBorders } { #1 } \__nicematrix_cut_on_hyphen:w #2 \q_stop - \tl_set_eq:NN \l_tmpc_tl \l_tmpa_tl - \tl_set_eq:NN \l_tmpd_tl \l_tmpb_tl + \tl_set_eq:NN \l__nicematrix_tmpc_tl \l_tmpa_tl + \tl_set_eq:NN \l__nicematrix_tmpd_tl \l_tmpb_tl \__nicematrix_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 } } - \int_step_inline:nnn \l_tmpc_tl \l_tmpa_tl + \int_step_inline:nnn \l__nicematrix_tmpc_tl \l_tmpa_tl { \use:x { \__nicematrix_hline:n { position = ##1 , - start = \l_tmpd_tl , + start = \l__nicematrix_tmpd_tl , end = \int_eval:n { \l_tmpb_tl - 1 } } } @@ -6391,8 +6420,8 @@ { \__nicematrix_error:nn { bad~border } { ##1 } } } \__nicematrix_cut_on_hyphen:w #2 \q_stop - \tl_set_eq:NN \l_tmpc_tl \l_tmpa_tl - \tl_set_eq:NN \l_tmpd_tl \l_tmpb_tl + \tl_set_eq:NN \l__nicematrix_tmpc_tl \l_tmpa_tl + \tl_set_eq:NN \l__nicematrix_tmpd_tl \l_tmpb_tl \__nicematrix_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 } } @@ -6404,28 +6433,28 @@ \clist_if_in:NnT \l__nicematrix_borders_clist { right } { \__nicematrix_stroke_vertical:n \l_tmpb_tl } \clist_if_in:NnT \l__nicematrix_borders_clist { left } - { \__nicematrix_stroke_vertical:n \l_tmpd_tl } + { \__nicematrix_stroke_vertical:n \l__nicematrix_tmpd_tl } \clist_if_in:NnT \l__nicematrix_borders_clist { bottom } { \__nicematrix_stroke_horizontal:n \l_tmpa_tl } \clist_if_in:NnT \l__nicematrix_borders_clist { top } - { \__nicematrix_stroke_horizontal:n \l_tmpc_tl } + { \__nicematrix_stroke_horizontal:n \l__nicematrix_tmpc_tl } \endpgfpicture } } \cs_new_protected:Npn \__nicematrix_stroke_vertical:n #1 { - \__nicematrix_qpoint:n \l_tmpc_tl + \__nicematrix_qpoint:n \l__nicematrix_tmpc_tl \dim_set:Nn \l_tmpb_dim { \pgf@y + 0.5 \l__nicematrix_line_width_dim } \__nicematrix_qpoint:n \l_tmpa_tl - \dim_set:Nn \l_tmpc_dim { \pgf@y + 0.5 \l__nicematrix_line_width_dim } + \dim_set:Nn \l__nicematrix_tmpc_dim { \pgf@y + 0.5 \l__nicematrix_line_width_dim } \__nicematrix_qpoint:n { #1 } \pgfpathmoveto { \pgfpoint \pgf@x \l_tmpb_dim } - \pgfpathlineto { \pgfpoint \pgf@x \l_tmpc_dim } + \pgfpathlineto { \pgfpoint \pgf@x \l__nicematrix_tmpc_dim } \pgfusepathqstroke } \cs_new_protected:Npn \__nicematrix_stroke_horizontal:n #1 { - \__nicematrix_qpoint:n \l_tmpd_tl + \__nicematrix_qpoint:n \l__nicematrix_tmpd_tl \clist_if_in:NnTF \l__nicematrix_borders_clist { left } { \dim_set:Nn \l_tmpa_dim { \pgf@x - 0.5 \l__nicematrix_line_width_dim } } { \dim_set:Nn \l_tmpa_dim { \pgf@x + 0.5 \l__nicematrix_line_width_dim } } @@ -6581,10 +6610,10 @@ \dim_set_eq:NN \l_tmpb_dim \pgf@x \pgfpathmoveto { \pgfpoint \l_tmpb_dim \l_tmpa_dim } \__nicematrix_qpoint:n { row - \__nicematrix_succ:n { #3 } } - \dim_set_eq:NN \l_tmpc_dim \pgf@y + \dim_set_eq:NN \l__nicematrix_tmpc_dim \pgf@y \__nicematrix_qpoint:n { col - \__nicematrix_succ:n { #4 } } - \dim_set_eq:NN \l_tmpd_dim \pgf@x - \pgfpathlineto { \pgfpoint \l_tmpd_dim \l_tmpc_dim } + \dim_set_eq:NN \l__nicematrix_tmpd_dim \pgf@x + \pgfpathlineto { \pgfpoint \l__nicematrix_tmpd_dim \l__nicematrix_tmpc_dim } { \CT@arc@ \pgfsetroundcap @@ -6592,7 +6621,7 @@ } \pgfset { inner~sep = 1 pt } \pgfscope - \pgftransformshift { \pgfpoint \l_tmpb_dim \l_tmpc_dim } + \pgftransformshift { \pgfpoint \l_tmpb_dim \l__nicematrix_tmpc_dim } \pgfnode { rectangle } { south~west } { \begin { minipage } { 20 cm } @@ -6602,7 +6631,7 @@ { } { } \endpgfscope - \pgftransformshift { \pgfpoint \l_tmpd_dim \l_tmpa_dim } + \pgftransformshift { \pgfpoint \l__nicematrix_tmpd_dim \l_tmpa_dim } \pgfnode { rectangle } { north~east } { \begin { minipage } { 20 cm } @@ -6767,18 +6796,18 @@ \peek_remove_spaces:n { \__nicematrix_cut_on_hyphen:w #3 \q_stop - \tl_clear_new:N \l_tmpc_tl - \tl_clear_new:N \l_tmpd_tl - \tl_set_eq:NN \l_tmpc_tl \l_tmpa_tl - \tl_set_eq:NN \l_tmpd_tl \l_tmpb_tl + \tl_clear_new:N \l__nicematrix_tmpc_tl + \tl_clear_new:N \l__nicematrix_tmpd_tl + \tl_set_eq:NN \l__nicematrix_tmpc_tl \l_tmpa_tl + \tl_set_eq:NN \l__nicematrix_tmpd_tl \l_tmpb_tl \__nicematrix_cut_on_hyphen:w #2 \q_stop \seq_gput_right:Nx \g__nicematrix_submatrix_seq - { { \l_tmpa_tl } { \l_tmpb_tl } { \l_tmpc_tl } { \l_tmpd_tl } } + { { \l_tmpa_tl } { \l_tmpb_tl } { \l__nicematrix_tmpc_tl } { \l__nicematrix_tmpd_tl } } \tl_gput_right:Nn \g__nicematrix_internal_code_after_tl { \SubMatrix { #1 } { #2 } { #3 } { #4 } [ #5 ] } } } -\AtBeginDocument +\hook_gput_code:nnn { begindocument } { . } { \tl_set:Nn \l__nicematrix_argspec_tl { m m m m O { } E { _ ^ } { { } { } } } \tl_set_rescan:Nno \l__nicematrix_argspec_tl { } \l__nicematrix_argspec_tl @@ -7255,12 +7284,6 @@ renew-dots,~and renew-matrix. } -\__nicematrix_msg_new:nn { Key~transparent } - { - The~key~'transparent'~is~now~obsolete~(because~it's~name~ - is~not~clear).~You~must~use~the~conjonction~of~'renew-dots'~ - and~'renew-matrix'.~This~error~is~fatal. - } \keys_define:nn { NiceMatrix / Package } { renew-dots .bool_set:N = \l__nicematrix_renew_dots_bool , @@ -7495,6 +7518,11 @@ You~can't~use~the~letter~'\l__nicematrix_letter_str'~for~a~customized~line.\\ If~you~go~on,~it~will~be~ignored. } +\__nicematrix_msg_new:nn { key~width~without~key~tikz } + { + In~'custom-line',~you~have~used~'width'~without~'tikz'.~That's~not~correct.~ + If~you~go~on,~that~key~'width'~will~be~discarded. + } \__nicematrix_msg_new:nn { Several~letters } { You~must~use~only~one~letter~as~value~for~the~key~'letter'~(and~ @@ -7625,6 +7653,19 @@ ~because~you~haven't~loaded~'enumitem'.\\ If~you~go~on,~this~command~will~be~ignored. } +\__nicematrix_msg_new:nn { tikz~in~custom-line~without~tikz } + { + You~have~used~the~key~'tikz'~in~the~definition~of~a~ + customized~line~(with~'custom-line')~but~Tikz~is~not~loaded.~ + You~can~go~on~but~you~will~have~another~error~if~you~actually~ + use~that~custom~line. + } +\__nicematrix_msg_new:nn { color~in~custom-line~with~tikz } + { + In~a~'custom-line',~you~have~used~both~'tikz'~and~'color',~ + which~is~forbidden~(you~should~use~'color'~inside~the~key~'tikz').~ + If~you~go~on,~the~key~'color'~will~be~discarded. + } \__nicematrix_msg_new:nn { Wrong~last~row } { You~have~used~'last-row=\int_use:N \l__nicematrix_last_row_int'~but~your~ -- cgit v1.2.3