texlive[66761] Master/texmf-dist: siunitx (4apr23)
commits+karl at tug.org
commits+karl at tug.org
Tue Apr 4 22:12:17 CEST 2023
Revision: 66761
http://tug.org/svn/texlive?view=revision&revision=66761
Author: karl
Date: 2023-04-04 22:12:17 +0200 (Tue, 04 Apr 2023)
Log Message:
-----------
siunitx (4apr23)
Modified Paths:
--------------
trunk/Master/texmf-dist/doc/latex/siunitx/CHANGELOG.md
trunk/Master/texmf-dist/doc/latex/siunitx/siunitx-code.pdf
trunk/Master/texmf-dist/doc/latex/siunitx/siunitx.pdf
trunk/Master/texmf-dist/source/latex/siunitx/siunitx-locale.dtx
trunk/Master/texmf-dist/source/latex/siunitx/siunitx-number.dtx
trunk/Master/texmf-dist/source/latex/siunitx/siunitx.dtx
trunk/Master/texmf-dist/tex/latex/siunitx/siunitx.sty
Modified: trunk/Master/texmf-dist/doc/latex/siunitx/CHANGELOG.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/siunitx/CHANGELOG.md 2023-04-04 20:12:02 UTC (rev 66760)
+++ trunk/Master/texmf-dist/doc/latex/siunitx/CHANGELOG.md 2023-04-04 20:12:17 UTC (rev 66761)
@@ -7,6 +7,12 @@
## [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 @@
### 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
Modified: trunk/Master/texmf-dist/doc/latex/siunitx/siunitx-code.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/siunitx/siunitx.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/source/latex/siunitx/siunitx-locale.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/siunitx/siunitx-locale.dtx 2023-04-04 20:12:02 UTC (rev 66760)
+++ trunk/Master/texmf-dist/source/latex/siunitx/siunitx-locale.dtx 2023-04-04 20:12:17 UTC (rev 66761)
@@ -102,6 +102,12 @@
inter-unit-product = \, ,
output-decimal-marker = { , }
} ,
+ locale / FR .meta:n =
+ {
+ exponent-product = \times ,
+ inter-unit-product = \, ,
+ output-decimal-marker = { , }
+ } ,
locale / PL .meta:n =
{
exponent-product = \cdot ,
@@ -108,12 +114,6 @@
inter-unit-product = \cdot ,
output-decimal-marker = { , }
} ,
- locale / FR .meta:n =
- {
- exponent-product = \times ,
- inter-unit-product = \, ,
- output-decimal-marker = { , }
- } ,
locale / SI .meta:n =
{
exponent-product = \times ,
@@ -150,17 +150,17 @@
{
\RequirePackage { translations }
\DeclareTranslation { Catalan } { and } { i }
+ \DeclareTranslation { Portuguese } { and } { e }
\DeclareTranslation { Slovene } { and } { in }
- \DeclareTranslation { Portuguese } { and } { e }
+ \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 =
Modified: trunk/Master/texmf-dist/source/latex/siunitx/siunitx-number.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/siunitx/siunitx-number.dtx 2023-04-04 20:12:02 UTC (rev 66760)
+++ trunk/Master/texmf-dist/source/latex/siunitx/siunitx-number.dtx 2023-04-04 20:12:17 UTC (rev 66761)
@@ -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,31 +1800,63 @@
\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} }
+ \tl_if_in:nVTF {#4} \l_@@_input_uncert_close_tl
{
- \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
+ \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_extend:nnn #1#2#3
+\cs_new_protected:Npn \@@_parse_uncert_marker:Nnnn
+ #1#2#3#4
{
- \tl_set:Nn \l_@@_parsed_tl { {#1} {#2} { #3 0 } }
- \@@_parse_uncert:NNN \c_true_bool
- \@@_parse_uncert_auxii:N
+ \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_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: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:
% either way we move the data around.
% \begin{macrocode}
@@ -1860,6 +1900,11 @@
% \end{macro}
% \end{macro}
% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
%
% \subsection{Processing numbers}
%
Modified: trunk/Master/texmf-dist/source/latex/siunitx/siunitx.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/siunitx/siunitx.dtx 2023-04-04 20:12:02 UTC (rev 66760)
+++ trunk/Master/texmf-dist/source/latex/siunitx/siunitx.dtx 2023-04-04 20:12:17 UTC (rev 66761)
@@ -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}
%
Modified: trunk/Master/texmf-dist/tex/latex/siunitx/siunitx.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/siunitx/siunitx.sty 2023-04-04 20:12:02 UTC (rev 66760)
+++ trunk/Master/texmf-dist/tex/latex/siunitx/siunitx.sty 2023-04-04 20:12:17 UTC (rev 66761)
@@ -42,7 +42,7 @@
}%
\endinput
}%
-\ProvidesExplPackage {siunitx} {2023-03-14} {3.2.3}
+\ProvidesExplPackage {siunitx} {2023-04-04} {3.2.4}
{A comprehensive (SI) units package}
\msg_new:nnnn { siunitx } { incompatible-package }
{ Package~'#1'~incompatible. }
@@ -1696,6 +1696,12 @@
inter-unit-product = \, ,
output-decimal-marker = { , }
} ,
+ locale / FR .meta:n =
+ {
+ exponent-product = \times ,
+ inter-unit-product = \, ,
+ output-decimal-marker = { , }
+ } ,
locale / PL .meta:n =
{
exponent-product = \cdot ,
@@ -1702,12 +1708,6 @@
inter-unit-product = \cdot ,
output-decimal-marker = { , }
} ,
- locale / FR .meta:n =
- {
- exponent-product = \times ,
- inter-unit-product = \, ,
- output-decimal-marker = { , }
- } ,
locale / SI .meta:n =
{
exponent-product = \times ,
@@ -1737,17 +1737,17 @@
{
\RequirePackage { translations }
\DeclareTranslation { Catalan } { and } { i }
+ \DeclareTranslation { Portuguese } { and } { e }
\DeclareTranslation { Slovene } { and } { in }
- \DeclareTranslation { Portuguese } { and } { e }
+ \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 =
@@ -1773,6 +1773,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 }
\tl_new:N \l__siunitx_number_tmp_tl
@@ -2402,30 +2403,56 @@
\int_compare:nNnTF
{ \tl_count:N \l__siunitx_number_partial_tl } > { \tl_count:n {#2} }
{ \__siunitx_number_parse_loop_break:w }
- { \__siunitx_number_parse_uncert_marker:nw {#3} }
+ { \__siunitx_number_parse_uncert_marker:nnnw {#1} {#2} {#3} }
}
-\cs_new_protected:Npn \__siunitx_number_parse_uncert_marker:nw
- #1#2 \q_recursion_tail \q_recursion_stop
+\cs_new_protected:Npn \__siunitx_number_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} }
+ \tl_if_in:nVTF {#4} \l__siunitx_number_input_uncert_close_tl
{
- \str_if_eq:eeTF
- { \exp_not:V \l__siunitx_number_uncert_tl }
- { \prg_replicate:nn { \tl_count:N \l__siunitx_number_partial_tl } { 0 } }
- { \__siunitx_number_parse_uncert:NNN \c_false_bool }
- { \__siunitx_number_parse_uncert:NNN \c_true_bool }
- \__siunitx_number_parse_uncert_auxii:N
+ \exp_after:wN \__siunitx_number_parse_uncert_marker:Nnnn
+ \l__siunitx_number_input_uncert_close_tl
+ {#1} {#2} {#3}
}
- { \exp_after:wN \__siunitx_number_parse_uncert_extend:nnn \l__siunitx_number_parsed_tl }
- #2 \q_recursion_tail \q_recursion_stop
+ { \__siunitx_number_parse_loop_break:w }
+ #4 \q_recursion_tail \q_recursion_stop
}
-\cs_new_protected:Npn \__siunitx_number_parse_uncert_extend:nnn #1#2#3
+\cs_new_protected:Npn \__siunitx_number_parse_uncert_marker:Nnnn
+ #1#2#3#4
{
- \tl_set:Nn \l__siunitx_number_parsed_tl { {#1} {#2} { #3 0 } }
- \__siunitx_number_parse_uncert:NNN \c_true_bool
- \__siunitx_number_parse_uncert_auxii:N
+ \cs_set_protected:Npn \__siunitx_number_parse_uncert_marker:w ##1 #1
+ { \__siunitx_number_parse_uncert_marker:nnnnN {#2} {#3} {#4} {##1} #1 }
+ \__siunitx_number_parse_uncert_marker:w
}
+\cs_new_protected:Npn \__siunitx_number_parse_uncert_marker:w { }
+\cs_new_protected:Npn \__siunitx_number_parse_uncert_marker:nnnnN #1#2#3#4#5
+ {
+ \tl_set:Nx \l__siunitx_number_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__siunitx_number_partial_tl
+ {
+ \__siunitx_number_parse_uncert:NNN \c_false_bool
+ \__siunitx_number_parse_uncert_auxii:N
+ }
+ {
+ \__siunitx_number_parse_uncert:NNN \c_true_bool
+ \__siunitx_number_parse_uncert_auxii:N
+ }
+ #4#5
+ }
\cs_new_protected:Npn \__siunitx_number_parse_uncert_after:N #1
{
\tl_set:Nx \l__siunitx_number_uncert_tl
More information about the tex-live-commits
mailing list.