From 9fd8dbbf46c600b2dd7cbf52301aa86acfeffc86 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Tue, 4 Apr 2023 20:12:17 +0000 Subject: siunitx (4apr23) git-svn-id: svn://tug.org/texlive/trunk@66761 c570f23f-e606-0410-a88d-b1316a301751 --- .../source/latex/siunitx/siunitx-locale.dtx | 18 ++--- .../source/latex/siunitx/siunitx-number.dtx | 93 ++++++++++++++++------ Master/texmf-dist/source/latex/siunitx/siunitx.dtx | 2 +- 3 files changed, 79 insertions(+), 34 deletions(-) (limited to 'Master/texmf-dist/source/latex/siunitx') diff --git a/Master/texmf-dist/source/latex/siunitx/siunitx-locale.dtx b/Master/texmf-dist/source/latex/siunitx/siunitx-locale.dtx index 6a0aa3ffea6..43f432733a3 100644 --- a/Master/texmf-dist/source/latex/siunitx/siunitx-locale.dtx +++ b/Master/texmf-dist/source/latex/siunitx/siunitx-locale.dtx @@ -102,18 +102,18 @@ inter-unit-product = \, , output-decimal-marker = { , } } , - locale / PL .meta:n = - { - exponent-product = \cdot , - inter-unit-product = \cdot , - output-decimal-marker = { , } - } , locale / FR .meta:n = { exponent-product = \times , inter-unit-product = \, , output-decimal-marker = { , } } , + locale / PL .meta:n = + { + exponent-product = \cdot , + inter-unit-product = \cdot , + output-decimal-marker = { , } + } , locale / SI .meta:n = { exponent-product = \times , @@ -150,17 +150,17 @@ { \RequirePackage { translations } \DeclareTranslation { Catalan } { and } { i } - \DeclareTranslation { Slovene } { and } { in } \DeclareTranslation { Portuguese } { and } { e } + \DeclareTranslation { Slovene } { and } { in } + \DeclareTranslation { Brazilian } { to~(numerical~range) } { a } \DeclareTranslation { Catalan } { to~(numerical~range) } { a } \DeclareTranslation { English } { to~(numerical~range) } { to } \DeclareTranslation { French } { to~(numerical~range) } { à } \DeclareTranslation { German } { to~(numerical~range) } { bis } \DeclareTranslation { Polish } { to~(numerical~range) } { do } + \DeclareTranslation { Portuguese } { to~(numerical~range) } { a } \DeclareTranslation { Slovene } { to~(numerical~range) } { do } \DeclareTranslation { Spanish } { to~(numerical~range) } { a } - \DeclareTranslation { Brazilian } { to~(numerical~range) } { a } - \DeclareTranslation { Portuguese } { to~(numerical~range) } { a } \keys_set:nn { siunitx } { list-final-separator = diff --git a/Master/texmf-dist/source/latex/siunitx/siunitx-number.dtx b/Master/texmf-dist/source/latex/siunitx/siunitx-number.dtx index 8df5670c25f..0b51a9cd1c0 100644 --- a/Master/texmf-dist/source/latex/siunitx/siunitx-number.dtx +++ b/Master/texmf-dist/source/latex/siunitx/siunitx-number.dtx @@ -683,6 +683,7 @@ \cs_generate_variant:Nn \tl_if_blank:nTF { f } \cs_generate_variant:Nn \tl_if_blank_p:n { f } \cs_generate_variant:Nn \tl_if_in:NnTF { NV } +\cs_generate_variant:Nn \tl_if_in:nnTF { nV } \cs_generate_variant:Nn \tl_remove_all:Nn { NV } \cs_generate_variant:Nn \tl_replace_all:Nnn { NnV } % \end{macrocode} @@ -1695,9 +1696,14 @@ % \begin{macro}{\@@_parse_uncert:N} % \begin{macro}{\@@_parse_uncert:NNN} % \begin{macro}{\@@_parse_uncert_auxi:N, \@@_parse_uncert_auxii:N} -% \begin{macro} {\@@_parse_uncert_auxii:, \@@_parse_uncert_marker:} -% \begin{macro}{\@@_parse_uncert_extend:nnn} -% \begin{macro}{\@@_parse_uncert_after:N} +% \begin{macro}{\@@_parse_uncert_auxii:} +% \begin{macro}{\@@_parse_uncert_marker:} +% \begin{macro}{\@@_parse_uncert_marker:nnn} +% \begin{macro}{\@@_parse_uncert_marker:nnnw} +% \begin{macro}{\@@_parse_uncert_marker:Nnnn} +% \begin{macro}{\@@_parse_uncert_marker:w} +% \begin{macro}{\@@_parse_uncert_marker:nnnnN} +% \begin{macro}{\@@_parse_uncert_after:N} % Parsing a combined uncertainty has a very restricted range of allowed % tokens. A closing uncertainty token in the first place is an error, % so we filter that out explicitly. After that, we check for digits, @@ -1778,9 +1784,11 @@ % not too long, and extend the decimal if it is. % Both of these require data from the collected partial number, % so we extract that first. Checking the decimal part needs the length of the -% not-yet-collected uncertainty. Handily, we know that it should be a set of -% digits then a closing marker. So we can use that as a length: if it's -% too long we can stop. +% not-yet-collected uncertainty. There may be one or more parts to that, so +% we have to grab p to the \emph{first} closing token to count the length: +% just grabbing everything only works if there is only a single uncertainty. +% We take protective steps against an entirely-missing closing token so that +% there is not an uncontrolled error. % \begin{macrocode} \cs_new_protected:Npn \@@_parse_uncert_marker: { @@ -1792,29 +1800,61 @@ \int_compare:nNnTF { \tl_count:N \l_@@_partial_tl } > { \tl_count:n {#2} } { \@@_parse_loop_break:w } - { \@@_parse_uncert_marker:nw {#3} } + { \@@_parse_uncert_marker:nnnw {#1} {#2} {#3} } } -\cs_new_protected:Npn \@@_parse_uncert_marker:nw - #1#2 \q_recursion_tail \q_recursion_stop +\cs_new_protected:Npn \@@_parse_uncert_marker:nnnw + #1#2#3#4 \q_recursion_tail \q_recursion_stop { - \int_compare:nNnTF - { \tl_count:n {#2} - 1 } = { \tl_count:n {#1} } - { - \str_if_eq:eeTF - { \exp_not:V \l_@@_uncert_tl } - { \prg_replicate:nn { \tl_count:N \l_@@_partial_tl } { 0 } } - { \@@_parse_uncert:NNN \c_false_bool } - { \@@_parse_uncert:NNN \c_true_bool } - \@@_parse_uncert_auxii:N + \tl_if_in:nVTF {#4} \l_@@_input_uncert_close_tl + { + \exp_after:wN \@@_parse_uncert_marker:Nnnn + \l_@@_input_uncert_close_tl + {#1} {#2} {#3} } - { \exp_after:wN \@@_parse_uncert_extend:nnn \l_@@_parsed_tl } - #2 \q_recursion_tail \q_recursion_stop + { \@@_parse_loop_break:w } + #4 \q_recursion_tail \q_recursion_stop + } +\cs_new_protected:Npn \@@_parse_uncert_marker:Nnnn + #1#2#3#4 + { + \cs_set_protected:Npn \@@_parse_uncert_marker:w ##1 #1 + { \@@_parse_uncert_marker:nnnnN {#2} {#3} {#4} {##1} #1 } + \@@_parse_uncert_marker:w } -\cs_new_protected:Npn \@@_parse_uncert_extend:nnn #1#2#3 +\cs_new_protected:Npn \@@_parse_uncert_marker:w { } +% \end{macrocode} +% With the separated out main part and the current uncertainty part +% available, we can pad the main part if required then restart the +% collection of the uncertainty having thrown away the decimal marker +% and with the lengths lined up. +% \begin{macrocode} +\cs_new_protected:Npn \@@_parse_uncert_marker:nnnnN #1#2#3#4#5 { - \tl_set:Nn \l_@@_parsed_tl { {#1} {#2} { #3 0 } } - \@@_parse_uncert:NNN \c_true_bool - \@@_parse_uncert_auxii:N + \tl_set:Nx \l_@@_parsed_tl + { + {#1} + {#2} + { + #3 + \prg_replicate:nn + { + \int_max:nn + { 0 } + { \tl_count:n {#4} - \tl_count:n {#3} } + } + { 0 } + } + } + \tl_if_empty:NTF \l_@@_partial_tl + { + \@@_parse_uncert:NNN \c_false_bool + \@@_parse_uncert_auxii:N + } + { + \@@_parse_uncert:NNN \c_true_bool + \@@_parse_uncert_auxii:N + } + #4#5 } % \end{macrocode} % At the end of collection, we can either start another one or be done: @@ -1860,6 +1900,11 @@ % \end{macro} % \end{macro} % \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} % % \subsection{Processing numbers} % diff --git a/Master/texmf-dist/source/latex/siunitx/siunitx.dtx b/Master/texmf-dist/source/latex/siunitx/siunitx.dtx index 3242c280077..78b5ffa7762 100644 --- a/Master/texmf-dist/source/latex/siunitx/siunitx.dtx +++ b/Master/texmf-dist/source/latex/siunitx/siunitx.dtx @@ -122,7 +122,7 @@ % % Identify the package and give the over all version information. % \begin{macrocode} -\ProvidesExplPackage {siunitx} {2023-03-14} {3.2.3} +\ProvidesExplPackage {siunitx} {2023-04-04} {3.2.4} {A comprehensive (SI) units package} % \end{macrocode} % -- cgit v1.2.3