%% hepunits %% High energy physics (HEP) extensions to the SIunits package %% Author: Andy Buckley %% %% This material is subject to the LaTeX Project Public License. %% See http://www.ctan.org/tex-archive/help/Catalogue/licenses.lppl.html %% or the details of that license. %% %% 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} \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{} \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 \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{}} \ProcessOptions %% 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 \RequirePackage{amsmath} \RequirePackage{xspace} \RequirePackage{SIunits} %% ------------------------------------------------- %% Units defined below here %% ------------------------------------------------- \@NewUnit{\Hz}{\hertz} \ifx\@HEPopt@noprefixcmds\@empty %% Lengths \@NewUnit{\nm}{\nano\metre} \@NewUnit{\micron}{\micro\metre} \@NewUnit{\mm}{\milli\metre} \@NewUnit{\cm}{\centi\metre} %% Angles \@NewUnit{\mrad}{\milli\rad} %% Times \@NewUnit{\as}{\atto\second} \@NewUnit{\fs}{\femto\second} \@NewUnit{\ps}{\pico\second} \@NewUnit{\ns}{\nano\second} %% Rates \@NewUnit{\mHz}{\milli\hertz} \@NewUnit{\kHz}{\kilo\hertz} \@NewUnit{\MHz}{\mega\hertz} \@NewUnit{\GHz}{\giga\hertz} \@NewUnit{\THz}{\tera\hertz} \fi %% Fields \@NewUnit{\gauss}{G} %% Luminosity \@NewUnit{\invcmsqpersecond}{\rpsquare{\centi\metre}\usk\reciprocal{\second}} \@NewUnit{\invcmsqpersec}{\invcmsqpersecond} \DeclareRobustCommand{\lumiunits}{\invcmsqpersecond} %% (Inverse) cross-sections \@NewUnit{\invbarn}{\reciprocal\barn\xspace} \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} \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} \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} \fi