I am trying to draw the following diagram,


Here is my MWE so far:

      \fmfcmd{input vbloboval;}

(I have used this How to draw oval with FeynMP? to draw an oval) and this is what I get out


Unfortunately when I try and get the second line from the circle to the oval, there is an error because that line exists. Basically I want to make two vertices within the oval, as the original diagram does. (Ideally I would like to rotate the oval as well if anyone has any ideas - note that the attempt at rotating the oval I have tried has no effect on it)


At this level of complexity I would recommend switching directly to the underlying drawing engine (which is Metapost). You can still access all the feynmp macros by doing input feynmp at the top, then you can just draw directly. For example:

prologues := 3;
outputtemplate := "%j%c.eps";

input feynmp


draw photon  origin -- 30 right;
draw photon  origin -- 36 right rotated 45;
draw photon (origin -- 36 right rotated 45) shifted (-3,3); 

path p; p = origin -- 72 left;

draw subpath(0,1/2) of p rotated  30; 
draw subpath(0,1/2) of p rotated -30;

arrow_len := 7;
draw fermion subpath(1,1/2) of p rotated 30;
draw fermion subpath(1/2,1) of p rotated -30;

for t = -15 step 10 until 15:
  drawarrow ((photon subpath (.5,.83) of p) .. subpath (.88,.95) of p) rotated t;

fill fullcircle scaled 20 withcolor .7 white;
draw fullcircle scaled 20;

fill fullcircle xscaled 20 yscaled 50 shifted 30 left withcolor .7 white;
draw fullcircle xscaled 20 yscaled 50 shifted 30 left;

label.lrt(btex $p$ etex,  point .8 of p rotated +30);
label.urt(btex $p'$ etex, point .8 of p rotated -30);
label.lft(btex $\vcenter{\halign{\hfil$#$\hfil\cr k_1\cr\vdots\cr k_n\cr}}$ etex, point 1 of p);
label.bot(btex $\displaystyle\underbrace{\kern40bp}_{\hbox{hard}}$ etex, (12,-9));
label.bot(btex $\displaystyle\underbrace{\kern44bp}_{\hbox{soft}}$ etex, (-44,-36));


which produces this attempt at your diagram:

enter image description here

  • Wow brilliant, that's exactly what I wanted! So I've saved that as a metapost file, how do I then put into Latex? Putting it straight in as \includegraphics{filename} doesn't work – supercoolphysicist Feb 4 '15 at 15:48
  • The integration into the PDF file works perfectly here, either with LaTeX+dvips, PDFLaTeX, XeLaTeX or LuaLaTeX. Did you load the graphicx package? In recent TeX distributions it should call the epstopdf utility to convert the EPS file into a PDF one automatically — in case PDFLaTeX or LuaLaTeX are in use — before being integrated. Otherwise the eps file should be integrated straight away. – Franck Pastor Feb 4 '15 at 16:02
  • I have included both the graphicx and the epstopdf package. Should I be using Latex->PDF or Latex->DVI->PDF? (It doesn't work with either of them currently) I have tried saving the file as an eps and as an mp file, but these just leave a blank space for the diagram, whereas if I save it as an mps file I get an error "cannot determine size of graphic in diagram.mps (No bounding box" – supercoolphysicist Feb 4 '15 at 16:19
  • Both LaTex-->PDF (which means PDFLaTeX I suppose) and LaTeX->DVI->PDF (LaTeX + dvips + pstopdf ?) should work… Note that in recent TeX distributions it should not be necessary to include the epstopdf package. What are your TeX Distribution and editor? What if you replace the line outputtemplate := "%j%c.eps"; by outputtemplate := "%j%c.mps"; and then use PDFLaTeX? Another option would be to delete/comment the outputtemplate line and call the mptopdfutility, to get a PDF figure: in the command line, mptopdf diagram.mp. – Franck Pastor Feb 4 '15 at 16:33
  • I am using the MikTex and Texniccentre. If I replace the eps with mps then I again get the "cannot determine size of graphic in diagram.mps (No bounding box)" error message – supercoolphysicist Feb 4 '15 at 17:24

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.