diff options
Diffstat (limited to 'macros/latex/contrib/numerica-tables/numerica-tables.sty')
-rw-r--r-- | macros/latex/contrib/numerica-tables/numerica-tables.sty | 93 |
1 files changed, 80 insertions, 13 deletions
diff --git a/macros/latex/contrib/numerica-tables/numerica-tables.sty b/macros/latex/contrib/numerica-tables/numerica-tables.sty index e39ec24f5b..c1808141e4 100644 --- a/macros/latex/contrib/numerica-tables/numerica-tables.sty +++ b/macros/latex/contrib/numerica-tables/numerica-tables.sty @@ -10,8 +10,8 @@ \RequirePackage{booktabs} \ProvidesExplFile {numerica-tables.sty} - {2023/08/21} - {3.0.0} + {2023/08/25} + {3.1.0} {Create mathematical tables of function values} \msg_new:nnn {numerica-tables} {version} @@ -68,12 +68,48 @@ \cs_generate_variant:Nn \__nmc_sci_num_table_signs:n { x } \cs_new:Npn \__nmc_table_rc:N #1 { \str_if_eq:nVTF { #1 } \c__nmc_r_tl { row } { column } } +\cs_new_protected:Npn \__nmc_table_rvround_pre: + { + \fp_set_eq:NN \l__nmc_table_r_fp \l__nmc_table_rstart_fp + \prop_put:NVx \l__nmc_subst_var_prop \l__nmc_table_rvar_tl + { \fp_use:N \l__nmc_table_r_fp } + \__nmc_table_reset_rounding: + } +\cs_new_protected:Npn \__nmc_table_rvround_post: + { + \fp_add:Nn \l__nmc_table_r_fp { \l__nmc_table_rstep_fp } + \prop_put:NVx \l__nmc_subst_var_prop \l__nmc_table_rvar_tl + { \fp_use:N \l__nmc_table_r_fp } + \__nmc_table_reset_rounding: + } +\cs_new_protected:Npn \__nmc_table_cvround_pre: + { + \fp_set_eq:NN \l__nmc_table_c_fp \l__nmc_table_cstart_fp + \prop_put:NVx \l__nmc_subst_var_prop \l__nmc_table_cvar_tl + { \fp_use:N \l__nmc_table_c_fp } + \__nmc_table_reset_rounding: + } + +\cs_new_protected:Npn \__nmc_table_cvround_post: + { + \fp_add:Nn \l__nmc_table_c_fp { \l__nmc_table_cstep_fp } + \prop_put:NVx \l__nmc_subst_var_prop \l__nmc_table_cvar_tl + { \fp_use:N \l__nmc_table_c_fp } + \__nmc_table_reset_rounding: + } +\cs_new_protected:Npn \__nmc_table_reset_rounding: + { + \tl_clear:N \l__nmca_tl + \__nmc_fpify:VN \l__nmc_round_xpr_tl \l__nmca_tl + \int_set:Nn \l__nmc_round_int { \fp_to_int:n \l__nmca_tl } + } %-------------------------------------- \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 } \bool_new:N \l__nmc_table_multifn_bool +\bool_new:N \l__nmc_table_round_bool \seq_new:N \l__nmc_table_multifn_seq \tl_new:N \l__nmc_table_valign_tl @@ -122,6 +158,7 @@ \tl_new:N \l__nmc_table_rheadi_tl \tl_new:N \l__nmc_table_rhnudge_tl \tl_new:N \l__nmc_table_rhnudgei_tl +\int_new:N \l__nmc_table_chfrac_int \int_new:N \l__nmc_table_chround_int \int_new:N \l__nmc_table_chstyle_int \int_const:Nn \c__nmc_table_chstyle_int { 5 } @@ -239,6 +276,12 @@ } \int_compare:nNnF \l__nmc_dbg_int = { 11 } { \int_zero:N \l__nmc_dbg_int } + % \int_if_zero:nF { \l__nmc_table_rfrac_int + \l__nmc_table_chfrac_int } + \int_if_zero:nF { \l__nmc_table_rfrac_int } + { + \int_compare:nNnT { \l__nmc_table_chstyle_int } > { 2 } + { \int_zero:N \l__nmc_table_chstyle_int } + } } \cs_new_protected:Npn \l__nmc_table_settings_ctitle: { @@ -347,6 +390,8 @@ } { \__nmc_table_get_ini_vals_aux:N c } } + \bool_if:NT \l__nmc_table_round_bool + { \__nmc_fpify:VN \l__nmc_round_xpr_tl \l__nmc_toss_tl } \seq_gpop:NN \g__nmc_error_where_seq \l__nmc_toss_tl } \cs_new_protected:Npn \__nmc_table_get_ini_vals_aux:N #1 @@ -653,7 +698,7 @@ { \bool_if:NF \l__nmc_num_only_bool { - \int_if_zero:nF \l__nmc_table_header_int + \int_if_zero:nT \l__nmc_table_headless_int { \__nmc_table_headercnum: \tl_set:Nx \l__nmc_table_header_tl { \__nmc_table_header: } @@ -669,7 +714,7 @@ { \__nmc_table_upper: \exp_not:o \l__nmc_table_header_tl - \int_if_zero:nF \l__nmc_table_header_int + \int_if_zero:nT \l__nmc_table_headless_int { \\~ \__nmc_if_mod_zero:nnT { \l__nmc_table_rules_int } { 7 } @@ -828,6 +873,8 @@ } \cs_new:Npn \__nmc_table_headern: { + \int_set_eq:NN \l__nmc_table_chfrac_int \l__nmc_frac_out_int + \int_zero:N \l__nmc_frac_out_int \tl_if_empty:NT \l__nmc_table_chead_tl { \seq_clear:N \l_tmpa_seq @@ -847,6 +894,7 @@ } \tl_set:Nx \l__nmc_table_chead_tl { \seq_use:Nn \l_tmpa_seq { & } } } + \int_set_eq:NN \l__nmc_frac_out_int \l__nmc_table_chfrac_int } \cs_new_protected:Npn \__nmc_table_chstyler:NN #1 #2 { @@ -857,12 +905,14 @@ { \bool_if:NTF \l__nmc_table_coli_only_bool { - \__nmc_table_header_auxi:Nx #1 { \l__nmc_table_cvar_tl = #2 } + \__nmc_table_header_auxi:Nx #1 + { \l__nmc_table_cvar_tl = \exp_not:o #2 } \bool_set_false:N \l__nmc_table_coli_only_bool } { \seq_put_right:NV #1 #2 } } - { 2 } { \__nmc_table_header_auxi:Nx #1 { \l__nmc_table_cvar_tl = #2 } } + { 2 } { \__nmc_table_header_auxi:Nx #1 + { \l__nmc_table_cvar_tl = \exp_not:o #2 } } { 3 } { \__nmc_table_header_auxiii:NV #1 #2 } { 4 } { \__nmc_table_header_auxiv:NV #1 #2 } { 5 } { \seq_set_split:NnV #1 { & } \l__nmc_table_chead_tl } @@ -872,7 +922,7 @@ \cs_new_protected:Npn \__nmc_table_header_auxi:Nn #1#2 { \seq_put_right:Nx #1 { \__nmc_table_header_nudge:Nnn c - { \exp_not:n { #2 } } \l__nmc_table_chnudge_tl } + { \exp_not:o { #2 } } \l__nmc_table_chnudge_tl } } \cs_generate_variant:Nn \__nmc_table_header_auxi:Nn { NV,Nx } @@ -897,12 +947,13 @@ \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 - { $ #2 #3 $ } + { $ #2 #3 $ } { \tl_if_eq:cNTF { l__nmc_table_ #1 calign_tl } \c__nmc_l_tl { $ #3 #2 $ } { $ #2 $ } } } +\cs_generate_variant:Nn \__nmc_table_header_nudge:Nnn { NnV } %%%%%%%%%%%%%%%%%%%%%%%%%%%%% \cs_new_protected:Npn \__nmc_table_form_body:N #1 { % #1 <== \l__nmc_result_tl @@ -976,9 +1027,13 @@ } \cs_new_protected:Npn \__nmc_table_form_body_cvcols:N #1 { % #1 \l__nmc_result_tl + \bool_if:NT \l__nmc_table_round_bool + { \__nmc_table_cvround_pre: } \seq_clear:N \l_tmpd_seq \seq_map_variable:NNn \l__nmc_table_body_cols_seq \l_tmpa_seq - { + { + \bool_if:NT \l__nmc_table_round_bool + { \__nmc_table_rvround_pre: } \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 @@ -1042,6 +1097,8 @@ { 2 } { \__nmc_table_form_cols_rii:NN #1#2 } } { \__nmc_table_form_cols_riii:NN #1#2 } + \bool_if:NT \l__nmc_table_round_bool + { \__nmc_table_cvround_post: } } \cs_new_protected:Npn \__nmc_table_form_cols_ri:NN #1#2 { @@ -1083,7 +1140,9 @@ } \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 + \bool_if:NT \l__nmc_table_round_bool + { \__nmc_table_rvround_post: } \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 @@ -1100,6 +1159,8 @@ \fp_set_eq:NN \l_tmpb_fp \l_tmpa_fp \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 + \bool_if:NT \l__nmc_table_round_bool + { \__nmc_table_rvround_post: } } \int_set:Nn \l__nmc_table_a_int { 1 } \__nmc_table_signs: @@ -1206,9 +1267,15 @@ { \seq_set_from_clist:No \l__nmc_table_rdata_seq \l_tmpa_tl } { \__nmc_error_what:n { File~#1~not~found~in } } } +\cs_new_protected:Npn \__nmc_table_rounding:n #1 + { + \bool_set:Nn \l__nmc_table_round_bool { !\tl_if_blank_p:n { #1 } } + \tl_set:Nn \l__nmc_round_xpr_tl { #1 } + } \keys_define:nn { numerica/table } { view .code:n = \__nmc_dbg_int:nn { 1 } { 11 }, + round .code:n = \__nmc_table_rounding:n { #1 }, % rvar .tl_set:N = \l__nmc_table_rvar_tl, rstop .tl_set:N = \l__nmc_table_rstop_tl, @@ -1253,10 +1320,10 @@ chround .int_set:N = \l__nmc_table_chround_int, % ctitle .tl_set:N = \l__nmc_table_ctitle_tl, + cmidrow .tl_set:N = \l__nmc_table_csubttl_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, + headless .int_set:N = \l__nmc_table_headless_int, + headless .initial:n = 0, rules .tl_set:N = \l__nmc_table_rules_tl, rules .initial:n = ThB, foot .tl_set:N = \l__nmc_table_footer_tl, |