diff options
author | Karl Berry <karl@freefriends.org> | 2006-01-12 23:55:40 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2006-01-12 23:55:40 +0000 |
commit | 9aa7845a2c40fb8e53d3365dceb7ede188abc6ff (patch) | |
tree | a44acffa7e572cc0d6c649497a2c682c174b0cdb /Master/texmf-dist/tex | |
parent | 18cdcb9aa7f522b888f8405ce0602d4b8e3a4925 (diff) |
feynmf
git-svn-id: svn://tug.org/texlive/trunk@911 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex')
-rw-r--r-- | Master/texmf-dist/tex/latex/feynmf/feynmf.sty | 422 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/feynmf/feynmp.sty | 337 |
2 files changed, 759 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/feynmf/feynmf.sty b/Master/texmf-dist/tex/latex/feynmf/feynmf.sty new file mode 100644 index 00000000000..c2261fb7867 --- /dev/null +++ b/Master/texmf-dist/tex/latex/feynmf/feynmf.sty @@ -0,0 +1,422 @@ +%% +%% This is file `feynmf.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% feynmf.dtx (with options: `style') +%% +%% 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{feynmf}[\filedate\space\fileversion\space + LaTeX/Metafont 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 +\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}}{}% + \batchmode + \global\expandafter\font% + \csname f@ynmf:\thefmffile\endcsname=\thefmffile + \@interactionmode + \expandafter\let\expandafter\f@ynmf\csname f@ynmf:\thefmffile\endcsname + \ifx\f@ynmf\nullfont + \def\f@ynmf{Feynman graph:}% + \IfFileExists{\thefmffile.mf}% + {\typeout{% + feynmf: File \thefmffile.tfm not found:^^J% + feynmf: Process \thefmffile.mf with METAFONT and then % + reprocess this file.}}% + {\typeout{% + feynmf: Files \thefmffile.mf and \thefmffile.tfm not found:^^J% + feynmf: This job will create \thefmffile.mf, process it % + later with METAFONT^^J% + feynmf: and then reprocess this file. Don't worry about a % + harmless premature^^J% + feynmf: MakeTeXTFM that might have failed just a moment ago!}}% + \else + \typeout{% + feynmf: File \thefmffile.tfm found.^^J% + feynmf: Nevertheless, if the picture has changed, % + reprocess \thefmffile.mf.^^J% + feynmf: If dimension have changed, reprocess \thefmffile.mf % + and \jobname.tex.}% + \fi + \if@fmfio + \@ifundefined{ifmeasuring@}% + {}% + {\def\if@fmfio{\ifmeasuring@\else}}% + \immediate\openout\@outfmf=\thefmffile.mf\relax + \fmfcmd{\p@rcent\space \thefmffile.mf -- do not edit, % + generated automatically by \jobname.tex^^J% + input feynmf^^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}}% +{\f@ynmf \char\value{fmfgraph}}% + \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}}% + \if@fmfio + \def\thefmfext{.log}% + \IfFileExists{\thefmffile.log}% + {}% + {\IfFileExists{\thefmffile.lis}% + {\def\thefmfext{.lis}}% + {}}% + {\catcode`\%=14\relax + \grepfile% + {\thefmfgraph}% + {\thefmffile\thefmfext}% + {\thefmffile.t\thefmfgraph}}% + \fi +\put(0,0){{\f@ynmf \char\value{fmfgraph}}}% + \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.mf with METAFONT 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}}% + \expandafter\let\expandafter\f@ynmf% + \csname f@ynmf:\thefmffile\endcsname + \@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\grepfile#1#2#3{% + \begingroup + \edef\pattern{\csname*grep*#1*\endcsname}% + \immediate\openin\grep@infile #2\relax + \ifeof\grep@infile + \else + \grep@outopenfalse + \endlinechar=-1 + \@sanitize + \catcode`\{=1 \catcode`\}=2 \catcode`\%=14 \relax + \loop + \read\grep@infile to \grep@lbuf + \ifeof\grep@infile + \grep@contfalse + \else + \grep@conttrue + \ifx\grep@lbuf\empty + \else + \expandafter\grep@aline\grep@lbuf\sentinel + \ifx\pattern\grep@tag + \ifgrep@outopen + \else + \immediate\openout\grep@outfile #3\relax + \immediate\write\grep@outfile{\p@rcent\space #3 % + -- generated automatically from #2}% + \immediate\write\grep@outfile{\p@rcent\space + Think twice before editing THIS file!}% + \grep@outopentrue + \fi + \immediate\write\grep@outfile{\grep@val}% + \fi + \fi + \fi + \ifgrep@cont + \repeat + \ifgrep@outopen + \immediate\closeout\grep@outfile + \fi + \fi + \immediate\closein\grep@infile + \endgroup} +\newread\grep@infile +\newwrite\grep@outfile +\newif\ifgrep@cont +\newif\ifgrep@outopen +\def\grep@aline#1#2\sentinel{% + \ifx:#1% + \grep@splitlbuf#2\sentinel + \else + \edef\grep@tag{\csname*grep*\endcsname}% + \def\grep@val{}% + \fi} +\def\grep@splitlbuf#1:#2\sentinel{% + \edef\grep@tag{\csname*grep*#1*\endcsname}% + \def\grep@val{#2}} +\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 `feynmf.sty'. diff --git a/Master/texmf-dist/tex/latex/feynmf/feynmp.sty b/Master/texmf-dist/tex/latex/feynmf/feynmp.sty new file mode 100644 index 00000000000..0147bf3cae7 --- /dev/null +++ b/Master/texmf-dist/tex/latex/feynmf/feynmp.sty @@ -0,0 +1,337 @@ +%% +%% 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'. |