If we want to apply Cutkosky rule, how can we draw a cutting line like the dashed line in the figure (quickly made with paint)?

enter image description here

\usepackage{tikz-feynman, contour}
\newcommand{\autofontsize}[1]{\fontsize{#1}{\dimexpr #1*12/10}}


photon/.style={decorate, decoration={snake}, draw=black},
fermion/.style={draw=black, postaction={decorate},decoration={markings,mark=at position .55 with {\arrow{>}}}},
vertex/.style={draw,shape=circle,fill=black,minimum size=3pt,inner sep=0pt},

\draw[#1] let \p1 = ($(#3)-(#2)$) in (#3) arc (#4:({#4+180}):({0.5*veclen(\x1,\y1)})node[midway, #6] {#5};)
%% Syntax
%\semiloop[fermion][<draw options>]{<first node>}{<second node>}{<angle>}[<label>][<below, default: above>];


\feynmandiagram [horizontal=a to b] {
i1 -- [fermion, arrow size=0.8pt] a  [label=${\mu}$]-- [fermion, arrow size=0.8pt] i2 ,
a -- [photon] b 
-- [fermion, half left, looseness=1.6, arrow size=0.8pt] c 
-- [fermion, half left, looseness=1.6, arrow size=0.8pt] b,
c -- [photon] d,
f1  -- [fermion, arrow size=0.8pt] d -- [fermion, arrow size=0.8pt] f2,

1 Answer 1


TikZ-Feynman (CTAN) provides \feynmandiagram command to draw single diagrams only without having to create a full {tikzpicture} environment; however, it is possible to use the {feynman} environment within a {tikzpicture} which allows you to access all the commands from TikZ.

By putting everything inside a {tikzpicture} and {feynman} environment, I can first draw the diagram and then, in later commands, access the location of vertices in order to place new vertices. In this instance, I calculate the mipoint to be halfway between (b) and (c), and then draw a line going from 2 units above (midpoint) to 2 units below (midpoint).


    \diagram [horizontal=a to b] {
        -- [fermion] a 
        -- [fermion] i2 ,
      a -- [photon] b
        -- [fermion, half left] c
        -- [fermion, half left] b,
      c -- [photon] d,
        -- [fermion] d 
        -- [fermion] f2,

    %% Find the midpoint, which is halfway between b and c.
    \coordinate (midpoint) at ($(b)!0.5!(c)$);
    %% Draw a line starting 2 units above the midpoint, and ending 2 units below
    %% the midpoint.
    \draw [dashed] ($(midpoint) + (0, 2)$) -- ($(midpoint) + (0, -2)$);


Note that I had to greatly simplified you minimal example. None of the packages included are relevant other than TikZ-Feynman (which you also happen to import twice...). The use luatex85 is due to a bug with the standalone class, but shouldn't be needed with most other classes.

  • Thanks but I would like to conserve the command \fontsize{0.35714em}{0.35714em} so that the vertex label have a normal size. However if I put this line in my code, it does not compile anymore (I added the vertex label in my code).
    – ketherok
    May 23, 2017 at 6:53
  • It should still work, just make sure that \fontsize is inserted outside the {tikzpicture} environment.
    – JP-Ellis
    May 23, 2017 at 8:31
  • If this solves your issue, don't forget to use the tick (✔) to accept the answer (and maybe give it an upvote as a thank you). Same goes for all the previous questions you asked :)
    – JP-Ellis
    May 23, 2017 at 11:07

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .