diff options
Diffstat (limited to 'macros/latex/contrib/hepunits')
-rw-r--r-- | macros/latex/contrib/hepunits/ChangeLog | 25 | ||||
-rw-r--r-- | macros/latex/contrib/hepunits/README | 20 | ||||
-rw-r--r-- | macros/latex/contrib/hepunits/hepunits.pdf | bin | 0 -> 86255 bytes | |||
-rw-r--r-- | macros/latex/contrib/hepunits/hepunits.sty | 172 | ||||
-rw-r--r-- | macros/latex/contrib/hepunits/hepunits.tex | 219 |
5 files changed, 436 insertions, 0 deletions
diff --git a/macros/latex/contrib/hepunits/ChangeLog b/macros/latex/contrib/hepunits/ChangeLog new file mode 100644 index 0000000000..dfc9c20bff --- /dev/null +++ b/macros/latex/contrib/hepunits/ChangeLog @@ -0,0 +1,25 @@ +2007-09-27 Andy Buckley <andy@insectnation.org> + + * Ready for the momentous 1.1.1 release. + + * Removed "full screen" param from documentation PDF + configuration, since this is actually very annoying. + + * Added Makefile to build distribution tarball. + + * Fixed definition of \GeVovercsq, which was missing the second + power of c. Thanks to Jeroen Hegeman for the bug report. + +2005-12-12 Andy Buckley <andy@insectnation.org> + + * Added noprefixcmds option due to residual guilt about + contaminating everyone's command namespace. + + * Made basic manual. + + * Removed "derived" from default SIunits options. + + * Added SIunits options passing. + + * Started ChangeLog. + diff --git a/macros/latex/contrib/hepunits/README b/macros/latex/contrib/hepunits/README new file mode 100644 index 0000000000..08e37bdd12 --- /dev/null +++ b/macros/latex/contrib/hepunits/README @@ -0,0 +1,20 @@ +hepunits --- a set of useful units for use in high energy physics +by Andy Buckley <andy@insectnation.org> +----------------------------------------------------------- + +hepunits is a LaTeX package built on the SIunits package which +adds a collection of useful HEP units to the existing SIunits set. +These include the energy units \MeV, \GeV, \TeV and the derived +momentum and mass units \MeVoverc, \MeVovercsq and so on. + +Additionally, some units are added for pure convenience. The +contents of the package with the exception of the energy units +mentioned above are subject to deprecation and addition, so please +provide feedback on which HEP units you'd like added to the +package. + +This material is subject to the LaTeX Project Public License. +See http://www.ctan.org/tex-archive/help/Catalogue/licenses.lppl.html +for the details of that license. + +Author: Andy Buckley <andy@insectnation.org> diff --git a/macros/latex/contrib/hepunits/hepunits.pdf b/macros/latex/contrib/hepunits/hepunits.pdf Binary files differnew file mode 100644 index 0000000000..b4f82024fc --- /dev/null +++ b/macros/latex/contrib/hepunits/hepunits.pdf diff --git a/macros/latex/contrib/hepunits/hepunits.sty b/macros/latex/contrib/hepunits/hepunits.sty new file mode 100644 index 0000000000..50b8adcd48 --- /dev/null +++ b/macros/latex/contrib/hepunits/hepunits.sty @@ -0,0 +1,172 @@ +%% hepunits +%% High energy physics (HEP) extensions to the SIunits package +%% Author: Andy Buckley <andy@insectnation.org> +%% +%% 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 diff --git a/macros/latex/contrib/hepunits/hepunits.tex b/macros/latex/contrib/hepunits/hepunits.tex new file mode 100644 index 0000000000..325ffa1cfc --- /dev/null +++ b/macros/latex/contrib/hepunits/hepunits.tex @@ -0,0 +1,219 @@ +\documentclass[12pt]{article} +\usepackage{maybemath, xspace, setspace, fancyvrb, a4wide} +\usepackage{url, relsize, booktabs, ccaption, braket} +\usepackage{hepunits} +\usepackage[colorlinks=true,bookmarks=true]{hyperref} +\newcommand{\hepunits}{\texttt{hepunits}\xspace} + +\let\OldCite\cite +\renewcommand{\cite}[1]{\mbox{\!\!\OldCite{#1}}} + +\onehalfspacing +\DefineShortVerb{\|} + +\author{Andy Buckley, \texttt{andy@insectnation.org}} +\title{The \hepunits \LaTeX{} package} + +\newcommand{\Or}{\ensuremath{\vert}\xspace} +\newcommand{\manifestsAs}{\ensuremath{\Rightarrow\quad}\xspace} +\newcommand{\texcmd}[1]{\texttt{\char`\\#1}} +\newcommand{\texenv}[1]{\texttt{\char`#1}} +\newcommand{\texopt}[1]{\texttt{\char`#1}} +\newcommand{\texarg}[1]{\texttt{\char`#1}} +\newcommand{\texpkg}[1]{\texttt{\char`#1}} +\newcommand{\texcls}[1]{\texttt{\char`#1}} +\newcommand{\texcommand}[1]{\texcmd{#1}} +\newcommand{\texoption}[1]{\texopt{#1}} +\newcommand{\texgen}[1]{\ensuremath{\braket{\text{\emph{#1}}}}} +\newenvironment{snippet}{\Verbatim}{\endVerbatim} + +\begin{document} +\maketitle + +\abstract{% + The \hepunits package extends the existing (and excellent) \texpkg{SIunits} + package to support units commonly used in high-energy physics. HEP uses a + rather specialised set of units to describe measurements of energies, masses, + momenta, reaction cross-sections, luminosities and so-on. Using this package + will provide particle physicists with a consistent and accurate way to refer + to dimensionful HEP quantities. +% +} + +\section{Recommended usage} +The basic usage mode for \hepunits is to place +% +\begin{snippet} +\usepackage{hepunits} +\end{snippet} +% +in the preamble of your document. \hepunits also supports the \texpkg{SIunits} +optional arguments (\texopt{thickspace}, \texopt{amssymb} and so-on), which are +passed on directly to the \texpkg{SIunits} package. By default the +\texopt{mediumspace}, \texopt{thickqspace}, \texopt{squaren} and +\texopt{textstyle} options are passed, but these can be overridden. +\texopt{amssymb} and \texopt{squaren} are considered to be mutually exclusive +options, but you can choose to pass neither option to \texpkg{SIunits} by using +the \hepunits \texopt{noamssquareissue} option. Additionally, the \hepunits +\texopt{notextstyle} option can be used to turn the \texpkg{SIunits} +\texopt{textstyle} off. On the whole, though, you should be able to use +\hepunits with no options in most circumstances and are likely only to need them +if you want access to the binary or derived units (using \texopt{binary} and +\texopt{derived}/\texopt{derivedinbase} respectively). + +Finally, the only \hepunits-specific option is \texopt{noprefixcmds}. This is +discussed at the end of the document and is probably only useful for macro +language pedants!\footnote{No offence intended to macro language pedants, of course\dots} + + +\section{Requirements} +\hepunits requires the \texpkg{SIunits}, \texpkg{xspace} and \texpkg{amsmath} +packages to be installed as part of your \TeX{} distribution. I don't know of +any distributions for which this isn't the case, so chances are you're safe to +just install \hepunits and use it right away! + + +\section{Provided units} +The HEP units provided by \hepunits are listed in Tables \ref{tab:normunits} and +\ref{tab:hepunits} below. All the example outputs have been produced with a +command like |\unit{1.0}{|\texgen{unit}|}| where \texgen{unit} is one of the +unit commands listed in the tables. + +\begin{table}[ht] +\centering +\begin{tabular}{ll} +\toprule +Unit command & Example \\ + +\midrule +Lengths & \\ +\texcmd{nm} & \unit{1.0}{\nm} \\ +\texcmd{micron} & \unit{1.0}{\micron} \\ +\texcmd{mm} & \unit{1.0}{\mm} \\ +\texcmd{cm} & \unit{1.0}{\cm} \\ + +\midrule +Times & \\ +\texcmd{ns} & \unit{1.0}{\ns} \\ +\texcmd{ps} & \unit{1.0}{\ps} \\ +\texcmd{fs} & \unit{1.0}{\fs} \\ +\texcmd{as} & \unit{1.0}{\as} \\ + +\midrule +Rates & \\ +\texcmd{mHz} & \unit{1.0}{\mHz} \\ +\texcmd{Hz} & \unit{1.0}{\Hz} \\ +\texcmd{kHz} & \unit{1.0}{\kHz} \\ +\texcmd{MHz} & \unit{1.0}{\MHz} \\ +\texcmd{GHz} & \unit{1.0}{\GHz} \\ +\texcmd{THz} & \unit{1.0}{\THz} \\ + +\midrule +Misc. & \\ +\texcmd{mrad} & \unit{1.0}{\mrad} \\ +\texcmd{gauss} & \unit{1.0}{\gauss} \\ + +\bottomrule +\end{tabular} +\caption{List of non-HEP specific units provided by \hepunits} +\label{tab:normunits} +\end{table} + +\begin{table}[ht] +\centering +\begin{tabular}{ll} +\toprule +Unit command & Example \\ +\midrule +Luminosities & \\ +\texcmd{invcmsqpersecond} & \unit{1.0}{\invcmsqpersecond} \\ +\texcmd{invcmsqpersec} & \unit{1.0}{\invcmsqpersec} \\ +\texcmd{lumiunits} & \unit{1.0}{\lumiunits} \\ + +\midrule +Cross-sections & \\ +\texcmd{barn} & \unit{1.0}{\barn} \\ +\texcmd{invbarn} & \unit{1.0}{\invbarn} \\ +\texcmd{nanobarn} & \unit{1.0}{\nanobarn} \\ +\texcmd{invnanobarn} / \texcmd{invnb} & \unit{1.0}{\invnanobarn} \\ +\texcmd{picobarn} & \unit{1.0}{\picobarn} \\ +\texcmd{invpicobarn} / \texcmd{invpb} & \unit{1.0}{\invpicobarn} \\ +\texcmd{femtobarn} & \unit{1.0}{\femtobarn} \\ +\texcmd{invfemtobarn} / \texcmd{invfb} & \unit{1.0}{\invfemtobarn} \\ +\texcmd{attobarn} & \unit{1.0}{\attobarn} \\ +\texcmd{invattobarn} / \texcmd{invab} & \unit{1.0}{\invattobarn} \\ + +\bottomrule +\end{tabular} +\caption{List of HEP-specific units provided by \hepunits} +\label{tab:hepunits} +\end{table} + + +\begin{table}[ht] +\centering +\begin{tabular}{ll} +\toprule +Unit command & Example \\ +\midrule +\eV-based units & \\ +\texcmd{eV} & \unit{1.0}{\eV} \\ +\texcmd{inveV} & \unit{1.0}{\inveV} \\ +\texcmd{eVoverc} & \unit{1.0}{\eVoverc} \\ +\texcmd{eVovercsq} & \unit{1.0}{\eVovercsq} \\ +\texcmd{meV} & \unit{1.0}{\meV} \\ +\texcmd{keV} & \unit{1.0}{\keV} \\ +\texcmd{MeV} & \unit{1.0}{\MeV} \\ +\texcmd{GeV} & \unit{1.0}{\GeV} \\ +\texcmd{TeV} & \unit{1.0}{\TeV} \\ +\texcmd{minveV} & \unit{1.0}{\minveV} \\ +\texcmd{kinveV} & \unit{1.0}{\kinveV} \\ +\texcmd{MinveV} & \unit{1.0}{\MinveV} \\ +\texcmd{GinveV} & \unit{1.0}{\GinveV} \\ +\texcmd{TinveV} & \unit{1.0}{\TinveV} \\ +\texcmd{meVoverc} & \unit{1.0}{\meVoverc} \\ +\texcmd{keVoverc} & \unit{1.0}{\keVoverc} \\ +\texcmd{MeVoverc} & \unit{1.0}{\MeVoverc} \\ +\texcmd{GeVoverc} & \unit{1.0}{\GeVoverc} \\ +\texcmd{TeVoverc} & \unit{1.0}{\TeVoverc} \\ +\texcmd{meVovercsq} & \unit{1.0}{\meVovercsq} \\ +\texcmd{keVovercsq} & \unit{1.0}{\keVovercsq} \\ +\texcmd{MeVovercsq} & \unit{1.0}{\MeVovercsq} \\ +\texcmd{GeVovercsq} & \unit{1.0}{\GeVovercsq} \\ +\texcmd{TeVovercsq} & \unit{1.0}{\TeVovercsq} \\ + +\bottomrule +\end{tabular} +\contcaption{List of HEP-specific units provided by \hepunits (cont.)} +\label{tab:hepunits2} +\end{table} + +Note that a lot of these units have, for convenience, been provided as explicit +commands with various SI prefixes, rather than just defining the base unit and +using the \texpkg{SIunits} prescription for the prefixes. Let's give a demo in +case you don't know what I'm waffling about\dots the ``usual'' \texpkg{SUunits} +way of doing things is like this: +|\unit{1.0}{\mega\eVoverc}|. This produces ``\unit{1.0}{\mega\eVoverc}'' +just like |\unit{1.0}{\MeVoverc}| would do. + +I've chosen to provide the explicit prefixed commands for convenience: choose +your own favourite way (the same applies even more so for most of the non-HEP +units). If you are bothered about the explictly prefixed commands clogging up +the \LaTeX{} macro namespace then pass the \texopt{noprefixcmds} option to +\hepunits and the offending commands won't be defined at all. This will make +life awkward when it comes to inverse cross-sections as used for integrated +luminosities, but with suitable use of \texcmd{invbarn} I'm sure you can make +do. + +\section{Summary} +\hepunits is a handy package for particle physicists who'd like their units to +look right, with upright \micro{s} and properly italicised $c$s in the +appropriate places. Fortunately most of the work has already been done by the +marvellous \texpkg{SIunits} package and I've just provided a few more commands +and an option passing wrapper on to that excellent piece of work. + +If you have any comments, criticism, huge cash donations etc., then please do +send them my way. Email to |andy@insectnation.org| is preferred, but if you can +find a way to get your message to me by carrier pigeon I'll be very impressed. + +\end{document} |