diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex/siunitx/siunitx.sty')
-rw-r--r-- | Master/texmf-dist/tex/latex/siunitx/siunitx.sty | 116 |
1 files changed, 69 insertions, 47 deletions
diff --git a/Master/texmf-dist/tex/latex/siunitx/siunitx.sty b/Master/texmf-dist/tex/latex/siunitx/siunitx.sty index c018305d3b2..dff5520937e 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} {2011/01/18} {2.1h} +\ProvidesExplPackage {siunitx} {2011/01/27} {2.1i} {A comprehensive (SI) units package} \cs_if_exist:NTF \msg_set:nnnn { @@ -365,30 +365,9 @@ } { } } -\prg_new_conditional:Npnn \siunitx_if_display_math: { T , F , TF , p } - { - \mode_if_inner:TF - { \prg_return_false: } - { \prg_return_true: } -} -\AtBeginDocument { - \cs_if_exist:NT \if@display - { - \prg_set_conditional:Npnn \siunitx_if_display_math: - { T , F , TF , p } - { - \mode_if_inner:TF - { - \if@display - \prg_return_true: - \tex_else:D - \prg_return_false: - \tex_fi:D - } - { \prg_return_true: } - } - } -} +\bool_new:N \l_siunitx_display_math_bool +\toks_put_right:Nn \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: @@ -502,7 +481,7 @@ \cs_new_protected_nopar:Npn \siunitx_detect_font_weight: { \mode_if_math:TF { - \siunitx_if_display_math:TF + \bool_if:NTF \l_siunitx_display_math_bool { \bool_if:NTF \l_siunitx_detect_display_math_bool { \siunitx_detect_font_weight_math: } @@ -558,9 +537,9 @@ \siunitx_detect_font_family_text: \mode_if_math:T { - \bool_if:NT \l_siunitx_detect_display_math_bool + \bool_if:NT \l_siunitx_display_math_bool { - \siunitx_if_display_math:T + \bool_if:NT \l_siunitx_detect_display_math_bool { \siunitx_detect_font_family_math: } } } @@ -3853,18 +3832,6 @@ { \siunitx_unit_format_literal:n {#1} } } { - \bool_if:NT \l_siunitx_per_auto_bool - { - \tl_set:Nn \l_siunitx_per_mode_tl { symbol } - \mode_if_math:T - { - \siunitx_if_display_math:T - { - \tl_set:Nn \l_siunitx_per_mode_tl - { fraction } - } - } - } \cs_set_eq:NN \siunitx_pm: \pm \siunitx_unit_parse:nn {#1} {#2} \siunitx_unit_format: @@ -4012,6 +3979,7 @@ \int_new:N \l_siunitx_unit_prefix_base_int \tl_new:N \l_siunitx_unit_prefix_current_tl \int_new:N \l_siunitx_unit_prefix_gram_int +\bool_new:N \l_siunitx_omit_unit_space_bool \bool_new:N \l_siunitx_per_auto_bool \bool_new:N \l_siunitx_per_fraction_bool \tl_new:N \l_siunitx_per_mode_tl @@ -4066,6 +4034,7 @@ \bool_set_true:N \l_siunitx_per_auto_bool \bool_set_true:N \l_siunitx_per_fraction_bool \bool_set_true:N \l_siunitx_per_two_parts_bool + \tl_set:Nn \l_siunitx_per_mode_tl { symbol } }, per-symbol .tl_set:N = \l_siunitx_per_symbol_tl, power-font .choice:, @@ -4098,7 +4067,7 @@ \str_if_eq:VnT \l_siunitx_per_mode_tl { symbol } { \prop_if_in:NnT \l_siunitx_unit_prop { per-1 } - { \tl_clear:N \l_siunitx_number_unit_separator_tl } + { \bool_set_true:N \l_siunitx_omit_unit_space_bool } } } \int_while_do:nNnn { \l_siunitx_unit_int } > { 0 } @@ -4158,8 +4127,12 @@ \cs_new_protected_nopar:Npn \siunitx_unit_format_fraction: { \int_compare:nNnTF { \l_siunitx_unit_denominator_int } > { 0 } { - \use:c - { siunitx_unit_format_fraction_ \l_siunitx_per_mode_tl : } + \bool_if:NTF \l_siunitx_per_auto_bool + { \siunitx_unit_format_fraction_auto: } + { + \use:c + { siunitx_unit_format_fraction_ \l_siunitx_per_mode_tl : } + } } { \tl_set_eq:NN \l_siunitx_unit_tl \l_siunitx_unit_numerator_tl } } @@ -4184,6 +4157,35 @@ \tl_set:Nx \l_siunitx_unit_tl { \exp_not:N \ensuremath { \exp_not:V \l_siunitx_unit_tl } } } +\cs_new_protected_nopar:Npn \siunitx_unit_format_fraction_auto: { + \mode_if_math:TF + { + \group_begin: + \siunitx_unit_format_fraction_fraction: + \exp_args:NNNV \group_end: + \tl_set:Nn \l_siunitx_tmpa_tl \l_siunitx_unit_tl + \group_begin: + \siunitx_unit_format_fraction_symbol: + \exp_args:NNNV \group_end: + \tl_set:Nn \l_siunitx_tmpb_tl \l_siunitx_unit_tl + \tl_set:Nx \l_siunitx_tmpb_tl + { + \siunitx_print:nn { unit } + { \exp_not:V \l_siunitx_tmpb_tl } + } + \tl_set:Nx \l_siunitx_unit_tl + { + \exp_not:N \ensuremath { + \tex_mathchoice:D + { \exp_not:V \l_siunitx_tmpa_tl } + { \exp_not:V \l_siunitx_tmpb_tl } + { \exp_not:V \l_siunitx_tmpb_tl } + { \exp_not:V \l_siunitx_tmpb_tl } + } + } + } + { \siunitx_unit_format_fraction_symbol: } +} \cs_new_protected_nopar:Npn \siunitx_unit_format_fraction_symbol: { \siunitx_unit_format_fraction_symbol_aux: \int_compare:nNnT { \l_siunitx_unit_denominator_int } > { 1 } @@ -4201,14 +4203,15 @@ \l_siunitx_per_symbol_tl \tl_put_right:NV \l_siunitx_unit_tl \l_siunitx_unit_denominator_tl } -\cs_new_protected_nopar:Npn \siunitx_unit_format_fraction_symbol_aux: { -} +\cs_new_protected_nopar:Npn + \siunitx_unit_format_fraction_symbol_aux: { } \cs_new_protected_nopar:Npn \siunitx_unit_format_fraction_symbol_aux_alt: { \tl_if_empty:NT \l_siunitx_unit_numerator_tl { \tl_set:Nn \l_siunitx_unit_numerator_tl { 1 } } } \cs_new_protected_nopar:Npn \siunitx_unit_format_init: { + \bool_set_false:N \l_siunitx_omit_unit_space_bool \tl_clear:N \l_siunitx_unit_tl \tl_clear:N \l_siunitx_unit_current_tl \tl_clear:N \l_siunitx_unit_denominator_tl @@ -4591,7 +4594,7 @@ \cs_new_protected:Npn \siunitx_unit_output:nn #1#2 { \cs_set_eq:NN \siunitx_unit_format_symbol_aux: \siunitx_unit_format_symbol_aux_alt: - \cs_set_eq:NN \siunitx_unit_format_fraction_symbol_aux: + \cs_set_eq:NN \siunitx_unit_format_fraction_symbol_aux_ii: \siunitx_unit_format_fraction_symbol_aux_alt: \siunitx_unit_in:nn {#1} {#2} \int_compare:nNnF { \l_siunitx_unit_prefix_int } = { 0 } @@ -4610,7 +4613,26 @@ \cs_new_protected_nopar:Npn \siunitx_unit_output_number_sep: { \bool_if:NTF \l_siunitx_number_unit_breaks_bool { \penalty \binoppenalty } { \nobreak } - \siunitx_ensuremath:n { \l_siunitx_number_unit_separator_tl } + \bool_if:NTF \l_siunitx_per_auto_bool + { + \mode_if_math:TF + { + \ensuremath + { + \tex_mathchoice:D + { \l_siunitx_number_unit_separator_tl } + { \siunitx_unit_output_number_sep_aux: } + { \siunitx_unit_output_number_sep_aux: } + { \siunitx_unit_output_number_sep_aux: } + } + } + { \siunitx_unit_output_number_sep_aux: } + } + { \siunitx_unit_output_number_sep_aux: } +} +\cs_new_protected_nopar:Npn \siunitx_unit_output_number_sep_aux: { + \bool_if:NF \l_siunitx_omit_unit_space_bool + { \siunitx_ensuremath:n { \l_siunitx_number_unit_separator_tl } } } \cs_new_protected_nopar:Npn \siunitx_unit_output_pre_print: { \tl_if_empty:NF \l_siunitx_pre_unit_tl |