summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/sistyle
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2021-06-23 15:01:05 +0000
committerKarl Berry <karl@freefriends.org>2021-06-23 15:01:05 +0000
commitac1540c1ec0b144db1719fe71efbb01883e54485 (patch)
treef8d2d0a13ddcfc9f30889b7caa3456cf39a42a06 /Master/texmf-dist/source/latex/sistyle
parent96e455da59b8a45214cd29053a163e3bc21e7457 (diff)
SIstyle -> sistyle
git-svn-id: svn://tug.org/texlive/trunk@59682 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/sistyle')
-rw-r--r--Master/texmf-dist/source/latex/sistyle/sistyle.dtx2191
-rw-r--r--Master/texmf-dist/source/latex/sistyle/sistyle.ins76
2 files changed, 2267 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/sistyle/sistyle.dtx b/Master/texmf-dist/source/latex/sistyle/sistyle.dtx
new file mode 100644
index 00000000000..d9c5872b8ad
--- /dev/null
+++ b/Master/texmf-dist/source/latex/sistyle/sistyle.dtx
@@ -0,0 +1,2191 @@
+% \iffalse meta-comment
+%
+% sistyle.dtx
+% Copyright (C) 2004--2008 Danie Els
+%
+% -------------------------------------------------------------------
+% The SIstyle package
+% for SI units and number typesetting
+% -------------------------------------------------------------------
+% This work may be distributed and/or modified under the conditions
+% of the LaTeX Project Public License, either version 1.3c of this
+% license or (at your option) any later version. The latest version
+% of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3c or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status 'maintained'.
+%
+% This Current Maintainer of this work is Danie Els (dnjels@sun.ac.za)
+%
+% This package consists of the files: sistyle.dtx
+% sistyle.ins
+% and the derived file: sistyle.sty
+% -------------------------------------------------------------------
+% \fi
+%
+%
+%
+% \CheckSum{830}
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \iffalse
+%<*dtx>
+\ProvidesFile{sistyle.dtx}
+%</dtx>
+%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+%<package>\ProvidesPackage{sistyle}
+%<driver>\ProvidesFile{sistyle.drv}
+%\ProvidesFile{sistyle.dtx}
+ [2008/07/16 v2.3a SI units and numbers (DNJ Els)]
+%<*driver>
+\documentclass[a4paper]{ltxdoc}
+\usepackage{calc}
+\usepackage{amsmath}
+%\usepackage[T1]{fontenc}
+\usepackage{textcomp}
+%\usepackage{lmodern}
+\usepackage{sistyle}
+ \SIdefaultNfam{\mathnormal}
+ \SIdefaultMfam{\mathrm}
+ \SIthousandsep{\,}
+ \SIunitsep{\;}
+ \SIunitdot{\cdot}
+ \SIproductsign{\times}
+ \SIobeyboldfalse
+% \newcommand*{\micro}{\ensureupmath{\mbox{\textmu}}}
+\usepackage{array}
+\usepackage{graphicx}
+\EnableCrossrefs
+\CodelineIndex
+\RecordChanges
+\setlength\hfuzz{15pt}
+\hbadness=7000
+\begin{document}
+ \DocInput{sistyle.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+%
+% \changes{v1.0}{2004/02/01}{Initial version}
+% \changes{v2.0}{2004/07/12}{Better display math detection with \cs{displaywidth}}
+% \changes{v2.1}{2006/07/09}{Add user definable commands for \cs{mathrm}, \cs{mathsf}, \cs{mathtt}}
+% \changes{v2.2}{2006/12/14}{Correct bug in \cs{ang} when French package is loaded}
+% \changes{v2.3}{2006/12/20}{Make \cs{ang} work in side commands when ; is active}
+% \changes{v2.3a}{2008/07/16}{Final version}
+%
+%
+% \DoNotIndex{\,}
+% \DoNotIndex{\., \;}
+% \DoNotIndex{\@car, \@empty, \@firstofone, \@firstoftwo, \@ifstar,
+% \@ifundefined, \@nameuse,\@nil, \@nnil, \@onlypreamble,
+% \@secondoftwo, \@undefined}
+% \DoNotIndex{\AtBeginDocument}
+% \DoNotIndex{\begingroup, \bfseries, \bgroup, \boldmath}
+% \DoNotIndex{\catcode, \cdot, \chardef, \check@mathfonts, \circ,
+% \csname}
+% \DoNotIndex{\DeclareMathSymbol, \DeclareRobustCommand, \def}
+% \DoNotIndex{\edef, \egroup, \else, \endcsname, \endgroup, \ensuremath,
+% \ensureupmath, \expandafter}
+% \DoNotIndex{\f@family, \f@series, \fam, \fi}
+% \DoNotIndex{\gdef, \GetMathFontFams, \global}
+% \DoNotIndex{\if, \ifinner, \ifmmode, \ifnum, \ifx}
+% \DoNotIndex{\kern}
+% \DoNotIndex{\let, \long, \lowercase}
+% \DoNotIndex{\math@version, \mathcode, \mathord, \mathrm, \mathsf,
+% \mathtt, \mbox, \mdseries}
+% \DoNotIndex{\NeedsTeXFormat, \newcommand, \newif, \newtoks, \noexpand}
+% \DoNotIndex{\Omega}
+% \DoNotIndex{\PackageError, \prime, \providecommand, \ProvidesPackage}
+% \DoNotIndex{\relax, \renewcommand, \RequirePackage, \rmfamily}
+% \DoNotIndex{\sbox, \scriptspace, \sfdefault, \sffamily}
+% \DoNotIndex{\text, \textsuperscript, \the, \times, \ttdefault,
+% \ttfamily}
+% \DoNotIndex{\unboldmath, \upshape}
+% \DoNotIndex{\zap@space}
+%
+%
+% \makeatletter
+%
+%^^A==== Temporaries ================================================
+%
+% \newsavebox{\tboxa}
+% \newsavebox{\tboxb}
+% \newlength{\tdima}
+%
+%^^A==== Doc Environments ===========================================
+%
+% \newenvironment{Item}[2][\textsl]{^^A
+% \begin{list}{}^^A
+% {\renewcommand{\makelabel}[1]{\mbox{#1{##1:}}\hfill}^^A
+% \settowidth{\labelwidth}{#1{#2:}}^^A
+% \setlength{\labelsep}{1em}^^A
+% \setlength{\leftmargin}{\labelwidth}^^A
+% \addtolength{\leftmargin}{\labelsep}^^A
+% \addtolength{\textwidth}{-\leftmargin}^^A
+% \addtolength{\textwidth}{-\rightmargin}}^^A
+% \item[#2]^^A
+% }{\end{list}}
+%
+% \newenvironment{cmddef}[1][l]^^A
+% {\nopagebreak\par\small
+% \addvspace{3.2ex plus 0.8ex minus 0.2ex}^^A
+% \vskip -\parskip
+% \noindent^^A
+% \begin{tabular}{|#1|}
+% \hline\rule{0pt}{1em}\ignorespaces}^^A
+% {\\\hline
+% \end{tabular}
+% \par\nopagebreak\addvspace{3.2ex plus 0.8ex minus 0.2ex}^^A
+% \vskip -\parskip}
+%
+%^^A==== Indented Environments ======================================
+%
+% \newlength{\mytab}
+% \setlength{\mytab}{\parindent}
+% \newcommand{\tab}{\hspace*{\mytab}}
+%
+% \newenvironment{IndentPara}
+% {\list{}{\setlength{\leftmargin}{\mytab}^^A
+% \setlength{\labelwidth}{0pt}^^A
+% \setlength{\labelsep}{0pt}^^A
+% \setlength{\itemindent}{\parindent}^^A
+% \setlength{\listparindent}{\parindent}^^A
+% \setlength{\parsep}{\parskip}^^A
+% }^^A
+% \item[]}^^A
+% {\endlist}
+%
+% \newenvironment{Ipara}[1][\small]^^A
+% {\begin{IndentPara}\noindent#1\ignorespaces}^^A
+% {\end{IndentPara}}
+% \newenvironment{Itabb}[1][\small]
+% {\begin{IndentPara}#1\ignorespaces\begin{tabbing}\ignorespaces}^^A
+% {\end{tabbing}\end{IndentPara}}
+%
+%^^A==== Headings ===================================================
+%
+% \newcommand{\@headfamily}{\normalfont}
+%
+% \renewcommand*{\partname}{Part}
+%
+% \def\@part[#1]#2{^^A
+% \ifnum \c@secnumdepth >\m@ne\relax
+% \refstepcounter{part}^^A
+% \addcontentsline{toc}{part}{\partname\ \thepart.
+% \protect\enspace\protect\noindent #1}^^A
+% \else
+% \addcontentsline{toc}{part}{#1}^^A
+% \fi
+% \begingroup
+% \centering
+% \@headfamily
+% \ifnum \c@secnumdepth >\m@ne\relax
+% {\large\bfseries \partname\ \thepart}
+% \vskip 1em
+% \fi
+% \Large \bfseries #1^^A
+% \markboth{}{}\par
+% \endgroup
+% \nobreak
+% \vskip 2em
+% \@afterheading}
+%
+% \@addtoreset{section}{part}
+% \renewcommand{\thepart}{\arabic{part}}
+% \renewcommand{\thesection}{\thepart.\arabic{section}}
+%
+%^^A \renewcommand{\@seccntformat}[1]{^^A
+%^^A \protect\makebox[0pt][r]{\@nameuse{the#1}\quad}}
+%
+% \def\section{^^A
+% \@startsection {section}{1}{\z@}^^A
+% {-3.5ex plus -1ex minus -.2ex}^^A
+% {2.3ex plus .2ex}^^A
+% {\noindent\@headfamily\raggedright\large\bfseries}}
+%
+% \def\subsection{^^A
+% \@startsection{subsection}{2}{\z@}^^A
+% {-3.25ex plus -1ex minus -.2ex}^^A
+% {1.5ex plus .2ex}^^A
+% {\noindent\@headfamily\normalsize\bfseries}}^^A
+%
+%^^A==== TOC setup ==================================================
+%
+%\newcommand\tableofcontentsX{^^A
+% \begin{center}
+% \large\bfseries\contentsname
+% \end{center}
+% \@mkboth{\MakeUppercase\contentsname}^^A
+% {\MakeUppercase\contentsname}^^A
+% \@starttoc{toc}}
+%
+% \renewcommand\tableofcontents{%
+%^^A \section*{\contentsname}^^A
+% \centerline{\Large\bfseries\contentsname}
+% \medskip
+% \@mkboth{\MakeUppercase\contentsname}^^A
+% {\MakeUppercase\contentsname}^^A
+% \@starttoc{toc}}
+%
+% \renewcommand*\l@part[2]{^^A
+% \ifnum \c@tocdepth >-2\relax
+% \addpenalty\@secpenalty
+% \bigskip
+% \setlength\@tempdima{3em}^^A
+% \begingroup
+% \parindent \z@ \rightskip \@pnumwidth
+% \parfillskip -\@pnumwidth
+% {\leavevmode
+% \large\bfseries #1\hfil \hb@xt@\@pnumwidth{\hss #2}}\par
+% \nobreak
+% \if@compatibility
+% \global\@nobreaktrue
+% \everypar{\global\@nobreakfalse\everypar{}}^^A
+% \fi
+% \endgroup
+% \smallskip
+% \fi}
+%
+% \renewcommand*\l@section[2]{^^A
+% \ifnum \c@tocdepth >\z@
+% \addpenalty\@secpenalty
+%^^A \smallskip
+% \setlength\@tempdima{2em}^^A
+% \begingroup
+% \parindent \z@ \rightskip \@pnumwidth
+% \parfillskip -\@pnumwidth
+% \leavevmode
+% \advance\leftskip\@tempdima
+% \hskip -\leftskip
+% #1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par
+% \endgroup
+% \fi}
+%
+% \renewcommand*\l@subsection{\@dottedtocline{2}{2em}{3em}}
+%
+%^^A==== Lists ======================================================
+%
+% \renewcommand{\theenumi}{\alph{enumi}}
+% \renewcommand{\labelenumi}{(\theenumi)}
+%
+%^^A==== Misc =======================================================
+%
+% \def\meta@font@select{\slshape}
+%
+% \newcommand{\myemph}[1]{\textsl{#1}}
+% \newcommand{\xnum}[1]{\ensuremath{\SI@defaultNfam{#1}}}
+%
+% \newcommand{\pkg}[1]{\textsf{#1}}
+% \newcommand{\RA}{\>$\rightarrow$\quad}
+% \newcommand{\RAt}{\quad$\rightarrow$\quad}
+% \newcommand*{\tlde}{\text{$\mathtt{\scriptstyle\sim}$}}
+%
+% \makeatother
+%
+%^^A==== Titling ====================================================
+%
+% \GetFileInfo{sistyle.dtx}
+%
+% \title{The \pkg{SIstyle} package\thanks{This file has
+% version number \fileversion,
+% last revised \filedate.}}
+% \author{D.N.J.\ Els\\[1ex]
+% \texttt{(dnjels@sun.ac.za)}}
+% \date{\filedate}
+% \maketitle
+%
+%^^A==== Abstract ===================================================
+%
+% \begin{abstract}
+% \noindent
+% The \pkg{SIstyle} package provides macros to type
+% numbers and units in a consistent way according to SI
+% requirements. The following commands are provided:
+% \begin{Itabb}
+% \cmd{\SI}\marg{number}\marg{unit}\hspace{3em}\=$\rightarrow$~ Setting numbers with units\\
+% \cmd{\num}\marg{number} \>$\rightarrow$~ Setting a number\\
+% \cmd{\ang}|{|\meta{degs}|;|\meta{mins}|;|\meta{secs}|}| \>$\rightarrow$~ Setting an angle
+% \end{Itabb}
+% The requirements for formatting and typesetting of SI units and
+% numbers listed in this document, were extracted verbatim from the
+% \textit{NIST Special Publication 811} (SP 811):
+% \begin{Ipara}
+% |http://physics.nist.gov/cuu/Units/rules.html|
+% \end{Ipara}
+% It is not a full list of all the requirements, but only those
+% relevant to font type and spacing formatting.
+%
+% It is the responsibility of the user to use the correct units and
+% prefixes, because the purpose of this package is only to typeset
+% the SI units and numbers properly. It is therefore recommended
+% that the user makes a thorough study of SP 811 or the equivalent
+% specification for his or her country.
+% \end{abstract}
+% \vspace{1cm}
+%
+% \begin{center}
+% \begin{tabular}{|p{0.6\hsize}|}
+% \hline
+% \texttt{SIstyle v2.3} is the final version of this package.
+% No new features will be added in the future. The packages
+% will be maintained and bugs will be fixed.\\ \\
+%
+% All future development will be done in the \texttt{siunitx}
+% package.\\
+% \hline
+% \end{tabular}
+% \end{center}
+%
+%
+%^^A==== Contents ===================================================
+%
+% \clearpage
+% \tableofcontents
+%
+%^^A==== Main Document ==============================================
+% \clearpage
+% \part{Using The \pkg{SIstyle} Package}
+%
+% \section{Loading the \pkg{SIstyle} Package}
+%
+% The \pkg{SIstyle} package is loaded in the document preamble with
+% \begin{Ipara}
+% |\usepackage{sistyle}|
+% \end{Ipara}
+%
+% \section{The Typesetting Commands}
+% \subsection{SI numbers with units}
+%
+% The \cmd{\SI} command typeset SI numbers with units and it
+% conforms to the rules as given in Part \ref{prt:SI}.
+%
+% \begin{cmddef}
+% \cmd{\SI}\marg{number}\marg{unit}
+% \end{cmddef}
+%
+% \noindent Inside the \cmd{\SI}\ command the point, ``.'',
+% is make active and redefined to \cmd{\SIunitdot}. The hard space,
+% ``\tlde'', is redefined to \cmd{\SIunitspace}. This makes for
+% convenient shorthand in that by typing \texttt{N.m} you obtain
+% ``\SI{}{N.m}'' or \texttt{N\tlde m} gives ``\SI{}{N~m}''.
+%
+% \begin{cmddef}
+% \cmd{\pnt}
+% \end{cmddef}
+%
+% \noindent The point can now not be used as a decimal point as part
+% of a unit and the symbol \cmd{\pnt}\ is defined as substitute. It
+% is however recommended to use the \cmd{\num} command to ensure
+% uniform formatting of numbers.
+%
+%
+% \begin{Item}{Example}\small^^A
+% \begin{tabular}[t]{@{}l@{\RAt}l}
+% |\SI{}{m.kg/(s^3.A)}| & \SI{}{m.kg/(s^3.A)}\\
+% |\SI{}{(MPa)^{0\pnt 5}}| & \SI{}{(MPa)^{0\pnt 5}}\\
+% |\SI{}{(MPa)^{\num{0.5}}}| & \SI{}{(MPa)^{\num{0,5}}}\\
+% |$v=\SI{10}{m.s^{-1}}$| & $v=\SI{10}{m.s^{-1}}$\\
+% |$v=\SI{10}{m/s}$| & $v=\SI{10}{m/s}$\\
+% |$v=\SI{10}{\tfrac{m}{s}}$| & $v=\SI{10}{\tfrac{m}{s}}$\\
+% |$\tau=\SI{3}{N|\tlde|m}$| & $\tau=\SI{3}{N~m}$
+% \end{tabular}
+% \end{Item}
+%
+% \noindent^^A
+% The numbers and units are set inside a math environment with an
+% upright font. When the \cmd{\SI}\ command is used in normal text
+% or inside inline maths, it follows the surrounding fonts. Display
+% maths on the other hand will follow the active math fonts. When
+% different text and math fonts are used, it can be problematic,
+% because unit that are typed inside normal text will have a
+% different font from the units inside display maths.
+%
+% \begin{Item}{Example}
+% The velocity is \SI{15.3}{m/s} at the ...\\
+% \textbf{\itshape The velocity is \SI{15.3}{m/s} at the ...}\\
+% \textsf{The velocity is \SI{15.3}{m/s} at the ...}\\
+% \texttt{The velocity is \SI{15.3}{m/s} at the ...}
+% \end{Item}
+%
+% \noindent The typesetting of SI units obeys the surrounding bold
+% text depending on the following switches:
+%
+% \begin{cmddef}
+% \cmd{\SIobeyboldtrue}\\
+% \cmd{\SIobeyboldfalse}\quad(default)
+% \end{cmddef}
+%
+% \begin{Item}{Example}
+% \begin{tabular}[t]{@{}l@{\RAt}l@{}}
+% \cmd{\SIobeyboldtrue}
+% &\SIobeyboldtrue\textbf{\itshape The velocity is \SI{15.3}{m/s} at the ...}\\
+% \cmd{\SIobeyboldfalse}
+% &\textbf{\itshape The velocity is \SI{15.3}{m/s} at the ...}
+% \end{tabular}
+% \end{Item}
+%
+%
+% \subsection{Numbers}
+%
+% Numbers can be formatted with the \cmd{\num} command.
+%
+% \begin{cmddef}
+% \cmd{\num}\marg{decimal number}\\
+% \cmd{\num*}\marg{decimal number}
+% \end{cmddef}
+%
+% \noindent Numbers may only consist of:
+% ``\xnum{+-0\,1\,2\,3\,4\,5\,6\,7\,8\,9\,.\,,\,}e\,E''\@. The input
+% decimal separator can be either a point ``|.|'' or a comma
+% ``|,|''. The output is formatted according to the
+% \cmd{\SIdecimalsign} setting. No thousand separators are allowed
+% in the argument (spaces are ignored).
+% ``$\mathtt{E}\,x$'' or ``$\mathtt{e}\,x$'' is
+% converted to $10^x$.
+%
+% \begin{Item}{Example}
+% \begin{tabular}[t]{@{}l@{\RAt}l@{}}
+% |\num{1.2e3}| & \num{1.2e3}\\
+% |\num{1,2E3}| & \num{1,2E3}
+% \end{tabular}
+% \end{Item}
+%
+% \noindent The \cmd{\num} command simplifies the input of numbers
+% and typeset them correctly.
+%
+% \begin{Item}{Example}
+% \begin{tabular}[t]{@{}l@{\RAt}l@{}}
+% |\num{E1.5}| & \num{E1.5} \\
+% |\num{ - e -.5}| & \num{ - e -.5}\\
+% |\num{+1e-.5}| & \num{+1e-.5} \\
+% |\num{1.23456e5}| & \num{1.23456e5} \\
+% |\num{+1.234}| & \num{+1.234} \\
+% |\num{-.12345}| & \num{-.12345} \\
+% |\num{1.}| & \num{1.} \\
+% |\num{1}| & \num{1} \\
+% |\num{123}| & \num{123} \\
+% |\num{1234}| & \num{1234} \\
+% |\num{12345}| & \num{12345} \\
+% |\num{-123456}| & \num{-123456}
+% \end{tabular}
+% \end{Item}
+%
+% \noindent The grouping of the four digits can be switched on or of
+% --- e.g., in a table --- with the following switches :
+%
+% \begin{cmddef}
+% \cmd{\SIgroupfourtrue}\quad(default)\\[1ex]
+% \cmd{\SIgroupfourfalse}
+% \end{cmddef}
+% \noindent Please make sure that changes are kept local to ensure
+% uniformity throughout a document.
+% \begin{Item}{Example}
+% \begin{tabular}[t]{@{}l@{\RAt}l@{}}
+% |{\SIgroupfourtrue\num{1234.5678}}| & \SIgroupfourtrue\num{1234.5678}\\
+% |{\SIgroupfourfalse\num{1234.5678}}| & \SIgroupfourfalse\num{1234.5678}
+% \end{tabular}
+% \end{Item}
+%
+%
+% \noindent The starred form, \cmd{\num*}, typeset the number in the normal
+% active \LaTeX{} font. This is needed when numbers are inserted in
+% headings, etc. The unstarred version uses the same upright math
+% font as the SI units.
+%
+% \begin{Item}{Example}
+% \begin{tabular}[t]{@{}l@{\RAt}l@{}}
+% |\textit{There were \num{123} of them}|
+% & \textit{There were \num{123} of them}\\
+% |\textit{There were \num*{123} of them}|
+% & \textit{There were \num*{123} of them}
+% \end{tabular}
+% \end{Item}
+%
+%
+%
+% \subsection{Angles}
+%
+% The \cmd{\ang} command is supplied by the \pkg{SIstyle} package to
+% typeset angles. Note the degrees, minutes and seconds are
+% separated with a semi-colon ``|;|''.
+%
+% \begin{cmddef}
+% \cmd{\ang}|{|\meta{degs}|;|\meta{mins}|;|\meta{secs}|}|\\[1ex]
+% \cmd{\ang}\marg{decimal degrees}
+% \end{cmddef}
+% \begin{Item}{Example}
+% \begin{tabular}[t]{@{}l@{\RAt}l@{}}
+% |\ang{10}| & \ang{10} \\
+% |\ang{10; 12}| & \ang{10;12} \\
+% |\ang{10; 12; 4}| & \ang{10;12;4}\\
+% |\ang{10; 12; 4,01}| & \ang{10;12;4,01}\\[1ex]
+% |\ang{; ; 4}| & \ang{; ; 4}\\[1ex]
+% |\ang{10.2011}| & \ang{10.2011} \\
+% |\ang{+10}| & \ang{+10} \\
+% |\ang{-10}| & \ang{-10}
+% \end{tabular}
+% \end{Item}
+%
+%
+% \section{Additional Units Symbols}\label{sec:AddUnits}
+%
+% Most of the SI unit symbols are characters from the Latin
+% alphabet, except for the few listed in table \ref{tab:symbs} and
+% which are provided by the \pkg{SIstyle} package. Note
+% that the commands are only provided if the user do not
+% define the command in the preamble.
+%
+% If the user redefines or supplies his own commands for
+% units, than all the symbols must be available in math mode. For
+% symbols that are only available in text mode, e.g., from the
+% \pkg{textcomp} package, the symbol must be placed inside a
+% \cmd{\mbox} command. The best way to define a new unit command
+% is with the aid if the \pkg{SIstyle} internal command
+% \cmd{\ensureupmath}.
+%
+% \subsubsection*{\mdseries\itshape Symbols available in math mode:}
+% \newcommand*{\mps}{\ensureupmath{m/s}}
+% \begin{Item}{Example}
+% |\newcommand*{\mps}{\ensureupmath{m/s}}|
+%
+% which can be used in text and math mode
+% \begin{Itabb}
+% |$v/(\mps)=\num{10}$| \=\kill
+% |\SI{10}{\mps}| \>\RAt \SI{10.2}{\mps}\\
+% |The unit \mps\ ...| \>\RAt The unit \mps\ ...\\
+% |$v/(\mps)=\num{10}$| \>\RAt $v/(\mps)=\num{10}$
+% \end{Itabb}
+% \end{Item}
+%
+% \subsubsection*{\mdseries\itshape Symbols only available in text mode (\pkg{textcomp})}
+% \renewcommand*{\micro}{\ensureupmath{\mbox{\textmu}}}
+% \newcommand*{\microsec}{\ensureupmath{\micro s}}
+% \begin{Item}{Example}
+% |\renewcommand*{\micro}{\ensureupmath{\mbox{\textmu}}}|\\
+% |\newcommand*{\microsec}{\ensureupmath{\micro s}}|
+%
+% which can be used in text and math mode
+% \begin{Itabb}
+% |The prefix \micro\ ...| \=\kill
+% |\SI{5}{\micro s}| \>\RAt \SI{5}{\micro s}\\
+% |The prefix \micro\ ...| \>\RAt The prefix \micro\ ...\\
+% |$t/\microsec =\num{5}$| \>\RAt $t/\microsec =\num{5}$
+% \end{Itabb}
+% \end{Item}
+%
+% \begin{table}[h]
+% \centering
+% \caption{Additional SI symbols}
+% \label{tab:symbs}
+% \smallskip
+% \begin{tabular}{@{}lcc@{}}
+% \hline\noalign{\vskip3pt}
+% Command && Symbol \\
+% \cline{1-1} \cline{3-3}
+% \noalign{\vskip3pt}
+% \cmd{\angstrom}\hspace{1cm} && \angstrom \\
+% \cmd{\micro}$^a$ && $\mu$ \\
+% \cmd{\ohm} && $\Omega$ \\[1ex]
+% \cmd{\degC} && \ensureupmath{{}^{\circ}\kern-\scriptspace C}\\
+% \cmd{\degF}\,$^b$ && \ensureupmath{{}^{\circ}\kern-\scriptspace F} \\[1ex]
+% \cmd{\arcdeg} && ${}^{\circ}$ \\
+% \cmd{\arcmin} && \arcmin \\
+% \cmd{\arcsec} && \arcsec \\
+% \hline
+% \noalign{\vskip3pt}
+% \multicolumn{3}{@{}p{9cm}@{}}{\footnotesize\textsc{Note:}
+% Contrary to the common practice in many countries,
+% is the correct SI symbol for litre a capital L
+% or lowercase l, and \emph{not} the
+% script l, $\ell$ (\cmd{\ell}).}\\[2ex]
+% \multicolumn{3}{p{9cm-\tabcolsep}@{}}{\footnotesize\makebox[0pt][r]{$^{a}\,$}^^A
+% Some fonts have an upright Greek \textmu\ character available
+% in the TS1 encoding (\pkg{textcomp} package).
+% Fonts such as Lucida and Adobe Symbol also supply upright
+% Greek math characters. See also the \pkg{upgreek} and
+% \pkg{gensymb} packages.}\\[2ex]
+% \multicolumn{3}{p{9cm-\tabcolsep}@{}}{\footnotesize\makebox[0pt][r]{$^{b}\,$}^^A
+% Not a standard SI symbol.}\\
+% \end{tabular}
+% \end{table}
+%
+%
+%
+% \section{Configuring The Output}
+% \subsection{Configuring commands}
+%
+% The output of the \cmd{\SI} command can be formatted by the user
+% by setting the following commands:
+%
+% \begin{cmddef}[ll]
+% \cmd{\SIunitsep}\marg{spacing cmd} & |[|default: |{\,} ]|\\
+% \cmd{\SIunitspace}\marg{spacing cmd} & |[|default: |{\,} ]|\\
+% \cmd{\SIunitdot}\marg{cmd} & |[|default: |{\cdot} ]|
+% \end{cmddef}
+%
+% \vspace{-\topsep}
+% \begin{itemize}
+% \item The spacing between the number and the unit is set with
+% \cmd{\SIunitsep}.
+%
+% \item Inside the \cmd{\SI}\ command the point, ``.'', is make
+% active and redefined to \cmd{\SIunitdot}.
+%
+% \item The hard space, ``\tlde'', is redefined to
+% \cmd{\SIunitspace}.
+% \end{itemize}
+%
+%
+%
+% \noindent The user can change the number format with the following
+% commands:
+%
+% \begin{cmddef}[ll]
+% \cmd{\SIdecimalsign}\marg{cmd} & |[|default: |{.} ]|\\
+% \cmd{\SIthousandsep}\marg{spacing cmd} & |[|default: |{\,} ]|\\
+% \cmd{\SIproductsign}\marg{cmd} & |[|default: |{\times}]|
+% \end{cmddef}
+%
+%
+% \noindent The default fonts to be selected by the \pkg{SIstyle}
+% package can be changed. The following commands are provided:
+%
+% \begin{cmddef}[ll]
+% \cmd{\SImathrm}\marg{math font command} & |[|default: |{\mathrm} ]|\\
+% \cmd{\SImathsf}\marg{math font command} & |[|default: |{\mathsf} ]|\\
+% \cmd{\SImathtt}\marg{math font command} & |[|default: |{\mathtt} ]|
+% \end{cmddef}
+%
+% \vspace{-\topsep}
+% \begin{itemize}
+% \item\cmd{\SImathrm}: Sets the default math serif font.
+% \item\cmd{\SImathsf}: Sets the default math sanserif font.
+% \item\cmd{\SImathtt}: Sets the default math typewriter font.
+% \end{itemize}
+% \vspace{-\topsep}
+%
+% \begin{cmddef}[ll]
+% \cmd{\SIdefaultMfam}\marg{math font command} & |[|default: |{\mathrm} ]|\\
+% \cmd{\SIdefaultNfam}\marg{math font command} & |[|default: |{\mathrm} ]|\\
+% \cmd{\SIdefaultTfam}\marg{text font family} & |[|default: |{\rmfamily}]|
+% \end{cmddef}
+%
+% \vspace{-\topsep}
+% \begin{itemize}
+% \item\cmd{\SIdefaultMfam}: Sets the default math font of the units.
+% \item\cmd{\SIdefaultNfam}: Sets the default math font of the numbers.
+% \item\cmd{\SIdefaultTfam}: Sets the default text font when text
+% components are included with the units (e.g., from the
+% \pkg{textcomp} package)
+% \end{itemize}
+%
+% \begin{Item}{Note}
+% An interesting side-effect can be obtained when you are using
+% Computer Modern fonts by setting the \cmd{\SIdefaultNfam} to
+% \cmd{\mathnormal}. The result is that all the numbers are then in
+% lowercase: \xnum{0123456789} as oppose to 0123456789.
+% This document was formatted with this setting.
+% \end{Item}
+%
+%
+% \subsection{Examples formats}\label{sec:ExmplFmt}
+%
+% \paragraph{USA:}
+%
+% NIST Special Publication 811 -- \textit{Guide for the Use of the
+% International System of Units (SI)}
+%
+% \begin{Ipara}
+% |\SIdecimalsign{.} |\\
+% |\SIthousandsep{\,} |\\
+% |\SIproductsign{\times}|\\
+% |\SIunitsep{\,} |\\
+% |\SIunitspace{\cdot} |\quad(give \tlde\ and |.| the same output) \\
+% |\SIunitdot{\cdot} |
+% \end{Ipara}
+% {^^A------------------
+% \SIdefaultNfam{\mathrm}
+% \SIdecimalsign{.}
+% \SIthousandsep{\,}
+% \SIproductsign{\times}
+% \SIunitsep{\,}
+% \SIunitspace{\cdot}
+% \SIunitdot{\cdot}
+%^^A
+% \noindent This will format a number and unit:
+% \begin{Ipara}
+% \begin{tabular}[t]{@{}l@{\RAt}l@{}}
+% |\SI{-1.23456e^3}{N.m}| & \SI{-1.23456e^3}{N.m}
+% \end{tabular}
+% \end{Ipara}
+% \noindent To obtain tighter numbers, put the multiplication and
+% half high dot signs inside braces
+% \begin{Ipara}
+% |\SIproductsign{{\times}}|\\
+% |\SIunitspace{{\cdot}} |\\
+% |\SIunitdot{{\cdot}} |
+% \end{Ipara}
+% \SIproductsign{{\times}}
+% \SIunitspace{{\cdot}}
+% \SIunitdot{{\cdot}}
+%^^A
+% \noindent This will then format the number and unit:
+% \begin{Ipara}
+% \begin{tabular}[t]{@{}l@{\RAt}l@{}}
+% |\SI{-1.23456e^3}{N.m}| & \SI{-1.23456e^3}{N.m}
+% \end{tabular}
+% \end{Ipara}
+% }^^A------------------
+%
+%
+%
+% \section{Locales}
+%
+% The \pkg{SIstyle} package provides a number of style setup commands
+% for the formatting conventions in different countries
+% (or your own pivate setting).
+%
+% \begin{cmddef}
+% \cmd{\AddToSIstyle\ }\marg{locale}\\
+% \cmd{\AddToSIstyle*}\marg{locale}\\[1ex]
+% \cmd{\SIstyle}\marg{locale}\\[1ex]
+% \cmd{\SIstyleToLang}\marg{language}\marg{locale}
+% \end{cmddef}
+%
+% \noindent The \cmd{\AddToSIstyle} appends formatting commands to a
+% locale. The starred form clears the list before appending. As an
+% example for the USA (see \S\ref{sec:ExmplFmt})
+%
+% \begin{Ipara}
+% |\AddToSIstyle{USA}{% |\\
+% | \SIdecimalsign{.}% |\\
+% | \SIthousandsep{\,}% |\\
+% | \SIunitsep{\,}% |\\
+% | \SIunitdot{\cdot}% |\\
+% | \SIunitspace{\;}% |\\
+% | \SIproductsign{\times}%|\\
+% | \SIobeyboldfalse |\\
+% | \SIgroupfourtrue} |
+% \end{Ipara}
+%
+% \noindent See table \ref{tab:locales} for a list of predefined
+% settings.\footnote{Any contribution shall be appreciated.}
+% A predefined setting can then be activated with the \cmd{\SIstyle}
+% command, for example:
+%
+% \begin{Ipara}
+% |\SIstyle{USA}|
+% \end{Ipara}
+%
+% \noindent Locales can also be linked to the language setup
+% commands of \pkg{babel} with the \cmd{\SIstyleToLang} command,
+% for example:
+%
+% \begin{Ipara}
+% |\SIstyleToLang{english}{USA}|
+% \end{Ipara}
+%
+% \noindent The settings of |USA| will then be activated every
+% time \pkg{babel} makes |english| the active languge. This
+% command is provided because a number formatting are not linked
+% to languages (nearly every English speaking country has a
+% different number format).
+%
+% \begin{table}[h]
+% \centering
+% \caption{Predefined styles}
+% \label{tab:locales}
+% \small
+% \smallskip
+% \begin{tabular}{@{}llclcl@{}}
+% \hline
+% \noalign{\vskip3pt}
+% \multicolumn{2}{@{}l}{\bfseries Style} &&
+% \multicolumn{1}{c}{\bfseries Locale} &&
+% \multicolumn{1}{c}{\bfseries Example} \\
+% \cline{1-2} \cline{4-4} \cline{6-6}
+% \noalign{\vskip3pt}
+% Germany & && |German| && \SIstyle{German}\SI{-1.23456e^3}{N.m}\\
+% South Africa& (SABS M 33a:1992) && |S-Africa| && \SIstyle{S-Africa}\SI{-1.23456e^3}{N.m}\\
+% USA & (NIST SP811) && |USA| && \SIstyle{USA}\SI{-1.23456e^3}{N.m}\\
+% \hline
+% \noalign{\vskip3pt}
+% \end{tabular}
+% \end{table}
+%
+%^^A Einheiten und Formelzeichen
+%^^A
+%^^A DIN 1301-1 (12/93) Einheiten, Einheitennamen, Einheitenzeichen
+%^^A DIN 1302 (12/99) Allgemeine mathematische Zeichen und Begriffe
+%^^A DIN 1304-1 (03/94) Formelzeichen; Allgemeine Formelzeichen
+%^^A DIN 1313 (12/98) Physikalische Größen und Gleichungen
+%^^A DIN 1338 (08/96) Formelschreibweise und Formelsatz
+%
+%^^A=================================================================
+% \changes{v2.0}{2004/07/09}{Documentation of interface with other packages}
+% \section{Other packages}
+% \subsection{\pkg{textcomp}}
+%
+% The \pkg{SIstyle} package defines a number of unit
+% symbols that are not available as standard characters.
+% If the \pkg{textcomp} package is loaded, the symbols in the
+% righthand column of table~\ref{tab:textcomp} automatically used.
+%
+% \begin{table}[h]
+% \centering
+% \caption{SI symbols defined by \pkg{textcomp} package}
+% \label{tab:textcomp}
+% \smallskip
+% \begin{tabular}{@{}lcccc}
+% \hline\noalign{\vskip3pt}
+% Command && Symbol &&\pkg{textcomp}\\
+% \cline{1-1} \cline{3-3} \cline{5-5}
+% \noalign{\vskip3pt}
+% \cmd{\angstrom}\hspace{1cm} && \angstrom && \capitalring{A} \\
+% \cmd{\micro} && $\mu$ && \textmu \\
+% \cmd{\ohm} && $\Omega$ && \textohm \\[1ex]
+% \cmd{\degC} && \ensureupmath{{}^{\circ}\kern-\scriptspace C}
+% && \textcelsius \\
+% \cmd{\degF} && \ensureupmath{{}^{\circ}\kern-\scriptspace F}
+% && \textdegree F \\[1ex]
+% \cmd{\arcdeg} && ${}^{\circ}$ && \textdegree \\
+% \hline
+% \noalign{\vskip3pt}
+% \end{tabular}
+% \end{table}
+%
+%
+% \subsection{\pkg{SIunits}}
+%
+% The \pkg{SIunits} package provides commands for all the SI units and
+% prefixes. It can be used together with \pkg{SIstyle}, but care must be
+% taken to ensure that both the packages have identical configurations.
+%
+% \begin{Item}{Example}
+% \begin{Itabb}
+% |\usepackage{textcomp}|\\
+% |\usepackage[cdot,textstyle]{SIunits}|\\
+% | \let\ohm\relax|\\
+% |\usepackage{sistyle}|\\
+% | \SIunitspace{\cdot}|\\
+% | \SIunitdot{\cdot}|
+% \end{Itabb}
+% Inside the document \pkg{SIunits} can then be used as
+% \begin{Itabb}
+% |\SI{30}{\watt\per\square\metre\usk\kelvin}| ~~$\rightarrow$~~ \SI{30}{W/m^2.K}
+% \end{Itabb}
+% As the author of \pkg{SIunits}, I prefere to write
+% \begin{Itabb}
+% |\SI{30}{W/m^2.K}| ~~$\rightarrow$~~ \SI{30}{W/m^2.K}
+% \end{Itabb}
+% \end{Item}
+%
+% \subsection{\pkg{mathcomp}}
+%
+% The \pkg{mathcomp} package provided the \pkg{textcomp} symbols in
+% math mode. Unfortunately it is only available in the \cmd{\mathrm}
+% math alphabet and is therefore of little use to \pkg{SIstyle}.
+%
+% \subsection{\pkg{upgreek}}
+%
+% The \pkg{upgreek} package can be used to redefine the \cmd{\micro}
+% and \cmd{\ohm} commands.
+%
+% \begin{Item}{Example}
+% \begin{Itabb}
+% |\usepackage{sistyle}|\\
+% |\usepackage[Euler]{upgreek}|\\
+% | \newcommand*{\micro}{\ensureupmath{\upmu}}|\\
+% | \newcommand*{\ohm}{\ensureupmath{\upOmega}}|
+% \end{Itabb}
+% \end{Item}
+%
+% \subsection{\pkg{gensymb}}
+%
+% The \pkg{gensymb} package provides generic commands \cmd{\degree},
+% \cmd{\celsius}, \cmd{\perthousand}, \cmd{\micro} and \cmd{\ohm}
+% which work both in text and math mode. Note that \pkg{SIstyle} typeset
+% all its symbols in math mode which will cause \pkg{gensymb} to provide
+% only math symbols. The result is that only the \cmd{\mathrm} versions
+% of the symbols are then output in a document, thereby ignoring the
+% font changing mechanism of \pkg{SIstyle}.
+%
+%
+%
+% \subsection{\pkg{arev}}
+%
+% The \pkg{arev} sanserif font has a slanted math sanserif font. To get an upright
+% math font the \cmd{\mathrm} font must be used in place of \cmd{\mathsf}. The
+% package \pkg{textcomp} is included inside \pkg{arev}, but it do not give the
+% proper symbol for \pkg{arev}. We can use the \cmd{\textmu} symbol from the
+% BeraSans typewriter font loaded internaly by \pkg{arev}
+%
+% \begin{Item}{Example}
+% \begin{Itabb}
+% |\usepackage{arev}|\\
+% |\usepackage{sistyle}|\\
+% | \SImathsf{\mathrm}|\\
+% | \SIdefaultTfam{\sffamily}|\\
+% | \newcommand*{\micro}{\ensureupmath{\text{\ttfamily\textmu}}}|\\
+% | \newcommand*{\ohm}{\ensureupmath{\Omega}}|\\
+% | \newcommand*{\degC}{\ensureupmath{{}^{\circ}\kern-\scriptspace C}}|\\
+% | \newcommand*{\degF}{\ensureupmath{{}^{\circ}\kern-\scriptspace F}}|
+% \end{Itabb}
+% \end{Item}
+%
+%
+%
+%^^A=================================================================
+% \clearpage
+% \part{Typesetting SI Units}\label{prt:SI}
+%
+% \section{SI Units}\label{sec:1}
+% \subsection{Typeface}
+%
+% Unit symbols are printed in normal roman (upright)
+% type regardless of the type used in the surrounding text.
+%
+% \begin{Item}{Example}
+% {\bfseries\itshape A torque of\/ \SI{10}{N.m} was applied.}
+% \end{Item}
+% \begin{Item}{Listing}\small
+% |{\bfseries\itshape A torque of\/ \SI{10}{N.m} was applied.}|
+% \end{Item}
+%
+%
+%
+% \subsection{Unit symbols obtained by multiplication}
+%
+% Symbols for units formed from other units by multiplication are
+% indicated by means of either a half-high (that is, centered) dot
+% or a space. However, the half-high dot is preferred, because it is
+% less likely to lead to confusion.
+%
+% \begin{Item}{Example}
+% \SI{}{N~m} or \SI{}{N.m}
+% \end{Item}
+% \begin{Item}{Listing}\small
+% |\SI{}{N~m} or \SI{}{N.m}|
+% \end{Item}
+%
+% \begin{Item}{Notes}
+% \end{Item}
+% \begin{enumerate}
+% \item A half-high dot or space is usually imperative. For example,
+% \SI{}{m.s^{-1}} is the symbol for the metre per second while
+% \SI{}{ms^{-1}} is the symbol for the reciprocal millisecond
+% (\SI{1e3}{s^{-1}}).
+%
+% \item The ISO 31-0 specification suggests that if a space is used
+% to indicate units formed by multiplication, the space may be
+% omitted if it does not cause confusion. This possibility is
+% reflected in the common practice of using the symbol
+% \SI{}{kWh} rather than \SI{}{kW.h} or \SI{}{kW~h} for the kilowatt
+% hour. Nevertheless, is the position taken that a
+% half-high dot or a space should always be used to avoid
+% possible confusion; and that for this same reason, only one
+% of these two allowed forms should be used in any given
+% manuscript.
+% \end{enumerate}
+%
+%
+%
+% \subsection{Unit symbols obtained by division}
+%
+% Symbols for units formed from other units by division are
+% indicated by means of a solidus (oblique stroke, \texttt{/} ), a
+% horizontal line, or negative exponents.
+%^^A
+% \begin{Item}{Example}
+% \SI{}{m/s},~ \SI{}{\dfrac{m}{s}},~ or~ \SI{}{m.s^{-1}}
+% \end{Item}
+% \begin{Item}{Listing}\small
+% |\SI{}{m/s}, \SI{}{\dfrac{m}{s}}, or \SI{}{m.s^{-1}}|
+% \end{Item}
+%^^A
+% \noindent However, to avoid ambiguity, the solidus must not be
+% repeated on the same line unless parentheses are used.
+%^^A
+% \begin{Item}{Examples}
+% \begin{tabular}[t]{@{}lll@{}}
+%^^A \SI{}{m.kg/(s^3.A)}~ or~ \SI{}{m.kg.s^{-3}.A^{-1}}~~~\=\kill
+% \SI{}{m/s^2}~ or~ \SI{}{m.s^{-2}}~
+% & \myemph{but not:}
+% & \SI{}{m/s/s} \\
+% \SI{}{m.kg/(s^3.A)}~ or~ \SI{}{m.kg.s^{-3}.A^{-1}}
+% & \myemph{but not:}
+% & \SI{}{m.kg/s^3/A}
+% \end{tabular}
+% \end{Item}
+% \begin{Item}{Listing}\small
+% |\SI{}{m.kg/(s^3.A)} or \SI{}{m.kg.s^{-3}.A^{-1}}|
+% \end{Item}
+%^^A
+% \noindent Negative exponents should be used in complicated cases.
+%
+%
+%
+%
+% \section{Rules for Expressing Values of Quantities}
+% \subsection{Value and numerical value of a quantity}
+% \label{sec:numval}
+%
+% The \myemph{value} of a quantity is its magnitude expressed as the
+% product of a number and a unit, and the number multiplying the
+% unit is the \myemph{numerical} value of the quantity expressed in
+% that unit.
+%
+% More formally, the value of quantity $A$ can be written as $A
+% {=}\{A\}[A ]$, where $\{A\}$ is the numerical value of $A$ when the
+% value of $A$ is expressed in the unit $[A]$. The numerical value
+% can therefore be written as $\{A\}{=}A/[A]$, which is a convenient
+% form for use in figures and tables. Thus, to eliminate the
+% possibility of misunderstanding, an axis of a graph or the heading
+% of a column of a table can be labeled ``$t/\SI{}{\degC}\,$''
+% instead of ``$t\,(\SI{}{\degC})$'' or ``Temperature
+% $(\SI{}{\degC})$.''
+%
+% \begin{figure}[!b]
+% \sbox{\tboxa}{\includegraphics{figs/fig1}}^^A
+% \sbox{\tboxb}{\includegraphics{figs/fig2}}^^A
+% \setlength{\tdima}{\wd\tboxa}^^A
+% \addtolength{\tdima}{\wd\tboxb}^^A
+% \addtolength{\tdima}{1em}^^A
+% \centering^^A
+% \makebox[0pt][c]{
+% \begin{minipage}[t]{\tdima}
+% \begin{minipage}[t]{\wd\tboxa}
+% \usebox{\tboxa}
+% \caption{Units included with the scale of the graph. This
+% form is usually difficult to obtain with most
+% graphing software.}
+% \label{fig:1}
+% \end{minipage}
+% \hfill
+% \begin{minipage}[t]{\wd\tboxb}
+% \usebox{\tboxb}
+% \caption{The graph labels includes the units and the scales
+% are dimensionless. Notice that there is no
+% ambiguity with this form of labeling, because
+% everything makes mathematical sense.}
+% \label{fig:2}
+% \end{minipage}
+% \end{minipage}}
+% \end{figure}
+%
+%
+% \begin{Item}{Example}
+% \end{Item}
+% \begin{enumerate}
+% \item In the SI, the value of the velocity of light in vacuum is
+% $c = \SI{299792458}{m/s}$ exactly. The number
+% \num{299792458} is the numerical value of $c$ when $c$ is
+% expressed in the unit \SI{}{m/s}, and equals $c/(\SI{}{m/s})$.
+%
+% \begin{Item}{Listing}\small
+% |$c = \SI{299792458}{m/s}$|\\
+% |$c/(\SI{}{m/s})$|
+% \end{Item}
+%
+% \item The ordinate of a graph is labeled $t/\SI{}{\micro s}$,
+% where $t$ is the symbol for time and \SI{}{s} is the unit
+% symbol for second, and has scale marks at \num{0}, \num{4},
+% \num{8}, and \num{12}. If the ordinate
+% value of a point on a curve in the graph is estimated to
+% be \num{3.2}, the corresponding time is ~
+% $t/\SI{}{\micro s}=\num{3.2}$ ~ or ~ $t =\SI{3.2}{\micro s}
+% = \SI{3.6e-6}{s}$. Notice
+% the lack of ambiguity in this form of labelling compared
+% with ``Time $(\SI{}{\micro s})$.'' See figures
+% \ref{fig:1} and \ref{fig:2} for examples.
+%
+% \item An expression such as $\ln(p/\SI{}{MPa})$, where $p$ is the
+% quantity symbol for pressure and \SI{}{MPa} is the unit symbol
+% for megapascal, is perfectly acceptable because $p/\SI{}{MPa}$
+% is the numerical value of $p$ when $p$ is expressed in the
+% unit \SI{}{MPa} and is simply a number.
+% \begin{Item}{Listing}\small
+% |$\ln(p/\SI{}{MPa})$|
+% \end{Item}
+% \end{enumerate}
+%
+%
+%
+% \begin{Item}{Notes}
+% \end{Item}
+% \begin{enumerate}
+% \item For the conventions concerning the grouping of digits, see
+% section~\S\ref{sec:digits}.
+%
+% \item An alternative way of writing $c/(\SI{}{m/s})$ is
+% $\{c\}_{\SI{}{m/s}}$, meaning the numerical value of $c$ when
+% $c$ is expressed in the unit \SI{}{m/s}.
+%
+% \begin{Item}{Listing}\small
+% |$\{c\}_{\SI{}{m/s}}$|
+% \end{Item}
+% \end{enumerate}
+%
+%
+% \subsection{Space between numerical value and unit symbol}
+%
+% In the expression for the value of a quantity, the unit symbol is
+% placed after the numerical value and a \myemph{space} is left
+% between the numerical value and the unit symbol. Note that this
+% rule includes the persentage sign \%.
+%
+% The only exceptions to this rule are for the unit symbols for
+% degree, minute, and second for plane angles: \arcdeg, \arcmin, and
+% \arcsec, respectively, in which case no space is left between the
+% numerical value and the unit symbol.
+%
+% \begin{Item}{Examples}
+% $x = \SI{10}{mm}$\\
+% $q = \SI{25}{\%}$\\
+% $\theta = \ang{30;22;8}$
+% \end{Item}
+% \begin{Item}{Listing}\small
+% |$x = \SI{10}{mm}$|\\
+% |$q = \SI{25}{\%}$|\\
+% |$\theta = \ang{30;22;8}$|
+% \end{Item}
+%
+% \noindent This rule means that:
+%
+% \begin{enumerate}
+% \item The symbol \degC\ for the degree Celsius is preceded by a
+% space when one expresses the values of Celsius temperatures.
+%
+% \begin{Item}{Example}
+% $t = \SI{30.2}{\degC}$~~
+% \myemph{but not:}~~
+% $t = \num{30.2}\degC$ ~~or~~
+% $t = \num{30.28}\mathrm{{}^{\circ}~C}$
+% \end{Item}
+% \begin{Item}{Listing}\small
+% |$t = \SI{30.2}{\degC}$|
+% \end{Item}
+%
+% \item Even when the value of a quantity is used in an adjectival
+% sense, a space is left between the numerical value and the
+% unit symbol. (This rule recognizes that unit symbols are not
+% like ordinary words or abbreviations but are mathematical
+% entities, and that the value of a quantity should be
+% expressed in a way that is as independent of language as
+% possible.)
+%
+% \begin{Item}{Examples}
+% a \SI{1}{m} end gauge
+% \myemph{but not:}
+% a \num{1}-\SI{}{m} end gauge
+%
+% a \SI{10}{kV} resistor
+% \myemph{but not:}
+% a \num{10}-\SI{}{kV} resistor
+% \end{Item}
+%
+% However, if there is any ambiguity, the words should be
+% rearranged accordingly. For example, the statement ``the
+% samples were placed in \SI{22}{mL} vials'' should be
+% replaced with the statement ``the samples were placed in
+% vials of volume \SI{22}{mL}.''
+%
+% \begin{Item}{Note}
+% When unit names are spelled out, the normal rules of
+% English apply. Thus, for example, ``a roll of
+% \num{35}-millimetre film'' is acceptable.
+% \end{Item}
+% \end{enumerate}
+%
+% \subsection{Clarity in writing values of quantities}
+%
+% The value of a quantity is expressed as the product of a number
+% and a unit (see section~\S\ref{sec:numval}). Thus, to avoid
+% possible confusion, this \myemph{Guide} takes the position that
+% values of quantities must be written so that it is completely
+% clear to which unit symbols the numerical values of the quantities
+% belong. Also to avoid possible confusion, this \myemph{Guide}
+% strongly recommends that the word ``to'' be used to indicate a
+% range of values for a quantity instead of a range dash (that is, a
+% long hyphen) because the dash could be misinterpreted as a minus
+% sign. (The first of these recommendations once again recognizes
+% that unit symbols are not like ordinary words or abbreviations but
+% are mathematical entities --- see section~\S\ref{sec:numval}.)
+%
+% \begin{Item}{Examples}
+% \end{Item}
+% \begin{tabbing}
+% \hskip1pc\=\hskip15pc\=\kill \>
+% $\SI{51}{mm}\times\SI{51}{mm}\times\SI{25}{mm}$ \>
+% \myemph{but not:} ~
+% $\num{51}\times\num{51}\times\SI{25}{mm}$ \\[1ex]
+%
+% \> \SI{225}{nm} to \SI{2400}{nm} or
+% $(\num{225}\text{ to }\num{2400})\,\SI{}{nm}$ \>
+% \myemph{but not:} ~
+% \num{225} to \SI{2400}{nm}\\[1ex]
+%
+% \> \SI{0}{\degC} to \SI{100}{\degC} or
+% $(\num{0}\text{ to }\num{100})\,\degC$ \>
+% \myemph{but not:} ~
+% $\SI{0}{\degC} - \SI{100}{\degC}$\\[1ex]
+%
+% \> \SI{0}{V} to \SI{5}{V} or (\num{0} to \num{5})\,V \>
+% \myemph{but not:} ~
+% $\num{0} - \SI{5}{V}$ \\[1ex]
+%
+% \> (\num{8.2}, \num{9.0}, \num{9.5}, \num{9.8},
+% \num{10.0})\,\SI{}{GHz} \>
+% \myemph{but not:} ~
+% \num{8.2}, \num{9.0}, \num{9.5}, \num{9.8}, \SI{10.0}{GHz}\\[1ex]
+%
+% \> $\SI{63.2}{m} \pm \SI{0.1}{m}$ or $(\num{63.2} \pm
+% \num{0.1})\,\SI{}{m}$ \>
+% \myemph{but not:} ~
+% $\num{63.2} \pm \SI{0.1}{m}$ or $\SI{63.2}{m} \pm \num{0.1}$ \\[1ex]
+%
+% \> $\SI{129}{s} - \SI{3}{s} = \SI{126}{s}$ or
+% $(\num{129}-\num{3})\,\SI{}{s} = \SI{126}{s}$ \>
+% \myemph{but not:} ~
+% $\num{129} - \SI{3}{s} = \SI{126}{s}$
+%
+% \end{tabbing}
+%
+% \begin{Item}{Note}
+% For the conventions concerning the use of the multiplication sign,
+% see section~\S\ref{sec:mult}.
+% \end{Item}
+%
+%^^A==========================================================
+%
+% \section{Printing Numbers}
+%
+% \subsection{Typeface for numbers}
+%
+% Arabic numerals expressing the numerical values of quantities are
+% generally printed in lightface (that is, regular) roman type
+% irrespective of the type used for the surrounding text. Arabic
+% numerals other than numerical values of quantities may be printed
+% in lightface or bold italics, or in bold roman type, but lightface
+% roman type is usually preferred.
+%
+% \subsection{Decimal sign or marker}
+%
+% The sign or marker being used depends very much on the practices
+% of a country (and/or language), e.g., in the United States is the
+% dot on the line, while in Germany it is the comma.
+%
+% For numbers less than one, a zero is written before the decimal
+% marker. For example, \SI{0.25}{s} is the correct form, not
+% \xnum{.25}\,s.
+%
+% \subsection{Grouping digits}\label{sec:digits}
+%
+% Because the comma is widely used as the decimal marker, it should
+% not be used to separate digits into groups of three (there are
+% exceptions for certain countries). Instead, digits should be
+% separated into groups of three, counting from the decimal marker
+% towards the left and right, by the use of a thin, fixed space.
+% However, this practice is not usually followed for numbers having
+% only four digits on either side of the decimal marker except when
+% uniformity in a table is desired.
+% \begin{Item}{Examples}
+% \begin{tabbing}
+% \xnum{8012.5947} or \xnum{8\;012.594\;7}~\= \myemph{is highly preferred to:}~~\=\kill
+% \num{76483522} \> \myemph{but not:} \>\xnum{76{,}483{,}522}\\
+% \num{43279.16829} \> \myemph{but not:} \>\xnum{43{,}279.168\;29}\\
+% \xnum{8012} or \xnum{8\;012} \> \myemph{but not:} \>\xnum{8{,}012}\\
+% \num{0.4917223} \> \myemph{is highly preferred to:} \>\xnum{0.4917223}\\
+% \xnum{0.5947} or \xnum{0.594\;7} \> \myemph{but not:} \>\xnum{0.59\;47}\\
+% \xnum{8012.5947} or \xnum{8\;012.594\;7}\> \myemph{but not:} \>\xnum{8\;012.5947} or \xnum{8012.594\;7}
+% \end{tabbing}
+% \end{Item}
+%
+% \begin{Item}{Note}
+% The practice of using a space to group digits is not usually
+% followed in certain specialized applications, such as engineering
+% drawings and financial statements.
+% \end{Item}
+%
+%
+% \subsection{Multiplying numbers}\label{sec:mult}
+%
+% When the dot is used as the decimal marker (USA convention), the
+% preferred sign for the multiplication of numbers or values of
+% quantities is a cross (that is, multiplication sign) ($\times$),
+% not a half-high (that is, centered) dot ($\cdot$).
+%
+% \begin{Item}{Examples}
+% \begin{tabular}[t]{@{}lll@{}}
+% $\num{25}\times\num{60.5}$ &\myemph{but not:}& $\num{25}\cdot\num{60.5}$\\
+% $\SI{53}{m/s}\times\SI{10.2}{s}$ &\myemph{but not:}& $\SI{53}{m/s}\cdot\SI{10.2}{s}$\\
+% $\num{15}\times\SI{72}{kg}$ &\myemph{but not:}& $\num{15}\cdot\SI{72}{kg}$\\
+% \end{tabular}
+% \end{Item}
+%
+%
+% \begin{Item}{Notes}
+% \end{Item}
+% \begin{enumerate}
+% \item When the comma is used as the decimal marker, the preferred
+% sign for the multiplication of numbers is the half-high dot
+% (German convention).
+% \begin{Ipara}[\normalsize]
+% \xnum{3{,}645\;98 \cdot 10^2} ~ or ~
+% \xnum{2{,}58 \cdot 31{,}2}
+% \end{Ipara}
+% The comma is also used together with the cross for the
+% multiplication of values of quantities (South African Convention).
+% \begin{Ipara}[\normalsize]
+% \xnum{3{,}645\;98 {\times} 10^2} ~ or ~
+% \xnum{2{,}58 \times 31{,}2}
+% \end{Ipara}
+%
+% \item The multiplication of quantity symbols (or numbers in
+% parentheses or values of quantities in parentheses) may be
+% indicated in one of the following ways: $ab$, $a\;b$, $a\cdot b$,
+% $a\times b$.
+% \end{enumerate}
+%
+%
+%^^A=================================================================
+% \StopEventually{\PrintChanges\PrintIndex}
+% \clearpage
+% \part{Implementation: \pkg{SIstyle}}
+%
+% \begin{macrocode}
+%<*package>
+% \end{macrocode}
+%
+% \section{Utilities}
+%
+% We need the \cmd{\text} command from the \AmS\ package
+% \pkg{amstext} for the typesetting of text in math mode.
+% \begin{macrocode}
+\RequirePackage{amstext}
+% \end{macrocode}
+%
+% \subsection{Test for $\varepsilon$-\TeX}
+% \begin{macrocode}
+\newif\ifSI@eTeX
+\SI@eTeXfalse
+\ifx\eTeXversion\@undefined
+\else
+ \ifx\eTeXversion\relax
+ \else
+ \ifnum\eTeXversion>\z@
+ \SI@eTeXtrue
+ \fi
+ \fi
+\fi
+% \end{macrocode}
+%
+% \subsection{Test for empty argument}
+%
+% \begin{macro}{\SI@ifempt}
+% Test for a empty argument (Wilson, Arseneau in
+% \pkg{ifmtarg.sty}).\\
+% Usage: \cmd{\SI@ifempt}\marg{arg}\marg{true}\marg{false}
+%
+% \begin{macrocode}
+\begingroup
+ \catcode`\Q=3
+ \long\gdef\SI@ifempt#1{\SI@xifempt#1QQ\@secondoftwo\@firstoftwo\@nil}
+ \long\gdef\SI@xifempt#1#2Q#3#4#5\@nil{#4}
+\endgroup
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Font test commands}
+%
+% \begin{macro}{\GetMathFontFams}
+% There exists no hook to test for the current active
+% math font. Get the different families at the beginning
+% of the document. We only look for \cmd{\mathsf} and
+% \cmd{\mathtt}. The others are set with the default
+% math font (\cmd{\mathrm}).
+% \begin{macrocode}
+ \newcommand{\GetMathFontFams}{%
+ \sbox{0}{$%
+ \@ifundefined{mathsf}
+ {\global\chardef\SI@sffam=99}%
+ {\mathsf{\global\chardef\SI@sffam=\fam}}%
+ \@ifundefined{mathtt}
+ {\global\chardef\SI@ttfam=99}%
+ {\mathtt{\global\chardef\SI@ttfam=\fam}}%
+ $}%
+ }
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+\AtBeginDocument{\GetMathFontFams}
+% \end{macrocode}
+%
+% \begin{macro}{\IfTbold}
+% Test if bold text (\cmd{\bfseries} or \cmd{\bxseries}) is
+% active.\\
+% Usage: \cmd{\IfTbold}\marg{true}\marg{false}
+% \begin{macrocode}
+\newcommand{\IfTbold}[2]{%
+ \if b\expandafter\@car\f@series\@nil%
+ #1\else #2\fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\IfMbold}
+% Test if \cmd{\boldmath} is active.
+% Usage: \cmd{\IfMbold}\marg{true}\marg{false}
+% \begin{macrocode}
+\newcommand{\IfMbold}[2]{%
+ \edef\temp@bm{bold}%
+ \ifx\math@version\temp@bm
+ #1\else #2\fi}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{Font user setup commands}
+%
+% \begin{macro}{\SIobeybold}
+% User flag to obey bold text and math bold setting for
+% SI units and numbers.
+% \begin{macrocode}
+\newif\ifSIobeybold
+\SIobeyboldfalse
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\SI@mathrm}
+% \begin{macro}{\SI@mathsf}
+% \begin{macro}{\SI@mathtt}
+% \begin{macro}{\SImathrm}
+% \begin{macro}{\SImathsf}
+% \begin{macro}{\SImathtt}
+% Make user commands to override \cmd{\mathrm}, \cmd{\mathsf}
+% and \cmd{\mathtt},
+% \begin{macrocode}
+\newcommand*{\SI@mathrm}{\mathrm}
+\newcommand*{\SI@mathsf}{\mathsf}
+\newcommand*{\SI@mathtt}{\mathtt}
+\newcommand*{\SImathrm}[1]{\renewcommand*{\SI@mathrm}{#1}}
+\newcommand*{\SImathsf}[1]{\renewcommand*{\SI@mathsf}{#1}}
+\newcommand*{\SImathtt}[1]{\renewcommand*{\SI@mathtt}{#1}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \begin{macro}{\SIdefaultMfam}
+% \begin{macro}{\SI@defaultMfam}
+% The default upright math font for typesetting SI units. This
+% is normally the \cmd{\mathrm} command, but the user may select
+% a different font.
+% \begin{macrocode}
+\newcommand*{\SI@defaultMfam}{\SI@mathrm}
+\newcommand*{\SIdefaultMfam}[1]{\renewcommand*{\SI@defaultMfam}{#1}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\SIdefaultNfam}
+% \begin{macro}{\SI@defaultNfam}
+% The default upright math font for typesetting numbers. This
+% is normally the \cmd{\mathrm} command, but the user may select
+% a different font, for example \cmd{\mathnormal} to obtain
+% old-style digits.
+% \begin{macrocode}
+\newcommand*{\SI@defaultNfam}{\SI@mathrm}
+\newcommand*{\SIdefaultNfam}[1]{\renewcommand*{\SI@defaultNfam}{#1}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\SIdefaultTfam}
+% \begin{macro}{\SI@defaultTfam}
+% The default text font for units set inside a \cmd{\mbox},
+% such as symbols from the \pkg{textcomp} package. It sets the
+% font when the surrounding text font is not \cmd{\sffamily} or
+% \cmd{\ttfamily} or if it is set inside display math.
+% \begin{macrocode}
+\newcommand*{\SI@defaultTfam}{\rmfamily}
+\newcommand*{\SIdefaultTfam}[1]{\renewcommand*{\SI@defaultTfam}{#1}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\SIupmath}
+% This command set units and numbers in an upright font.
+% When called inside a normal text paragraph or inside
+% inline math |$...$|, it will follow the surrounding
+% text font: sansserif or typewrite otherwise it will
+% default to the roman font. Inside display math it will
+% follows the active math font.
+%
+% The prerequisite to toggle the \cmd{\boldmath} math version
+% results in setting the argument inside the \AmS\ \cmd{\text}
+% command. It has the added benefit of scaling with the active
+% math style.
+%
+% Usage: \cmd{\SIupmath}\oarg{math font}\marg{argument}
+%
+% \begin{macro}{\ifupmath}
+% Flag to indicate whether we are inside \cmd{\SIupmath}.
+% \begin{macrocode}
+\newif\ifupmath
+\upmathfalse
+% \end{macrocode}
+% \begin{macrocode}
+\newcommand*{\SIupmath}[2][\SI@defaultMfam]{%
+\begingroup
+ \upmathtrue
+ \edef\temp@sf{\sfdefault}%
+ \edef\temp@tt{\ttdefault}%
+ \let\SI@bold=\relax
+ \ifmmode
+ \ifdim\displaywidth>0pt\relax%--- DISPLAY MATH ------------
+ \ifnum\the\fam=\SI@sffam
+ \let\SI@mfam=\SI@mathsf
+ \let\SI@tfam=\sffamily
+ \else \ifnum\the\fam=\SI@ttfam
+ \let\SI@mfam=\SI@mathtt
+ \let\SI@tfam=\ttfamily
+ \else
+ \let\SI@mfam=#1%
+ \let\SI@tfam=\SI@defaultTfam
+ \fi\fi
+ \IfMbold{\def\SI@bold{\bfseries}}%
+ {\def\SI@bold{\mdseries}}%
+ \else%--- INLINE MATH ----------
+ \ifx\f@family\temp@sf
+ \let\SI@mfam=\SI@mathsf
+ \let\SI@tfam=\sffamily
+ \else\ifx\f@family\temp@tt
+ \let\SI@mfam=\SI@mathtt
+ \let\SI@tfam=\ttfamily
+ \else
+ \let\SI@mfam=#1%
+ \let\SI@tfam=\SI@defaultTfam
+ \fi\fi
+ \IfTbold{\def\SI@bold{\boldmath}}%
+ {\def\SI@bold{\unboldmath}}%
+ \fi
+ \else%----- NORMAL TEXT --------------
+ \ifx\f@family\temp@sf
+ \let\SI@mfam=\SI@mathsf
+ \let\SI@tfam=\sffamily
+ \else\ifx\f@family\temp@tt
+ \let\SI@mfam=\SI@mathtt
+ \let\SI@tfam=\ttfamily
+ \else
+ \let\SI@mfam=#1%
+ \let\SI@tfam=\SI@defaultTfam
+ \fi\fi
+ \IfTbold{\def\SI@bold{\boldmath}}%
+ {\def\SI@bold{\unboldmath}}%
+ \fi%----- END OF TEST --------------
+ \text{%
+ \ifSIobeybold\SI@bold\else\unboldmath\mdseries\fi
+ \upshape\SI@tfam
+ $\SI@mfam{#2}$}%
+\endgroup
+\check@mathfonts}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\ensureupmath}
+% A user command to use the \cmd{\SIupmath} command.
+% \begin{macrocode}
+\DeclareRobustCommand{\ensureupmath}{%
+ \ifupmath
+ \expandafter\@firstofone
+ \else
+ \expandafter\SIupmath
+ \fi}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \section{Typeset Numbers}
+%
+% \subsection{Setup for typesetting numbers}
+%
+% \begin{macro}{\SIdecimalsign}
+% \begin{macro}{\SI@decsign}
+% User command to set decimal sign.
+% \begin{macrocode}
+\newcommand*{\SI@decsign}{{.}}
+\newcommand*{\SIdecimalsign}[1]{\renewcommand*{\SI@decsign}{{#1}}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\SIthousandsep}
+% \begin{macro}{\SI@thousandsep}
+% User command to set thousands separator.
+% \begin{macrocode}
+\newcommand*{\SI@thousandsep}{{\,}}
+\newcommand*{\SIthousandsep}[1]{\renewcommand*{\SI@thousandsep}{{#1}}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\SIproductsign}
+% \begin{macro}{\SI@prod}
+% User command to set product sign.
+% \begin{macrocode}
+\newcommand*{\SI@prod}{\ensuremath{{}\times{}}}
+\newcommand*{\SIproductsign}[1]{\renewcommand*{\SI@prod}{\ensuremath{{}#1{}}}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\ifSIgroupfour}
+% User flag for the grouping of four digits.
+% \begin{macrocode}
+\newif\ifSIgroupfour
+\SIgroupfourtrue
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{Number parser}
+%
+% \begin{macro}{\SI@num}
+% Main command for typesetting numbers. Zap all input spaces and
+% make E's lowercase.
+% \begin{macrocode}
+\def\SI@num#1{%
+ \SI@ifempt{#1}{}{%
+ \edef\SI@tmpa{\lowercase{\noexpand\SI@@num{\zap@space#1 \@empty}}}%
+ \SI@tmpa}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\SI@@num}
+% \begin{macro}{\SI@numsplit}
+% Split of the exponential part (Downes, Oberdiek on c.t.t)
+% \begin{macrocode}
+\def\SI@@num#1{\SI@numsplit#1ee\SI@numexp\SI@realp\@empty}
+\def\SI@numsplit#1e#2e#3#4#5{#4{#1}{#2}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\SI@p@tst}
+% \begin{macro}{\SI@m@tst}
+% Temporaries to test for $+$ and $-$.
+% \begin{macrocode}
+\def\SI@p@tst{+}
+\def\SI@m@tst{-}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\SI@numexp}
+% Type the exponent if the argument contains an ``E'' or ``e''.
+% \begin{macrocode}
+\def\SI@numexp#1#2{%
+ \SI@ifempt{#1}{}{%
+ \def\SI@tmpb{#1}%
+ \ifx\SI@tmpb\SI@p@tst\ensuremath{+}\else
+ \ifx\SI@tmpb\SI@m@tst\ensuremath{-}\else
+ \SI@realp{#1}{}\SI@prod%
+ \fi\fi}%
+ \ifmmode
+ 10^{\SI@realp{#2}{}}%
+ \else
+ 10\textsuperscript{\SI@realp{#2}{}}%
+ \fi}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\SI@realp}
+% \begin{macro}{\SI@realpsplit}
+% Split of the integer and decimal part (for decimal point).
+% \begin{macrocode}
+\def\SI@realp#1#2{\SI@realpsplit#1..\SI@realfrc\SI@realc\@empty}
+\def\SI@realpsplit#1.#2.#3#4#5{#4{#1}{#2}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\SI@realc}
+% \begin{macro}{\SI@realcsplit}
+% Split of the integer and decimal part (for decimal comma).
+% \begin{macrocode}
+\def\SI@realc#1#2{\SI@realcsplit#1,,\SI@realfrc\SI@signedint\@empty}
+\def\SI@realcsplit#1,#2,#3#4#5{#4{#1}{#2}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%
+% \begin{macro}{\SI@realfrc}
+% Type the number if it contains a fraction part. Insert a zero
+% if the integer is empty (no sign either).
+% \begin{macrocode}
+\def\SI@realfrc#1#2{%
+ \SI@ifempt{#1}{\SI@int{0}}%
+ {\SI@signedint{#1}{}}%
+ \SI@decsign\SI@dec{#2}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\SI@signedint}
+% Split the plus and minus from the integer.
+% \begin{macrocode}
+\def\SI@signedint#1#2{\SI@@signedint#1 }
+\def\SI@@signedint#1#2 {%
+ \if +#1\ensuremath{+}%
+ \SI@ifempt{#2}{\SI@int{0}}{\SI@int{#2}}%
+ \else
+ \if -#1\ensuremath{-}%
+ \SI@ifempt{#2}{\SI@int{0}}{\SI@int{#2}}%
+ \else
+ \SI@int{#1#2}\fi \fi}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\SI@not@v}
+% \begin{macro}{\SI@@not@v}
+% Test for a fifth digit.
+% \begin{macrocode}
+\def\SI@not@v#1{\SI@@not@v#1\@empty\@empty\@empty\@empty\@empty\@nil}
+\def\SI@@not@v#1#2#3#4#5\@nil{%
+ \ifx\@empty#5\@empty
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%
+% \begin{macro}{\SI@int}
+% Set the integer. If \cmd{\ifSIgroup} is true and the number has
+% four or less digits, then set the number. Otherwise pass it
+% on to the formatting command.
+% \begin{macrocode}
+\def\SI@int#1{%
+ \ifSIgroupfour
+ \SI@not@v{#1}{#1}{\SI@intfmt{}#1\@empty\@empty\@empty}%
+ \else
+ \SI@intfmt{}#1\@empty\@empty\@empty%
+ \fi}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\SI@intfmt}
+% \begin{macro}{\SI@intfmtafterfi}
+% \begin{macro}{\SI@addthousandsep}
+% Finally typeset the integer in groups of three. (From a macro
+% to typeset Dollar amounts by Donald Arseneau on c.t.t.)
+% \begin{macrocode}
+\def\SI@intfmt#1#2#3#4{%
+ \ifx\@empty#2\@empty%
+ \SI@addthousandsep#1\relax
+ \else
+ \ifx\@empty#3\@empty%
+ \SI@addthousandsep\@empty\@empty#1#2\relax
+ \else
+ \ifx\@empty#4\@empty%
+ \SI@addthousandsep\@empty#1#2#3\relax
+ \else
+ \SI@intfmtafterfi{#1#2#3#4}%
+ \fi
+ \fi
+ \fi}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\SI@intfmtafterfi#1\fi\fi\fi{\fi\fi\fi\SI@intfmt{#1}}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\SI@addthousandsep#1#2#3#4{#1#2#3%
+ \if\relax#4\relax
+ \else
+ \SI@thousandsep\expandafter\SI@addthousandsep\expandafter#4%
+ \fi}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\SI@dec}
+% \begin{macro}{\SI@decfmt}
+% Set the decimal part (from \pkg{frenchb.ldf} by by Johannes L. Braams)
+% \begin{macrocode}
+\def\SI@dec#1{%
+ \ifSIgroupfour
+ \SI@not@v{#1}{#1}{\SI@decfmt#1\@empty\@empty\@empty\@empty}%
+ \else
+ \SI@decfmt#1\@empty\@empty\@empty\@empty%
+ \fi}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\SI@decfmt#1#2#3#4{#1#2#3%
+ \ifx\@empty#4\@empty%
+ \else
+ \SI@thousandsep\expandafter\SI@decfmt\expandafter#4%
+ \fi}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%
+%
+%
+% \subsection{Number commands}
+%
+% \begin{macro}{\SInum}
+% Command to typeset a number in upright math font
+% with \cmd{\SIupmath}
+% \begin{macrocode}
+\newcommand*{\SInum}[1]{{%
+ \let\SI@unitdot=\pnt%
+ \SIupmath[\SI@defaultNfam]{\SI@num{#1}}}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\num}
+% The robust user command to typeset a number.
+% The starred form gives a number in the normal active
+% font.
+% \begin{macrocode}
+\DeclareRobustCommand*{\num}{\@ifstar{\SI@num}{\SInum}}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \section{Typesetting Angles}
+%
+%
+% \begin{macro}{\ang}
+% \begin{macro}{\SI@ang}
+% \begin{macro}{\SI@@ang}
+% \begin{macro}{\SI@ang@xii}
+% \begin{macro}{\SI@@ang@xii}
+% \begin{macro}{\SI@ang@xiii}
+% \begin{macro}{\SI@@ang@xiii}
+% The robust user command to typeset angles. Note that we
+% have to make provisions for packages such as French that
+% make the semicolon (;) active
+% \begin{macrocode}
+\ifSI@eTeX
+ \DeclareRobustCommand{\ang}{%
+ \begingroup
+ \catcode`;=12\relax
+ \catcode`@=11\relax
+ \SI@ang}
+ \def\SI@ang#1{%
+ \scantokens{\SI@@ang#1;;;\@nil}%
+ \endgroup}
+ \def\SI@@ang#1;#2;#3;#4\@nil{%
+ \SI@@@ang{#1}{#2}{#3}}%
+\else
+ \DeclareRobustCommand{\ang}[1]{%
+ \@nameuse{SI@ang@\romannumeral\catcode`\;}{#1}}%
+ \begingroup
+ \catcode`\;=12\relax
+ \gdef\SI@ang@xii#1{\SI@@ang@xii#1;;;\@nil}
+ \gdef\SI@@ang@xii#1;#2;#3;#4\@nil{\SI@@@ang{#1}{#2}{#3}}
+ \catcode`\;=\active\relax
+ \gdef\SI@ang@xiii#1{\SI@@ang@xiii#1;;;\@nil}
+ \gdef\SI@@ang@xiii#1;#2;#3;#4\@nil{\SI@@@ang{#1}{#2}{#3}}
+ \endgroup
+\fi
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\SI@degs}
+% \begin{macro}{\SI@mins}
+% \begin{macro}{\SI@secs}
+% \begin{macro}{\SI@@@ang}
+% Scratch commands to hold definitions and typeset angles.
+% \begin{macrocode}
+\let\SI@degs=\relax
+\let\SI@mins=\relax
+\let\SI@secs=\relax
+% \end{macrocode}
+% \begin{macrocode}
+\newcommand*{\SI@@@ang}[3]{{%
+ \SI@ifempt{#3}{}{\def\SI@secs{\SInum{#3}\SIupmath{\arcsec}}%
+ \def\SI@mins{\SInum{0}\SIupmath{\arcmin}}%
+ \def\SI@degs{\SInum{0}\SIupmath{\arcdeg}}}%
+ \SI@ifempt{#2}{}{\def\SI@mins{\SInum{#2}\SIupmath{\arcmin}}%
+ \def\SI@degs{\SInum{0}\SIupmath{\arcdeg}}}%
+ \SI@ifempt{#1}{}{\def\SI@degs{\SInum{#1}\SIupmath{\arcdeg}}}%
+ \SI@degs\SI@mins\SI@secs}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \section{Typesetting Units}
+% \subsection{Unit setup commands}
+%
+% \begin{macro}{\SIunitsep}
+% \begin{macro}{\SI@unitsep}
+% User command to set unit separation width from the number.
+% \begin{macrocode}
+\newcommand*{\SI@unitsep}{\,}
+\newcommand*{\SIunitsep}[1]{\renewcommand*{\SI@unitsep}{#1}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\SIunitspace}
+% \begin{macro}{\SI@unitspace}
+% User command to set the spacing between units when
+% ``\tlde'' is issued.
+% \begin{macrocode}
+\newcommand*{\SI@unitspace}{\,}
+\newcommand*{\SIunitspace}[1]{\renewcommand*{\SI@unitspace}{#1}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\SIunitdot}
+% \begin{macro}{\SI@unitdot}
+% User command to set the unit dot when ``.'' is
+% given between units.
+% \begin{macrocode}
+\newcommand*{\SI@unitdot}{{\cdot}}
+\newcommand*{\SIunitdot}[1]{\renewcommand*{\SI@unitdot}{#1}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\pnt}
+% Supply \cmd{\pnt} command for ``.'' in mathmode.
+% Define the point ``.'' as a command when active
+% (|\mathcode`.="8000|) inside math environment.
+% \begin{macrocode}
+\DeclareMathSymbol{\pnt}{\mathord}{letters}{58} %(\pnt = .)
+{\catcode`\.=13 \gdef.{\SI@unitdot}}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{Commands for units}
+%
+% \begin{macro}{\SIunit}
+% Command that sets the environment for typesetting units.
+% The ``.'' is made active and the ``\tlde'' is redefined.
+% \begin{macrocode}
+\newcommand*{\SIunit}[1]{%
+\begingroup%
+ \mathcode`.="8000%
+ \def~{\SI@unitspace}%
+ \SIupmath{#1}%
+\endgroup}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\SI}
+% Command to typeset numbers with units.
+%
+% Usage: \cmd{\SI}\marg{number}\marg{unit}
+% \begin{macrocode}
+\DeclareRobustCommand*{\SI}[2]{%
+ \SI@ifempt{#1}{}{\SInum{#1}\SI@unitsep}%
+ \SIunit{#2}}
+% \end{macrocode}
+% \end{macro}
+%
+% \section{Additional Units}
+%
+% \noindent
+% Additional non Latin user symbols are defined:
+% \begin{macrocode}
+\AtBeginDocument{%
+ \@ifpackageloaded{textcomp}{%
+ \providecommand*{\micro}{\ensureupmath{\mbox{\textmu}}}%
+ \providecommand*{\ohm}{\ensureupmath{\mbox{\textohm}}}%
+ \providecommand*{\degC}{\ensureupmath{\mbox{\textcelsius}}}%
+ \providecommand*{\degF}{\ensureupmath{\mbox{\textdegree F}}}%
+ \providecommand*{\arcdeg}{\ensureupmath{\mbox{\textdegree}}}%
+ \providecommand*{\angstrom}{\ensureupmath{\mbox{\capitalring{A}}}}%
+ }{%
+ \providecommand*{\micro}{\ensureupmath{\mu}}%
+ \providecommand*{\ohm}{\ensureupmath{\Omega}}%
+ \providecommand*{\degC}{%
+ \ensureupmath{{}^{\circ}\kern-\scriptspace C}}%
+ \providecommand*{\degF}{%
+ \ensureupmath{{}^{\circ}\kern-\scriptspace F}}%
+ \providecommand*{\arcdeg}{\ensureupmath{{}^{\circ}}}%
+ \providecommand*{\angstrom}{\ensureupmath{\mbox{\AA}}}%
+ }%
+ \providecommand*{\arcmin}{\ensureupmath{{}^{\prime}}}%
+ \providecommand*{\arcsec}{\ensureupmath{{}^{\prime\prime}}}%
+}
+% \end{macrocode}
+%
+% \section{Locales}
+% \subsection{Macros}
+%
+% Temporary tokens.
+% \begin{macrocode}
+\newtoks\ttoks@A
+\newtoks\ttoks@B
+% \end{macrocode}
+%
+% \begin{macro}{\SIstyle}
+% The main command to activate a spesific style.
+% \begin{macrocode}
+\newcommand{\SIstyle}[1]{%
+ \@ifundefined{SIstyle#1}%
+ {\PackageError{SIstyle}{Style `#1' is not defined}%
+ {See SIstyle package documentation}}%
+ {\@nameuse{SIstyle#1}}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\AddToSIstyle}
+% \begin{macro}{\SI@s@addto@stl}
+% \begin{macro}{\SI@addto@stl}
+% Append the command list in |#2| to the style command |\SIstyle#1|.
+% The starred form clears the list before appending.
+% \begin{macrocode}
+\newcommand{\AddToSIstyle}{%
+ \@ifstar{\SI@s@addto@stl}{\SI@addto@stl}}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\newcommand{\SI@s@addto@stl}[1]{%
+ \expandafter\let\csname SIstyle#1\endcsname\relax
+ \SI@addto@stl{#1}}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\newcommand{\SI@addto@stl}[2]{%
+ \expandafter\SI@addto@list\csname SIstyle#1\endcsname{#2}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macrocode}
+\@onlypreamble\AddToSIstyle
+% \end{macrocode}
+%
+% \begin{macro}{\SIstyleToLang}
+% Links a locale to the \pkg{babel} language changing
+% |\extras|\meta{lang}.
+%
+% \begin{macrocode}
+\newcommand*{\SIstyleToLang}[2]{%
+ \expandafter\SI@addto@list
+ \csname extras#1\expandafter\endcsname
+ \csname SIstyle#2\endcsname}
+% \end{macrocode}
+% \begin{macrocode}
+\@onlypreamble\SIstyleToLang
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\SI@addto@list}
+% The general macro to append to a list
+% (stolen for \pkg{varioref}).
+%
+% \begin{macrocode}
+\newcommand{\SI@addto@list}[2]{%
+ \ttoks@A{#2}%
+ \ifx#1\@undefined
+ \edef#1{\the\ttoks@A}%
+ \else
+ \ifx#1\relax
+ \edef#1{\the\ttoks@A}%
+ \else
+ \ttoks@B\expandafter{#1}%
+ \edef#1{\the\ttoks@B\the\ttoks@A}%
+ \fi
+ \fi
+ \ttoks@A{}\ttoks@B\ttoks@A}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Country spesific setup}
+%
+% \paragraph{USA:}
+% NIST Special Publication 811 -- \textit{Guide for the Use of the
+% International System of Units (SI)}
+%
+% \begin{macrocode}
+\AddToSIstyle{USA}{%
+ \SIdecimalsign{.}%
+ \SIthousandsep{\,}%
+ \SIunitsep{\,}%
+ \SIunitdot{\cdot}%
+ \SIunitspace{\;}%
+ \SIproductsign{\times}%
+ \SIobeyboldfalse
+ \SIgroupfourtrue}
+% \end{macrocode}
+% \paragraph{Germany:}
+% \begin{macrocode}
+\AddToSIstyle{German}{%
+ \SIdecimalsign{,}%
+ \SIthousandsep{\,}%
+ \SIproductsign{\cdot}%
+ \SIunitsep{\,}%
+ \SIunitspace{\,}%
+ \SIunitdot{\cdot}%
+ \SIobeyboldfalse
+ \SIgroupfourtrue}
+% \end{macrocode}
+% \paragraph{South Africa:}
+% SABS M 33a:1992 -- \textit{The international metric system (SI).
+% Guide to the use of the SI in South Africa.}
+% \begin{macrocode}
+\AddToSIstyle{S-Africa}{%
+ \SIdecimalsign{,}%
+ \SIthousandsep{\,}%
+ \SIproductsign{\times}%
+ \SIunitsep{\,}%
+ \SIunitspace{\,}%
+ \SIunitdot{\cdot}%
+ \SIobeyboldfalse
+ \SIgroupfourtrue}
+% \end{macrocode}
+% \begin{macrocode}
+%</package>
+% \end{macrocode}
+% The end of this package.
+% \Finale
+\endinput
diff --git a/Master/texmf-dist/source/latex/sistyle/sistyle.ins b/Master/texmf-dist/source/latex/sistyle/sistyle.ins
new file mode 100644
index 00000000000..5c5e15ff476
--- /dev/null
+++ b/Master/texmf-dist/source/latex/sistyle/sistyle.ins
@@ -0,0 +1,76 @@
+% sistyle.ins
+% Copyright (C) 2004--2008 Danie Els
+%
+% -------------------------------------------------------------------
+% The SIstyle package
+% for SI units and number typesetting
+% -------------------------------------------------------------------
+% This work may be distributed and/or modified under the conditions
+% of the LaTeX Project Public License, either version 1.3c of this
+% license or (at your option) any later version. The latest version
+% of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3c or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status 'maintained'.
+%
+% This Current Maintainer of this work is Danie Els (dnjels@sun.ac.za)
+%
+% This package consists of the files: sistyle.dtx
+% sistyle.ins
+% and the derived file: sistyle.sty
+% -------------------------------------------------------------------
+
+
+\def\batchfile{sistyle.ins}
+\def\filedate{2008/07/16}
+\input docstrip.tex
+\keepsilent
+
+\declarepreamble\DNJEpreamble
+
+Copyright (C) 2004--2008 Danie Els
+
+-------------------------------------------------------------------
+ The SIstyle package
+ for SI units and number typesetting
+-------------------------------------------------------------------
+This work may be distributed and/or modified under the conditions
+of the LaTeX Project Public License, either version 1.3c of this
+license or (at your option) any later version. The latest version
+of this license is in
+ http://www.latex-project.org/lppl.txt
+and version 1.3c or later is part of all distributions of LaTeX
+version 2005/12/01 or later.
+
+This work has the LPPL maintenance status 'maintained'.
+
+This Current Maintainer of this work is Danie Els (dnjels@sun.ac.za)
+
+This package consists of the files: sistyle.dtx
+ sistyle.ins
+ and the derived file: sistyle.sty
+-------------------------------------------------------------------
+
+\endpreamble
+
+\generate{%
+ \askforoverwritefalse
+ \usepreamble\DNJEpreamble
+ \file{sistyle.sty}{\from{sistyle.dtx}{package}}}
+
+\obeyspaces%
+\Msg{*********************************************************}
+\Msg{* *}
+\Msg{* To finish the installation you have to move the *}
+\Msg{* following file into a directory searched by TeX: *}
+\Msg{* *}
+\Msg{* sistyle.sty *}
+\Msg{* *}
+\Msg{* To produce the documentation run the file sistyle.dtx *}
+\Msg{* through LaTeX. *}
+\Msg{* *}
+\Msg{* Happy TeXing! *}
+\Msg{*********************************************************}
+\endbatchfile