summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/hepunits/hepunits.sty
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2020-04-11 03:09:12 +0000
committerNorbert Preining <norbert@preining.info>2020-04-11 03:09:12 +0000
commitc2697fc286a1e2c94fd9968b76be6f4a6d2114cd (patch)
tree1dc2cfb07cb032740483dd8be7c74aff66b70352 /macros/latex/contrib/hepunits/hepunits.sty
parent25111608e6aa05042b0c6f83009262e1973d7a45 (diff)
CTAN sync 202004110309
Diffstat (limited to 'macros/latex/contrib/hepunits/hepunits.sty')
-rw-r--r--macros/latex/contrib/hepunits/hepunits.sty217
1 files changed, 91 insertions, 126 deletions
diff --git a/macros/latex/contrib/hepunits/hepunits.sty b/macros/latex/contrib/hepunits/hepunits.sty
index 50b8adcd48..6cb68abfa7 100644
--- a/macros/latex/contrib/hepunits/hepunits.sty
+++ b/macros/latex/contrib/hepunits/hepunits.sty
@@ -9,164 +9,129 @@
%% Please let me know if you use hepunits and what you think of it.
%% I'll try to implement any suggested options that seem sensible!
-\def\fileversion{1.1.1}
-\def\filedate{2007/09/27}
+\def\fileversion{2.0.0}
+\def\filedate{2020/04/10}
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{hepunits}[\filedate\space High-energy physics units by Andy Buckley (v\fileversion)]
-%% Now-redundant wrapper for declaring new units
-\DeclareRobustCommand{\@NewUnit}[2]{\addunit{#1}{#2}}
-%% Option handling variables
-\def\@empty{}
+%% Option handling
\def\@yes{yes}
\def\@HEPopt@noprefixcmds{}
-\def\@SIopt@cdot{}
-\def\@SIopt@space{mediumspace}
-\def\@SIopt@qspace{thickqspace}
-\def\@SIopt@amssquare{squaren}
-\def\@SIopt@pstricks{}
-\def\@SIopt@Gray{}
-\def\@SIopt@italian{}
-\def\@SIopt@textstyle{yes}
-\def\@SIopt@binary{}
-\def\@SIopt@noams{}
-\def\@SIopt@derivedinbase{}
-\def\@SIopt@derived{}
-
-%% Option for turning off explicit SI prefix commands
+\def\@HEPopt@sicmds{}
+\def\@HEPopt@freestanding{}
+\DeclareOption{sicmds}{\def\@HEPopt@sicmds{yes}}
\DeclareOption{noprefixcmds}{\def\@HEPopt@noprefixcmds{yes}}
-
-%% Options for passing to SIunits
-\DeclareOption{cdot}{\def\@SIopt@cdot{yes}}
-\DeclareOption{thickspace}{\def\@SIopt@space{thickspace}}
-\DeclareOption{mediumspace}{\def\@SIopt@space{mediumspace}}
-\DeclareOption{thinspace}{\def\@SIopt@space{thinspace}}
-\DeclareOption{thickqspace}{\def\@SIopt@qspace{thickqspace}}
-\DeclareOption{mediumqspace}{\def\@SIopt@qspace{mediumqspace}}
-\DeclareOption{thinqspace}{\def\@SIopt@qspace{thinqspace}}
-\DeclareOption{noamssquareissue}{\def\@SIopt@amssquare{}}
-\DeclareOption{amssymb}{\def\@SIopt@amssquare{amssymb}}
-\DeclareOption{squaren}{\def\@SIopt@amssquare{squaren}}
-\DeclareOption{pstricks}{\def\@SIopt@pstricks{yes}}
-\DeclareOption{Gray}{\def\@SIopt@Gray{yes}}
-\DeclareOption{italian}{\def\@SIopt@italian{yes}}
-\DeclareOption{textstyle}{\def\@SIopt@textstyle{yes}}
-\DeclareOption{notextstyle}{\def\@SIopt@textstyle{}}
-\DeclareOption{binary}{\def\@SIopt@binary{yes}}
-\DeclareOption{noams}{\def\@SIopt@noams{yes}}
-\DeclareOption{derivedinbase}{\def\@SIopt@derivedinbase{yes}}
-\DeclareOption{derived}{\def\@SIopt@derived{yes}}
-%\DeclareOption{noderived}{\def\@SIopt@derived{}}
-
+\DeclareOption{freestanding}{\def\@HEPopt@freestanding{yes}}
\ProcessOptions
+\ifx\@HEPopt@noprefixcmds\@yes\def\@HEPopt@sicmds\@empty\fi
+
-%% Pass the SIunits yes/no options
-\ifx\@SIopt@cdot\@yes\PassOptionsToPackage{cdot}{SIunits}\fi
-\ifx\@SIopt@pstricks\@yes\PassOptionsToPackage{pstricks}{SIunits}\fi
-\ifx\@SIopt@Gray\@yes\PassOptionsToPackage{Gray}{SIunits}\fi
-\ifx\@SIopt@italian\@yes\PassOptionsToPackage{italian}{SIunits}\fi
-\ifx\@SIopt@textstyle\@yes\PassOptionsToPackage{textstyle}{SIunits}\fi
-\ifx\@SIopt@binary\@yes\PassOptionsToPackage{binary}{SIunits}\fi
-\ifx\@SIopt@noams\@yes\PassOptionsToPackage{noams}{SIunits}\fi
-\ifx\@SIopt@derivedinbase\@yes\PassOptionsToPackage{derivedinbase}{SIunits}\fi
-\ifx\@SIopt@derived\@yes\PassOptionsToPackage{derived}{SIunits}\fi
-%% Pass the SIunits "choice" options
-\ifx\@SIopt@space\@empty\else\PassOptionsToPackage{\@SIopt@space}{SIunits}\fi
-\ifx\@SIopt@qspace\@empty\else\PassOptionsToPackage{\@SIopt@qspace}{SIunits}\fi
-\ifx\@SIopt@amssquare\@empty\else\PassOptionsToPackage{\@SIopt@amssquare}{SIunits}\fi
-
-%% Get the dependancy packages, now that the options
-%% have been processed
+%% Get the dependency packages
\RequirePackage{amsmath}
-\RequirePackage{xspace}
-\RequirePackage{SIunits}
+\RequirePackage{ifthen}
+\RequirePackage{siunitx}
+
+%% Pass default config to siunitx
+\sisetup{detect-all, detect-display-math, mode=text}
+\ifx\@HEPopt@freestanding\@yes
+\sisetup{free-standing-units=true}
+\fi
+
%% -------------------------------------------------
%% Units defined below here
%% -------------------------------------------------
-\@NewUnit{\Hz}{\hertz}
-\ifx\@HEPopt@noprefixcmds\@empty
+\DeclareSIUnit{\Hz}{\hertz}
+
+\ifx\@HEPopt@sicmds\@yes
%% Lengths
-\@NewUnit{\nm}{\nano\metre}
-\@NewUnit{\micron}{\micro\metre}
-\@NewUnit{\mm}{\milli\metre}
-\@NewUnit{\cm}{\centi\metre}
+\DeclareSIUnit{\fermi}{\femto\metre}
+\DeclareSIUnit{\nm}{\nano\metre}
+\DeclareSIUnit{\micron}{\micro\metre}
+\DeclareSIUnit{\um}{\micro\metre}
+\DeclareSIUnit{\mm}{\milli\metre}
+\DeclareSIUnit{\cm}{\centi\metre}
%% Angles
-\@NewUnit{\mrad}{\milli\rad}
+\DeclareSIUnit{\mrad}{\milli\radian}
%% Times
-\@NewUnit{\as}{\atto\second}
-\@NewUnit{\fs}{\femto\second}
-\@NewUnit{\ps}{\pico\second}
-\@NewUnit{\ns}{\nano\second}
+\DeclareSIUnit{\as}{\atto\second}
+\DeclareSIUnit{\fs}{\femto\second}
+\DeclareSIUnit{\ps}{\pico\second}
+\DeclareSIUnit{\ns}{\nano\second}
%% Rates
-\@NewUnit{\mHz}{\milli\hertz}
-\@NewUnit{\kHz}{\kilo\hertz}
-\@NewUnit{\MHz}{\mega\hertz}
-\@NewUnit{\GHz}{\giga\hertz}
-\@NewUnit{\THz}{\tera\hertz}
+\DeclareSIUnit{\mHz}{\milli\hertz}
+\DeclareSIUnit{\kHz}{\kilo\hertz}
+\DeclareSIUnit{\MHz}{\mega\hertz}
+\DeclareSIUnit{\GHz}{\giga\hertz}
+\DeclareSIUnit{\THz}{\tera\hertz}
\fi
+
%% Fields
-\@NewUnit{\gauss}{G}
+\DeclareSIUnit{\gauss}{G}
%% Luminosity
-\@NewUnit{\invcmsqpersecond}{\rpsquare{\centi\metre}\usk\reciprocal{\second}}
-\@NewUnit{\invcmsqpersec}{\invcmsqpersecond}
-\DeclareRobustCommand{\lumiunits}{\invcmsqpersecond}
+\DeclareSIUnit{\invcmsq}{\centi\metre\tothe{-2}}
+\DeclareSIUnit{\invcmsqpersecond}{\invcmsq\second\tothe{-1}}
+\DeclareSIUnit{\invcmsqpersec}{\invcmsqpersecond}
%% (Inverse) cross-sections
-\@NewUnit{\invbarn}{\reciprocal\barn\xspace}
+\DeclareSIUnit{\invbarn}{\barn\tothe{-1}}
\ifx\@HEPopt@noprefixcmds\@empty
-\@NewUnit{\nanobarn}{\nano\barn\xspace}
-\@NewUnit{\picobarn}{\pico\barn\xspace}
-\@NewUnit{\femtobarn}{\femto\barn\xspace}
-\@NewUnit{\attobarn}{\atto\barn\xspace}
-\@NewUnit{\zeptobarn}{\zepto\barn\xspace}
-\@NewUnit{\yoctobarn}{\yocto\barn\xspace}
-\@NewUnit{\invnanobarn}{\nano\invbarn\xspace}
-\@NewUnit{\invpicobarn}{\pico\invbarn\xspace}
-\@NewUnit{\invfemtobarn}{\femto\invbarn\xspace}
-\@NewUnit{\invattobarn}{\atto\invbarn\xspace}
-\@NewUnit{\invzeptobarn}{\zepto\invbarn\xspace}
-\@NewUnit{\invyoctobarn}{\yocto\invbarn\xspace}
-\@NewUnit{\invnb}{\invnanobarn}
-\@NewUnit{\invpb}{\invpicobarn}
-\@NewUnit{\invfb}{\invfemtobarn}
-\@NewUnit{\invab}{\invattobarn}
-\@NewUnit{\invzb}{\invzeptobarn}
-\@NewUnit{\invyb}{\invyoctobarn}
+\DeclareSIUnit{\millibarn}{\milli\barn}
+\DeclareSIUnit{\microbarn}{\micro\barn}
+\DeclareSIUnit{\nanobarn}{\nano\barn}
+\DeclareSIUnit{\picobarn}{\pico\barn}
+\DeclareSIUnit{\femtobarn}{\femto\barn}
+\DeclareSIUnit{\attobarn}{\atto\barn}
+\DeclareSIUnit{\zeptobarn}{\zepto\barn}
+\DeclareSIUnit{\yoctobarn}{\yocto\barn}
+\DeclareSIUnit{\invnanobarn}{\nano\invbarn}
+\DeclareSIUnit{\invpicobarn}{\pico\invbarn}
+\DeclareSIUnit{\invfemtobarn}{\femto\invbarn}
+\DeclareSIUnit{\invattobarn}{\atto\invbarn}
+\DeclareSIUnit{\invzeptobarn}{\zepto\invbarn}
+\DeclareSIUnit{\invyoctobarn}{\yocto\invbarn}
+\DeclareSIUnit{\invnb}{\invnanobarn}
+\DeclareSIUnit{\invpb}{\invpicobarn}
+\DeclareSIUnit{\invfb}{\invfemtobarn}
+\DeclareSIUnit{\invab}{\invattobarn}
+\DeclareSIUnit{\invzb}{\invzeptobarn}
+\DeclareSIUnit{\invyb}{\invyoctobarn}
\fi
%% HEP energy, momentum and mass units
-\DeclareRobustCommand{\clight}{\ensuremath{c}}
-\@NewUnit{\eV}{\electronvolt\xspace}
-\@NewUnit{\inveV}{\reciprocal\electronvolt\xspace}
-\@NewUnit{\eVoverc}{\ensuremath{\eV\!/\clight}\xspace}
-\@NewUnit{\eVovercsq}{\ensuremath{\eV\!/\clight^{2}}\xspace}
+% \DeclareSIUnit{\electronvolt}{\text{e\kern-1.2\scriptspace V}}
+\DeclareSIUnit{\electronvolt}{\text{e\kern-0.15ex V}}
+\DeclareSIUnit{\eV}{\electronvolt}
+\newcommand{\@eVoverc}[1][]{\ensuremath{
+ \eV
+ \ifthenelse{\equal{\f@series}{\bfdefault}}{/}{\mkern-\medmuskip/\mkern-\thinmuskip}
+ \text{\ensuremath{c#1}}
+ }}
+\DeclareSIUnit{\electronvoltc}{\@eVoverc}
+\DeclareSIUnit{\electronvoltcsq}{\@eVoverc[^2]}
+\DeclareSIUnit{\eVc}{\@eVoverc}
+\DeclareSIUnit{\eVcsq}{\@eVoverc[^2]}
\ifx\@HEPopt@noprefixcmds\@empty
-\@NewUnit{\meV}{\milli\eV}
-\@NewUnit{\keV}{\kilo\eV}
-\@NewUnit{\MeV}{\mega\eV}
-\@NewUnit{\GeV}{\giga\eV}
-\@NewUnit{\TeV}{\tera\eV}
-\@NewUnit{\minveV}{\milli\inveV}
-\@NewUnit{\kinveV}{\kilo\inveV}
-\@NewUnit{\MinveV}{\mega\inveV}
-\@NewUnit{\GinveV}{\giga\inveV}
-\@NewUnit{\TinveV}{\tera\inveV}
-\@NewUnit{\meVoverc}{\ensuremath{\milli\eVoverc}\xspace}
-\@NewUnit{\keVoverc}{\ensuremath{\kilo\eVoverc}\xspace}
-\@NewUnit{\MeVoverc}{\ensuremath{\mega\eVoverc}\xspace}
-\@NewUnit{\GeVoverc}{\ensuremath{\giga\eVoverc}\xspace}
-\@NewUnit{\TeVoverc}{\ensuremath{\tera\eVoverc}\xspace}
-\@NewUnit{\meVovercsq}{\ensuremath{\milli\eVovercsq}\xspace}
-\@NewUnit{\keVovercsq}{\ensuremath{\kilo\eVovercsq}\xspace}
-\@NewUnit{\MeVovercsq}{\ensuremath{\mega\eVovercsq}\xspace}
-\@NewUnit{\GeVovercsq}{\ensuremath{\giga\eVovercsq}\xspace}
-\@NewUnit{\TeVovercsq}{\ensuremath{\tera\eVovercsq}\xspace}
+\DeclareSIUnit{\meV}{\milli\eV}
+\DeclareSIUnit{\keV}{\kilo\eV}
+\DeclareSIUnit{\MeV}{\mega\eV}
+\DeclareSIUnit{\GeV}{\giga\eV}
+\DeclareSIUnit{\TeV}{\tera\eV}
+\DeclareSIUnit{\meVc}{\milli\eVc}
+\DeclareSIUnit{\keVc}{\kilo\eVc}
+\DeclareSIUnit{\MeVc}{\mega\eVc}
+\DeclareSIUnit{\GeVc}{\giga\eVc}
+\DeclareSIUnit{\TeVc}{\tera\eVc}
+\DeclareSIUnit{\meVcsq}{\milli\eVcsq}
+\DeclareSIUnit{\keVcsq}{\kilo\eVcsq}
+\DeclareSIUnit{\MeVcsq}{\mega\eVcsq}
+\DeclareSIUnit{\GeVcsq}{\giga\eVcsq}
+\DeclareSIUnit{\TeVcsq}{\tera\eVcsq}
\fi