summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2006-01-12 23:56:44 +0000
committerKarl Berry <karl@freefriends.org>2006-01-12 23:56:44 +0000
commit54d3b80d81714794331c24f64f637018f3c8ed40 (patch)
tree7b1ecdad0ce68ff00c13bb227bc71d226646a997
parenta8091d84dc2ea19d3779e1a785735cf3a38e4c52 (diff)
hepparticles
git-svn-id: svn://tug.org/texlive/trunk@973 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r--Master/texmf-dist/tex/latex/hepparticles/hepparticles.sty466
1 files changed, 466 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/hepparticles/hepparticles.sty b/Master/texmf-dist/tex/latex/hepparticles/hepparticles.sty
new file mode 100644
index 00000000000..7ef144e6141
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/hepparticles/hepparticles.sty
@@ -0,0 +1,466 @@
+\def\fileversion{1.4}
+\def\filedate{2005/02/22}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{hepparticles}[\filedate\space HEP particle typesetting (v\fileversion)]
+\RequirePackage{maybemath}
+%\RequirePackage{xspace}
+
+%% Package options
+\def\@italicNames{}%
+\def\@forceItalic{}%
+\def\@maybeSansSerif{yes}% default is ON
+\def\@emptyOption{}%
+\def\@empty{}%
+
+%% Make particle symbols behave as for generic math mode
+\DeclareOption{italic}{%
+ \def\@italicNames{yes}%
+}
+%% Force particle symbols to behave as for italic math mode
+\DeclareOption{itforce}{%
+ \def\@italicNames{yes}%
+ \def\@forceItalic{yes}%
+}
+%% Force upright particle names (default)
+\DeclareOption{notitalic}{%
+ \def\@italicNames{}%
+ \def\@forceItalic{}%
+}
+%% Allow particle names to be sans-serif in context (no italics, even for generic particles)
+\DeclareOption{maybess}{%
+ \def\@maybeSansSerif{yes}%
+}
+\DeclareOption{noss}{%
+ \def\@maybeSansSerif{}%
+}
+\ProcessOptions
+
+%% A set of macros for typesetting high energy particle names, to
+%% meet the following criteria:
+%%
+%% 1. The main particle name is a Roman or Greek symbol, to be
+%% typeset in upright font in normal contexts. Note that this
+%% follows from the mathematical convention that italics are
+%% only used to designate *variables* and that concrete particle
+%% names are not variables. However, if a symbol is being used
+%% to represent a whole class of possible concrete particles then
+%% that symbol should be italicised as befits a genuine variable.
+%%
+%% 2. Additionally a superscript and/or subscript may follow the
+%% main symbol.
+%%
+%% 3. Particle resonances may also have a resonance mass specifier
+%% which is typeset in parentheses following the main symbol
+%% e.g. (1440) and a spectroscopic term, e.g. P_11.
+%% In general these may also be followed by sub- and
+%% super-scripts.
+%%
+%% 4. The particle names are expected to be used both in and out
+%% of mathematical contexts.
+%%
+%% 5. If the surrounding text is bold or italic then the particle
+%% name should adapt to that context as best as possible (this
+%% may not be possible for Greek symbols).
+%%
+%% 6. Over-lines and over-tildes are used to indicate anti-particles
+%% and supersymmetric (SUSY) particles respectively. The line and/or
+%% tilde are only placed above the main symbol, NOT the accompanying
+%% sub- and super-scripts.
+%%
+%% 7. Sub- and super-scripts should be at the same heights for particles,
+%% anti-particles, SUSY particles and SUSY-anti-particles.
+%%
+%% A consequence of point 5 is that the well-known problems with
+%% boldness of particle names in section titles, headers and
+%% tables of contents automatically disappear if these macros are
+%% used.
+%%
+%%
+%% The macros provided are as follows:
+%%
+%% For generic particle names e.g. all positively charged leptons:
+%% \HepGenParticle{main}{subscript}{superscript}
+%% \HepGenAntiParticle{main}{subscript}{superscript}
+%%
+%% For concrete particle names:
+%% \HepParticle{main}{subscript}{superscript}
+%% \HepAntiParticle{main}{subscript}{superscript}
+%%
+%% For supersymmetric "sparticles":
+%% \HepSusyParticle{main}{subscript}{superscript}
+%% \HepGenSusyParticle{main}{subscript}{superscript}
+%% \HepSusyAntiParticle{main}{subscript}{superscript}
+%% \HepGenSusyAntiParticle{main}{subscript}{superscript}
+%%
+%% For resonance specifiers (just the extra terms):
+%% \HepResonanceMassTerm{mainTermInParenths}{subscript}{superscript}
+%% \HepResonanceSpecTerm{mainSpecTerm}{subscript}{superscript}
+%%
+%% For the total particle name and resonance specifications: the
+%% ``formal'' definitions include the spectroscopic term and the
+%% ``full'' versions pf each require the main particle name to be
+%% explicitly specified rather than just pass a \HepParticle as the first arg:
+%% \HepParticleResonance{name}{mass}{massSub}{massSup}
+%% \HepParticleResonanceFormal{name}{mass}{massSub}\
+%% {massSup}{spec}{specSub}{specSup}
+%% \HepParticleResonanceFull{name}{sub}{sup}{mass}{massSub}{massSup}
+%% \HepParticleResonanceFormalFull{name}{sub}{sup}\
+%% {mass}{massSub}{massSup}\
+%% {spec}{specSub}{specSup}
+%%
+%% And finally, for containing processes describing the evolution
+%% of these particles:
+%% \HepProcess{iParticles \HepTo fParticles}
+%% where \HepTo is a normal \to arrow with a bit of extra space.
+%% Help on increasing horizontal math spacing in this environment
+%% would be welcome!
+%%
+%% There are probably some missing cases but they can be handled
+%% as explicit exceptions. You might also be interested in the
+%% ``heppennames'' package, which updates the "pennames" set of
+%% typeset concrete particle names to use this more flexible scheme.
+%%
+%%
+%% 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>
+
+
+%% -----------------------------------------------------------------------
+%% Styling commands (exported)
+%% -----------------------------------------------------------------------
+
+%% Undecorated particle style (boldness and sans-serif handling)
+\DeclareRobustCommand{\HepNormStyle}[1]{%
+ \ifx\@maybeSansSerif\@emptyOption%
+ {\ensuremath{\maybebm{#1}}}%
+ %{\ensuremath{#1}}% lots of problems with the bold math nesting... cocks up in italic mode
+ \else%
+ {\ensuremath{\maybebm{\maybesf{#1}}}}%
+ \fi%
+}
+
+%% Generic particle style (normal style with optional forced italics)
+\DeclareRobustCommand{\HepGenStyle}[1]{%
+ \ifx\@forceItalic\@emptyOption%
+ {\HepNormStyle{#1}}%
+ \else%
+ {\HepNormStyle{\mathit{#1}}}%
+ \fi%
+}
+
+%% Concrete particle style (normal style with upright and forced italic handling)
+%% HepNormStyle can't be used in the first portion as it's important that sf be the
+%% innermost operator and that bm is the outermost so the rm must be sandwiched.
+%% The choice has been made to have forced-italics override the sf option, as you
+%% presumably have no sense of style if you use forced-it anyway :P
+\DeclareRobustCommand{\HepConStyle}[1]{%
+ \ifx\@forceItalic\@emptyOption%
+ \ifx\@maybeSansSerif\@emptyOption%
+ {\ensuremath{\maybebm{\mayberm{#1}}}}%
+ \else%
+ {\ensuremath{\maybebm{\mayberm{\maybesf{#1}}}}}%
+ \fi%
+ \else%
+ {\HepNormStyle{\maybeitrm{#1}}}%
+ \fi%
+}
+
+%\setcounter{errorcontextlines}{10}
+
+%% -----------------------------------------------------------------------
+%% Internal commands
+%% -----------------------------------------------------------------------
+
+%% Spacer used for filling in superscripts to stabilise placement
+\DeclareRobustCommand{\@dummysuper}{{\vphantom{\ast}}}
+%\DeclareRobustCommand{\@dummysuper}{\ast}
+
+%% Internal command for typesetting conditionally-bold terms with optional
+%% following sub- and super-scripts. Used by most other commands
+\DeclareRobustCommand{\@HepMainSubSupTerm}[3]{%
+ {\def\myargtwo{#2}}%
+ {\def\myargthree{#3}}%
+ \ensuremath{%
+ \ifx\myargtwo\@empty%
+ \ifx\myargthree\@empty%
+ {#1}%
+ \else%
+ {{#1}^{#3}}%
+ \fi%
+ \else%
+ \ifx\myargthree\@empty%
+ {{#1}_{#2}}%
+ \else%
+ {{#1}_{#2}^{#3}}%
+ \fi%
+ \fi%
+ \mspace{-0.6mu}% I don't know why, but a 0.6mu space was arising compared to pure text names
+ }%
+}
+
+\DeclareRobustCommand{\@HepGenericSubSupTerm}[3]{%
+ {\def\myargtwo{#2}}%
+ \ifx\myargtwo\@empty%
+ {\HepGenStyle{\@HepMainSubSupTerm{#1}{}{#3}}}%
+ \else%
+ {\HepGenStyle{\@HepMainSubSupTerm{#1}{\mspace{-2mu}{#2}}{#3}}}%
+ \fi%
+}
+
+\DeclareRobustCommand{\@HepConcreteSubSupTerm}[3]{%
+ {\def\myargtwo{#2}}%
+ \ifx\myargtwo\@empty%
+ {\HepConStyle{\@HepMainSubSupTerm{#1}{}{#3}}}%
+ \else%
+ {\HepConStyle{\@HepMainSubSupTerm{#1}{\maybeitsubscript{#2}}{#3}}}%
+ \fi%
+}
+
+%% Internal command for shifting sub- and super-scripts vertically to counter the effects of overlines etc.
+\DeclareRobustCommand{\@VerticalScriptShift}[2]{%
+ {\raisebox{#1}{\HepNormStyle{\scriptstyle{#2}}}}%
+}
+
+%% Generic version of the above
+\DeclareRobustCommand{\@GenericVerticalScriptShift}[2]{%
+ {\@VerticalScriptShift{#1}{\HepGenStyle{#2}}}%
+}
+
+%% Concrete version of the above
+\DeclareRobustCommand{\@ConcreteVerticalScriptShift}[2]{%
+ {\@VerticalScriptShift{#1}{\HepConStyle{#2}}}%
+}
+
+
+%% -----------------------------------------------------------------------
+%% Exported (public) commands
+%% -----------------------------------------------------------------------
+
+%% Alias for the internal particle (main-sub-sup) structure
+\DeclareRobustCommand{\HepParticleStruct}[3]{\@HepMainSubSupTerm{#1}{#2}{#3}}
+
+
+%% For generic particles like "lepton", "quark" etc (no upright font)
+\DeclareRobustCommand{\HepGenParticle}[3]{%
+ {\def\myargthree{#3}}%
+ \ifx\myargthree\@empty%
+ {\@HepGenericSubSupTerm{#1}{#2}{\@dummysuper}}% unmatched subscripts are very unstable
+ \else%
+ {\@HepGenericSubSupTerm{#1}{#2}{#3}}%
+ \fi%
+}
+
+%% For concrete HEP particle names like "B", "J/psi" etc
+\DeclareRobustCommand{\HepParticle}[3]{%
+ \ifx\@italicNames\@emptyOption%
+ {\def\myargthree{#3}}%
+ \ifx\myargthree\@empty%
+ {\@HepConcreteSubSupTerm{#1}{#2}{\@dummysuper}}% unmatched subscripts are very unstable
+ \else%
+ {\@HepConcreteSubSupTerm{#1}{#2}{#3}}%
+ \fi%
+ \else%
+ {\HepGenParticle{#1}{#2}{#3}}%
+ \fi%
+}
+
+%% For generic antiparticles
+\DeclareRobustCommand{\HepGenAntiParticle}[3]{%
+ {\def\myargtwo{#2}}%
+ {\def\myargthree{#3}}%
+ \ifx\myargtwo\@empty%
+ \HepGenParticle%
+ {\overline{#1}}%
+ {}%
+ {\mspace{1mu}\@GenericVerticalScriptShift{-0.6ex}{#3}}%
+ \else%
+ \ifx\myargthree\@empty%
+ {\HepGenParticle%
+ {\overline{#1}}%
+ {\mspace{0mu}{#2}}%
+ {\mspace{1mu}\@GenericVerticalScriptShift{-0.55ex}{\@dummysuper}}}%
+ \else%
+ {\HepGenParticle%
+ {\overline{#1}}%
+ {\mspace{1mu}{#2}}%
+ {\mspace{1mu}\@GenericVerticalScriptShift{-0.55ex}{#3}}}%
+ \fi%
+ \fi%
+}
+
+
+%% For antiparticles
+\DeclareRobustCommand{\HepAntiParticle}[3]{%
+ \ifx\@italicNames\@emptyOption%
+ {\def\myargtwo{#2}}%
+ {\def\myargthree{#2}}%
+ \ifx\myargtwo\@empty%
+ {\HepParticle%
+ {\overline{#1}}%
+ {}%
+ {\mspace{1mu}\@ConcreteVerticalScriptShift{-0.6ex}{#3}}}%
+ \else%
+ \ifx\myargthree\@empty%
+ {\HepParticle%
+ {\overline{#1}}%
+ {\mspace{1mu}#2}%
+ {\mspace{1mu}\@ConcreteVerticalScriptShift{-0.55ex}{\@dummysuper}}}%
+ \else%
+ {\HepParticle%
+ {\overline{#1}}%
+ {\mspace{1mu}#2}%
+ {\mspace{1mu}\@ConcreteVerticalScriptShift{-0.55ex}{#3}}}%
+ \fi%
+ \fi%
+ \else%
+ {\HepGenAntiParticle{#1}{#2}{#3}}%
+ \fi%
+}
+
+%% For generic SUSY particles e.g. slepton, squark
+\DeclareRobustCommand{\HepGenSusyParticle}[3]{%
+ {\def\myargtwo{#2}}%
+ {\def\myargthree{#3}}%
+ \ifx\myargtwo\@empty%
+ {\HepGenParticle%
+ {\widetilde{#1}}%
+ {}%
+ {\mspace{1mu}{#3}}}%
+ \else%
+ \ifx\myargthree\@empty%
+ {\HepGenParticle%
+ {\widetilde{#1}}%
+ {\mspace{0mu}\@GenericVerticalScriptShift{0.0ex}{#2}}%
+ {}}%
+ \else%
+ {\HepGenParticle%
+ {\widetilde{#1}}%
+ {\mspace{0mu}#2}%
+ {\mspace{1mu}\@GenericVerticalScriptShift{-0.02ex}{#3}}}%
+ \fi%
+ \fi%
+}
+
+%% For SUSY particles
+\DeclareRobustCommand{\HepSusyParticle}[3]{%
+ \ifx\@italicNames\@emptyOption%
+ {\def\myargtwo{#2}}%
+ {\def\myargthree{#3}}%
+ \ifx\myargtwo\@empty%
+ {\HepParticle%
+ {\widetilde{#1}}%
+ {}%
+ {\mspace{1mu}{#3}}}%
+ \else%
+ \ifx\myargthree\@empty%
+ {\HepParticle%
+ {\widetilde{#1}}%
+ {\mspace{1mu}{#2}}%
+ {\mspace{1mu}{\@dummysuper}}}%
+ \else%
+ {\HepParticle%
+ {\widetilde{#1}}%
+ {\mspace{1mu}{#2}}%
+ {\mspace{1mu}{#3}}}%
+ \fi%
+ \fi%
+ \else%
+ {\HepGenSusyParticle{#1}{#2}{#3}}%
+ \fi%
+}
+
+%% For generic SUSY anti-particles e.g. slepton, squark
+\DeclareRobustCommand{\HepGenSusyAntiParticle}[3]{%
+ {\HepGenParticle%
+ {\overline{\widetilde{#1}}}%
+ {\mspace{0mu}{#2}}%
+ {\mspace{1mu}\@GenericVerticalScriptShift{-1.25ex}{#3}}}%
+}
+
+%% For SUSY anti-particles
+\DeclareRobustCommand{\HepSusyAntiParticle}[3]{%
+ \ifx\@italicNames\@emptyOption%
+ {\HepParticle%
+ {\overline{\widetilde{#1}}}%
+ {\mspace{0mu}{#2}}%
+ {\mspace{1mu}\@ConcreteVerticalScriptShift{-1.25ex}{#3}}}%
+ \else%
+ {\HepGenSusyAntiParticle{#1}{#2}{#3}}%
+ \fi%
+}
+
+
+%% Resonances and other such structures. These are actually pretty
+%% complicated since the most general structure has a main particle
+%% term, a mass term and a spectroscopic term: in total 9 possible arguments
+%% if we let each main term have optional following sub- and super-scripts!
+%% The mass and spectroscopic terms seem to be mixed up quite often... *sigh*
+%%
+%% Apologies for the interface changing yet again as I learn how general
+%% these terms can be! Hopefully stable now (touch wood)...
+
+%% For resonance mass specifications like the bracket in "J/psi(1S)"
+\DeclareRobustCommand{\HepResonanceMassTerm}[3]{%
+ \ifx\@italicNames\@emptyOption%
+ \@HepConcreteSubSupTerm{\left({#1}\right)}{#2}{#3}%
+ \else%
+ \@HepGenericSubSupTerm{\left({#1}\right)}{#2}{#3}%
+ \fi%
+}
+
+%% For resonance spectroscopic specifications like the P_11 in "N(1440)P_11"
+\DeclareRobustCommand{\HepResonanceSpecTerm}[3]{%
+ \ifx\@italicNames\@emptyOption%
+ \@HepConcreteSubSupTerm{#1}{#2}{#3}%
+ \else%
+ \@HepGenericSubSupTerm{#1}{#2}{#3}%
+ \fi%
+}
+
+%% For resonances like "J/psi(1S)" (first arg is a whole \HepParticle)
+\DeclareRobustCommand{\HepParticleResonance}[4]{%
+ \ensuremath{%
+ {#1}{\HepResonanceMassTerm{#2}{#3}{#4}}%
+ }%
+}
+
+%% For resonances like "N(1440)P_11" (first arg is a whole \HepParticle)
+\DeclareRobustCommand{\HepParticleResonanceFormal}[7]{%
+ \ensuremath{%
+ {\HepParticleResonance{#1}{#2}{#3}{#4}}\,{\HepResonanceSpecTerm{#5}{#6}{#7}}%
+ }%
+}
+
+%% For resonances like "J/psi(1S)" (all arguments ``spelt out'')
+\DeclareRobustCommand{\HepParticleResonanceFull}[6]{%
+ \HepParticleResonance{\HepParticle{#1}{#2}{#3}}{#4}{#5}{#6}%
+}
+
+%% For resonances like "N(1440)P_11" (all arguments ``spelt out'')
+\DeclareRobustCommand{\HepParticleResonanceFormalFull}[9]{%
+ \HepParticleResonanceFormal{\HepParticle{#1}{#2}{#3}}{#4}{#5}{#6}{#7}{#8}{#9}%
+}
+
+
+%% For typesetting HEP processes with these particle names.
+%% Help on how to widen the math spacing would be nice: I always
+%% find myself putting \, between particle names to make it look good.
+\let\@HepOldto\to
+\DeclareRobustCommand{\HepTo}{\ensuremath{\to}}%
+\DeclareRobustCommand{\HepProcess}[1]{%
+\ifx\pdfoutput\@empty%
+ \begingroup%
+ \renewcommand{\to}{\mspace{2mu}\@HepOldto\mspace{2mu}}% %this defn makes PDFTeX do bad things
+ \ensuremath{#1}%
+ \renewcommand{\to}{\@HepOldto}%
+ \endgroup%
+\else%
+ \ensuremath{#1}%
+\fi%
+}
+
+%% For reference purposes :-)
+%\DeclareRobustCommand{\hepparticles}{\texttt{hepparticles}\xspace}