summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/hep/hep.sty
blob: c5573e564d80140698cb134dda8cd76c6b4fedb6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
%% hep package for LaTeX --- convenience wrapper for High Energy Physics packages
%% 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
%% for the details of that license.
%%
%% Usage: \usepackage[options]{hep}
%%   where "options" are any of: fd     --- includes feynmf and axodraw for making Feynman diagrams
%%                               layout --- some nice layout tweaks like booktabs, setspace and fancyhdr
%%                               hyper  --- include hyperref with some sensible default options
%%                               float  --- include morefloats and afterpage for extra float handling flexibility
%%                               all    --- all of the above

%% Admin
\def\fileversion{1.0}
\def\filedate{2005/12/13}
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{hep}[\filedate\space Convenience wrapper for HEP packages (v\fileversion)]


%% Handle package options
\def\@empty{}
\def\@requirefdpkgs{}
\def\@requirelayoutpkgs{}%
\def\@requirehyper{}%
\def\@requirefloatpkgs{}%
\DeclareOption{fd}{% Include packages for drawing Feynman diagrams?
  \def\@requirefdpkgs{yes}}
\DeclareOption{layout}{% Include packages for nice layout?
  \def\@requirelayoutpkgs{yes}}
\DeclareOption{hyper}{% Include hyperref package (with decent options)
  \def\@requirehyper{yes}}
\DeclareOption{float}{% Include packages for extra float handling
  \def\@requirefloatpkgs{yes}}
\DeclareOption{all}{% Convenience handle to include all the optional bits
  \def\@requirefdpkgs{yes}%
  \def\@requirelayoutpkgs{yes}%
  \def\@requirehyper{yes}%
  \def\@requirefloatpkgs{yes}%
}

%% Pass options to hepnames packages
\DeclareOption{HNitalic}{\PassOptionsToPackage{italic}{hepnicenames}}
\DeclareOption{HNitforce}{\PassOptionsToPackage{itforce}{hepnicenames}}
\DeclareOption{HNmaybess}{\PassOptionsToPackage{maybess}{hepnicenames}}
\DeclareOption{HNnoss}{\PassOptionsToPackage{noss}{hepnicenames}}

%% Pass options to hepunits package
\DeclareOption{HUnoprefixcmds}{\PassOptionsToPackage{noprefixcmds}{hepunits}}
\DeclareOption{HUcdot}{\PassOptionsToPackage{cdot}{hepunits}}
\DeclareOption{HUthickspace}{\PassOptionsToPackage{thickspace}{hepunits}}
\DeclareOption{HUmediumspace}{\PassOptionsToPackage{mediumspace}{hepunits}}
\DeclareOption{HUthinspace}{\PassOptionsToPackage{thinspace}{hepunits}}
\DeclareOption{HUthickqspace}{\PassOptionsToPackage{thickqspace}{hepunits}}
\DeclareOption{HUmediumqspace}{\PassOptionsToPackage{mediumqspace}{hepunits}}
\DeclareOption{HUthinqspace}{\PassOptionsToPackage{thinqspace}{hepunits}}
\DeclareOption{HUnoamssquareissue}{\PassOptionsToPackage{noamssquareissue}{hepunits}}
\DeclareOption{HUamssymb}{\PassOptionsToPackage{amssymb}{hepunits}}
\DeclareOption{HUsquaren}{\PassOptionsToPackage{squaren}{hepunits}}
\DeclareOption{HUpstricks}{\PassOptionsToPackage{pstricks}{hepunits}}
\DeclareOption{HUGray}{\PassOptionsToPackage{Gray}{hepunits}}
\DeclareOption{HUitalian}{\PassOptionsToPackage{italian}{hepunits}}
\DeclareOption{HUtextstyle}{\PassOptionsToPackage{textstyle}{hepunits}}
\DeclareOption{HUnotextstyle}{\PassOptionsToPackage{notextstyle}{hepunits}}
\DeclareOption{HUbinary}{\PassOptionsToPackage{binary}{hepunits}}
\DeclareOption{HUnoams}{\PassOptionsToPackage{noams}{hepunits}}
\DeclareOption{HUderivedinbase}{\PassOptionsToPackage{derivedinbase}{hepunits}}
\DeclareOption{HUderived}{\PassOptionsToPackage{derived}{hepunits}}

\ProcessOptions


%% Useful packages for citations
\RequirePackage{url}
\RequirePackage{cite}


%% Hyperlinks (optional, has to come early in the package list)
\ifx\@requirehyper\@empty\else
\RequirePackage[colorlinks=true,bookmarks=true]{hyperref}
%pdfpagemode=FullScreen
\fi


%% Maths typesetting packages
\RequirePackage{amsmath} % ``Proper'' math commands and environments
\RequirePackage{braket} % Dirac bra-ket notation
\RequirePackage{cancel} % useful for Feynman slash notation
\RequirePackage{slashed} % also for slash notation: take your pick!
%\RequirePackage{maybemath} % contextual math typesetting
%\RequirePackage{hepmath} % Common HEP mathematical constructs and use-anywhere Greek letters


%% Particle names (should be specified *after* hyperref)
%\RequirePackage{hepparticles} % particle name typesetting (uses maybemath)
%\RequirePackage{heppennames} % Particle Entity Notation macros for particle symbols
\RequirePackage{hepnicenames} % A ``friendly'' macro set for selected PEN symbols 
                              % which includes hepparticles and heppennames


%% SIunits package and HEP extensions
\RequirePackage{hepunits} % imports SIunits with sensible options and HEP-specific units


%% Feynman diagrams (optional)
\ifx\@requirefdpkgs\@empty\else
\RequirePackage{axodraw}
\RequirePackage{feynmf}
%\RequirePackage{feynmp}
\fi


%% Layout improvements (optional)
\ifx\@requirelayoutpkgs\@empty\else
\RequirePackage{booktabs} % elegant table design
\RequirePackage{setspace} % proper line spacing handling
\RequirePackage{fancyhdr} % configurable headers and footers
\RequirePackage[nottoc]{tocbibind} % biblio but not ToC in ToC
\fi

%% Extra float handling (optional)
\ifx\@requirefloatpkgs\@empty\else
\RequirePackage{morefloats} % extra floats
\RequirePackage{afterpage} % float handling
\RequirePackage[subfigure]{ccaption} % continued captions
\RequirePackage{subfigure} % subfigures
\RequirePackage[margin=20pt,labelfont=bf]{caption} % nice-looking captions
\fi