From 085271aaf9917d7116be9774c6cd0a117aa4111e Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Wed, 5 Apr 2023 03:02:06 +0000 Subject: CTAN sync 202304050302 --- macros/latex/contrib/siunitx/CHANGELOG.md | 9 ++- macros/latex/contrib/siunitx/siunitx-code.pdf | Bin 642235 -> 642304 bytes macros/latex/contrib/siunitx/siunitx-locale.dtx | 18 ++--- macros/latex/contrib/siunitx/siunitx-number.dtx | 93 ++++++++++++++++++------ macros/latex/contrib/siunitx/siunitx.dtx | 2 +- macros/latex/contrib/siunitx/siunitx.pdf | Bin 691121 -> 691514 bytes 6 files changed, 87 insertions(+), 35 deletions(-) (limited to 'macros/latex/contrib/siunitx') diff --git a/macros/latex/contrib/siunitx/CHANGELOG.md b/macros/latex/contrib/siunitx/CHANGELOG.md index 9d37819ad8..49a16c2766 100644 --- a/macros/latex/contrib/siunitx/CHANGELOG.md +++ b/macros/latex/contrib/siunitx/CHANGELOG.md @@ -7,6 +7,12 @@ Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to ## [Unreleased] +## [v3.2.4] - 2023-04-04 + + +### Fixed +- Parsing of 'full' uncertainty parts with leading zeros (see issues + [\#652](https://github.com/josephwright/siunitx/issues/652)) ## [v3.2.3] - 2023-03-14 ### Fixed @@ -1882,7 +1888,8 @@ Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to ### Added - First public testing release (as `si`) -[Unreleased]: https://github.com/josephwright/siunitx/compare/v3.2.3...HEAD +[Unreleased]: https://github.com/josephwright/siunitx/compare/v3.2.4...HEAD +[v3.2.4]: https://github.com/josephwright/siunitx/compare/v3.2.3...v3.2.4 [v3.2.3]: https://github.com/josephwright/siunitx/compare/v3.2.2...v3.2.3 [v3.2.2]: https://github.com/josephwright/siunitx/compare/v3.2.1...v3.2.2 [v3.2.1]: https://github.com/josephwright/siunitx/compare/v3.2.0...v3.2.1 diff --git a/macros/latex/contrib/siunitx/siunitx-code.pdf b/macros/latex/contrib/siunitx/siunitx-code.pdf index 447e005499..3fa73c2087 100644 Binary files a/macros/latex/contrib/siunitx/siunitx-code.pdf and b/macros/latex/contrib/siunitx/siunitx-code.pdf differ diff --git a/macros/latex/contrib/siunitx/siunitx-locale.dtx b/macros/latex/contrib/siunitx/siunitx-locale.dtx index 6a0aa3ffea..43f432733a 100644 --- a/macros/latex/contrib/siunitx/siunitx-locale.dtx +++ b/macros/latex/contrib/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/macros/latex/contrib/siunitx/siunitx-number.dtx b/macros/latex/contrib/siunitx/siunitx-number.dtx index 8df5670c25..0b51a9cd1c 100644 --- a/macros/latex/contrib/siunitx/siunitx-number.dtx +++ b/macros/latex/contrib/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/macros/latex/contrib/siunitx/siunitx.dtx b/macros/latex/contrib/siunitx/siunitx.dtx index 3242c28007..78b5ffa776 100644 --- a/macros/latex/contrib/siunitx/siunitx.dtx +++ b/macros/latex/contrib/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} % diff --git a/macros/latex/contrib/siunitx/siunitx.pdf b/macros/latex/contrib/siunitx/siunitx.pdf index b896144622..bdff52cf3b 100644 Binary files a/macros/latex/contrib/siunitx/siunitx.pdf and b/macros/latex/contrib/siunitx/siunitx.pdf differ -- cgit v1.2.3