diff options
author | Karl Berry <karl@freefriends.org> | 2023-08-22 22:46:08 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2023-08-22 22:46:08 +0000 |
commit | ef76cd6eb8886c8a636b76e696c08ad9e4c53ad9 (patch) | |
tree | d5d4dbe8a0deb1f3f87533e7253df6f02a7ba328 /Master/texmf-dist/tex/latex/numerica-tables | |
parent | ea39527914dd7740302a337d64e3669b99e03ba8 (diff) |
numerica-tables (23aug23)
git-svn-id: svn://tug.org/texlive/trunk@68020 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/numerica-tables')
-rw-r--r-- | Master/texmf-dist/tex/latex/numerica-tables/numerica-tables.sty | 771 |
1 files changed, 418 insertions, 353 deletions
diff --git a/Master/texmf-dist/tex/latex/numerica-tables/numerica-tables.sty b/Master/texmf-dist/tex/latex/numerica-tables/numerica-tables.sty index daa9c992f2c..e39ec24f5bf 100644 --- a/Master/texmf-dist/tex/latex/numerica-tables/numerica-tables.sty +++ b/Master/texmf-dist/tex/latex/numerica-tables/numerica-tables.sty @@ -7,22 +7,38 @@ % % Andrew Parsloe (ajparsloe@gmail.com) % -\RequirePackage{numerica}[2021/12/07] -\@ifpackagelater{numerica}{2021/12/07} - {} - {% - \PackageError{numerica-tables}{Package numerica too old.} - {Please update the package.} - \endinput - } \RequirePackage{booktabs} -% \ProvidesExplFile {numerica-tables.sty} - {2021/12/07} - {2.0.0} + {2023/08/21} + {3.0.0} {Create mathematical tables of function values} + +\msg_new:nnn {numerica-tables} {version} + { + Package~too~old!~This~version~of~numerica-tables~requires~ + numerica~version~3.0~(or~later). + } +\msg_new:nnn {numerica-tables} {load-order} + { + Please~load~version~3.0~(or~later)~of~the~numerica~ + package~before~numerica~tables. + } +\cs_if_exist:NTF \c_nmc_version_tl + { + \int_compare:nNnT { \c_nmc_version_tl } < { 30 } + { \msg_fatal:nn {numerica-tables} {version} } + } + { \msg_fatal:nn {numerica-tables} {load-order} } %---------------------------------------------------------- +\cs_generate_variant:Nn \tl_if_head_eq_charcode:nNTF { V } +\cs_generate_variant:Nn \tl_if_head_eq_charcode:nNT { V } +\cs_generate_variant:Nn \seq_set_from_clist:Nn { No } +\cs_generate_variant:Nn \int_compare:nNnTF { v } +\cs_generate_variant:Nn \int_compare:nNnT { v } +\cs_generate_variant:Nn \int_case:nnTF { v } +\cs_generate_variant:Nn \clist_pop:NN { cc } + \cs_new_protected:Npn \__nmc_table_prepad:Nnn #1#2#3 { \tl_put_left:Nx #1 { \prg_replicate:nn @@ -35,7 +51,7 @@ { ( #2 )\,{ #1 } } } \cs_new:Npn \__nmc_sci_num_table_signs:n #1 - { + { \int_compare:nNnF { \l__nmc_num_sgn_int } < { 0 } { \int_case:nn { \l__nmc_table_signs_int } @@ -47,35 +63,39 @@ { 2 } { + } } } - #1 + \exp_not:o { #1 } } +\cs_generate_variant:Nn \__nmc_sci_num_table_signs:n { x } \cs_new:Npn \__nmc_table_rc:N #1 - { \tl_if_eq:NNTF #1 \c__nmc_r_tl { row } { column } } + { \str_if_eq:nVTF { #1 } \c__nmc_r_tl { row } { column } } %-------------------------------------- \tl_new:N \l__nmc_x_tl \seq_new:N \l_tmpd_seq \tl_const:Nn \c__nmc_r_tl { r } \tl_const:Nn \c__nmc_l_tl { l } -\tl_new:N \l__nmc_table_fnsep_tl \bool_new:N \l__nmc_table_multifn_bool \seq_new:N \l__nmc_table_multifn_seq \tl_new:N \l__nmc_table_valign_tl -\seq_new:N \l_nmc_table_reuse_seq \tl_new:N \l__nmc_table_rvar_tl \tl_new:N \l__nmc_table_rvari_tl \tl_new:N \l__nmc_table_rstop_tl \tl_new:N \l__nmc_table_rstep_tl \tl_new:N \l__nmc_table_rspec_tl +\tl_new:N \l__nmc_table_rvfn_tl +\bool_new:N \l__nmc_table_rvfn_bool \fp_new:N \l__nmc_table_rstart_fp \fp_new:N \l__nmc_table_rstop_fp \tl_new:N \l__nmc_table_cspec_tl \fp_new:N \l__nmc_table_rstep_fp \fp_new:N \l__nmc_table_r_fp \fp_new:N \l__nmc_table_c_fp +\fp_new:N \l__nmc_table_fn_val_fp \int_new:N \l__nmc_table_rnum_int \clist_new:N \l__nmc_table_rspec_clist \bool_new:N \l__nmc_table_rspec_bool +\seq_new:N \l__nmc_table_rdata_seq +\bool_new:N \l__nmc_table_rdata_bool \tl_new:N \l__nmc_table_cvar_tl \tl_new:N \l__nmc_table_cstop_tl @@ -91,6 +111,7 @@ \seq_new:N \l__nmc_table_rvcol_seq \seq_new:N \l__nmc_table_rvcoli_seq \seq_new:N \l__nmc_table_this_col_seq +\seq_new:N \l__nmc_table_recur_seq \seq_new:N \l__nmc_table_body_cols_seq \seq_new:N \l__nmc_table_body_rows_seq @@ -143,26 +164,38 @@ \tl_new:N \l__nmc_table_query_tl %------------------------------------------------ \nmc_define:NnN \nmcTabulate { table } \tabulate + \cs_gset_protected:Npn \__nmc_table_initialize: { \bool_set_false:N \l__nmc_allow_TF_out_bool \int_set:Nn \l__nmc_table_rnum_int { -1 } \int_set:Nn \l__nmc_table_cnum_int { -1 } + \bool_if:NT \l__nmc_num_only_bool + { \tl_set:Nn \l__nmc_table_Q_tl { @=MAX } } } -\cs_gset_protected:Npn \__nmc_table_settings_digest: - { - \int_zero:N \l__nmc_dbg_int +\cs_gset_protected:Npn \__nmc_table_settings: + { \int_compare:nTF { 0 <= \l__nmc_table_rpos_int <= 4 } { \int_compare:nNnT { \l__nmc_table_rpos_int } = { 4 } { \int_incr:N \l__nmc_table_rpos_int } } { \int_set:Nn \l__nmc_table_rpos_int { 1 } } - \clist_if_empty:NF \l__nmc_table_rspec_clist - { \__nmc_table_settings_spec:N r } + \seq_if_empty:NTF \l__nmc_table_rdata_seq + { + \clist_if_empty:NF \l__nmc_table_rspec_clist + { \__nmc_table_settings_spec:N r } + } + { + \bool_set_true:N \l__nmc_table_rdata_bool + \int_set:Nn \l__nmc_table_rnum_int + { \seq_count:N \l__nmc_table_rdata_seq } + \int_if_zero:nF { \l__nmc_table_rverb_int } + { \int_set_eq:NN \l__nmc_table_rround_int \c_max_int } + \__nmc_table_rdata_fpstart: + } \clist_if_empty:NF \l__nmc_table_cspec_clist - { \__nmc_table_settings_spec:N c } - + { \__nmc_table_settings_spec:N c } \tl_if_empty:NT \l__nmc_table_rhead_tl { \tl_set_eq:NN \l__nmc_table_rhead_tl \l__nmc_table_rvar_tl } \tl_if_empty:NTF \l__nmc_table_rheadi_tl @@ -177,17 +210,12 @@ \tl_if_empty:NT \l__nmc_table_rvari_tl { \tl_set_eq:NN \l__nmc_table_rvari_tl \l__nmc_table_rvar_tl } } - \tl_if_empty:NT \l__nmc_table_rhnudgei_tl { \tl_set_eq:NN \l__nmc_table_rhnudgei_tl \l__nmc_table_rhnudge_tl } - \tl_if_empty:NF \l__nmc_table_ctitle_tl { \l__nmc_table_settings_ctitle: } \tl_if_empty:NTF \l__nmc_table_Q_tl - { - \tl_set:Nn \l__nmc_table_query_tl - { \__nmc_verb:n { \nmcTabulate* }~lacks~a~ } - } + { \tl_set:Nn \l__nmc_table_query_tl { Missing~ } } { \tl_set:Nn \l__nmc_table_query_tl { No~table~value~satisfies~ } \__nmc_table_settings_QA: @@ -206,11 +234,12 @@ { \int_set_eq:NN \l__nmc_table_chstyle_int \c__nmc_table_chstyle_int } \tl_if_empty:NF \l__nmc_table_footer_tl { - \tl_if_eq:VnTF \l__nmc_table_footer_tl { * } + \tl_if_eq:VnT \l__nmc_table_footer_tl { * } { \bool_set_true:N \l__nmc_table_foot_bool } - { \__nmc_table_footerops:N \l__nmc_table_footer_tl } } - } + \int_compare:nNnF \l__nmc_dbg_int = { 11 } + { \int_zero:N \l__nmc_dbg_int } + } \cs_new_protected:Npn \l__nmc_table_settings_ctitle: { \int_incr:N \l__nmc_table_ctitle_int % 1 @@ -224,7 +253,7 @@ \cs_new_protected:Npn \__nmc_table_settings_rules: { \clist_map_inline:nn - { {T}{*2},{t}{*3},{m}{*5},{h}{*7},{f}{*11},{B}{*13} } + { {T}{*2},{t}{*3},{m}{*5},{s}{*5},{h}{*7},{f}{*11},{B}{*13} } { \tl_replace_once:Nnn \l__nmc_table_rules_tl ##1 } \int_set:Nn \l__nmc_table_rules_int { 1 \l__nmc_table_rules_tl } } @@ -250,18 +279,8 @@ \fp_set:Nn \l__nmc_table_min_fp { inf } } } -\cs_new_protected:Npn \__nmc_table_footerops:N #1 - { - \tl_set_eq:NN \l_tmpa_tl #1 - \regex_replace_all:nnN { SUM } { \c{l__nmc_table_csum_tl} } #1 - \regex_replace_all:nnN { AVE } { \c{l__nmc_table_cave_tl} } #1 - \regex_replace_all:nnN { MAX } { \c{l__nmc_table_cmax_tl} } #1 - \regex_replace_all:nnN { MIN } { \c{l__nmc_table_cmin_tl} } #1 - \tl_if_eq:NNF \l_tmpa_tl #1 - { \bool_set_true:N \l__nmc_table_footops_bool } - } \cs_new_protected:Npn \__nmc_table_settings_spec:N #1 - { + { \bool_set_true:c { l__nmc_table_ #1 spec_bool } \clist_pop:cc { l__nmc_table_ #1 spec_clist } { l__nmc_table_ #1 var_tl } \clist_pop:cc { l__nmc_table_ #1 spec_clist } { l__nmc_table_ #1 step_tl } @@ -275,68 +294,74 @@ \int_div_truncate:nn { \l__nmc_table_rpos_int } { 3 } } } \cs_gset_protected:Npn \__nmc_table_vv_digest:N #1 - { - + { \bool_if:NTF \l__nmc_multitok_bool { - \clist_push:NV \l_nmc_formula_tl \l__nmc_table_cvar_tl - \clist_push:NV \l_nmc_formula_tl \l__nmc_table_rvar_tl + \tl_if_empty:NF \l__nmc_table_cvar_tl + { \clist_push:NV \l__nmc_formula_tl \l__nmc_table_cvar_tl } + \tl_if_empty:NF \l__nmc_table_rvar_tl + { \clist_push:NV \l__nmc_formula_tl \l__nmc_table_rvar_tl } \__nmc_vv_digest:N #1 - \clist_pop:NN \l_nmc_formula_tl \l__nmc_table_rvar_tl + \tl_if_empty:NF \l__nmc_table_rvar_tl + { \clist_pop:NN \l__nmc_formula_tl \l__nmc_table_rvar_tl } \tl_if_empty:NF \l__nmc_table_cvar_tl - { \clist_pop:NN \l_nmc_formula_tl \l__nmc_table_cvar_tl } + { \clist_pop:NN \l__nmc_formula_tl \l__nmc_table_cvar_tl } } { \__nmc_vv_digest:N #1 } \int_compare:nNnT { \l__nmc_table_ctitle_int } > { 1 } { \tl_set_eq:NN \l__nmc_table_ctitle_tl \l__nmc_formula_dup_tl } \seq_gpop:NN \g__nmc_error_where_seq \l__nmc_toss_tl \__nmc_table_get_ini_vals: - \bool_if:nT - { - \int_if_zero_p:n { \l__nmc_table_rpos_int } && - \int_if_zero_p:n { \l__nmc_table_cnum_int } - } - { \__nmc_error_what:n { Null~table~specified~in } } \bool_if:NF \g__nmc_error_bool { + \bool_if:nT + { + \int_if_zero_p:n { \l__nmc_table_rpos_int } && + \int_if_zero_p:n { \l__nmc_table_cnum_int } + } + { \__nmc_error_what:n { Null~table~specified~in } } \int_compare:nNnT { \l__nmc_table_ctitle_int } = { 3 } - { - \exp_args:NNnx\tl_replace_once:Nnn \l__nmc_vv_inline_tl { vv } - { \seq_use:Nn \l__nmc_vv_visible_seq { , } } - \tl_put_right:Nn \l__nmc_table_ctitle_tl - { \exp_not:o \l__nmc_vv_inline_tl } + { + \tl_put_right:Nx \l__nmc_table_ctitle_tl + { + \c__nmc_vv_delim_tl \mskip18muminus15mu( + \seq_use:Nn \l__nmc_vv_visible_seq { \c__nmc_vv_delim_tl } ) + } } } } \cs_new_protected:Npn \__nmc_table_get_ini_vals: { \__nmc_error_where:n { settings } - \__nmc_table_get_ini_vals_aux:N r - \tl_if_empty:NTF \l__nmc_table_cvar_tl - { - \int_set:Nn \l__nmc_table_cnum_int - { - \int_compare:nNnTF { \l__nmc_table_cnum_int } = { -1 } - { 1 } { \int_min:nn { 1 } - { \int_abs:n { \l__nmc_table_cnum_int } } } + \__nmc_table_get_ini_vals_aux:N r + \bool_if:NF \g__nmc_error_bool + { + \tl_if_empty:NTF \l__nmc_table_cvar_tl + { + \int_set:Nn \l__nmc_table_cnum_int + { + \int_compare:nNnTF { \l__nmc_table_cnum_int } = { -1 } + { 1 } { \int_min:nn { 1 } + { \int_abs:n { \l__nmc_table_cnum_int } } } + } } + { \__nmc_table_get_ini_vals_aux:N c } } - { \__nmc_table_get_ini_vals_aux:N c } \seq_gpop:NN \g__nmc_error_where_seq \l__nmc_toss_tl } \cs_new_protected:Npn \__nmc_table_get_ini_vals_aux:N #1 { \prop_get:NvNTF \l__nmc_subst_var_prop { l__nmc_table_ #1 var_tl } \l_tmpa_tl - { + { \fp_set:cn { l__nmc_table_ #1 start_fp } { \l_tmpa_tl } \bool_if:cTF { l__nmc_table_ #1 spec_bool } { - \__nmc_fpify_set:cv { l__nmc_table_ #1 step_fp } + \__nmc_fpify_set:cv { l__nmc_table_ #1 step_fp } { l__nmc_table_ #1 step_tl } \int_compare:vNnT { l__nmc_table_ #1 num_int } = { -1 } { - \__nmc_fpify_set:cv { l__nmc_table_ #1 stop_fp } + \__nmc_fpify_set:cv { l__nmc_table_ #1 stop_fp } { l__nmc_table_ #1 stop_tl } \l__nmc_table_calc_num:cnnn { l__nmc_table_ #1 num_int } { l__nmc_table_ #1 stop_fp } { l__nmc_table_ #1 start_fp } @@ -345,9 +370,16 @@ } { \__nmc_table_get_individual_ini_vals:N #1 } } - { - \__nmc_error_what:n { No~ \__nmc_table_rc:N #1 - \ variable~specified~in } + { + \tl_if_empty:cTF { l__nmc_table_ #1 var_tl } + { + \__nmc_error_what:n { No~ \__nmc_table_rc:N #1 + \ variable~specified~in } + } + { + \__nmc_error_where:n { variable=value~list } + \__nmc_error_what:n { No~initial~value~for~\__nmc_table_rc:N #1\ variable~in } + } } } \cs_new_protected:Npn \l__nmc_table_calc_num:Nnnn #1#2#3#4 @@ -358,21 +390,21 @@ \cs_generate_variant:Nn \l__nmc_table_calc_num:Nnnn { c } \cs_new_protected:Npn \__nmc_table_get_individual_ini_vals:N #1 - { + { \int_case:vnTF { l__nmc_table_ #1 num_int } { { -1 } { - \__nmc_fpify_set:cv { l__nmc_table_ #1 step_fp } - { l__nmc_table_ #1 step_tl } + \__nmc_fpify_set:cv { l__nmc_table_ #1 step_fp } + { l__nmc_table_ #1 step_tl } \bool_if:NF \g__nmc_error_bool - { \__nmc_fpify_set:cv { l__nmc_table_ #1 stop_fp } - { l__nmc_table_ #1 stop_tl } } + { \__nmc_fpify_set:cv { l__nmc_table_ #1 stop_fp } } + { l__nmc_table_ #1 stop_tl } \bool_if:NF \g__nmc_error_bool { \l__nmc_table_calc_num:cnnn { l__nmc_table_ #1 num_int } - { l__nmc_table_ #1 stop_fp } { l__nmc_table_ #1 start_fp } - { l__nmc_table_ #1 step_fp } + { l__nmc_table_ #1 stop_fp } { l__nmc_table_ #1 start_fp } + { l__nmc_table_ #1 step_fp } } } { 0 } @@ -395,51 +427,72 @@ } { \int_compare:vNnTF { l__nmc_table_ #1 num_int } > { 1 } - { \__nmc_fpify_set:cv { l__nmc_table_ #1 step_fp } - { l__nmc_table_ #1 step_tl } } + { + \bool_if:NF \l__nmc_table_rdata_bool + { + \__nmc_fpify_set:cv { l__nmc_table_ #1 step_fp } + { l__nmc_table_ #1 step_tl } + } + } { \__nmc_error_what:n { Check~number~of~ \__nmc_table_rc:N #1s~specified~in } } } } -%---------------------------------------------------------- +%%%%%%%%%% +\cs_set_protected:Npn \__nmc_table_formula: + { + \tl_set:Nx \l_tmpa_tl { \tl_head:N \l__nmc_formula_tl } + \tl_if_in:nVT { $ \( \[ } \l_tmpa_tl + { + \tl_set:Nx \l__nmc_formula_tl + { \tl_range:Nnn \l__nmc_formula_tl {2}{-2} } + } + \tl_set_eq:NN \l__nmc_formula_dup_tl \l__nmc_formula_tl + } +%%%%%%%%%% \cs_gset_protected:Npn \__nmc_table_process: { \__nmc_error_where:n { formula } \__nmc_table_calc_rvar_col: - \seq_clear:N \l__nmc_table_header_seq - \bool_if:NTF \l__nmc_table_multifn_bool - { \__nmc_table_multifn: } - { - \tl_if_head_eq_charcode:VNT \l_nmc_formula_tl , - { - \tl_set:Nn \l__nmc_table_fnsep_tl { , } - \__nmc_table_multifn: + \bool_if:NF \g__nmc_error_bool + { + \seq_clear:N \l__nmc_table_header_seq + \tl_if_in:NVT \l__nmc_formula_tl \l__nmc_multi_delim_tl + { \__nmc_table_multifn: } + \__nmc_table_calc_cvar_cols: + \bool_if:NF \g__nmc_error_bool + { + \tl_clear:N \l__nmc_result_tl + \__nmc_table_form_body:N \l__nmc_result_tl + \tl_set_eq:NN \l__nmc_fp_expr_tl \l__nmc_fp_exprn_tl + \bool_if:NT \l__nmc_num_only_bool + { + \bool_if:NTF \l__nmc_table_num_only_bool + { + \tl_set_eq:NN \l__nmc_result_tl \l__nmc_table_num_only_tl + \tl_gset_eq:NN \g__nmc_reuse_tl \l__nmc_table_num_only_tl + \bool_gset_true:N \g__nmc_reuse_bool + } + { + \__nmc_error_where:n { settings } + \__nmc_error_what:n + { \l__nmc_table_query_tl~query~\__nmc_verb:n {Q?}~in } + \tl_clear:N \l__nmc_result_tl + } + } } } - \__nmc_table_calc_cvar_cols: - \tl_clear:N \l_nmc_result_tl - \__nmc_table_form_body:N \l_nmc_result_tl - \tl_set_eq:NN \l__nmc_fp_expr_tl \l__nmc_fp_exprn_tl - \bool_if:NT \l__nmc_num_only_bool + \int_compare:nNnT \l__nmc_dbg_int = { 11 } { - \bool_if:NTF \l__nmc_table_num_only_bool - { - \tl_set_eq:NN \l_nmc_result_tl \l__nmc_table_num_only_tl - \tl_gset_eq:NN \g__nmc_reuse_tl \l__nmc_table_num_only_tl - } - { - \__nmc_error_where:n { settings } - \__nmc_error_what:n - { \l__nmc_table_query_tl ~query~\__nmc_verb:n {Q?}~in } - \tl_clear:N \l_nmc_result_tl - } + \__nmc_table_display: + \tl_set:NV \l__nmc_show_tl \l__nmc_result_tl } } \cs_new_protected:Npn \__nmc_table_multifn: - { + { \bool_set_true:N \l__nmc_table_multifn_bool - \exp_args:NNV \seq_set_split:NnV \l__nmc_table_multifn_seq - \l__nmc_table_fnsep_tl \l_nmc_formula_tl + \seq_set_split:NVV \l__nmc_table_multifn_seq + \l__nmc_multi_delim_tl \l__nmc_formula_tl \seq_remove_all:Nn \l__nmc_table_multifn_seq {} \seq_set_eq:NN \l__nmc_table_header_seq \l__nmc_table_multifn_seq \int_set:Nn \l__nmc_table_cnum_int @@ -452,27 +505,115 @@ } \cs_new_protected:Npn \__nmc_table_calc_rvar_col: { + \bool_if:NTF \l__nmc_table_rdata_bool + { + \__nmc_table_rdata_fpstart: + \bool_if:NF \g__nmc_error_bool + { + \seq_map_inline:Nn \l__nmc_table_rdata_seq + { + \tl_clear:N \l_tmpb_tl + \__nmc_fpify:nN { ##1 } \l_tmpb_tl + \fp_set:Nn \l__nmc_table_r_fp + { + \int_if_zero:nTF \l__nmc_table_rfrac_int + { round( \l_tmpb_tl, \l__nmc_table_rround_int ) } + { \l_tmpb_tl } + } + \__nmc_error_fpflag: + \bool_if:NT \g__nmc_error_bool + { \seq_map_break: } + \seq_put_right:NV \l__nmc_table_rvraw_seq \l__nmc_table_r_fp + } + } + } + { + \tl_if_empty:NTF \l__nmc_table_rfunc_tl + { \__nmc_table_runiform: } + { \__nmc_table_rfunc: } + } + + } +\cs_new_protected:Npn \__nmc_table_runiform: + { \fp_set_eq:NN \l__nmc_table_r_fp \l__nmc_table_rstart_fp \int_step_inline:nnnn { 1 } { 1 } { \l__nmc_table_rnum_int } { + \int_if_zero:nT \l__nmc_table_rfrac_int + { + \fp_set:Nn \l__nmc_table_r_fp + { round( \l__nmc_table_r_fp, \l__nmc_table_rround_int ) } + } \seq_put_right:NV \l__nmc_table_rvraw_seq \l__nmc_table_r_fp \fp_add:Nn \l__nmc_table_r_fp { \l__nmc_table_rstep_fp } } } -\cs_new:Npn \__nmc_table_calc_cvar_cols: +\cs_new_protected:Npn \__nmc_table_rdata_fpstart: + { + \seq_get_left:NN \l__nmc_table_rdata_seq \l_tmpa_tl + \tl_put_left:Nn \l_tmpa_tl { = } + \tl_put_left:NV \l_tmpa_tl \l__nmc_table_rvar_tl + \seq_set_from_clist:NN \l_tmpa_seq \l_tmpa_tl + \__nmc_vv_digest:N \l_tmpa_seq + \bool_if:NF \g__nmc_error_bool + { + \prop_get:NVN \l__nmc_subst_var_prop \l__nmc_table_rvar_tl \l_tmpa_tl + \fp_set:Nn \l__nmc_table_rstart_fp { \l_tmpa_tl } + } + } +\cs_new_protected:Npn \__nmc_table_rfunc: + { + \bool_if:NF \g__nmc_error_bool + { + \__nmc_error_where:n { row-variable~function } + \fp_set_eq:NN \l__nmc_table_r_fp \l__nmc_table_rstart_fp + \seq_clear:N \l__nmc_table_rdata_seq + \int_step_function:nN { \l__nmc_table_rnum_int } + \__nmc_table_rfunc_step_fn:n + \seq_gpop:NN \g__nmc_error_where_seq \l__nmc_toss_tl + \bool_if:NF \g__nmc_error_bool + { + \__nmc_table_rdata_fpstart: + \seq_set_eq:NN \l__nmc_table_rvraw_seq \l__nmc_table_rdata_seq + \bool_set_true:N \l__nmc_table_rdata_bool + } + } + } +\cs_new_protected:Npn \__nmc_table_rfunc_step_fn:n #1 { + \bool_if:NF \g__nmc_error_bool + { + \__nmc_calc_fn_val:VNnN \l__nmc_table_rvar_tl + \l__nmc_table_rfunc_tl { \l__nmc_table_r_fp } \l_tmpa_fp + \int_if_zero:nTF \l__nmc_table_rfrac_int + { + \__nmc_num_format:nNnN { \l_tmpa_fp } \l_tmpb_tl + { \l__nmc_table_rround_int } \c_false_bool + } + { \tl_set:Nx \l_tmpb_tl { \fp_use:N \l_tmpa_fp } } + \seq_put_right:NV \l__nmc_table_rdata_seq \l_tmpb_tl + \fp_add:Nn \l__nmc_table_r_fp { \l__nmc_table_rstep_fp } + } + } +\cs_new:Npn \__nmc_table_calc_cvar_cols: + { \fp_set_eq:NN \l__nmc_table_c_fp \l__nmc_table_cstart_fp \int_step_inline:nn { \l__nmc_table_cnum_int } - { - \bool_if:NTF \l__nmc_table_multifn_bool - { \seq_pop:NN \l__nmc_table_multifn_seq \l_nmc_formula_tl } - { \seq_put_right:NV \l__nmc_table_header_seq { \l__nmc_table_c_fp } } + { \bool_if:NF \g__nmc_error_bool { - \seq_clear:N \l__nmc_table_this_col_seq - \fp_set_eq:NN \l__nmc_table_r_fp \l__nmc_table_rstart_fp - \int_step_function:nN { \l__nmc_table_rnum_int } - \__nmc_table_rvar_step_fn:n + \__nmc_table_multifn_header: + \seq_clear:N \l__nmc_table_this_col_seq + \seq_map_inline:Nn \l__nmc_table_rvraw_seq + { + \__nmc_calc_fn_val:VNnN \l__nmc_table_rvar_tl + \l__nmc_formula_tl { ####1 } \l_tmpa_fp + \bool_if:NT \g__nmc_error_bool + { \seq_map_break: } + \seq_put_right:NV \l__nmc_table_this_col_seq \l_tmpa_fp + \bool_if:NT \l__nmc_table_QA_bool + { \__nmc_table_maxmin_do:n { \l_tmpa_fp } } + } } \bool_if:NF \g__nmc_error_bool { @@ -483,23 +624,20 @@ { \prop_put:NVV \l__nmc_subst_var_prop } { \prop_put:NVV \l__nmc_vv_change_prop } \l__nmc_table_rvar_tl \l__nmc_table_rstart_fp - - \__nmc_calc_fn_val:VNnN \l__nmc_table_cvar_tl \l_nmc_formula_tl - { \l__nmc_table_c_fp } \l__nmc_table_fn_val_fp + \int_compare:nNnF { ##1 } > { \l__nmc_table_cnum_int } + { + \__nmc_calc_fn_val:VNnN \l__nmc_table_cvar_tl + \l__nmc_formula_tl { \l__nmc_table_c_fp } + \l__nmc_table_fn_val_fp + } } } } -\cs_new_protected:Npn \__nmc_table_rvar_step_fn:n #1 - { - \bool_if:NF \g__nmc_error_bool - { - \__nmc_calc_fn_val:VNnN \l__nmc_table_rvar_tl - \l_nmc_formula_tl { \l__nmc_table_r_fp } \l_tmpa_fp - \seq_put_right:NV \l__nmc_table_this_col_seq \l_tmpa_fp - \bool_if:NT \l__nmc_table_QA_bool - { \__nmc_table_maxmin_do:n { \l_tmpa_fp } } - \fp_add:Nn \l__nmc_table_r_fp { \l__nmc_table_rstep_fp } - } +\cs_new_protected:Npn \__nmc_table_multifn_header: + { + \bool_if:NTF \l__nmc_table_multifn_bool + { \seq_pop:NN \l__nmc_table_multifn_seq \l__nmc_formula_tl } + { \seq_put_right:NV \l__nmc_table_header_seq { \l__nmc_table_c_fp } } } \cs_new_protected:Npn \__nmc_table_maxmin_do:n #1 { @@ -515,26 +653,38 @@ { \bool_if:NF \l__nmc_num_only_bool { - \__nmc_table_headercnum: - \tl_set:Nx \l__nmc_table_header_tl { \__nmc_table_header: } + \int_if_zero:nF \l__nmc_table_header_int + { + \__nmc_table_headercnum: + \tl_set:Nx \l__nmc_table_header_tl { \__nmc_table_header: } + } \bool_if:NT \l__nmc_table_foot_bool { \seq_set_split:NnV \l_tmpa_seq { & }\l__nmc_table_header_tl \seq_reverse:N \l_tmpa_seq - \tl_set:Nx \l__nmc_table_footer_tl { \seq_use:Nn \l_tmpa_seq { & } } + \tl_set:Nx \l__nmc_table_footer_tl + { \seq_use:Nn \l_tmpa_seq { & } } } - \tl_put_left:Nx \l_nmc_result_tl - { + \tl_put_left:Nx \l__nmc_result_tl + { \__nmc_table_upper: \exp_not:o \l__nmc_table_header_tl - \tabularnewline - \__nmc_if_mod_zero:nnT { \l__nmc_table_rules_int } { 7 } - { \exp_not:N \midrule } + \int_if_zero:nF \l__nmc_table_header_int + { + \\~ + \__nmc_if_mod_zero:nnT { \l__nmc_table_rules_int } { 7 } + { \exp_not:N \midrule } + } + } + \tl_put_right:Nx \l__nmc_result_tl { \__nmc_table_form_lower: } + \bool_if:NF \l__nmc_num_only_bool + { + \bool_gset_false:N \g__nmc_reuse_bool + \tl_gset:Nx \g__nmc_reuse_tl { \exp_not:o \l__nmc_result_tl } } - \tl_put_right:Nx \l_nmc_result_tl { \__nmc_table_form_lower: } - \__nmc_table_reuse: } - \l_nmc_result_tl + \int_if_zero:nT \l__nmc_dbg_int + { \l__nmc_result_tl } } \cs_new:Npn \__nmc_table_upper: { @@ -585,29 +735,29 @@ #1 \exp_not:N \multicolumn { \int_eval:n { \l__nmc_table_cnum_int } } { c } { $ \exp_not:o { \l__nmc_table_ctitle_tl } $ } - #2 \tabularnewline + #2 \\~ \__nmc_if_mod_zero:nnT { \l__nmc_table_rules_int } { 3 } { \exp_not:N \cmidrule(lr) { #3-\int_eval:n { #4 } } } - \tl_if_empty:NF \l__nmc_table_cmidrow_tl - { \__nmc_table_cmidrow: \tabularnewline } + \tl_if_empty:NF \l__nmc_table_csubttl_tl + { \__nmc_table_csubttl: \\~ } \__nmc_if_mod_zero:nnT { \l__nmc_table_rules_int } { 5 } - { \__nmc_table_cmidrow_rule:nn { #3 } { #4 } } + { \__nmc_table_csubttl_rule:nn { #3 } { #4 } } } %%%%%%%%% -\cs_new:Npn \__nmc_table_cmidrow: +\cs_new:Npn \__nmc_table_csubttl: { \int_if_zero:nF { \l__nmc_table_cnum_int } { \int_case:nnF { \l__nmc_table_rpos_int } { - { 0 } { \exp_not:o \l__nmc_table_cmidrow_tl } - { 1 } { & \exp_not:o \l__nmc_table_cmidrow_tl } - { 2 } { \exp_not:o \l__nmc_table_cmidrow_tl & } + { 0 } { \exp_not:o \l__nmc_table_csubttl_tl } + { 1 } { & \exp_not:o \l__nmc_table_csubttl_tl } + { 2 } { \exp_not:o \l__nmc_table_csubttl_tl & } } - { & \exp_not:o \l__nmc_table_cmidrow_tl & } + { & \exp_not:o \l__nmc_table_csubttl_tl & } } } -\cs_new:Npn \__nmc_table_cmidrow_rule:nn #1#2 +\cs_new:Npn \__nmc_table_csubttl_rule:nn #1#2 { \int_compare:nNnTF { \l__nmc_table_rpos_int } > { 2 } { \exp_not:N \cmidrule(lr) { 1-\__nmc_table_total_cols: } } @@ -746,20 +896,37 @@ \cs_new:Npn \__nmc_table_header_nudge:Nnn #1#2#3 { % #1=r(ow)/c(ol), #2=var, #3=nudge - \tl_if_eq:cNTF { l__nmc_table_ #1 calign_tl } \c__nmc_r_tl + \tl_if_eq:cNTF { l__nmc_table_ #1 calign_tl } \c__nmc_r_tl { $ #2 #3 $ } { \tl_if_eq:cNTF { l__nmc_table_ #1 calign_tl } \c__nmc_l_tl { $ #3 #2 $ } { $ #2 $ } } } -%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \cs_new_protected:Npn \__nmc_table_form_body:N #1 - { % #1 \l_nmc_result_tl + { % #1 <== \l__nmc_result_tl \int_if_zero:nF { \l__nmc_table_rpos_int } - { - \__nmc_table_form_rvcol:NN - \l__nmc_table_rvraw_seq \l__nmc_table_rvcol_seq + { + \int_set_eq:NN \l__nmca_int \l__nmc_frac_out_int + \int_set_eq:NN \l__nmc_frac_out_int \l__nmc_table_rfrac_int + \int_set_eq:NN \l__nmc_table_rfrac_int \l__nmca_int + \int_if_zero:nTF { \l__nmc_table_rverb_int } + { + \seq_clear:N \l_tmpa_seq + \seq_map_inline:Nn \l__nmc_table_rvraw_seq + { + \__nmc_num_format:nNnN { ##1 } \l_tmpa_tl + { \l__nmc_table_rround_int } \c_false_bool + \seq_put_right:NV \l_tmpa_seq \l_tmpa_tl + } + \__nmc_table_form_rvcol:NN \l_tmpa_seq \l__nmc_table_rvcol_seq + } + { + \__nmc_table_form_rvcol:NN + \l__nmc_table_rdata_seq \l__nmc_table_rvcol_seq + } + \int_set_eq:NN \l__nmc_frac_out_int \l__nmc_table_rfrac_int } \int_zero:N \l__nmc_table_rbloc_int \int_if_zero:nTF { \l__nmc_table_cnum_int } @@ -771,11 +938,9 @@ \seq_clear:N \l_tmpb_seq \seq_map_variable:NNn #1 \l_tmpa_tl { - \__nmc_num_format:nNnN \l_tmpa_tl \l_tmpb_tl - { \l__nmc_table_rround_int } \c_false_bool \seq_put_right:Nx \l_tmpb_seq - { \exp_not:o \l__nmc_table_rfont_tl { \l_tmpb_tl } } - } + { \exp_not:o \l__nmc_table_rfont_tl { \exp_not:o \l_tmpa_tl } } + } \seq_set_eq:NN #2 \l_tmpb_seq \int_compare:nNnTF { \l__nmc_table_rpos_int } > { 3 } { \__nmc_table_form_rvcoli:NN #1 #2 } % reverse/pivot @@ -795,12 +960,12 @@ } } \cs_new_protected:Npn \__nmc_table_form_body_rvcol_only:N #1 - { % #1 = \l_nmc_result_tl + { % #1 = \l__nmc_result_tl \seq_clear:N \l_tmpb_seq \seq_map_variable:NNn \l__nmc_table_rvcol_seq \l_tmpa_tl { \tl_put_right:Nx #1 - { \exp_not:o \l_tmpa_tl \tabularnewline } + { \exp_not:o \l_tmpa_tl \\~ } \__nmc_table_rbloc_spc:NN \l__nmc_table_rbloc_int \l_tmpa_bool \bool_if:NT \l_tmpa_bool { @@ -810,71 +975,27 @@ } } \cs_new_protected:Npn \__nmc_table_form_body_cvcols:N #1 - { % #1 \l_nmc_result_tl + { % #1 \l__nmc_result_tl \seq_clear:N \l_tmpd_seq \seq_map_variable:NNn \l__nmc_table_body_cols_seq \l_tmpa_seq - { + { \seq_clear:N \l_tmpb_seq \__nmc_table_form_cols:NN \l_tmpa_seq \l_tmpb_seq \seq_put_right:NV \l_tmpd_seq \l_tmpb_seq } - \bool_if:NT \l__nmc_table_footops_bool - { \__nmc_table_footops:N \l_tmpd_seq } \__nmc_table_transpose:NN \l_tmpd_seq \l__nmc_table_body_rows_seq - \seq_map_variable:NNn \l__nmc_table_body_rows_seq \l_tmpa_seq { \__nmc_table_rbloc_spc:NN \l__nmc_table_rbloc_int \l_tmpa_bool \tl_put_right:Nx #1 { \seq_use:Nn \l_tmpa_seq { & } - \tabularnewline + \\~ \bool_if:NT \l_tmpa_bool { \exp_not:o \addlinespace[\l__nmc_table_blocsep_tl] } } } } -\cs_new_protected:Npn \__nmc_table_footops:N #1 - { - \group_begin: - \seq_clear:N \l_tmpb_seq - \seq_set_split:NnV \l_tmpa_seq { & } \l__nmc_table_footer_tl - \int_if_odd:nT { \l__nmc_table_rpos_int } - { - \seq_pop:NN \l_tmpa_seq \l_tmpa_tl - \seq_put_left:NV \l_tmpb_seq \l_tmpa_tl - } - \seq_mapthread_function:NNN #1 \l_tmpa_seq \__nmc_table_footops:nn - \int_compare:nNnT { \l__nmc_table_rpos_int } > { 1 } - { - \seq_pop:NN \l_tmpa_seq \l_tmpa_tl - \seq_put_right:NV \l_tmpb_seq \l_tmpa_tl - } - \tl_set:Nx \l__nmc_table_footer_tl { \seq_use:Nn \l_tmpb_seq { & } } - \exp_args:NNNV - \group_end: - \tl_set:Nn \l__nmc_table_footer_tl \l__nmc_table_footer_tl - } -\cs_new_protected:Npn \__nmc_table_footops:nn #1#2 - { - \tl_set:Nn \l_tmpc_seq { #1 } - \tl_set:Nx \l_tmpa_tl { \seq_use:Nn \l_tmpc_seq { + } } - \fp_set:Nn \l_tmpa_fp { \l_tmpa_tl } - \fp_set:Nn \l_tmpb_fp { \l_tmpa_fp / \l__nmc_table_rnum_int } - \__nmc_num_format:nNnN \l_tmpa_fp \l__nmc_table_csum_tl - { \l__nmc_round_int } \l__nmc_sci_num_out_bool - \__nmc_num_format:nNnN \l_tmpb_fp \l__nmc_table_cave_tl - { \l__nmc_round_int } \l__nmc_sci_num_out_bool - \tl_set:Nx \l_tmpa_tl { max(\seq_use:Nn \l_tmpc_seq { , }) } - \fp_set:Nn \l_tmpa_fp { \l_tmpa_tl } - \__nmc_num_format:nNnN \l_tmpa_fp \l__nmc_table_cmax_tl - { \l__nmc_round_int } \l__nmc_sci_num_out_bool - \tl_set:Nx \l_tmpa_tl { min(\seq_use:Nn \l_tmpc_seq { , }) } - \fp_set:Nn \l_tmpb_fp { \l_tmpa_tl } - \__nmc_num_format:nNnN \l_tmpb_fp \l__nmc_table_cmin_tl - { \l__nmc_round_int } \l__nmc_sci_num_out_bool - \seq_put_right:Nx \l_tmpb_seq { $ #2 $ } - } \cs_new_protected:Npn \__nmc_table_transpose:NN #1#2 { % #1 seq of seq in #2 seq of seq out \int_if_zero:nF { \l__nmc_table_rpos_int } @@ -899,7 +1020,7 @@ } } \cs_new:Npn \__nmc_table_rbloc_spc:NN #1#2 - { % + { \int_incr:N #1 \bool_set_false:N #2 \int_compare:nNnT { #1 } = { \l__nmc_table_rblock_tl } @@ -923,16 +1044,16 @@ { \__nmc_table_form_cols_riii:NN #1#2 } } \cs_new_protected:Npn \__nmc_table_form_cols_ri:NN #1#2 - { + { \seq_pop:NN #1 \l_tmpb_fp \__nmc_num_format:nNnN \l_tmpb_fp \l_tmpb_tl { \l__nmc_round_int } \l__nmc_sci_num_table_bool \bool_if:NT \l__nmc_table_QA_bool { \__nmc_table_QA:N \l_tmpb_tl } - \seq_put_right:Nx #2 { \exp_not:o \l_tmpb_tl } + \seq_put_right:Nx #2 { \exp_not:o \l_tmpb_tl } } \cs_new_protected:Npn \__nmc_table_form_cols_rii:NN #1#2 - { + { \__nmc_table_form_cols_rii_aux:NN #1#2 \__nmc_table_signs: \__nmc_num_format:nNnN \l_tmpb_fp \l_tmpb_tl @@ -957,13 +1078,12 @@ \seq_put_right:Nx #2 { \exp_not:o \l_tmpb_tl \exp_not:o \l__nmc_table_diff_tl } \int_if_zero:nF \l__nmc_table_diffs_int - { \__nmc_table_calc_diffs:nn - { \l_tmpb_fp } { \l_tmpa_fp } } + { \__nmc_table_calc_diffs:nn { \l_tmpb_fp } { \l_tmpa_fp } } \fp_set_eq:NN \l_tmpb_fp \l_tmpa_fp } \cs_new_protected:Npn \__nmc_table_form_cols_riii:NN #1#2 { - \__nmc_table_form_cols_rii_aux:NN #1#2 + \__nmc_table_form_cols_rii_aux:NN #1#2 \int_set_eq:NN \l__nmc_table_c_int \l__nmc_table_b_int \int_set_eq:NN \l__nmc_table_b_int \l__nmc_table_a_int \seq_map_variable:NNn #1 \l_tmpa_fp @@ -999,7 +1119,9 @@ \__nmc_table_t_format:wN #1\q_stop \l_tmpa_tl \tl_set_eq:NN #1 \l_tmpa_tl } - { \tl_set:Nx #1 { \__nmc_sci_num_table_signs:n { #1 } } } + { \tl_set:Nx #1 { \__nmc_sci_num_table_signs:n { #1 } } + + } } { \tl_set:Nx #1 { \__nmc_sci_num_table_signs:n { #1 } } } \bool_if:NT \l__nmc_table_QA_bool @@ -1012,7 +1134,7 @@ \bool_lazy_and:nnT { \l__nmc_num_only_bool } { !\l__nmc_table_num_only_bool } { - \tl_set_eq:NN \l__nmc_table_num_only_tl \l_tmpb_tl + \tl_set_eq:NN \l__nmc_table_num_only_tl #1 \bool_set_true:N \l__nmc_table_num_only_bool } \tl_set:Nx #1 { \l__nmc_table_A_tl } @@ -1059,153 +1181,96 @@ } %%%%%%%%%%%%%%%%%%% \cs_new:Npn \__nmc_table_form_lower: - { + { \tl_if_empty:NF \l__nmc_table_footer_tl { \__nmc_if_mod_zero:nnT { \l__nmc_table_rules_int } { 11 } - { \exp_not:N \midrule[\cmidrulewidth] } - \exp_not:o \l__nmc_table_footer_tl \tabularnewline + { \exp_not:N \cmidrule(lr) { 1-\__nmc_table_total_cols: } } + \exp_not:o \l__nmc_table_footer_tl \\~ } \__nmc_if_mod_zero:nnT { \l__nmc_table_rules_int } { 13 } { \exp_not:N \bottomrule } \exp_not:n { \end{tabular} } } -%%%%%%%%%%%%%%%%%%% -\cs_new_protected:Npn \__nmc_table_reuse: - { - \bool_if:NF \l__nmc_num_only_bool - { - \int_case:nnF { \int_sign:n { \l__nmc_table_reuse_int } } - { - { -1 } { \__nmc_table_reuse_row:n { \l__nmc_table_reuse_int } } - - { 1 } { \__nmc_table_reuse_col:n { \l__nmc_table_reuse_int } } - } - { \tl_gset:Nx \g__nmc_reuse_tl { \exp_not:o \l_nmc_result_tl } } - } - } -\cs_new_protected:Npn \__nmc_table_reuse_row:n #1 - { - \tl_set:Nx \l_tmpa_seq - { \seq_item:Nn \l__nmc_table_body_rows_seq { -#1 } } - \tl_gset:Nx \g__nmc_reuse_tl { \seq_use:Nn \l_tmpa_seq { , } } - } -\cs_new_protected:Npn \__nmc_table_reuse_col:n #1 - { - \int_zero:N \l_tmpa_int - \seq_map_variable:NNn \l__nmc_table_body_cols_seq \l_tmpa_seq - { - \int_incr:N \l_tmpa_int - \int_compare:nNnT { \l_tmpa_int } = { #1 } - { - \seq_mapthread_function:NNN \l__nmc_table_rvraw_seq - \l_tmpa_seq \__nmc_table_reuse:nn - \seq_map_break: - } - } - } -\cs_new_protected:Npn \__nmc_table_reuse:nn #1#2 - { - \__nmc_num_format:nNnN { #1 } \l_tmpa_tl - { \l__nmc_table_rround_int } \c_false_bool - \__nmc_num_format:nNnN { #2 } \l_tmpb_tl - { \l__nmc_round_int } \l__nmc_sci_num_out_bool - \int_if_zero:nTF \l__nmc_table_rpos_int - { \seq_put_right:NV \l_nmc_table_reuse_seq \l_tmpb_tl } - { - \seq_put_right:Nx \l_nmc_table_reuse_seq - { { \l_tmpa_tl , \l_tmpb_tl } } - } - \tl_gset:Nx \g__nmc_reuse_tl { \seq_use:Nn \l_nmc_table_reuse_seq {,} } - } %------------------------------------------------ -\keys_define:nn { numerica-tables } - { - table-rvar-rounding .int_set:N = \l__nmc_table_rround_int, - table-rvar-col-pos .int_set:N = \l__nmc_table_rpos_int, - table-rvar-align .tl_set:N = \l__nmc_table_rcalign_tl, - table-cvar-align .tl_set:N = \l__nmc_table_ccalign_tl, - table-block-sep .tl_set:N = \l__nmc_table_blocsep_tl, - table-rules .tl_set:N = \l__nmc_table_rules_tl, - table-form-diffs .int_set:N = \l__nmc_table_diffs_int, - table-reuse .int_set:N = \l__nmc_table_reuse_int, - table-vert-align .tl_set:N = \l__nmc_table_valign_tl, - table-rvar-rounding .default:n = 1, - table-rvar-align .default:n = r, - table-rvar-col-pos .default:n = 1, - table-cvar-align .default:n = r, - table-block-sep .default:n = 1ex, - table-rules .default:n = ThB, - table-form-diffs .default:n = 0, - table-reuse .default:n = 0, - table-vert-align .default:n = m - } -\keys_set_known:nn { numerica-tables } - { - table-rvar-rounding,table-rvar-align,table-rvar-col-pos, - table-cvar-align,table-block-sep,table-rules,table-fontsize, - table-form-diffs,table-reuse - } \cs_new_protected:Npn \__nmc_table_set_rcnum:nn #1#2 { \__nmc_fpify_set:Nn \l_tmpb_fp { #1 } \int_set:cn { l__nmc_table_ #2 num_int } { \fp_to_int:N \l_tmpb_fp } } \cs_generate_variant:Nn \__nmc_table_set_rcnum:nn { V } + +\cs_new_protected:Npn \__nmc_table_rvfile:n #1 + { + \file_get:nnNTF { #1 } {} \l_tmpa_tl + { \seq_set_from_clist:No \l__nmc_table_rdata_seq \l_tmpa_tl } + { \__nmc_error_what:n { File~#1~not~found~in } } + } \keys_define:nn { numerica/table } { - rvar .tl_set:N = \l__nmc_table_rvar_tl, - rstop .tl_set:N = \l__nmc_table_rstop_tl, - rstep .tl_set:N = \l__nmc_table_rstep_tl, - rows .code:n = \__nmc_table_set_rcnum:nn { #1 } { r }, - rspec .clist_set:N = \l__nmc_table_rspec_clist, - rround .int_set:N = \l__nmc_table_rround_int, - rfont .code:n = \tl_set:Nn \l__nmc_table_rfont_tl - { \use:c { math#1 } }, - ralign .tl_set:N = \l__nmc_table_rcalign_tl, - rhead .tl_set:N = \l__nmc_table_rhead_tl, - rhnudge .code:n = \tl_set:Nn \l__nmc_table_rhnudge_tl - { \mkern #1 mu }, - rpos .int_set:N = \l__nmc_table_rpos_int, - rvar' .tl_set:N = \l__nmc_table_rvari_tl, - rhead' .tl_set:N = \l__nmc_table_rheadi_tl, - rhnudge' .code:n = \tl_set:Nn \l__nmc_table_rhnudgei_tl - { \mkern #1 mu }, + view .code:n = \__nmc_dbg_int:nn { 1 } { 11 }, % - cvar .tl_set:N = \l__nmc_table_cvar_tl, - cstop .tl_set:N = \l__nmc_table_cstop_tl, - cstep .tl_set:N = \l__nmc_table_cstep_tl, - cols .code:n = \__nmc_table_set_rcnum:nn { #1 } { c }, - cspec .clist_set:N = \l__nmc_table_cspec_clist, - calign .tl_set:N = \l__nmc_table_ccalign_tl, - chstyle .int_set:N = \l__nmc_table_chstyle_int, - chnudge .code:n = \tl_set:Nn \l__nmc_table_chnudge_tl - { \mkern #1 mu }, - chead .tl_set:N = \l__nmc_table_chead_tl, - chround .int_set:N = \l__nmc_table_chround_int, + rvar .tl_set:N = \l__nmc_table_rvar_tl, + rstop .tl_set:N = \l__nmc_table_rstop_tl, + rstep .tl_set:N = \l__nmc_table_rstep_tl, + rows .code:n = \__nmc_table_set_rcnum:nn { #1 } { r }, + rspec .clist_set:N = \l__nmc_table_rspec_clist, + rfunc .tl_set:N = \l__nmc_table_rfunc_tl, + rdata .code:n = \tl_if_single:nTF { #1 } + { \seq_set_from_clist:NN \l__nmc_table_rdata_seq #1 } + { \seq_set_from_clist:No \l__nmc_table_rdata_seq { ~#1 } }, + rfile .code:n = \__nmc_table_rvfile:n { #1 }, + rverb .int_set:N = \l__nmc_table_rverb_int, + rfrac .int_set:N = \l__nmc_table_rfrac_int, + rfrac .initial:n = 0, + rround .int_set:N = \l__nmc_table_rround_int, + rround .initial:n = 1, + rfont .code:n = \tl_set:Nn \l__nmc_table_rfont_tl + { \use:c { math#1 } }, + ralign .tl_set:N = \l__nmc_table_rcalign_tl, + ralign .initial:n = r, + rhead .tl_set:N = \l__nmc_table_rhead_tl, + rhnudge .code:n = \tl_set:Nn \l__nmc_table_rhnudge_tl + { \mkern #1 mu }, + rpos .int_set:N = \l__nmc_table_rpos_int, + rpos .initial:n = 1, + rvar' .tl_set:N = \l__nmc_table_rvari_tl, + rhead' .tl_set:N = \l__nmc_table_rheadi_tl, + rhnudge' .code:n = \tl_set:Nn \l__nmc_table_rhnudgei_tl + { \mkern #1 mu }, % - ctitle .tl_set:N = \l__nmc_table_ctitle_tl, - cmidrow .tl_set:N = \l__nmc_table_cmidrow_tl, - rules .tl_set:N = \l__nmc_table_rules_tl, - foot .tl_set:N = \l__nmc_table_footer_tl, - rbloc .clist_set:N = \l__nmc_table_rbloc_clist, - rblocsep .tl_set:N = \l__nmc_table_blocsep_tl, - signs .int_set:N = \l__nmc_table_signs_int, - (pad) .int_set:N = \l__nmc_table_tsigns_int, - diffs .int_set:N = \l__nmc_table_diffs_int, + cvar .tl_set:N = \l__nmc_table_cvar_tl, + cstop .tl_set:N = \l__nmc_table_cstop_tl, + cstep .tl_set:N = \l__nmc_table_cstep_tl, + cols .code:n = \__nmc_table_set_rcnum:nn { #1 } { c }, + cspec .clist_set:N = \l__nmc_table_cspec_clist, + calign .tl_set:N = \l__nmc_table_ccalign_tl, + calign .initial:n = r, + chstyle .int_set:N = \l__nmc_table_chstyle_int, + chnudge .code:n = \tl_set:Nn \l__nmc_table_chnudge_tl + { \mkern #1 mu }, + chead .tl_set:N = \l__nmc_table_chead_tl, + chround .int_set:N = \l__nmc_table_chround_int, % - Q? .tl_set:N = \l__nmc_table_Q_tl, - A! .tl_set:N = \l__nmc_table_A_tl, - reuse .int_set:N = \l__nmc_table_reuse_int, - valign .code:n = \tl_set:Nn \l__nmc_table_valign_tl { [#1] }, - multifn .code:n = \bool_set_true:N \l__nmc_table_multifn_bool - \tl_if_blank:nTF { #1 } - { \tl_set:Nn \l__nmc_table_fnsep_tl { , } } - { \tl_set:Nn \l__nmc_table_fnsep_tl { #1 } } - } -\file_if_exist:nT { numerica-tables.cfg } - { - \file_get:nnN { numerica-tables.cfg } {} \l_tmpa_tl - \exp_args:NnV \keys_set_known:nn { numerica-tables } \l_tmpa_tl + ctitle .tl_set:N = \l__nmc_table_ctitle_tl, + csubttl .tl_set:N = \l__nmc_table_csubttl_tl, + csubttl .tl_set:N = \l__nmc_table_csubttl_tl, + header .int_set:N = \l__nmc_table_header_int, + header .initial:n = 1, + rules .tl_set:N = \l__nmc_table_rules_tl, + rules .initial:n = ThB, + foot .tl_set:N = \l__nmc_table_footer_tl, + rbloc .clist_set:N = \l__nmc_table_rbloc_clist, + rblocsep .tl_set:N = \l__nmc_table_blocsep_tl, + rblocsep .initial:n = 1ex, + signs .int_set:N = \l__nmc_table_signs_int, + (pad) .int_set:N = \l__nmc_table_tsigns_int, + diffs .int_set:N = \l__nmc_table_diffs_int, + diffs .initial:n = 0, +% + Q? .tl_set:N = \l__nmc_table_Q_tl, + A! .tl_set:N = \l__nmc_table_A_tl, + valign .code:n = \tl_set:Nn \l__nmc_table_valign_tl { [#1] }, + valign .initial:n = m } % end of `numerica-tables.sty'
\ No newline at end of file |