%% %% This is file `feynmp.sty', %% generated with the docstrip utility. %% %% The original source files were: %% %% feynmf.dtx (with options: `style,mp') %% %% Copyright (C) 1989, 1990, 1992-1995 by Thorsten.Ohl@Physik.TH-Darmstadt.de %% %% This file is NOT the source for feynmf, because almost all comments %% have been stripped from it. It is NOT the preferred form of feynmf %% for making modifications to it. %% %% Therefore you can NOT redistribute and/or modify THIS file. You can %% however redistribute the complete source (feynmf.dtx and feynmf.ins) %% and/or modify it under the terms of the GNU General Public License as %% published by the Free Software Foundation; either version 2, or (at %% your option) any later version. %% %% As a special exception, you can redistribute parts of this file for %% the electronic distribution of scientific papers, provided that you %% include a short note pointing to the complete source. %% %% Feynmf 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., 675 Mass Ave, Cambridge, MA 02139, USA. %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% \CheckSum{924} %% \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 \~} %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \def\fileversion{v1.08} \NeedsTeXFormat{LaTeX2e} {\def\RCS#1#2\endRCS{% \ifx$#1% \@RCS $#2 \endRCS \else \@RCS $*: #1#2$ \endRCS \fi}% \def\@RCS $#1: #2,v #3 #4 #5 #6 #7$ \endRCS{% \gdef\filename{#2}% \gdef\filerevision{#3}% \gdef\filedate{#4}% \gdef\filemaintainer{#6}}% \RCS $Id: feynmf.dtx,v 1.30 1996/12/02 09:20:36 ohl Exp $ \endRCS}% \ProvidesPackage{feynmp}[\filedate\space\fileversion\space LaTeX/MetaPost Feynman Diagram Package (\filemaintainer)] \let\fmf@noexpandoff\relax \DeclareOption{pre-1.03}{% \PackageWarning{feynmf}{% Pre v1.03 compatibility can clash with font loading} \def\fmf@noexpandoff{\let\noexpand\relax}} \DeclareOption{errorstop}{\let\@interactionmode\errorstopmode} \DeclareOption{scroll}{\let\@interactionmode\scrollmode} \DeclareOption{nonstop}{\let\@interactionmode\nonstopmode} \DeclareOption{batch}{\let\@interactionmode\batchmode} \let\@interactionmode\errorstopmode \DeclareOption*{\PassOptionsToPackage{\CurrentOption}{graphics}} \ProcessOptions \RequirePackage{graphics}[1994/12/15] \let\mdqrestore\relax \@ifundefined{mdqoff}{}{% \mdqoff \let\mdqrestore\mdqon} \def\fmfcmd#1{% \if@fmfio \immediate\write\@outfmf{#1}% \fi \ignorespaces} \newif\if@fmfio \@fmfiotrue \newwrite\@outfmf \newtoks\fmfbuf@ {\catcode`\%=11\gdef\p@rcent{%}} \edef\fmf@revision{\filerevision} \def\fmffile#1{% \def\thefmffile{#1}% \equaltojobname{\thefmffile}{% \errhelp={The argument of \fmffile MUST NOT be identical to the^^J% name of your main input file! I will use fmfdefault.mf^^J% this time around, but you'd better fix your code now!}% \errmessage{Invalid arument of \string\fmffile!}% \def\thefmffile{fmfdefault}}{}% \if@fmfio \@ifundefined{ifmeasuring@}% {}% {\def\if@fmfio{\ifmeasuring@\else}}% \immediate\openout\@outfmf=\thefmffile.mp\relax \fmfcmd{\p@rcent\space \thefmffile.mp -- do not edit, % generated automatically by \jobname.tex^^J% input feynmp^^J% require_RCS_revision "\fmf@revision";}% \fi \setcounter{fmfgraph}{0}} \let\thefmffile\relax \newcounter{fmfgraph} \def\equaltojobname#1#2#3{% \edef\@tempa{#1}% \edef\@tempa{\meaning\@tempa}% \edef\@tempb{\jobname}% \edef\@tempb{\meaning\@tempb}% \ifx\@tempa\@tempb #2 \else #3 \fi} \def\endfmffile{% \fmfcmd{\p@rcent\space the end.^^J% end.^^J% endinput;}% \let\thefmffile\relax \if@fmfio \immediate\closeout\@outfmf \fi} {\catcode`\#=11\gdef\sh@rp{#}% \catcode`\"=11\gdef\dqu@te{"}} \def\fmf@graph#1#2{% \ifx\thefmffile\relax \errhelp={Outside a fmffile environment, I have no clue as to where^^J% the METAFONT commands should go. I will use fmfdefault.mf^^J% for this graph, but you'd better fix your code!}% \errmessage{I detected a fmfgraph environment outside of fmffile}% \fmffile{fmfdefault} \fi \global\expandafter\advance\csname c@fmfgraph\endcsname \@ne \fmfcmd{beginchar(\thefmfgraph, #1*\the\unitlength\sh@rp, % #2*\the\unitlength\sh@rp, 0);^^J% \dqu@te feynmf: \thefmfgraph\dqu@te;}% \fmfcmd{LaTeX_unitlength:=\the\unitlength;}% \begin{fmfsubgraph}(0,0)(w,h) \fmfinit \fmfpen{thin}} \def\fmfgraph(#1,#2){% \fmf@graph{#1}{#2}% \def\fmfkeep##1{\fmf@keep{#1}{#2}{##1}}% \leavevmode \IfFileExists{\thefmffile.\thefmfgraph}% {\includegraphics{\thefmffile.\thefmfgraph}}% {\typeout{% feynmp: File \thefmffile.\thefmfgraph\space not found:^^J% feynmp: Process \thefmffile.mp with MetaPost and then % reprocess this file.}}% \ignorespaces} \def\endfmfgraph{% \fmffreeze \fmfdraw \end{fmfsubgraph} \fmfcmd{endchar;}% \def\fmfkeep##1{\fmf@nokeep}} \def\fmfchar{\@nameuse{fmfgraph}} \def\endfmfchar{\@nameuse{endfmfgraph}} \@namedef{fmfgraph*}(#1,#2){% \begin{picture}(#1,#2) \fmf@graph{#1}{#2}% \def\fmfkeep##1{\fmf@keepstar{#1}{#2}{##1}}% \IfFileExists{\thefmffile.\thefmfgraph}% {\put(0,0){\includegraphics{\thefmffile.\thefmfgraph}}}% {\typeout{% feynmp: File \thefmffile.\thefmfgraph\space not found:^^J% feynmp: Process \thefmffile.mp with MetaPost and then % reprocess this file.}}% \ignorespaces} \@namedef{endfmfgraph*}{% \endfmfgraph \if@fmfio {\catcode`\%=14\relax \fmf@noexpandoff \InputIfFileExists{\thefmffile.t\thefmfgraph}{}{% \typeout{% feynmf: Label file \thefmffile.t\thefmfgraph\space not found:^^J% feynmf: Process \thefmffile.mp with MetaPost and then % reprocess this file.}}}% \fi \end{picture}} \@namedef{fmfchar*}{\@nameuse{fmfgraph*}} \@namedef{endfmfchar*}{\@nameuse{endfmfgraph*}} \def\fmfkeep#1{\fmf@nokeep} \def\fmf@nokeep{% \errhelp={There's nothing to \string\fmfkeep!}% \errmessage{feynmf: \string\fmfkeep\space outside of `fmfgraph'!}} \def\fmf@keep#1#2#3{% \global\@namedef{fmf@k:e:#3}{\begin{fmfgraph}(#1,#2)\end{fmfgraph}}% \global\e@namedef{fmf@k:f:#3}{\thefmffile}% \global\e@namedef{fmf@k:c:#3}{\thefmfgraph}} \def\fmf@keepstar#1#2#3{% \global\@namedef{fmf@k:e:#3}{\begin{fmfgraph*}(#1,#2)\end{fmfgraph*}}% \global\e@namedef{fmf@k:f:#3}{\thefmffile}% \global\e@namedef{fmf@k:c:#3}{\thefmfgraph}} \def\e@namedef#1{\expandafter\edef\csname #1\endcsname} \def\fmfreuse#1{% \@ifundefined{fmf@k:e:#1}% {\typeout{% feynmf: \string\fmfreuse: % missing \string\fmfkeep\space for `#1'!}}% {\edef\thefmffile{\@nameuse{fmf@k:f:#1}}% \@nameuse{c@fmfgraph}\@nameuse{fmf@k:c:#1}% \advance\@nameuse{c@fmfgraph}-1% \def\fmfcmd##1{}% \@nameuse{fmf@k:e:#1}}} \def\fmfframe(#1,#2)(#3,#4)#5{% \leavevmode \hbox{\vbox{\vskip#2\unitlength\par \hbox{\hskip#1\unitlength#5\hskip#3\unitlength}\par \vskip#4\unitlength}}} \def\fmfpen#1{\fmfcmd{pickup pencircle scaled #1;}} \def\fmfsubgraph(#1,#2)(#3,#4){\fmfcmd{subgraph (#1, #2, #3, #4);}} \def\endfmfsubgraph{\fmfcmd{endsubgraph;}} \def\Compose#1#2#3{#1{#2{#3}}} \def\gobblefalse\else\gobbletrue\fi#1#2{\fi#1} \def\gobbletrue\fi#1#2{\fi#2} \def\TeXif#1{#1\gobblefalse\else\gobbletrue\fi} \def\Nil#1#2{#2} \def\Cons#1#2#3#4{#3{#1}{#2}} \def\Singleton#1{\Cons{#1}\Nil} \def\Foldr#1#2#3{#3{\Foldr@{#1}{#2}}{#2}} \def\Foldr@#1#2#3#4{#1{#3}{\Foldr{#1}{#2}{#4}}} \def\Map#1{\Foldr{\Compose\Cons{#1}}\Nil} \def\Unlistize#1{#1\Unlistize@{}} \def\Unlistize@#1{#1\Foldr\Commaize{}} \def\Commaize#1#2{, #1#2} \def\Listize#1{\Listize@#1,\relax @@@} \def\Listize@#1,#2@@@{% \TeXif{\ifx\relax#2}% {\Singleton{#1}}% {\Cons{#1}{\Listize@#2@@@}}} \def\fmfpfx@#1{__#1} \def\fmfpfx#1{\Unlistize{\Map\fmfpfx@{\Listize{#1}}}} \def\fmfwizard{\fmfcmd{feynmfwizard := true;}} \def\fmfnowizard{\fmfcmd{feynmfwizard := false;}} \def\fmfshrink#1{\fmfcmd{shrink (#1);}} \def\endfmfshrink{\fmfcmd{endshrink;}} \def\fmfinit{\fmfcmd{vinit;}} \def\fmf#1#2{% \fmfbuf@={#1}% \fmfcmd{vconnect ("\the\fmfbuf@", \fmfpfx{#2});}} \def\fmfn#1#2#3{ \fmfbuf@={#1}% \fmfcmd{vconnectn ("\the\fmfbuf@", \fmfpfx{#2}, #3);}} \def\fmfcyclen#1#2#3{% \fmfbuf@={#1}% \fmfcmd{vcyclen ("\the\fmfbuf@", \fmfpfx{#2}, #3);}} \def\fmfrcyclen#1#2#3{% \fmfbuf@={#1}% \fmfcmd{vrcyclen ("\the\fmfbuf@", \fmfpfx{#2}, #3);}} \def\fmfforce#1#2{\fmfcmd{vforce ((#1), \fmfpfx{#2});}} \def\fmfshift#1#2{\fmfcmd{vshift ((#1), \fmfpfx{#2});}} \def\fmffixed#1#2{\fmfcmd{vconstraint ((#1), \fmfpfx{#2});}} \def\fmffixedx#1#2{\fmfcmd{vconstraint (((#1),whatever), \fmfpfx{#2});}} \def\fmffixedy#1#2{\fmfcmd{vconstraint ((whatever,(#1)), \fmfpfx{#2});}} \def\fmfpoly#1#2{% \fmfbuf@={#1}% \fmfcmd{vpolygon ("\the\fmfbuf@", \fmfpfx{#2});}} \def\fmfpolyn#1#2#3{% \fmfbuf@={#1}% \fmfcmd{vpolygonn ("\the\fmfbuf@", \fmfpfx{#2}, #3);}} \def\fmfrpolyn#1#2#3{% \fmfbuf@={#1}% \fmfcmd{vrpolygonn ("\the\fmfbuf@", \fmfpfx{#2}, #3);}} \def\fmflabel#1#2{% \fmfbuf@={#1}% \fmfcmd{vlabel ("\the\fmfbuf@", \fmfpfx{#2});}} \def\fmfv#1#2{% \fmfbuf@={#1}% \fmfcmd{vvertex ("\the\fmfbuf@", \fmfpfx{#2});}} \def\fmfvn#1#2#3{% \fmfbuf@={#1}% \fmfcmd{vvertexn ("\the\fmfbuf@", \fmfpfx{#2}, #3);}} \def\fmfblob#1#2{\fmfcmd{vblob ((#1), \fmfpfx{#2});}} \def\fmfdot#1{\fmfcmd{vdot (\fmfpfx{#1});}} \def\fmfblobn#1#2{\fmfcmd{vblobn (\fmfpfx{#1}, #2);}} \def\fmfdotn#1#2{\fmfcmd{vdotn (\fmfpfx{#1}, #2);}} \def\fmfleft#1{\fmfcmd{vleft (\fmfpfx{#1});}} \def\fmfright#1{\fmfcmd{vright (\fmfpfx{#1});}} \def\fmfbottom#1{\fmfcmd{vbottom (\fmfpfx{#1});}} \def\fmftop#1{\fmfcmd{vtop (\fmfpfx{#1});}} \let\fmfincoming\fmfleft \let\fmfoutgoing\fmfright \def\fmfsurround#1{\fmfcmd{vsurround (\fmfpfx{#1});}} \def\fmfcurved{\fmfcmd{curved_galleries;}} \def\fmfstraight{\fmfcmd{straight_galleries;}} \let\fmfcurvedgalleries\fmfcurved \let\fmfstraightgalleries\fmfstraight \def\fmfleftn#1#2{\fmfcmd{vleftn (\fmfpfx{#1}, #2);}} \def\fmfrightn#1#2{\fmfcmd{vrightn (\fmfpfx{#1}, #2);}} \def\fmfbottomn#1#2{\fmfcmd{vbottomn (\fmfpfx{#1}, #2);}} \def\fmftopn#1#2{\fmfcmd{vtopn (\fmfpfx{#1}, #2);}} \let\fmfincomingn\fmfleftn \let\fmfoutgoingn\fmfrightn \def\fmfsurroundn#1#2{\fmfcmd{vsurroundn (\fmfpfx{#1}, #2);}} \def\fmffor#1#2#3#4{\fmfcmd{for #1 = #2 step #3 until #4:}} \def\endfmffor{\fmfcmd{endfor}} \def\fmfgroup{\fmfcmd{begingroup}} \def\endfmfgroup{\fmfcmd{endgroup;}} \def\fmfset#1#2{\fmfcmd{save #1; #1:=#2;}} \def\fmffreeze{\fmfcmd{vfreeze;}} \let\fmfposition\fmffreeze \def\fmfi#1#2{% \fmfbuf@={#1}% \fmfcmd{idraw ("\the\fmfbuf@", #2);}} \def\fmfiv#1#2{% \fmfbuf@={#1}% \fmfcmd{ivertex ("\the\fmfbuf@", #2);}} \def\fmfipath#1{\fmfcmd{path #1;}} \def\fmfipair#1{\fmfcmd{pair #1;}} \def\fmfiset#1#2{\fmfcmd{#1:=#2;}} \def\fmfiequ#1#2{\fmfcmd{#1=#2;}} \def\fmfdraw{\fmfcmd{vdraw;}} \def\fmfL(#1,#2,#3)#4{\put(#1,#2){\makebox(0,0)[#3]{#4}}} \def\fmfdisplay{\fmfcmd{show_all_diagrams (100,100);}} \def\fmfstopdisplay{\fmfcmd{showstopping:=1;}\fmfdisplay} \def\fmftrace{\fmfcmd{vtracing:=true;}} \def\fmfnotrace{\fmfcmd{vtracing:=false;}} \mdqrestore \endinput %% %% End of file `feynmp.sty'.