summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/numerica-tables
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2023-08-22 22:46:08 +0000
committerKarl Berry <karl@freefriends.org>2023-08-22 22:46:08 +0000
commitef76cd6eb8886c8a636b76e696c08ad9e4c53ad9 (patch)
treed5d4dbe8a0deb1f3f87533e7253df6f02a7ba328 /Master/texmf-dist/tex/latex/numerica-tables
parentea39527914dd7740302a337d64e3669b99e03ba8 (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.sty771
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