summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/sistyle/sistyle.sty
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/sistyle/sistyle.sty
Initial commit
Diffstat (limited to 'macros/latex/contrib/sistyle/sistyle.sty')
-rw-r--r--macros/latex/contrib/sistyle/sistyle.sty373
1 files changed, 373 insertions, 0 deletions
diff --git a/macros/latex/contrib/sistyle/sistyle.sty b/macros/latex/contrib/sistyle/sistyle.sty
new file mode 100644
index 0000000000..fa774b060d
--- /dev/null
+++ b/macros/latex/contrib/sistyle/sistyle.sty
@@ -0,0 +1,373 @@
+%%
+%% This is file `sistyle.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% sistyle.dtx (with options: `package')
+%%
+%% 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
+%% -------------------------------------------------------------------
+%%
+\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+\ProvidesPackage{sistyle}
+ [2008/07/16 v2.3a SI units and numbers (DNJ Els)]
+\RequirePackage{amstext}
+\newif\ifSI@eTeX
+\SI@eTeXfalse
+\ifx\eTeXversion\@undefined
+\else
+ \ifx\eTeXversion\relax
+ \else
+ \ifnum\eTeXversion>\z@
+ \SI@eTeXtrue
+ \fi
+ \fi
+\fi
+\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
+ \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}}%
+ $}%
+ }
+\AtBeginDocument{\GetMathFontFams}
+\newcommand{\IfTbold}[2]{%
+ \if b\expandafter\@car\f@series\@nil%
+ #1\else #2\fi}
+\newcommand{\IfMbold}[2]{%
+ \edef\temp@bm{bold}%
+ \ifx\math@version\temp@bm
+ #1\else #2\fi}
+\newif\ifSIobeybold
+\SIobeyboldfalse
+\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}}
+\newcommand*{\SI@defaultMfam}{\SI@mathrm}
+\newcommand*{\SIdefaultMfam}[1]{\renewcommand*{\SI@defaultMfam}{#1}}
+\newcommand*{\SI@defaultNfam}{\SI@mathrm}
+\newcommand*{\SIdefaultNfam}[1]{\renewcommand*{\SI@defaultNfam}{#1}}
+\newcommand*{\SI@defaultTfam}{\rmfamily}
+\newcommand*{\SIdefaultTfam}[1]{\renewcommand*{\SI@defaultTfam}{#1}}
+\newif\ifupmath
+\upmathfalse
+\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}
+\DeclareRobustCommand{\ensureupmath}{%
+ \ifupmath
+ \expandafter\@firstofone
+ \else
+ \expandafter\SIupmath
+ \fi}
+\newcommand*{\SI@decsign}{{.}}
+\newcommand*{\SIdecimalsign}[1]{\renewcommand*{\SI@decsign}{{#1}}}
+\newcommand*{\SI@thousandsep}{{\,}}
+\newcommand*{\SIthousandsep}[1]{\renewcommand*{\SI@thousandsep}{{#1}}}
+\newcommand*{\SI@prod}{\ensuremath{{}\times{}}}
+\newcommand*{\SIproductsign}[1]{\renewcommand*{\SI@prod}{\ensuremath{{}#1{}}}}
+\newif\ifSIgroupfour
+\SIgroupfourtrue
+\def\SI@num#1{%
+ \SI@ifempt{#1}{}{%
+ \edef\SI@tmpa{\lowercase{\noexpand\SI@@num{\zap@space#1 \@empty}}}%
+ \SI@tmpa}}
+\def\SI@@num#1{\SI@numsplit#1ee\SI@numexp\SI@realp\@empty}
+\def\SI@numsplit#1e#2e#3#4#5{#4{#1}{#2}}
+\def\SI@p@tst{+}
+\def\SI@m@tst{-}
+\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}
+\def\SI@realp#1#2{\SI@realpsplit#1..\SI@realfrc\SI@realc\@empty}
+\def\SI@realpsplit#1.#2.#3#4#5{#4{#1}{#2}}
+\def\SI@realc#1#2{\SI@realcsplit#1,,\SI@realfrc\SI@signedint\@empty}
+\def\SI@realcsplit#1,#2,#3#4#5{#4{#1}{#2}}
+\def\SI@realfrc#1#2{%
+ \SI@ifempt{#1}{\SI@int{0}}%
+ {\SI@signedint{#1}{}}%
+ \SI@decsign\SI@dec{#2}}
+\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}
+\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}
+\def\SI@int#1{%
+ \ifSIgroupfour
+ \SI@not@v{#1}{#1}{\SI@intfmt{}#1\@empty\@empty\@empty}%
+ \else
+ \SI@intfmt{}#1\@empty\@empty\@empty%
+ \fi}
+\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}
+\def\SI@intfmtafterfi#1\fi\fi\fi{\fi\fi\fi\SI@intfmt{#1}}
+\def\SI@addthousandsep#1#2#3#4{#1#2#3%
+ \if\relax#4\relax
+ \else
+ \SI@thousandsep\expandafter\SI@addthousandsep\expandafter#4%
+ \fi}
+\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}
+\def\SI@decfmt#1#2#3#4{#1#2#3%
+ \ifx\@empty#4\@empty%
+ \else
+ \SI@thousandsep\expandafter\SI@decfmt\expandafter#4%
+ \fi}
+\newcommand*{\SInum}[1]{{%
+ \let\SI@unitdot=\pnt%
+ \SIupmath[\SI@defaultNfam]{\SI@num{#1}}}}
+\DeclareRobustCommand*{\num}{\@ifstar{\SI@num}{\SInum}}
+\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
+\let\SI@degs=\relax
+\let\SI@mins=\relax
+\let\SI@secs=\relax
+\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}}
+\newcommand*{\SI@unitsep}{\,}
+\newcommand*{\SIunitsep}[1]{\renewcommand*{\SI@unitsep}{#1}}
+\newcommand*{\SI@unitspace}{\,}
+\newcommand*{\SIunitspace}[1]{\renewcommand*{\SI@unitspace}{#1}}
+\newcommand*{\SI@unitdot}{{\cdot}}
+\newcommand*{\SIunitdot}[1]{\renewcommand*{\SI@unitdot}{#1}}
+\DeclareMathSymbol{\pnt}{\mathord}{letters}{58} %(\pnt = .)
+{\catcode`\.=13 \gdef.{\SI@unitdot}}
+\newcommand*{\SIunit}[1]{%
+\begingroup%
+ \mathcode`.="8000%
+ \def~{\SI@unitspace}%
+ \SIupmath{#1}%
+\endgroup}
+\DeclareRobustCommand*{\SI}[2]{%
+ \SI@ifempt{#1}{}{\SInum{#1}\SI@unitsep}%
+ \SIunit{#2}}
+\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}}}%
+}
+\newtoks\ttoks@A
+\newtoks\ttoks@B
+\newcommand{\SIstyle}[1]{%
+ \@ifundefined{SIstyle#1}%
+ {\PackageError{SIstyle}{Style `#1' is not defined}%
+ {See SIstyle package documentation}}%
+ {\@nameuse{SIstyle#1}}}
+\newcommand{\AddToSIstyle}{%
+ \@ifstar{\SI@s@addto@stl}{\SI@addto@stl}}
+\newcommand{\SI@s@addto@stl}[1]{%
+ \expandafter\let\csname SIstyle#1\endcsname\relax
+ \SI@addto@stl{#1}}
+\newcommand{\SI@addto@stl}[2]{%
+ \expandafter\SI@addto@list\csname SIstyle#1\endcsname{#2}}
+\@onlypreamble\AddToSIstyle
+\newcommand*{\SIstyleToLang}[2]{%
+ \expandafter\SI@addto@list
+ \csname extras#1\expandafter\endcsname
+ \csname SIstyle#2\endcsname}
+\@onlypreamble\SIstyleToLang
+\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}
+\AddToSIstyle{USA}{%
+ \SIdecimalsign{.}%
+ \SIthousandsep{\,}%
+ \SIunitsep{\,}%
+ \SIunitdot{\cdot}%
+ \SIunitspace{\;}%
+ \SIproductsign{\times}%
+ \SIobeyboldfalse
+ \SIgroupfourtrue}
+\AddToSIstyle{German}{%
+ \SIdecimalsign{,}%
+ \SIthousandsep{\,}%
+ \SIproductsign{\cdot}%
+ \SIunitsep{\,}%
+ \SIunitspace{\,}%
+ \SIunitdot{\cdot}%
+ \SIobeyboldfalse
+ \SIgroupfourtrue}
+\AddToSIstyle{S-Africa}{%
+ \SIdecimalsign{,}%
+ \SIthousandsep{\,}%
+ \SIproductsign{\times}%
+ \SIunitsep{\,}%
+ \SIunitspace{\,}%
+ \SIunitdot{\cdot}%
+ \SIobeyboldfalse
+ \SIgroupfourtrue}
+\endinput
+%%
+%% End of file `sistyle.sty'.