diff options
Diffstat (limited to 'Master/texmf-dist/source/fonts/feyn/feyn.dtx')
-rw-r--r-- | Master/texmf-dist/source/fonts/feyn/feyn.dtx | 1099 |
1 files changed, 1099 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/fonts/feyn/feyn.dtx b/Master/texmf-dist/source/fonts/feyn/feyn.dtx new file mode 100644 index 00000000000..0e2b35e7b4c --- /dev/null +++ b/Master/texmf-dist/source/fonts/feyn/feyn.dtx @@ -0,0 +1,1099 @@ +% \iffalse +% This is feyn.dtx, which manages the use of the feyn Metafont +% +%% This software is copyright, 1991, 1994, 2001, 2002, 2005, 2008, Norman Gray. +%% +%% This program is free software; you can redistribute it and/or +%% modify it under the terms of the GNU General Public License +%% as published by the Free Software Foundation; either version 2 +%% of the License, or (at your option) any later version. +%% +%% This program is distributed in the hope that it will be useful, +%% but WITHOUT ANY WARRANTY; without even the implied warranty of +%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +%% GNU General Public License for more details. +%% +%% You should have received a copy of the GNU General Public License +%% along with this program; if not, write to the Free Software +%% Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +%% +%% Author: Norman Gray, norman@astro.gla.ac.uk. +%% Department of Physics and Astronomy, University of Glasgow, UK +%% +%% See the file LICENCE for a copy of the GPL. +%% You can also find an online copy at http://www.gnu.org/copyleft/gpl.html . +% +%<+package|driver>%% RCS Info $Id: feyn.dtx.in,v 1.18 2008/02/29 20:45:59 norman Exp $ +%<+package>\NeedsTeXFormat{LaTeX2e} +%<+package>\ProvidesPackage{feyn}[2008/02/29 \space0.3.1\space textpos] +%<+package>\typeout{Package: `feyn' 0.3.1\space<2008/02/29 >} +% +%<*driver> +%\documentclass[12pt]{ltxdoc} +\documentclass{ltxdoc} +\usepackage{feyn} +\title{The feyn font} +\author{Norman Gray\\(\texttt{norman@astro.gla.ac.uk})} +\date{Version 0.3.1, 2008 February 29} +\newcommand\Lopt[1]{\textsf {#1}} +\newcommand\file[1]{\texttt {#1}} +\newcommand\Lcount[1]{\textsl {\small#1}} +\newcommand\pstyle[1]{\textsl {#1}} +%% \url macro (url.sty does this better) +\def\setpathdots{\discretionary{.}{}{.}} +\def\setpathslash{\discretionary{/}{}{/}} +{\catcode`\.=\active + \catcode`\/=\active + \gdef\pathcats{% + \catcode`\%=12 \catcode`\~=12 + \catcode`\.=\active \let.\setpathdots + \catcode`\/=\active \let/\setpathslash + \catcode`\#=12 \catcode`\_=12}% + } +\def\setpath#1{\ttfamily <\nobreak #1\nobreak>\endgroup} +\def\url{\begingroup\pathcats\setpath} +%\RecordChanges +\OnlyDescription +\parskip=\medskipamount +\parindent=0pt +\begin{document} +\maketitle +\DocInput{feyn.dtx} +\end{document} +%</driver> +% +% \fi +% +% +% +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} +% +% +% +% +% +% +% \newcommand{\pslash}{p\llap{/\kern-0.3pt}} +% \newcommand{\feynx}{\textsl{feyn}} +% \newcommand{\metafont}{Metafont} +% +% +% This describes the font \feynx, which can be used to produce relatively +% simple Feynman diagrams within equations in a \LaTeX\ document. +% +% The other Feynman diagram package which exists is Thorsten Ohl's +% \textsl{feynmf}/\textsl{feynmp} package. That +% works by creating \metafont\ or MetaPost figures using a preprocessor. +% It's more general than this package, but is at its best when +% creating relatively large diagrams, for figures. +% In contrast, the present system consists of a carefully-designed font +% with which you can write simple diagrams, within equations or within text, +% in a size matching the surrounding text size. +% +% \textbf{Contents:} +% \def\numberline#1{\space\emph{\S#1}~} +% \def\contentsline#1#2#3{#2,~p#3;} +% \makeatletter \@starttoc{toc} \makeatother +% +% \section{Status} +% +% The propagators and vertices which are implemented are those which +% seem to appear most often in non-figure displays (the practical +% definition of `appear most often' is `which I wanted' or `which +% people asked me for'). I'd be delighted to add others which folk +% feel would be useful. +% +% +% \section{Description} +% +% You use the font by including the package \texttt{feyn.sty}, as in +% \begin{verbatim} +% \usepackage{feyn} +% \end{verbatim} +% If you use the `amsmath' package, you should load that before +% loading the `feyn' package.\footnote{Because of a slight peculiarity +% of the amsmath package, the active~`!' command described below will +% not work properly within amsmath |{align}| or |{align*}| +% environments unless the~`!' is made active globally. This is done +% by default if the `amsmath' package is loaded first, and not done by +% default otherwise. If you have to override this behaviour for some +% very arcane reason, then you can force the global or local declaration +% of~`!' using the \Lopt{globalbang} and \Lopt{noglobalbang} options +% to the \texttt{$\backslash$usepackage\{feyn\}} command.} +% +% \makeatletter +% \def\refptcirc{\lower\feyn@maxis \hbox to 0pt{\hss$\circ$\hss}} +% \makeatother +% \begin{table} +% \def\tableskip{\noalign{\smallskip}} +% \halign{$\refptcirc\Feyn{#}$% +% \hfil\quad & $#$\hfil\quad & # \hfil\qquad && # \cr +% \omit Character & \omit & Name & Width & Height & Depth \cr +% \noalign{\smallskip\hrule\smallskip} +% f & f & fermion$^{\dag}$ +% & 2 & 0 & 0 \cr \tableskip +% fs & fs & short fermion +% & 1 & 0 & 0 \cr \tableskip +% fl & fl & fermion loop$^{\dag\ddag}$ +% & 4 & 2 & 2 \cr \tableskip +% flS & flS & fermion loop (small)$^{\dag\ddag}$ +% & 0 & 4/3 & 0 \cr \tableskip +% fu & fu & upward fermion$^\dag$ (45$^\circ$) +% & $\sqrt2$ & $\sqrt2$ & 0 \cr \tableskip +% fd & fd & downward fermion$^\dag$ +% & $\sqrt2$ & $\sqrt2$ & 0 \cr \tableskip +% fv & fv & vertical fermion$^\dag$ +% & 0 & 2 & 0 \cr \tableskip +% f0 & f0 & spacer +% & 2 & 0 & 0 \cr \tableskip +% fs0 & fs0 & short spacer +% & 1 & 0 & 0 \cr \tableskip +% g & g & gluon/photon$^{\dag}$ +% & 2 & 0 & 0 \cr \tableskip +% gl & gl & gluon loop$^{\dag\ddag}$ +% & 0 & 2 & 0 \cr \tableskip +% glB & glB & gluon loop (big)$^{\dag}$ +% & 0 & 2.67 & 0 \cr \tableskip +% glS & glS & gluon loop (small)$^{\dag}$ +% & 0 & 1.33 & 0 \cr \tableskip +% g1 & g1 & gluon loop, 1st quadrant (sim.\ 2, 3, 4)$^{\dag}$ +% & 2 & 2 & 0 \cr \tableskip +% gu & gu & upward gluon$^\dag$ (45$^\circ$) +% & $\sqrt2$ & $\sqrt2$ & 0 \cr \tableskip +% gd & gd & downward gluon$^\dag$ +% & $\sqrt2$ & $\sqrt2$ & 0 \cr \tableskip +% gv & gv & vertical gluon$^\dag$ +% & 0 & 2 & 0 \cr \tableskip +% m & m & massive fermion$^{\dag}$ +% & 2 & 0 & 0 \cr \tableskip +% ms & ms & short massive fermion +% & 1 & 0 & 0 \cr \tableskip +% h & h & ghost +% & 2 & 0 & 0 \cr \tableskip +% hs & hs & short ghost +% & 1 & 0 & 0 \cr \tableskip +% hu & hu & upward ghost (45$^\circ$) +% & $\sqrt2$ & $\sqrt2$ & 0 \cr \tableskip +% hd & hd & downward ghost +% & $\sqrt2$ & $\sqrt2$ & 0 \cr \tableskip +% x & x & counterterm vertex & 0 & $a$ & $-a$ \cr \tableskip +% p & p & proper vertex & - & - & - \cr \tableskip +% P & P & proper vertex (variant) & - & - & - \cr \tableskip +% c & c & complete vertex & - & - & - \cr \tableskip +% a & a & arrow & 0 & 0 & 0 \cr +% } +% \caption{\label{chars} The characters in font \feynx. Characters +% marked~$\ddag$ have an upside-down variant indicated with a `u' +% suffix, and those marked~$\dag$ have arrowed variants indicated +% with~`A' and~`V' suffixes, in that order.} +% \end{table} +% +% The characters in the font are shown in table~\ref{chars}. These +% are shown in textstyle size, but all characters are also available in +% displaystyle size. All the dimensions are shown as multiples of the +% length of a module which is the length of the short fermion. The +% dimension~$a$ is the height of the maths axis. The~$\circ$ shows the +% reference point of each character. The proper vertex and the +% complete vertex are specified +% in terms of a `blob-radius' which is about half a module. They have +% a width of 2~radii, and a height and depth of 1~radius. +% +% Each of the characters marked with a~$\dag$ in the table has two +% arrowed variants, so that |\feyn{fA + gV}| produces $\feyn{fA + +% gV}$. The `A' variants produce arrows pointing rightwards or +% upwards, and the `V' variants arrows pointing leftwards or +% downwards. The characters marked with a~$\ddag$ also have an +% upside-down variant, thus `flu' is an upside-down variant of the +% fermion loop, and `fluV' an arrowed variant. +% +% The unnassigned positions in the \feynx\ font are filled +% with an obviously wrong dummy character, so that |$\feyn{A}$|, for example, +% produces $\feyn{fs0Afs0}$. +% +% The file \file{feyn.sty} additionally defines a number of macros, +% described here. +% \begin{description} +% \item[\cs{feyn}] Selects the diagram font. This must be used +% within math mode. \cs{Feyn} selects the text-mode diagram font. +% \item[\cs{momentum}\{ch\}\{text\}] sets the character +% ch, which may be a ligature, and puts the given text at the recommended +% annotation position for that character. |\momentum[pos]{ch}{text}| +% is the same, except that the optional argument indicates the +% position relative to the annotation position. It must be one of +% `top', `urt', `lrt', `bot', `llft' or `ulft'. See below for +% examples. Rarely used as such, since the |\feyn| and |\Feyn| +% commands make~`!' a temporarily active character, and define it +% to be |\momentum|. +% \item[\cs{Diagram\{\}}] For building more complicated diagrams. It +% takes one argument, which is like the contents of an \texttt{\{array\}} +% environment---a series of formulae separated by \&'s and \verb-\\-. See +% below for an example. The result is a box on the math-axis. +% \item[\cs{maxis}] Raises a formula to the math-axis, which is +% occasionally useful within in-text equations: eg +% |$\Feyn{fglf} - \maxis{\Feyn{faf}}$| produces +% $\Feyn{fglf} - \maxis{\Feyn{faf}}$. +% \item[\cs{vertexlabel\{p\}\{text\}}] Allows you to label a vertex. If +% the first parameter~$p$ is~$\wedge$, the~\emph{text} is placed above the +% point at which the command is given, if it is~\texttt{\_}, it is +% placed below. For example, |$\feyn{f\vertexlabel^{a}}$| produces +% $\feyn{f\vertexlabel^{a}}$. More often used within |\Diagram| +% than elsewhere. +% \item[\cs{feynstrut\{h\}\{d\}}] For use within an (eqn)array environment, or +% the like. It modifies the control sequence \verb-\strut- to be a strut of +% height~$h$ and depth~$d$ modules, which can therefore be used to +% space the array out. Note that it modifies |\strut|, rather +% than being the strut itself. +% \item[\cs{annotate\{x\}\{y\}\{text\}}] Puts the \emph{text}, between dollars, +% in a zero width box at offset~$(x,y)$ modules from the position of the +% |\annotate| command (which is generally the first command(s) after +% entering math-mode). Because the \emph{text} is in math-mode, anything +% that is not maths should be in an |\mbox|. +% \end{description} +% +% The \feynx\ font is modular, in the sense that all the +% dimensions are in terms of a module of 10pt, and all sizes given +% below are in units of modules. As well as 10pt, the font has +% versions for 11pt, 12pt, 18pt and 24pt text, and the most +% appropriate one is selected depending on the text size declared (or +% defaulted) in the |\documentclass| command. This range of sizes +% seems to be appropriate for the sizes required, but the author would +% welcome comments on this. The distribution +% contains a sample file using the 18pt \feynx\ font in a +% \texttt{foiltex} document. +% +% You draw a diagram by going into math-mode (between \$\dots\$), and selecting +% the diagrams font by the font-changing command \verb-\feyn{}- +% (exactly as you might use \verb-\mathrm- in math-mode). With a couple of +% exceptions, all the characters are obtained by typing a single +% letter, or a couple of letters which form a ligature, so that the +% letter~$f$ in the diagrams font (\verb-$\feyn{f}$-) produces a +% fermion of length~2 (modules), and~$fs$ produces a short fermion of +% length~1. As usual in maths mode, space characters are ignored, so +% you can add whitespace as required to make the expressions more +% legible. Some of the more heavily used characters are available in +% both display size and text size, with the text-size version invoked +% by |\Feyn{...}|, so that |\feyn{fglf}| gives $\feyn{fglf}$ and +% |\Feyn{fglf}| gives $\Feyn{fglf}$. The displaystyle characters +% are all on the math-axis, the textstyle ones are on the text line. +% +% \section{Examples} +% +% \newdimen\halftextwidth +% \halftextwidth=\textwidth +% \advance\halftextwidth by -\tabcolsep +% \advance\halftextwidth by -\arrayrulewidth +% \divide\halftextwidth by 2 +% \newenvironment{codeexample} +% {\vskip\medskipamount +% \def\Becomes{\cr +% \noalign{\vrule width \arrayrulewidth \hskip\tabcolsep}} +% \valign\bgroup +% \hrule height 0pt depth 0pt width \halftextwidth +% \hsize=\halftextwidth +% \vfil ## \vfil \cr} +% {\crcr\egroup +% \vskip\medskipamount} +% \newenvironment{examplerhs}{\begin{minipage}[t]{\halftextwidth}} +% {\\ \end{minipage}} +% +% A simple propagator: +% \begin{codeexample} +% \begin{verbatim} +% \feyn{\vertexlabel^a +% !{fA}p \vertexlabel^b} +% = \displaystyle +% \frac{i\delta^{ab}} +% {\pslash-m_0}} +% \end{verbatim} +% \Becomes +% \begin{examplerhs}$ +% \feyn{\vertexlabel^a +% !{fA}p \vertexlabel^b} +% = \displaystyle +% \frac{i\delta^{ab}}{\pslash-m_0} +% $\end{examplerhs} +% \end{codeexample} +% +% The |\Diagram| command lays out its arguments as an array. +% \begin{codeexample} +% \begin{verbatim} +% \Diagram{\vertexlabel^a \\ +% fd \\ +% & g\vertexlabel_{\mu,c} \\ +% \vertexlabel_b fu\\ +% } +% = \displaystyle +% ig\gamma_\mu (T^c)_{ab} +% \end{verbatim} +% \Becomes +% \begin{examplerhs}$ +% \Diagram{\vertexlabel^a \\ +% fd \\ +% & g\vertexlabel_{\mu,c} \\ +% \vertexlabel_b fu\\ +% } +% = \displaystyle +% ig\gamma_\mu (T^c)_{ab} +% $\end{examplerhs} +% \end{codeexample} +% +% An assortment of two-loop diagrams: +% \begin{codeexample} +% \begin{verbatim} +% \feyn{fs f gl f glu f fs} +% \end{verbatim} +% \Becomes +% $\feyn{fs f gl f glu f fs}$ +% \end{codeexample} +% This is a ``short-fermion fermion gluon-loop fermion +% gluon-loop-upsidedown fermion short-fermion''. +% +% \begin{codeexample} +% \begin{verbatim} +% \feyn{ms mA gl gv ms x f} +% \end{verbatim} +% \Becomes +% $\feyn{ms mA gl gv ms x f}$ +% \end{codeexample} +% +% \begin{codeexample} +% \begin{verbatim} +% \feyn{f !{g1A}1 !{g2V}2 +% !{g3A}3 !{g4V}4 f}, +% \feyn{fs f !{flA}{p} +% !{fluV}{k} f fs} +% \end{verbatim} +% \Becomes +% \begin{examplerhs}$ +% \feyn{f !{g1A}1 !{g2V}2 +% !{g3A}3 !{g4V}4 f}, +% \feyn{fs f !{flA}{p} +% !{fluV}{k} f fs} +% $\end{examplerhs} +% \end{codeexample} +% +% \begin{codeexample} +% \begin{verbatim} +% \feyn{!{fA}p +% f!{glBV}k !{glSA}l +% a\vertexlabel_{p+k-l} ff} +% \end{verbatim} +% \Becomes +% \begin{examplerhs}$ +% \feyn{!{fA}p +% f!{glBV}k !{glSA}l +% a\vertexlabel_{p+k-l} ff} +% $\end{examplerhs} +% \end{codeexample} +% +% \newenvironment{bigdisplay} +% {\newline +% \vbox{\hrule\hbox to \textwidth{\vrule height 1.5ex\hfil\vrule}}% +% \parskip0pt} +% {\vbox{\hbox to \textwidth{\vrule height 1.5ex \hfil\vrule}\hrule}} +% +% Bremsstrahlung: +% \begin{bigdisplay} +% \begin{verbatim} +% \[ +% \Diagram{ & x \\ +% & ![ulft]{gvV}{q=p'+k-p} & !{guA}k \\ +% ![bot]{fA}p & ![bot]{fA}{p'+k} & ![lrt]{fA}{p'} \\ +% } +% + +% \Diagram{ & !{guA}k \\ +% !{fA}p & ![bot]{fA}{p-k} fs & !{fA}{p'} \\ +% & & ![lrt]{gvA}{q=p'+k-p} \\ +% & & x\\ +% } +% \] +% \end{verbatim} +% \hrule +% \[ +% \Diagram{ & x \\ +% & ![ulft]{gvV}{q=p'+k-p} & !{guA}k \\ +% ![bot]{fA}p & ![bot]{fA}{p'+k} & ![lrt]{fA}{p'} \\ +% } +% + +% \Diagram{ & !{guA}k \\ +% !{fA}p & ![bot]{fA}{p-k} fs & !{fA}{p'} \\ +% & & ![lrt]{gvA}{q=p'+k-p} \\ +% & & x\\ +% } +% \] +% \end{bigdisplay} +% +% We can also have diagrams in the text, like~$\Feyn{fsfglffs}$, and we can +% annotate the diagrams +% \begin{codeexample} +% \begin{verbatim} +% \annotate{2}{-0.5} +% {\mbox{counterterm}} +% \feyn{ms m gl ![llft]{gv}l +% ms x f} +% \end{verbatim} +% \Becomes +% \begin{examplerhs} $ +% \annotate{2}{-0.5} +% {\mbox{counterterm}} +% \feyn{ms m gl ![llft]{gv}l +% ms x f} +% $\end{examplerhs} +% \end{codeexample} +% This is a ``short-massive massive gluon-loop gluon-vertical +% short-massive counterterm fermion''. +% +% The expression for the heavy-fermion self-energy in the \textsc{ope} is: +% \begin{bigdisplay} +% \begin{verbatim} +% \def\bracket#1{\langle #1 \rangle} +% \begin{eqnarray*} +% -i\Sigma_{\rm ope} &=& +% \left[ \feyn{faf + fsfglffs + \cdots} \right] 1 +% \feynstrut{1}{1}\strut \\ +% && \quad{}+ \left[ \feyn{ fxfs0glfs0xf + \cdots} \right] +% \bracket{\overline\psi M \psi} \\ +% && \quad{}+ \left[ \Diagram{ &x &x \\ +% &gv &gv \\ +% fs &fs &fs \\} + \cdots \right] +% \bracket{G_{\mu\nu}^a G_{\mu\nu}^a}\\ +% \end{eqnarray*} +% \end{verbatim} +% \hrule +% \def\bracket#1{\langle #1 \rangle} +% \begin{eqnarray*} +% -i\Sigma_{\rm ope} &=& +% \left[ \feyn{faf + fsfglffs + \cdots} \right] 1 +% \feynstrut{1}{1}\strut \\ +% && \quad{}+ \left[ \feyn{ fxfs0glfs0xf + \cdots} \right] +% \bracket{\overline\psi M \psi} \\ +% && \quad{}+ \left[ \Diagram{ &x &x \\ +% &gv &gv \\ +% fs &fs &fs \\} + \cdots \right] +% \bracket{G_{\mu\nu}^a G_{\mu\nu}^a}\\ +% \end{eqnarray*} +% \end{bigdisplay} +% +% The Feynman Rules are as follows: +% \begin{bigdisplay} +% \begin{verbatim} +% \def\arraystretch{3} \arraycolsep=0.2cm +% \[ \begin{array}{rcl} +% \feyn{\vertexlabel^a !{fA}p \vertexlabel^b} % quark prop +% &=& \displaystyle +% {i\delta^{ab} \over \pslash- m_0} \\ +% +% \Diagram{\vertexlabel^a \\ fd \\ & g\vertexlabel_{\mu,c} \\ +% \vertexlabel_b fu\\} % 3-point vertex +% &=& \displaystyle +% ig\gamma_\mu (t^c)_{ab} \\ +% +% \feyn{\vertexlabel_{\mu, a} !{gA}k \vertexlabel_{\nu, b}} % gluon prop +% &=& \displaystyle +% {-i\over k^2} \left[g_{\mu\nu} + (a_0 - 1) {k_\mu k_\nu \over k^2}\right] +% \delta^{ab} \\ +% +% \Diagram{\vertexlabel^{\alpha,a} \\ +% !{gdA}p \\ +% & !{gA}r \vertexlabel_{\gamma,c} \\ +% !{guA}q \\ +% \vertexlabel_{\beta,b} +% } % 3-gluon vertex +% &=& \displaystyle +% -g f^{abc} ( +% g_{\beta\gamma} (q-r)_\alpha + +% g_{\gamma\alpha} (r-p)_\beta + +% g_{\alpha\beta} (p-q)_\gamma +% ) \\ +% +% \feyn{\vertexlabel^a !hp \vertexlabel^b} % ghost prop +% &=& \displaystyle +% {i \over p^2} \delta_{ab} \\ +% +% \Diagram{\vertexlabel^b \\ hd \\ & g\vertexlabel^{\mu,a} \\ +% \vertexlabel_c hu\\} % ghost-gluon vertex +% &=& \displaystyle +% -g f^{abc}p_\mu +% \quad\raise 1ex\hbox{\vtop{\hsize=15em +% where $p$ is the momentum of the outgoing positive energy +% ghost\par}} +% \end{array} \] +% \end{verbatim} +% \hrule +% \def\arraystretch{3} \arraycolsep=0.2cm +% \[ \begin{array}{rcl} +% \feyn{\vertexlabel^a !{fA}p \vertexlabel^b} +% &=& \displaystyle +% {i\delta^{ab} \over \pslash- m_0} \\ +% +% \Diagram{\vertexlabel^a \\ fd \\ & g\vertexlabel_{\mu,c} \\ +% \vertexlabel_b fu\\} +% &=& \displaystyle +% ig\gamma_\mu (t^c)_{ab} \\ +% +% \feyn{\vertexlabel_{\mu, a} !{gA}k \vertexlabel_{\nu, b}} +% &=& \displaystyle +% {-i\over k^2} \left[g_{\mu\nu} + (a_0 - 1) {k_\mu k_\nu \over k^2}\right] +% \delta^{ab} \\ +% +% \Diagram{\vertexlabel^{\alpha,a} \\ +% !{gdA}p \\ +% & !{gA}r \vertexlabel_{\gamma,c} \\ +% !{guA}q \\ +% \vertexlabel_{\beta,b} +% } +% &=& \displaystyle +% -g f^{abc} ( +% g_{\beta\gamma} (q-r)_\alpha + +% g_{\gamma\alpha} (r-p)_\beta + +% g_{\alpha\beta} (p-q)_\gamma +% ) \\ +% +% \feyn{\vertexlabel^a !hp \vertexlabel^b} +% &=& \displaystyle +% {i \over p^2} \delta_{ab} \\ +% +% \Diagram{\vertexlabel^b \\ hd \\ & g\vertexlabel^{\mu,a} \\ +% \vertexlabel_c hu\\} +% &=& \displaystyle +% -g f^{abc}p_\mu +% \quad\raise 1ex\hbox{\vtop{\hsize=15em +% where $p$ is the momentum of the outgoing positive energy +% ghost\par}} +% \end{array} \] +% \end{bigdisplay} +% +% The diagrams can also appear as parts of equations: +% \begin{bigdisplay} +% \begin{verbatim} +% \begin{eqnarray} +% \feyn{fcf} &=& \feyn{faf + fpf + fpfpf + \cdots} \\ +% &=& \sum_{n=0}^\infty \feyn{fsafs ( pfsafs)}^n \\ +% &=& \feyn{\frac{fsafs}{1-(pfsafs)}}. +% \end{eqnarray} +% \end{verbatim} +% \hrule +% \begin{eqnarray} +% \feyn{fcf} &=& \feyn{faf + fpf + fpfpf + \cdots} \\ +% &=& \sum_{n=0}^\infty \feyn{fsafs ( pfsafs)}^n \\ +% &=& \feyn{\frac{fsafs}{1-(pfsafs)}}. +% \end{eqnarray} +% \end{bigdisplay} +% +% \section{Installation} +% +% You should be able to find generic instructions for installing +% \LaTeX\ files at +% \url{http://www.tex.ac.uk/cgi-bin/texfaq2html?label=installthings}. +% +% If you have not done so already, you need to extract the package +% file from the distribution file using |latex feyn.ins|. The +% resulting \file{feyn.sty} should be installed in the usual location +% for style files -- that is, something like +% \file{texmf.local/tex/latex/feyn.sty}. The \metafont\ source files +% \file{*.mf} should be installed in a directory with a location such as +% \file{texmf.local/fonts/source/feyn/}. That should be all you need +% to do as regards the installation of the fonts -- if your \TeX\ +% setup is installed correctly, then the usual font-generation +% commands (such as \file{mktexpk} for example) should work as normal, +% and these will usually be invoked by default when \LaTeX\ or +% pdf\LaTeX\ is run. +% +% If you are using a teTeX-based system (which is true of most Unix +% installations, and most MacOS\,X installations), then you can +% determine the style-file and \metafont\ search paths using the commands +% \begin{verbatim} +% % kpsepath tex +% % kpsepath mf +% \end{verbatim} +% respectively. After you have installed them, you will probably need +% to give the command \texttt{mktexlsr} to rebuild the paths database, +% and you can confirm that the files are findable with the commands +% \texttt{kpsewhich feyn.sty} and \texttt{kpsewhich feyn10.mf}. +% +% Users of other systems will have similar mechanisms +% for finding and confirming the search paths (and if anyone wishes to +% send me details, I can add the details to this document). +% +% \section{Acknowledgements} +% +% Thanks to Purnendu Chakraborty, Fabio Correa, and Bryan Chen for +% suggestions and testing at various times. +% +% +% \StopEventually{} +% +% \section{Implementation} +% \begin{macrocode} +%<*package> +% \end{macrocode} +% +% Start off with the available options. +% +% A wrinkle is that the |{align}| environment, which is defined +% in the amsmath package, reads its contents before processing them, +% which means that a `!' within the environment has its catcode fixed +% before it can be changed by |\feyn| or |\diagram|. To handle this +% situation, we support \Lopt{globalbang} and \Lopt{noglobalbang} +% options, which cause the `!' character to be redefined globally or +% not. The default depends on whether the amsmath package was loaded +% before this one was. +% \begin{macrocode} +\newif\ifFeyn@globalbang +\@ifpackageloaded{amsmath}{\Feyn@globalbangtrue}{\Feyn@globalbangfalse} +\DeclareOption{globalbang}{\Feyn@globalbangtrue} +\DeclareOption{noglobalbang}{\Feyn@globalbangfalse} +% \end{macrocode} +% +% Now process the options specified in the package command. +% \begin{macrocode} +\ProcessOptions +% \end{macrocode} +% +% Declare the feyn math font family. The |\skewchar| for this font +% (see the \TeX book, p431) can be set to zero, since it's a +% completely upright maths font (the least of its peculiarities). We +% don't have the font in much of a range of sizes. +% \begin{macrocode} +\DeclareFontFamily{OMS}{feyn}{\skewchar\font'000} +\DeclareFontShape{OMS}{feyn}{m}{n}{% + <-10.5>feyn10% + <10.5-11.5>feyn11% + <11.5-15>feyn12% + <15-21>feyn18% + <21->feyn24% + }{} +% \end{macrocode} +% +% Now do the same for the text-size fonts, declaring the textfeyn math +% font family. +% \begin{macrocode} +\DeclareFontFamily{OMS}{textfeyn}{\skewchar\font'000} +\DeclareFontShape{OMS}{textfeyn}{m}{n}{% + <-10.5>feyntext10% + <10.5-11.5>feyntext11% + <11.5-15>feyntext12% + <15-21>feyntext18% + <21->feyntext24% + }{} +% \end{macrocode} +% +% XXX It would be nice to arrange things so that superscripts in +% the feyn font were drawn from cmmi7, or something. The original +% feyn.sty arranged this with |\scriptfont\diagramfam=\ninmi|, but +% it's not clear what the analogue in the FSS is. +% +% Now declare the `feynman' symbol font, and make the command |\feyn| +% set its argument in that font. Similarly have |\Feyn| invoke the +% feynman symbol font for the text sizes. +% \begin{macrocode} +\DeclareSymbolFont{feynman}{OMS}{feyn}{m}{n} +\DeclareSymbolFontAlphabet{\feyn@alphabet}{feynman} +\DeclareSymbolFont{textfeynman}{OMS}{textfeyn}{m}{n} +\DeclareSymbolFontAlphabet{\Feyn@alphabet}{textfeynman} +% \end{macrocode} +% +% Now use these font-setting commands, defining |\feyn| and |\Feyn| to +% switch to the given alphabets, defining ! as a shortcut for +% |\momentum| (so that |!{x}{y}| is interpreted as |\momentum{x}{y}|). +% We have to make sure that the `!' character produces that character +% everywhere except within |\feyn| or |\Feyn|. How we do this depends +% on the value of the |\ifFeyn@globalbang| switch. +% \begin{macro}{\feyn} +% \begin{macrocode} +\ifFeyn@globalbang + \catcode`\!=\active + \def!{\char`\!} % ! produces this character everywhere + \def\feyn{\begingroup + \let!\momentum % ...except within \feyn + \feyn@} + \def\Feyn{\begingroup + \let!\momentum % ...or \Feyn + \Feyn@} +\else + {\catcode`\!=\active % only make ! active within \feyn + \gdef\feyn{% + \begingroup % ends in \feyn@ + \catcode`\!=\active + \let!=\momentum + \feyn@} + \gdef\Feyn{% + \begingroup % ends in \Feyn@ + \catcode`\!=\active + \let!=\momentum + \Feyn@}} +\fi +\def\feyn@#1{\feyn@alphabet{#1}\endgroup} +\def\Feyn@#1{\Feyn@alphabet{#1}\endgroup} +% \end{macrocode} +% \end{macro} +% +% +% Now get the size of the `module' (the length of the fermion), and the +% height of the math-axis, from the font. You might think that the +% math-axis is obtainable from |\fontdimen22| of the font, but we do +% not load it as an |{operator}| font when we invoke +% |\DeclareSymbolFont|, so it does not have all 22 parameters that a +% symbol font (as the \TeX book uses the term, rather than \LaTeXe's +% NFSS). I confess I don't \emph{really} understand the ins and outs +% of this, but this route is robust and not wrong. +% +% The character |"7F| in the feyn font is blank, but has width +% |module#| and height |a#| (using the dimensions of the font +% file). Use this to set the |\feyn@module| and |\feyn@maxis|. Note +% that the `module' used in this package file is twice the module used +% in the \metafont\ files themselves. +% \begin{macro}{\feyn@module} +% \begin{macro}{\feyn@maxis} +% \begin{macrocode} +\DeclareMathSymbol{\FeynSpaceChar}{\mathord}{feynman}{"7F} +\setbox0=\hbox{$\FeynSpaceChar$} +\newdimen\feyn@mfmodule \feyn@mfmodule=\wd0 +\newdimen\feyn@module \feyn@module=2\wd0 +\newdimen\feyn@maxis \feyn@maxis=\ht0 +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\Diagram} +% Define the |\Diagram| macro, which lays out a semi-complicated +% diagram in 2-d. +% \begin{macrocode} +{\catcode`\!=\active + \gdef\Diagram{% + \begingroup % ends in \Diagram@ + \catcode`\!=\active + \let!\momentum + \Diagram@}} +\def\Diagram@#1{\setbox0=\hbox{\vbox{\offinterlineskip \let\\\cr + \halign{&$\displaystyle\feyn{##}$\cr #1\crcr}}}% +% \end{macrocode} +% At this point, |\box0| has zero depth. It must be an hbox, because +% we're fiddling with its height within a enclosing |\vbox|. See the +% \TeX book pp 388--389. This takes advantage of appx G, rule 8 to +% move box0 down by the height of the math axis. The construction +% |\dp0 = -2\fontdimen22 \textfont2| also works, in the sense of +% moving the box onto the math axis, but makes the box too small, +% which means that surrounding text can encroach. +% \begin{macrocode} + \@tempdima=\ht0 + \advance\@tempdima by 2\feyn@maxis \ht0=\@tempdima + \vcenter{\box0}% + \endgroup}% end group begun in \Diagram +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\maxis} +% Raise the argument to the math axis. +% \begin{macrocode} +\def\maxis#1{\raise\feyn@maxis \hbox{$#1$}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\momentum} +% Manages annotation of characters. |\momentum{ch}{text}| sets the character +% ch, which may be a ligature, and puts the given text at the recommended +% annotation position for that character. |\momentum[pos]{ch}{text}| +% is the same, except that the optional argument indicates the +% position relative to the annotation position. It must be one of +% `top', `urt', `lrt', `bot', `llft' or `ulft'. +% +% First, some support macros. +% +% |\feyn@nudge| is a small amount +% which is added to the annotation positions, to keep them clear of the +% point they're annotating. +% \begin{macrocode} +\newdimen\feyn@nudge \feyn@nudge=\feyn@mfmodule \divide\feyn@nudge by 3 +% \end{macrocode} +% +% The various |\feyn@pos@<x>| macros position their third argument +% adjacent to a point offset by an amount |(#1,#2)| from the current +% position. The macro |\feyn@pos@top| has the third argument adjacent +% and above the point, |\feyn@pos@urt| has it to the upper-right, and +% so on. +% \begin{macrocode} +\def\feyn@pos@top#1#2#3{% top + \leavevmode + \@tempdima=#2\feyn@mfmodule \advance\@tempdima\feyn@nudge + \setbox1=\hbox{\raise \@tempdima\hbox to 0pt{% + \hskip #1\feyn@mfmodule + \hbox to 0pt{\hss$\scriptstyle #3$\hss}\hss}}% + \ht1=0pt \dp1=0pt \box1} +\def\feyn@pos@urt#1#2#3{% urt + \leavevmode + \@tempdima=#2\feyn@mfmodule \advance\@tempdima\feyn@nudge + \setbox1=\hbox{\raise \@tempdima\hbox to 0pt{% + \hskip #1\feyn@mfmodule \hskip\feyn@nudge $\scriptstyle #3$\hss}}% + \ht1=0pt \dp1=0pt \box1} +\def\feyn@pos@lrt#1#2#3{% lrt + \leavevmode + \setbox0=\hbox to 0pt{\hskip\feyn@nudge $\scriptstyle #3$\hss}% + \@tempdima=#2\feyn@mfmodule + \advance\@tempdima -\ht0 + \advance\@tempdima-\feyn@nudge + \setbox1=\hbox{\raise \@tempdima\hbox to 0pt{% + \hskip #1\feyn@mfmodule \box0\hss}}% + \ht1=0pt \dp1=0pt \box1} +\def\feyn@pos@bot#1#2#3{% bot + \leavevmode + \setbox0=\hbox to 0pt{\hss$\scriptstyle #3$\hss}% + \@tempdima=#2\feyn@mfmodule + \advance\@tempdima -\ht0 + \advance\@tempdima-\feyn@nudge + \setbox1=\hbox{\raise \@tempdima\hbox to 0pt{% + \hskip #1\feyn@mfmodule \box0\hss}}% + \ht1=0pt \dp1=0pt \box1} +\def\feyn@pos@llft#1#2#3{% llft + \leavevmode + \setbox0=\hbox to 0pt{\hss$\scriptstyle #3$\hskip\feyn@nudge}% + \@tempdima=#2\feyn@mfmodule + \advance\@tempdima -\ht0 + \advance\@tempdima-\feyn@nudge + \setbox1=\hbox{\raise \@tempdima\hbox to 0pt{% + \hskip #1\feyn@mfmodule \box0\hss}}% + \ht1=0pt \dp1=0pt \box1} +\def\feyn@pos@ulft#1#2#3{% ulft + \leavevmode + \@tempdima=#2\feyn@mfmodule \advance\@tempdima\feyn@nudge + \setbox1=\hbox{\raise \@tempdima\hbox to 0pt{% + \hskip #1\feyn@mfmodule + \hbox to 0pt{\hss$\scriptstyle #3$\hskip\feyn@nudge}\hss}}% + \ht1=0pt \dp1=0pt \box1} +% \end{macrocode} +% +% Now include the definitions of the annotation positions, as extracted +% from the Metafont file. These define macros |\feyn@ann@#1|, +% where argument |#1| is a given character (or ligature) at the +% position |(#2,#3)|, using the various |\feyn@pos@<x>| macros. The +% |<x>| is either the value of argument |#4|, or the contents of +% |\@tempa| if that has been set non-empty by |\momentum@|. +% \begin{macrocode} +\def\feyn@annotation#1#2#3#4{% + \expandafter\def\csname feyn@ann@#1\endcsname##1{% + \csname feyn@pos@\ifx\@tempa\@empty #4\else\@tempa\fi\endcsname + {#2}{#3}{##1}% + #1}} +% \end{macrocode} +% Now read in the collection of annotation positions. These are +% generated by the \texttt{./parse-ligtables} script, and inserted +% into this file by the Makefile when \file{feyn.dtx} is generated. +% \begin{macrocode} +% @FEYNANNOTATIONS@ +% commands generated by parse-ligtables... +\feyn@annotation{f}{0.99974}{0.35}{top}% "f" +\feyn@annotation{fA}{0.99974}{0.35}{top}% "F" +\feyn@annotation{fV}{0.99974}{0.35}{top}% 6 +\feyn@annotation{fu}{0.70692}{0.95692}{ulft}% "e" +\feyn@annotation{fuA}{0.70692}{0.95692}{ulft}% "E" +\feyn@annotation{fuV}{0.70692}{0.95692}{ulft}% 5 +\feyn@annotation{fd}{0.70692}{0.95692}{urt}% "d" +\feyn@annotation{fdA}{0.70692}{0.95692}{urt}% "D" +\feyn@annotation{fdV}{0.70692}{0.95692}{urt}% 4 +\feyn@annotation{fv}{0}{1.24974}{urt}% "b" +\feyn@annotation{fvA}{0}{1.24974}{urt}% "B" +\feyn@annotation{fvV}{0}{1.24974}{urt}% 2 +\feyn@annotation{m}{0.99974}{0.32802}{top}% "m" +\feyn@annotation{mA}{0.99974}{0.32802}{top}% "M" +\feyn@annotation{mV}{0.99974}{0.32802}{top}% 13 +\feyn@annotation{ms}{0.49986}{0.32802}{top}% 11 +\feyn@annotation{fl}{0}{1.85}{top}% "l" +\feyn@annotation{flA}{0}{1.85}{top}% "L" +\feyn@annotation{flV}{0}{1.85}{top}% 12 +\feyn@annotation{flu}{0}{-1.35}{bot}% "n" +\feyn@annotation{fluA}{0}{-1.35}{bot}% "N" +\feyn@annotation{fluV}{0}{-1.35}{bot}% 14 +\feyn@annotation{flS}{0}{1.23335}{top}% "o" +\feyn@annotation{flSA}{0}{1.23335}{top}% "O" +\feyn@annotation{flSV}{0}{1.23335}{top}% 15 +\feyn@annotation{flSu}{0}{-0.90001}{bot}% "w" +\feyn@annotation{flSuA}{0}{-0.90001}{bot}% "W" +\feyn@annotation{flSuV}{0}{-0.90001}{bot}% 23 +\feyn@annotation{g}{0.99974}{0.45}{top}% "g" +\feyn@annotation{gA}{0.99974}{0.45}{top}% "G" +\feyn@annotation{gV}{0.99974}{0.45}{top}% 7 +\feyn@annotation{gu}{0.70692}{0.95692}{ulft}% "u" +\feyn@annotation{guA}{0.70692}{0.95692}{ulft}% "U" +\feyn@annotation{guV}{0.70692}{0.95692}{ulft}% 21 +\feyn@annotation{gd}{0.70692}{0.95692}{urt}% "v" +\feyn@annotation{gdA}{0.70692}{0.95692}{urt}% "V" +\feyn@annotation{gdV}{0.70692}{0.95692}{urt}% 22 +\feyn@annotation{gv}{0}{1.24974}{urt}% "}" +\feyn@annotation{gvA}{0}{1.24974}{urt}% "]" +\feyn@annotation{gvV}{0}{1.24974}{urt}% 29 +\feyn@annotation{g1}{-1.41422}{1.66422}{ulft}% "q" +\feyn@annotation{g1A}{-1.41422}{1.66422}{ulft}% "Q" +\feyn@annotation{g1V}{-1.41422}{1.66422}{ulft}% 17 +\feyn@annotation{g2}{1.41422}{1.66422}{urt}% "r" +\feyn@annotation{g2A}{1.41422}{1.66422}{urt}% "R" +\feyn@annotation{g2V}{1.41422}{1.66422}{urt}% 18 +\feyn@annotation{g3}{1.41422}{-1.16422}{lrt}% "s" +\feyn@annotation{g3A}{1.41422}{-1.16422}{lrt}% "S" +\feyn@annotation{g3V}{1.41422}{-1.16422}{lrt}% 19 +\feyn@annotation{g4}{-1.41422}{-1.16422}{llft}% "t" +\feyn@annotation{g4A}{-1.41422}{-1.16422}{llft}% "T" +\feyn@annotation{g4V}{-1.41422}{-1.16422}{llft}% 20 +\feyn@annotation{gl}{0}{2.25}{urt}% "y" +\feyn@annotation{glA}{0}{2.25}{urt}% "Y" +\feyn@annotation{glV}{0}{2.25}{urt}% 25 +\feyn@annotation{glu}{0}{-1.75}{llft}% "z" +\feyn@annotation{gluA}{0}{-1.75}{llft}% "Z" +\feyn@annotation{gluV}{0}{-1.75}{llft}% 26 +\feyn@annotation{glB}{0}{2.91667}{urt}% "{" +\feyn@annotation{glBA}{0}{2.91667}{urt}% "[" +\feyn@annotation{glBV}{0}{2.91667}{urt}% 27 +\feyn@annotation{glS}{0}{1.5833}{llft}% "|" +\feyn@annotation{glSA}{0}{1.5833}{llft}% "\" +\feyn@annotation{glSV}{0}{1.5833}{llft}% 28 +\feyn@annotation{h}{0.99974}{0.25}{top}% "h" +\feyn@annotation{hA}{0.99974}{0.25}{top}% "H" +\feyn@annotation{hV}{0.99974}{0.25}{top}% 8 +\feyn@annotation{hu}{0.70464}{0.95464}{ulft}% "i" +\feyn@annotation{huA}{0.70464}{0.95464}{ulft}% "I" +\feyn@annotation{huV}{0.70464}{0.95464}{ulft}% 9 +\feyn@annotation{hd}{0.70464}{0.95464}{urt}% "j" +\feyn@annotation{hdA}{0.70464}{0.95464}{urt}% "J" +\feyn@annotation{hdV}{0.70464}{0.95464}{urt}% 10 +\feyn@annotation{hs}{0.49986}{0.25}{top}% "K" +\feyn@annotation{c}{0.65044}{0.90044}{top}% "c" +\feyn@annotation{p}{0.65}{0.9}{top}% "p" +\feyn@annotation{P}{0.65044}{0.90044}{top}% "P" +\feyn@annotation{x}{0}{0.55641}{top}% "x" +% \end{macrocode} +% +% +% The |\momentum| macro (finally) invokes its worker macro +% |\momentum@|, defaulting that macro's optional argument to empty. +% In fact the macro |\momentum| should be only rarely +% invoked, since ! is made active and bound to it within |\feyn|. +% +% The |\momentum@| macro takes two arguments, and expands to a call to +% macro |\feyn@ann@#1|, acting on the second argument. This macro is +% one of those defined by |\feyn@annotation| above. There is an +% optional argument, giving the position for the annotation, if it has +% turned out that the default position for this character is +% inappropriate. The adjusted position may be one of `top', `urt', +% `lrt', `bot', `llft' or `ulft'. +% \begin{macrocode} +\def\momentum{\@ifnextchar[\momentum@{\momentum@[]}} +\def\momentum@[#1]#2#3{% + \def\@tempa{#1} + \ifx\@tempa\@empty \else + \@ifundefined{feyn@pos@#1} + {\@latex@error{No annotation position #1}% + {You cannot call \string\momentum[#1]{...}^^J(must be one + of top, urt, lrt, bot, llft, ulft)}% + #2}% + \fi + \@ifundefined{feyn@ann@#2}% + {\@latex@error{No annotation defined for #2}% + {You cannot call \string\momentum{#2}{...}}% + #2}% + {\csname feyn@ann@#2\endcsname{#3}}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\vertexlabel} +% The command |\vertexlabel^{text}| or |\vertexlabel_{text}| positions +% the |{text}| in maths mode either above or below, respectively, the +% current position. It's used between characters to label a vertex. +% \begin{macrocode} +\def\vertexlabel#1#2{\setbox0=\hbox to 0pt{\hss$\scriptstyle #2$\hss} + \ifcat #1^ + \vbox to 0pt{\vss\box0\nointerlineskip\kern2\feyn@maxis} + \else\ifcat #1_ + \vbox to 0pt{\kern\feyn@maxis\nointerlineskip\box0\vss} + \else + \PackageError{feyn} + {Bad arguments for \string\vertexlabel} + {Usage: \string\vertexlabel^{text} or \string\vertexlabel_{text}} + \fi\fi + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\annotate} +% The |\annotate| command takes $x$ and $y$ coordinates in units of +% modules, and text (in math mode) to be placed on a |\diagram|. +% Deprecated, now that the characters have annotation built in to them. +% \begin{macrocode} +\def\annotate#1#2#3{\vcenter to 0pt{\vss + \hbox to 0pt{\hskip #1\feyn@module\hbox to 0pt{\hss$\scriptstyle #3$\hss}\hss + }\vskip #2\feyn@module}} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\tannotate} +% The |\tannotate| command is just the same, but the annotating text +% is in horizontal mode. +% \begin{macrocode} +\def\tannotate#1#2#3{\vcenter to 0pt{\vss + \hbox to 0pt{\hskip #1\feyn@module\hbox to 0pt{\hss #3\hss}\hss + }\vskip #2\feyn@module}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\feynstrut} +% The macro |\feynstrut#1#2| defines |\strut| to have a height +% |#1| modules, and depth |#2| modules. +% \begin{macrocode} +\def\feynstrut#1#2{\setbox\strutbox=\hbox{\vrule + height #1\feyn@module depth #2\feyn@module width 0pt}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\arrow} +% The command |\arrow#1#2#3| puts an arrow of gradient |#3|${}\times 45^\circ$ +% at position |(#1,#2)|(modules). This doesn't work -- the |\char| +% results in a |\rm| character appearing, rather than a |\feyn| +% character. Putting in a symbol like `+' has the same effect, but +% putting in, say, `a' works as expected. In other words, it's to do +% with the character's mathcode, and the |\char| +% should be replaced by a |\mathchar"7?\@tempcnta| somehow. The +% problem is that that depends on the parameter |\fam| having a +% suitable value. It's not clear to me what this corresponds to in +% \LaTeXe. See the \TeX book, chapter 17. +% \begin{macrocode} +\def\arrow#1#2#3{\@latex@error{Do not use the \string\arrow macro any more}{}} +% \end{macrocode} +% \end{macro} +% +% Declare symbols. All of these are ligatures. +% \begin{macrocode} +\DeclareMathSymbol{\wfermion}{0}{feynman}{"64} +%\DeclareMathSymbol{\Wfermion}{0}{feynman}{"44} +\DeclareMathSymbol{\hfermion}{0}{feynman}{"6B} +%\DeclareMathSymbol{\Hfermion}{0}{feynman}{"4B} +\DeclareMathSymbol{\shfermion}{0}{feynman}{"6C} +%\DeclareMathSymbol{\sHfermion}{0}{feynman}{"4C} +\DeclareMathSymbol{\whfermion}{0}{feynman}{"6D} +%\DeclareMathSymbol{\wHfermion}{0}{feynman}{"4D} +\DeclareMathSymbol{\gvcropped}{0}{feynman}{"07} +% \end{macrocode} +% But the following are not ligatures. +% \begin{macrocode} +\DeclareMathSymbol{\bigbosonloop}{0}{feynman}{"7B} +%\DeclareMathSymbol{\Bigbosonloop}{7}{feynman}{"21} +\DeclareMathSymbol{\smallbosonloop}{0}{feynman}{"7C} +\DeclareMathSymbol{\bigbosonloopA}{0}{feynman}{"5B} +\DeclareMathSymbol{\smallbosonloopA}{0}{feynman}{"5C} +\DeclareMathSymbol{\bigbosonloopV}{0}{feynman}{"1B} +\DeclareMathSymbol{\smallbosonloopV}{0}{feynman}{"1C} +% \end{macrocode} +% +% +% \Finale +\endinput |