diff options
author | Karl Berry <karl@freefriends.org> | 2011-07-29 14:12:43 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2011-07-29 14:12:43 +0000 |
commit | 599299b8f3cffe1e3759d3f42e2c1425520eabce (patch) | |
tree | 181286547aca16ecca9300060e2859fd1175ca19 /Master/texmf-dist/tex/latex/siunitx/siunitx.sty | |
parent | 554b089e59c2631f8a6cbd760beabc02ea227ef7 (diff) |
siunitx 2.3a (9jul11)
git-svn-id: svn://tug.org/texlive/trunk@23269 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/siunitx/siunitx.sty')
-rw-r--r-- | Master/texmf-dist/tex/latex/siunitx/siunitx.sty | 2486 |
1 files changed, 1321 insertions, 1165 deletions
diff --git a/Master/texmf-dist/tex/latex/siunitx/siunitx.sty b/Master/texmf-dist/tex/latex/siunitx/siunitx.sty index 4e6470e1b2b..0b4147213bf 100644 --- a/Master/texmf-dist/tex/latex/siunitx/siunitx.sty +++ b/Master/texmf-dist/tex/latex/siunitx/siunitx.sty @@ -14,11 +14,11 @@ %% --------------------------------------------------------------- %% \RequirePackage{expl3} -\ProvidesExplPackage {siunitx} {2011/06/15} {2.2i} +\ProvidesExplPackage {siunitx} {2011/07/09} {2.3a} {A comprehensive (SI) units package} -\cs_if_exist:NTF \msg_set:nnnn +\cs_if_exist:NTF \msg_new:nnnn { - \msg_set:nnnn { siunitx } { support-outdated } + \msg_new:nnnn { siunitx } { support-outdated } { Support~package~#1~too~old. } { Please~install~an~up~to~date~version~of~#1. \\ @@ -33,13 +33,13 @@ } \tex_endinput:D } -\@ifpackagelater { expl3 } { 2010/11/13 } +\@ifpackagelater { l3clist } { 2011/07/09 } { } { \msg_error:nnx { siunitx } { support-outdated } { expl3 } \tex_endinput:D } -\msg_set:nnnn { siunitx } { incompatible-package } +\msg_new:nnnn { siunitx } { incompatible-package } { Package~'#1'~incompatible. } { The~#1~package~and~siunitx~are~incompatible. } \cs_new_protected_nopar:Npn \siunitx_load_check:n #1 { @@ -57,7 +57,7 @@ \siunitx_load_check:n } \RequirePackage{ xparse } -\@ifpackagelater { xparse } { 2010/10/13 } +\@ifpackagelater { xparse } { 2011/05/30 } { } { \msg_error:nnx { siunitx } { support-outdated } { xparse } @@ -67,6 +67,7 @@ \cs_new:Npn \siunitx_tmp:w { } \bool_new:N \l_siunitx_tmp_bool \box_new:N \l_siunitx_tmp_box +\dim_new:N \l_siunitx_tmp_dim \int_new:N \l_siunitx_tmp_int \tl_new:N \l_siunitx_tmpa_tl \tl_new:N \l_siunitx_tmpb_tl @@ -287,7 +288,7 @@ \tl_if_blank:nF {#1} { = \exp_not:n {#1} } } } - \keys_set:nn { siunitx } { load-configurations = version-1 } + \keys_set:nn { siunitx } { version-1-compatibility } \tl_use:N \l_siunitx_key_tl } { @@ -327,13 +328,11 @@ \siunitx_option_deactivate_aux:n } \clist_new:N \l_siunitx_option_deactivate_clist -\cs_generate_variant:Nn \prop_del:Nn { c } -\cs_generate_variant:Nn \prop_put:Nnn { cnV } \cs_generate_variant:Nn \tl_if_in:NnTF { NV } -\cs_generate_variant:Nn \tl_replace_all_in:Nnn { NnV } +\cs_generate_variant:Nn \tl_replace_all:Nnn { NnV } \group_begin: \tl_map_inline:nn { \M \A \C \R \O } - { \char_make_other:n { `#1 } } + { \char_set_catcode_other:n { `#1 } } \tl_map_inline:nn { \F \N \T } { \char_set_lccode:nn { `#1 } { `#1 } } \tl_to_lowercase:n { @@ -369,9 +368,13 @@ } { } } +\cs_new_eq:NN \siunitx_textsuperscript:n \textsuperscript \bool_new:N \l_siunitx_display_math_bool -\toks_put_right:Nn \tex_everydisplay:D - { \bool_set_true:N \l_siunitx_display_math_bool } +\tex_everydisplay:D \exp_after:wN + { + \tex_the:D \tex_everydisplay:D + \bool_set_true:N \l_siunitx_display_math_bool + } \cs_new_protected_nopar:Npn \siunitx_set_math_fam:n #1 { \int_new:c { c_siunitx_math #1 _int } \group_begin: @@ -768,9 +771,9 @@ } \group_begin: \char_set_lccode:nn { `\@ } { `\_ } - \char_make_math_subscript:N \@ + \char_set_catcode_math_subscript:N \@ \char_set_lccode:nn { `\! } { `\_ } - \char_make_active:N \! + \char_set_catcode_active:N \! \tl_to_lowercase:n { \group_end: \cs_set_protected_nopar:Npn \siunitx_print_math: @@ -791,18 +794,18 @@ { \cs_set_eq:NN \PrintSubscript \siunitx_print_text_sub:n \cs_set_eq:NN \PrintSuperscript \siunitx_print_text_super:n - \tl_replace_all_in:Nnn \l_siunitx_print_arg_tl { @ } + \tl_replace_all:Nnn \l_siunitx_print_arg_tl { @ } { \siunitx_print_text_sub:n } - \tl_replace_all_in:Nnn \l_siunitx_print_arg_tl { ! } + \tl_replace_all:Nnn \l_siunitx_print_arg_tl { ! } { \siunitx_print_text_sub:n } - \tl_replace_all_in:Nnn \l_siunitx_print_arg_tl { ^ } + \tl_replace_all:Nnn \l_siunitx_print_arg_tl { ^ } { \siunitx_print_text_super:n } \l_siunitx_print_arg_tl } } \group_begin: \char_set_lccode:nn { `\@ } { `\_ } - \char_make_math_subscript:N \@ + \char_set_catcode_math_subscript:N \@ \tl_to_lowercase:n { \group_end: \cs_set_protected:Npn \siunitx_print_text_sub:n #1 @@ -815,15 +818,21 @@ ^ { \text {##1} } } } - \peek_meaning_remove:NTF \siunitx_print_text_super:n - { \siunitx_print_text_sub_super:n } - { \ensuremath { @ { \text {#1} } } } + \cs_set_eq:NN \l_peek_search_token \siunitx_print_text_super:n + \cs_set_nopar:Npn \peek_true:w + { + \tex_afterassignment:D \peek_true_aux:w + \cs_set_eq:NN \peek_tmp:w + } + \cs_set_nopar:Npn \peek_true_aux:w { \siunitx_print_text_sub_super:n } + \cs_set_nopar:Npn \peek_false:w { \ensuremath { @ { \text {#1} } } } + \peek_after:Nw \peek_execute_branches_meaning: } } \cs_new_protected:Npn \siunitx_print_text_sub_super:n { } \cs_new_protected:Npn \siunitx_print_text_super:n #1 { \tl_set:Nn \l_siunitx_tmpa_tl {#1} - \tl_replace_all_in:Nnn \l_siunitx_tmpa_tl { - } + \tl_replace_all:Nnn \l_siunitx_tmpa_tl { - } { \c_siunitx_minus_tl } \tl_set:Nx \l_siunitx_tmpa_tl { @@ -974,9 +983,9 @@ \tl_set_rescan:Nnx \l_siunitx_number_arg_tl { \siunitx_number_in_protect: - \char_make_ignore:N \~ - \char_make_other:N \, - \char_make_other:N \. + \char_set_catcode_ignore:N \~ + \char_set_catcode_other:N \, + \char_set_catcode_other:N \. \cs_set_eq:NN \, \prg_do_nothing: } {#1} @@ -1041,12 +1050,12 @@ \cs_set_eq:NN #1 \scan_stop: } \cs_new_protected_nopar:Npn \siunitx_number_in_sign_replace:N #1 { - \tl_replace_all_in:Nnn #1 { -+ } { \mp } - \tl_replace_all_in:Nnn #1 { +- } { \pm } - \tl_replace_all_in:Nnn #1 { << } { \ll } - \tl_replace_all_in:Nnn #1 { <= } { \le } - \tl_replace_all_in:Nnn #1 { >> } { \gg } - \tl_replace_all_in:Nnn #1 { >= } { \ge } + \tl_replace_all:Nnn #1 { -+ } { \mp } + \tl_replace_all:Nnn #1 { +- } { \pm } + \tl_replace_all:Nnn #1 { << } { \ll } + \tl_replace_all:Nnn #1 { <= } { \le } + \tl_replace_all:Nnn #1 { >> } { \gg } + \tl_replace_all:Nnn #1 { >= } { \ge } } \cs_new_protected:Npn \siunitx_number_in_parse_error:nn #1#2 { \siunitx_error:nx {#1} { \exp_not:n {#2} } @@ -2571,14 +2580,9 @@ } \tl_if_empty:NF \l_siunitx_process_sign_tl { - \prop_if_in:NnTF \l_siunitx_number_in_prop { mantissa } - { \siunitx_number_process_sign_add:n { mantissa } } - { - \prop_if_in:NnT \l_siunitx_number_in_prop { complex } - { \siunitx_number_process_sign_add:n { complex } } - } - \prop_if_in:NnT \l_siunitx_number_in_prop { exponent } - { \siunitx_number_process_sign_add:n { exponent } } + \siunitx_number_process_sign_add:n { mantissa } + \prop_if_in:NnTF \l_siunitx_number_in_prop { complex } + { \siunitx_number_process_sign_add:n { complex } } } } \cs_new_protected_nopar:Npn \siunitx_number_process_sign_add:n #1 { @@ -2711,6 +2715,8 @@ \tl_new:N \l_siunitx_group_sep_tl \tl_new:N \l_siunitx_output_decimal_tl \bool_new:N \l_siunitx_complex_after_bool +\bool_new:N \l_siunitx_group_decimal_bool +\bool_new:N \l_siunitx_group_integer_bool \keys_define:nn { siunitx } { bracket-negative-numbers .bool_set:N = \l_siunitx_negative_bracket_bool , @@ -2730,30 +2736,50 @@ exponent-base .tl_set:N = \l_siunitx_exponent_base_tl, exponent-product .tl_set:N = \l_siunitx_exponent_product_tl, - group-decimal-digits .bool_set:N = - \l_siunitx_group_decimal_bool, - group-digits .meta:n = - { - group-decimal-digits = #1, - group-integer-digits = #1 - }, + group-decimal-digits .meta:n = { group-digits = decimal }, + group-digits .choice: , + group-digits / + decimal .code:n = + { + \bool_set_true:N \l_siunitx_group_decimal_bool + \bool_set_false:N \l_siunitx_group_integer_bool + }, + group-digits / + false .code:n = + { + \bool_set_false:N \l_siunitx_group_decimal_bool + \bool_set_false:N \l_siunitx_group_integer_bool + }, + group-digits / + integer .code:n = + { + \bool_set_false:N \l_siunitx_group_decimal_bool + \bool_set_true:N \l_siunitx_group_integer_bool + }, + group-digits / + true .code:n = + { + \bool_set_true:N \l_siunitx_group_decimal_bool + \bool_set_true:N \l_siunitx_group_integer_bool + }, group-digits .default:n = true , - group-four-digits .bool_set:N = \l_siunitx_group_four_bool, - group-integer-digits .bool_set:N = - \l_siunitx_group_integer_bool, + group-four-digits .choice:, + group-four-digits / + false .meta:n = { group-minimum-digits = 5 }, + group-four-digits / + true .meta:n = { group-minimum-digits = 4 }, + group-four-digits .default:n = true, + group-integer-digits .meta:n = { group-digits = integer }, + group-minimum-digits .int_set:N = \l_siunitx_group_min_int, group-separator .code:n = - { - \tl_set:Nn \l_siunitx_group_sep_tl { {#1} } - }, + { \tl_set:Nn \l_siunitx_group_sep_tl { {#1} } }, negative-color .tl_set:N = \l_siunitx_negative_color_tl, open-bracket .tl_set:N = \l_siunitx_bracket_open_tl, output-close-uncertainty .tl_set:N = \l_siunitx_output_uncert_close_tl, output-complex-root .tl_set:N = \l_siunitx_output_complex_tl , output-decimal-marker .code:n = - { - \tl_set:Nn \l_siunitx_output_decimal_tl { {#1} } - }, + { \tl_set:Nn \l_siunitx_output_decimal_tl { {#1} } }, output-exponent-marker .tl_set:N = \l_siunitx_output_exponent_tl, output-open-uncertainty .tl_set:N = \l_siunitx_output_uncert_open_tl, @@ -2768,8 +2794,8 @@ copy-decimal-marker = false, exponent-base = 10, exponent-product = \times, - group-decimal-digits = true, - group-integer-digits = true, + group-digits = true, + group-minimum-digits = 5, group-separator = \,, open-bracket = (, % ) ( output-close-uncertainty = ), @@ -3042,34 +3068,22 @@ \prop_if_in:NnT \l_siunitx_number_in_prop { #1 - #2 } { \bool_if:cTF { l_siunitx_group_ #2 _bool } - { \siunitx_number_format_group_four:nn {#1} {#2} } + { \siunitx_number_format_group:nn {#1} {#2} } { \siunitx_number_format_copy:n { #1 - #2 } } } } -\cs_new_protected_nopar:Npn \siunitx_number_format_group_four:nn #1#2 { - \prop_get:NnN \l_siunitx_number_in_prop { #1 - #2 } - \l_siunitx_tmpa_tl - \bool_if:NTF \l_siunitx_group_four_bool - { \siunitx_number_format_group_four_aux:nn {#1} {#2} } - { - \exp_after:wN \siunitx_number_format_group_four_aux:NNNNNNw - \l_siunitx_tmpa_tl \q_no_value \q_no_value \q_no_value - \q_no_value \q_no_value \q_stop - { \siunitx_number_format_copy:n {#1 - #2} } - { \siunitx_number_format_group_four_aux:nn {#1} {#2} } - } -} -\cs_new_protected:Npn \siunitx_number_format_group_four_aux:NNNNNNw - #1#2#3#4#5#6 \q_stop { - \quark_if_no_value:NTF #5 -} -\cs_new_protected_nopar:Npn \siunitx_number_format_group_four_aux:nn - #1#2 { - \tl_clear:N \l_siunitx_tmpb_tl - \use:c { siunitx_number_format_group_ #2 : } - \prop_put:NnV \l_siunitx_number_out_prop { #1 - #2 } - \l_siunitx_tmpb_tl -} +\cs_new_protected_nopar:Npn \siunitx_number_format_group:nn #1#2 + { + \prop_get:NnN \l_siunitx_number_in_prop { #1 - #2 } \l_siunitx_tmpa_tl + \int_compare:nNnTF + { \tl_length:N \l_siunitx_tmpa_tl } < \l_siunitx_group_min_int + { \siunitx_number_format_copy:n { #1 - #2 } } + { + \tl_clear:N \l_siunitx_tmpb_tl + \use:c { siunitx_number_format_group_ #2 : } + \prop_put:NnV \l_siunitx_number_out_prop { #1 - #2 } \l_siunitx_tmpb_tl + } + } \cs_new_protected_nopar:Npn \siunitx_number_format_group_decimal: { \tl_if_empty:NF \l_siunitx_tmpa_tl { @@ -3176,7 +3190,7 @@ { \siunitx_number_format_copy:nn {#1} { #1 -result } } { \bool_if:NT \l_siunitx_uncert_sep_bool - { \siunitx_number_format_join_uncert_pm: } + { \siunitx_number_format_join_uncert_pm:N \l_siunitx_tmpb_tl } \tl_put_right:NV \l_siunitx_tmpa_tl \l_siunitx_tmpb_tl \prop_put:NnV \l_siunitx_number_out_prop { #1 -result } \l_siunitx_tmpa_tl @@ -3185,17 +3199,12 @@ } } } -\cs_new_protected_nopar:Npn \siunitx_number_format_join_uncert_pm: { - \bool_if:NTF \l_siunitx_tight_bool - { - \tl_put_left:Nn \l_siunitx_tmpb_tl - { \siunitx_ensuremath:n { { \pm } } } - } - { - \tl_put_left:Nn \l_siunitx_tmpb_tl - { \siunitx_ensuremath:n { { } \pm { } } } - } -} +\cs_new_protected_nopar:Npn \siunitx_number_format_join_uncert_pm:N #1 + { + \bool_if:NTF \l_siunitx_tight_bool + { \tl_put_left:Nn #1 { \siunitx_ensuremath:n { { \pm } } } } + { \tl_put_left:Nn #1 { \siunitx_ensuremath:n { { } \pm { } } } } + } \cs_new_protected_nopar:Npn \siunitx_number_format_reassemble: { \prop_if_in:NnT \l_siunitx_number_in_prop { mantissa } { @@ -3990,14 +3999,14 @@ \cs_new_protected:Npn \siunitx_declare_power_after:Nn #1#2 { \tl_put_right:Nn \l_siunitx_declare_list_tl {#1} \cs_set:cpn { siunitx_ \token_to_str:N #1 _literal:w } - { \textsuperscript {#2} } + { \siunitx_textsuperscript {#2} } \cs_set:cpn { siunitx_ \token_to_str:N #1 _function:w } { \siunitx_unit_parse_power_after:n {#2} } } \cs_new_protected:Npn \siunitx_declare_power_before:Nn #1#2 { \tl_put_right:Nn \l_siunitx_declare_list_tl {#1} \cs_set:cpn { siunitx_ \token_to_str:N #1 _literal:w } ##1 - { ##1 \textsuperscript {#2} } + { ##1 \siunitx_textsuperscript {#2} } \cs_set:cpn { siunitx_ \token_to_str:N #1 _function:w } { \siunitx_unit_parse_power_before:n {#2} } } @@ -4028,15 +4037,9 @@ {#2} } \tl_if_empty:nTF {#3} + { \cs_undefine:c { l_siunitx_ \token_to_str:N #1 _options_tl } } { - \cs_if_free:cF { l_siunitx_ \token_to_str:N #1 _options_tl } - { - \cs_gundefine:c { l_siunitx_ \token_to_str:N #1 _options_tl } - } - } - { - \cs_if_free:cT { l_siunitx_ \token_to_str:N #1 _options_tl } - { \tl_new:c { l_siunitx_ \token_to_str:N #1 _options_tl } } + \tl_clear_new:c { l_siunitx_ \token_to_str:N #1 _options_tl } \tl_set:cn { l_siunitx_ \token_to_str:N #1 _options_tl } {#3} } } @@ -4050,14 +4053,14 @@ } \cs_new:cpn { siunitx_ \token_to_str:N \raiseto _literal:w } #1#2 { #2 - \textsuperscript {#1} + \siunitx_textsuperscript {#1} } \cs_new_protected:cpn { siunitx_ \token_to_str:N \raiseto _function:w } #1 { \siunitx_unit_parse_power_before:n {#1} } \cs_new:cpn { siunitx_ \token_to_str:N \tothe _literal:w } #1 { - \textsuperscript {#1} + \siunitx_textsuperscript {#1} } \cs_new_protected:cpn { siunitx_ \token_to_str:N \tothe _function:w } #1 { @@ -4114,7 +4117,7 @@ } \cs_new_protected_nopar:Npn \siunitx_unit_create_functions: { \bool_if:NT \l_siunitx_create_overwrite_bool - { \tl_map_function:NN \l_siunitx_declare_list_tl \cs_gundefine:N } + { \tl_map_function:NN \l_siunitx_declare_list_tl \cs_undefine:N } \bool_if:NTF \l_siunitx_create_optional_bool { \tl_map_function:NN \l_siunitx_declare_list_tl @@ -4406,6 +4409,8 @@ = \l_siunitx_unit_denominator_bracket_bool, inter-unit-product .tl_set:N = \l_siunitx_unit_product_tl , inter-unit-separator .tl_set:N = \l_siunitx_unit_product_tl , + literal-superscript-as-power + .bool_set:N = \l_siunitx_literal_power_bool, per-mode .choice:, per-mode / fraction .code:n = { @@ -4469,12 +4474,13 @@ { \tl_set:Nn \l_siunitx_qualifier_mode_tl { text } }, } \keys_set:nn { siunitx } { - bracket-unit-denominator = true, - inter-unit-product = \,, - per-mode = reciprocal, - per-symbol = /, - power-font = number, - qualifier-mode = subscript + bracket-unit-denominator = true, + inter-unit-product = \,, + literal-superscript-as-power = true, + per-mode = reciprocal, + per-symbol = /, + power-font = number, + qualifier-mode = subscript } \cs_new_protected_nopar:Npn \siunitx_unit_format: { \siunitx_unit_format_init: @@ -4652,27 +4658,33 @@ \tl_map_function:NN \l_siunitx_declare_list_tl \siunitx_unit_print_literal_aux:N } -\char_make_active:N \~ -\cs_new_protected:Npn \siunitx_unit_format_literal:n #1 { - \int_zero:N \l_siunitx_unit_prefix_int - \tl_map_function:NN \l_siunitx_declare_list_tl - \siunitx_unit_print_literal_aux:N - \tl_set:Nn \l_siunitx_unit_tl {#1} - \tl_set:Nx \l_siunitx_tmpa_tl - { - \exp_not:N \siunitx_ensuremath:n - { \exp_not:V \l_siunitx_unit_product_tl } - } - \tl_replace_all_in:NnV \l_siunitx_unit_tl { . } - \l_siunitx_tmpa_tl - \tl_replace_all_in:NnV \l_siunitx_unit_tl { ~ } - \l_siunitx_tmpa_tl - \siunitx_unit_format_literal_extras: -} -\cs_new_protected:Npn \siunitx_unit_print_literal_aux:N #1 { - \cs_set_eq:Nc #1 { siunitx_ \token_to_str:N #1 _literal:w } -} -\char_make_space:N \~ +\char_set_catcode_active:N \~ +\cs_new_protected:Npn \siunitx_unit_format_literal:n #1 + { + \int_zero:N \l_siunitx_unit_prefix_int + \tl_map_function:NN \l_siunitx_declare_list_tl + \siunitx_unit_print_literal_aux:N + \tl_set:Nn \l_siunitx_unit_tl {#1} + \tl_set:Nx \l_siunitx_tmpa_tl + { + \exp_not:N \siunitx_ensuremath:n + { \exp_not:o \l_siunitx_unit_product_tl } + } + \tl_replace_all:NnV \l_siunitx_unit_tl { . } \l_siunitx_tmpa_tl + \tl_replace_all:NnV \l_siunitx_unit_tl { ~ } \l_siunitx_tmpa_tl + \bool_if:NT \l_siunitx_literal_power_bool + { + \tl_replace_all:Nnn \l_siunitx_unit_tl { ^ } + { \siunitx_unit_format_literal_power:n } + } + \siunitx_unit_format_literal_extras: + } +\char_set_catcode_space:N \~ +\cs_new_protected:Npn \siunitx_unit_print_literal_aux:N #1 + { \cs_set_eq:Nc #1 { siunitx_ \token_to_str:N #1 _literal:w } } +\cs_new_protected:Npn \siunitx_unit_format_literal_power:n #1 + { \PrintSuperscript { \siunitx_unit_format_power_aux:n {#1} } } + %\end{macro} \cs_new_protected_nopar:Npn \siunitx_unit_format_literal_extras: { \siunitx_unit_format_literal_extras_aux:nN { 176 } \SIUnitSymbolDegree @@ -4686,7 +4698,7 @@ \char_set_lccode:nn { `\@ } {#1} \tl_to_lowercase:n { - \tl_replace_all_in:NnV \l_siunitx_unit_tl { @ } + \tl_replace_all:NnV \l_siunitx_unit_tl { @ } \l_siunitx_unit_tl } } @@ -4755,7 +4767,7 @@ { \siunitx_print:nn {#1} {#2} } { \tl_set:Nn \l_siunitx_tmpa_tl {#2} - \tl_replace_all_in:Nnn \l_siunitx_tmpa_tl { - } + \tl_replace_all:Nnn \l_siunitx_tmpa_tl { - } { \text { \c_siunitx_minus_tl } } \siunitx_print:nV {#1} \l_siunitx_tmpa_tl } @@ -4891,7 +4903,7 @@ \siunitx_tl_put_right_math:NV \l_siunitx_unit_current_tl \l_siunitx_bracket_close_tl } -\char_make_active:N \~ +\char_set_catcode_active:N \~ \cs_new_protected_nopar:Npn \siunitx_unit_format_qualifier_space: { \tl_put_right:Nn \l_siunitx_unit_current_tl { \text { ~ } } \tl_put_right:NV \l_siunitx_unit_current_tl \l_siunitx_tmpa_tl @@ -4899,7 +4911,7 @@ { bracket- \int_use:N \l_siunitx_unit_int } \prop_put:NVn \l_siunitx_unit_prop \l_siunitx_tmpa_tl { true } } -\char_make_space:N \~ +\char_set_catcode_space:N \~ \cs_new_protected_nopar:Npn \siunitx_unit_format_qualifier_subscript: { \tl_put_right:Nx \l_siunitx_unit_current_tl { \exp_not:N \PrintSubscript { \exp_not:V \l_siunitx_tmpa_tl } } @@ -5108,8 +5120,11 @@ \IfNoValueTF {#3} { \tl_clear:N \l_siunitx_pre_unit_tl } { - \siunitx_unit_in:nn {#3} {#1} - \cs_set_eq:NN \l_siunitx_pre_unit_tl \l_siunitx_unit_tl + \group_begin: + \siunitx_unit_in:nn {#3} {#1} + \cs_set_eq:NN \l_siunitx_pre_unit_tl \l_siunitx_unit_tl + \exp_args:NNNo \group_end: + \tl_set:Nn \l_siunitx_pre_unit_tl { \l_siunitx_unit_tl } } \cs_set_eq:NN \l_siunitx_brackets_bool \l_siunitx_multi_brackets_bool @@ -5216,6 +5231,7 @@ { \siunitx_combined_output:n {#1} } } \cs_new_protected:Npn \siunitx_list_units:nnn #1#2#3 { + \siunitx_unit_parse_options:nn {#2} {#3} \bool_if:NTF \l_siunitx_list_repeat_bool { \siunitx_unit_in:nn {#2} {#3} @@ -5233,7 +5249,6 @@ \siunitx_print:nn { number } { \siunitx_ensuremath:n { \l_siunitx_bracket_close_tl } } } - \siunitx_unit_parse_options:nn {#2} {#3} \siunitx_unit_output_number_sep: \siunitx_unit_output:nn {#2} {#3} } @@ -5268,7 +5283,7 @@ } \cs_new_protected:Npn \siunitx_range_numbers:nn #1#2 { \siunitx_range_numbers_aux:n {#1} - \tl_use:N \l_siunitx_range_phrase_tl + \l_siunitx_range_phrase_tl \siunitx_range_numbers_aux:n {#2} } \cs_new_protected:Npn \siunitx_range_numbers_aux:n #1 { @@ -5288,11 +5303,12 @@ } } \cs_new_protected:Npn \siunitx_range_unit:nnnn #1#2#3#4 { + \siunitx_unit_parse_options:nn {#1} {#2} \bool_if:NTF \l_siunitx_range_repeat_bool { \siunitx_unit_in:nn {#1} {#2} \siunitx_range_numbers_aux:n {#3} - \text { \l_siunitx_range_phrase_tl } + \l_siunitx_range_phrase_tl \siunitx_range_numbers_aux:n {#4} } { @@ -5307,7 +5323,6 @@ \siunitx_print:nn { number } { \siunitx_ensuremath:n { \l_siunitx_bracket_close_tl } } } - \siunitx_unit_parse_options:nn {#1} {#2} \siunitx_unit_output_number_sep: \siunitx_unit_output:nn {#1} {#2} } @@ -5318,9 +5333,9 @@ \newcolumntype { C } [1] { > { \bcolumn #1 \@nil } #1 < { \ecolumn } } \cs_set:Npn \siunitx_tmp:w #1 \NC@do S #2 \q_stop - { \toks_set:Nn \NC@list { #1 #2 } } + { \NC@list { #1 #2 } } \exp_after:wN \siunitx_tmp:w \tex_the:D \NC@list \q_stop - \cs_gundefine:N \NC@find@S + \cs_undefine:N \NC@find@S } { } } @@ -5329,11 +5344,12 @@ \cs_set_protected_nopar:Npn \siunitx_table_rewrite_create_aux:w \NC@do ##1##2 \NC@do #1 { \NC@list { \NC@do ##1 \NC@do #1 ##2 } } - \exp_after:wN \siunitx_table_rewrite_create_aux:w \toks_use:N \NC@list + \exp_after:wN \siunitx_table_rewrite_create_aux:w \tex_the:D \NC@list \exp_args:NNc \renewcommand * { NC@rewrite@ #1 } [1] [ ] { - \toks_put_right:Nn \@temptokena + \@temptokena \exp_after:wN { + \tex_the:D \@temptokena > { \siunitx_table_collect_begin:Nn #1 {##1} } c < { \siunitx_table_print: } @@ -5370,7 +5386,7 @@ \siunitx_detect_font: \bool_if:NTF \l_siunitx_number_parse_bool { \siunitx_table_collect_get: } - { \siunitx_table_direct: } + { \siunitx_table_print_S_direct: } } \cs_new_protected:Npn \siunitx_table_collect_braced:n #1 { } \cs_new_protected:Npn \siunitx_table_collect_expand:N #1 { @@ -5429,13 +5445,13 @@ \siunitx_table_collect_get: \cs_set_nopar:Npn \peek_execute_branches: { - \tex_ifcat:D \exp_not:N \l_peek_token \c_group_begin_token + \if_catcode:w \exp_not:N \l_peek_token \c_group_begin_token \exp_after:wN \siunitx_table_collect_braced:n - \tex_else:D + \else: \exp_after:wN \siunitx_table_collect_not_braced:N - \tex_fi:D + \fi: } - \peek_after:NN \peek_ignore_spaces_execute_branches: + \peek_after:Nw \peek_ignore_spaces_execute_branches: } \cs_new_protected_nopar:Npn \siunitx_table_collect_init: { \tl_clear:N \l_siunitx_table_collect_tl @@ -5447,7 +5463,7 @@ \cs_new_protected_nopar:Npn \siunitx_table_collect_init_s: { \siunitx_table_collect_init: \bool_set_false:N \l_siunitx_table_collect_pre_bool - \cs_set:Npn \siunitx_table_collect_braced:n ##1 + \cs_set_protected:Npn \siunitx_table_collect_braced:n ##1 { \tl_put_right:Nn \l_siunitx_table_collect_tl { {##1} } \siunitx_table_collect_next: @@ -5469,7 +5485,7 @@ \exp_not:V \l_siunitx_input_symbol_tl } \bool_set_true:N \l_siunitx_table_collect_pre_bool - \cs_set:Npn \siunitx_table_collect_braced:n ##1 + \cs_set_protected:Npn \siunitx_table_collect_braced:n ##1 { \bool_if:NTF \l_siunitx_table_collect_pre_bool { \tl_put_right:Nn \l_siunitx_table_collect_pre_tl { {##1} } } @@ -5545,943 +5561,1061 @@ } \skip_new:N \c_siunitx_one_fill_skip \skip_set:Nn \c_siunitx_one_fill_skip { \c_zero_skip plus 1 fill } -\AtBeginDocument { - \@ifpackageloaded { colortbl } - { - \cs_new_protected_nopar:Npn \siunitx_table_colortbl_correction: - { - \skip_horizontal:n { \c_zero_skip plus -0.5 fill } - \tex_kern:D \c_zero_skip - } - } - { - \cs_new_protected_nopar:Npn \siunitx_table_colortbl_correction: - { } - } -} -\cs_new_protected_nopar:Npn \siunitx_table_align_left:n #1 { - \siunitx_table_colortbl_correction: - \skip_horizontal:n {#1} - \tex_kern:D \c_zero_skip -} -\cs_new_protected_nopar:Npn \siunitx_table_align_right:n #1 { - \skip_horizontal:n { \c_siunitx_one_fill_skip - #1 } - \tex_kern:D \c_zero_skip - \siunitx_table_colortbl_correction: -} +\AtBeginDocument + { + \@ifpackageloaded { colortbl } + { + \cs_new_protected_nopar:Npn \siunitx_table_colortbl_correction: + { + \skip_horizontal:n { \c_zero_skip plus -0.5 fill } + \tex_kern:D \c_zero_skip + } + } + { \cs_new_protected_nopar:Npn \siunitx_table_colortbl_correction: { } } + } +\cs_new_protected_nopar:Npn \siunitx_table_align_left:n #1 + { + \siunitx_table_colortbl_correction: + \skip_horizontal:n {#1} + \tex_kern:D \c_zero_skip + } +\cs_new_protected_nopar:Npn \siunitx_table_align_right:n #1 + { + \skip_horizontal:n { \c_siunitx_one_fill_skip - #1 } + \tex_kern:D \c_zero_skip + \siunitx_table_colortbl_correction: + } \cs_new_eq:NN \siunitx_table_column_begin:n \siunitx_table_align_left:n \cs_new_eq:NN \siunitx_table_column_end:n \siunitx_table_align_right:n -\keys_define:nn { siunitx } { - table-column-width .code:n = - { - \dim_compare:nNnTF {#1} = { \c_zero_dim } - { - \cs_set_eq:NN \siunitx_table_column_begin:n - \siunitx_table_align_left:n - \cs_set_eq:NN \siunitx_table_column_end:n - \siunitx_table_align_right:n - } - { - \cs_set_protected_nopar:Npn \siunitx_table_column_begin:n ##1 - { - \siunitx_table_colortbl_correction: - \tex_hbox:D to \dim_eval:n {#1} - \c_group_begin_token - \skip_horizontal:n {##1} - \tex_kern:D \c_zero_skip - } - \cs_set_protected_nopar:Npn \siunitx_table_column_end:n ##1 - { - \skip_horizontal:n { \c_siunitx_one_fill_skip - ##1 } - \tex_kern:D \c_zero_skip - \hbox_set_inline_end: - \siunitx_table_colortbl_correction: - } - } - } -} +\keys_define:nn { siunitx } + { + table-column-width .code:n = + { + \dim_compare:nNnTF {#1} = { \c_zero_dim } + { + \cs_set_eq:NN \siunitx_table_column_begin:n + \siunitx_table_align_left:n + \cs_set_eq:NN \siunitx_table_column_end:n + \siunitx_table_align_right:n + } + { + \cs_set_protected_nopar:Npn \siunitx_table_column_begin:n ##1 + { + \siunitx_table_colortbl_correction: + \tex_hbox:D to \dim_eval:n {#1} + \c_group_begin_token + \skip_horizontal:n {##1} + \tex_kern:D \c_zero_skip + } + \cs_set_protected_nopar:Npn \siunitx_table_column_end:n ##1 + { + \skip_horizontal:n { \c_siunitx_one_fill_skip - ##1 } + \tex_kern:D \c_zero_skip + \hbox_set_inline_end: + \siunitx_table_colortbl_correction: + } + } + } + } \skip_new:N \l_siunitx_table_unit_align_skip -\keys_define:nn { siunitx } { - table-unit-alignment .choice:, - table-unit-alignment / center .code:n = - { - \skip_set:Nn \l_siunitx_table_unit_align_skip - { \c_zero_skip plus 0.5 fill } - }, - table-unit-alignment / left .code:n = - { - \skip_set:Nn \l_siunitx_table_unit_align_skip - { \c_zero_skip } - }, - table-unit-alignment / right .code:n = - { - \skip_set:Nn \l_siunitx_table_unit_align_skip - { \c_zero_skip plus 1 fill } - }, -} -\keys_set:nn { siunitx } { - table-unit-alignment = center -} -\cs_new_protected_nopar:Npn \siunitx_table_print_s: { - \siunitx_table_column_begin:n { \l_siunitx_table_unit_align_skip } - \siunitx_unit_output:Vn \l_siunitx_table_collect_tl { } - \siunitx_table_column_end:n { \l_siunitx_table_unit_align_skip } -} -\bool_new:N \l_siunitx_table_center_decimal_bool -\box_new:N \l_siunitx_table_fill_box -\dim_new:N \l_siunitx_table_fill_dim -\box_new:N \l_siunitx_table_pre_box -\box_new:N \l_siunitx_table_post_box -\box_new:N \l_siunitx_table_result_box -\dim_new:N \l_siunitx_table_comparator_dim -\dim_new:N \l_siunitx_table_decimal_dim +\keys_define:nn { siunitx } + { + table-unit-alignment .choice:, + table-unit-alignment / + center .code:n = + { + \skip_set:Nn \l_siunitx_table_unit_align_skip + { \c_zero_skip plus 0.5 fill } + }, + table-unit-alignment / + left .code:n = + { \skip_set:Nn \l_siunitx_table_unit_align_skip { \c_zero_skip } }, + table-unit-alignment / + right .code:n = + { + \skip_set:Nn \l_siunitx_table_unit_align_skip + { \c_zero_skip plus 1 fill } + } + } +\keys_set:nn { siunitx } { table-unit-alignment = center } +\cs_new_protected_nopar:Npn \siunitx_table_print_s: + { + \siunitx_table_column_begin:n { \l_siunitx_table_unit_align_skip } + \siunitx_unit_output:Vn \l_siunitx_table_collect_tl { } + \siunitx_table_column_end:n { \l_siunitx_table_unit_align_skip } + } +\prop_new:N \l_siunitx_table_model_prop \dim_new:N \l_siunitx_table_exponent_dim \dim_new:N \l_siunitx_table_integer_dim \dim_new:N \l_siunitx_table_mantissa_dim \dim_new:N \l_siunitx_table_marker_dim \dim_new:N \l_siunitx_table_result_dim \dim_new:N \l_siunitx_table_uncert_dim -\dim_new:N \l_siunitx_table_gap_dim -\prop_new:N \l_siunitx_table_model_prop -\dim_new:N \l_siunitx_table_space_dim +\dim_new:N \l_siunitx_table_fill_pre_dim +\dim_new:N \l_siunitx_table_fill_post_dim +\dim_new:N \l_siunitx_table_fill_mid_dim +\box_new:N \l_siunitx_table_pre_box +\box_new:N \l_siunitx_table_post_box +\box_new:N \l_siunitx_table_mantissa_box +\box_new:N \l_siunitx_table_result_box \skip_new:N \l_siunitx_table_number_align_skip \skip_new:N \l_siunitx_table_text_align_skip -\keys_define:nn { siunitx } { - table-align-comparator .bool_set:N - = \l_siunitx_table_align_comparator_bool, - table-align-exponent .bool_set:N - = \l_siunitx_table_align_exp_bool, - table-align-text-post .bool_set:N - = \l_siunitx_table_align_post_bool, - table-align-uncertainty .bool_set:N - = \l_siunitx_table_align_uncert_bool, - table-number-alignment .choice:, - table-number-alignment / - center .code:n = +\cs_new_protected_nopar:Npn \siunitx_table_print_S_direct_main: { } +\cs_new_protected_nopar:Npn \siunitx_table_print_S_main: { } +\cs_new_protected_nopar:Npn \siunitx_table_print_S_parsed: { } +\cs_new_protected_nopar:Npn \siunitx_table_print_S_pre: { } +\cs_new_protected_nopar:Npn \siunitx_table_print_S_post: { } +\cs_new_protected_nopar:Npn \siunitx_table_print_S_reserved_exponent_aux: { } +\cs_new_protected_nopar:Npn + \siunitx_table_print_S_reserved_mantissa_uncert_aux: { } +\cs_new_protected_nopar:Npn \siunitx_table_print_S_reserved_round: { } +\cs_new_protected_nopar:Npn \siunitx_table_print_S_reserved_store_fill:n #1 { } +\keys_define:nn { siunitx } + { + table-align-comparator .choice:, + table-align-comparator / + false .code:n = + { + \cs_set_eq:NN \siunitx_table_print_S_reserved_store_fill:n + \siunitx_table_print_S_reserved_store_fill_pre:n + }, + table-align-comparator / + true .code:n = + { + \cs_set_eq:NN \siunitx_table_print_S_reserved_store_fill:n + \siunitx_table_print_S_reserved_store_fill_mid:n + }, + table-align-comparator .default:n = true, + table-align-exponent .choice:, + table-align-exponent / + false .code:n = + { + \cs_set_eq:NN \siunitx_table_print_S_reserved_exponent_aux: + \siunitx_table_print_S_reserved_exponent_not_aligned: + }, + table-align-exponent / + true .code:n = + { + \cs_set_eq:NN \siunitx_table_print_S_reserved_exponent_aux: + \siunitx_table_print_S_reserved_exponent_aligned: + }, + table-align-exponent .default:n = true, + table-align-text-pre .choice:, + table-align-text-pre / + false .code:n = + { + \cs_set_eq:NN \siunitx_table_print_S_pre: + \siunitx_table_print_S_pre_not_aligned: + }, + table-align-text-pre / + true .code:n = + { + \cs_set_eq:NN \siunitx_table_print_S_pre: + \siunitx_table_print_S_pre_aligned: + }, + table-align-text-pre .default:n = true , + table-align-text-post .choice:, + table-align-text-post / + false .code:n = + { + \cs_set_eq:NN \siunitx_table_print_S_post: + \siunitx_table_print_S_post_not_aligned: + }, + table-align-text-post / + true .code:n = + { + \cs_set_eq:NN \siunitx_table_print_S_post: + \siunitx_table_print_S_post_aligned: + }, + table-align-text-post .default:n = true , + table-align-uncertainty .choice:, + table-align-uncertainty / + false .code:n = + { + \cs_set_eq:NN \siunitx_table_print_S_reserved_mantissa_uncert_aux: + \siunitx_table_print_S_reserved_mantissa_uncert_not_aligned: + }, + table-align-uncertainty / + true .code:n = + { + \cs_set_eq:NN \siunitx_table_print_S_reserved_mantissa_uncert_aux: + \siunitx_table_print_S_reserved_mantissa_uncert_aligned: + }, + table-align-uncertainty .default:n = true, + table-auto-round .choice:, + table-auto-round / + false .code:n = + { \cs_set_eq:NN \prg_do_nothing: }, + table-auto-round / + true .code:n = + { + \cs_set_eq:NN \siunitx_table_print_S_reserved_round: + \siunitx_table_print_S_reserved_round_auto: + }, + table-auto-round .default:n = true, + table-number-alignment .choice:, + table-number-alignment / + center .code:n = + { + \skip_set:Nn \l_siunitx_table_number_align_skip + { \c_zero_skip plus 0.5 fill } + \cs_set_eq:NN \siunitx_table_print_S_direct_main: + \siunitx_table_print_S_direct_reserved: + \cs_set_eq:NN \siunitx_table_print_S_parsed: + \siunitx_table_print_S_reserved: + }, + table-number-alignment / + center-decimal-marker .code:n = + { + \skip_set:Nn \l_siunitx_table_number_align_skip + { \c_zero_skip plus 0.5 fill } + \cs_set_eq:NN \siunitx_table_print_S_direct_main: + \siunitx_table_print_S_direct_centered: + \cs_set_eq:NN \siunitx_table_print_S_parsed: + \siunitx_table_print_S_centered: + }, + table-number-alignment / + left .code:n = + { + \skip_zero:N \l_siunitx_table_number_align_skip + \cs_set_eq:NN \siunitx_table_print_S_direct_main: + \siunitx_table_print_S_direct_reserved: + \cs_set_eq:NN \siunitx_table_print_S_parsed: + \siunitx_table_print_S_reserved: + }, + table-number-alignment / + right .code:n = + { + \skip_set:Nn \l_siunitx_table_number_align_skip + { \c_zero_skip plus 1 fill } + \cs_set_eq:NN \siunitx_table_print_S_direct_main: + \siunitx_table_print_S_direct_reserved: + \cs_set_eq:NN \siunitx_table_print_S_parsed: + \siunitx_table_print_S_reserved: + }, + table-omit-exponent .choice:, + table-omit-exponent / + false .code:n = + { + \cs_set_eq:NN \siunitx_table_print_S_parse_aux: + \siunitx_number_process: + }, + table-omit-exponent / + true .code:n = + { + \cs_set_eq:NN \siunitx_table_print_S_parse_aux: + \siunitx_table_print_S_parse_omit_exp: + }, + table-omit-exponent .default:n = true, + table-text-alignment .choice:, + table-text-alignment / + center .code:n = + { + \skip_set:Nn \l_siunitx_table_text_align_skip + { \c_zero_skip plus 0.5 fill } + }, + table-text-alignment / + left .code:n = + { \skip_zero:N \l_siunitx_table_text_align_skip }, + table-text-alignment / + right .code:n = + { + \skip_set:Nn \l_siunitx_table_text_align_skip + { \c_zero_skip plus 1 fill } + }, + table-comparator .choice:, + table-comparator / + false .code:n = + { \prop_del:Nn \l_siunitx_table_model_prop { comparator } }, + table-comparator / + true .code:n = + { \prop_put:Nnn \l_siunitx_table_model_prop { comparator } { \ll } }, + table-comparator .default:n = true, + table-figures-decimal .code:n = { - \skip_set:Nn \l_siunitx_table_number_align_skip - { \c_zero_skip plus 0.5 fill } - \bool_set_false:N \l_siunitx_table_center_decimal_bool + \int_compare:nNnTF {#1} = \c_zero + { + \prop_del:Nn \l_siunitx_table_model_prop { mantissa-decimal } + \prop_del:Nn \l_siunitx_table_model_prop { mantissa-decimal-raw } + \prop_del:Nn \l_siunitx_table_model_prop + { mantissa-decimal-marker } + \prop_if_in:NnTF \l_siunitx_table_model_prop { mantissa-integer } + { + \prop_put:Nnn \l_siunitx_table_model_prop { mantissa } + { true } + } + { \prop_del:Nn \l_siunitx_table_model_prop { mantissa } } + } + { + \prop_put:Nnx \l_siunitx_table_model_prop { mantissa-decimal } + { \prg_replicate:nn {#1} { 8 } } + \prop_put:Nnn \l_siunitx_table_model_prop { mantissa-decimal-raw } + {#1} + \prop_put:Nnn \l_siunitx_table_model_prop { mantissa } { true } + \prop_put:NnV \l_siunitx_table_model_prop + { mantissa-decimal-marker } \l_siunitx_output_decimal_tl + } }, - table-number-alignment / - center-decimal-marker .code:n = + table-figures-exponent .code:n = { - \skip_set:Nn \l_siunitx_table_number_align_skip - { \c_zero_skip plus 0.5 fill } - \bool_set_true:N \l_siunitx_table_center_decimal_bool + \int_compare:nNnTF {#1} = \c_zero + { \prop_del:Nn \l_siunitx_table_model_prop { exponent-integer } } + { + \prop_put:Nnx \l_siunitx_table_model_prop { exponent-integer } + { \prg_replicate:nn {#1} { 8 } } + \prop_put:Nnn \l_siunitx_table_model_prop { exponent } { true } + } }, - table-number-alignment / - left .code:n = + table-figures-integer .code:n = { - \skip_set:Nn \l_siunitx_table_number_align_skip - { \c_zero_skip } - \bool_set_false:N \l_siunitx_table_center_decimal_bool + \int_compare:nNnTF {#1} = \c_zero + { + \prop_del:Nn \l_siunitx_table_model_prop { mantissa-integer } + \prop_if_in:NnTF \l_siunitx_table_model_prop { mantissa-decimal } + { + \prop_put:Nnn \l_siunitx_table_model_prop { mantissa } + { true } + } + { \prop_del:Nn \l_siunitx_table_model_prop { mantissa } } + } + { + \prop_put:Nnx \l_siunitx_table_model_prop { mantissa-integer } + { \prg_replicate:nn {#1} { 8 } } + \prop_put:Nnn \l_siunitx_table_model_prop { mantissa } { true } + } }, - table-number-alignment / - right .code:n = + table-figures-uncertainty .code:n = { - \skip_set:Nn \l_siunitx_table_number_align_skip - { \c_zero_skip plus 1 fill } - \bool_set_false:N \l_siunitx_table_center_decimal_bool + \int_compare:nNnTF {#1} = \c_zero + { \prop_del:Nn \l_siunitx_table_model_prop { mantissa-uncertainty } } + { + \prop_put:Nnx \l_siunitx_table_model_prop { mantissa-uncertainty } + { \prg_replicate:nn {#1} { 8 } } + } }, - table-omit-exponent .bool_set:N = \l_siunitx_table_omit_exp_bool , - table-text-alignment .choice:, - table-text-alignment / - center .code:n = - { - \skip_set:Nn \l_siunitx_table_text_align_skip - { \c_zero_skip plus 0.5 fill } - }, - table-text-alignment / - left .code:n = - { - \skip_set:Nn \l_siunitx_table_text_align_skip - { \c_zero_skip } - }, - table-text-alignment / - right .code:n = - { - \skip_set:Nn \l_siunitx_table_text_align_skip - { \c_zero_skip plus 1 fill } - }, - table-auto-round .bool_set:N = \l_siunitx_table_auto_bool, - table-comparator .bool_set:N = - \l_siunitx_table_comparator_bool, - table-figures-decimal .int_set:N = \l_siunitx_table_decimal_int, - table-figures-exponent .int_set:N = - \l_siunitx_table_exponent_int, - table-figures-integer .int_set:N = \l_siunitx_table_integer_int, - table-figures-uncertainty .int_set:N = \l_siunitx_table_uncert_int , - table-parse-only .bool_set:N = - \l_siunitx_table_parse_only_bool, - table-space-text-pre .tl_set:N = - \l_siunitx_table_pre_tl, - table-space-text-post .tl_set:N = - \l_siunitx_table_post_tl, - table-sign-exponent .bool_set:N = - \l_siunitx_table_sign_exponent_bool, - table-sign-mantissa .bool_set:N = - \l_siunitx_table_sign_mantissa_bool -} -\keys_set:nn { siunitx } { - table-align-comparator = true, - table-align-exponent = true, - table-align-text-post = true, - table-align-uncertainty = true, - table-number-alignment = center-decimal-marker, - table-text-alignment = center, - table-figures-decimal = 2, - table-figures-integer = 3 -} -\keys_define:nn { siunitx } { - table-alignment .meta:n = - { - table-number-alignment = #1, - table-text-alignment = #1, - table-unit-alignment = #1 - } -} -\cs_new_protected_nopar:Npn \siunitx_table_format_convert:nn #1#2 { - \prop_get:NnN \l_siunitx_number_in_prop {#1} \l_siunitx_tmpa_tl - \quark_if_no_value:NTF \l_siunitx_tmpa_tl - { \int_set:cn { l_siunitx_table_ #2 _int } { 0 } } - { - \prop_get:NnN \l_siunitx_number_in_prop {#1} \l_siunitx_tmpa_tl - \int_set:cn { l_siunitx_table_ #2 _int } { \l_siunitx_tmpa_tl } - } -} -\keys_define:nn { siunitx } { - table-format .code:n = - { - \siunitx_number_in_parse:n {#1} - \siunitx_table_format_convert:nn { mantissa-integer } { integer } - \siunitx_table_format_convert:nn { mantissa-decimal } { decimal } - \siunitx_table_format_convert:nn { mantissa-uncertainty } - { uncert } - \siunitx_table_format_convert:nn { exponent-integer } - { exponent } - \prop_if_in:NnTF \l_siunitx_number_in_prop { comparator } - { \bool_set_true:N \l_siunitx_table_comparator_bool } - { \bool_set_false:N \l_siunitx_table_comparator_bool } - \prop_if_in:NnTF \l_siunitx_number_in_prop { mantissa-sign } - { \bool_set_true:N \l_siunitx_table_sign_mantissa_bool } - { \bool_set_false:N \l_siunitx_table_sign_mantissa_bool } - \prop_if_in:NnTF \l_siunitx_number_in_prop { exponent-sign } - { \bool_set_true:N \l_siunitx_table_sign_exponent_bool } - { \bool_set_false:N \l_siunitx_table_sign_exponent_bool } - \keys_set:nn { siunitx } { table-number-alignment = center } - }, -} -\cs_new_protected_nopar:Npn \siunitx_table_print_S: { - \bool_if:NTF \l_siunitx_table_collect_pre_bool - { - \siunitx_table_column_begin:n - { \l_siunitx_table_text_align_skip } - \tl_use:N \l_siunitx_table_collect_pre_tl - \siunitx_table_column_end:n - { \l_siunitx_table_text_align_skip } - } - { - \siunitx_table_column_begin:n - { \l_siunitx_table_number_align_skip } - \siunitx_table_print_S_aux: - \siunitx_table_column_end:n - { \l_siunitx_table_number_align_skip } - } -} -\cs_new_protected_nopar:Npn \siunitx_table_print_S_aux: { - \bool_if:NTF \l_siunitx_table_parse_only_bool - { - \tl_use:N \l_siunitx_table_collect_pre_tl - \siunitx_number_output:V \l_siunitx_table_collect_tl - \tl_use:N \l_siunitx_table_collect_post_tl - } - { - \bool_if:NTF \l_siunitx_table_center_decimal_bool - { \siunitx_table_print_S_centered: } - { \siunitx_table_print_S_reserved: } - } + table-parse-only .choice: , + table-parse-only / + false .code:n = + { + \cs_set_eq:NN \siunitx_table_print_S_main: + \siunitx_table_print_S_alignment: + }, + table-parse-only / + true .code:n = + { + \cs_set_eq:NN \siunitx_table_print_S_main: + \siunitx_table_print_S_no_alignment: + }, + table-parse-only .default:n = true, + table-space-text-pre .tl_set:N = \l_siunitx_table_pre_tl, + table-space-text-post .tl_set:N = \l_siunitx_table_post_tl, + table-sign-exponent .code:n = + { \prop_put:Nnn \l_siunitx_table_model_prop { exponent-sign } { - } }, + table-sign-mantissa .code:n = + { \prop_put:Nnn \l_siunitx_table_model_prop { mantissa-sign } { - } }, + } +\keys_define:nn { siunitx } + { + table-alignment .meta:n = + { + table-number-alignment = #1, + table-text-alignment = #1, + table-unit-alignment = #1 + } + } +\keys_define:nn { siunitx } + { + table-format .code:n = + { + \siunitx_number_in_parse:n {#1} + \prop_set_eq:NN \l_siunitx_table_model_prop \l_siunitx_number_in_prop + \tl_clear:N \l_siunitx_tmpa_tl + \prop_get:NnNT \l_siunitx_number_in_prop { mantissa-integer } + \l_siunitx_tmpb_tl + { + \tl_set:Nx \l_siunitx_tmpa_tl + { table-figures-integer = \l_siunitx_tmpb_tl } + } + \prop_get:NnNT \l_siunitx_number_in_prop { mantissa-decimal } + \l_siunitx_tmpb_tl + { + \clist_put_right:Nx \l_siunitx_tmpa_tl + { table-figures-decimal = \l_siunitx_tmpb_tl } + } + \prop_get:NnNT \l_siunitx_number_in_prop { mantissa-uncertainty } + \l_siunitx_tmpb_tl + { + \clist_put_right:Nx \l_siunitx_tmpa_tl + { table-figures-uncertainty = \l_siunitx_tmpb_tl } + } + \prop_get:NnNT \l_siunitx_number_in_prop { exponent-integer } + \l_siunitx_tmpb_tl + { + \clist_put_right:Nx \l_siunitx_tmpa_tl + { table-figures-exponent = \l_siunitx_tmpb_tl } + } + \clist_put_right:Nn \l_siunitx_tmpa_tl + { table-number-alignment = center } + \keys_set:nV { siunitx } \l_siunitx_tmpa_tl + } + } +\cs_new_protected_nopar:Npn \siunitx_table_print_S: + { + \bool_if:NTF \l_siunitx_table_collect_pre_bool + { + \siunitx_table_column_begin:n { \l_siunitx_table_text_align_skip } + \l_siunitx_table_collect_pre_tl + \siunitx_table_column_end:n { \l_siunitx_table_text_align_skip } + } + { + \siunitx_table_column_begin:n { \l_siunitx_table_number_align_skip } + \siunitx_detect_font: + \siunitx_table_print_S_main: + \siunitx_table_print_S_pre: + \box_use:N \l_siunitx_table_result_box + \siunitx_table_print_S_post: + \siunitx_table_column_end:n { \l_siunitx_table_number_align_skip } + } + } +\cs_new_protected_nopar:Npn \siunitx_table_print_S_no_alignment: + { + \l_siunitx_table_collect_pre_tl + \siunitx_number_output:V \l_siunitx_table_collect_tl + \l_siunitx_table_collect_post_tl + } +\cs_new_protected_nopar:Npn \siunitx_table_print_S_alignment: + { \siunitx_table_print_S_parsed: } +\cs_new_protected_nopar:Npn \siunitx_table_print_S_parse: + { + \bool_set_false:N \l_siunitx_error_bool + \siunitx_number_in_parse:V \l_siunitx_table_collect_tl + \bool_if:NF \l_siunitx_error_bool + { + \siunitx_table_print_S_parse_aux: + \siunitx_number_format: + \siunitx_number_output_color: + } + } +\cs_new_protected_nopar:Npn \siunitx_table_print_S_parse_omit_exp: + { + \bool_set_true:N \l_siunitx_process_fixed_bool + \siunitx_number_process: + \prop_del:Nn \l_siunitx_number_in_prop { exponent } + \prop_del:Nn \l_siunitx_number_in_prop { exponent-integer } } -\cs_new_protected_nopar:Npn \siunitx_table_print_S_parse: { - \bool_set_false:N \l_siunitx_error_bool - \siunitx_number_in_parse:V \l_siunitx_table_collect_tl - \bool_if:NF \l_siunitx_error_bool - { - \bool_if:NT \l_siunitx_table_omit_exp_bool - { \bool_set_true:N \l_siunitx_process_fixed_bool } - \siunitx_number_process: - \bool_if:NT \l_siunitx_table_omit_exp_bool +\cs_new_protected_nopar:Npn \siunitx_table_print_S_measure:NN #1#2 + { + \tl_if_empty:NTF #1 + { \dim_zero:N #2 } + { + \group_begin: + \hbox_set:Nn \l_siunitx_tmp_box + { \siunitx_print:nV { number } #1 } + \exp_args:NNNo \group_end: + \dim_set:Nn #2 { \tex_the:D \box_wd:N \l_siunitx_tmp_box } + } + } +\cs_new_protected_nopar:Npn \siunitx_table_print_S_pre_aligned: + { + \box_use:N \l_siunitx_table_pre_box + \hbox_to_wd:nn { \l_siunitx_table_fill_pre_dim } { \tex_hfil:D } + } +\cs_new_protected_nopar:Npn \siunitx_table_print_S_pre_not_aligned: + { + \hbox_to_wd:nn { \l_siunitx_table_fill_pre_dim } { \tex_hfil:D } + \box_use:N \l_siunitx_table_pre_box + } +\cs_new_protected_nopar:Npn \siunitx_table_print_S_post_aligned: + { + \hbox_to_wd:nn { \l_siunitx_table_fill_post_dim } { \tex_hfil:D } + \box_use:N \l_siunitx_table_post_box + } +\cs_new_protected_nopar:Npn \siunitx_table_print_S_post_not_aligned: + { + \box_use:N \l_siunitx_table_post_box + \hbox_to_wd:nn { \l_siunitx_table_fill_post_dim } { \tex_hfil:D } + } +\cs_new_protected_nopar:Npn \siunitx_table_print_S_centered: + { + \siunitx_table_print_S_centered_ends: + \bool_if:NT \l_siunitx_table_math_bool { \c_math_shift_token } + \siunitx_table_print_S_parse: + \siunitx_table_print_S_centered_measure: + \bool_if:NT \l_siunitx_table_math_bool { \c_math_shift_token } + \dim_set:Nn \l_siunitx_table_fill_pre_dim + { + \l_siunitx_table_result_dim + - \l_siunitx_table_integer_dim + \prop_if_in:NnT \l_siunitx_number_out_prop { mantissa-decimal-marker } + { - \l_siunitx_table_marker_dim } + } + \dim_compare:nNnTF \l_siunitx_table_integer_dim > + \l_siunitx_table_fill_pre_dim + { \siunitx_table_print_S_centered_integer: } + { \siunitx_table_print_S_centered_decimal: } + } +\cs_new_protected_nopar:Npn \siunitx_table_print_S_centered_ends: + { + \hbox_set:Nn \l_siunitx_table_pre_box + { { - \prop_del:Nn \l_siunitx_number_in_prop { exponent } - \prop_del:Nn \l_siunitx_number_in_prop { exponent-integer } + \l_siunitx_table_collect_pre_tl + \bool_if:NT \l_siunitx_table_math_bool + { + \scan_stop: + \c_math_shift_token + } } - \siunitx_number_format: - \siunitx_number_output_color: - } -} -\cs_new_protected_nopar:Npn \siunitx_table_print_S_centered: { - \siunitx_table_print_S_centered_ends: - \dim_compare:nNnTF - { \box_wd:N \l_siunitx_table_pre_box } = { \c_zero_skip } - { \tl_use:N \l_siunitx_table_collect_pre_tl } - { \box_use:N \l_siunitx_table_pre_box } - \bool_if:NT \l_siunitx_table_math_bool { \c_math_shift_token } - \siunitx_table_print_S_parse: - \siunitx_table_print_S_measure_comparator_integer:N - \l_siunitx_number_out_prop - \siunitx_table_print_S_measure:Nnn \l_siunitx_number_out_prop - { marker } { mantissa } - \siunitx_table_print_S_measure:Nnn \l_siunitx_number_out_prop - { result } { } - \box_set_eq:NN \l_siunitx_table_result_box \l_siunitx_tmp_box - \dim_set:Nn \l_siunitx_table_fill_dim - { \l_siunitx_table_result_dim - \l_siunitx_table_integer_dim } - \prop_if_in:NnT \l_siunitx_number_out_prop - { mantissa-decimal-marker } - { - \dim_set:Nn \l_siunitx_table_fill_dim - { \l_siunitx_table_fill_dim - \l_siunitx_table_marker_dim } - } - \dim_compare:nNnTF - { \l_siunitx_table_integer_dim } > { \l_siunitx_table_fill_dim } - { \siunitx_table_print_S_centered_integer: } - { \siunitx_table_print_S_centered_decimal: } - \bool_if:NT \l_siunitx_table_math_bool { \c_math_shift_token } - \bool_if:NTF \l_siunitx_table_align_post_bool - { \box_use:N \l_siunitx_table_post_box } - { - \dim_set:Nn \l_siunitx_table_fill_dim - { - \dim_use:N \l_siunitx_table_fill_dim } - \skip_horizontal:N \l_siunitx_table_fill_dim - \box_use:N \l_siunitx_table_post_box - \box_use:N \l_siunitx_table_fill_box - } -} -\cs_new_protected_nopar:Npn \siunitx_table_print_S_centered_ends: { - \hbox_set:Nn \l_siunitx_table_pre_box - { + } + \dim_compare:nNnT + { \box_wd:N \l_siunitx_table_pre_box } = \c_zero_skip + { \l_siunitx_table_collect_pre_tl } + \hbox_set:Nn \l_siunitx_table_post_box { - \tl_use:N \l_siunitx_table_collect_pre_tl \bool_if:NT \l_siunitx_table_math_bool { - \scan_stop: \c_math_shift_token + \scan_stop: } + \l_siunitx_table_collect_post_tl } - } - \hbox_set:Nn \l_siunitx_table_post_box - { - \bool_if:NT \l_siunitx_table_math_bool - { - \c_math_shift_token - \scan_stop: - } - \tl_use:N \l_siunitx_table_collect_post_tl - } - \dim_compare:nNnTF - { \box_wd:N \l_siunitx_table_pre_box } > - { \box_wd:N \l_siunitx_table_post_box } - { - \hbox_set_to_wd:Nnn \l_siunitx_table_post_box - { \box_wd:N \l_siunitx_table_pre_box } - { - \hbox_unpack:N \l_siunitx_table_post_box - \tex_hfil:D - } - } - { - \hbox_set_to_wd:Nnn \l_siunitx_table_pre_box + \dim_compare:nNnTF + { \box_wd:N \l_siunitx_table_pre_box } > { \box_wd:N \l_siunitx_table_post_box } - { - \tex_hfil:D - \hbox_unpack:N \l_siunitx_table_pre_box - } - } -} -\cs_new_protected_nopar:Npn \siunitx_table_print_S_centered_integer: { - \dim_set:Nn \l_siunitx_table_fill_dim - { \l_siunitx_table_integer_dim - \l_siunitx_table_fill_dim } - \hbox_set_to_wd:Nnn \l_siunitx_table_fill_box - { \l_siunitx_table_fill_dim } { \tex_hfil:D } - \box_use:N \l_siunitx_table_result_box - \box_use:N \l_siunitx_table_fill_box -} -\cs_new_protected_nopar:Npn \siunitx_table_print_S_centered_decimal: { - \dim_set:Nn \l_siunitx_table_fill_dim - { \l_siunitx_table_fill_dim - \l_siunitx_table_integer_dim } - \hbox_set_to_wd:Nnn \l_siunitx_table_fill_box - { \l_siunitx_table_fill_dim } { \tex_hfil:D } - \box_use:N \l_siunitx_table_fill_box - \box_use:N \l_siunitx_table_result_box -} -\cs_new_protected_nopar:Npn \siunitx_table_print_S_reserved: { - \dim_zero:N \l_siunitx_table_gap_dim - \dim_zero:N \l_siunitx_table_space_dim - \siunitx_table_print_S_reserved_ends: - \dim_compare:nNnTF - { \box_wd:N \l_siunitx_table_pre_box } = { \c_zero_skip } - { \tl_use:N \l_siunitx_table_collect_pre_tl } - { - \box_use:N \l_siunitx_table_pre_box - \bool_if:NT \l_siunitx_table_math_bool { \c_math_shift_token } - } - \siunitx_table_print_S_model_create: - \bool_if:NT \l_siunitx_table_auto_bool - { - \int_set:Nn \l_siunitx_process_precision_int - { \l_siunitx_table_decimal_int } - \tl_set:Nn \l_siunitx_round_tl { places } - } - \siunitx_table_print_S_parse: - \bool_if:NTF \l_siunitx_table_comparator_bool - { - \bool_if:NT \l_siunitx_table_align_comparator_bool - { \siunitx_table_print_S_reserved_comparator: } - } - { - \prop_if_in:NnT \l_siunitx_number_out_prop { comparator } - { - \msg_error:nnx { siunitx } { table-partial-number } - { a~comparator } - } - } - \int_compare:nNnTF - { \l_siunitx_table_integer_int + \l_siunitx_table_decimal_int } > - { 0 } - { \siunitx_table_print_S_reserved_mantissa: } - { - \prop_if_in:NnT \l_siunitx_number_out_prop { mantissa-result } - { - \msg_error:nnx { siunitx } { table-partial-number } - { a~mantissa } - } - } - \prop_if_in:NnT \l_siunitx_number_out_prop { complex-result } - { - \msg_error:nnx { siunitx } { table-partial-number } - { a~complex } - } - \int_compare:nNnTF { \l_siunitx_table_exponent_int } > { 0 } - { \siunitx_table_print_S_reserved_exponent: } - { - \prop_if_in:NnT \l_siunitx_number_out_prop { exponent-result } - { - \msg_error:nnx { siunitx } { table-partial-number } - { an~exponent } - } - } - \bool_if:NT \l_siunitx_table_math_bool { \c_math_shift_token } - \bool_if:NTF \l_siunitx_table_align_post_bool - { \box_use:N \l_siunitx_table_post_box } - { - \hbox_set_to_wd:Nnn \l_siunitx_table_fill_box - { \dim_use:N \l_siunitx_table_gap_dim } - { \tex_hfil:D } - \dim_set:Nn \l_siunitx_table_gap_dim - { - \dim_use:N \l_siunitx_table_gap_dim } - \skip_horizontal:N \l_siunitx_table_gap_dim - \box_use:N \l_siunitx_table_post_box - \box_use:N \l_siunitx_table_fill_box - } -} -\cs_new_protected_nopar:Npn \siunitx_table_print_S_reserved_ends: { - \hbox_set:Nn \l_siunitx_tmp_box - { - \l_siunitx_table_pre_tl - \bool_if:NT \l_siunitx_table_math_bool - { - \scan_stop: - \c_math_shift_token - } - } - \hbox_set_to_wd:Nnn \l_siunitx_table_pre_box - { \box_wd:N \l_siunitx_tmp_box } - { - \tex_hfil:D - { \tl_use:N \l_siunitx_table_collect_pre_tl } - } - \hbox_set:Nn \l_siunitx_tmp_box { \l_siunitx_table_post_tl } - \hbox_set_to_wd:Nnn \l_siunitx_table_post_box - { \box_wd:N \l_siunitx_tmp_box } - { - \bool_if:NT \l_siunitx_table_math_bool - { - \c_math_shift_token - \scan_stop: - } - \tl_use:N \l_siunitx_table_collect_post_tl - \tex_hfil:D - } -} -\cs_new_protected_nopar:Npn \siunitx_table_print_S_model_create: { - \prop_clear:N \l_siunitx_number_in_prop - \bool_if:NT \l_siunitx_table_comparator_bool - { \prop_put:Nnn \l_siunitx_number_in_prop { comparator } { \ll } } - \siunitx_table_print_S_model_aux:nn { integer } { mantissa-integer } - \siunitx_table_print_S_model_aux:nn { decimal } { mantissa-decimal } - \siunitx_table_print_S_model_aux:nn { uncert } - { mantissa-uncertainty } - \siunitx_table_print_S_model_aux:nn { exponent } { exponent-integer } - \int_compare:nNnF - { \l_siunitx_table_integer_int + \l_siunitx_table_decimal_int } = - { 0 } - { - \prop_put:Nnn \l_siunitx_number_in_prop { mantissa } - { true } - } - \int_compare:nNnT { \l_siunitx_table_decimal_int } > { 0 } - { - \prop_put:NnV \l_siunitx_number_in_prop - { mantissa-decimal-marker } - \l_siunitx_output_decimal_tl - } - \bool_if:NT \l_siunitx_table_sign_mantissa_bool - { \prop_put:Nnn \l_siunitx_number_in_prop { mantissa-sign } { - } } - \int_compare:nNnT { \l_siunitx_table_exponent_int } > { 0 } - { - \bool_if:NT \l_siunitx_table_sign_exponent_bool - { - \prop_put:Nnn \l_siunitx_number_in_prop { exponent-sign } - { - } - } - } - \siunitx_number_process_sign: - \siunitx_number_process_zero_fill: - \siunitx_number_process_mantissa: - \prop_if_in:NnF \l_siunitx_number_in_prop { symbolic } - { \siunitx_number_process_uncertainty: } - \siunitx_number_format: - \prop_set_eq:NN \l_siunitx_table_model_prop - \l_siunitx_number_out_prop -} -\cs_new_protected_nopar:Npn \siunitx_table_print_S_model_aux:nn #1#2 { - \tl_set:Nx \l_siunitx_tmpa_tl - { - \prg_replicate:nn { \int_use:c { l_siunitx_table_ #1 _int } } - { 8 } - } - \tl_if_empty:NF \l_siunitx_tmpa_tl - { - \prop_put:NnV \l_siunitx_number_in_prop {#2} \l_siunitx_tmpa_tl - \prop_put:Nnn \l_siunitx_number_in_prop {#1} { true } - } -} -\cs_new_protected_nopar:Npn \siunitx_table_print_S_reserved_comparator: + { + \hbox_set_to_wd:Nnn \l_siunitx_table_post_box + { \box_wd:N \l_siunitx_table_pre_box } + { + \hbox_unpack:N \l_siunitx_table_post_box + \tex_hfil:D + } + } + { + \hbox_set_to_wd:Nnn \l_siunitx_table_pre_box + { \box_wd:N \l_siunitx_table_post_box } + { + \tex_hfil:D + \hbox_unpack:N \l_siunitx_table_pre_box + } + } + } +\cs_new_protected_nopar:Npn \siunitx_table_print_S_centered_measure: { - \siunitx_table_print_S_measure:Nnn \l_siunitx_table_model_prop - { comparator } { } - \siunitx_table_print_S_get_comparator:Nn - \l_siunitx_number_out_prop { } - \hbox_set_to_wd:Nnn \l_siunitx_table_result_box - { \l_siunitx_table_comparator_dim } - { - \siunitx_print:nV { number } \l_siunitx_tmpa_tl - \tex_hfil:D - } - \box_use:N \l_siunitx_table_result_box -} -\cs_new_protected_nopar:Npn \siunitx_table_print_S_reserved_mantissa: { - \siunitx_table_print_S_reserved_mantissa_aux:n { mantissa } - \siunitx_table_print_S_measure:Nnn \l_siunitx_table_model_prop - { mantissa } { } - \siunitx_table_print_S_get_mantissa:Nn - \l_siunitx_number_out_prop { } - \dim_set:Nn \l_siunitx_table_space_dim - { \l_siunitx_table_mantissa_dim } - \hbox_set:Nn \l_siunitx_table_result_box - { - \box_use:N \l_siunitx_table_fill_box - \siunitx_print:nV { number } \l_siunitx_tmpa_tl - } - \dim_sub:Nn \l_siunitx_table_space_dim - { \box_wd:N \l_siunitx_table_result_box } - \hbox_set_to_wd:Nnn \l_siunitx_table_result_box - { \l_siunitx_table_mantissa_dim } - { - \box_use:N \l_siunitx_table_result_box - \tex_hfil:D - } - \box_use:N \l_siunitx_table_result_box - \siunitx_table_print_S_reserved_uncert:n { mantissa } -} -\cs_new_protected_nopar:Npn - \siunitx_table_print_S_reserved_mantissa_aux:n #1 { - \bool_if:NTF \l_siunitx_table_align_comparator_bool - { - \siunitx_table_print_S_measure:Nnn \l_siunitx_table_model_prop - { integer } {#1} - \siunitx_table_print_S_get_integer:Nn - \l_siunitx_number_out_prop {#1} - } - { - \siunitx_table_print_S_measure_comparator_integer:N - \l_siunitx_table_model_prop - \siunitx_table_print_S_measure_comparator_integer_get:N - \l_siunitx_number_out_prop - } - \box_clear:N \l_siunitx_tmp_box - \tl_if_empty:NF \l_siunitx_tmpa_tl - { - \hbox_set:Nn \l_siunitx_tmp_box - { \siunitx_print:nV { number } \l_siunitx_tmpa_tl } - } - \hbox_set_to_wd:Nnn \l_siunitx_table_fill_box - { \l_siunitx_table_integer_dim - \box_wd:N \l_siunitx_tmp_box } - { \tex_hfil:D } - \siunitx_table_print_S_measure:Nnn \l_siunitx_table_model_prop - { decimal } {#1} - \box_clear:N \l_siunitx_tmp_box - \siunitx_table_print_S_get_decimal:Nn - \l_siunitx_number_out_prop {#1} - \tl_if_empty:NF \l_siunitx_tmpa_tl - { - \hbox_set:Nn \l_siunitx_tmp_box - { \siunitx_print:nV { number } \l_siunitx_tmpa_tl } - } - \dim_set:Nn \l_siunitx_table_gap_dim - { - \dim_use:N \l_siunitx_table_decimal_dim - - \box_wd:N \l_siunitx_tmp_box - } -} -\cs_new_protected_nopar:Npn - \siunitx_table_print_S_reserved_uncert:n #1 { - \bool_if:NT \l_siunitx_uncert_sep_bool - { - \int_compare:nNnTF { \l_siunitx_table_uncert_int } > { 0 } - { \siunitx_table_print_S_reserved_uncert_aux:n {#1} } + \siunitx_table_print_S_centered_measure_int_part: + \siunitx_table_print_S_centered_measure_marker: + \siunitx_table_print_S_centered_measure_result: + } +\cs_new_protected_nopar:Npn \siunitx_table_print_S_centered_measure_int_part: + { + \prop_get:NnNF \l_siunitx_number_out_prop { comparator } \l_siunitx_tmpa_tl + { \tl_clear:N \l_siunitx_tmpa_tl } + \prop_get:NnNT \l_siunitx_number_out_prop { mantissa-sign } + \l_siunitx_tmpb_tl + { \tl_put_right:No \l_siunitx_tmpa_tl \l_siunitx_tmpb_tl } + \prop_get:NnNT \l_siunitx_number_out_prop { mantissa-integer } + \l_siunitx_tmpb_tl + { \tl_put_right:No \l_siunitx_tmpa_tl \l_siunitx_tmpb_tl } + \siunitx_table_print_S_measure:NN \l_siunitx_tmpa_tl + \l_siunitx_table_integer_dim + } +\cs_new_protected_nopar:Npn \siunitx_table_print_S_centered_measure_marker: + { + \tl_set:Nx \l_siunitx_tmpa_tl + { + \exp_not:N \siunitx_ensuremath:n + { \exp_not:o \l_siunitx_output_decimal_tl } + } + \siunitx_table_print_S_measure:NN \l_siunitx_tmpa_tl + \l_siunitx_table_marker_dim + } +\cs_new_protected_nopar:Npn \siunitx_table_print_S_centered_measure_result: + { + \prop_get:NnN \l_siunitx_number_out_prop { result } \l_siunitx_tmpa_tl + \hbox_set:Nn \l_siunitx_table_result_box + { \siunitx_print:nV { number } \l_siunitx_tmpa_tl } + \dim_set:Nn \l_siunitx_table_result_dim + { \box_wd:N \l_siunitx_table_result_box } + } +\cs_new_protected_nopar:Npn \siunitx_table_print_S_centered_integer: + { + \dim_set:Nn \l_siunitx_table_fill_post_dim + { \l_siunitx_table_integer_dim - \l_siunitx_table_fill_pre_dim } + \dim_zero:N \l_siunitx_table_fill_pre_dim + } +\cs_new_protected_nopar:Npn \siunitx_table_print_S_centered_decimal: + { + \dim_sub:Nn \l_siunitx_table_fill_pre_dim + { \l_siunitx_table_integer_dim } + \dim_zero:N \l_siunitx_table_fill_post_dim + } +\cs_new_protected_nopar:Npn \siunitx_table_print_S_reserved: + { + \siunitx_table_print_S_reserved_init: + \siunitx_table_print_S_reserved_ends: + \siunitx_table_print_S_reserved_round: + \siunitx_table_print_S_parse: + \bool_if:NT \l_siunitx_table_math_bool { \c_math_shift_token } + \siunitx_table_print_S_reserved_comparator: + \siunitx_table_print_S_reserved_mantissa: + \siunitx_table_print_S_reserved_exponent: + \bool_if:NT \l_siunitx_table_math_bool { \c_math_shift_token } + } +\cs_new_protected_nopar:Npn \siunitx_table_print_S_reserved_init: + { + \dim_zero:N \l_siunitx_table_fill_mid_dim + \dim_zero:N \l_siunitx_table_fill_post_dim + \prop_set_eq:NN \l_siunitx_number_in_prop \l_siunitx_table_model_prop + \siunitx_number_process_sign: + \siunitx_number_process_zero_fill: + \siunitx_number_process_mantissa: + \prop_if_in:NnF \l_siunitx_number_in_prop { symbolic } + { \siunitx_number_process_uncertainty: } + \siunitx_number_format: + \prop_get:NnNT \l_siunitx_table_model_prop { mantissa-decimal-raw } + \l_siunitx_tmp_tl + { + \prop_put:NnV \l_siunitx_number_out_prop { mantissa-decimal-raw } + \l_siunitx_tmp_tl + } + \prop_set_eq:NN \l_siunitx_table_model_prop \l_siunitx_number_out_prop + } +\cs_new_protected_nopar:Npn \siunitx_table_print_S_reserved_ends: + { + \hbox_set:Nn \l_siunitx_table_pre_box + { { - \prop_if_in:NnT \l_siunitx_number_out_prop - { #1 -uncertainty } + \l_siunitx_table_collect_pre_tl + \bool_if:NT \l_siunitx_table_math_bool { - \msg_error:nn { siunitx } { table-partial-number } - { an~uncertainty } + \scan_stop: + \c_math_shift_token } } - } -} -\cs_new_protected_nopar:Npn - \siunitx_table_print_S_reserved_uncert_aux:n #1 { - \siunitx_table_print_S_reserved_uncert_pm:n {#1} - \siunitx_table_print_S_reserved_mantissa_aux:n { #1 -uncertainty } - \siunitx_table_print_S_measure:Nnn \l_siunitx_table_model_prop - { uncert } {#1} - \siunitx_table_print_S_get_uncert:Nn \l_siunitx_number_out_prop {#1} - \hbox_set_to_wd:Nnn \l_siunitx_table_result_box - { \l_siunitx_table_uncert_dim } - { - \box_use:N \l_siunitx_table_fill_box - \siunitx_print:nV { number } \l_siunitx_tmpa_tl - \tex_hfil:D - } - \box_use:N \l_siunitx_table_result_box - \bool_if:NF \l_siunitx_table_align_uncert_bool - { - \tex_hskip:D \l_siunitx_table_space_dim - \dim_zero:N \l_siunitx_table_space_dim - } -} -\cs_new_protected_nopar:Npn - \siunitx_table_print_S_reserved_uncert_pm:n #1 { - \tl_clear:N \l_siunitx_tmpb_tl - \siunitx_number_format_join_uncert_pm: - \tl_set:Nx \l_siunitx_tmpb_tl - { { } \exp_not:V \l_siunitx_tmpb_tl { } } - \hbox_set:Nn \l_siunitx_table_result_box - { \siunitx_print:nV { number } \l_siunitx_tmpb_tl } - \prop_if_in:NnF \l_siunitx_number_out_prop { #1 -uncertainty } - { - \hbox_set_to_wd:Nnn \l_siunitx_table_result_box - { \box_wd:N \l_siunitx_table_result_box } { \tex_hfil:D } - } - \bool_if:NF \l_siunitx_table_align_uncert_bool - { \tex_hskip:D -\l_siunitx_table_space_dim } - \box_use:N \l_siunitx_table_result_box -} -\cs_new_protected_nopar:Npn \siunitx_table_print_S_reserved_exponent: { - \dim_zero:N \l_siunitx_table_gap_dim - \tl_if_empty:NTF \l_siunitx_output_exponent_tl - { \siunitx_table_print_S_reserved_exponent_product: } - { - \bool_if:NF \l_siunitx_table_align_exp_bool - { \tex_hskip:D -\l_siunitx_table_space_dim } - } - \siunitx_table_print_S_measure:Nnn \l_siunitx_table_model_prop - { exponent } { } - \siunitx_table_print_S_get_exponent:Nn - \l_siunitx_number_out_prop { } - \hbox_set_to_wd:Nnn \l_siunitx_table_result_box - { \l_siunitx_table_exponent_dim } - { - \siunitx_print:nV { number } \l_siunitx_tmpa_tl - \tex_hfil:D - } - \box_use:N \l_siunitx_table_result_box - \bool_if:NF \l_siunitx_table_align_exp_bool - { \tex_hskip:D \l_siunitx_table_space_dim } -} -\cs_new_protected_nopar:Npn - \siunitx_table_print_S_reserved_exponent_product: { - \tl_clear:N \l_siunitx_tmpa_tl - \box_clear:N \l_siunitx_table_result_box - \prop_if_in:NnTF \l_siunitx_table_model_prop { mantissa-result } - { \siunitx_table_print_S_reserved_exponent_product_aux_i: } - { - \prop_if_in:NnT \l_siunitx_table_model_prop { complex-result } - { \siunitx_table_print_S_reserved_exponent_product_aux_i: } - } - \bool_if:NF \l_siunitx_table_align_exp_bool - { \tex_hskip:D -\l_siunitx_table_space_dim } - \box_use:N \l_siunitx_table_result_box -} -\cs_new_protected_nopar:Npn - \siunitx_table_print_S_reserved_exponent_product_aux_i: { - \tl_set_eq:NN \l_siunitx_tmpa_tl \l_siunitx_exponent_product_tl - \bool_if:NT \l_siunitx_tight_bool - { - \tl_set:Nx \l_siunitx_tmpa_tl - { { \exp_not:V \l_siunitx_tmpa_tl } } - } - \tl_set:Nx \l_siunitx_tmpa_tl - { - \exp_not:N \siunitx_ensuremath:n - { { } \exp_not:V \l_siunitx_tmpa_tl { } } - } - \hbox_set:Nn \l_siunitx_table_result_box - { \siunitx_print:nV { number } \l_siunitx_tmpa_tl } - \prop_if_in:NnTF \l_siunitx_number_out_prop { exponent-result } - { - \prop_if_in:NnF \l_siunitx_number_out_prop { mantissa-result } + } + \dim_compare:nNnT + { \box_wd:N \l_siunitx_table_pre_box } = \c_zero_skip + { \l_siunitx_table_collect_pre_tl } + \hbox_set:Nn \l_siunitx_tmp_box { { \l_siunitx_table_pre_tl } } + \hbox_set_to_wd:Nnn \l_siunitx_table_pre_box + { \box_wd:N \l_siunitx_tmp_box } + { + \tex_hfil:D + \hbox_unpack:N \l_siunitx_table_pre_box + } + \hbox_set:Nn \l_siunitx_tmp_box { \l_siunitx_table_post_tl } + \hbox_set_to_wd:Nnn \l_siunitx_table_post_box + { \box_wd:N \l_siunitx_tmp_box } + { { - \prop_if_in:NnF \l_siunitx_number_out_prop { complex-result } + \bool_if:NT \l_siunitx_table_math_bool { - \siunitx_table_print_S_reserved_exponent_product_aux_ii: + \c_math_shift_token + \scan_stop: } + \l_siunitx_table_collect_post_tl } - } - { \siunitx_table_print_S_reserved_exponent_product_aux_ii: } -} -\cs_new_protected_nopar:Npn - \siunitx_table_print_S_reserved_exponent_product_aux_ii: { - \hbox_set_to_wd:Nnn \l_siunitx_table_result_box - { \box_wd:N \l_siunitx_table_result_box } { \tex_hfil:D } -} -\cs_new_protected_nopar:Npn \siunitx_table_print_S_measure:Nnn #1#2#3 { - \use:c { siunitx_table_print_S_get_ #2 :Nn } #1 {#3} - \tl_if_empty:NTF \l_siunitx_tmpa_tl - { \dim_set:cn { l_siunitx_table_ #2 _dim } { \c_zero_skip } } - { - \hbox_set:Nn \l_siunitx_tmp_box - { \siunitx_print:nV { number } \l_siunitx_tmpa_tl } - \dim_set:cn { l_siunitx_table_ #2 _dim } - { \box_wd:N \l_siunitx_tmp_box } - } -} -\cs_new_protected_nopar:Npn - \siunitx_table_print_S_get_comparator:Nn #1#2 { - \prop_get:NnN #1 { comparator } \l_siunitx_tmpa_tl - \quark_if_no_value:NT \l_siunitx_tmpa_tl - { \tl_clear:N \l_siunitx_tmpa_tl } -} -\cs_new_protected_nopar:Npn - \siunitx_table_print_S_get_decimal:Nn #1#2 { - \prop_get:NnN #1 { #2 -decimal } \l_siunitx_tmpa_tl - \quark_if_no_value:NT \l_siunitx_tmpa_tl - { \tl_clear:N \l_siunitx_tmpa_tl } -} -\cs_new_protected_nopar:Npn - \siunitx_table_print_S_get_exponent:Nn #1#2 { - \prop_get:NnN #1 { exponent-result } \l_siunitx_tmpa_tl - \quark_if_no_value:NT \l_siunitx_tmpa_tl - { \tl_clear:N \l_siunitx_tmpa_tl } -} -\cs_new_protected_nopar:Npn - \siunitx_table_print_S_get_integer:Nn #1#2 { - \prop_get:NnN #1 { #2 -sign } \l_siunitx_tmpa_tl - \quark_if_no_value:NT \l_siunitx_tmpa_tl - { \tl_clear:N \l_siunitx_tmpa_tl } - \prop_get:NnN #1 { #2 -integer } \l_siunitx_tmpb_tl - \quark_if_no_value:NT \l_siunitx_tmpb_tl - { \tl_clear:N \l_siunitx_tmpb_tl } - \tl_put_right:NV \l_siunitx_tmpa_tl \l_siunitx_tmpb_tl -} + \tex_hfil:D + } + } +\cs_new_protected_nopar:Npn \siunitx_table_print_S_reserved_round_auto: + { + \prop_get:NnNTF \l_siunitx_table_model_prop { mantissa-decimal-raw } + \l_siunitx_tmpa_tl + { \int_set:Nn \l_siunitx_process_precision_int { \l_siunitx_tmpa_tl } } + { \int_zero:N \l_siunitx_process_precision_int } + \tl_set:Nn \l_siunitx_round_tl { places } + } +\cs_new_protected_nopar:Npn \siunitx_table_print_S_reserved_comparator: + { + \prop_get:NnNTF \l_siunitx_table_model_prop { comparator } + \l_siunitx_tmpa_tl + { + \hbox_set:Nn \l_siunitx_tmp_box + { \siunitx_print:nV { number } \l_siunitx_tmpa_tl } + \prop_get:NnNTF \l_siunitx_number_out_prop { comparator } + \l_siunitx_tmpa_tl + { + \hbox_set_to_wd:Nnn \l_siunitx_table_result_box + { \box_wd:N \l_siunitx_tmp_box } + { \siunitx_print:nV { number } \l_siunitx_tmpa_tl } + } + { + \dim_add:Nn \l_siunitx_table_fill_pre_dim + { \box_wd:N \l_siunitx_tmp_box } + \cs_set_eq:NN \siunitx_table_print_S_reserved_store_fill:n + \siunitx_table_print_S_reserved_store_fill_pre:n + } + } + { + \cs_set_eq:NN \siunitx_table_print_S_reserved_store_fill:n + \siunitx_table_print_S_reserved_store_fill_pre:n + \prop_if_in:NnT \l_siunitx_number_out_prop { comparator } + { + \msg_error:nnx { siunitx } { table-partial-number } + { a~comparator } + } + } + } +\cs_new_protected_nopar:Npn \siunitx_table_print_S_reserved_store_fill_pre:n + { \dim_add:Nn \l_siunitx_table_fill_pre_dim } +\cs_new_protected_nopar:Npn \siunitx_table_print_S_reserved_store_fill_mid:n + { \dim_add:Nn \l_siunitx_table_fill_mid_dim } +\cs_new_protected_nopar:Npn \siunitx_table_print_S_reserved_mantissa: + { + \prop_get:NnNTF \l_siunitx_table_model_prop { mantissa } + \l_siunitx_tmpa_tl + { + \hbox_set:Nn \l_siunitx_tmp_box + { \siunitx_print:nV { number } \l_siunitx_tmpa_tl } + \prop_get:NnNTF \l_siunitx_number_out_prop { mantissa } + \l_siunitx_tmpa_tl + { + \dim_set:Nn \l_siunitx_table_mantissa_dim + { \box_wd:N \l_siunitx_tmp_box } + \hbox_set:Nn \l_siunitx_table_mantissa_box + { \siunitx_print:nV { number } \l_siunitx_tmpa_tl } + \siunitx_table_print_S_reserved_mantissa_parts: + } + { + \siunitx_table_print_S_reserved_store_fill:n + { \box_wd:N \l_siunitx_tmp_box } + } + } + { + \prop_if_in:NnT \l_siunitx_number_out_prop { mantissa } + { + \msg_error:nnx { siunitx } { table-partial-number } + { a~mantissa } + } + } + } +\cs_new_protected_nopar:Npn \siunitx_table_print_S_reserved_mantissa_parts: + { + \siunitx_table_print_S_reserved_mantissa_integer: + \hbox_set:Nn \l_siunitx_table_result_box + { + \hbox_unpack:N \l_siunitx_table_result_box + \hbox_to_wd:nn { \l_siunitx_table_fill_mid_dim } { \tex_hfil:D } + \hbox_unpack:N \l_siunitx_table_mantissa_box + } + \dim_set:Nn \l_siunitx_table_fill_mid_dim + { + \l_siunitx_table_mantissa_dim + - \box_wd:N \l_siunitx_table_mantissa_box + - \l_siunitx_table_integer_dim + } + \siunitx_table_print_S_reserved_mantissa_uncert: + } +\cs_new_protected_nopar:Npn \siunitx_table_print_S_reserved_mantissa_integer: + { + \prop_get:NnNF \l_siunitx_table_model_prop { mantissa-sign } + \l_siunitx_tmpa_tl + { \tl_clear:N \l_siunitx_tmpa_tl } + \prop_get:NnNT \l_siunitx_table_model_prop { mantissa-integer } + \l_siunitx_tmpb_tl + { \tl_put_right:No \l_siunitx_tmpa_tl \l_siunitx_tmpb_tl } + \siunitx_table_print_S_measure:NN \l_siunitx_tmpa_tl + \l_siunitx_table_integer_dim + \prop_get:NnNF \l_siunitx_number_out_prop { mantissa-sign } + \l_siunitx_tmpa_tl + { \tl_clear:N \l_siunitx_tmpa_tl } + \prop_get:NnNT \l_siunitx_number_out_prop { mantissa-integer } + \l_siunitx_tmpb_tl + { \tl_put_right:No \l_siunitx_tmpa_tl \l_siunitx_tmpb_tl } + \tl_if_empty:NF \l_siunitx_tmpa_tl + { + \siunitx_table_print_S_measure:NN \l_siunitx_tmpa_tl + \l_siunitx_tmp_dim + \dim_sub:Nn \l_siunitx_table_integer_dim { \l_siunitx_tmp_dim } + } + \siunitx_table_print_S_reserved_store_fill:n + { \l_siunitx_table_integer_dim } + } +\cs_new_protected_nopar:Npn \siunitx_table_print_S_reserved_mantissa_uncert: + { + \prop_get:NnNT \l_siunitx_table_model_prop { mantissa-uncertainty } + \l_siunitx_tmpa_tl + { + \siunitx_number_format_join_uncert_pm:N \l_siunitx_tmpa_tl + \hbox_set:Nn \l_siunitx_tmp_box + { \siunitx_print:nV { number } \l_siunitx_tmpa_tl } + \prop_get:NnNTF \l_siunitx_number_out_prop { mantissa-uncertainty } + \l_siunitx_tmpa_tl + { + \dim_set:Nn \l_siunitx_table_uncert_dim + { \box_wd:N \l_siunitx_tmp_box } + \siunitx_number_format_join_uncert_pm:N \l_siunitx_tmpa_tl + \hbox_set:Nn \l_siunitx_tmp_box + { \siunitx_print:nV { number } \l_siunitx_tmpa_tl } + \siunitx_table_print_S_reserved_mantissa_uncert_aux: + } + { + \siunitx_table_print_S_reserved_store_fill:n + { \box_wd:N \l_siunitx_tmp_box } + } + } + } \cs_new_protected_nopar:Npn - \siunitx_table_print_S_get_mantissa:Nn #1#2 { - \prop_get:NnN #1 { mantissa } \l_siunitx_tmpa_tl - \quark_if_no_value:NT \l_siunitx_tmpa_tl - { \tl_clear:N \l_siunitx_tmpa_tl } - \bool_if:NF \l_siunitx_table_align_comparator_bool - { - \prop_get:NnN #1 { comparator } \l_siunitx_tmpb_tl - \quark_if_no_value:NF \l_siunitx_tmpb_tl - { \tl_put_left:NV \l_siunitx_tmpa_tl \l_siunitx_tmpb_tl } - } -} -\cs_new_protected_nopar:Npn \siunitx_table_print_S_get_marker:Nn #1#2 { - \tl_set:Nx \l_siunitx_tmpa_tl - { - \exp_not:N \siunitx_ensuremath:n - { \exp_not:V \l_siunitx_output_decimal_tl } - } -} -\cs_new_protected_nopar:Npn \siunitx_table_print_S_get_result:Nn #1#2 { - \prop_get:NnN #1 { result } \l_siunitx_tmpa_tl - \quark_if_no_value:NT \l_siunitx_tmpa_tl - { \tl_clear:N \l_siunitx_tmpa_tl } -} -\cs_new_protected_nopar:Npn \siunitx_table_print_S_get_uncert:Nn #1#2 { - \prop_get:NnN #1 { #2 -uncertainty } \l_siunitx_tmpa_tl - \quark_if_no_value:NT \l_siunitx_tmpa_tl - { \tl_clear:N \l_siunitx_tmpa_tl } -} + \siunitx_table_print_S_reserved_mantissa_uncert_aligned: + { + \hbox_set:Nn \l_siunitx_table_result_box + { + \hbox_unpack:N \l_siunitx_table_result_box + \hbox_to_wd:nn { \l_siunitx_table_fill_mid_dim } { \tex_hfil:D } + \hbox_unpack:N \l_siunitx_tmp_box + } + \dim_set:Nn \l_siunitx_table_fill_mid_dim + { \l_siunitx_table_uncert_dim - \box_wd:N \l_siunitx_tmp_box } + } \cs_new_protected_nopar:Npn - \siunitx_table_print_S_measure_comparator_integer:N #1 + \siunitx_table_print_S_reserved_mantissa_uncert_not_aligned: { - \siunitx_table_print_S_measure_comparator_integer_get:N #1 - \tl_if_empty:NTF \l_siunitx_tmpa_tl - { \dim_set:Nn \l_siunitx_table_integer_dim { \c_zero_skip } } + \hbox_set:Nn \l_siunitx_table_result_box { + \hbox_unpack:N \l_siunitx_table_result_box + \hbox_unpack:N \l_siunitx_tmp_box + } + \dim_add:Nn \l_siunitx_table_fill_mid_dim + { + \l_siunitx_table_uncert_dim + - \box_wd:N \l_siunitx_tmp_box + } + } +\cs_new_protected_nopar:Npn \siunitx_table_print_S_reserved_exponent: + { + \prop_get:NnNTF \l_siunitx_table_model_prop { exponent-result } + \l_siunitx_tmpa_tl + { + \prop_if_in:NnT \l_siunitx_table_model_prop { mantissa } + { \siunitx_table_print_S_reserved_exponent_product: } \hbox_set:Nn \l_siunitx_tmp_box { \siunitx_print:nV { number } \l_siunitx_tmpa_tl } - \dim_set:Nn \l_siunitx_table_integer_dim - { \box_wd:N \l_siunitx_tmp_box } + \prop_get:NnNTF \l_siunitx_number_out_prop { exponent-result } + \l_siunitx_tmpa_tl + { + \dim_set:Nn \l_siunitx_table_exponent_dim + { \box_wd:N \l_siunitx_tmp_box } + \prop_if_in:NnTF \l_siunitx_number_out_prop { mantissa } + { \siunitx_table_print_S_reserved_exponent_product: } + { \siunitx_table_print_S_reserved_exponent_product_correction: } + \hbox_set:Nn \l_siunitx_tmp_box + { \siunitx_print:nV { number } \l_siunitx_tmpa_tl } + \siunitx_table_print_S_reserved_exponent_aux: + } + { + \dim_set:Nn \l_siunitx_table_fill_post_dim + { \l_siunitx_table_fill_mid_dim + \box_wd:N \l_siunitx_tmp_box } + } + } + { + \prop_if_in:NnT \l_siunitx_number_out_prop { exponent-result } + { + \msg_error:nnx { siunitx } { table-partial-number } + { an~exponent } + } + \dim_set_eq:NN \l_siunitx_table_fill_post_dim + \l_siunitx_table_fill_mid_dim + } + } +\cs_new_protected_nopar:Npn \siunitx_table_print_S_reserved_exponent_product: + { + \tl_set_eq:NN \l_siunitx_tmpb_tl \l_siunitx_exponent_product_tl + \bool_if:NT \l_siunitx_tight_bool + { \tl_set:Nx \l_siunitx_tmpb_tl { { \exp_not:o \l_siunitx_tmpb_tl } } } + \tl_set:Nx \l_siunitx_tmpa_tl + { + \exp_not:N \siunitx_ensuremath:n + { { } \exp_not:o \l_siunitx_tmpb_tl { } } + \exp_not:o \l_siunitx_tmpa_tl } } \cs_new_protected_nopar:Npn - \siunitx_table_print_S_measure_comparator_integer_get:N #1 + \siunitx_table_print_S_reserved_exponent_product_correction: { - \prop_get:NnN #1 { comparator } \l_siunitx_tmpa_tl - \quark_if_no_value:NT \l_siunitx_tmpa_tl - { \tl_clear:N \l_siunitx_tmpa_tl } - \prop_get:NnN #1 { mantissa-sign } \l_siunitx_tmpb_tl - \quark_if_no_value:NF \l_siunitx_tmpb_tl - { \tl_put_right:NV \l_siunitx_tmpa_tl \l_siunitx_tmpb_tl } - \prop_get:NnN #1 { mantissa-integer } \l_siunitx_tmpb_tl - \quark_if_no_value:NT \l_siunitx_tmpb_tl - { \tl_clear:N \l_siunitx_tmpb_tl } - \tl_put_right:NV \l_siunitx_tmpa_tl \l_siunitx_tmpb_tl + \group_begin: + \tl_clear:N \l_siunitx_tmpa_tl + \siunitx_table_print_S_reserved_exponent_product: + \tl_set:Nx \l_siunitx_tmpa_tl + { { } \exp_not:o \l_siunitx_tmpa_tl { } } + \siunitx_table_print_S_measure:NN \l_siunitx_tmpa_tl \l_siunitx_tmp_dim + \exp_args:NNNo \group_end: + \dim_set:Nn \l_siunitx_tmp_dim { \dim_use:N \l_siunitx_tmp_dim } + \siunitx_table_print_S_reserved_store_fill:n { \l_siunitx_tmp_dim } + \dim_sub:Nn \l_siunitx_table_exponent_dim { \l_siunitx_tmp_dim } } -\cs_new_protected_nopar:Npn \siunitx_table_direct: { - \m@th - \bool_if:NTF \l_siunitx_table_center_decimal_bool - { \siunitx_table_direct_centered: } - { \siunitx_table_direct_reserved: } -} -\char_make_active:N \@ -\cs_new_protected_nopar:Npn \siunitx_table_direct_centered: { - \cs_set_eq:NN \siunitx_table_print: - \siunitx_table_direct_centered_end: - \hbox_set:Nn \l_siunitx_tmp_box - { \siunitx_ensuremath:n { \l_siunitx_output_decimal_tl } } - \hbox_set_to_wd:Nnn \l_siunitx_table_post_box - { \box_wd:N \l_siunitx_tmp_box } - { \tex_hfil:D } - \hbox_set:Nn \l_siunitx_table_pre_box - \c_group_begin_token - \c_math_shift_token - \tl_map_function:NN \l_siunitx_input_decimal_tl - \siunitx_table_direct_centered_aux:N -} -\cs_new_protected_nopar:Npn \siunitx_table_direct_centered_aux:N #1 { - \char_set_lccode:nn { `\@ } { `#1 } - \char_set_mathcode:nn { `#1 } { 32768 } - \tl_to_lowercase:n { \cs_set_nopar:Npn @ } - { +\cs_new_protected_nopar:Npn \siunitx_table_print_S_reserved_exponent_aligned: + { + \hbox_set:Nn \l_siunitx_table_result_box + { + \hbox_unpack:N \l_siunitx_table_result_box + \hbox_to_wd:nn { \l_siunitx_table_fill_mid_dim } { \tex_hfil:D } + \hbox_unpack:N \l_siunitx_tmp_box + } + \dim_set:Nn \l_siunitx_table_fill_post_dim + { + \l_siunitx_table_exponent_dim + - \box_wd:N \l_siunitx_tmp_box + } + } +\cs_new_protected_nopar:Npn + \siunitx_table_print_S_reserved_exponent_not_aligned: + { + \hbox_set:Nn \l_siunitx_table_result_box + { + \hbox_unpack:N \l_siunitx_table_result_box + \hbox_unpack:N \l_siunitx_tmp_box + } + \dim_set:Nn \l_siunitx_table_fill_post_dim + { + \l_siunitx_table_fill_mid_dim + + \l_siunitx_table_exponent_dim + - \box_wd:N \l_siunitx_tmp_box + } + } +\cs_new_protected_nopar:Npn \siunitx_table_print_S_direct: + { + \m@th + \siunitx_table_print_S_direct_main: + } +\char_set_catcode_active:N \@ +\cs_new_protected_nopar:Npn \siunitx_table_print_S_direct_centered: + { + \cs_set_eq:NN \siunitx_table_print: + \siunitx_table_print_S_direct_centered_end: + \hbox_set:Nn \l_siunitx_tmp_box + { \siunitx_ensuremath:n { \l_siunitx_output_decimal_tl } } + \hbox_set_to_wd:Nnn \l_siunitx_table_post_box + { \box_wd:N \l_siunitx_tmp_box } + { \tex_hfil:D } + \hbox_set:Nn \l_siunitx_table_pre_box + \c_group_begin_token + \c_math_shift_token + \tl_map_function:NN \l_siunitx_input_decimal_tl + \siunitx_table_print_S_direct_centered_aux:N + } +\cs_new_protected_nopar:Npn \siunitx_table_print_S_direct_centered_aux:N #1 + { + \char_set_lccode:nn { `\@ } { `#1 } + \char_set_mathcode:nn { `#1 } { 32768 } + \tl_to_lowercase:n { \cs_set_nopar:Npn @ } + { + \c_math_shift_token + \c_group_end_token + \hbox_set:Nn \l_siunitx_table_post_box + \c_group_begin_token + \c_math_shift_token + \l_siunitx_output_decimal_tl + } + } +\char_set_catcode_letter:N \@ +\cs_new_protected_nopar:Npn \siunitx_table_print_S_direct_centered_end: + { \c_math_shift_token - \c_group_end_token - \hbox_set:Nn \l_siunitx_table_post_box - \c_group_begin_token - \c_math_shift_token - \l_siunitx_output_decimal_tl - } -} -\char_make_letter:N \@ -\cs_new_protected_nopar:Npn \siunitx_table_direct_centered_end: { - \c_math_shift_token - \c_group_end_token - \dim_compare:nNnTF - { \box_wd:N \l_siunitx_table_pre_box } > - { \box_wd:N \l_siunitx_table_post_box } - { - \hbox_set_to_wd:Nnn \l_siunitx_table_post_box - { \box_wd:N \l_siunitx_table_pre_box } - { - \hbox_unpack:N \l_siunitx_table_post_box - \tex_hfil:D - } - } - { - \hbox_set_to_wd:Nnn \l_siunitx_table_pre_box + \c_group_end_token + \dim_compare:nNnTF + { \box_wd:N \l_siunitx_table_pre_box } > { \box_wd:N \l_siunitx_table_post_box } - { - \tex_hfil:D - \hbox_unpack:N \l_siunitx_table_pre_box - } - } - \box_use:N \l_siunitx_table_pre_box - \box_use:N \l_siunitx_table_post_box -} -\char_make_active:N \@ -\cs_new_protected_nopar:Npn \siunitx_table_direct_reserved: { - \cs_set_eq:NN \siunitx_table_print: - \siunitx_table_direct_reserved_end: - \tl_set:Nx \l_siunitx_tmpa_tl - { \prg_replicate:nn { \l_siunitx_table_integer_int } { 8 } } - \hbox_set:Nn \l_siunitx_tmp_box - { - \siunitx_ensuremath:n - { - \bool_if:NT \l_siunitx_table_sign_mantissa_bool { - } - \l_siunitx_tmpa_tl - } - } - \dim_set:Nn \l_siunitx_table_integer_dim - { \box_wd:N \l_siunitx_tmp_box } - \tl_set:Nx \l_siunitx_tmpa_tl - { \prg_replicate:nn { \l_siunitx_table_decimal_int } { 8 } } - \hbox_set:Nn \l_siunitx_tmp_box - { - \siunitx_ensuremath:n - { - \l_siunitx_output_decimal_tl - \l_siunitx_tmpa_tl - } - } - \hbox_set_to_wd:Nnn \l_siunitx_table_post_box - { \box_wd:N \l_siunitx_tmp_box } - { \tex_hfil:D } - \hbox_set_to_wd:Nnn \l_siunitx_table_pre_box - { \l_siunitx_table_integer_dim } - \c_group_begin_token - \c_math_shift_token - \tl_map_function:NN \l_siunitx_input_decimal_tl - \siunitx_table_direct_reserved_aux:N - \tex_hfill:D -} -\cs_new_protected_nopar:Npn \siunitx_table_direct_reserved_aux:N #1 { - \char_set_lccode:nn { `\@ } { `#1 } - \char_set_mathcode:nn { `#1 } { 32768 } - \tl_to_lowercase:n { \cs_set_nopar:Npn @ } - { + { + \hbox_set_to_wd:Nnn \l_siunitx_table_post_box + { \box_wd:N \l_siunitx_table_pre_box } + { + \hbox_unpack:N \l_siunitx_table_post_box + \tex_hfil:D + } + } + { + \hbox_set_to_wd:Nnn \l_siunitx_table_pre_box + { \box_wd:N \l_siunitx_table_post_box } + { + \tex_hfil:D + \hbox_unpack:N \l_siunitx_table_pre_box + } + } + \box_use:N \l_siunitx_table_pre_box + \box_use:N \l_siunitx_table_post_box + } +\char_set_catcode_active:N \@ +\cs_new_protected_nopar:Npn \siunitx_table_print_S_direct_reserved: + { + \cs_set_eq:NN \siunitx_table_print: + \siunitx_table_print_S_direct_reserved_end: + \prop_get:NnNF \l_siunitx_table_model_prop { mantissa-integer } + \l_siunitx_tmpa_tl + { \tl_clear:N \l_siunitx_tmpa_tl } + \hbox_set:Nn \l_siunitx_tmp_box + { + \siunitx_ensuremath:n + { + \prop_get:NnNT \l_siunitx_table_model_prop { mantissa-sign } + \l_siunitx_tmpb_tl + { \l_siunitx_tmpb_tl } + \l_siunitx_tmpa_tl + } + } + \dim_set:Nn \l_siunitx_table_integer_dim + { \box_wd:N \l_siunitx_tmp_box } + \prop_get:NnNF \l_siunitx_table_model_prop { mantissa-decimal } + \l_siunitx_tmpa_tl + { \tl_clear:N \l_siunitx_tmpa_tl } + \hbox_set:Nn \l_siunitx_tmp_box + { + \siunitx_ensuremath:n + { + \l_siunitx_output_decimal_tl + \l_siunitx_tmpa_tl + } + } + \hbox_set_to_wd:Nnn \l_siunitx_table_post_box + { \box_wd:N \l_siunitx_tmp_box } + { \tex_hfil:D } + \hbox_set_to_wd:Nnn \l_siunitx_table_pre_box + { \l_siunitx_table_integer_dim } + \c_group_begin_token \c_math_shift_token - \c_group_end_token - \hbox_set_to_wd:Nnn \l_siunitx_table_post_box - { \box_wd:N \l_siunitx_tmp_box } - \c_group_begin_token + \tl_map_function:NN \l_siunitx_input_decimal_tl + \siunitx_table_print_S_direct_reserved_aux:N + \tex_hfill:D + } +\cs_new_protected_nopar:Npn \siunitx_table_print_S_direct_reserved_aux:N #1 + { + \char_set_lccode:nn { `\@ } { `#1 } + \char_set_mathcode:nn { `#1 } { 32768 } + \tl_to_lowercase:n { \cs_set_nopar:Npn @ } + { \c_math_shift_token - \l_siunitx_output_decimal_tl - } -} -\char_make_letter:N \@ -\cs_new_protected_nopar:Npn \siunitx_table_direct_reserved_end: { - \c_math_shift_token - \tex_hfil:D - \c_group_end_token - \siunitx_table_align_left:n { \l_siunitx_table_number_align_skip } - \box_use:N \l_siunitx_table_pre_box - \box_use:N \l_siunitx_table_post_box - \siunitx_table_align_right:n { \l_siunitx_table_number_align_skip } -} + \c_group_end_token + \hbox_set_to_wd:Nnn \l_siunitx_table_post_box + { \box_wd:N \l_siunitx_tmp_box } + \c_group_begin_token + \c_math_shift_token + \l_siunitx_output_decimal_tl + } + } +\char_set_catcode_letter:N \@ +\cs_new_protected_nopar:Npn \siunitx_table_print_S_direct_reserved_end: + { + \c_math_shift_token + \tex_hfil:D + \c_group_end_token + \siunitx_table_align_left:n { \l_siunitx_table_number_align_skip } + \box_use:N \l_siunitx_table_pre_box + \box_use:N \l_siunitx_table_post_box + \siunitx_table_align_right:n { \l_siunitx_table_number_align_skip } + } +\keys_set:nn { siunitx } + { + table-align-comparator = true, + table-align-exponent = true, + table-align-text-pre = true, + table-align-text-post = true, + table-align-uncertainty = true, + table-omit-exponent = false, + table-parse-only = false, + table-number-alignment = center-decimal-marker, + table-text-alignment = center, + table-figures-decimal = 2, + table-figures-integer = 3 + } \keys_define:nn { siunitx } { redefine-symbols .bool_set:N = \l_siunitx_redefine_symbols_bool, } @@ -6593,15 +6727,8 @@ set~thousands~separator = { \exp_not:V \l_siunitx_group_sep_tl } } - \bool_if:NTF \l_siunitx_group_four_bool - { - \clist_put_right:Nn \l_siunitx_pgf_link_clist - { min~exponent~for~1000~sep = 3 } - } - { - \clist_put_right:Nn \l_siunitx_pgf_link_clist - { min~exponent~for~1000~sep = 4 } - } + \clist_put_right:Nn \l_siunitx_pgf_link_clist + { min~exponent~for~1000~sep = \int_use:N \l_siunitx_group_min_int } \bool_if:nF { \l_siunitx_group_decimal_bool || @@ -6639,154 +6766,148 @@ } \siunitx_tmp:w } -\msg_set:nnnn { siunitx } { bad-arc-sign } +\msg_new:nnnn { siunitx } { bad-arc-sign } { Incorrect~use~of~sign~in~degree-minute-second~angle. } { Only~the~highest~value~part~of~an~angle~can~have~a~sign. } -\msg_set:nnnn { siunitx } { duplicate-complex-root-token } +\msg_new:nnnn { siunitx } { duplicate-complex-root-token } { Duplicate~complex~root~token~'#1'~in~input. } { Only~one~complex~root~token~can~appear~in~a~single~number. } -\msg_set:nnnn { siunitx } { duplicate-decimal-token } +\msg_new:nnnn { siunitx } { duplicate-decimal-token } { Duplicate~decimal~marker~token~'#1'~in~input. } { Only~one~decimal~marker~token~can~appear~in~a~single~number. } -\msg_set:nnnn { siunitx } { duplicate-exponent-token } +\msg_new:nnnn { siunitx } { duplicate-exponent-token } { Duplicate~exponent~marker~token~'#1'~in~input. } { Only~one~exponent~marker~token~can~appear~in~a~single~number. } -\msg_set:nnnn { siunitx } { duplicate-quotient-token } +\msg_new:nnnn { siunitx } { duplicate-quotient-token } { Duplicate~quotient~token. } { Only~one~quotient~token~can~appear~in~a~single~number. } -\msg_set:nnnn { siunitx } { duplicate-sticky-per } +\msg_new:nnnn { siunitx } { duplicate-sticky-per } { Duplicate~\token_to_str:N \per. } { When~the~'sticky-per'~option~is~active,~only~one - \token_to_str:N \per \\ - may~appear~in~a~unit. + \token_to_str:N \per may~appear~in~a~unit. } -\msg_set:nnnn { siunitx } { empty-arc } +\msg_new:nnnn { siunitx } { empty-arc } { Empty~degree-minute-second~angle. } { The~angle~given~does~not~contain~any~numbers. } -\msg_set:nnnn { siunitx } { empty-uncertainty } +\msg_new:nnnn { siunitx } { empty-uncertainty } { Empty~uncertainty~given~in~'#1'. } { The~number~given~contains~an~empty~uncertainty. } -\msg_set:nnnn { siunitx } { ending-product-token } +\msg_new:nnnn { siunitx } { ending-product-token } { Misplaced~product~token. } { A~number~cannot~end~with~a~product~token. } -\msg_set:nnnn { siunitx } { ending-quotient-token } +\msg_new:nnnn { siunitx } { ending-quotient-token } { Misplaced~quotient~token. } { A~number~cannot~end~with~a~quotient~token. } -\msg_set:nnnn { siunitx } { invalid-arc-format } +\msg_new:nnnn { siunitx } { invalid-arc-format } { Invalid~degree-minute-second angle~'#1'. } { - Angles~given~in~degree-minute-second~format~should~contain~two~';'\\ - symbols~to~divide~up~the~parts~of~the~input.\\ + Angles~given~in~degree-minute-second~format~should~contain~two~';' + symbols~to~divide~up~the~parts~of~the~input. } -\msg_set:nnnn { siunitx } { invalid-number } +\msg_new:nnnn { siunitx } { invalid-number } { Invalid~numerical~input~'#1'. } { - The~input given~as~a~number~does~not~make~logical~sense.\\ + The~input given~as~a~number~does~not~make~logical~sense.~ This~happens,~for example,~if~a~number~only~contains~a~sign. } -\msg_set:nnnn { siunitx } { invalid-token-in-exponent } +\msg_new:nnnn { siunitx } { invalid-token-in-exponent } { Invalid~exponent~in~numerical~input~'#1'. } { - The~exponent`part~of~a~number~cannot~contain~an~uncertainty~or~ - complex~part.\\ - The~input~given~appears~to~contain~one~of~these~in~the~exponent. + The~exponent~part~of~a~number~cannot~contain~an~uncertainty~or~ + complex~part: \\ + the~input~given~appears~to~contain~one~of~these~in~the~exponent. } -\msg_set:nnnn { siunitx } { invalid-token-in-number } +\msg_new:nnnn { siunitx } { invalid-token-in-number } { Invalid~token~'#1'~in~numerical~input. } { Numbers~can~only~contain~tokens~defined~using~the~ 'input-...'~options:\\ the~token~'#1'~is~not~set~up~as~a~valid~part~of~a~number. } -\msg_set:nnnn { siunitx } { invalid-token-in-uncertainty } +\msg_new:nnnn { siunitx } { invalid-token-in-uncertainty } { Invalid~uncertainty~in~numerical~input~'#1'. } { The~uncertainty~part~of~a~number~may~only~contain~digits~or~ symbols. } -\msg_set:nnnn { siunitx } { literal-unit } +\msg_new:nnnn { siunitx } { literal-unit } { Literal~units~disabled. } { - You~gave~the~literal~input~'#1'\\ + You~gave~the~literal~input~'#1'~ but~literal~unit~output~is~disabled. } -\msg_set:nnnn { siunitx } { misplaced-sign-token } +\msg_new:nnnn { siunitx } { misplaced-sign-token } { Misplaced~sign~token~'#1'. } { Sign~tokens~can~only~come~at~the~beginning~of~a~number. } -\msg_set:nnnn { siunitx } { misplaced-complex-root-token } +\msg_new:nnnn { siunitx } { misplaced-complex-root-token } { Misplaced~complex~token~in~numerical~input~'#1'. } { - The~root~token~must~come~either~before~or~after~the~real~digits\\ + The~root~token~must~come~either~before~or~after~the~real~digits~ of~the~complex~part. } -\msg_set:nnnn { siunitx } { misplaced-uncertainty-token } +\msg_new:nnnn { siunitx } { misplaced-uncertainty-token } { Misplaced~uncertainty~token~'#1'. } { The~uncertainty~in~a~number~must~be~given~between~a~set~of~ delimiters~as~defined~by~the\\ - \c_space_tl \c_space_tl - 'input-open-uncertainty'~and~'input-close-uncertainty'\\ + \ \ 'input-open-uncertainty'~and~'input-close-uncertainty'~ options. } -\msg_set:nnnn { siunitx } { multi-part-range } +\msg_new:nnnn { siunitx } { multi-part-range } { Numerical~range~with~multiple~parts. } { - The~input~'#1'~is~a~number~which~has~more~than~one~part.\\ - Ranges~can~only~contain~one~number~in~each~part. + The~input~'#1'~is~a~number~which~has~more~than~one~part: \\ + ranges~can~only~contain~one~number~in~each~part. } -\msg_set:nnn { siunitx } { option-not-available } +\msg_new:nnn { siunitx } { option-not-available } { Option~'#1'~not~available~in~strict~mode. } -\msg_set:nnn { siunitx } { option-preamble-only } +\msg_new:nnn { siunitx } { option-preamble-only } { Option~'#1'~only~available~in~the~preamble. } -\msg_set:nnnn { siunitx } { prefix-base-mismatch } +\msg_new:nnnn { siunitx } { prefix-base-mismatch } { Prefix~bases~do~not~match. } { - You~have~asked~for~prefixes~to~be~converted~into~a~power,\\ + You~have~asked~for~prefixes~to~be~converted~into~a~power,~ but~the~bases~do~not~match. } -\msg_set:nnn { siunitx } { prefix-only } +\msg_new:nnn { siunitx } { prefix-only } { Prefix~with~no~unit. } -\msg_set:nnnn { siunitx } { qualifier-before-unit } +\msg_new:nnnn { siunitx } { qualifier-before-unit } { Qualifier~before~unit. } { Unit~qualifiers~have~to~follow~after~units,~not~before~them. } -\msg_set:nnnn { siunitx } { restricted-number } +\msg_new:nnnn { siunitx } { restricted-number } { Token~'#1'~forbidden~in~restricted~numerical~input. } { The~current~input~must~be~a~real~number~and~cannot~contain: \\ - \c_space_tl -~an~exponent; \\ - \c_space_tl -~an~uncertainty; \\ - \c_space_tl -~a~complex~part. + \ -~an~exponent; \\ + \ -~an~uncertainty; \\ + \ -~a~complex~part. } -\msg_set:nnnn { siunitx } { starting-product-token } +\msg_new:nnnn { siunitx } { starting-product-token } { Misplaced~product~token. } { A~number~cannot~begin~with~a~product~token. } -\msg_set:nnnn { siunitx } { starting-quotient-token } +\msg_new:nnnn { siunitx } { starting-quotient-token } { Misplaced~quotient~token. } { A~number~cannot~begin~with~a~quotient~token. } -\msg_set:nnnn { siunitx } { table-partial-number } +\msg_new:nnnn { siunitx } { table-partial-number } { No~space~reserved~for~#1~\msg_line_context:. } { - The~number~in~the~current~table~cell~contains~#1~part, \\ + The~number~in~the~current~table~cell~contains~#1~part, but~you~did~not~reserve~any~space~to~print~it: \\ it~will~be~missing~in~the~output. } -\msg_set:nnnn { siunitx } { unknown-configuration-file } - { Unknown~configuration~'#1'. } - { The~configuration~file~'siunitx-#1.cfg'~was~not~found. } -\msg_set:nnnn { siunitx } { unknown-option } +\msg_new:nnnn { siunitx } { unknown-option } { Unknown~option~'#1'. } { - The~option~file~'#1'~is~not~known~by~siunitx: \\ + The~option~file~'#1'~is~not~known~by~siunitx: perhaps~it~is~spelled~incorrectly. } -\msg_set:nnnn { siunitx } { version-1-option } +\msg_new:nnnn { siunitx } { version-1-option } { Version~1~option~'#1'~detected. } { Use: \\ - \c_space_tl \c_space_tl - \token_to_str:N \usepackage[load-configurations = version-1] - \token_to_str:N { siunitx \token_to_str:N } \\ + \ \ \token_to_str:N \usepackage [ version-1-compatibility ] + \iow_char:N \{ siunitx \token_to_str:N \iow_char:N \} \\ in~the~preamble~to~load~the~appropriate~code. } \NewDocumentCommand \DeclareBinaryPrefix { m m m } { @@ -6888,7 +7009,7 @@ \bool_set_false:N \l_siunitx_table_collect_pre_bool \siunitx_table_print_S: } - { \siunitx_table_direct: #2 \siunitx_table_print: } + { \siunitx_table_print_S_direct: #2 \siunitx_table_print: } } \NewDocumentCommand \si { o m } { \group_begin: @@ -6900,42 +7021,43 @@ } \group_end: } -\AtBeginDocument { - \cs_set:Npn \addtocontents #1#2 - { - \protected@write \@auxout - { - \cs_set_eq:NN \label \use_none:n - \cs_set_eq:NN \index \use_none:n - \cs_set_eq:NN \glossary\use_none:n - \tl_map_function:NN \l_siunitx_declare_list_tl - \siunitx_contents_add:N - } - { \token_to_str:N \@writefile {#1} {#2} } - } -} -\cs_new_protected_nopar:Npn \siunitx_contents_add:N #1 { - \cs_set_nopar:Npn #1 { \token_to_str:N #1 } -} -\cs_new_protected_nopar:Npn \siunitx_contents_bookmarks: { - \tl_map_function:NN \l_siunitx_declare_list_tl - \siunitx_unit_print_literal_aux:N - \msg_redirect_name:nnn { LaTeX / xparse } { redefine-command } - { none } - \cs_set_eq:NN \num \siunitx_bookmark_num:w - \cs_set_eq:NN \numrange \siunitx_bookmark_numrange:w - \cs_set_eq:NN \si \siunitx_bookmark_si:w - \cs_set_eq:NN \SI \siunitx_bookmark_SI:w - \cs_set_eq:NN \SIrange \siunitx_bookmark_SIrange:w - \cs_set_eq:NN \si \siunitx_bookmark_si:w - \cs_set_nopar:Npn \SIUnitSymbolAngstrom { \AA } - \cs_set_nopar:Npn \SIUnitSymbolArcminute { ' } - \cs_set_nopar:Npn \SIUnitSymbolArcsecond { '' } - \cs_set_nopar:Npn \SIUnitSymbolCelsius { \textcelsius } - \cs_set_nopar:Npn \SIUnitSymbolDegree { \textdegree } - \cs_set_nopar:Npn \SIUnitSymbolMicro { \textmu } - \cs_set_nopar:Npn \SIUnitSymbolOhm { [ohm] } -} +\AtBeginDocument + { + \cs_set:Npn \addtocontents #1#2 + { + \protected@write \@auxout + { + \cs_set_eq:NN \label \use_none:n + \cs_set_eq:NN \index \use_none:n + \cs_set_eq:NN \glossary \use_none:n + \tl_map_function:NN \l_siunitx_declare_list_tl + \siunitx_contents_add:N + } + { \token_to_str:N \@writefile {#1} {#2} } + } + } +\cs_new_protected_nopar:Npn \siunitx_contents_add:N #1 + { \cs_set_nopar:Npn #1 { \token_to_str:N #1 } } +\cs_new_protected_nopar:Npn \siunitx_contents_bookmarks: + { + \tl_map_function:NN \l_siunitx_declare_list_tl + \siunitx_unit_print_literal_aux:N + \msg_redirect_name:nnn { xparse } { redefine-command } { none } + \cs_set_eq:NN \num \siunitx_bookmark_num:w + \cs_set_eq:NN \numrange \siunitx_bookmark_numrange:w + \cs_set_eq:NN \si \siunitx_bookmark_si:w + \cs_set_eq:NN \SI \siunitx_bookmark_SI:w + \cs_set_eq:NN \SIrange \siunitx_bookmark_SIrange:w + \cs_set_eq:NN \si \siunitx_bookmark_si:w + \cs_set_eq:NN \siunitx_textsuperscript:n \use:n + \cs_set_nopar:Npn \SIUnitSymbolAngstrom { \AA } + \cs_set_nopar:Npn \SIUnitSymbolArcminute { ' } + \cs_set_nopar:Npn \SIUnitSymbolArcsecond { '' } + \cs_set_nopar:Npn \SIUnitSymbolCelsius { \textcelsius } + \cs_set_nopar:Npn \SIUnitSymbolDegree { \textdegree } + \cs_set_nopar:Npn \SIUnitSymbolMicro { \textmu } + \cs_set_nopar:Npn \SIUnitSymbolOhm { [ohm] } + } \DeclareExpandableDocumentCommand \siunitx_bookmark_num:w { o m } {#2} \DeclareExpandableDocumentCommand \siunitx_bookmark_numrange:w { o m m } { #2 \l_siunitx_range_phrase_tl #3 } @@ -7039,7 +7161,7 @@ \DeclareSIUnit \dalton { Da } \group_begin: \char_set_lccode:nn { `\@ } { `\_ } - \char_make_math_subscript:N \@ + \char_set_catcode_math_subscript:N \@ \tl_to_lowercase:n { \group_end: \DeclareSIUnit \clight { \text { \ensuremath { c @ { 0 } } } } @@ -7051,7 +7173,7 @@ \group_begin: \char_set_lccode:nn { `\@ } { `\_ } \char_set_lccode:nn { `\E } { `\E } - \char_make_math_subscript:N \@ + \char_set_catcode_math_subscript:N \@ \tl_to_lowercase:n { \group_end: \DeclareSIUnit \bohr { \text { \ensuremath { a @ { 0 } } } } @@ -7077,6 +7199,7 @@ \keys_set:nn { siunitx } { bracket-numbers = true, + detect-family = false, detect-mode = false, detect-shape = false, detect-weight = false, @@ -7088,6 +7211,7 @@ \siunitx_strict_option:n { bracket-numbers , + detect-family , detect-italic , detect-mode , detect-shape , @@ -7169,32 +7293,64 @@ { ~ \translate { to~(numerical~range) } ~ }, } } +\tl_const:Nn \c_siunitx_configuration_ext_tl { cfg } +\keys_define:nn { siunitx } + { + abbreviations .choice:, + abbreviations / + true .code:n = { \siunitx_load_abbreviations: }, + abbreviations / + false .code:n = + { \cs_set_eq:NN \siunitx_load_abbreviations: \prg_do_nothing: } , + abbreviations .default:n = true , + binary-units .choice:, + binary-units / + true .code:n = { \siunitx_load_binary: }, + binary-units / + false .code:n = { } , + binary-units .default:n = true + } +\cs_new_protected_nopar:Npn \siunitx_load_abbreviations: + { + \@onefilewithoptions { siunitx-abbreviations } [ ] [ ] + \c_siunitx_configuration_ext_tl + } +\cs_new_protected_nopar:Npn \siunitx_load_binary: + { + \@onefilewithoptions { siunitx-binary } [ ] [ ] + \c_siunitx_configuration_ext_tl + } +\AtBeginDocument + { + \siunitx_load_abbreviations: + \siunitx_load_binary: + } +\siunitx_option_deactivate:n { abbreviations , binary } +\keys_define:nn { siunitx } + { + version-1-compatibility .choice: , + version-1-compatibility / + true .code:n = + { + \@onefilewithoptions { siunitx-version-1 } [ ] [ ] + \c_siunitx_configuration_ext_tl + }, + version-1-compatibility / + false .code:n = { } , + version-1-compatibility .default:n = true + } +\siunitx_option_deactivate:n { version-1-compatibility } \keys_define:nn { siunitx } { load-configurations .code:n = - { \siunitx_load_configuration:n {#1} } -} -\cs_new_protected:Npn \siunitx_load_configuration:n #1 { - \tl_set_rescan:Nnn \l_siunitx_tmpa_tl - { \char_make_ignore:N \ } {#1} - \clist_map_function:NN \l_siunitx_tmpa_tl - \siunitx_load_configuration_aux:n -} -\cs_new_protected:Npn \siunitx_load_configuration_aux:n #1 { - \tl_if_empty:nF {#1} { - \file_if_exist:nTF - { siunitx- #1 . \c_siunitx_configuration_ext_tl } - { - \@onefilewithoptions { siunitx- #1 } [ ] [ ] - \c_siunitx_configuration_ext_tl - } + \clist_if_in:nnT {#1} { version-1 } { - \msg_error:nnx { siunitx } { unknown-configuration-file } {#1} + \@onefilewithoptions { siunitx-version-1 } [ ] [ ] + \c_siunitx_configuration_ext_tl } } } -\tl_new:N \c_siunitx_configuration_ext_tl -\tl_set:Nn \c_siunitx_configuration_ext_tl { cfg } +\siunitx_option_deactivate:n { load-configurations } \file_if_exist:nT { siunitx . \c_siunitx_configuration_ext_tl } { \@onefilewithoptions { siunitx } [ ] [ ] @@ -7209,6 +7365,7 @@ %% this license or (at your option) any later version. The latest %% version of this license is in the file: %% http://www.latex-project.org/lppl.txt +%% %% This work is "maintained" (as per LPPL maintenance status) by %% Joseph Wright. %% @@ -7216,6 +7373,5 @@ %% and the derived files siunitx.pdf, %% siunitx.sty and %% siunitx.ins. -%% %% %% End of file `siunitx.sty'. |