summaryrefslogtreecommitdiff
path: root/Master/texmf-dist
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2015-08-19 22:20:10 +0000
committerKarl Berry <karl@freefriends.org>2015-08-19 22:20:10 +0000
commit2e431097750226d3b07e434a16a319574a5370ad (patch)
tree4f2470f5d8e8a639e72ac14554e55a3cd8685c79 /Master/texmf-dist
parent4a6cd05140576229cbc491cdff4f700f5fb31f82 (diff)
siunitx (19aug15)
git-svn-id: svn://tug.org/texlive/trunk@38158 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist')
-rw-r--r--Master/texmf-dist/doc/latex/siunitx/LICENSE.md5
-rw-r--r--Master/texmf-dist/doc/latex/siunitx/README.md (renamed from Master/texmf-dist/doc/latex/siunitx/README)0
-rw-r--r--Master/texmf-dist/doc/latex/siunitx/README.txt55
-rw-r--r--Master/texmf-dist/doc/latex/siunitx/siunitx.pdfbin621615 -> 613031 bytes
-rw-r--r--Master/texmf-dist/source/latex/siunitx/siunitx.dtx437
-rw-r--r--Master/texmf-dist/source/latex/siunitx/siunitx.ins73
-rw-r--r--Master/texmf-dist/tex/latex/siunitx/siunitx-abbreviations.cfg2
-rw-r--r--Master/texmf-dist/tex/latex/siunitx/siunitx-binary.cfg2
-rw-r--r--Master/texmf-dist/tex/latex/siunitx/siunitx-version-1.cfg2
-rw-r--r--Master/texmf-dist/tex/latex/siunitx/siunitx.sty312
10 files changed, 526 insertions, 362 deletions
diff --git a/Master/texmf-dist/doc/latex/siunitx/LICENSE.md b/Master/texmf-dist/doc/latex/siunitx/LICENSE.md
new file mode 100644
index 00000000000..69cdc42a1a3
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/siunitx/LICENSE.md
@@ -0,0 +1,5 @@
+Released under the [LaTeX Project Public
+License](http://www.latex-project.org/lppl.txt), v1.3c or later.
+
+The package has status 'maintained': the current maintainer is
+[Joseph Wright](joseph.wright@morningstar2.co.uk). \ No newline at end of file
diff --git a/Master/texmf-dist/doc/latex/siunitx/README b/Master/texmf-dist/doc/latex/siunitx/README.md
index abccc7d4465..abccc7d4465 100644
--- a/Master/texmf-dist/doc/latex/siunitx/README
+++ b/Master/texmf-dist/doc/latex/siunitx/README.md
diff --git a/Master/texmf-dist/doc/latex/siunitx/README.txt b/Master/texmf-dist/doc/latex/siunitx/README.txt
new file mode 100644
index 00000000000..cf80911234b
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/siunitx/README.txt
@@ -0,0 +1,55 @@
+siunitx - A comprehensive (SI) units package
+==============================================
+
+Physical quantities have both numbers and units, and each
+physical quantity should be expressed as the product of a number
+and a unit. Typesetting physical quantities requires care to
+ensure that the combined mathematical meaning of the number-unit
+combination is clear. In particular, the SI units system lays
+down a consistent set of units with rules on how these are to be
+used. However, different countries and publishers have differing
+conventions on the exact appearance of numbers (and units). The
+`siunitx` package provides a set of tools for authors to typeset
+quantities in a consistent way. The package has an extended set
+of configuration options which make it possible to follow
+varying typographic conventions with the same input syntax. The
+package includes automated processing of numbers and units, and
+the ability to control tabular alignment of numbers.
+
+Installation
+------------
+
+The package is supplied in `dtx` format and as a pre-extracted
+zip file, `siunitx.tds.zip`. The later is most convenient for
+most users: simply unzip this in your local texmf directory . If
+you want to unpack the `.dtx` yourself, running `tex
+siunitx.dtx` will extract the package whereas `latex
+siunitx.dtx` will extract it and also typeset the documentation.
+
+The package requires LaTeX3 support as provided in the
+`l3kernel` and `l3packages` bundles. Both of these are available
+on [CTAN](http://www.ctan.org/) as ready-to-install zip files.
+Suitable versions are available in MiKTeX 2.9 and TeX Live 2015
+(updating the relevant packages online may be necessary).
+LaTeX3, and so `siunitx`, requires the e-TeX extensions: these
+are available on all modern TeX systems.
+
+Typesetting the documentation requires a number of packages in
+addition to those needed to use the package. This is mainly
+because of the number of demonstration items included in the
+text. To compile the documentation without error, you will
+need the packages:
+ - `amsmath`
+ - `booktabs`
+ - `cancel`
+ - `caption`
+ - `cleveref`
+ - `colortbl`
+ - `csquotes`
+ - `datatool`
+ - `helvet`
+ - `mathpazo`
+ - `multirow`
+ - `listings`
+ - `pgfplots`
+ - `xcolor`
diff --git a/Master/texmf-dist/doc/latex/siunitx/siunitx.pdf b/Master/texmf-dist/doc/latex/siunitx/siunitx.pdf
index b69deb012ac..8b3384be734 100644
--- a/Master/texmf-dist/doc/latex/siunitx/siunitx.pdf
+++ b/Master/texmf-dist/doc/latex/siunitx/siunitx.pdf
Binary files differ
diff --git a/Master/texmf-dist/source/latex/siunitx/siunitx.dtx b/Master/texmf-dist/source/latex/siunitx/siunitx.dtx
index 2842c9b939c..4f27817aa86 100644
--- a/Master/texmf-dist/source/latex/siunitx/siunitx.dtx
+++ b/Master/texmf-dist/source/latex/siunitx/siunitx.dtx
@@ -34,7 +34,7 @@ siunitx.dtx` will extract it and also typeset the documentation.
The package requires LaTeX3 support as provided in the
`l3kernel` and `l3packages` bundles. Both of these are available
on [CTAN](http://www.ctan.org/) as ready-to-install zip files.
-Suitable versions are available in MiKTeX 2.9 and TeX Live 2012
+Suitable versions are available in MiKTeX 2.9 and TeX Live 2015
(updating the relevant packages online may be necessary).
LaTeX3, and so `siunitx`, requires the e-TeX extensions: these
are available on all modern TeX systems.
@@ -125,7 +125,8 @@ This work consists of the file siunitx.dtx
\fi
%</internal>
%<*driver|package>
-\RequirePackage{expl3,xparse}
+\RequirePackage{expl3}[2015/03/01]
+\RequirePackage{xparse}
%</driver|package>
%<*driver>
\documentclass[german,french,spanish,english,UKenglish]{l3doc}
@@ -565,7 +566,7 @@ This work consists of the file siunitx.dtx
% nine digits to scientific notation}
%\changes{v2.5}{2012/04/07}{Minor change to table code to give fewer underfull
% boxes when comparators are used}
-%\changes{v2.5}{2012/04/08}{Reduced number of intrinsically-mathematical
+%\changes{v2.5}{2012/04/08}{Reduced number of intrinsically-mathematical
% options}
%\changes{v2.5a}{2012/04/19}{When creating free-standing unit, allow
% for \enquote{dynamic} nature of spacing (bug introduced in v2.5)}
@@ -620,7 +621,7 @@ This work consists of the file siunitx.dtx
% detected}
% \changes{v2.6c}{2014/10/01}{Fix use of \cs{micro} when \pkg{fontspec}
% is loaded but \pkg{unicode-math} is not}
-% \changes{v2.6d}{2014/10/07}{Fix conversion of \enquote{long} to
+% \changes{v2.6d}{2014/10/07}{Fix conversion of \enquote{long} to
% \enquote{short} uncertainty values with integer mantissas}
% \changes{v2.6e}{2015/01/21}{Auto-detect some packages where \pkg{fontspec}
% should not affect default symbol use}
@@ -629,6 +630,10 @@ This work consists of the file siunitx.dtx
% \changes{v2.6f}{2015/04/04}{Further work on \pkg{mathspec}}
% \changes{v2.6g}{2015/06/24}{Fix issue with empty table cells}
% \changes{v2.6h}{2015/07/17}{Update internals to track \pkg{expl3} changes}
+% \changes{v2.6i}{2015/08/18}{Fix rounding of numbers with large numbers of
+% digits}
+% \changes{v2.6i}{2015/08/18}{Fix behaviour of \cs{cancel} when printing
+% in math mode}
%
%\begin{abstract}
% Physical quantities have both numbers and units, and each physical
@@ -686,7 +691,7 @@ This work consists of the file siunitx.dtx
% \pkg{l3kernel} and \pkg{l3packages} bundles. Both of these are available
% on \href{http://www.ctan.org}{\textsc{ctan}} as ready-to-install
% zip files. Suitable versions are available in MiK\TeX{}~2.9 and
-% \TeX{}~Live 2012 (updating the relevant packages online may be
+% \TeX{}~Live 2015 (updating the relevant packages online may be
% necessary). \LaTeX3, and so \pkg{siunitx}, requires the \eTeX{}
% extensions: these are available on all modern \TeX{} systems.
%
@@ -3015,7 +3020,7 @@ This work consists of the file siunitx.dtx
% \opt{qualifier-mode} option}
% \changes{v2.5d}{2012/06/11}{New \opt{phrase} choice for \opt{qualifier-mode}
% option}
-% \DescribeOption{qualifier-phrase}
+% \DescribeOption{qualifier-phrase}
% \changes{v2.5d}{2012/06/11}{New \opt{qualifier-phrase} option}
% Unit qualifiers can be printed in three different formats, set by the
% \opt{qualifier-mode} option. The standard setting is \opt{subscript},
@@ -3039,7 +3044,7 @@ This work consists of the file siunitx.dtx
% \si[qualifier-mode = phrase]
% {\kilogram\polymer\squared\per\mole\catalyst\per\hour} \\
% \si[qualifier-mode = phrase, qualifier-phrase = { by }]
-% {\kilogram\polymer\squared\per\mole\catalyst\per\hour} \\
+% {\kilogram\polymer\squared\per\mole\catalyst\per\hour} \\
%\end{LaTeXdemo}
%
%\DescribeOption{prefixes-as-symbols}
@@ -4789,7 +4794,7 @@ This work consists of the file siunitx.dtx
% math or text mode, the \enquote{intrinsic} math mode options could lead to
% inconsistent output. The only options which now force math mode are those
% for products, which will almost always require the use of math mode.
-%
+%
% \subsection{Upgrading from version 2.4}
%
% The process of removing options which assume math mode, begun with
@@ -5143,7 +5148,7 @@ This work consists of the file siunitx.dtx
% \begin{macrocode}
%<*package>
% \end{macrocode}
-%
+%
% \begin{macrocode}
%<@@=siunitx>
% \end{macrocode}
@@ -5152,7 +5157,7 @@ This work consists of the file siunitx.dtx
%
% The usual preliminaries.
% \begin{macrocode}
-\ProvidesExplPackage {siunitx} {2015/07/17} {2.6h}
+\ProvidesExplPackage {siunitx} {2015/08/18} {2.6i}
{A comprehensive (SI) units package}
% \end{macrocode}
%
@@ -5160,7 +5165,7 @@ This work consists of the file siunitx.dtx
% This will also trap any problems with \pkg{l3packages} (as the two are now
% tied together, version-wise).
% \begin{macrocode}
-\@ifpackagelater { expl3 } { 2012/11/21 }
+\@ifpackagelater { expl3 } { 2015/03/01 }
{ }
{
\PackageError { siunitx } { Support~package~expl3~too~old }
@@ -5213,18 +5218,12 @@ This work consists of the file siunitx.dtx
% \end{macrocode}
%\end{macro}
%
-% \begin{macro}{\clist_map_function:nc}
+% Add some variants.
% \begin{macrocode}
\cs_generate_variant:Nn \clist_map_function:nN { nc }
+\cs_generate_variant:Nn \tl_if_blank:nTF { V }
+\cs_generate_variant:Nn \tl_replace_all:Nnn { No, NV }
% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\tl_if_blank:VTF}
-% Needed for the literal test.
-% \begin{macrocode}
-\cs_generate_variant:Nn \tl_if_blank:nTF { V }
-% \end{macrocode}
-% \end{macro}
%
%\begin{macro}{
% \l_@@_tmp_bool ,
@@ -5288,7 +5287,7 @@ This work consists of the file siunitx.dtx
% To allow the correct symbol to appear in text mode: this is the same
% as \cs{textminus} from \pkg{textcomp}. If \pkg{fontspec} is loaded
% then the real character can be used unless there's a good reason
-% to suspect
+% to suspect
% \begin{macrocode}
\DeclareTextSymbolDefault \c_@@_minus_tl { TS1 }
\DeclareTextSymbol \c_@@_minus_tl { TS1 } { 61 }
@@ -5591,55 +5590,54 @@ This work consists of the file siunitx.dtx
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\tl_if_in:NVTF, \tl_replace_all:NnV}
% Variants needed which are not in \pkg{expl3}.
% \begin{macrocode}
+\cs_generate_variant:Nn \tl_if_empty_p:n { f }
+\cs_generate_variant:Nn \tl_if_empty:nT { f }
\cs_generate_variant:Nn \tl_if_in:NnTF { NV }
\cs_generate_variant:Nn \tl_replace_all:Nnn { NnV }
% \end{macrocode}
-% \end{macro}
%
-%\begin{macro}[pTF]{
-% \@@_cs_if_tl:N ,
-% \@@_cs_if_macro:N
-%}
-%\begin{macro}[aux]{\@@_cs_if_tl_aux:w}
-% This is basically a re-hash of stuff from \pkg{expl3}, but to test for
-% short macros only. The second test (with the \cs{cs_to_str:N} part)
-% is checking for \LaTeXe{} robust commands.
+% \begin{macro}[pTF]{\@@_cs_if_tl:N}
+% A test for token lists (more or less).
% \begin{macrocode}
-\group_begin:
-\tl_map_inline:nn { \M \A \C \R \O }
- { \char_set_catcode_other:n { `#1 } }
-\tl_map_inline:nn { \F \N \T }
- { \char_set_lccode:nn { `#1 } { `#1 } }
-\tl_to_lowercase:n {
- \group_end:
- \prg_new_conditional:Npnn \@@_cs_if_tl:N #1 { T , F, TF , p }
- {
- \exp_last_unbraced:No \@@_cs_if_tl_aux:w
- { \token_to_meaning:N #1 MACRO \q_stop }
+\prg_new_conditional:Npnn \@@_cs_if_tl:N #1 { T, F , TF , p }
+ {
+ \bool_if:nTF
+ {
+ \tl_if_empty_p:f
{
- \cs_if_exist:cTF { \cs_to_str:N #1 ~ }
- { \prg_return_false: }
- { \prg_return_true: }
+ \token_get_prefix_spec:N #1
+ \token_get_arg_spec:N #1
}
- { \prg_return_false: }
- }
- \cs_new:Npn \@@_cs_if_tl_aux:w #1 MACRO #2 \q_stop
- { \tl_if_empty:nTF {#1} }
- \prg_new_conditional:Npnn \@@_cs_if_macro:N #1
- { T , F , TF , p }
- {
- \exp_last_unbraced:No \@@_cs_if_tl_aux:w
- { \token_to_meaning:N #1 MACRO \q_stop }
- { \prg_return_true: }
- { \prg_return_false: }
- }
-}
+ && ! \cs_if_exist_p:c { \cs_to_str:N #1 ~ }
+ }
+ { \prg_return_true: }
+ { \prg_return_false: }
+ }
% \end{macrocode}
-%\end{macro}
-%\end{macro}
+% \end{macro}
+%
+% \begin{macro}[EXP]
+% {\@@_number_if_zero:nTF, \@@_number_if_zero_p:n \@@_number_if_zero_p:V}
+% \begin{macro}[EXP, aux]{\@@_number_if_zero_aux:n}
+% A test for all of the input to a function being made up of zeros:
+% needed to avoid overflowing \TeX{}'s integer range.
+% \begin{macrocode}
+\prg_new_conditional:Npnn \@@_number_if_zero:n #1 { p , TF }
+ {
+ \tl_map_function:nN {#1} \@@_number_if_zero_aux:n
+ \prg_return_true:
+ }
+\cs_generate_variant:Nn \@@_number_if_zero_p:n { V }
+\cs_new:Npn \@@_number_if_zero_aux:n #1
+ {
+ \token_if_eq_charcode:NNF #1 0
+ { \tl_map_break:n { \prg_return_false: \use_none:n } }
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
%
% If \pkg{tex4ht} is in use, make a few changes to give nicer looking
% conversion to other formats.
@@ -5657,7 +5655,7 @@ This work consists of the file siunitx.dtx
{ }
}
% \end{macrocode}
-%
+%
% \begin{macro}{\@@_ensure_ltr:n}
% When the \pkg{bidi} package is loaded with \XeTeX{} we need to make sure
% that \cs{text} is doing the correct thing. The \pkg{bidi} package seems to
@@ -5750,7 +5748,7 @@ This work consists of the file siunitx.dtx
}
\group_end:
}
-\tl_put_right:Nn \document
+\tl_put_right:Nn \document
{
\@@_set_math_fam:n { sf }
\@@_set_math_fam:n { tt }
@@ -6412,11 +6410,9 @@ This work consists of the file siunitx.dtx
% \end{macrocode}
%\end{macro}
%
-%\begin{macro}{
-% \@@_print_math: ,
-% \@@_print_text:,
-% \@@_print_text_aux:
-%}
+% \begin{macro}{\@@_print_math:, \@@_print_text:}
+% \begin{macro}[aux]{\@@_print_text_aux:}
+% \begin{macro}[aux]{\@@_print_text_aux:NnN}
% Printing the text means replacing any awkward characters, which is
% dependent on the output mode. The rest of the package uses "_" and
% "^" to represent sub- and superscripts, respectively. In this way,
@@ -6438,43 +6434,39 @@ This work consists of the file siunitx.dtx
{ \l_@@_print_arg_tl }
}
}
-\group_begin:
- \char_set_lccode:nn { `\@ } { `\_ }
- \char_set_catcode_math_subscript:N \@
- \char_set_lccode:nn { `\! } { `\_ }
- \char_set_catcode_active:N \!
- \char_set_lccode:nn { `\= } { `\_ }
- \char_set_lccode:nn { `\+ } { `\^ }
-\tl_to_lowercase:n {
- \group_end:
- \cs_new_protected:Npn \@@_print_text:
- {
- \tl_replace_all:Nnn \l_@@_print_arg_tl { - }
- { \c_@@_minus_tl }
- \@@_print_text_aux:
- \tl_replace_all:Nnn \l_@@_print_arg_tl { \mp }
- { \ensuremath { \mp } }
- \tl_remove_all:Nn \l_@@_print_arg_tl { \mathord }
- \cs_set_eq:NN \PrintSubscript \@@_print_text_sub:n
- \cs_set_eq:NN \PrintSuperscript \@@_print_text_super:n
- \tl_replace_all:Nnn \l_@@_print_arg_tl { @ }
- { \@@_print_text_sub:n }
- \tl_replace_all:Nnn \l_@@_print_arg_tl { ! }
- { \@@_print_text_sub:n }
- \tl_replace_all:Nnn \l_@@_print_arg_tl { = }
- { \@@_print_text_sub:n }
- \tl_replace_all:Nnn \l_@@_print_arg_tl { ^ }
- { \@@_print_text_super:n }
- \tl_replace_all:Nnn \l_@@_print_arg_tl { + }
- { \@@_print_text_super:n }
- \l_@@_print_arg_tl
- }
-}
+\cs_new_protected_nopar:Npn \@@_print_text:
+ {
+ \tl_replace_all:Nnn \l_@@_print_arg_tl { - }
+ { \c_@@_minus_tl }
+ \@@_print_text_aux:
+ \tl_replace_all:Nnn \l_@@_print_arg_tl { \mp }
+ { \ensuremath { \mp } }
+ \tl_remove_all:Nn \l_@@_print_arg_tl { \mathord }
+ \cs_set_eq:NN \PrintSubscript \@@_print_text_sub:n
+ \cs_set_eq:NN \PrintSuperscript \@@_print_text_super:n
+ \__siunitx_print_text_aux:NnN
+ _ { math_subscript } \@@_print_text_sub:n
+ _ { active } \@@_print_text_sub:n
+ ^ { math_superscript } \@@_print_text_super:n
+ ^ { active } \@@_print_text_super:n
+ \q_recursion_tail ? ?
+ \q_recursion_stop
+ \l_@@_print_arg_tl
+ }
\cs_new_protected:Npn \@@_print_text_aux:
{
\tl_replace_all:Nnn \l_@@_print_arg_tl { \pm }
{ \ensuremath { \pm } }
}
+\cs_new_protected:Npn \@@_print_text_aux:NnN #1#2#3
+ {
+ \quark_if_recursion_tail_stop:N #1
+ \tl_set_rescan:Nnn \l_@@_tmp_tl
+ { \use:c { char_set_catcode_ #2 :N } #1 }
+ {#1}
+ \tl_replace_all:NVn \l_@@_print_arg_tl \l_@@_tmp_tl {#3}
+ \_@@_print_text_aux:NnN
+ }
\AtBeginDocument
{
\@ifpackageloaded { textcomp }
@@ -6488,7 +6480,9 @@ This work consists of the file siunitx.dtx
{ }
}
% \end{macrocode}
-%\end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
%
%\begin{macro}{
% \@@_print_text_sub:n ,
@@ -6892,7 +6886,7 @@ This work consists of the file siunitx.dtx
{%
\char_set_catcode_ignore:N\ %
\char_set_catcode_other:N\,%
- \char_set_catcode_other:N\.%
+ \char_set_catcode_other:N\.%
}%
{#1}%
\exp_args:NNNV\group_end:
@@ -6984,28 +6978,41 @@ This work consists of the file siunitx.dtx
%\end{macro}
%\end{macro}
%
-%\begin{macro}{\@@_number_in_sign_replace:N}
-% A short spin-out to keep the replacement of tokens clear.
+% \begin{macro}[int]{\@@_number_in_sign_replace:N}
+% \begin{macro}[aux]{\@@_number_in_sign_replace_aux:N}
+% \begin{macro}[aux]{\@@_number_in_sign_replace_aux:NnN}
+% A short spin-out to keep the replacement of tokens clear.
+% The case where |-| is active needs special treatment and
+% needs to come first.
% \begin{macrocode}
+\cs_new_protected:Npn \@@_number_in_sign_replace:N #1
+ {
+ \@@_number_in_sign_replace_aux:N #1
+ \@@_number_in_sign_replace_aux:NnN #1
+ { -+ } \mp
+ { +- } \pm
+ { << } \ll
+ { <= } \le
+ { >> } \gg
+ { >= } \ge
+ { ?? } \q_recursion_tail
+ \q_recursion_stop
+ }
\group_begin:
-\char_set_catcode_active:N \*
-\char_set_lccode:nn { `\* } { `\- }
-\tl_to_lowercase:n
+ \char_set_catcode_active:N -
+ \cs_new_protected:Npx \_@@_number_in_sign_replace_aux:N #1
+ { \tl_replace_all:Nnn #1 { \exp_not:N - } { \token_to_str:N - } }
+\group_end:
+\cs_new_protected:Npn \@@_number_in_sign_replace_aux:NnN #1#2#3
{
- \group_end:
- \cs_new_protected:Npn \@@_number_in_sign_replace:N #1
- {
- \tl_replace_all:Nnn #1 { * } { - }
- \tl_replace_all:Nnn #1 { -+ } { \mp }
- \tl_replace_all:Nnn #1 { +- } { \pm }
- \tl_replace_all:Nnn #1 { << } { \ll }
- \tl_replace_all:Nnn #1 { <= } { \le }
- \tl_replace_all:Nnn #1 { >> } { \gg }
- \tl_replace_all:Nnn #1 { >= } { \ge }
- }
+ \quark_if_recursion_tail_stop:N #3
+ \tl_replace_all:Nnn #1 {#2} {#3}
+ \@@_number_in_sign_replace_aux:NnN #1
}
% \end{macrocode}
-%\end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
%
%\begin{macro}{
% \@@_number_in_parse_error:nn ,
@@ -8364,7 +8371,7 @@ This work consists of the file siunitx.dtx
}
}
{
- \int_compare:nNnTF { 0 #1 } = { 0 }
+ \@@_number_if_zero:nTF {#1}
{
\@@_number_process_fixed_aux_ii:nnn {##1} {##2}
{ #3 - 1 }
@@ -8804,12 +8811,11 @@ This work consists of the file siunitx.dtx
% \begin{macrocode}
\cs_new_protected:Npn \@@_number_process_round_tidy:n #1
{
- \int_compare:nNnTF
- {
- 0 \l_@@_round_integer_out_tl +
- 0 \l_@@_round_decimal_out_tl
+ \bool_if:nTF
+ {
+ \@@_number_if_zero_p:V \l_@@_round_integer_out_tl
+ && \@@_number_if_zero_p:V \l_@@_round_decimal_out_tl
}
- = \c_zero
{
\str_if_eq:VnTF \l_@@_process_round_min_tl { 0 }
{
@@ -8854,6 +8860,7 @@ This work consists of the file siunitx.dtx
% \@@_number_process_scientific_aux_i:nnn ,
% \@@_number_process_scientific_aux_ii:nnn ,
% \@@_number_process_scientific_large:nnn ,
+% \@@_number_process_scientific_large_loop:nNN ,
% \@@_number_process_scientific_small:wn ,
% \@@_number_process_scientific_store:nnn ,
% \@@_number_process_scientific_engineering:nnn ,
@@ -8914,40 +8921,43 @@ This work consists of the file siunitx.dtx
% \begin{macrocode}
\cs_new_protected:Npn
\@@_number_process_scientific_aux_ii:nnn #1#2#3 {
- \int_compare:nNnTF {#1} > { 9 }
+ \int_compare:nNnTF { \tl_count:n {#1} } > \c_one
{ \@@_number_process_scientific_large:nnn {#1} {#2} {#3} }
{
- \int_compare:nNnTF {#1} > { 0 }
+ \@@_number_if_zero:nTF {#1}
+ {
+ \@@_number_process_scientific_small:wn
+ #2 \q_stop {#3}
+ }
{
\bool_if:NTF \l_@@_process_engineering_bool
{ \@@_number_process_scientific_engineering:nnn }
{ \@@_number_process_scientific_store:nnn }
{#1} {#2} {#3}
}
- {
- \@@_number_process_scientific_small:wn
- #2 \q_stop {#3}
- }
+
}
}
% \end{macrocode}
-% The fastest way to find the smallest digit of the integer part is
-% using some mathematics. This does limit the range of the input, but
-% in real cases this should not be an issue.
+% A faster approach here is to use integer maths to do the digit move,
+% but that runs into problems with the range available for the input.
+% Instead, we use a loop to find the last digit.
% \begin{macrocode}
-\cs_new_protected:Npn
- \@@_number_process_scientific_large:nnn #1#2#3 {
- \int_set:Nn \l_@@_tmp_int { \int_div_truncate:nn {#1} { 10 } }
- \tl_set:Nx \l_@@_tmpa_tl { \int_use:N \l_@@_tmp_int }
- \int_set:Nn \l_@@_tmp_int { #1 - 10 * \l_@@_tmp_int }
- \tl_set:Nx \l_@@_tmpa_tl
- {
- { \l_@@_tmpa_tl } { \int_use:N \l_@@_tmp_int #2 }
- { #3 + 1 }
- }
- \exp_after:wN \@@_number_process_scientific_aux_ii:nnn
- \l_@@_tmpa_tl
-}
+\cs_new_protected:Npn \@@_number_process_scientific_large:nnn #1#2#3
+ {
+ \cs_set_protected:Npn \@@_number_process_scientific_large_loop:nNN
+ ##1##2##3
+ {
+ \quark_if_recursion_tail_stop_do:Nn ##3
+ {
+ \@@_number_process_scientific_aux_ii:nnn {##1} { ##2 #2 }
+ { #3 + \c_one }
+ }
+ \@@_number_process_scientific_large_loop:nNN { ##1 ##2 } ##3
+ }
+ \@@_number_process_scientific_large_loop:nNN { } #1
+ \q_recursion_tail \q_recursion_stop
+ }
% \end{macrocode}
% For small numbers, the important digit is easy to find.
% \begin{macrocode}
@@ -10149,7 +10159,7 @@ This work consists of the file siunitx.dtx
\bool_if:NTF \l_@@_tight_bool
{
\tl_set:Nx \l_@@_tmpa_tl
- { \exp_not:N \mathord \exp_not:V \l_@@_tmpa_tl }
+ { \exp_not:N \mathord \exp_not:V \l_@@_tmpa_tl }
}
{
\prop_if_in:NnT \l_@@_number_out_prop { mantissa }
@@ -11311,6 +11321,7 @@ This work consists of the file siunitx.dtx
%\end{macro}
%
%\begin{macro}{\cancel}
+%\begin{macro}[aux]{\@@_real_cancel:n}
%\begin{macro}[aux]{\@@_cancel:n}
% The \cs{cancel} macro is odd as it is only defined if the appropriate
% package is loaded.
@@ -11318,7 +11329,9 @@ This work consists of the file siunitx.dtx
\AtBeginDocument {
\cs_if_exist:NT \cancel
{
- \cs_set_eq:NN \@@_cancel:n \cancel
+ \cs_set_protected:Npn \@@_cancel:n #1
+ { \@@__real_cancel:n { \@@_print:nn { unit } {#1} } }
+ \cs_set_eq:NN \@@__real_cancel:n \cancel
\seq_put_right:Nn \l_@@_declare_list_seq { \cancel }
\cs_new_protected:cpn
{ @@_ \token_to_str:N \cancel _function:w }
@@ -11328,6 +11341,7 @@ This work consists of the file siunitx.dtx
% \end{macrocode}
%\end{macro}
%\end{macro}
+%\end{macro}
%
%\begin{macro}{\highlight}
% Another special function: selective colour.
@@ -11534,7 +11548,7 @@ This work consists of the file siunitx.dtx
\cs_new_protected:Npn \@@_protect_symbols:N #1 {
\cs_if_exist:NT #1
{
- \@@_cs_if_macro:NT #1
+ \tl_if_empty:fT { \token_get_prefix_spec:N #1 }
{ \cs_set_protected:Npx #1 { \exp_not:V #1 } }
}
}
@@ -12277,29 +12291,27 @@ This work consists of the file siunitx.dtx
% the outer level.
% \begin{macrocode}
\group_begin:
- \char_set_lccode:nn { `\+ } { `\^ }
\char_set_catcode_active:N \~
-\tl_to_lowercase:n
- {
- \group_end:
- \cs_new_protected:Npn \@@_unit_format_literal:n #1
- {
- \int_zero:N \l_@@_unit_prefix_int
- \seq_map_inline:Nn \l_@@_declare_list_seq
- { \@@_unit_print_literal_aux:N ##1 }
- \tl_set:Nn \l_@@_unit_tl {#1}
- \tl_replace_all:NnV \l_@@_unit_tl { . } \l_@@_unit_product_tl
- \tl_replace_all:NnV \l_@@_unit_tl { ~ } \l_@@_unit_product_tl
- \bool_if:NT \l_@@_literal_power_bool
- {
- \tl_replace_all:Nnn \l_@@_unit_tl { ^ }
- { \@@_unit_format_literal_power:n }
- \tl_replace_all:Nnn \l_@@_unit_tl { + }
- { \@@_unit_format_literal_power:n }
- }
- \@@_unit_format_literal_extras:
- }
- }
+ \cs_new_protected:Npn \@@_unit_format_literal:n #1
+ {
+ \int_zero:N \l_@@_unit_prefix_int
+ \seq_map_inline:Nn \l_@@_declare_list_seq
+ { \@@_unit_print_literal_aux:N ##1 }
+ \tl_set:Nn \l_@@_unit_tl {#1}
+ \tl_replace_all:NnV \l_@@_unit_tl { . }
+ \l_@@_unit_product_tl
+ \tl_replace_all:NnV \l_@@_unit_tl { ~ }
+ \l_@@_unit_product_tl
+ \bool_if:NT \l_@@_literal_power_bool
+ {
+ \tl_replace_all:Nnn \l_@@_unit_tl { ^ }
+ { \@@_unit_format_literal_power:n }
+ \tl_replace_all:Non \l_@@_unit_tl { \token_to_str:N ^ }
+ { \@@_unit_format_literal_power:n }
+ }
+ \@@_unit_format_literal_extras:
+ }
+\group_end:
\cs_new_protected:Npn \@@_unit_print_literal_aux:N #1
{ \cs_set_eq:Nc #1 { @@_ \token_to_str:N #1 _literal:w } }
\cs_new_protected:Npn \@@_unit_format_literal_power:n #1
@@ -13273,7 +13285,7 @@ This work consists of the file siunitx.dtx
{
\tl_set_eq:NN \l_@@_tmpa_tl \l_@@_exponent_product_tl
\bool_if:NT \l_@@_tight_bool
- {
+ {
\tl_set:Nx \l_@@_tmpa_tl
{ \exp_not:N \mathord \exp_not:o \l_@@_tmpa_tl }
}
@@ -13309,7 +13321,7 @@ This work consists of the file siunitx.dtx
\cs_undefine:N \NC@find@S
\msg_new:nnn { siunitx } { moved-cellspace-column }
{ Column~type~for~cellspace~package~moved~to~'#1'. }
- \msg_warning:nnn { siunitx } { moved-cellspace-column } { C }
+ \msg_warning:nnn { siunitx } { moved-cellspace-column } { C }
}
{ }
}
@@ -13852,7 +13864,7 @@ This work consists of the file siunitx.dtx
{
\skip_horizontal:n { \c_@@_one_fill_skip - ##1 }
\tex_kern:D \c_zero_skip
- \hbox_set_inline_end:
+ \hbox_set_end:
\@@_table_colortbl_correction:
}
}
@@ -14859,7 +14871,7 @@ This work consists of the file siunitx.dtx
{
\cs_set_eq:NN \@@_table_print_S_reserved_store_fill:n
\@@_table_print_S_reserved_store_fill_mid:n
- \@@_table_print_S_reserved_store_fill:n
+ \@@_table_print_S_reserved_store_fill:n
{ \box_wd:N \l_@@_tmp_box }
}
}
@@ -14928,7 +14940,7 @@ This work consists of the file siunitx.dtx
\dim_set:Nn \l_@@_table_exponent_dim
{ \box_wd:N \l_@@_tmp_box }
\tl_if_empty:NT \l_@@_output_exponent_tl
- {
+ {
\prop_if_in:NnTF \l_@@_number_out_prop { mantissa }
{ \@@_table_print_S_reserved_exponent_product: }
{ \@@_table_print_S_reserved_exponent_product_correction: }
@@ -15388,19 +15400,25 @@ This work consists of the file siunitx.dtx
%\end{macro}
%\end{macro}
%
-%\begin{macro}{\@@_symbol_new:n}
-% For creating the outer symbol macro.
+% \begin{macro}{\@@_symbol_new:n}
+% For creating the outer symbol macro.
% \begin{macrocode}
-\cs_new_protected:Npn \@@_symbol_new:n #1 {
- \cs_set_protected:cpn { SIUnitSymbol #1 }
- {
- \mode_if_math:TF
- { \tl_to_lowercase:n { \use:c { l_@@_ #1 _math_tl } } }
- { \tl_to_lowercase:n { \use:c { l_@@_ #1 _text_tl } } }
- }
-}
+\cs_new_protected:Npn \@@_symbol_new:n #1
+ {
+ \cs_set_protected:cpn { SIUnitSymbol #1 }
+ {
+ \use:c
+ {
+ l__@@_
+ \str_fold_case:n {#1}
+ _
+ \mode_if_math:TF { math } { text }
+ _tl
+ }
+ }
+ }
% \end{macrocode}
-%\end{macro}
+% \end{macro}
%
%\begin{macro}{\SIUnitSymbolAngstrom}
%\begin{macro}{\SIUnitSymbolArcminute}
@@ -15551,7 +15569,7 @@ This work consists of the file siunitx.dtx
{ set~thousands~separator = { \exp_not:V \l_@@_group_sep_tl } }
\clist_put_right:Nx \l_@@_pgf_link_clist
{
- min~exponent~for~1000~sep = \int_eval:n { \l_@@_group_min_int - \c_one }
+ min~exponent~for~1000~sep = \int_eval:n { \l_@@_group_min_int - \c_one }
}
\bool_if:nF
{
@@ -16347,14 +16365,15 @@ This work consists of the file siunitx.dtx
% A set of \enquote{natural units}.
% \begin{macrocode}
\group_begin:
- \char_set_lccode:nn { `\@ } { `\_ }
- \char_set_catcode_math_subscript:N \@
-\tl_to_lowercase:n {
- \group_end:
- \DeclareSIUnit \clight { \text { \ensuremath { c @ { 0 } } } }
- \DeclareSIUnit \electronmass
- { \text { \ensuremath { m @ { \text { e } } } } }
-}
+\cs_set_eq:NN \endgroup \group_end:
+\char_set_catcode_math_subscript:N \_
+\use:n
+ {
+ \endgroup
+ \DeclareSIUnit \clight { \text { \ensuremath { c _ { 0 } } } }
+ \DeclareSIUnit \electronmass
+ { \text { \ensuremath { m _ { \textup { e } } } } }
+ }
\DeclareSIUnit \planckbar { \text { \ensuremath { \hbar } } }
% \end{macrocode}
%\end{macro}
@@ -16367,15 +16386,15 @@ This work consists of the file siunitx.dtx
% \begin{macrocode}
\DeclareSIUnit \elementarycharge { \text { \ensuremath { e } } }
\group_begin:
- \char_set_lccode:nn { `\@ } { `\_ }
- \char_set_lccode:nn { `\E } { `\E }
- \char_set_catcode_math_subscript:N \@
-\tl_to_lowercase:n {
- \group_end:
- \DeclareSIUnit \bohr { \text { \ensuremath { a @ { 0 } } } }
- \DeclareSIUnit \hartree
- { \text { \ensuremath { E @ { \textup { h } } } } }
-}
+\cs_set_eq:NN \endgroup \group_end:
+\char_set_catcode_math_subscript:N \_
+\use:n
+ {
+ \endgroup
+ \DeclareSIUnit \bohr { \text { \ensuremath { a _ { 0 } } } }
+ \DeclareSIUnit \hartree
+ { \text { \ensuremath { E _ { \textup { h } } } } }
+ }
% \end{macrocode}
%\end{macro}
%\end{macro}
@@ -16650,7 +16669,7 @@ This work consists of the file siunitx.dtx
% \begin{macrocode}
\ProcessKeysOptions { siunitx }
% \end{macrocode}
-%
+%
% Creating document commands has to happen here so it is after any load-time
% changes to the units available.
% \begin{macrocode}
@@ -16672,7 +16691,7 @@ This work consists of the file siunitx.dtx
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplFile {siunitx-version-1.cfg} {2015/07/17} {2.6h}
+\ProvidesExplFile {siunitx-version-1.cfg} {2015/08/18} {2.6i}
{siunitx: Version 1 settings}
% \end{macrocode}
%
@@ -17614,7 +17633,7 @@ This work consists of the file siunitx.dtx
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplFile {siunitx-abbreviations.cfg} {2015/07/17} {2.6h}
+\ProvidesExplFile {siunitx-abbreviations.cfg} {2015/08/18} {2.6i}
{siunitx: Abbreviated units}
% \end{macrocode}
%
@@ -17796,7 +17815,7 @@ This work consists of the file siunitx.dtx
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplFile {siunitx-binary.cfg} {2015/07/17} {2.6h}
+\ProvidesExplFile {siunitx-binary.cfg} {2015/08/18} {2.6i}
{siunitx: Binary units}
% \end{macrocode}
%
diff --git a/Master/texmf-dist/source/latex/siunitx/siunitx.ins b/Master/texmf-dist/source/latex/siunitx/siunitx.ins
new file mode 100644
index 00000000000..5e14df6d890
--- /dev/null
+++ b/Master/texmf-dist/source/latex/siunitx/siunitx.ins
@@ -0,0 +1,73 @@
+%%
+%% This is file `siunitx.ins',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% siunitx.dtx (with options: `install')
+%% ---------------------------------------------------------------
+%% The siunitx package --- A comprehensive (SI) units package
+%% Maintained by Joseph Wright
+%% E-mail: joseph.wright@morningstar2.co.uk
+%% Released under the LaTeX Project Public License v1.3c or later
+%% See http://www.latex-project.org/lppl.txt
+%% ---------------------------------------------------------------
+%%
+\input l3docstrip.tex
+\keepsilent
+\askforoverwritefalse
+\preamble
+---------------------------------------------------------------
+The siunitx package --- A comprehensive (SI) units package
+Maintained by Joseph Wright
+E-mail: joseph.wright@morningstar2.co.uk
+Released under the LaTeX Project Public License v1.3c or later
+See http://www.latex-project.org/lppl.txt
+---------------------------------------------------------------
+
+\endpreamble
+\postamble
+Copyright (C) 2008-2014 by
+ Joseph Wright <joseph.wright@morningstar2.co.uk>
+
+It may be distributed and/or modified under the conditions of
+the LaTeX Project Public License (LPPL), either version 1.3c of
+this license or (at your option) any later version. The latest
+version of this license is in the file:
+ http://www.latex-project.org/lppl.txt
+
+This work is "maintained" (as per LPPL maintenance status) by
+ Joseph Wright.
+
+This work consists of the file siunitx.dtx
+ and the derived files siunitx.pdf,
+ siunitx.sty and
+ siunitx.ins.
+\endpostamble
+\usedir{tex/latex/siunitx}
+\generate{
+ \file{\jobname.sty}{\from{\jobname.dtx}{package}}
+ \file{siunitx-abbreviations.cfg}
+ {\from{\jobname.dtx}{config,abbreviations}}
+ \file{siunitx-binary.cfg}{\from{\jobname.dtx}{config,binary}}
+ \file{siunitx-version-1.cfg}{\from{\jobname.dtx}{config,version-1}}
+}
+\endbatchfile
+%% Copyright (C) 2008-2014 by
+%% Joseph Wright <joseph.wright@morningstar2.co.uk>
+%%
+%% It may be distributed and/or modified under the conditions of
+%% the LaTeX Project Public License (LPPL), either version 1.3c of
+%% this license or (at your option) any later version. The latest
+%% version of this license is in the file:
+%% http://www.latex-project.org/lppl.txt
+%%
+%% This work is "maintained" (as per LPPL maintenance status) by
+%% Joseph Wright.
+%%
+%% This work consists of the file siunitx.dtx
+%% and the derived files siunitx.pdf,
+%% siunitx.sty and
+%% siunitx.ins.
+%%
+%% End of file `siunitx.ins'.
diff --git a/Master/texmf-dist/tex/latex/siunitx/siunitx-abbreviations.cfg b/Master/texmf-dist/tex/latex/siunitx/siunitx-abbreviations.cfg
index 1ff08112265..93a190e8a84 100644
--- a/Master/texmf-dist/tex/latex/siunitx/siunitx-abbreviations.cfg
+++ b/Master/texmf-dist/tex/latex/siunitx/siunitx-abbreviations.cfg
@@ -13,7 +13,7 @@
%% See http://www.latex-project.org/lppl.txt
%% ---------------------------------------------------------------
%%
-\ProvidesExplFile {siunitx-abbreviations.cfg} {2015/07/17} {2.6h}
+\ProvidesExplFile {siunitx-abbreviations.cfg} {2015/08/18} {2.6i}
{siunitx: Abbreviated units}
\DeclareSIUnit \A { \ampere }
\DeclareSIUnit \pA { \pico \ampere }
diff --git a/Master/texmf-dist/tex/latex/siunitx/siunitx-binary.cfg b/Master/texmf-dist/tex/latex/siunitx/siunitx-binary.cfg
index b528ebdf461..7ae64a2772e 100644
--- a/Master/texmf-dist/tex/latex/siunitx/siunitx-binary.cfg
+++ b/Master/texmf-dist/tex/latex/siunitx/siunitx-binary.cfg
@@ -13,7 +13,7 @@
%% See http://www.latex-project.org/lppl.txt
%% ---------------------------------------------------------------
%%
-\ProvidesExplFile {siunitx-binary.cfg} {2015/07/17} {2.6h}
+\ProvidesExplFile {siunitx-binary.cfg} {2015/08/18} {2.6i}
{siunitx: Binary units}
\DeclareBinaryPrefix \kibi { Ki } { 10 }
\DeclareBinaryPrefix \mebi { Mi } { 20 }
diff --git a/Master/texmf-dist/tex/latex/siunitx/siunitx-version-1.cfg b/Master/texmf-dist/tex/latex/siunitx/siunitx-version-1.cfg
index 24b7aec823b..9ffcee26a6f 100644
--- a/Master/texmf-dist/tex/latex/siunitx/siunitx-version-1.cfg
+++ b/Master/texmf-dist/tex/latex/siunitx/siunitx-version-1.cfg
@@ -13,7 +13,7 @@
%% See http://www.latex-project.org/lppl.txt
%% ---------------------------------------------------------------
%%
-\ProvidesExplFile {siunitx-version-1.cfg} {2015/07/17} {2.6h}
+\ProvidesExplFile {siunitx-version-1.cfg} {2015/08/18} {2.6i}
{siunitx: Version 1 settings}
\keys_define:nn { siunitx } {
addsign .choice: ,
diff --git a/Master/texmf-dist/tex/latex/siunitx/siunitx.sty b/Master/texmf-dist/tex/latex/siunitx/siunitx.sty
index 8bc958cb278..c040fe415d8 100644
--- a/Master/texmf-dist/tex/latex/siunitx/siunitx.sty
+++ b/Master/texmf-dist/tex/latex/siunitx/siunitx.sty
@@ -13,10 +13,11 @@
%% See http://www.latex-project.org/lppl.txt
%% ---------------------------------------------------------------
%%
-\RequirePackage{expl3,xparse}
-\ProvidesExplPackage {siunitx} {2015/07/17} {2.6h}
+\RequirePackage{expl3}[2015/03/01]
+\RequirePackage{xparse}
+\ProvidesExplPackage {siunitx} {2015/08/18} {2.6i}
{A comprehensive (SI) units package}
-\@ifpackagelater { expl3 } { 2012/11/21 }
+\@ifpackagelater { expl3 } { 2015/03/01 }
{ }
{
\PackageError { siunitx } { Support~package~expl3~too~old }
@@ -48,6 +49,7 @@
\cs_new:Npn \__siunitx_tmp:w { }
\cs_generate_variant:Nn \clist_map_function:nN { nc }
\cs_generate_variant:Nn \tl_if_blank:nTF { V }
+\cs_generate_variant:Nn \tl_replace_all:Nnn { No, NV }
\bool_new:N \l__siunitx_tmp_bool
\box_new:N \l__siunitx_tmp_box
\dim_new:N \l__siunitx_tmp_dim
@@ -313,37 +315,35 @@
\str_if_eq:VnT #1 {#2}
{ \tl_set:Nn #1 {#3} }
}
+\cs_generate_variant:Nn \tl_if_empty_p:n { f }
+\cs_generate_variant:Nn \tl_if_empty:nT { f }
\cs_generate_variant:Nn \tl_if_in:NnTF { NV }
\cs_generate_variant:Nn \tl_replace_all:Nnn { NnV }
-\group_begin:
-\tl_map_inline:nn { \M \A \C \R \O }
- { \char_set_catcode_other:n { `#1 } }
-\tl_map_inline:nn { \F \N \T }
- { \char_set_lccode:nn { `#1 } { `#1 } }
-\tl_to_lowercase:n {
- \group_end:
- \prg_new_conditional:Npnn \__siunitx_cs_if_tl:N #1 { T , F, TF , p }
- {
- \exp_last_unbraced:No \__siunitx_cs_if_tl_aux:w
- { \token_to_meaning:N #1 MACRO \q_stop }
+\prg_new_conditional:Npnn \__siunitx_cs_if_tl:N #1 { T, F , TF , p }
+ {
+ \bool_if:nTF
+ {
+ \tl_if_empty_p:f
{
- \cs_if_exist:cTF { \cs_to_str:N #1 ~ }
- { \prg_return_false: }
- { \prg_return_true: }
+ \token_get_prefix_spec:N #1
+ \token_get_arg_spec:N #1
}
- { \prg_return_false: }
- }
- \cs_new:Npn \__siunitx_cs_if_tl_aux:w #1 MACRO #2 \q_stop
- { \tl_if_empty:nTF {#1} }
- \prg_new_conditional:Npnn \__siunitx_cs_if_macro:N #1
- { T , F , TF , p }
- {
- \exp_last_unbraced:No \__siunitx_cs_if_tl_aux:w
- { \token_to_meaning:N #1 MACRO \q_stop }
- { \prg_return_true: }
- { \prg_return_false: }
- }
-}
+ && ! \cs_if_exist_p:c { \cs_to_str:N #1 ~ }
+ }
+ { \prg_return_true: }
+ { \prg_return_false: }
+ }
+\prg_new_conditional:Npnn \__siunitx_number_if_zero:n #1 { p , TF }
+ {
+ \tl_map_function:nN {#1} \__siunitx_number_if_zero_aux:n
+ \prg_return_true:
+ }
+\cs_generate_variant:Nn \__siunitx_number_if_zero_p:n { V }
+\cs_new:Npn \__siunitx_number_if_zero_aux:n #1
+ {
+ \token_if_eq_charcode:NNF #1 0
+ { \tl_map_break:n { \prg_return_false: \use_none:n } }
+ }
\AtBeginDocument
{
\@ifpackageloaded { tex4ht }
@@ -820,43 +820,39 @@
{ \l__siunitx_print_arg_tl }
}
}
-\group_begin:
- \char_set_lccode:nn { `\@ } { `\_ }
- \char_set_catcode_math_subscript:N \@
- \char_set_lccode:nn { `\! } { `\_ }
- \char_set_catcode_active:N \!
- \char_set_lccode:nn { `\= } { `\_ }
- \char_set_lccode:nn { `\+ } { `\^ }
-\tl_to_lowercase:n {
- \group_end:
- \cs_new_protected:Npn \__siunitx_print_text:
- {
- \tl_replace_all:Nnn \l__siunitx_print_arg_tl { - }
- { \c__siunitx_minus_tl }
- \__siunitx_print_text_aux:
- \tl_replace_all:Nnn \l__siunitx_print_arg_tl { \mp }
- { \ensuremath { \mp } }
- \tl_remove_all:Nn \l__siunitx_print_arg_tl { \mathord }
- \cs_set_eq:NN \PrintSubscript \__siunitx_print_text_sub:n
- \cs_set_eq:NN \PrintSuperscript \__siunitx_print_text_super:n
- \tl_replace_all:Nnn \l__siunitx_print_arg_tl { @ }
- { \__siunitx_print_text_sub:n }
- \tl_replace_all:Nnn \l__siunitx_print_arg_tl { ! }
- { \__siunitx_print_text_sub:n }
- \tl_replace_all:Nnn \l__siunitx_print_arg_tl { = }
- { \__siunitx_print_text_sub:n }
- \tl_replace_all:Nnn \l__siunitx_print_arg_tl { ^ }
- { \__siunitx_print_text_super:n }
- \tl_replace_all:Nnn \l__siunitx_print_arg_tl { + }
- { \__siunitx_print_text_super:n }
- \l__siunitx_print_arg_tl
- }
-}
+\cs_new_protected_nopar:Npn \__siunitx_print_text:
+ {
+ \tl_replace_all:Nnn \l__siunitx_print_arg_tl { - }
+ { \c__siunitx_minus_tl }
+ \__siunitx_print_text_aux:
+ \tl_replace_all:Nnn \l__siunitx_print_arg_tl { \mp }
+ { \ensuremath { \mp } }
+ \tl_remove_all:Nn \l__siunitx_print_arg_tl { \mathord }
+ \cs_set_eq:NN \PrintSubscript \__siunitx_print_text_sub:n
+ \cs_set_eq:NN \PrintSuperscript \__siunitx_print_text_super:n
+ \__siunitx_print_text_aux:NnN
+ _ { math_subscript } \__siunitx_print_text_sub:n
+ _ { active } \__siunitx_print_text_sub:n
+ ^ { math_superscript } \__siunitx_print_text_super:n
+ ^ { active } \__siunitx_print_text_super:n
+ \q_recursion_tail ? ?
+ \q_recursion_stop
+ \l__siunitx_print_arg_tl
+ }
\cs_new_protected:Npn \__siunitx_print_text_aux:
{
\tl_replace_all:Nnn \l__siunitx_print_arg_tl { \pm }
{ \ensuremath { \pm } }
}
+\cs_new_protected:Npn \__siunitx_print_text_aux:NnN #1#2#3
+ {
+ \quark_if_recursion_tail_stop:N #1
+ \tl_set_rescan:Nnn \l__siunitx_tmp_tl
+ { \use:c { char_set_catcode_ #2 :N } #1 }
+ {#1}
+ \tl_replace_all:NVn \l__siunitx_print_arg_tl \l__siunitx_tmp_tl {#3}
+ \__siunitx_print_text_aux:NnN
+ }
\AtBeginDocument
{
\@ifpackageloaded { textcomp }
@@ -1125,22 +1121,29 @@
\cs_new_protected:Npn \__siunitx_number_in_protect_aux:N #1 {
\cs_set_eq:NN #1 \scan_stop:
}
+\cs_new_protected:Npn \__siunitx_number_in_sign_replace:N #1
+ {
+ \__siunitx_number_in_sign_replace_aux:N #1
+ \__siunitx_number_in_sign_replace_aux:NnN #1
+ { -+ } \mp
+ { +- } \pm
+ { << } \ll
+ { <= } \le
+ { >> } \gg
+ { >= } \ge
+ { ?? } \q_recursion_tail
+ \q_recursion_stop
+ }
\group_begin:
-\char_set_catcode_active:N \*
-\char_set_lccode:nn { `\* } { `\- }
-\tl_to_lowercase:n
+ \char_set_catcode_active:N -
+ \cs_new_protected:Npx \__siunitx_number_in_sign_replace_aux:N #1
+ { \tl_replace_all:Nnn #1 { \exp_not:N - } { \token_to_str:N - } }
+\group_end:
+\cs_new_protected:Npn \__siunitx_number_in_sign_replace_aux:NnN #1#2#3
{
- \group_end:
- \cs_new_protected:Npn \__siunitx_number_in_sign_replace:N #1
- {
- \tl_replace_all:Nnn #1 { * } { - }
- \tl_replace_all:Nnn #1 { -+ } { \mp }
- \tl_replace_all:Nnn #1 { +- } { \pm }
- \tl_replace_all:Nnn #1 { << } { \ll }
- \tl_replace_all:Nnn #1 { <= } { \le }
- \tl_replace_all:Nnn #1 { >> } { \gg }
- \tl_replace_all:Nnn #1 { >= } { \ge }
- }
+ \quark_if_recursion_tail_stop:N #3
+ \tl_replace_all:Nnn #1 {#2} {#3}
+ \__siunitx_number_in_sign_replace_aux:NnN #1
}
\cs_new_protected:Npn \__siunitx_number_in_parse_error:nn #1#2 {
\__siunitx_error:nx {#1} { \exp_not:n {#2} }
@@ -2145,7 +2148,7 @@
}
}
{
- \int_compare:nNnTF { 0 #1 } = { 0 }
+ \__siunitx_number_if_zero:nTF {#1}
{
\__siunitx_number_process_fixed_aux_ii:nnn {##1} {##2}
{ #3 - 1 }
@@ -2479,12 +2482,11 @@
}
\cs_new_protected:Npn \__siunitx_number_process_round_tidy:n #1
{
- \int_compare:nNnTF
+ \bool_if:nTF
{
- 0 \l__siunitx_round_integer_out_tl +
- 0 \l__siunitx_round_decimal_out_tl
+ \__siunitx_number_if_zero_p:V \l__siunitx_round_integer_out_tl
+ && \__siunitx_number_if_zero_p:V \l__siunitx_round_decimal_out_tl
}
- = \c_zero
{
\str_if_eq:VnTF \l__siunitx_process_round_min_tl { 0 }
{
@@ -2562,35 +2564,38 @@
}
\cs_new_protected:Npn
\__siunitx_number_process_scientific_aux_ii:nnn #1#2#3 {
- \int_compare:nNnTF {#1} > { 9 }
+ \int_compare:nNnTF { \tl_count:n {#1} } > \c_one
{ \__siunitx_number_process_scientific_large:nnn {#1} {#2} {#3} }
{
- \int_compare:nNnTF {#1} > { 0 }
+ \__siunitx_number_if_zero:nTF {#1}
+ {
+ \__siunitx_number_process_scientific_small:wn
+ #2 \q_stop {#3}
+ }
{
\bool_if:NTF \l__siunitx_process_engineering_bool
{ \__siunitx_number_process_scientific_engineering:nnn }
{ \__siunitx_number_process_scientific_store:nnn }
{#1} {#2} {#3}
}
- {
- \__siunitx_number_process_scientific_small:wn
- #2 \q_stop {#3}
- }
+
}
}
-\cs_new_protected:Npn
- \__siunitx_number_process_scientific_large:nnn #1#2#3 {
- \int_set:Nn \l__siunitx_tmp_int { \int_div_truncate:nn {#1} { 10 } }
- \tl_set:Nx \l__siunitx_tmpa_tl { \int_use:N \l__siunitx_tmp_int }
- \int_set:Nn \l__siunitx_tmp_int { #1 - 10 * \l__siunitx_tmp_int }
- \tl_set:Nx \l__siunitx_tmpa_tl
- {
- { \l__siunitx_tmpa_tl } { \int_use:N \l__siunitx_tmp_int #2 }
- { #3 + 1 }
- }
- \exp_after:wN \__siunitx_number_process_scientific_aux_ii:nnn
- \l__siunitx_tmpa_tl
-}
+\cs_new_protected:Npn \__siunitx_number_process_scientific_large:nnn #1#2#3
+ {
+ \cs_set_protected:Npn \__siunitx_number_process_scientific_large_loop:nNN
+ ##1##2##3
+ {
+ \quark_if_recursion_tail_stop_do:Nn ##3
+ {
+ \__siunitx_number_process_scientific_aux_ii:nnn {##1} { ##2 #2 }
+ { #3 + \c_one }
+ }
+ \__siunitx_number_process_scientific_large_loop:nNN { ##1 ##2 } ##3
+ }
+ \__siunitx_number_process_scientific_large_loop:nNN { } #1
+ \q_recursion_tail \q_recursion_stop
+ }
\cs_new_protected:Npn
\__siunitx_number_process_scientific_small:wn #1#2 \q_stop #3
{ \__siunitx_number_process_scientific_aux_ii:nnn {#1} {#2} { #3 - 1 } }
@@ -4217,7 +4222,9 @@
\AtBeginDocument {
\cs_if_exist:NT \cancel
{
- \cs_set_eq:NN \__siunitx_cancel:n \cancel
+ \cs_set_protected:Npn \__siunitx_cancel:n #1
+ { \__siunitx__real_cancel:n { \__siunitx_print:nn { unit } {#1} } }
+ \cs_set_eq:NN \__siunitx__real_cancel:n \cancel
\seq_put_right:Nn \l__siunitx_declare_list_seq { \cancel }
\cs_new_protected:cpn
{ __siunitx_ \token_to_str:N \cancel _function:w }
@@ -4364,7 +4371,7 @@
\cs_new_protected:Npn \__siunitx_protect_symbols:N #1 {
\cs_if_exist:NT #1
{
- \__siunitx_cs_if_macro:NT #1
+ \tl_if_empty:fT { \token_get_prefix_spec:N #1 }
{ \cs_set_protected:Npx #1 { \exp_not:V #1 } }
}
}
@@ -4817,29 +4824,27 @@
{ \__siunitx_unit_print_literal_aux:N ##1 }
}
\group_begin:
- \char_set_lccode:nn { `\+ } { `\^ }
\char_set_catcode_active:N \~
-\tl_to_lowercase:n
- {
- \group_end:
- \cs_new_protected:Npn \__siunitx_unit_format_literal:n #1
- {
- \int_zero:N \l__siunitx_unit_prefix_int
- \seq_map_inline:Nn \l__siunitx_declare_list_seq
- { \__siunitx_unit_print_literal_aux:N ##1 }
- \tl_set:Nn \l__siunitx_unit_tl {#1}
- \tl_replace_all:NnV \l__siunitx_unit_tl { . } \l__siunitx_unit_product_tl
- \tl_replace_all:NnV \l__siunitx_unit_tl { ~ } \l__siunitx_unit_product_tl
- \bool_if:NT \l__siunitx_literal_power_bool
- {
- \tl_replace_all:Nnn \l__siunitx_unit_tl { ^ }
- { \__siunitx_unit_format_literal_power:n }
- \tl_replace_all:Nnn \l__siunitx_unit_tl { + }
- { \__siunitx_unit_format_literal_power:n }
- }
- \__siunitx_unit_format_literal_extras:
- }
- }
+ \cs_new_protected:Npn \__siunitx_unit_format_literal:n #1
+ {
+ \int_zero:N \l__siunitx_unit_prefix_int
+ \seq_map_inline:Nn \l__siunitx_declare_list_seq
+ { \__siunitx_unit_print_literal_aux:N ##1 }
+ \tl_set:Nn \l__siunitx_unit_tl {#1}
+ \tl_replace_all:NnV \l__siunitx_unit_tl { . }
+ \l__siunitx_unit_product_tl
+ \tl_replace_all:NnV \l__siunitx_unit_tl { ~ }
+ \l__siunitx_unit_product_tl
+ \bool_if:NT \l__siunitx_literal_power_bool
+ {
+ \tl_replace_all:Nnn \l__siunitx_unit_tl { ^ }
+ { \__siunitx_unit_format_literal_power:n }
+ \tl_replace_all:Non \l__siunitx_unit_tl { \token_to_str:N ^ }
+ { \__siunitx_unit_format_literal_power:n }
+ }
+ \__siunitx_unit_format_literal_extras:
+ }
+\group_end:
\cs_new_protected:Npn \__siunitx_unit_print_literal_aux:N #1
{ \cs_set_eq:Nc #1 { __siunitx_ \token_to_str:N #1 _literal:w } }
\cs_new_protected:Npn \__siunitx_unit_format_literal_power:n #1
@@ -5840,7 +5845,7 @@
{
\skip_horizontal:n { \c__siunitx_one_fill_skip - ##1 }
\tex_kern:D \c_zero_skip
- \hbox_set_inline_end:
+ \hbox_set_end:
\__siunitx_table_colortbl_correction:
}
}
@@ -6889,14 +6894,20 @@
text-micro = \c__siunitx_mu_tl ,
text-ohm = \ensuremath { \c__siunitx_omega_tl },
}
-\cs_new_protected:Npn \__siunitx_symbol_new:n #1 {
- \cs_set_protected:cpn { SIUnitSymbol #1 }
- {
- \mode_if_math:TF
- { \tl_to_lowercase:n { \use:c { l__siunitx_ #1 _math_tl } } }
- { \tl_to_lowercase:n { \use:c { l__siunitx_ #1 _text_tl } } }
- }
-}
+\cs_new_protected:Npn \__siunitx_symbol_new:n #1
+ {
+ \cs_set_protected:cpn { SIUnitSymbol #1 }
+ {
+ \use:c
+ {
+ l__siunitx_
+ \str_fold_case:n {#1}
+ _
+ \mode_if_math:TF { math } { text }
+ _tl
+ }
+ }
+ }
\__siunitx_symbol_new:n { Angstrom }
\__siunitx_symbol_new:n { Arcminute }
\__siunitx_symbol_new:n { Arcsecond }
@@ -7446,26 +7457,27 @@
\DeclareSIUnit \electronvolt { eV }
\DeclareSIUnit \dalton { Da }
\group_begin:
- \char_set_lccode:nn { `\@ } { `\_ }
- \char_set_catcode_math_subscript:N \@
-\tl_to_lowercase:n {
- \group_end:
- \DeclareSIUnit \clight { \text { \ensuremath { c @ { 0 } } } }
- \DeclareSIUnit \electronmass
- { \text { \ensuremath { m @ { \text { e } } } } }
-}
+\cs_set_eq:NN \endgroup \group_end:
+\char_set_catcode_math_subscript:N \_
+\use:n
+ {
+ \endgroup
+ \DeclareSIUnit \clight { \text { \ensuremath { c _ { 0 } } } }
+ \DeclareSIUnit \electronmass
+ { \text { \ensuremath { m _ { \textup { e } } } } }
+ }
\DeclareSIUnit \planckbar { \text { \ensuremath { \hbar } } }
\DeclareSIUnit \elementarycharge { \text { \ensuremath { e } } }
\group_begin:
- \char_set_lccode:nn { `\@ } { `\_ }
- \char_set_lccode:nn { `\E } { `\E }
- \char_set_catcode_math_subscript:N \@
-\tl_to_lowercase:n {
- \group_end:
- \DeclareSIUnit \bohr { \text { \ensuremath { a @ { 0 } } } }
- \DeclareSIUnit \hartree
- { \text { \ensuremath { E @ { \textup { h } } } } }
-}
+\cs_set_eq:NN \endgroup \group_end:
+\char_set_catcode_math_subscript:N \_
+\use:n
+ {
+ \endgroup
+ \DeclareSIUnit \bohr { \text { \ensuremath { a _ { 0 } } } }
+ \DeclareSIUnit \hartree
+ { \text { \ensuremath { E _ { \textup { h } } } } }
+ }
\DeclareSIUnit \angstrom { \SIUnitSymbolAngstrom }
\DeclareSIUnit \bar { bar }
\DeclareSIUnit \barn { b }