diff options
author | Karl Berry <karl@freefriends.org> | 2022-06-25 20:23:47 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2022-06-25 20:23:47 +0000 |
commit | e3d6545e5351aedf85b59c1f8657b173e5f9bc10 (patch) | |
tree | 9f195e21199d7129acac86615fdaa355cd175984 /Master/texmf-dist/tex/latex | |
parent | 1fe2a4db97f0240614f55ae98f15b64097dbc5c6 (diff) |
nicematrix (25jun22)
git-svn-id: svn://tug.org/texlive/trunk@63723 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex')
-rw-r--r-- | Master/texmf-dist/tex/latex/nicematrix/nicematrix.sty | 755 |
1 files changed, 437 insertions, 318 deletions
diff --git a/Master/texmf-dist/tex/latex/nicematrix/nicematrix.sty b/Master/texmf-dist/tex/latex/nicematrix/nicematrix.sty index e2cf4c609d8..d23bb1774ef 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.9} -\def\myfiledate{2022/05/25} +\def\myfileversion{6.10} +\def\myfiledate{2022/06/25} \RequirePackage{pgfcore} \usepgfmodule{shapes} \RequirePackage{l3keys2e} @@ -37,7 +37,13 @@ \cs_new_protected:Npn \__nicematrix_fatal:n { \msg_fatal:nn { nicematrix } } \cs_new_protected:Npn \__nicematrix_fatal:nn { \msg_fatal:nnn { nicematrix } } \cs_new_protected:Npn \__nicematrix_msg_new:nn { \msg_new:nnn { nicematrix } } -\cs_new_protected:Npn \__nicematrix_msg_new:nnn { \msg_new:nnnn { nicematrix } } +\cs_new_protected:Npn \__nicematrix_msg_new:nnn #1 #2 #3 + { + \bool_if:NTF \c__nicematrix_messages_for_Overleaf_bool + { \msg_new:nnn { nicematrix } { #1 } { #2 \\ #3 } } + { \msg_new:nnnn { nicematrix } { #1 } { #2 } { #3 } } + } + \cs_new_protected:Npn \__nicematrix_msg_redirect_name:nn { \msg_redirect_name:nnn { nicematrix } } \tl_new:N \l__nicematrix_argspec_tl @@ -248,6 +254,7 @@ \dim_set:Nn \l__nicematrix_col_width_dim { -1 cm } \int_new:N \g__nicematrix_row_total_int \int_new:N \g__nicematrix_col_total_int +\int_new:N \g__nicematrix_last_row_node_int \int_new:N \l__nicematrix_key_nb_rows_int \str_new:N \l__nicematrix_hpos_cell_str \str_set:Nn \l__nicematrix_hpos_cell_str { c } @@ -262,6 +269,7 @@ \bool_new:N \l__nicematrix_NiceArray_bool \bool_new:N \l__nicematrix_NiceTabular_bool \dim_new:N \l__nicematrix_tabular_width_dim +\dim_new:N \l__nicematrix_rule_width_dim \bool_new:N \l__nicematrix_Matrix_bool \bool_new:N \g__nicematrix_rotate_bool \bool_new:N \l__nicematrix_X_column_bool @@ -526,9 +534,13 @@ \dim_new:N \l__nicematrix_xdots_inter_dim \hook_gput_code:nnn { begindocument } { . } { \dim_set:Nn \l__nicematrix_xdots_inter_dim { 0.45 em } } -\dim_new:N \l__nicematrix_xdots_shorten_dim +\dim_new:N \l__nicematrix_xdots_shorten_start_dim +\dim_new:N \l__nicematrix_xdots_shorten_end_dim \hook_gput_code:nnn { begindocument } { . } - { \dim_set:Nn \l__nicematrix_xdots_shorten_dim { 0.3 em } } + { + \dim_set:Nn \l__nicematrix_xdots_shorten_start_dim { 0.3 em } + \dim_set:Nn \l__nicematrix_xdots_shorten_end_dim { 0.3 em } + } \dim_new:N \l__nicematrix_xdots_radius_dim \hook_gput_code:nnn { begindocument } { . } { \dim_set:Nn \l__nicematrix_xdots_radius_dim { 0.53 pt } } @@ -577,8 +589,19 @@ color .value_required:n = true , shorten .code:n = \hook_gput_code:nnn { begindocument } { . } - { \dim_set:Nn \l__nicematrix_xdots_shorten_dim { #1 } } , + { + \dim_set:Nn \l__nicematrix_xdots_shorten_start_dim { #1 } + \dim_set:Nn \l__nicematrix_xdots_shorten_end_dim { #1 } + } , + shorten-start .code:n = + \hook_gput_code:nnn { begindocument } { . } + { \dim_set:Nn \l__nicematrix_xdots_shorten_start_dim { #1 } } , + shorten-end .code:n = + \hook_gput_code:nnn { begindocument } { . } + { \dim_set:Nn \l__nicematrix_xdots_shorten_end_dim { #1 } } , shorten .value_required:n = true , + shorten-start .value_required:n = true , + shorten-end .value_required:n = true , radius .code:n = \hook_gput_code:nnn { begindocument } { . } { \dim_set:Nn \l__nicematrix_xdots_radius_dim { #1 } } , @@ -681,17 +704,7 @@ } \keys_define:nn { NiceMatrix / Env } { - hvlines-except-corners .code:n = - { - \__nicematrix_error:n { hvlines-except-corners } - \group_begin: - \globaldefs = 1 - \__nicematrix_msg_redirect_name:nn { hvlines-except-corners } { none } - \group_end: - \clist_set:Nn \l__nicematrix_corners_clist { #1 } - \clist_set:Nn \l__nicematrix_vlines_clist { all } - \clist_set:Nn \l__nicematrix_hlines_clist { all } - } , + hvlines-except-corners .code:n = \__nicematrix_fatal:n { hvlines-except-corners } , hvlines-except-corners .default:n = { NW , SW , NE , SE } , corners .clist_set:N = \l__nicematrix_corners_clist , corners .default:n = { NW , SW , NE , SE } , @@ -840,18 +853,6 @@ allow-duplicate-names .code:n = \__nicematrix_msg_redirect_name:nn { Duplicate~name } { none } , allow-duplicate-names .value_forbidden:n = true , - letter-for-dotted-lines .code:n = - { - \__nicematrix_error:n { letter-for-dotted-lines } - \group_begin: - \globaldefs = 1 - \__nicematrix_msg_redirect_name:nn { letter-for-dotted-lines } { none } - \group_end: - \tl_if_single_token:nTF { #1 } - { \str_set:Nx \l__nicematrix_letter_for_dotted_lines_str { #1 } } - { \__nicematrix_error:n { One~letter~allowed } } - } , - letter-for-dotted-lines .value_required:n = true , notes .code:n = \keys_set:nn { NiceMatrix / notes } { #1 } , notes .value_required:n = true , sub-matrix .code:n = @@ -859,7 +860,6 @@ sub-matrix .value_required:n = true , unknown .code:n = \__nicematrix_error:n { Unknown~key~for~NiceMatrixOptions } } -\str_new:N \l__nicematrix_letter_for_dotted_lines_str \NewDocumentCommand \NiceMatrixOptions { m } { \keys_set:nn { NiceMatrix / NiceMatrixOptions } { #1 } } \keys_define:nn { NiceMatrix / NiceMatrix } @@ -1132,6 +1132,14 @@ \cs_set_eq:NN \__nicematrix_old_ialign: \ialign \cs_new_protected:Npn \__nicematrix_create_row_node: { + \int_compare:nNnT \c@iRow > \g__nicematrix_last_row_node_int + { + \int_gset_eq:NN \g__nicematrix_last_row_node_int \c@iRow + \__nicematrix_create_row_node_i: + } + } +\cs_new_protected:Npn \__nicematrix_create_row_node_i: + { \hbox { \bool_if:NT \l__nicematrix_code_before_bool @@ -1337,6 +1345,7 @@ \seq_gclear:N \g__nicematrix_pos_of_blocks_seq \seq_gclear_new:N \g__nicematrix_multicolumn_cells_seq \seq_gclear_new:N \g__nicematrix_multicolumn_sizes_seq + \int_gset:Nn \g__nicematrix_last_row_node_int { -1 } \__nicematrix_pre_array_ii: \box_clear_new:N \l__nicematrix_the_array_box \__nicematrix_construct_preamble: @@ -1361,7 +1370,7 @@ { \use:c { __nicematrix-light-syntax } } { \use:c { __nicematrix-normal-syntax } } } -\cs_new_protected:Npn \__nicematrix_pre_array_i:w #1 \Body +\cs_new_protected_nopar:Npn \__nicematrix_CodeBefore_Body:w #1 \Body { \tl_put_right:Nn \l__nicematrix_code_before_tl { #1 } \bool_set_true:N \l__nicematrix_code_before_bool @@ -1588,7 +1597,7 @@ { #3 , #5 } \tl_if_empty:NF \l__nicematrix_rules_color_tl { \exp_after:wN \__nicematrix_set_CT@arc@: \l__nicematrix_rules_color_tl \q_stop } - \IfBooleanTF { #6 } \__nicematrix_pre_array_i:w \__nicematrix_pre_array: + \IfBooleanTF { #6 } \__nicematrix_CodeBefore_Body:w \__nicematrix_pre_array: } { \bool_if:NTF \l__nicematrix_light_syntax_bool @@ -1839,23 +1848,20 @@ \q_stop { } } { - \str_case_e:nnF { #1 } + \str_if_eq:nVTF { #1 } \l__nicematrix_letter_vlism_tl + { + \seq_gput_right:Nx \g__nicematrix_cols_vlism_seq + { \int_eval:n { \c@jCol + 1 } } + \tl_gput_right:Nx \g__nicematrix_preamble_tl + { \exp_not:N ! { \skip_horizontal:N \arrayrulewidth } } + \__nicematrix_patch_preamble:n + } { - \l__nicematrix_letter_for_dotted_lines_str - { \__nicematrix_patch_preamble_xii:n #1 } - \l__nicematrix_letter_vlism_tl + \keys_if_exist:nnTF { NiceMatrix / ColumnTypes } { #1 } { - \seq_gput_right:Nx \g__nicematrix_cols_vlism_seq - { \int_eval:n { \c@jCol + 1 } } - \tl_gput_right:Nx \g__nicematrix_preamble_tl - { \exp_not:N ! { \skip_horizontal:N \arrayrulewidth } } + \keys_set:nn { NiceMatrix / ColumnTypes } { #1 } \__nicematrix_patch_preamble:n } - } - { - \keys_set_known:nnN { NiceMatrix / ColumnTypes } { #1 } \l_tmpa_tl - \tl_if_empty:NTF \l_tmpa_tl - \__nicematrix_patch_preamble:n { \__nicematrix_fatal:nn { unknown~column~type } { #1 } } } } @@ -2238,14 +2244,6 @@ \__nicematrix_patch_preamble_xi:n } } -\cs_new_protected:Npn \__nicematrix_patch_preamble_xii:n #1 - { - \tl_gput_right:Nn \g__nicematrix_preamble_tl - { ! { \skip_horizontal:N 2\l__nicematrix_xdots_radius_dim } } - \tl_gput_right:Nx \g__nicematrix_internal_code_after_tl - { \__nicematrix_vdottedline:n { \int_use:N \c@jCol } } - \__nicematrix_patch_preamble:n - } \cs_new_protected:Npn \__nicematrix_patch_preamble_xi:n #1 { \str_if_eq:nnTF { #1 } { < } @@ -2487,7 +2485,7 @@ \seq_if_empty:NF \g__nicematrix_blocks_seq \__nicematrix_draw_blocks: } \bool_lazy_or:nnT - { \int_compare_p:nNn \c@tabularnote > 0 } + { ! \seq_if_empty_p:N \g__nicematrix_tabularnotes_seq } { ! \tl_if_empty_p:V \l__nicematrix_tabularnote_tl } \__nicematrix_insert_tabularnotes: \end { minipage } @@ -3148,7 +3146,10 @@ { \dim_set:Nn \l__nicematrix_xdots_radius_dim { 0.7 \l__nicematrix_xdots_radius_dim } \dim_set:Nn \l__nicematrix_xdots_inter_dim { 0.55 \l__nicematrix_xdots_inter_dim } - \dim_set:Nn \l__nicematrix_xdots_shorten_dim { 0.6 \l__nicematrix_xdots_shorten_dim } + \dim_set:Nn \l__nicematrix_xdots_shorten_start_dim + { 0.6 \l__nicematrix_xdots_shorten_start_dim } + \dim_set:Nn \l__nicematrix_xdots_shorten_end_dim + { 0.6 \l__nicematrix_xdots_shorten_end_dim } } \__nicematrix_draw_dotted_lines: \__nicematrix_compute_corners: @@ -3868,8 +3869,8 @@ \draw [ #1 , - shorten~> = \l__nicematrix_xdots_shorten_dim , - shorten~< = \l__nicematrix_xdots_shorten_dim , + shorten~> = \l__nicematrix_xdots_shorten_end_dim , + shorten~< = \l__nicematrix_xdots_shorten_start_dim , ] ( \l__nicematrix_x_initial_dim , \l__nicematrix_y_initial_dim ) -- node [ sloped , above ] { $ \scriptstyle #2 $ } @@ -3958,7 +3959,7 @@ \int_set:Nn \l_tmpa_int { \dim_ratio:nn - { \l__nicematrix_l_dim - \l__nicematrix_xdots_shorten_dim } + { \l__nicematrix_l_dim - \l__nicematrix_xdots_shorten_start_dim } \l__nicematrix_xdots_inter_dim } } @@ -3969,7 +3970,7 @@ \int_set:Nn \l_tmpa_int { \dim_ratio:nn - { \l__nicematrix_l_dim - \l__nicematrix_xdots_shorten_dim } + { \l__nicematrix_l_dim - \l__nicematrix_xdots_shorten_end_dim } \l__nicematrix_xdots_inter_dim } } @@ -3977,7 +3978,10 @@ \int_set:Nn \l_tmpa_int { \dim_ratio:nn - { \l__nicematrix_l_dim - 2 \l__nicematrix_xdots_shorten_dim } + { + \l__nicematrix_l_dim + - \l__nicematrix_xdots_shorten_start_dim - \l__nicematrix_xdots_shorten_end_dim + } \l__nicematrix_xdots_inter_dim } } @@ -3992,27 +3996,25 @@ ( \l__nicematrix_y_final_dim - \l__nicematrix_y_initial_dim ) * \dim_ratio:nn \l__nicematrix_xdots_inter_dim \l__nicematrix_l_dim } - \int_set:Nn \l_tmpb_int - { - \bool_if:NTF \l__nicematrix_initial_open_bool - { \bool_if:NTF \l__nicematrix_final_open_bool 1 0 } - { \bool_if:NTF \l__nicematrix_final_open_bool 2 1 } - } \dim_gadd:Nn \l__nicematrix_x_initial_dim { ( \l__nicematrix_x_final_dim - \l__nicematrix_x_initial_dim ) * \dim_ratio:nn - { \l__nicematrix_l_dim - \l__nicematrix_xdots_inter_dim * \l_tmpa_int } + { + \l__nicematrix_l_dim - \l__nicematrix_xdots_inter_dim * \l_tmpa_int + + \l__nicematrix_xdots_shorten_start_dim - \l__nicematrix_xdots_shorten_end_dim + } { 2 \l__nicematrix_l_dim } - * \l_tmpb_int } \dim_gadd:Nn \l__nicematrix_y_initial_dim { ( \l__nicematrix_y_final_dim - \l__nicematrix_y_initial_dim ) * \dim_ratio:nn - { \l__nicematrix_l_dim - \l__nicematrix_xdots_inter_dim * \l_tmpa_int } + { + \l__nicematrix_l_dim - \l__nicematrix_xdots_inter_dim * \l_tmpa_int + + \l__nicematrix_xdots_shorten_start_dim - \l__nicematrix_xdots_shorten_end_dim + } { 2 \l__nicematrix_l_dim } - * \l_tmpb_int } \pgf@relevantforpicturesizefalse \int_step_inline:nnn 0 \l_tmpa_int @@ -4309,6 +4311,12 @@ } \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 + { + \tl_if_empty:nTF { #2 } + { #1 } + { \__nicematrix_double_int_eval_i:n #1-#2 \q_stop } + } +\cs_new:Npn \__nicematrix_double_int_eval_i:n #1-#2- \q_stop { \int_eval:n { #1 } - \int_eval:n { #2 } } \hook_gput_code:nnn { begindocument } { . } { @@ -4322,8 +4330,8 @@ \use:e { \__nicematrix_line_i:nn - { \__nicematrix_double_int_eval:n #2 \q_stop } - { \__nicematrix_double_int_eval:n #3 \q_stop } + { \__nicematrix_double_int_eval:n #2 - \q_stop } + { \__nicematrix_double_int_eval:n #3 - \q_stop } } \group_end: } @@ -4820,8 +4828,6 @@ start .int_set:N = \l__nicematrix_start_int , start .initial:n = 1 , end .int_set:N = \l__nicematrix_end_int , - % letter .code:n = \prg_do_nothing: , - % command .code:n = \prg_do_nothing: } \keys_define:nn { NiceMatrix / RulesBis } { @@ -4837,8 +4843,9 @@ tikz .tl_set:N = \l__nicematrix_tikz_rule_tl , tikz .value_required:n = true , tikz .initial:n = , - width .dim_set:N = \l__nicematrix_rule_width_dim , - width .value_required:n = true + total-width .dim_set:N = \l__nicematrix_rule_width_dim , + total-width .value_required:n = true , + width .meta:n = { total-width = #1 } } \cs_new_protected:Npn \__nicematrix_vline:n #1 { @@ -4913,8 +4920,8 @@ } \cs_new_protected:Npn \__nicematrix_vline_ii: { - \bool_set_false:N \l__nicematrix_dotted_boo - \keys_set_known:nV { NiceMatrix / RulesBis } \l__nicematrix_other_keys_tl + \bool_set_false:N \l__nicematrix_dotted_bool + \keys_set:nV { NiceMatrix / RulesBis } \l__nicematrix_other_keys_tl \bool_if:NTF \l__nicematrix_dotted_bool \__nicematrix_vline_iv: { @@ -4931,7 +4938,14 @@ \__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 + + + ( \arrayrulewidth * \l__nicematrix_multiplicity_int + + \doublerulesep * ( \l__nicematrix_multiplicity_int - 1 ) ) / 2 + } \__nicematrix_qpoint:n { row - \int_eval:n { \l__nicematrix_local_end_int + 1 } } \dim_set_eq:NN \l__nicematrix_tmpc_dim \pgf@y \bool_lazy_all:nT @@ -4977,8 +4991,8 @@ \pgfrememberpicturepositiononpagetrue \pgf@relevantforpicturesizefalse \__nicematrix_qpoint:n { col - \int_use:N \l__nicematrix_position_int } - \dim_set_eq:NN \l__nicematrix_x_initial_dim \pgf@x - \dim_set_eq:NN \l__nicematrix_x_final_dim \pgf@x + \dim_set:Nn \l__nicematrix_x_initial_dim { \pgf@x - 0.5 \l__nicematrix_rule_width_dim } + \dim_set_eq:NN \l__nicematrix_x_final_dim \l__nicematrix_x_initial_dim \__nicematrix_qpoint:n { row - \int_use:N \l__nicematrix_local_start_int } \dim_set_eq:NN \l__nicematrix_y_initial_dim \pgf@y \__nicematrix_qpoint:n { row - \int_eval:n { \l__nicematrix_local_end_int + 1 } } @@ -5019,7 +5033,7 @@ { \tl_if_eq:NnF \l__nicematrix_vlines_clist { all } { \clist_if_in:NnT \l__nicematrix_vlines_clist { ##1 } } - { \__nicematrix_vline:n { position = ##1 } } + { \__nicematrix_vline:n { position = ##1 , total-width = \arrayrulewidth } } } } \cs_new_protected:Npn \__nicematrix_hline:n #1 @@ -5095,7 +5109,7 @@ \cs_new_protected:Npn \__nicematrix_hline_ii: { \bool_set_false:N \l__nicematrix_dotted_bool - \keys_set_known:nV { NiceMatrix / RulesBis } \l__nicematrix_other_keys_tl + \keys_set:nV { NiceMatrix / RulesBis } \l__nicematrix_other_keys_tl \bool_if:NTF \l__nicematrix_dotted_bool \__nicematrix_hline_iv: { @@ -5112,7 +5126,14 @@ \__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 + + + ( \arrayrulewidth * \l__nicematrix_multiplicity_int + + \doublerulesep * ( \l__nicematrix_multiplicity_int - 1 ) ) / 2 + } \__nicematrix_qpoint:n { col - \int_eval:n { \l__nicematrix_local_end_int + 1 } } \dim_set_eq:NN \l__nicematrix_tmpc_dim \pgf@x \bool_lazy_all:nT @@ -5156,8 +5177,8 @@ \pgfrememberpicturepositiononpagetrue \pgf@relevantforpicturesizefalse \__nicematrix_qpoint:n { row - \int_use:N \l__nicematrix_position_int } - \dim_set_eq:NN \l__nicematrix_y_initial_dim \pgf@y - \dim_set_eq:NN \l__nicematrix_y_final_dim \pgf@y + \dim_set:Nn \l__nicematrix_y_initial_dim { \pgf@y - 0.5 \l__nicematrix_rule_width_dim } + \dim_set_eq:NN \l__nicematrix_y_final_dim \l__nicematrix_y_initial_dim \__nicematrix_qpoint:n { col - \int_use:N \l__nicematrix_local_start_int } \dim_set_eq:NN \l__nicematrix_x_initial_dim \pgf@x \int_compare:nNnT \l__nicematrix_local_start_int = 1 @@ -5214,7 +5235,7 @@ { \tl_if_eq:NnF \l__nicematrix_hlines_clist { all } { \clist_if_in:NnT \l__nicematrix_hlines_clist { ##1 } } - { \__nicematrix_hline:n { position = ##1 } } + { \__nicematrix_hline:n { position = ##1 , total-width = \arrayrulewidth } } } } \cs_set:Npn \__nicematrix_Hline: { \noalign { \ifnum 0 = `} \fi \__nicematrix_Hline_i:n { 1 } } @@ -5250,113 +5271,156 @@ { \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 + \keys_set_known:nnN { NiceMatrix / custom-line } { #1 } \l__nicematrix_other_keys_tl + \bool_lazy_and:nnTF + { \str_if_empty_p:N \l__nicematrix_letter_str } + { \str_if_empty_p:N \l__nicematrix_command_str } + { \__nicematrix_error:n { No~letter~and~no~command } } + { \exp_args:NV \__nicematrix_custom_line_i:n \l__nicematrix_other_keys_tl } + } +\keys_define:nn { NiceMatrix / custom-line } + { + % here, we will use change in the future to use .str_set:N + letter .code:n = \str_set:Nn \l__nicematrix_letter_str { #1 } , + letter .value_required:n = true , + % here, we will use change in the future to use .str_set:N + command .code:n = \str_set:Nn \l__nicematrix_command_str { #1 } , + command .value_required:n = true , + } +\cs_new_protected:Npn \__nicematrix_custom_line_i:n #1 + { + \bool_set_false:N \l__nicematrix_tikz_rule_bool + \bool_set_false:N \l__nicematrix_dotted_rule_bool + \bool_set_false:N \l__nicematrix_color_bool + \keys_set:nn { NiceMatrix / custom-line-bis } { #1 } + \bool_if:NT \l__nicematrix_tikz_rule_bool { \cs_if_exist:NF \tikzpicture { \__nicematrix_error:n { tikz~in~custom-line~without~tikz } } - \tl_if_empty:NF \l_tmpa_tl + \bool_if:NT \l__nicematrix_color_bool { \__nicematrix_error:n { color~in~custom-line~with~tikz } } } - \bool_if:NT \l_tmpb_bool + \bool_if:nT { - \bool_if:NF \l_tmpa_bool - { \__nicematrix_error:n { key~width~without~key~tikz } } + \int_compare_p:nNn \l__nicematrix_multiplicity_int > 1 + && \l__nicematrix_dotted_rule_bool } - \bool_lazy_and:nnTF - { \str_if_empty_p:N \l__nicematrix_letter_str } - { \str_if_empty_p:N \l__nicematrix_command_str } - { \__nicematrix_error:n { No~letter~and~no~command } } + { \__nicematrix_error:n { key~multiplicity~with~dotted } } + \str_if_empty:NF \l__nicematrix_letter_str { - \str_if_empty:NF \l__nicematrix_letter_str + \int_compare:nTF { \str_count:N \l__nicematrix_letter_str != 1 } + { \__nicematrix_error:n { Several~letters } } { - \int_compare:nNnTF { \str_count:N \l__nicematrix_letter_str } = 1 + \exp_args:NnV \tl_if_in:NnTF + \c__nicematrix_forbidden_letters_str \l__nicematrix_letter_str + { \__nicematrix_error:n { Forbidden~letter } } { - \exp_args:NnV \tl_if_in:NnTF - \c__nicematrix_forbidden_letters_str \l__nicematrix_letter_str - { \__nicematrix_error:n { Forbidden~letter } } - { - \keys_define:nx { NiceMatrix / ColumnTypes } - { - \l__nicematrix_letter_str .code:n = - { \__nicematrix_custom_line_i:n { \exp_not:n { #1 } } } - } - } - } - { \__nicematrix_error:n { Several~letters } } - } - \str_if_empty:NF \l__nicematrix_command_str - { - \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 ) - } - } - \__nicematrix_define_h_custom_line:nV { #1 } \l__nicematrix_rule_width_dim - } - } + \keys_define:nx { NiceMatrix / ColumnTypes } + { + \l__nicematrix_letter_str .code:n = + { \__nicematrix_v_custom_line:n { \exp_not:n { #1 } } } + } + } + } + } + \str_if_empty:NF \l__nicematrix_command_str { \__nicematrix_h_custom_line:n { #1 } } } \str_const:Nn \c__nicematrix_forbidden_letters_str { lcrpmbVX|()[]!@<> } -\keys_define:nn { NiceMatrix / Custom-Line } +\keys_define:nn { NiceMatrix / custom-line-bis } { - % here, we will use change in the future to use .tl_set:N - letter .code:n = \str_set:Nn \l__nicematrix_letter_str { #1 } , - letter .value_required:n = true , - % here, we will use change in the future to use .tl_set:N - command .code:n = \str_set:Nn \l__nicematrix_command_str { #1 } , - command .value_required:n = true , - multiplicity .int_set:N = \l__nicematrix_tmpc_int , + multiplicity .int_set:N = \l__nicematrix_multiplicity_int , multiplicity .initial:n = 1 , multiplicity .value_required:n = true , - color .tl_set:N = \l_tmpa_tl , + color .code:n = \bool_set_true:N \l__nicematrix_color_bool , 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 , + tikz .code:n = \bool_set_true:N \l__nicematrix_tikz_rule_bool , + tikz .value_required:n = true , + dotted .code:n = \bool_set_true:N \l__nicematrix_dotted_rule_bool , + dotted .value_forbidden:n = true , + total-width .code:n = { } , + total-width .value_required:n = true , + width .code:n = { } , width .value_required:n = true , + sep-color .code:n = { } , + sep-color .value_required:n = true , unknown .code:n = \__nicematrix_error:n { Unknown~key~for~custom-line } } -\cs_new_protected:Npn \__nicematrix_define_h_custom_line:nn #1 #2 +\bool_new:N \l__nicematrix_dotted_rule_bool +\bool_new:N \l__nicematrix_tikz_rule_bool +\bool_new:N \l__nicematrix_color_bool +\keys_define:nn { NiceMatrix / custom-line-width } + { + multiplicity .int_set:N = \l__nicematrix_multiplicity_int , + multiplicity .initial:n = 1 , + multiplicity .value_required:n = true , + tikz .code:n = \bool_set_true:N \l__nicematrix_tikz_rule_bool , + total-width .code:n = \dim_set:Nn \l__nicematrix_rule_width_dim { #1 } + \bool_set_true:N \l__nicematrix_total_width_bool , + total-width .value_required:n = true , + width .meta:n = { total-width = #1 } , + dotted .code:n = \bool_set_true:N \l__nicematrix_dotted_rule_bool , + } +\cs_new_protected:Npn \__nicematrix_h_custom_line:n #1 { \cs_set:cpn { nicematrix - \l__nicematrix_command_str } { \noalign { - \skip_vertical:n { #2 } + \__nicematrix_compute_rule_width:n { #1 } + \skip_vertical:n { \l__nicematrix_rule_width_dim } \tl_gput_right:Nx \g__nicematrix_internal_code_after_tl - { \__nicematrix_hline:n { #1 , position = \int_eval:n { \c@iRow + 1 } } } + { + \__nicematrix_hline:n + { + #1 , + position = \int_eval:n { \c@iRow + 1 } , + total-width = \dim_use:N \l__nicematrix_rule_width_dim + } + } } } \seq_put_left:NV \l__nicematrix_custom_line_commands_seq \l__nicematrix_command_str } -\cs_generate_variant:Nn \__nicematrix_define_h_custom_line:nn { n V } -\cs_new_protected:Npn \__nicematrix_custom_line_i:n #1 +\cs_generate_variant:Nn \__nicematrix_h_custom_line:nn { n V } +\cs_new_protected:Npn \__nicematrix_compute_rule_width:n #1 { - \bool_if:NF \l_tmpa_bool + \bool_set_false:N \l__nicematrix_tikz_rule_bool + \bool_set_false:N \l__nicematrix_total_width_bool + \bool_set_false:N \l__nicematrix_dotted_rule_bool + \keys_set_known:nn { NiceMatrix / custom-line-width } { #1 } + \bool_if:NF \l__nicematrix_total_width_bool { - \dim_set:Nn \l__nicematrix_rule_width_dim + \bool_if:NTF \l__nicematrix_dotted_rule_bool + { \dim_set:Nn \l__nicematrix_rule_width_dim { 2 \l__nicematrix_xdots_radius_dim } } { - \arrayrulewidth * \l__nicematrix_tmpc_int - + \doublerulesep * ( \l__nicematrix_tmpc_int - 1) + \bool_if:NF \l__nicematrix_tikz_rule_bool + { + \dim_set:Nn \l__nicematrix_rule_width_dim + { + \arrayrulewidth * \l__nicematrix_multiplicity_int + + \doublerulesep * ( \l__nicematrix_multiplicity_int - 1 ) + } + } } } + } +\cs_new_protected:Npn \__nicematrix_v_custom_line:n #1 + { + \__nicematrix_compute_rule_width:n { #1 } \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 { - \exp_not:N ! - { \skip_horizontal:n { \dim_use:N \l__nicematrix_rule_width_dim } } + \__nicematrix_vline:n + { + #1 , + position = \int_eval:n { \c@jCol + 1 } , + total-width = \dim_use:N \l__nicematrix_rule_width_dim + } } - \tl_gput_right:Nx \g__nicematrix_internal_code_after_tl - { \__nicematrix_vline:n { #1 , position = \int_eval:n { \c@jCol + 1 } } } } \__nicematrix_custom_line:n { letter = : , command = hdottedline , dotted } -\cs_new_protected:Npn \__nicematrix_test_hline_in_block:nnnnn #1 #2 #3 #4 +\cs_new_protected:Npn \__nicematrix_test_hline_in_block:nnnnn #1 #2 #3 #4 #5 { \bool_lazy_all:nT { @@ -5367,7 +5431,7 @@ } { \bool_gset_false:N \g_tmpa_bool } } -\cs_new_protected:Npn \__nicematrix_test_vline_in_block:nnnnn #1 #2 #3 #4 +\cs_new_protected:Npn \__nicematrix_test_vline_in_block:nnnnn #1 #2 #3 #4 #5 { \bool_lazy_all:nT { @@ -5512,20 +5576,6 @@ } } } -\cs_new:Npn \__nicematrix_hdottedline: - { - \noalign { \skip_vertical:N 2\l__nicematrix_xdots_radius_dim } - \__nicematrix_hdottedline_i: - } -\cs_new_protected:Npn \__nicematrix_hdottedline_i: - { - \tl_gput_right:Nx \g__nicematrix_internal_code_after_tl - { \__nicematrix_hdottedline:n { \int_use:N \c@iRow } } - } -\cs_new_protected:Npn \__nicematrix_hdottedline:n #1 - { \__nicematrix_hline:n { position = #1 , end = \int_use:N \c@jCol , dotted } } -\cs_new_protected:Npn \__nicematrix_vdottedline:n #1 - { \__nicematrix_vline:n { position = \int_eval:n { #1 + 1 } , dotted } } \bool_new:N \l__nicematrix_block_auto_columns_width_bool \keys_define:nn { NiceMatrix / NiceMatrixBlock } { @@ -6458,7 +6508,8 @@ { position = ##1 , start = \l__nicematrix_tmpd_tl , - end = \int_eval:n { \l_tmpb_tl - 1 } + end = \int_eval:n { \l_tmpb_tl - 1 } , + total-width = \arrayrulewidth } } } @@ -6866,7 +6917,7 @@ hvlines .value_forbidden:n = true , name .code:n = \tl_if_empty:nTF { #1 } - { \__nicematrix_error:n { Invalid~name~format } } + { \__nicematrix_error:n { Invalid~name } } { \regex_match:nnTF { \A[A-Za-z][A-Za-z0-9]*\Z } { #1 } { @@ -6877,7 +6928,7 @@ \seq_gput_right:Nn \g__nicematrix_submatrix_names_seq { #1 } } } - { \__nicematrix_error:n { Invalid~name~format } } + { \__nicematrix_error:n { Invalid~name } } } , rules .code:n = \keys_set:nn { NiceMatrix / rules } { #1 } , rules .value_required:n = true , @@ -6973,10 +7024,10 @@ } } \dim_compare:nNnTF \l__nicematrix_x_initial_dim = \c_max_dim - { \__nicematrix_error:nn { impossible~delimiter } { left } } + { \__nicematrix_error:nn { Impossible~delimiter } { left } } { \dim_compare:nNnTF \l__nicematrix_x_final_dim = { - \c_max_dim } - { \__nicematrix_error:nn { impossible~delimiter } { right } } + { \__nicematrix_error:nn { Impossible~delimiter } { right } } { \__nicematrix_sub_matrix_i:nnnn { #1 } { #4 } { #6 } { #7 } } } \endpgfpicture @@ -7370,39 +7421,47 @@ } \NewDocumentCommand \__nicematrix_ShowCellNames { } { + \dim_zero_new:N \g__nicematrix_tmpc_dim + \dim_zero_new:N \g__nicematrix_tmpd_dim + \dim_zero_new:N \g__nicematrix_tmpe_dim \int_step_inline:nn \c@iRow { - \begin { tikzpicture } + \begin { pgfpicture } \__nicematrix_qpoint:n { row - ##1 } \dim_set_eq:NN \l_tmpa_dim \pgf@y \__nicematrix_qpoint:n { row - \int_eval:n { ##1 + 1 } } \dim_gset:Nn \g_tmpa_dim { ( \l_tmpa_dim + \pgf@y ) / 2 } \dim_gset:Nn \g_tmpb_dim { \l_tmpa_dim - \pgf@y } - \end { tikzpicture } + \end { pgfpicture } \int_step_inline:nn \c@jCol { \hbox_set:Nn \l_tmpa_box { \normalfont \Large \color { red ! 50 } ##1 - ####1 } - \begin { tikzpicture } + \begin { pgfpicture } \__nicematrix_qpoint:n { col - ####1 } - \dim_set_eq:NN \l__nicematrix_tmpc_dim \pgf@x + \dim_gset_eq:NN \g__nicematrix_tmpc_dim \pgf@x \__nicematrix_qpoint:n { col - \int_eval:n { ####1 + 1 } } - \dim_set:Nn \l_tmpa_dim { \pgf@x - \l__nicematrix_tmpc_dim } + \dim_gset:Nn \g__nicematrix_tmpd_dim { \pgf@x - \g__nicematrix_tmpc_dim } + \dim_gset_eq:NN \g__nicematrix_tmpe_dim \pgf@x + \end { pgfpicture } \fp_set:Nn \l_tmpa_fp { \fp_min:nn { \fp_min:nn - { \dim_ratio:nn { \l_tmpa_dim } { \box_wd:N \l_tmpa_box } } + { \dim_ratio:nn { \g__nicematrix_tmpd_dim } { \box_wd:N \l_tmpa_box } } { \dim_ratio:nn { \g_tmpb_dim } { \box_ht_plus_dp:N \l_tmpa_box } } } { 1.0 } } \box_scale:Nnn \l_tmpa_box { \fp_use:N \l_tmpa_fp } { \fp_use:N \l_tmpa_fp } + \pgfpicture + \pgfrememberpicturepositiononpagetrue + \pgf@relevantforpicturesizefalse \pgftransformshift { \pgfpoint - { 0.5 * ( \l__nicematrix_tmpc_dim + \pgf@x ) } + { 0.5 * ( \g__nicematrix_tmpc_dim + \g__nicematrix_tmpe_dim ) } { \dim_use:N \g_tmpa_dim } } \pgfnode @@ -7411,23 +7470,24 @@ { \box_use:N \l_tmpa_box } { } { } - \end { tikzpicture } + \endpgfpicture } } } +\bool_new:N \c__nicematrix_messages_for_Overleaf_bool \bool_new:N \c__nicematrix_footnotehyper_bool \bool_new:N \c__nicematrix_footnote_bool -\__nicematrix_msg_new:nnn { Unknown~key~for~package } +\msg_new:nnnn { nicematrix } { Unknown~key~for~package } { The~key~'\l_keys_key_str'~is~unknown. \\ - If~you~go~on,~it~will~be~ignored. \\ + That~key~will~be~ignored. \\ For~a~list~of~the~available~keys,~type~H~<return>. } { The~available~keys~are~(in~alphabetic~order):~ - allow-letter-for-dotted-lines,~ footnote,~ footnotehyper,~ + messages-for-Overleaf,~ renew-dots,~and renew-matrix. } @@ -7437,18 +7497,9 @@ renew-dots .value_forbidden:n = true , renew-matrix .code:n = \__nicematrix_renew_matrix: , renew-matrix .value_forbidden:n = true , - transparent .code:n = \__nicematrix_fatal:n { Key~transparent } , - transparent .value_forbidden:n = true, + messages-for-Overleaf .bool_set:N = \c__nicematrix_messages_for_Overleaf_bool , footnote .bool_set:N = \c__nicematrix_footnote_bool , footnotehyper .bool_set:N = \c__nicematrix_footnotehyper_bool , - allow-letter-for-dotted-lines .code:n = - { - \group_begin: - \globaldefs = 1 - \__nicematrix_msg_redirect_name:nn { letter-for-dotted-lines } { none } - \group_end: - } , - allow-letter-for-dotted-lines .value_forbidden:n = true , unknown .code:n = \__nicematrix_error:n { Unknown~key~for~package } } \ProcessKeysOptions { NiceMatrix / Package } @@ -7459,7 +7510,7 @@ If~you~want,~you~can~use~the~option~'footnotehyper'~and~the~footnotes~ within~the~environments~of~nicematrix~will~be~extracted~with~the~tools~ of~the~package~footnotehyper.\\ - If~you~go~on,~the~package~footnote~won't~be~loaded. + The~package~footnote~won't~be~loaded. } \__nicematrix_msg_new:nn { footnotehyper~with~footnote~package } { @@ -7468,7 +7519,7 @@ If~you~want,~you~can~use~the~option~'footnote'~and~the~footnotes~ within~the~environments~of~nicematrix~will~be~extracted~with~the~tools~ of~the~package~footnote.\\ - If~you~go~on,~the~package~footnotehyper~won't~be~loaded. + The~package~footnotehyper~won't~be~loaded. } \bool_if:NT \c__nicematrix_footnote_bool { @@ -7491,6 +7542,12 @@ } \bool_set_true:N \c__nicematrix_footnote_bool } +\bool_if:NTF \c__nicematrix_messages_for_Overleaf_bool + { \str_const:Nn \c__nicematrix_available_keys_str { } } + { + \str_const:Nn \c__nicematrix_available_keys_str + { For~a~list~of~the~available~keys,~type~H~<return>. } + } \seq_new:N \g__nicematrix_types_of_matrix_seq \seq_gset_from_clist:Nn \g__nicematrix_types_of_matrix_seq { @@ -7519,19 +7576,31 @@ } \__nicematrix_msg_new:nn { negative~weight } { + Negative~weight.\\ The~weight~of~the~'X'~columns~must~be~positive~and~you~have~used~ - the~value~'#1'.~If~you~go~on,~the~absolute~value~will~be~used. + the~value~'#1'.\\ + The~absolute~value~will~be~used. + } +\__nicematrix_msg_new:nn { last~col~not~used } + { + Column~not~used.\\ + The~key~'last-col'~is~in~force~but~you~have~not~used~that~last~column~ + in~your~\__nicematrix_full_name_env:.~However,~you~can~go~on. } \__nicematrix_msg_new:nn { too~much~cols~for~matrix~with~last~col } { - You~try~to~use~more~columns~than~allowed~by~your~ - \__nicematrix_full_name_env:.\__nicematrix_message_hdotsfor:\ The~maximal~number~of~ - columns~is~\int_eval:n { \l__nicematrix_last_col_int - 1 }~(plus~the~ - exterior~columns).~This~error~is~fatal. + Too~much~columns.\\ + In~the~row~\int_eval:n { \c@jCol - 1 },~ + you~try~to~use~more~columns~ + than~allowed~by~your~\__nicematrix_full_name_env:.\__nicematrix_message_hdotsfor:\ + The~maximal~number~of~columns~is~\int_eval:n { \l__nicematrix_last_col_int - 1 }~ + (plus~the~exterior~columns).~This~error~is~fatal. } \__nicematrix_msg_new:nn { too~much~cols~for~matrix } { - You~try~to~use~more~columns~than~allowed~by~your~ + Too~much~columns.\\ + In~the~row~\int_eval:n { \c@jCol - 1 },~ + you~try~to~use~more~columns~than~allowed~by~your~ \__nicematrix_full_name_env:.\__nicematrix_message_hdotsfor:\ Recall~that~the~maximal~ number~of~columns~for~a~matrix~is~fixed~by~the~LaTeX~counter~ 'MaxMatrixCols'.~Its~actual~value~is~\int_use:N \c@MaxMatrixCols.~ @@ -7539,7 +7608,9 @@ } \__nicematrix_msg_new:nn { too~much~cols~for~array } { - You~try~to~use~more~columns~than~allowed~by~your~ + Too~much~columns.\\ + In~the~row~\int_eval:n { \c@jCol - 1 },~ + ~you~try~to~use~more~columns~than~allowed~by~your~ \__nicematrix_full_name_env:.\__nicematrix_message_hdotsfor:\ The~maximal~number~of~columns~is~ \int_use:N \g__nicematrix_static_num_of_col_int\ ~(plus~the~potential~exterior~ones).~ @@ -7547,62 +7618,65 @@ } \__nicematrix_msg_new:nn { hvlines-except-corners } { + Obsolete~key.\\ The~key~'hvlines-except-corners'~is~now~obsolete.~You~should~instead~use~the~ keys~'hvlines'~and~'corners'.\\ - However,~you~can~go~on~for~this~time.~This~message~won't~be~shown~anymore~ - in~this~document. - } -\__nicematrix_msg_new:nn { last~col~not~used } - { - The~key~'last-col'~is~in~force~but~you~have~not~used~that~last~column~ - in~your~\__nicematrix_full_name_env:.~However,~you~can~go~on. + This~error~is~fatal. } \__nicematrix_msg_new:nn { columns~not~used } { + Columns~not~used.\\ The~preamble~of~your~\__nicematrix_full_name_env:\ announces~\int_use:N \g__nicematrix_static_num_of_col_int\ columns~but~you~use~only~\int_use:N \c@jCol.\\ - You~can~go~on~but~the~columns~you~did~not~used~won't~be~created. + The~columns~you~did~not~used~won't~be~created. } \__nicematrix_msg_new:nn { in~first~col } { + Erroneous~use.\\ You~can't~use~the~command~#1 in~the~first~column~(number~0)~of~the~array.\\ - If~you~go~on,~this~command~will~be~ignored. + That~command~will~be~ignored. } \__nicematrix_msg_new:nn { in~last~col } { + Erroneous~use.\\ You~can't~use~the~command~#1 in~the~last~column~(exterior)~of~the~array.\\ - If~you~go~on,~this~command~will~be~ignored. + That~command~will~be~ignored. } \__nicematrix_msg_new:nn { in~first~row } { + Erroneous~use.\\ You~can't~use~the~command~#1 in~the~first~row~(number~0)~of~the~array.\\ - If~you~go~on,~this~command~will~be~ignored. + That~command~will~be~ignored. } \__nicematrix_msg_new:nn { in~last~row } { You~can't~use~the~command~#1 in~the~last~row~(exterior)~of~the~array.\\ - If~you~go~on,~this~command~will~be~ignored. + That~command~will~be~ignored. } \__nicematrix_msg_new:nn { double~closing~delimiter } { + Double~delimiter.\\ You~can't~put~a~second~closing~delimiter~"#1"~just~after~a~first~closing~ delimiter.~This~delimiter~will~be~ignored. } \__nicematrix_msg_new:nn { delimiter~after~opening } { + Double~delimiter.\\ You~can't~put~a~second~delimiter~"#1"~just~after~a~first~opening~ - delimiter.~This~delimiter~will~be~ignored. + delimiter.~That~delimiter~will~be~ignored. } \__nicematrix_msg_new:nn { bad~option~for~line-style } { + Bad~line~style.\\ Since~you~haven't~loaded~Tikz,~the~only~value~you~can~give~to~'line-style'~ - is~'standard'.~If~you~go~on,~this~key~will~be~ignored. + is~'standard'.~That~key~will~be~ignored. } \__nicematrix_msg_new:nnn { Unknown~key~for~custom-line } { + Unknown~key.\\ The~key~'\l_keys_key_str'~is~unknown~in~a~'custom-line'.~ - If~you~go~on,~it~will~be~ignored. \\ - For~a~list~of~the~available~keys,~type~H~<return>. + It~will~be~ignored. \\ + \c__nicematrix_available_keys_str } { The~available~keys~are~(in~alphabetic~order):~ @@ -7612,134 +7686,146 @@ letter,~ multiplicity,~ sep-color,~ - tikz,~and~width. + tikz,~and~tota-width. } \__nicematrix_msg_new:nn { Unknown~key~for~xdots } { + Unknown~key.\\ As~for~now,~there~is~only~five~keys~available~here:~'color',~'inter',~ 'line-style',~'radius',~ and~'shorten'~(and~you~try~to~use~'\l_keys_key_str').~ - If~you~go~on,~this~key~will~be~ignored. + That~key~will~be~ignored. } \__nicematrix_msg_new:nn { Unknown~key~for~rowcolors } { + Unknown~key.\\ As~for~now,~there~is~only~two~keys~available~here:~'cols'~and~'respect-blocks'~ - (and~you~try~to~use~'\l_keys_key_str').~If~you~go~on,~ - this~key~will~be~ignored. - } -\__nicematrix_msg_new:nn { ampersand~in~light-syntax } - { - You~can't~use~an~ampersand~(\token_to_str:N &)~to~separate~columns~because~ - ~you~have~used~the~key~'light-syntax'.~This~error~is~fatal. + (and~you~try~to~use~'\l_keys_key_str')\\ + That~key~will~be~ignored. } \__nicematrix_msg_new:nn { Construct~too~large } { + Construct~too~large.\\ Your~command~\token_to_str:N #1 can't~be~drawn~because~your~matrix~is~too~small.\\ - If~you~go~on,~this~command~will~be~ignored. + That~command~will~be~ignored. } -\__nicematrix_msg_new:nn { double-backslash~in~light-syntax } +\__nicematrix_msg_new:nn { ampersand~in~light-syntax } { - You~can't~use~\token_to_str:N \\~to~separate~rows~because~you~have~used~ - the~key~'light-syntax'.~You~must~use~the~character~'\l__nicematrix_end_of_row_tl'~ - (set~by~the~key~'end-of-row').~This~error~is~fatal. + Ampersand~forbidden.\\ + You~can't~use~an~ampersand~(\token_to_str:N &)~to~separate~columns~because~ + ~the~key~'light-syntax'~is~in~force.~This~error~is~fatal. } -\__nicematrix_msg_new:nn { standard-cline~in~document } +\__nicematrix_msg_new:nn { double-backslash~in~light-syntax } { - The~key~'standard-cline'~is~available~only~in~the~preamble.\\ - If~you~go~on~this~command~will~be~ignored. + Double~backslash~forbidden.\\ + You~can't~use~\token_to_str:N + \\~to~separate~rows~because~the~key~'light-syntax'~ + is~in~force.~You~must~use~the~character~'\l__nicematrix_end_of_row_tl'~ + (set~by~the~key~'end-of-row').~This~error~is~fatal. } \__nicematrix_msg_new:nn { bad~value~for~baseline } { + Bad~value~for~baseline.\\ The~value~given~to~'baseline'~(\int_use:N \l_tmpa_int)~is~not~ valid.~The~value~must~be~between~\int_use:N \l__nicematrix_first_row_int\ and~ - \int_use:N \g__nicematrix_row_total_int\ or~equal~to~'t',~'c'~or~'b'.\\ - If~you~go~on,~a~value~of~1~will~be~used. + \int_use:N \g__nicematrix_row_total_int\ or~equal~to~'t',~'c'~or~'b'~or~of~ + the~form~'line-i'.\\ + A~value~of~1~will~be~used. } -\__nicematrix_msg_new:nn { Invalid~name~format } +\__nicematrix_msg_new:nn { Invalid~name } { + Invalid~name.\\ You~can't~give~the~name~'\l_keys_value_tl'~to~a~\token_to_str:N - \SubMatrix.\\ + \SubMatrix\ of~your~\__nicematrix_full_name_env:.\\ A~name~must~be~accepted~by~the~regular~expression~[A-Za-z][A-Za-z0-9]*.\\ - If~you~go~on,~this~key~will~be~ignored. + This~key~will~be~ignored. } \__nicematrix_msg_new:nn { Wrong~line~in~SubMatrix } { + Wrong~line.\\ You~try~to~draw~a~#1~line~of~number~'#2'~in~a~ \token_to_str:N \SubMatrix\ of~your~\__nicematrix_full_name_env:\ but~that~ - number~is~not~valid.~If~you~go~on,~it~will~be~ignored. + number~is~not~valid.~It~will~be~ignored. } -\__nicematrix_msg_new:nn { impossible~delimiter } +\__nicematrix_msg_new:nn { Impossible~delimiter } { + Impossible~delimiter.\\ It's~impossible~to~draw~the~#1~delimiter~of~your~ \token_to_str:N \SubMatrix\ because~all~the~cells~are~empty~ in~that~column. \bool_if:NT \l__nicematrix_submatrix_slim_bool { ~Maybe~you~should~try~without~the~key~'slim'. } \\ - If~you~go~on,~this~\token_to_str:N \SubMatrix\ will~be~ignored. + This~\token_to_str:N \SubMatrix\ will~be~ignored. } \__nicematrix_msg_new:nn { width~without~X~columns } { + No~X~column.\\ You~have~used~the~key~'width'~but~you~have~put~no~'X'~column. \\ - If~you~go~on,~that~key~will~be~ignored. + That~key~will~be~ignored. + } +\__nicematrix_msg_new:nn { key~multiplicity~with~dotted } + { + Incompatible~keys. \\ + You~have~used~the~key~'multiplicity'~with~the~key~'dotted'~ + in~a~'custom-line'.~They~are~incompatible. \\ + The~key~'multiplicity'~will~be~discarded. } \__nicematrix_msg_new:nn { empty~environment } - { Your~\__nicematrix_full_name_env:\ is~empty.~This~error~is~fatal. } + { + Empty~environment.\\ + Your~\__nicematrix_full_name_env:\ is~empty.~This~error~is~fatal. + } \__nicematrix_msg_new:nn { Wrong~use~of~v-center } { + Wrong~use~of~v-center.\\ You~should~not~use~the~key~'v-center'~here~because~your~block~is~not~ mono-row.~However,~you~can~go~on. } \__nicematrix_msg_new:nn { No~letter~and~no~command } { + Erroneous~use.\\ Your~use~of~'custom-line'~is~no-op~since~you~don't~have~used~the~ key~'letter'~(for~a~letter~for~vertical~rules)~nor~the~key~'command'~ (to~draw~horizontal~rules).\\ However,~you~can~go~on. } -\__nicematrix_msg_new:nn { letter-for-dotted-lines } - { - The~key~'letter-for-dotted-lines'~is~now~obsolete~(you~should~ - use~'custom-line'~instead).~However,~you~can~go~on~for~this~time.~ - If~you~don't~want~to~see~that~message~again,~you~should~ - load~'nicematrix'~with~the~key~'allow-letter-for-dotted-lines'.~ - However,~'letter-for-dotted-lines'~will~be~deleted~in~a~future~ - version~of~'nicematrix'. - } \__nicematrix_msg_new:nn { Forbidden~letter } { + Forbidden~letter.\\ 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. + It~will~be~ignored. } \__nicematrix_msg_new:nn { Several~letters } { - You~must~use~only~one~letter~as~value~for~the~key~'letter'~(and~ + Wrong~name.\\ + You~must~use~only~one~letter~as~value~for~the~key~'letter'~(and~you~ have~used~'\l__nicematrix_letter_str').\\ - If~you~go~on,~it~will~be~ignored. + It~will~be~ignored. } \__nicematrix_msg_new:nn { Delimiter~with~small } { + Delimiter~forbidden.\\ You~can't~put~a~delimiter~in~the~preamble~of~your~\__nicematrix_full_name_env:\ because~the~key~'small'~is~in~force.\\ This~error~is~fatal. } \__nicematrix_msg_new:nn { unknown~cell~for~line~in~CodeAfter } { - Your~command~\token_to_str:N\line\{#1\}\{#2\}~in~the~'code-after'~ + Unknown~cell.\\ + Your~command~\token_to_str:N\line\{#1\}\{#2\}~in~ + the~\token_to_str:N \CodeAfter\ of~your~\__nicematrix_full_name_env:\ can't~be~executed~because~a~cell~doesn't~exist.\\ - If~you~go~on~this~command~will~be~ignored. + This~command~\token_to_str:N \line\ will~be~ignored. } \__nicematrix_msg_new:nnn { Duplicate~name~for~SubMatrix } { + Duplicate~name.\\ The~name~'#1'~is~already~used~for~a~\token_to_str:N \SubMatrix\ in~this~\__nicematrix_full_name_env:.\\ - If~you~go~on,~this~key~will~be~ignored.\\ - For~a~list~of~the~names~already~used,~type~H~<return>. + This~key~will~be~ignored.\\ + \bool_if:NF \c__nicematrix_messages_for_Overleaf_bool + { For~a~list~of~the~names~already~used,~type~H~<return>. } } { The~names~already~defined~in~this~\__nicematrix_full_name_env:\ are:~ @@ -7747,41 +7833,46 @@ } \__nicematrix_msg_new:nn { r~or~l~with~preamble } { + Erroneous~use.\\ You~can't~use~the~key~'\l_keys_key_str'~in~your~\__nicematrix_full_name_env:.~ You~must~specify~the~alignment~of~your~columns~with~the~preamble~of~ your~\__nicematrix_full_name_env:.\\ - If~you~go~on,~this~key~will~be~ignored. + This~key~will~be~ignored. } \__nicematrix_msg_new:nn { Hdotsfor~in~col~0 } { + Erroneous~use.\\ You~can't~use~\token_to_str:N \Hdotsfor\ in~an~exterior~column~of~ the~array.~This~error~is~fatal. } \__nicematrix_msg_new:nn { bad~corner } { - #1~is~an~incorrect~specification~for~a~corner~(in~the~keys~ - 'corners'~and~'except-corners').~The~available~ - values~are:~NW,~SW,~NE~and~SE.\\ - If~you~go~on,~this~specification~of~corner~will~be~ignored. + Bad~corner.\\ + #1~is~an~incorrect~specification~for~a~corner~(in~the~key~ + 'corners').~The~available~values~are:~NW,~SW,~NE~and~SE.\\ + This~specification~of~corner~will~be~ignored. } \__nicematrix_msg_new:nn { bad~border } { + Bad~border.\\ \l_keys_key_str\space~is~an~incorrect~specification~for~a~border~ (in~the~key~'borders'~of~the~command~\token_to_str:N \Block).~ The~available~values~are:~left,~right,~top~and~bottom~(and~you~can~ also~use~the~key~'tikz' \bool_if:nF \c__nicematrix_tikz_loaded_bool {~if~you~load~the~LaTeX~package~'tikz'}).\\ - If~you~go~on,~this~specification~of~border~will~be~ignored. + This~specification~of~border~will~be~ignored. } \__nicematrix_msg_new:nn { tikz~key~without~tikz } { + Tikz~not~loaded.\\ You~can't~use~the~key~'tikz'~for~the~command~'\token_to_str:N \Block'~because~you~have~not~loaded~Tikz.~ - If~you~go~on,~this~key~will~be~ignored. + This~key~will~be~ignored. } \__nicematrix_msg_new:nn { last-col~non~empty~for~NiceArray } { + Erroneous~use.\\ In~the~\__nicematrix_full_name_env:,~you~must~use~the~key~ 'last-col'~without~value.\\ However,~you~can~go~on~for~this~time~ @@ -7789,6 +7880,7 @@ } \__nicematrix_msg_new:nn { last-col~non~empty~for~NiceMatrixOptions } { + Erroneous~use.\\ In~\NiceMatrixoptions,~you~must~use~the~key~ 'last-col'~without~value.\\ However,~you~can~go~on~for~this~time~ @@ -7796,61 +7888,61 @@ } \__nicematrix_msg_new:nn { Block~too~large~1 } { + Block~too~large.\\ You~try~to~draw~a~block~in~the~cell~#1-#2~of~your~matrix~but~the~matrix~is~ too~small~for~that~block. \\ } \__nicematrix_msg_new:nn { Block~too~large~2 } { + Block~too~large.\\ The~preamble~of~your~\__nicematrix_full_name_env:\ announces~\int_use:N \g__nicematrix_static_num_of_col_int\ columns~but~you~use~only~\int_use:N \c@jCol\ and~that's~why~a~block~ specified~in~the~cell~#1-#2~can't~be~drawn.~You~should~add~some~ampersands~ (&)~at~the~end~of~the~first~row~of~your~ \__nicematrix_full_name_env:.\\ - If~you~go~on,this~block~and~maybe~others~will~be~ignored. + This~block~and~maybe~others~will~be~ignored. } \__nicematrix_msg_new:nn { unknown~column~type } { + Bad~column~type.\\ The~column~type~'#1'~in~your~\__nicematrix_full_name_env:\ is~unknown. \\ This~error~is~fatal. } -\__nicematrix_msg_new:nn { colon~without~arydshln } - { - The~column~type~':'~in~your~\__nicematrix_full_name_env:\ - is~unknown.~If~you~want~to~use~':'~of~'arydshln',~you~should~ - load~that~package.~If~you~want~a~dotted~line~of~'nicematrix',~you~ - should~use~'\l__nicematrix_letter_for_dotted_lines_str'.\\ - This~error~is~fatal. - } \__nicematrix_msg_new:nn { tabularnote~forbidden } { + Forbidden~command.\\ You~can't~use~the~command~\token_to_str:N\tabularnote\ ~in~a~\__nicematrix_full_name_env:.~This~command~is~available~only~in~ \{NiceTabular\},~\{NiceArray\}~and~\{NiceMatrix\}. \\ - If~you~go~on,~this~command~will~be~ignored. + This~command~will~be~ignored. } \__nicematrix_msg_new:nn { borders~forbidden } { + Forbidden~key.\\ You~can't~use~the~key~'borders'~of~the~command~\token_to_str:N \Block\ because~the~option~'rounded-corners'~ is~in~force~with~a~non-zero~value.\\ - If~you~go~on,~this~key~will~be~ignored. + This~key~will~be~ignored. } \__nicematrix_msg_new:nn { bottomrule~without~booktabs } { + booktabs~not~loaded.\\ You~can't~use~the~key~'tabular/bottomrule'~because~you~haven't~ loaded~'booktabs'.\\ - If~you~go~on,~this~key~will~be~ignored. + This~key~will~be~ignored. } \__nicematrix_msg_new:nn { enumitem~not~loaded } { + enumitem~not~loaded.\\ You~can't~use~the~command~\token_to_str:N\tabularnote\ ~because~you~haven't~loaded~'enumitem'.\\ - If~you~go~on,~this~command~will~be~ignored. + This~command~will~be~ignored. } \__nicematrix_msg_new:nn { tikz~in~custom-line~without~tikz } { + Tikz~not~loaded.\\ 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~ @@ -7858,18 +7950,21 @@ } \__nicematrix_msg_new:nn { tikz~in~borders~without~tikz } { + Tikz~not~loaded.\\ You~have~used~the~key~'tikz'~in~a~key~'borders'~(of~a~ command~'\token_to_str:N\Block')~but~Tikz~is~not~loaded.~ - If~you~go~on,~that~key~will~be~ignored. + That~key~will~be~ignored. } \__nicematrix_msg_new:nn { color~in~custom-line~with~tikz } { + Erroneous~use.\\ 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. + The~key~'color'~will~be~discarded. } \__nicematrix_msg_new:nn { Wrong~last~row } { + Wrong~number.\\ You~have~used~'last-row=\int_use:N \l__nicematrix_last_row_int'~but~your~ \__nicematrix_full_name_env:\ seems~to~have~\int_use:N \c@iRow \ rows.~ If~you~go~on,~the~value~of~\int_use:N \c@iRow \ will~be~used~for~ @@ -7877,29 +7972,37 @@ without~value~(more~compilations~might~be~necessary). } \__nicematrix_msg_new:nn { Yet~in~env } - { Environments~of~nicematrix~can't~be~nested.\\ This~error~is~fatal. } + { + Nested~environments.\\ + Environments~of~nicematrix~can't~be~nested.\\ + This~error~is~fatal. + } \__nicematrix_msg_new:nn { Outside~math~mode } { + Outside~math~mode.\\ The~\__nicematrix_full_name_env:\ can~be~used~only~in~math~mode~ (and~not~in~\token_to_str:N \vcenter).\\ This~error~is~fatal. } \__nicematrix_msg_new:nn { One~letter~allowed } { + Bad~name.\\ The~value~of~key~'\l_keys_key_str'~must~be~of~length~1.\\ - If~you~go~on,~it~will~be~ignored. + It~will~be~ignored. } \__nicematrix_msg_new:nn { varwidth~not~loaded } { + varwidth~not~loaded.\\ You~can't~use~the~column~type~'V'~because~'varwidth'~is~not~ loaded.\\ - If~you~go~on,~your~column~will~behave~like~'p'. + Your~column~will~behave~like~'p'. } \__nicematrix_msg_new:nnn { Unknown~key~for~Block } { + Unknown~key.\\ The~key~'\l_keys_key_str'~is~unknown~for~the~command~\token_to_str:N - \Block.\\ If~you~go~on,~it~will~be~ignored. \\ - For~a~list~of~the~available~keys,~type~H~<return>. + \Block.\\ It~will~be~ignored. \\ + \c__nicematrix_available_keys_str } { The~available~keys~are~(in~alphabetic~order):~b,~borders,~c,~draw,~fill,~ @@ -7908,16 +8011,18 @@ } \__nicematrix_msg_new:nn { Version~of~siunitx~too~old } { + siunitx~too~old.\\ You~can't~use~'S'~columns~because~your~version~of~'siunitx'~ is~too~old.~You~need~at~least~v~3.0.\\ This~error~is~fatal. } \__nicematrix_msg_new:nnn { Unknown~key~for~Brace } { + Unknown~key.\\ The~key~'\l_keys_key_str'~is~unknown~for~the~commands~\token_to_str:N \UnderBrace\ and~\token_to_str:N \OverBrace.\\ - If~you~go~on,~it~will~be~ignored. \\ - For~a~list~of~the~available~keys,~type~H~<return>. + It~will~be~ignored. \\ + \c__nicematrix_available_keys_str } { The~available~keys~are~(in~alphabetic~order):~color,~left-shorten,~ @@ -7926,10 +8031,10 @@ } \__nicematrix_msg_new:nnn { Unknown~key~for~CodeAfter } { + Unknown~key.\\ The~key~'\l_keys_key_str'~is~unknown.\\ - If~you~go~on,~it~will~be~ignored. \\ - For~a~list~of~the~available~keys~in~\token_to_str:N - \CodeAfter,~type~H~<return>. + It~will~be~ignored. \\ + \c__nicematrix_available_keys_str } { The~available~keys~are~(in~alphabetic~order):~ @@ -7941,10 +8046,10 @@ } \__nicematrix_msg_new:nnn { Unknown~key~for~SubMatrix } { + Unknown~key.\\ The~key~'\l_keys_key_str'~is~unknown.\\ - If~you~go~on,~this~key~will~be~ignored. \\ - For~a~list~of~the~available~keys~in~\token_to_str:N - \SubMatrix,~type~H~<return>. + That~key~will~be~ignored. \\ + \c__nicematrix_available_keys_str } { The~available~keys~are~(in~alphabetic~order):~ @@ -7962,9 +8067,10 @@ } \__nicematrix_msg_new:nnn { Unknown~key~for~notes } { + Unknown~key.\\ The~key~'\l_keys_key_str'~is~unknown.\\ - If~you~go~on,~it~will~be~ignored. \\ - For~a~list~of~the~available~keys~about~notes,~type~H~<return>. + That~key~will~be~ignored. \\ + \c__nicematrix_available_keys_str } { The~available~keys~are~(in~alphabetic~order):~ @@ -7981,10 +8087,11 @@ } \__nicematrix_msg_new:nnn { Unknown~key~for~RowStyle } { + Unknown~key.\\ The~key~'\l_keys_key_str'~is~unknown~for~the~command~ \token_to_str:N \RowStyle. \\ - If~you~go~on,~it~will~be~ignored. \\ - For~a~list~of~the~available~keys,~type~H~<return>. + That~key~will~be~ignored. \\ + \c__nicematrix_available_keys_str } { The~available~keys~are~(in~alphabetic~order):~ @@ -7998,10 +8105,11 @@ } \__nicematrix_msg_new:nnn { Unknown~key~for~NiceMatrixOptions } { + Unknown~key.\\ The~key~'\l_keys_key_str'~is~unknown~for~the~command~ \token_to_str:N \NiceMatrixOptions. \\ - If~you~go~on,~it~will~be~ignored. \\ - For~a~list~of~the~*principal*~available~keys,~type~H~<return>. + That~key~will~be~ignored. \\ + \c__nicematrix_available_keys_str } { The~available~keys~are~(in~alphabetic~order):~ @@ -8042,10 +8150,11 @@ } \__nicematrix_msg_new:nnn { Unknown~key~for~NiceArray } { + Unknown~key.\\ The~key~'\l_keys_key_str'~is~unknown~for~the~environment~ \{NiceArray\}. \\ - If~you~go~on,~it~will~be~ignored. \\ - For~a~list~of~the~*principal*~available~keys,~type~H~<return>. + That~key~will~be~ignored. \\ + \c__nicematrix_available_keys_str } { The~available~keys~are~(in~alphabetic~order):~ @@ -8090,15 +8199,18 @@ tabularnote,~ vlines,~ xdots/color,~ + xdots/shorten-start,~ + xdots/shorten-end,~ xdots/shorten~and~ xdots/line-style. } \__nicematrix_msg_new:nnn { Unknown~key~for~NiceMatrix } { + Unknown~key.\\ The~key~'\l_keys_key_str'~is~unknown~for~the~ \__nicematrix_full_name_env:. \\ - If~you~go~on,~it~will~be~ignored. \\ - For~a~list~of~the~*principal*~available~keys,~type~H~<return>. + That~key~will~be~ignored. \\ + \c__nicematrix_available_keys_str } { The~available~keys~are~(in~alphabetic~order):~ @@ -8142,15 +8254,18 @@ t,~ vlines,~ xdots/color,~ + xdots/shorten-start,~ + xdots/shorten-end,~ xdots/shorten~and~ xdots/line-style. } \__nicematrix_msg_new:nnn { Unknown~key~for~NiceTabular } { + Unknown~key.\\ The~key~'\l_keys_key_str'~is~unknown~for~the~environment~ \{NiceTabular\}. \\ - If~you~go~on,~it~will~be~ignored. \\ - For~a~list~of~the~*principal*~available~keys,~type~H~<return>. + That~key~will~be~ignored. \\ + \c__nicematrix_available_keys_str } { The~available~keys~are~(in~alphabetic~order):~ @@ -8194,18 +8309,21 @@ tabularnote,~ vlines,~ xdots/color,~ + xdots/shorten-start,~ + xdots/shorten-end,~ xdots/shorten~and~ xdots/line-style. } \__nicematrix_msg_new:nnn { Duplicate~name } { + Duplicate~name.\\ The~name~'\l_keys_value_tl'~is~already~used~and~you~shouldn't~use~ the~same~environment~name~twice.~You~can~go~on,~but,~ maybe,~you~will~have~incorrect~results~especially~ if~you~use~'columns-width=auto'.~If~you~don't~want~to~see~this~ message~again,~use~the~key~'allow-duplicate-names'~in~ '\token_to_str:N \NiceMatrixOptions'.\\ - For~a~list~of~the~names~already~used,~type~H~<return>. \\ + \c__nicematrix_available_keys_str } { The~names~already~defined~in~this~document~are:~ @@ -8213,8 +8331,9 @@ } \__nicematrix_msg_new:nn { Option~auto~for~columns-width } { + Erroneous~use.\\ You~can't~give~the~value~'auto'~to~the~key~'columns-width'~here.~ - If~you~go~on,~the~key~will~be~ignored. + That~key~will~be~ignored. } \endinput |