diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex/siunitx/siunitx.sty')
-rw-r--r-- | Master/texmf-dist/tex/latex/siunitx/siunitx.sty | 181 |
1 files changed, 116 insertions, 65 deletions
diff --git a/Master/texmf-dist/tex/latex/siunitx/siunitx.sty b/Master/texmf-dist/tex/latex/siunitx/siunitx.sty index f2352d62a33..9e943639402 100644 --- a/Master/texmf-dist/tex/latex/siunitx/siunitx.sty +++ b/Master/texmf-dist/tex/latex/siunitx/siunitx.sty @@ -41,7 +41,7 @@ }% \endinput }% -\ProvidesExplPackage {siunitx} {2024-05-06} {3.3.17} +\ProvidesExplPackage {siunitx} {2024-09-30} {3.3.22} {A comprehensive (SI) units package} \msg_new:nnnn { siunitx } { incompatible-package } { Package~'#1'~incompatible. } @@ -1479,7 +1479,13 @@ \str_case:nnF {#1} { { down } { \use_i:nn } - { up } { \use_ii:nn } + { up } + { + \str_if_eq:eeTF + {#2} { \prg_replicate:nn { \tl_count:n {#2} } { 0 } } + { \use_i:nn } + { \use_ii:nn } + } } { \bool_lazy_or:nnTF @@ -2983,23 +2989,26 @@ { \siunitx_angle:eee { \fp_eval:n { trunc(#1,0) } } - { \fp_eval:n { trunc((#1 - trunc(#1,0)) * 60,0) } } + { \fp_eval:n { abs(trunc((#1 - trunc(#1,0)) * 60,0)) } } { \fp_eval:n { - ( - (#1 - trunc(#1,0)) * 60 - - trunc((#1 - trunc(#1,0)) * 60,0) - ) + abs + ( + (#1 - trunc(#1,0)) * 60 + - trunc((#1 - trunc(#1,0)) * 60,0) + ) * 60 } } } \cs_generate_variant:Nn \__siunitx_angle_arc_convert:n { e } +\clist_const:Nn \c__siunitx_angle_parts_tl { degrees , minutes , seconds } \tl_new:N \l__siunitx_angle_degrees_tl \tl_new:N \l__siunitx_angle_minutes_tl \tl_new:N \l__siunitx_angle_seconds_tl \tl_new:N \l__siunitx_angle_sign_tl +\tl_new:N \l__siunitx_angle_signed_bool \keys_precompile:nnN { siunitx } { @@ -3013,49 +3022,32 @@ { \exp_not:V \l__siunitx_angle_tmp_tl } \keys_precompile:nnN { siunitx } - { input-comparators = , input-signs = } + { input-comparators = } \l__siunitx_angle_tmp_tl -\cs_set_protected:Npx \__siunitx_angle_suppress_comp_sign: +\cs_set_protected:Npx \__siunitx_angle_suppress_comp: { \exp_not:V \l__siunitx_angle_tmp_tl } \cs_new_protected:Npn \__siunitx_angle_arc_sign:nnn #1#2#3 { \group_begin: \__siunitx_angle_suppress_exp_uncert: \tl_clear:N \l__siunitx_angle_sign_tl - \__siunitx_angle_arc_sign:nn {#1} { degrees } + \bool_set_false:N \l__siunitx_angle_signed_bool + \str_if_eq:nnTF {#1} { -0 } + { + \__siunitx_angle_arc_sign:nn { } { degrees } + \__siunitx_angle_suppress_comp: + \tl_set:Nn \l__siunitx_angle_sign_tl { - } + \bool_set_true:N \l__siunitx_angle_signed_bool + } + { \__siunitx_angle_arc_sign:nn {#1} { degrees } } \__siunitx_angle_arc_sign:nn {#2} { minutes } \__siunitx_angle_arc_sign:nn {#3} { seconds } \tl_if_empty:NF \l__siunitx_angle_sign_tl { - \clist_map_inline:nn { degrees , minutes , seconds } - { - \tl_if_empty:cF { l__siunitx_angle_ ##1 _tl } - { - \tl_set:cx { l__siunitx_angle_ ##1 _tl } - { - { } - { \exp_not:V \l__siunitx_angle_sign_tl } - \exp_after:wN \exp_after:wN \exp_after:wN - \__siunitx_angle_sign:nnnnnnn - \cs:w l__siunitx_angle_ ##1 _tl \cs_end: - } - \clist_map_break: - } - } - } - \clist_map_inline:nn { degrees , minutes , seconds } - { - \tl_if_empty:cF { l__siunitx_angle_ ##1 _tl } - { - \siunitx_number_process:cc - { l__siunitx_angle_ ##1 _tl } { l__siunitx_angle_ ##1 _tl } - \tl_set:cx { l__siunitx_angle_ ##1 _tl } - { - \siunitx_number_output:cN - { l__siunitx_angle_ ##1 _tl } \q_nil - } - } + \clist_map_function:NN \c__siunitx_angle_parts_tl + \__siunitx_angle_arc_sign_auxi:n } + \clist_map_function:NN \c__siunitx_angle_parts_tl \__siunitx_angle_arc_sign_auxii:n \__siunitx_angle_arc_print:VVV \l__siunitx_angle_degrees_tl \l__siunitx_angle_minutes_tl @@ -3076,6 +3068,40 @@ { \siunitx_number_parse:nN {#1} \l__siunitx_angle_tmp_tl \exp_after:wN \__siunitx_angle_extract_sign:nnnnnnnn \l__siunitx_angle_tmp_tl {#2} + \bool_set_true:N \l__siunitx_angle_signed_bool + } + } +\cs_new_protected:Npn \__siunitx_angle_arc_sign_auxi:n #1 + { + \tl_if_empty:cF { l__siunitx_angle_ #1 _tl } + { + \tl_set:cx { l__siunitx_angle_ #1 _tl } + { + { } + { \exp_not:V \l__siunitx_angle_sign_tl } + \exp_after:wN \exp_after:wN \exp_after:wN + \__siunitx_angle_sign:nnnnnnn + \cs:w l__siunitx_angle_ #1 _tl \cs_end: + } + \clist_map_break: + } + } +\cs_new_protected:Npn \__siunitx_angle_arc_sign_auxii:n #1 + { + \tl_if_empty:cF { l__siunitx_angle_ #1 _tl } + { + \bool_lazy_and:nnF + { \l__siunitx_angle_force_arc_bool } + { ! \str_if_eq_p:nn {#1} { seconds } } + { + \siunitx_number_process:cc + { l__siunitx_angle_ #1 _tl } { l__siunitx_angle_ #1 _tl } + } + \tl_set:cx { l__siunitx_angle_ #1 _tl } + { + \siunitx_number_output:cN + { l__siunitx_angle_ #1 _tl } \q_nil + } } } \cs_new_protected:Npn \__siunitx_angle_extract_sign:nnnnnnnn #1#2#3#4#5#6#7#8 @@ -3083,10 +3109,12 @@ \tl_if_blank:nTF {#2} { \tl_set_eq:cN { l__siunitx_angle_ #8 _tl } \l__siunitx_angle_tmp_tl } { + \bool_if:NTF \l__siunitx_angle_signed_bool + { \msg_error:nnn { siunitx } { arc-multi-sign } } + { \tl_set:Nn \l__siunitx_angle_sign_tl {#2} } \tl_set:cn { l__siunitx_angle_ #8 _tl } { {#1} { } {#3} {#4} {#5} {#6} {#7} } - \tl_set:Nn \l__siunitx_angle_sign_tl {#2} - \__siunitx_angle_suppress_comp_sign: + \__siunitx_angle_suppress_comp: } } \cs_new:Npn \__siunitx_angle_sign:nnnnnnn #1#2#3#4#5#6#7 @@ -3206,6 +3234,12 @@ \siunitx_unit_format:nN {#1} \l__siunitx_angle_tmp_tl \siunitx_print_unit:V \l__siunitx_angle_tmp_tl } +\msg_new:nnnn { siunitx } { arc-multi-sign } + { Multiple~signs~given~for~arc~angle! } + { + An~angle~given~as~an~arc~should~have~at~most~one~sign:~ + only~the~first~sign~will~be~used. + } \keys_set:nn { siunitx } { angle-mode = input , @@ -3871,10 +3905,10 @@ \bool_lazy_or:nnTF { \str_if_eq_p:nn {#2} { i } } { \str_if_eq_p:nn {#2#3} { +i } } - { \__siunitx_complex_convert_polar_auxvi:nnn { } { 1 } {#1} } + { \__siunitx_complex_convert_polar_auxvii:nnn { } { 1 } {#1} } { \str_if_eq:nnTF {#2#3} { -i } - { \__siunitx_complex_convert_polar_auxvi:nnn { } { -1 } {#1} } + { \__siunitx_complex_convert_polar_auxvii:nnn { } { -1 } {#1} } { \__siunitx_complex_convert_polar_auxiii:nnw {#1} {#2} #3 + + \q_stop } } } @@ -3884,7 +3918,7 @@ { \__siunitx_complex_convert_polar_auxiv:nnw {#1} {#2} #3 - - \q_stop } { \str_if_eq:nnTF {#4} { i } - { \__siunitx_complex_convert_polar_auxvi:nnn {#2#3} { 1 } {#1} } + { \__siunitx_complex_convert_polar_auxvii:nnn {#2#3} { 1 } {#1} } { \__siunitx_complex_convert_polar_auxv:nnw {#2#3} {#1} #4 i \q_nil i \q_stop } } } @@ -3894,35 +3928,45 @@ { \__siunitx_complex_convert_polar_auxv:nnw { } {#1} #2#3 i \q_nil i \q_stop } { \str_if_eq:nnTF {#4} { i } - { \__siunitx_complex_convert_polar_auxvi:nnn { } { -1 } {#1} } + { \__siunitx_complex_convert_polar_auxvii:nnn { } { -1 } {#1} } { \__siunitx_complex_convert_polar_auxv:nnw {#2#3} {#1} -#4 i \q_nil i \q_stop } } } \cs_new:Npn \__siunitx_complex_convert_polar_auxv:nnw #1#2#3 i #4 i #5 \q_stop { \quark_if_nil:nTF {#4} - { { #3 \tl_if_blank:nF {#2} { e#2 } } { 0 } } - { \__siunitx_complex_convert_polar_auxvi:nnn {#1} {#3} {#2} } + { + \tl_if_head_eq_meaning:nNTF {#3} - + { \__siunitx_complex_convert_polar_auxvi:enn { \use_none:n #3 } { 180 } } + { \__siunitx_complex_convert_polar_auxvi:nnn {#3} { 0 } } + {#2} + } + { \__siunitx_complex_convert_polar_auxvii:nnn {#1} {#3} {#2} } } \cs_new:Npn \__siunitx_complex_convert_polar_auxvi:nnn #1#2#3 { - \__siunitx_complex_convert_polar_auxvii:eee + { #1 \tl_if_blank:nF {#3} { e#3 } } {#2} + } +\cs_generate_variant:Nn \__siunitx_complex_convert_polar_auxvi:nnn { e } +\cs_new:Npn \__siunitx_complex_convert_polar_auxvii:nnn #1#2#3 + { + \__siunitx_complex_convert_polar_auxviii:eee { \tl_if_blank:nTF {#1} { 0 } {#1} } { \tl_if_blank:nTF {#2} { 0 } {#2} } { \tl_if_blank:nF {#3} { e#3 } } } -\cs_new:Npn \__siunitx_complex_convert_polar_auxvii:nnn #1#2#3 +\cs_new:Npn \__siunitx_complex_convert_polar_auxviii:nnn #1#2#3 { - \__siunitx_complex_format_polar_auxviii:ee + \__siunitx_complex_format_polar_auxix:ee { \fp_eval:n { sqrt ( (#1#3)^2 + (#2#3)^2 ) } } { \fp_eval:n { atan \bool_if:NT \l__siunitx_complex_polar_degree_bool { d } (#2 , #1) } } } -\cs_generate_variant:Nn \__siunitx_complex_convert_polar_auxvii:nnn { eee } -\cs_new:Npn \__siunitx_complex_format_polar_auxviii:nn #1#2 { {#1} {#2} } -\cs_generate_variant:Nn \__siunitx_complex_format_polar_auxviii:nn { ee } +\cs_generate_variant:Nn \__siunitx_complex_convert_polar_auxviii:nnn { eee } +\cs_new:Npn \__siunitx_complex_format_polar_auxix:nn #1#2 { {#1} {#2} } +\cs_generate_variant:Nn \__siunitx_complex_format_polar_auxix:nn { ee } \msg_new:nnnn { siunitx } { invalid-polar-form } { Invalid~polar~form~"#1:#2". } { @@ -5308,13 +5352,6 @@ { \group_begin: \tl_clear:N \l__siunitx_table_collect_tl - \if_false: { \fi: - \cs_set_protected:Npn \cr - { - \__siunitx_table_collect_loop: - \tex_cr:D - } - \if_false: } \fi: \__siunitx_table_collect_begin:w } \cs_new_protected:Npn \__siunitx_table_collect_begin:w #1 \ignorespaces @@ -5338,9 +5375,10 @@ \__siunitx_table_collect_search:NnF #1 { \unskip { \__siunitx_table_collect_loop: } - \end { \tabularnewline \end } + \textonly@unskip { \__siunitx_table_collect_loop: } + \end { \__siunitx_table_collect_pre_cr: \tabularnewline \end } \relax { \__siunitx_table_collect_relax:N #1 } - \tabularnewline { \tabularnewline } + \tabularnewline { \__siunitx_table_collect_pre_cr: \tabularnewline } \siunitx_cell_end: { \siunitx_cell_end: } } { \__siunitx_table_collect_token_aux:N #1 } @@ -5367,9 +5405,9 @@ \@maybe@unskip { \__siunitx_table_collect_loop: } \tab@setcr { \__siunitx_table_collect_loop: } \unskip { \__siunitx_table_collect_loop: } - \end { \tabularnewline \end } + \end { \__siunitx_table_collect_pre_cr: \tabularnewline \end } \relax { \__siunitx_table_collect_relax:N #1 } - \tabularnewline { \tabularnewline } + \tabularnewline { \__siunitx_table_collect_pre_cr: \tabularnewline } \siunitx_cell_end: { \siunitx_cell_end: } } { \__siunitx_table_collect_token_aux:N #1 } @@ -5390,6 +5428,16 @@ { \use_i_delimit_by_q_stop:nw {#3} } { \__siunitx_table_collect_search_aux:NNn #1 } } +\cs_new_protected:Npn \__siunitx_table_collect_pre_cr: + { + \if_false: { \fi: + \cs_set_protected:Npn \cr + { + \__siunitx_table_collect_loop: + \tex_cr:D + } + \if_false: } \fi: + } \tl_new:N \l__siunitx_table_before_tl \tl_new:N \l__siunitx_table_number_tl \tl_new:N \l__siunitx_table_after_tl @@ -6020,7 +6068,7 @@ } { \hbox_unpack:N \l__siunitx_table_integer_box - \__siunitx_table_fil: + \__siunitx_table_fill: \hbox_unpack:N \l__siunitx_table_tmp_box } } @@ -7502,7 +7550,10 @@ \str_if_eq:eeT { \exp_not:o { \familydefault } } { \exp_not:n { \sfdefault } } - { \keys_set:nn { siunitx } { unit-font-command = \mathsf } } + { + \tl_if_eq:VnT \l_siunitx_unit_font_tl { \mathrm } + { \keys_set:nn { siunitx } { unit-font-command = \mathsf } } + } } { } } |