summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/siunitx/siunitx.sty
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2011-07-29 14:12:43 +0000
committerKarl Berry <karl@freefriends.org>2011-07-29 14:12:43 +0000
commit599299b8f3cffe1e3759d3f42e2c1425520eabce (patch)
tree181286547aca16ecca9300060e2859fd1175ca19 /Master/texmf-dist/tex/latex/siunitx/siunitx.sty
parent554b089e59c2631f8a6cbd760beabc02ea227ef7 (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.sty2486
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'.