diff options
author | Karl Berry <karl@freefriends.org> | 2021-08-17 20:49:32 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2021-08-17 20:49:32 +0000 |
commit | f1eec09cda1fe0f51c7dd3c722cbc8621e6d1295 (patch) | |
tree | daa55c91db57cf444983230f0e509a1274e0095c /Master/texmf-dist/tex | |
parent | a72444daf54a90226829464d6e5fe9ec42d1a3c9 (diff) |
siunitx (17aug21)
git-svn-id: svn://tug.org/texlive/trunk@60258 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex')
-rw-r--r-- | Master/texmf-dist/tex/latex/siunitx/siunitx.sty | 212 |
1 files changed, 176 insertions, 36 deletions
diff --git a/Master/texmf-dist/tex/latex/siunitx/siunitx.sty b/Master/texmf-dist/tex/latex/siunitx/siunitx.sty index 3bef92d6566..3978b3fe629 100644 --- a/Master/texmf-dist/tex/latex/siunitx/siunitx.sty +++ b/Master/texmf-dist/tex/latex/siunitx/siunitx.sty @@ -42,7 +42,7 @@ }% \endinput }% -\ProvidesExplPackage {siunitx} {2021-08-04} {3.0.24} +\ProvidesExplPackage {siunitx} {2021-08-16} {3.0.25} {A comprehensive (SI) units package} \msg_new:nnnn { siunitx } { incompatible-package } { Package~'#1'~incompatible. } @@ -1586,6 +1586,11 @@ { \group_begin: \tl_clear:N \l__siunitx_number_parsed_tl + \tl_map_inline:Nn \l__siunitx_number_input_ignore_tl + { + \token_if_macro:NT ##1 + { \cs_set_eq:NN ##1 \scan_stop: } + } \protected@edef \l__siunitx_number_arg_tl { \bool_if:NTF \l__siunitx_number_expression_bool @@ -1594,9 +1599,8 @@ } \tl_set_eq:NN \l__siunitx_number_input_tl \l__siunitx_number_arg_tl \siunitx_number_normalize_symbols:N \l__siunitx_number_arg_tl - \protected@edef \l__siunitx_number_input_ignore_tl { \l__siunitx_number_input_ignore_tl } - \tl_if_empty:NF \l__siunitx_number_input_ignore_tl - { \tl_remove_all:NV \l__siunitx_number_arg_tl \l__siunitx_number_input_ignore_tl } + \tl_map_inline:Nn \l__siunitx_number_input_ignore_tl + { \tl_remove_all:Nn \l__siunitx_number_arg_tl {##1} } \tl_if_empty:NF \l__siunitx_number_arg_tl { \__siunitx_number_parse_comparator: } \__siunitx_number_parse_check: @@ -2545,13 +2549,20 @@ \cs_new:Npn \__siunitx_number_round_auxiv:nnnN #1#2#3#4 { \quark_if_recursion_tail_stop_do:Nn #4 - { { 0 } { } } + { + \int_compare:nNnTF {#1} = 0 + { + \__siunitx_number_round_auxvi:nnN {#3} {#2} + 0 \q_recursion_tail \q_recursion_stop + } + { { 0 } { } } + } \int_compare:nNnTF {#1} > 0 { \exp_args:Nf \__siunitx_number_round_auxiv:nnnN { \int_eval:n { #1 - 1 } } { #2 0 } { #4#3 } } - { \__siunitx_number_round_auxvi:nnnN {#3} {#2} #4 } + { \__siunitx_number_round_auxvi:nnN {#3} {#2} #4 } } \cs_new:Npn \__siunitx_number_round_auxv:nnN #1#2#3 { @@ -2574,7 +2585,7 @@ { \__siunitx_number_round_auxvii:nnN } {#2} { } #3 } -\cs_new:Npn \__siunitx_number_round_auxvi:nnnN #1#2#3 +\cs_new:Npn \__siunitx_number_round_auxvi:nnN #1#2#3 { \quark_if_recursion_tail_stop_do:Nn #3 { { 0 } { } } @@ -2660,9 +2671,27 @@ #1#2#3 \q_recursion_tail \q_recursion_stop { \__siunitx_number_round_final_output:ff - { \tl_reverse:n {#3} #2 } + { \exp_args:Ne \__siunitx_number_round_final_significant:n { \tl_reverse:n {#3} #2 } } {#1} } +\cs_new:Npn \__siunitx_number_round_final_significant:n #1 + { + \__siunitx_number_round_final_significant:N #1 + \q_recursion_tail \q_recursion_stop + } +\cs_new:Npn \__siunitx_number_round_final_significant:N #1 + { + \quark_if_recursion_tail_stop_do:Nn #1 { 0 } + \int_compare:nNnTF {#1} = 0 + { \__siunitx_number_round_final_significant:N } + { + #1 + \__siunitx_number_round_final_significant:w + } + } +\cs_new:Npn \__siunitx_number_round_final_significant:w + #1 \q_recursion_tail \q_recursion_stop + {#1} \cs_new:Npn \__siunitx_number_round_final_output:nn #1#2 { {#1} {#2} } \cs_generate_variant:Nn \__siunitx_number_round_final_output:nn { ff } \cs_new:Npn \__siunitx_number_round_final:nn #1#2 @@ -2684,7 +2713,6 @@ \int_compare:nNnTF { \tl_count:n {#1} } = 4 { \__siunitx_number_round_engineering:NNNNn #1 {#2} - { } \__siunitx_number_round_final_shift:Nw 3 } { {#1} {#2} } @@ -2709,11 +2737,13 @@ { \__siunitx_number_exponent_shift:nnf { 1 } {#1} { \__siunitx_number_round_truncate_direct:n {#2} } - { } \__siunitx_number_round_final_shift:Nw 1 } -\cs_new:Npn \__siunitx_number_round_final_shift:Nw #1#2 \__siunitx_number_round_places_end:nn #3#4 - { \__siunitx_number_exponent_finalise:n { #3#4 + #1 } } +\cs_new:Npn \__siunitx_number_round_final_shift:Nw #1#2 \__siunitx_number_round_places_end:nnn #3#4#5 + { + \exp_not:n { {#3} } + \__siunitx_number_exponent_finalise:n { #4#5 + #1 } + } \cs_new:Npn \__siunitx_number_round_truncate:n #1 { \str_if_eq:VnTF \l__siunitx_number_round_mode_tl { figures } @@ -2819,12 +2849,12 @@ { \__siunitx_number_round_places_decimal:nn } { \__siunitx_number_round_places_integer:nn } {#3} {#4} - \__siunitx_number_round_places_end:nn {#6} {#7} + \__siunitx_number_round_places_end:nnn { } {#6} {#7} } } { \exp_not:n { {#1} {#2} {#3} {#4} {#5} {#6} {#7} } } } -\cs_new:Npn \__siunitx_number_round_places_end:nn #1#2 { { } \exp_not:n { {#1} {#2} } } +\cs_new:Npn \__siunitx_number_round_places_end:nnn #1#2#3 { \exp_not:n { {#1} {#2} {#3} } } \cs_new:Npn \__siunitx_number_round_places_decimal:nn #1#2 { \int_compare:nNnTF @@ -2890,18 +2920,20 @@ \bool_lazy_or:nnTF { \tl_if_blank_p:n {#5} } { ! \int_compare_p:nNn \l__siunitx_number_round_precision_int > 0 } - { \exp_not:n { {#1} #2 {#3} {#4} { } #6 {#7} } } + { \exp_not:n { {#1} {#2} {#3} {#4} { } {#6} {#7} } } { \str_if_eq:eeTF { \tl_head:n {#5} } { S } { \exp_not:n { {#1} {#2} } \exp_args:Nnno \__siunitx_number_round_uncertainty:nnn {#3} {#4} { \use_ii:nn #5 } - \exp_not:n { {#6} {#7} } + \__siunitx_number_round_uncertainty_end:nn {#6} {#7} } { \exp_not:n { {#1} {#2} {#3} {#4} {#5} {#6} {#7} } } } } +\cs_new:Npn \__siunitx_number_round_uncertainty_end:nn #1#2 + { \exp_not:n { {#1} {#2} } } \cs_new:Npn \__siunitx_number_round_uncertainty:nnn #1#2#3 { \exp_last_unbraced:Nf \__siunitx_number_round_uncertainty:nnnnn @@ -2941,11 +2973,79 @@ { { S } { #4 #1 } } } { - \__siunitx_number_round:fnn - { \int_eval:n { #2 + 1 } } - {#5} {#6} - { { S } { #3 \__siunitx_number_round_truncate_direct:n {#4} #1 } } + \exp_args:Ne \__siunitx_number_round_uncertainty_shift:nn + { + \__siunitx_number_round:fnn + { \int_eval:n { #2 + 1 } } + {#5} {#6} + } + { { S } { #3 #1 } } + } + } +\cs_new:Npn \__siunitx_number_round_uncertainty_shift:nn #1#2 + { \__siunitx_number_round_uncertainty_shift:nnnw #1 {#2} } +\cs_new:Npn \__siunitx_number_round_uncertainty_shift:nnnw + #1#2#3 #4 \__siunitx_number_round_uncertainty_end:nn #5#6 + { + #4 + \bool_lazy_and:nnTF + { + \int_compare_p:nNn + { \tl_count:o { \use_ii:nn #3 } } = \l__siunitx_number_round_precision_int + } + { + ! \str_if_eq_p:nn { {#1} {#2} {#3} } { { 10 } { } { { S } { 1 } } } + } + { + \use:c + { __siunitx_number_round_ \l__siunitx_number_exponent_mode_tl :nn } + {#1} {#2} + \__siunitx_number_round_places_end:nnn {#3} {#5} {#6} + } + { + \use:c + { __siunitx_number_round_uncertainty_ \l__siunitx_number_exponent_mode_tl :nnn } + {#1} {#5} {#6} + } + } +\cs_new:Npn \__siunitx_number_round_uncertainty_engineering:nnn #1#2#3 + { + \use:c + { + __siunitx_number_round_uncertainty_ + \l__siunitx_number_exponent_mode_tl _ + \tl_count:n {#1} + :n } + {#2#3} + } +\cs_new:cpn { __siunitx_number_round_uncertainty_engineering_2:n } #1 + { + { 10 } { } { { S } { 10 } } + \__siunitx_number_exponent_finalise:n {#1} + } +\cs_new:cpn { __siunitx_number_round_uncertainty_engineering_3:n } #1 + { + { 100 } { } { { S } { 100 } } + \__siunitx_number_exponent_finalise:n {#1} + } +\cs_new:cpn { __siunitx_number_round_uncertainty_engineering_4:n } #1 + { + { 1 } { } { { S } { 1 } } + \__siunitx_number_exponent_finalise:n { #1 + 3 } + } +\cs_new:Npn \__siunitx_number_round_uncertainty_fixed:nnn #1#2#3 + { + {#1} { } + { { S } { 1 \prg_replicate:nn { \tl_count:n {#1} - 1 } { 0 } } } + {#2} {#3} + } +\cs_new_eq:NN \__siunitx_number_round_uncertainty_input:nnn + \__siunitx_number_round_uncertainty_fixed:nnn +\cs_new:Npn \__siunitx_number_round_uncertainty_scientific:nnn #1#2#3 + { + { 1 } { } { { S } { 1 } } + \__siunitx_number_exponent_finalise:n { #2#3 + \tl_count:n {#1} - 1 } } \cs_new_protected:Npn \__siunitx_number_zero_decimal:NN #1#2 { @@ -3662,7 +3762,11 @@ \cs_new_protected:Npn \__siunitx_print_math_auxiv:n #1 { \bool_if:NTF \l__siunitx_print_math_font_bool - { \__siunitx_print_math_aux:N \mathsf \mathtt \q_recursion_tail \q_recursion_stop } + { + \__siunitx_print_math_aux:N + \mathbf \mathit \mathsf \mathtt + \q_recursion_tail \q_recursion_stop + } { \__siunitx_print_math_auxv:n } {#1} } @@ -4215,26 +4319,53 @@ - \box_wd:N \l__siunitx_table_tmp_box } { - \hbox_set_to_wd:Nnn \l__siunitx_table_decimal_box + \bool_if:NTF \l__siunitx_table_align_after_bool { - \box_wd:N \l__siunitx_table_integer_box - + \box_wd:N \l__siunitx_table_tmp_box - } - { - \hbox_unpack:N \l__siunitx_table_decimal_box - \__siunitx_table_fil: - } + \__siunitx_table_center_marker_aux:Nnnn \l__siunitx_table_decimal_box + { + \box_wd:N \l__siunitx_table_integer_box + + \box_wd:N \l__siunitx_table_tmp_box + } + } + { + \__siunitx_table_center_marker_aux:Nnnn \l__siunitx_table_after_box + { + \box_wd:N \l__siunitx_table_after_box + + \box_wd:N \l__siunitx_table_integer_box + - \box_wd:N \l__siunitx_table_decimal_box + + \box_wd:N \l__siunitx_table_tmp_box + } + } + { } { \__siunitx_table_fil: } } { - \hbox_set_to_wd:Nnn \l__siunitx_table_integer_box + \bool_if:NTF \l__siunitx_table_align_before_bool { - \box_wd:N \l__siunitx_table_decimal_box - - \box_wd:N \l__siunitx_table_tmp_box + \__siunitx_table_center_marker_aux:Nnnn \l__siunitx_table_integer_box + { + \box_wd:N \l__siunitx_table_decimal_box + - \box_wd:N \l__siunitx_table_tmp_box + } } { - \__siunitx_table_fil: - \hbox_unpack:N \l__siunitx_table_integer_box + \__siunitx_table_center_marker_aux:Nnnn \l__siunitx_table_before_box + { + \box_wd:N \l__siunitx_table_before_box + + \box_wd:N \l__siunitx_table_decimal_box + - \box_wd:N \l__siunitx_table_integer_box + - \box_wd:N \l__siunitx_table_tmp_box + } } + { \__siunitx_table_fil: } { } + } + } +\cs_new_protected:Npn \__siunitx_table_center_marker_aux:Nnnn #1#2#3#4 + { + \hbox_set_to_wd:Nnn #1 {#2} + { + #3 + \hbox_unpack:N #1 + #4 } } \keys_define:nn { siunitx } @@ -4368,6 +4499,8 @@ { \c_math_toggle_token \hbox_set_end: + \bool_set_true:N \l__siunitx_table_align_before_bool + \bool_set_true:N \l__siunitx_table_align_after_bool \__siunitx_table_center_marker: \use:c { __siunitx_table_align_ \l__siunitx_table_align_text_tl :n } { @@ -4471,7 +4604,6 @@ \__siunitx_table_fil: } } - \box_use_drop:N \l__siunitx_table_before_box \siunitx_number_parse:nN {#2} \l__siunitx_table_tmp_tl \siunitx_number_process:NN \l__siunitx_table_tmp_tl \l__siunitx_table_tmp_tl \tl_set:Nx \l__siunitx_table_tmp_tl @@ -4479,7 +4611,6 @@ \__siunitx_table_color_check:N \l__siunitx_table_tmp_tl \exp_after:wN \__siunitx_table_print_marker:w \l__siunitx_table_tmp_tl \q_stop - \box_use_drop:N \l__siunitx_table_after_box } \cs_new_protected:Npn \__siunitx_table_print_marker:w #1 \q_nil #2 \q_nil #3 \q_nil #4 \q_stop @@ -4494,8 +4625,10 @@ \__siunitx_table_center_marker: \use:c { __siunitx_table_align_ \l__siunitx_table_align_text_tl :n } { + \box_use_drop:N \l__siunitx_table_before_box \box_use_drop:N \l__siunitx_table_integer_box \box_use_drop:N \l__siunitx_table_decimal_box + \box_use_drop:N \l__siunitx_table_after_box } } \cs_new:Npn \__siunitx_table_print_marker_aux:w @@ -5911,6 +6044,13 @@ sticky-per = false , unit-font-command = \mathrm } +\AtBeginDocument + { + \str_if_eq:eeTF + { \exp_not:o { \familydefault } } + { \exp_not:n { \sfdefault } } + { \keys_set:nn { siunitx } { unit-font-command = \mathsf } } + } \tl_new:N \l__siunitx_quantity_tmp_fp \tl_new:N \l__siunitx_quantity_tmp_tl \tl_new:N \l__siunitx_quantity_bracket_close_tl |