# Why doesn't metapost know about the path in my feynmp code?

I'm trying to use FeynMP to draw a Feynman diagram exactly like this

but with a photon line inside the circle. This code works perfectly to create the diagram above:

\fmfleft{i} \fmfright{o} \fmftop{t}
\fmf{fermion,label=$q$}{i,v1,o}
\fmffreeze
\fmf{photon,label=$0$}{v1,v2}
\fmf{fermion,right,tension=0.45,label=$k$}{v2,t}
\fmf{fermion,right,tension=0.45}{t,v2}


but when I try to add

\fmfposition
\fmfipath{p[]}
\fmfiset{p1}{vpath1(__v2,__t)}
\fmfiset{p2}{vpath2(__t,__v2)}
\fmfi{photon}{point 3length(p1)/4 of p1 -- point 3length(p2)/4 of p2}


to create the photon line, MetaPost gives me the error

unknown path p1


On the other hand, this code, adapted from the FeynMF manual,

\fmfleft{i}
\fmfright{o}
\fmf{dots}{i,v1}
\fmf{dots}{v2,o}
\fmf{phantom,left,tension=0.2,tag=1}{v1,v2}
\fmf{phantom,left,tension=0.2,tag=2}{v2,v1}
\fmfdot{v1,v2}
\fmfposition
\fmfipath{p[]}
\fmfiset{p1}{vpath1(__v1,__v2)}
\fmfiset{p2}{vpath2(__v2,__v1)}
\fmfi{fermion}{subpath (0,length(p1)/3) of p1}
\fmfi{fermion}{subpath (2length(p1)/3,length(p1)) of p1}
\fmfi{fermion}{subpath (0,length(p2)/3) of p2}
\fmfi{fermion}{subpath (2length(p2)/3,length(p2)) of p2}
\fmfi{gluon}{point length(p1)/10 of p1
-- point 11length(p1)/12 of p1}


successfully creates this diagram:

What's the difference, and how do I fix it?

Edit: As requested, the complete (non-working) code:

\documentclass{article}

%Feynman diagrams
\usepackage{feynmp}
\DeclareGraphicsRule{*}{mps}{*}{}

\begin{document}

\begin{center}
\begin{fmffile}{Calculation2Diagrams}
\begin{fmfgraph*}(200,150)

% This code works fine...
\fmfleft{i} \fmfright{o} \fmftop{t}
\fmf{fermion,label=$q$}{i,v1,o}
\fmffreeze
\fmf{photon,label=$0$}{v1,v2}
\fmf{fermion,right,tension=0.45,label=$k$}{v2,t}
\fmf{fermion,right,tension=0.45}{t,v2}
% ...just as long as this code isn't added to it.
\fmfposition
\fmfipath{p[]}
\fmfiset{p1}{vpath1(__v2,__t)}
\fmfiset{p2}{vpath2(__t,__v2)}
\fmfi{photon}{point 3length(p1)/4 of p1 -- point 3length(p2)/4 of p2}

% This code, adapted from the FeynMF manual, on the other hand, does
% almost the same thing in almost the same way and works perfectly.
%\fmfleft{i}
%\fmfright{o}
%\fmf{plain}{i,v1}
%\fmf{plain}{v2,o}
%\fmf{phantom,left,tension=0.2,tag=1}{v1,v2}
%\fmf{phantom,left,tension=0.2,tag=2}{v2,v1}
%\fmfdot{v1,v2}
%\fmfposition
%\fmfipath{p[]}
%\fmfiset{p1}{vpath1(__v1,__v2)}
%\fmfiset{p2}{vpath2(__v2,__v1)}
%\fmfi{plain}{subpath (0,length(p1)/3) of p1}
%\fmfi{plain}{subpath (2length(p1)/3,length(p1)) of p1}
%\fmfi{plain}{subpath (0,length(p2)/3) of p2}
%\fmfi{plain}{subpath (2length(p2)/3,length(p2)) of p2}
%\fmfi{plain}{point length(p1)/10 of p1
%-- point 9length(p1)/10 of p1}

\end{fmfgraph*}
\end{fmffile}
\end{center}

\end{document}


It works if you leave out the suffixes from the vpath macros.

\fmfiset{p1}{vpath(__v2,__t)}
\fmfiset{p2}{vpath(__t,__v2)}


What the suffixes are supposed to be doing is a mystery to me.

Here's a complete program using feynmp-auto.

\documentclass{article}
\usepackage{feynmp-auto}
\begin{document}
\begin{fmffile}{first}
\begin{fmfgraph*}(200,200)
\fmfleft{i} \fmfright{o} \fmftop{t}
\fmf{fermion,label=$q$}{i,v1,o}
\fmffreeze
\fmf{photon,label=$0$}{v1,v2}
\fmf{fermion,right,tension=0.45,label=$k$}{v2,t}
\fmf{fermion,right,tension=0.45}{t,v2}
\fmfposition
\fmfipath{p[]}
\fmfiset{p1}{vpath(__v2,__t)}
\fmfiset{p2}{vpath(__t,__v2)}
\fmfi{photon}{point 3/4 length p1 of p1 -- point 3/4 length p2 of p2}
\end{fmfgraph*}
\end{fmffile}
\end{document}


• Yeah, I was kinda wondering that. If anybody does know what the suffixes do, please chime in. – calavicci Apr 1 '15 at 17:07
• @Thruston Is there a possibility to draw a line from one Point on the circle to an extern point? For instance \fmfi{photon}{point 3/4 length p1 of p1 -- o} or something like that? – Matthias Apr 30 '15 at 16:09
• @Matthias, yes you could do that - why don't you experiment with it and see what you get? If you get stuck, then ask a new question - that way we can keep questions and answers inline with each other. – Thruston Apr 30 '15 at 18:02