summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2010-11-01 00:02:20 +0000
committerKarl Berry <karl@freefriends.org>2010-11-01 00:02:20 +0000
commit5f16bf7e779d75e8acf303b2d542b104eb8f83df (patch)
tree058702a1ed93a4d80e873666dfea22307b36415d /Master/texmf-dist/tex
parent0542243ac8be1fa821f15b496dcfa945b9c2acb3 (diff)
siunitx 2.1 (31oct10)
git-svn-id: svn://tug.org/texlive/trunk@20277 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex')
-rw-r--r--Master/texmf-dist/tex/latex/siunitx/config/siunitx-abbreviations.cfg2
-rw-r--r--Master/texmf-dist/tex/latex/siunitx/config/siunitx-binary.cfg2
-rw-r--r--Master/texmf-dist/tex/latex/siunitx/config/siunitx-version-1.cfg5
-rw-r--r--Master/texmf-dist/tex/latex/siunitx/siunitx.sty605
4 files changed, 527 insertions, 87 deletions
diff --git a/Master/texmf-dist/tex/latex/siunitx/config/siunitx-abbreviations.cfg b/Master/texmf-dist/tex/latex/siunitx/config/siunitx-abbreviations.cfg
index dd0cdc46abc..369783744d3 100644
--- a/Master/texmf-dist/tex/latex/siunitx/config/siunitx-abbreviations.cfg
+++ b/Master/texmf-dist/tex/latex/siunitx/config/siunitx-abbreviations.cfg
@@ -73,7 +73,7 @@
\DeclareSIUnit \cm { \centi \metre }
\DeclareSIUnit \dm { \deci \metre }
\DeclareSIUnit \km { \kilo \metre }
-\DeclareSIUnit \k { \kelvin }
+\DeclareSIUnit \K { \kelvin }
\DeclareSIUnit \N { \newton }
\DeclareSIUnit \mN { \milli \newton }
\DeclareSIUnit \kN { \kilo \newton }
diff --git a/Master/texmf-dist/tex/latex/siunitx/config/siunitx-binary.cfg b/Master/texmf-dist/tex/latex/siunitx/config/siunitx-binary.cfg
index 503ec10cef0..06828426a32 100644
--- a/Master/texmf-dist/tex/latex/siunitx/config/siunitx-binary.cfg
+++ b/Master/texmf-dist/tex/latex/siunitx/config/siunitx-binary.cfg
@@ -13,7 +13,7 @@
%% See http://www.latex-project.org/lppl.txt
%% ---------------------------------------------------------------
%%
-\ProvidesExplFile {siunitx-binary.cfg} {2010/10/09} {2.0y}
+\ProvidesExplFile {siunitx-binary.cfg} {2010/10/27} {2.1}
{siunitx: Binary units}
\DeclareBinaryPrefix \kibi { Ki } { 10 }
\DeclareBinaryPrefix \mebi { Mi } { 20 }
diff --git a/Master/texmf-dist/tex/latex/siunitx/config/siunitx-version-1.cfg b/Master/texmf-dist/tex/latex/siunitx/config/siunitx-version-1.cfg
index b6139ad5bf0..6231a3024ca 100644
--- a/Master/texmf-dist/tex/latex/siunitx/config/siunitx-version-1.cfg
+++ b/Master/texmf-dist/tex/latex/siunitx/config/siunitx-version-1.cfg
@@ -13,7 +13,7 @@
%% See http://www.latex-project.org/lppl.txt
%% ---------------------------------------------------------------
%%
-\ProvidesExplFile {siunitx-version-1.cfg} {2010/10/09} {2.0y}
+\ProvidesExplFile {siunitx-version-1.cfg} {2010/10/27} {2.1}
{siunitx: Version 1 settings}
\keys_set:nn { siunitx }
{ load-configurations = { abbreviations , binary } }
@@ -423,9 +423,10 @@
{ \keys_set:nn { siunitx } { table-alignment = center } }
{ \keys_set:nn { siunitx } { table-alignment = #1 } }
},
- tabalignexp .code:n = ,
+ tabalignexp .code:n = { table-align-exponent = #1 },
tabautofit .meta:n = { table-auto-round = #1 },
tabautofit .default:n = { true },
+ tabexpalign .code:n = { table-align-exponent = #1 },
tabformat .meta:n = { table-format = #1 },
tabnumalign .code:n =
{
diff --git a/Master/texmf-dist/tex/latex/siunitx/siunitx.sty b/Master/texmf-dist/tex/latex/siunitx/siunitx.sty
index e6d41de20d5..35bc7ed9ae9 100644
--- a/Master/texmf-dist/tex/latex/siunitx/siunitx.sty
+++ b/Master/texmf-dist/tex/latex/siunitx/siunitx.sty
@@ -14,7 +14,7 @@
%% ---------------------------------------------------------------
%%
\RequirePackage{expl3}
-\ProvidesExplPackage {siunitx} {2010/10/09} {2.0y}
+\ProvidesExplPackage {siunitx} {2010/10/27} {2.1}
{A comprehensive (SI) units package}
\msg_set:nnnn { siunitx } { incompatible-package }
{ Package~'#1'~incompatible. }
@@ -182,6 +182,7 @@
\siunitx_tmp:w { tabalign }
\siunitx_tmp:w { tabalignexp }
\siunitx_tmp:w { tabautofit }
+\siunitx_tmp:w { tabexpalign }
\siunitx_tmp:w { tabformat }
\siunitx_tmp:w { tabnumalign }
\siunitx_tmp:w { tabparseonly }
@@ -496,9 +497,9 @@
}
\cs_new_protected_nopar:Npn \siunitx_detect_font_family_math: {
\tl_set:Nn \l_siunitx_font_family_tl { rm }
- \intexpr_compare:nNnT { \fam } = { \c_siunitx_mathsf_int }
+ \int_compare:nNnT { \fam } = { \c_siunitx_mathsf_int }
{ \tl_set:Nn \l_siunitx_font_family_tl { sf } }
- \intexpr_compare:nNnT { \fam } = { \c_siunitx_mathtt_int }
+ \int_compare:nNnT { \fam } = { \c_siunitx_mathtt_int }
{ \tl_set:Nn \l_siunitx_font_family_tl { tt } }
}
\cs_new_protected_nopar:Npn \siunitx_detect_font_family_text: {
@@ -845,6 +846,7 @@
\keys_define:nn { siunitx } {
input-close-uncertainty .tl_set:N = \l_siunitx_input_uncert_close_tl,
input-complex-roots .tl_set:N = \l_siunitx_input_complex_tl,
+ input-comparators .tl_set:N = \l_siunitx_input_comparator_tl,
input-decimal-markers .tl_set:N = \l_siunitx_input_decimal_tl,
input-digits .tl_set:N = \l_siunitx_input_digit_tl,
input-exponent-markers .tl_set:N = \l_siunitx_input_exponent_tl,
@@ -857,11 +859,12 @@
\keys_set:nn { siunitx } { % (
input-close-uncertainty = ),
input-complex-roots = ij,
+ input-comparators = {<=>\approx\ge\geq\gg\le\leq\ll\sim},
input-decimal-markers = {.,},
input-digits = 0123456789,
input-exponent-markers = dDeE,
input-open-uncertainty = (, % )
- input-protect-tokens = \mp\pi\pm,
+ input-protect-tokens = \approx\ge\geq\gg\le\leg\ll\mp\pi\pm\sim,
input-signs = +-\mp\pm,
input-symbols = \pi,
}
@@ -886,6 +889,7 @@
}
{#1}
\siunitx_number_in_sign_replace:N \l_siunitx_number_arg_tl
+ \siunitx_number_in_parse_relation:N \l_siunitx_number_arg_tl
\tl_map_function:NN \l_siunitx_number_arg_tl
\siunitx_number_in_parse_loop:N
\tl_if_empty:NF \l_siunitx_number_parsed_tl
@@ -947,6 +951,10 @@
\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 }
}
\cs_new_protected:Npn \siunitx_number_in_parse_error:nx #1#2 {
\siunitx_error:nx {#1} { \exp_not:n {#2} }
@@ -955,6 +963,17 @@
\cs_generate_variant:Nn \siunitx_number_in_parse_error:nx { nV }
\cs_new_protected:Npn \siunitx_number_in_parse_loop:N #1 { }
\cs_new_protected:Npn \siunitx_number_in_parse_more:N #1 { }
+\cs_new_protected:Npn \siunitx_number_in_parse_relation:N #1 {
+ \exp_after:wN \siunitx_number_in_parse_relation:w #1 \q_stop #1
+}
+\cs_new_protected:Npn \siunitx_number_in_parse_relation:w
+ #1#2 \q_stop #3 {
+ \tl_if_in:NnT \l_siunitx_input_comparator_tl {#1}
+ {
+ \prop_put:Nnn \l_siunitx_number_in_prop { comparator } {#1}
+ \tl_set:Nn #3 {#2}
+ }
+}
\cs_new_protected:Npn \siunitx_number_in_parse_restricted:N #1 {
\tl_if_in:NnTF \l_siunitx_input_exponent_tl {#1}
{
@@ -1423,15 +1442,21 @@
\int_new:N \l_siunitx_process_uncertainty_int
\tl_new:N \l_siunitx_uncertainty_decimal_tl
\tl_new:N \l_siunitx_uncertainty_integer_tl
+\bool_new:N \l_siunitx_process_fixed_bool
+\bool_new:N \l_siunitx_process_scientific_bool
\keys_define:nn { siunitx } {
add-decimal-zero .bool_set:N = \l_siunitx_process_decimal_zero_bool,
add-integer-zero .bool_set:N = \l_siunitx_process_integer_zero_bool,
explicit-sign .tl_set:N = \l_siunitx_process_sign_tl,
+ fixed-exponent .int_set:N = \l_siunitx_process_fixed_int,
retain-explicit-plus .bool_set:N = \l_siunitx_process_plus_tl,
retain-unity-mantissa .bool_set:N =
\l_siunitx_process_unity_mantissa_bool,
retain-zero-exponent .bool_set:N =
\l_siunitx_process_zero_exponent_bool,
+ round-integer-to-decimal .bool_set:N =
+ \l_siunitx_process_int_to_dec_bool,
+ round-minimum .tl_set:N = \l_siunitx_process_round_min_tl,
round-mode .choice: ,
round-mode / figures .code:n =
{ \tl_set:Nn \l_siunitx_round_tl { figures } },
@@ -1439,6 +1464,25 @@
round-mode / places .code:n =
{ \tl_set:Nn \l_siunitx_round_tl { places } },
round-precision .int_set:N = \l_siunitx_process_precision_int,
+ scientific-notation .choice: ,
+ scientific-notation
+ / false .code:n =
+ {
+ \bool_set_false:N \l_siunitx_process_fixed_bool
+ \bool_set_false:N \l_siunitx_process_scientific_bool
+ },
+ scientific-notation
+ / fixed .code:n =
+ {
+ \bool_set_true:N \l_siunitx_process_fixed_bool
+ \bool_set_false:N \l_siunitx_process_scientific_bool
+ },
+ scientific-notation
+ / true .code:n =
+ {
+ \bool_set_false:N \l_siunitx_process_fixed_bool
+ \bool_set_true:N \l_siunitx_process_scientific_bool
+ },
}
\keys_set:nn { siunitx } {
add-decimal-zero = true,
@@ -1453,6 +1497,12 @@
\prop_if_in:NnF \l_siunitx_number_in_prop { symbolic }
{
\siunitx_number_process_exponent:
+ \bool_if:NTF \l_siunitx_process_fixed_bool
+ { \siunitx_number_process_fixed: }
+ {
+ \bool_if:NT \l_siunitx_process_scientific_bool
+ { \siunitx_number_process_scientific: }
+ }
\siunitx_number_process_uncertainty:
\prop_if_in:NnF \l_siunitx_number_in_prop { uncertainty }
{ \siunitx_number_process_round: }
@@ -1483,7 +1533,7 @@
\l_siunitx_tmpa_tl
\quark_if_no_value:NF \l_siunitx_tmpa_tl
{
- \intexpr_compare:nNnF { \l_siunitx_tmpa_tl } = { 0 }
+ \int_compare:nNnF { \l_siunitx_tmpa_tl } = { 0 }
{ \bool_set_true:N \l_siunitx_tmp_bool }
}
}
@@ -1498,7 +1548,7 @@
\bool_if:NTF \l_siunitx_round_bool
{
\bool_set_false:N \l_siunitx_round_bool
- \intexpr_compare:nNnTF
+ \int_compare:nNnTF
{ \l_siunitx_round_int } >
{ \l_siunitx_process_precision_int }
{
@@ -1543,7 +1593,7 @@
\tl_put_left:cV { l_siunitx_round_ #1 _out_tl } \l_siunitx_tmp_int
\bool_if:NF \l_siunitx_round_bool
{
- \intexpr_compare:nNnF { \l_siunitx_tmp_int } = { 0 }
+ \int_compare:nNnF { \l_siunitx_tmp_int } = { 0 }
{ \bool_set_true:N \l_siunitx_round_bool }
}
\bool_if:NT \l_siunitx_round_bool
@@ -1582,22 +1632,22 @@
{ \siunitx_number_process_figures_round_loop: }
}
\cs_new_protected_nopar:Npn \siunitx_number_process_figures_integer: {
- \intexpr_compare:nNnT { \l_siunitx_round_int } > { 0 }
+ \int_compare:nNnT { \l_siunitx_round_int } > { 0 }
{ \tl_put_left:Nn \l_siunitx_round_integer_out_tl { 0 } }
- \intexpr_compare:nNnF { \l_siunitx_round_int } > { 1 }
+ \int_compare:nNnF { \l_siunitx_round_int } > { 1 }
{
\int_set:Nn \l_siunitx_tmp_int
{ \exp_args:NV \tl_head:n \l_siunitx_round_integer_in_tl }
\bool_if:NT \l_siunitx_round_bool
{ \int_incr:N \l_siunitx_tmp_int }
\bool_set_false:N \l_siunitx_round_bool
- \intexpr_compare:nNnTF { \l_siunitx_round_int } = { 1 }
+ \int_compare:nNnTF { \l_siunitx_round_int } = { 1 }
{
- \intexpr_compare:nNnT { \l_siunitx_tmp_int } > { 4 }
+ \int_compare:nNnT { \l_siunitx_tmp_int } > { 4 }
{ \bool_set_true:N \l_siunitx_round_bool }
}
{
- \intexpr_compare:nNnT { \l_siunitx_tmp_int } > { 10 }
+ \int_compare:nNnT { \l_siunitx_tmp_int } > { 10 }
{
\bool_set_true:N \l_siunitx_round_bool
\int_zero:N \l_siunitx_tmp_int
@@ -1621,6 +1671,130 @@
{ \l_siunitx_process_precision_int - \l_siunitx_round_int }
\siunitx_number_process_pad:n {#1}
}
+\cs_new_protected_nopar:Npn \siunitx_number_process_fixed: {
+ \prop_if_in:NnF \l_siunitx_number_in_prop { complex }
+ {
+ \prop_get:NnN \l_siunitx_number_in_prop { mantissa-integer }
+ \l_siunitx_tmpa_tl
+ \quark_if_no_value:NT \l_siunitx_tmpa_tl
+ { \tl_set:Nn \l_siunitx_tmpa_tl { 0 } }
+ \prop_get:NnN \l_siunitx_number_in_prop { mantissa-decimal }
+ \l_siunitx_tmpb_tl
+ \quark_if_no_value:NT \l_siunitx_tmpb_tl
+ { \tl_clear:N \l_siunitx_tmpb_tl }
+ \tl_set:Nx \l_siunitx_tmpa_tl
+ { { \l_siunitx_tmpa_tl } { \l_siunitx_tmpb_tl } }
+ \prop_get:NnN \l_siunitx_number_in_prop { exponent-integer }
+ \l_siunitx_tmpb_tl
+ \quark_if_no_value:NT \l_siunitx_tmpb_tl
+ { \tl_set:Nn \l_siunitx_tmpb_tl { 0 } }
+ \tl_set:Nx \l_siunitx_tmpa_tl
+ { \l_siunitx_tmpa_tl { \l_siunitx_tmpb_tl } }
+ \exp_after:wN \siunitx_number_process_fixed_aux_i:nnn
+ \l_siunitx_tmpa_tl
+ }
+}
+\cs_new_protected_nopar:Npn
+ \siunitx_number_process_fixed_aux_i:nnn #1#2#3 {
+ \prop_put:Nnn \l_siunitx_number_in_prop { exponent }
+ { true }
+ \prop_put:NnV \l_siunitx_number_in_prop
+ { exponent-integer } \l_siunitx_process_fixed_int
+ \int_compare:nNnF { #1 + 0 #2 } = { 0 }
+ { \siunitx_number_process_fixed_aux_ii:nnn {#1} {#2} {#3} }
+}
+\cs_new_protected_nopar:Npn
+ \siunitx_number_process_fixed_aux_ii:nnn #1#2#3 {
+ \int_compare:nNnTF {#3} > { \l_siunitx_process_fixed_int }
+ { \siunitx_number_process_fixed_large:nnn {#1} {#2} {#3} }
+ {
+ \int_compare:nNnTF {#3} < { \l_siunitx_process_fixed_int }
+ { \siunitx_number_process_fixed_small:nnn {#1} {#2} {#3} }
+ {
+ \prop_put:Nnn \l_siunitx_number_in_prop
+ { mantissa-integer } {#1}
+ \tl_if_empty:nTF {#2}
+ {
+ \prop_del:Nn \l_siunitx_number_in_prop
+ { mantissa-decimal }
+ \prop_del:Nn \l_siunitx_number_in_prop
+ { mantissa-decimal-marker }
+ }
+ {
+ \prop_put:Nnn \l_siunitx_number_in_prop
+ { mantissa-decimal } {#2}
+ \prop_if_in:NnF \l_siunitx_number_in_prop
+ { mantissa-decimal-marker }
+ {
+ \prop_put:Nnn \l_siunitx_number_in_prop
+ { mantissa-decimal-marker } { . }
+ }
+ }
+ }
+ }
+}
+\cs_new_protected_nopar:Npn
+ \siunitx_number_process_fixed_large:nnn #1#2#3 {
+ \cs_set_protected_nopar:Npn
+ \siunitx_number_process_fixed_large_aux:w ##1##2 \q_stop
+ {
+ \tl_if_empty:nTF {##2}
+ {
+ \int_compare:nNnTF
+ { #3 - 1 } = { \l_siunitx_process_fixed_int }
+ {
+ \siunitx_number_process_fixed_aux_ii:nnn { #1 ##1 }
+ { } { #3 - 1 }
+ }
+ {
+ \siunitx_number_process_fixed_aux_ii:nnn { #1 ##1 }
+ { 0 } { #3 - 1 }
+ }
+ }
+ {
+ \int_compare:nNnTF {#1} = { 0 }
+ {
+ \siunitx_number_process_fixed_aux_ii:nnn {##1} {##2}
+ { #3 - 1 }
+ }
+ {
+ \siunitx_number_process_fixed_aux_ii:nnn { #1 ##1 }
+ {##2} { #3 - 1 }
+ }
+ }
+ }
+ \tl_if_empty:nTF {#2}
+ { \siunitx_number_process_fixed_aux_ii:nnn { #1 0 } { } { #3 - 1 } }
+ { \siunitx_number_process_fixed_large_aux:w #2 \q_stop }
+}
+\cs_new_protected_nopar:Npn \siunitx_number_process_fixed_large_aux:w
+ { }
+\cs_new_protected_nopar:Npn
+ \siunitx_number_process_fixed_small:nnn #1#2#3 {
+ \cs_set_protected_nopar:Npn
+ \siunitx_number_process_fixed_small_aux:w ##1##2 \q_stop ##3
+ {
+ \tl_if_empty:nTF {##2}
+ {
+ \tl_if_empty:nTF {##3}
+ {
+ \siunitx_number_process_fixed_aux_ii:nnn { 0 }
+ { ##1 #2 } { #3 + 1 }
+ }
+ {
+ \siunitx_number_process_fixed_aux_ii:nnn {##3}
+ { ##1 #2 } { #3 + 1 }
+ }
+ }
+ {
+ \siunitx_number_process_fixed_small_aux:w ##2 \q_stop
+ { ##3 ##1 }
+ }
+ }
+ \siunitx_number_process_fixed_small_aux:w #1 \q_stop { }
+}
+\cs_new_protected_nopar:Npn \siunitx_number_process_fixed_small_aux:w
+ { }
\tl_new:N \c_siunitx_unity_tl
\tl_set:Nn \c_siunitx_unity_tl { 1 }
\cs_new_protected_nopar:Npn \siunitx_number_process_mantissa: {
@@ -1652,7 +1826,7 @@
\l_siunitx_tmpa_tl
\quark_if_no_value:NF \l_siunitx_tmpa_tl
{
- \intexpr_while_do:nNnn { \l_siunitx_round_int } > { 0 }
+ \int_while_do:nNnn { \l_siunitx_round_int } > { 0 }
{
\tl_put_right:Nn \l_siunitx_tmpa_tl { 0 }
\int_decr:N \l_siunitx_round_int
@@ -1669,13 +1843,13 @@
}
}
\cs_new_protected_nopar:Npn \siunitx_number_process_places_aux_i:n #1 {
- \intexpr_compare:nNnTF { \l_siunitx_process_precision_int } = { 0 }
+ \int_compare:nNnTF { \l_siunitx_process_precision_int } = { 0 }
{
\prop_get:NnN \l_siunitx_number_in_prop { #1 -decimal }
\l_siunitx_tmpa_tl
\quark_if_no_value:NF \l_siunitx_tmpa_tl
{
- \intexpr_compare:nNnT
+ \int_compare:nNnT
{ \exp_args:NV \tl_head:n \l_siunitx_tmpa_tl } > { 4 }
{
\prop_get:NnN \l_siunitx_number_in_prop { #1 -integer }
@@ -1687,7 +1861,7 @@
}
{
\tl_set:Nx \l_siunitx_tmpa_tl
- { \intexpr_eval:n { \l_siunitx_tmpa_tl + 1 } }
+ { \int_eval:n { \l_siunitx_tmpa_tl + 1 } }
\prop_put:NnV \l_siunitx_number_in_prop
{ #1 -integer } \l_siunitx_tmpa_tl
}
@@ -1703,7 +1877,7 @@
{
\tl_if_empty:NT \l_siunitx_tmpa_tl
{ \tl_set:Nn \l_siunitx_tmpa_tl { 0 } }
- \intexpr_compare:nNnTF { \l_siunitx_tmpa_tl } = { 0 }
+ \int_compare:nNnTF { \l_siunitx_tmpa_tl } = { 0 }
{
\prop_put:Nnn \l_siunitx_number_in_prop { #1 -decimal }
{ }
@@ -1723,7 +1897,7 @@
\siunitx_number_process_places_aux_ii:n #1 {
\int_sub:Nn \l_siunitx_round_int
{ \l_siunitx_process_precision_int }
- \intexpr_compare:nNnTF { \l_siunitx_round_int } < { 0 }
+ \int_compare:nNnTF { \l_siunitx_round_int } < { 0 }
{
\int_set:Nn \l_siunitx_round_int { - \l_siunitx_round_int }
\siunitx_number_process_pad:n {#1}
@@ -1775,7 +1949,7 @@
\bool_if:NT \l_siunitx_round_bool
{ \int_incr:N \l_siunitx_tmp_int }
\bool_set_false:N \l_siunitx_round_bool
- \intexpr_compare:nNnT { \l_siunitx_tmp_int } = { 10 }
+ \int_compare:nNnT { \l_siunitx_tmp_int } = { 10 }
{
\int_zero:N \l_siunitx_tmp_int
\bool_set_true:N \l_siunitx_round_bool
@@ -1785,6 +1959,21 @@
\cs_new_protected_nopar:Npn \siunitx_number_process_round: {
\tl_if_empty:NF \l_siunitx_round_tl
{
+ \bool_if:NT \l_siunitx_process_int_to_dec_bool
+ {
+ \prop_if_in:NnF \l_siunitx_number_in_prop
+ { mantissa-decimal }
+ {
+ \prop_put:Nnn \l_siunitx_number_in_prop
+ { mantissa-decimal } { 0 }
+ }
+ \prop_if_in:NnF \l_siunitx_number_in_prop
+ { mantissa-decimal-marker }
+ {
+ \prop_put:Nnn \l_siunitx_number_in_prop
+ { mantissa-decimal-marker } { . }
+ }
+ }
\cs_set_nopar:Npx \siunitx_tmp:w
{
\exp_not:N \clist_map_function:nN
@@ -1796,7 +1985,7 @@
}
}
\cs_new_protected_nopar:Npn \siunitx_number_process_round_decimal: {
- \intexpr_compare:nNnF { \l_siunitx_round_int } > { 1 }
+ \int_compare:nNnF { \l_siunitx_round_int } > { 1 }
{ \siunitx_number_process_round_decimal_aux: }
\tl_set:Nx \l_siunitx_round_decimal_in_tl
{ \exp_args:NV \tl_tail:n \l_siunitx_round_decimal_in_tl }
@@ -1809,13 +1998,13 @@
\bool_if:NT \l_siunitx_round_bool
{ \int_incr:N \l_siunitx_tmp_int }
\bool_set_false:N \l_siunitx_round_bool
- \intexpr_compare:nNnTF { \l_siunitx_round_int } = { 1 }
+ \int_compare:nNnTF { \l_siunitx_round_int } = { 1 }
{
- \intexpr_compare:nNnT { \l_siunitx_tmp_int } > { 4 }
+ \int_compare:nNnT { \l_siunitx_tmp_int } > { 4 }
{ \bool_set_true:N \l_siunitx_round_bool }
}
{
- \intexpr_compare:nNnT { \l_siunitx_tmp_int } = { 10 }
+ \int_compare:nNnT { \l_siunitx_tmp_int } = { 10 }
{
\bool_set_true:N \l_siunitx_round_bool
\int_zero:N \l_siunitx_tmp_int
@@ -1825,10 +2014,132 @@
}
}
\cs_new_protected_nopar:Npn \siunitx_number_process_round_tidy:n #1 {
- \prop_put:NnV \l_siunitx_number_in_prop { #1 -integer }
- \l_siunitx_round_integer_out_tl
- \prop_put:NnV \l_siunitx_number_in_prop { #1 -decimal }
- \l_siunitx_round_decimal_out_tl
+ \int_compare:nNnTF
+ {
+ 0 \l_siunitx_round_integer_out_tl +
+ 0 \l_siunitx_round_decimal_out_tl
+ }
+ = { 0 }
+ {
+ \fp_compare:nNnTF { \l_siunitx_process_round_min_tl } = { 0 }
+ {
+ \prop_put:Nnn \l_siunitx_number_in_prop { #1 -integer } { 0 }
+ \prop_put:NnV \l_siunitx_number_in_prop { #1 -decimal }
+ \l_siunitx_round_decimal_out_tl
+ }
+ {
+ \exp_last_unbraced:NV \siunitx_number_process_round_tidy_aux:w
+ \l_siunitx_process_round_min_tl . . \q_stop {#1}
+ }
+ }
+ {
+ \prop_put:NnV \l_siunitx_number_in_prop { #1 -integer }
+ \l_siunitx_round_integer_out_tl
+ \tl_if_empty:NTF \l_siunitx_round_decimal_out_tl
+ {
+ \prop_del:Nn \l_siunitx_number_in_prop { #1 -decimal }
+ \prop_del:Nn \l_siunitx_number_in_prop { #1 -decimal-marker }
+ }
+ {
+ \prop_put:NnV \l_siunitx_number_in_prop { #1 -decimal }
+ \l_siunitx_round_decimal_out_tl
+ }
+ }
+}
+\cs_new_protected_nopar:Npn
+ \siunitx_number_process_round_tidy_aux:w #1 . #2 . #3 \q_stop #4 {
+ \prop_put:Nnn \l_siunitx_number_in_prop { comparator } { < }
+ \prop_put:Nnn \l_siunitx_number_in_prop { #4 -integer } {#1}
+ \tl_if_empty:nTF {#2}
+ { \prop_del:Nn \l_siunitx_number_in_prop { #4 -decimal } }
+ { \prop_put:Nnn \l_siunitx_number_in_prop { #4 -decimal } {#2} }
+}
+\cs_new_protected_nopar:Npn \siunitx_number_process_scientific: {
+ \prop_if_in:NnF \l_siunitx_number_in_prop { complex }
+ {
+ \prop_get:NnN \l_siunitx_number_in_prop { mantissa-integer }
+ \l_siunitx_tmpa_tl
+ \quark_if_no_value:NT \l_siunitx_tmpa_tl
+ { \tl_set:Nn \l_siunitx_tmpa_tl { 0 } }
+ \prop_get:NnN \l_siunitx_number_in_prop { mantissa-decimal }
+ \l_siunitx_tmpb_tl
+ \quark_if_no_value:NT \l_siunitx_tmpb_tl
+ { \tl_clear:N \l_siunitx_tmpb_tl }
+ \tl_set:Nx \l_siunitx_tmpa_tl
+ { { \l_siunitx_tmpa_tl } { \l_siunitx_tmpb_tl } }
+ \prop_get:NnN \l_siunitx_number_in_prop { exponent-integer }
+ \l_siunitx_tmpb_tl
+ \quark_if_no_value:NT \l_siunitx_tmpb_tl
+ { \tl_set:Nn \l_siunitx_tmpb_tl { 0 } }
+ \tl_set:Nx \l_siunitx_tmpa_tl
+ { \l_siunitx_tmpa_tl { \l_siunitx_tmpb_tl } }
+ \exp_after:wN \siunitx_number_process_scientific_aux_i:nnn
+ \l_siunitx_tmpa_tl
+ }
+}
+\cs_new_protected_nopar:Npn
+ \siunitx_number_process_scientific_aux_i:nnn #1#2#3 {
+ \int_compare:nNnF { #1 + 0 #2 } = { 0 }
+ { \siunitx_number_process_scientific_aux_ii:nnn {#1} {#2} {#3} }
+}
+\cs_new_protected_nopar:Npn
+ \siunitx_number_process_scientific_aux_ii:nnn #1#2#3 {
+ \int_compare:nNnTF {#1} > { 9 }
+ { \siunitx_number_process_scientific_large:nnn {#1} {#2} {#3} }
+ {
+ \int_compare:nNnTF {#1} > { 0 }
+ {
+ \prop_put:Nnn \l_siunitx_number_in_prop
+ { mantissa-integer } {#1}
+
+ \tl_if_empty:nTF {#2}
+ {
+ \prop_del:Nn \l_siunitx_number_in_prop
+ { mantissa-decimal }
+ \prop_del:Nn \l_siunitx_number_in_prop
+ { mantissa-decimal-marker }
+ }
+ {
+ \prop_put:Nnn \l_siunitx_number_in_prop
+ { mantissa-decimal } {#2}
+ \prop_if_in:NnF \l_siunitx_number_in_prop
+ { mantissa-decimal-marker }
+ {
+ \prop_put:Nnn \l_siunitx_number_in_prop
+ { mantissa-decimal-marker } { . }
+ }
+ }
+ \int_compare:nNnF {#3} = { 0 }
+ {
+ \int_set:Nn \l_siunitx_tmp_int {#3}
+ \prop_put:Nnn \l_siunitx_number_in_prop { exponent }
+ { true }
+ \prop_put:NnV \l_siunitx_number_in_prop
+ { exponent-integer } \l_siunitx_tmp_int
+ }
+ }
+ {
+ \siunitx_number_process_scientific_small:wn
+ #2 \q_stop {#3}
+ }
+ }
+}
+\cs_new_protected_nopar:Npn
+ \siunitx_number_process_scientific_large:nnn #1#2#3 {
+ \int_set:Nn \l_siunitx_tmp_int { \int_div_truncate:nn {#1} { 10 } }
+ \tl_set:Nx \l_siunitx_tmpa_tl { \int_use:N \l_siunitx_tmp_int }
+ \int_set:Nn \l_siunitx_tmp_int { #1 - 10 * \l_siunitx_tmp_int }
+ \tl_set:Nx \l_siunitx_tmpa_tl
+ {
+ { \l_siunitx_tmpa_tl } { \int_use:N \l_siunitx_tmp_int #2 }
+ { #3 + 1 }
+ }
+ \exp_last_unbraced:NV \siunitx_number_process_scientific_aux_ii:nnn
+ \l_siunitx_tmpa_tl
+}
+\cs_new_protected_nopar:Npn
+ \siunitx_number_process_scientific_small:wn #1#2 \q_stop #3 {
+ \siunitx_number_process_scientific_aux_ii:nnn {#1} {#2} { #3 - 1 }
}
\cs_new_protected_nopar:Npn \siunitx_number_process_sign: {
\bool_if:NF \l_siunitx_process_plus_tl
@@ -1906,7 +2217,7 @@
\siunitx_number_process_uncertainty_count:nn {#1} { uncertainty }
\tl_clear:N \l_siunitx_uncertainty_decimal_tl
\tl_clear:N \l_siunitx_uncertainty_integer_tl
- \intexpr_compare:nNnTF
+ \int_compare:nNnTF
{ \l_siunitx_process_uncertainty_int } >
{ \l_siunitx_process_decimal_int }
{ \siunitx_number_process_uncertainty_separate: }
@@ -1932,7 +2243,7 @@
{ \tl_elt_count:N \l_siunitx_tmpa_tl }
}
\cs_new_protected_nopar:Npn \siunitx_number_process_uncertainty_pad: {
- \intexpr_while_do:nNnn
+ \int_while_do:nNnn
{ \l_siunitx_process_uncertainty_int } <
{ \l_siunitx_process_decimal_int }
{
@@ -1949,7 +2260,7 @@
}
\cs_new_protected:Npn
\siunitx_number_process_uncertainty_separate_aux:N #1 {
- \intexpr_compare:nNnTF
+ \int_compare:nNnTF
{ \l_siunitx_process_uncertainty_int } >
{ \l_siunitx_process_decimal_int }
{ \tl_put_right:Nn \l_siunitx_uncertainty_integer_tl {#1} }
@@ -1997,6 +2308,8 @@
complex-root-position
/ before-number .code:n =
{ \bool_set_false:N \l_siunitx_complex_after_bool } ,
+ copy-complex-root .bool_set:N =
+ \l_siunitx_output_complex_copy_bool,
copy-decimal-marker .bool_set:N =
\l_siunitx_output_decimal_copy_bool,
exponent-base .tl_set:N = \l_siunitx_exponent_base_tl,
@@ -2020,17 +2333,7 @@
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 .code:n =
- {
- \tl_set:Nn \l_siunitx_output_complex_tl
- {
- \use:c
- {
- siunitx_ \l_siunitx_print_type_tl _
- math \l_siunitx_font_family_tl :n
- } {#1}
- }
- },
+ 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} }
@@ -2065,6 +2368,7 @@
\siunitx_number_format_complex:
\siunitx_number_format_sign:n { mantissa }
\siunitx_number_format_sign:n { exponent }
+ \siunitx_number_format_relation:
\siunitx_number_format_color:
\siunitx_number_format_final:
}
@@ -2134,27 +2438,48 @@
\tl_set:Nx \l_siunitx_tmpa_tl
{
\exp_not:N \siunitx_ensuremath:n
- { \exp_not:V \l_siunitx_output_complex_tl }
+ { \exp_not:V \l_siunitx_tmpa_tl }
}
\prop_put:NnV \l_siunitx_number_out_prop { complex }
\l_siunitx_tmpa_tl
}
-
\siunitx_number_format_join_complex:
}
}
\cs_new_protected_nopar:Npn \siunitx_number_format_complex_aux:n #1 {
- \prop_get:NnN \l_siunitx_number_out_prop {#1} \l_siunitx_tmpa_tl
+ \siunitx_number_format_complex_aux:
+ \prop_get:NnN \l_siunitx_number_out_prop {#1} \l_siunitx_tmpb_tl
\bool_if:NTF \l_siunitx_complex_after_bool
{
- \siunitx_tl_put_right_math:NV \l_siunitx_tmpa_tl
- \l_siunitx_output_complex_tl
+ \siunitx_tl_put_right_math:NV \l_siunitx_tmpb_tl
+ \l_siunitx_tmpa_tl
}
{
- \siunitx_tl_put_left_math:NV \l_siunitx_tmpa_tl
- \l_siunitx_output_complex_tl
+ \siunitx_tl_put_left_math:NV \l_siunitx_tmpb_tl
+ \l_siunitx_tmpa_tl
+ }
+ \prop_put:NnV \l_siunitx_number_out_prop {#1} \l_siunitx_tmpb_tl
+}
+\cs_new_protected_nopar:Npn \siunitx_number_format_complex_aux: {
+ \tl_set:Nn \l_siunitx_tmpa_tl
+ {
+ \use:c
+ {
+ siunitx_ \l_siunitx_print_type_tl _
+ math \l_siunitx_font_family_tl :n
+ }
+ }
+ \bool_if:NTF \l_siunitx_output_complex_copy_bool
+ {
+ \prop_get:NnN \l_siunitx_number_in_prop { complex-root }
+ \l_siunitx_tmpb_tl
+ \tl_put_right:Nx \l_siunitx_tmpa_tl
+ { { \exp_not:V \l_siunitx_tmpb_tl } }
+ }
+ {
+ \tl_put_right:Nx \l_siunitx_tmpa_tl
+ { { \exp_not:V \l_siunitx_output_complex_tl } }
}
- \prop_put:NnV \l_siunitx_number_out_prop {#1} \l_siunitx_tmpa_tl
}
\cs_new_protected_nopar:Npn \siunitx_number_format_copy:n #1 {
\prop_get:NnN \l_siunitx_number_in_prop {#1} \l_siunitx_tmpa_tl
@@ -2187,6 +2512,17 @@
{ true }
\prop_del:Nn \l_siunitx_number_out_prop { mantissa-bracket }
}
+ \prop_if_in:NnT \l_siunitx_number_out_prop { comparator }
+ {
+ \siunitx_number_format_brackets:n { result }
+ \prop_get:NnN \l_siunitx_number_out_prop { comparator }
+ \l_siunitx_tmpa_tl
+ \prop_get:NnN \l_siunitx_number_out_prop { result }
+ \l_siunitx_tmpb_tl
+ \tl_put_right:No \l_siunitx_tmpa_tl { \l_siunitx_tmpb_tl }
+ \prop_put:NnV \l_siunitx_number_out_prop { result }
+ \l_siunitx_tmpa_tl
+ }
}
\cs_new_protected_nopar:Npn \siunitx_number_format_final_combined: {
\siunitx_number_format_brackets:n { mantissa }
@@ -2448,6 +2784,20 @@
\prop_if_in:NnT \l_siunitx_number_in_prop { exponent }
{ \siunitx_number_format_group:n { exponent } }
}
+\cs_new_protected_nopar:Npn \siunitx_number_format_relation: {
+ \prop_get:NnN \l_siunitx_number_in_prop { comparator }
+ \l_siunitx_tmpa_tl
+ \quark_if_no_value:NF \l_siunitx_tmpa_tl
+ {
+ \tl_set:Nx \l_siunitx_tmpa_tl
+ {
+ \exp_not:N \ensuremath
+ { { \exp_not:V \l_siunitx_tmpa_tl } }
+ }
+ \prop_put:NnV \l_siunitx_number_out_prop { comparator }
+ \l_siunitx_tmpa_tl
+ }
+}
\cs_new_protected_nopar:Npn \siunitx_number_format_sign:n #1 {
\prop_if_in:NnT \l_siunitx_number_out_prop {#1}
{
@@ -3480,7 +3830,7 @@
}
\cs_new_protected:Npn \siunitx_unit_parse_power_before:n #1 {
\tl_set:Nx \l_siunitx_tmpa_tl
- { power- \intexpr_eval:n { \l_siunitx_unit_int + 1 } }
+ { power- \int_eval:n { \l_siunitx_unit_int + 1 } }
\prop_put:NVn \l_siunitx_unit_prop \l_siunitx_tmpa_tl {#1}
}
\cs_new_protected:Npn \siunitx_unit_parse_power_after:n #1 {
@@ -3502,7 +3852,7 @@
}
\cs_new_protected_nopar:Npn \siunitx_unit_parse_per: {
\tl_set:Nx \l_siunitx_tmpa_tl
- { per- \intexpr_eval:n { \l_siunitx_unit_int + 1 } }
+ { per- \int_eval:n { \l_siunitx_unit_int + 1 } }
\prop_put:NVn \l_siunitx_unit_prop \l_siunitx_tmpa_tl { true }
\bool_if:NT \l_siunitx_sticky_per_bool
{ \cs_set_eq:NN \per \siunitx_unit_parse_per_error: }
@@ -3565,6 +3915,7 @@
\bool_new:N \l_siunitx_per_auto_bool
\bool_new:N \l_siunitx_per_fraction_bool
\tl_new:N \l_siunitx_per_mode_tl
+\bool_new:N \l_siunitx_power_number_bool
\bool_new:N \l_siunitx_two_parts_bool
\tl_new:N \l_siunitx_qualifier_mode_tl
\keys_define:nn { siunitx } {
@@ -3617,6 +3968,11 @@
\bool_set_true:N \l_siunitx_per_two_parts_bool
},
per-symbol .tl_set:N = \l_siunitx_per_symbol_tl,
+ power-font .choice:,
+ power-font / number .code:n =
+ { \bool_set_true:N \l_siunitx_power_number_bool },
+ power-font / unit .code:n =
+ { \bool_set_false:N \l_siunitx_power_number_bool },
qualifier-mode .choice:,
qualifier-mode / brackets .code:n =
{ \tl_set:Nn \l_siunitx_qualifier_mode_tl { brackets } },
@@ -3630,11 +3986,12 @@
inter-unit-separator = \,,
per-mode = reciprocal,
per-symbol = /,
+ power-font = number,
qualifier-mode = subscript
}
\cs_new_protected_nopar:Npn \siunitx_unit_format: {
\siunitx_unit_format_init:
- \intexpr_compare:nNnT { \l_siunitx_unit_int } = { 1 }
+ \int_compare:nNnT { \l_siunitx_unit_int } = { 1 }
{
\str_if_eq:VnT \l_siunitx_per_mode_tl { symbol }
{
@@ -3642,7 +3999,7 @@
{ \tl_clear:N \l_siunitx_number_unit_separator_tl }
}
}
- \intexpr_while_do:nNnn { \l_siunitx_unit_int } > { 0 }
+ \int_while_do:nNnn { \l_siunitx_unit_int } > { 0 }
{
\siunitx_unit_format_prefix:
\siunitx_unit_format_symbol:
@@ -3682,7 +4039,7 @@
\str_if_eq:nVTF { repeat } \l_siunitx_per_mode_tl
{
\tl_set:Nx \l_siunitx_tmpa_tl
- { per- \intexpr_eval:n { \l_siunitx_unit_int + 1 } }
+ { per- \int_eval:n { \l_siunitx_unit_int + 1 } }
\prop_if_in:NVF \l_siunitx_unit_prop \l_siunitx_tmpa_tl
{
\siunitx_tl_put_right_math:NV \l_siunitx_unit_current_tl
@@ -3697,7 +4054,7 @@
\tl_put_left:cV { l_siunitx_unit #1 _tl } \l_siunitx_unit_current_tl
}
\cs_new_protected_nopar:Npn \siunitx_unit_format_fraction: {
- \intexpr_compare:nNnTF { \l_siunitx_unit_denominator_int } > { 0 }
+ \int_compare:nNnTF { \l_siunitx_unit_denominator_int } > { 0 }
{
\use:c
{ siunitx_unit_format_fraction_ \l_siunitx_per_mode_tl : }
@@ -3727,7 +4084,7 @@
}
\cs_new_protected_nopar:Npn \siunitx_unit_format_fraction_symbol: {
\siunitx_unit_format_fraction_symbol_aux:
- \intexpr_compare:nNnT { \l_siunitx_unit_denominator_int } > { 1 }
+ \int_compare:nNnT { \l_siunitx_unit_denominator_int } > { 1 }
{
\bool_if:NT \l_siunitx_unit_denominator_bracket_bool
{
@@ -3853,13 +4210,18 @@
}
}
\cs_new_protected:Npn \siunitx_unit_format_power_aux:n #1 {
- \bool_if:NTF \l_siunitx_number_math_mode_bool
- { \siunitx_print:nn { number } {#1} }
+ \bool_if:NTF \l_siunitx_power_number_bool
+ { \siunitx_unit_format_power_aux:nn { number } {#1} }
+ { \siunitx_unit_format_power_aux:nn { unit } {#1} }
+}
+\cs_new_protected:Npn \siunitx_unit_format_power_aux:nn #1#2 {
+ \bool_if:cTF { l_siunitx_ #1 _math_mode_bool }
+ { \siunitx_print:nn {#1} {#2} }
{
- \tl_set:Nn \l_siunitx_tmpa_tl {#1}
+ \tl_set:Nn \l_siunitx_tmpa_tl {#2}
\tl_replace_all_in:Nnn \l_siunitx_tmpa_tl { - }
{ \text { \c_siunitx_minus_tl } }
- \siunitx_print:nV { number } \l_siunitx_tmpa_tl
+ \siunitx_print:nV {#1} \l_siunitx_tmpa_tl
}
}
\cs_new_protected_nopar:Npn \siunitx_unit_format_power_brackets: {
@@ -3916,12 +4278,12 @@
{ prefix-base- \int_use:N \l_siunitx_unit_int }
\prop_get:NVN \l_siunitx_unit_prop \l_siunitx_tmpa_tl
\l_siunitx_tmpa_tl
- \intexpr_compare:nNnT { \l_siunitx_unit_prefix_base_int } = { 0 }
+ \int_compare:nNnT { \l_siunitx_unit_prefix_base_int } = { 0 }
{
\int_set:Nn \l_siunitx_unit_prefix_base_int
{ \l_siunitx_tmpa_tl }
}
- \intexpr_compare:nNnTF
+ \int_compare:nNnTF
{ \l_siunitx_unit_prefix_base_int } = { \l_siunitx_tmpa_tl }
{ \siunitx_unit_format_prefix_number_calc: }
{ \msg_error:nn { siunitx } { prefix-base-mismatch } }
@@ -3940,14 +4302,14 @@
\str_if_eq:nVT { \gram } \l_siunitx_tmpb_tl
{
\tl_set:Nx \l_siunitx_unit_prefix_current_tl
- { \intexpr_eval:n { \l_siunitx_unit_prefix_current_tl - 3 } }
+ { \int_eval:n { \l_siunitx_unit_prefix_current_tl - 3 } }
\tl_set:Nx \l_siunitx_tmpb_tl
{ symbol- \int_use:N \l_siunitx_unit_int }
\prop_put:NVn \l_siunitx_unit_prop \l_siunitx_tmpb_tl { kg }
}
\tl_set:Nx \l_siunitx_unit_prefix_current_tl
{
- \intexpr_eval:n
+ \int_eval:n
{ \l_siunitx_unit_prefix_current_tl * \l_siunitx_tmpa_tl }
}
\tl_set:Nx \l_siunitx_tmpa_tl
@@ -4040,7 +4402,7 @@
\msg_error:nn { siunitx } { prefix-only }
}
\cs_new_protected_nopar:Npn \siunitx_unit_format_symbol_aux_alt: {
- \intexpr_compare:nNnTF { \l_siunitx_unit_int } = { 1 }
+ \int_compare:nNnTF { \l_siunitx_unit_int } = { 1 }
{
\prop_del:Nn \l_siunitx_unit_prop { prefix-1 }
\prop_del:Nn \l_siunitx_unit_prop { prefix-base-1 }
@@ -4126,7 +4488,7 @@
\cs_set_eq:NN \siunitx_unit_format_fraction_symbol_aux:
\siunitx_unit_format_fraction_symbol_aux_alt:
\siunitx_unit_in:nn {#1} {#2}
- \intexpr_compare:nNnF { \l_siunitx_unit_prefix_int } = { 0 }
+ \int_compare:nNnF { \l_siunitx_unit_prefix_int } = { 0 }
{
\tl_set:Nx \l_siunitx_tmpa_tl
{
@@ -4152,7 +4514,7 @@
}
}
\cs_new_protected_nopar:Npn \siunitx_unit_output_print: {
- \intexpr_compare:nNnF { \l_siunitx_unit_prefix_int } = { 0 }
+ \int_compare:nNnF { \l_siunitx_unit_prefix_int } = { 0 }
{
\tl_set:Nx \l_siunitx_tmpa_tl
{
@@ -4201,7 +4563,7 @@
\bool_if:NTF \l_siunitx_product_power_bool
{
\siunitx_combined_product_count:n {#1}
- \intexpr_compare:nNnTF { \l_siunitx_number_product_int } > { 0 }
+ \int_compare:nNnTF { \l_siunitx_number_product_int } > { 0 }
{
\int_incr:N \l_siunitx_number_product_int
\tl_set:Nn \l_siunitx_tmpa_tl {#2}
@@ -4506,6 +4868,7 @@
\exp_not:V \l_siunitx_input_digit_tl
\exp_not:V \l_siunitx_input_exponent_tl
\exp_not:V \l_siunitx_input_ignore_tl
+ \exp_not:V \l_siunitx_input_comparator_tl
\exp_not:V \l_siunitx_input_uncert_close_tl
\exp_not:V \l_siunitx_input_uncert_open_tl
\exp_not:V \l_siunitx_input_sign_tl
@@ -4635,6 +4998,7 @@
\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
\dim_new:N \l_siunitx_table_exponent_dim
\dim_new:N \l_siunitx_table_integer_dim
@@ -4644,11 +5008,16 @@
\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
\skip_new:N \l_siunitx_table_number_align_skip
\skip_new:N \l_siunitx_table_text_align_skip
\keys_define:nn { siunitx } {
+ 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 =
@@ -4678,6 +5047,7 @@
{ \c_zero_skip plus 1 fill }
\bool_set_false:N \l_siunitx_table_center_decimal_bool
},
+ table-omit-exponent .bool_set:N = \l_siunitx_table_omit_exp_bool ,
table-text-alignment .choice:,
table-text-alignment /
center .code:n =
@@ -4698,6 +5068,8 @@
{ \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,
@@ -4715,11 +5087,13 @@
\l_siunitx_table_sign_mantissa_bool
}
\keys_set:nn { siunitx } {
- table-align-text-post = true,
- table-number-alignment = center-decimal-marker,
- table-text-alignment = center,
- table-figures-decimal = 2,
- table-figures-integer = 3
+ 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 =
@@ -4748,6 +5122,9 @@
{ 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 }
@@ -4792,7 +5169,14 @@
\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
+ {
+ \prop_del:Nn \l_siunitx_number_in_prop { exponent }
+ \prop_del:Nn \l_siunitx_number_in_prop { exponent-integer }
+ }
\siunitx_number_format:
\siunitx_number_output_color:
}
@@ -4876,6 +5260,7 @@
}
\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 }
@@ -4889,7 +5274,16 @@
\tl_set:Nn \l_siunitx_round_tl { places }
}
\siunitx_table_print_S_parse:
- \intexpr_compare:nNnTF
+ \bool_if:NTF \l_siunitx_table_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: }
@@ -4905,7 +5299,7 @@
\msg_error:nnx { siunitx } { table-partial-number }
{ a~complex }
}
- \intexpr_compare:nNnTF { \l_siunitx_table_exponent_int } > { 0 }
+ \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 }
@@ -4945,19 +5339,21 @@
}
\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 }
- \intexpr_compare:nNnF
+ \int_compare:nNnF
{ \l_siunitx_table_integer_int + \l_siunitx_table_decimal_int } =
{ 0 }
{
\prop_put:Nnn \l_siunitx_number_in_prop { mantissa }
{ true }
}
- \intexpr_compare:nNnT { \l_siunitx_table_decimal_int } > { 0 }
+ \int_compare:nNnT { \l_siunitx_table_decimal_int } > { 0 }
{
\prop_put:NnV \l_siunitx_number_in_prop
{ mantissa-decimal-marker }
@@ -4965,7 +5361,7 @@
}
\bool_if:NT \l_siunitx_table_sign_mantissa_bool
{ \prop_put:Nnn \l_siunitx_number_in_prop { mantissa-sign } { - } }
- \intexpr_compare:nNnT { \l_siunitx_table_exponent_int } > { 0 }
+ \int_compare:nNnT { \l_siunitx_table_exponent_int } > { 0 }
{
\bool_if:NT \l_siunitx_table_sign_exponent_bool
{
@@ -4973,7 +5369,11 @@
{ - }
}
}
- \siunitx_number_process:
+ \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
@@ -4990,17 +5390,38 @@
\prop_put:Nnn \l_siunitx_number_in_prop {#1} { true }
}
}
+\cs_new_protected_nopar:Npn \siunitx_table_print_S_reserved_comparator:
+ {
+ \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 { }
- \hbox_set_to_wd:Nnn \l_siunitx_table_result_box
- { \l_siunitx_table_mantissa_dim }
+ \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
@@ -5041,7 +5462,7 @@
\siunitx_table_print_S_reserved_uncert:n #1 {
\bool_if:NT \l_siunitx_uncert_sep_bool
{
- \intexpr_compare:nNnTF { \l_siunitx_table_uncert_int } > { 0 }
+ \int_compare:nNnTF { \l_siunitx_table_uncert_int } > { 0 }
{ \siunitx_table_print_S_reserved_uncert_aux:n {#1} }
{
\prop_if_in:NnT \l_siunitx_number_out_prop
@@ -5068,6 +5489,11 @@
\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 {
@@ -5082,6 +5508,9 @@
\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: {
@@ -5098,6 +5527,8 @@
\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: {
@@ -5109,7 +5540,9 @@
\prop_if_in:NnT \l_siunitx_table_model_prop { complex-result }
{ \siunitx_table_print_S_reserved_exponent_product_aux_i: }
}
- \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 }
+ \box_use:N \l_siunitx_table_result_box
}
\cs_new_protected_nopar:Npn
\siunitx_table_print_S_reserved_exponent_product_aux_i: {
@@ -5156,6 +5589,12 @@
}
}
\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