3

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

\documentclass[12pt]{book}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[a4paper,left=2.5cm,right=2.5cm,top=2.8cm,bottom=2.8cm]{geometry}
\usepackage[frenchb]{babel}
\usepackage{libertine}
\usepackage{luatex85} 
\def\pgfsysdriver{pgfsys-pdftex.def} 
\usepackage{lmodern}
\usepackage{xcolor}
\usepackage{tikz}
\usepackage{pgfkeys}
\usepackage[compat=1.1.0]{tikz-feynman}
\usepackage{tikz-feynman, contour}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{graphicx}
\usepackage[absolute,overlay]{textpos}
\newcommand{\autofontsize}[1]{\fontsize{#1}{\dimexpr #1*12/10}}
\usepackage{setspace}
\usepackage{pgfplots}
\usepackage{xparse}

\usetikzlibrary{positioning,arrows,patterns}
\usetikzlibrary{decorations.markings}
\usetikzlibrary{calc}

\tikzset{
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},
}    

\NewDocumentCommand\semiloop{O{black}mmmO{}O{above}}
{%
\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>];




\begin{document}

\begin{center}
\scalebox{2}{
\fontsize{0.35714em}{0.35714em}
\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,
};
}
\end{center}
\end{document}
1

1 Answer 1

3

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).

\RequirePackage{luatex85}
\documentclass{standalone}
\usepackage[compat=1.1.0]{tikz-feynman}

\begin{document}
\begin{tikzpicture}
  \begin{feynman}
    \diagram [horizontal=a to b] {
      i1 
        -- [fermion] a 
        -- [fermion] i2 ,
      a -- [photon] b
        -- [fermion, half left] c
        -- [fermion, half left] b,
      c -- [photon] d,
      f1  
        -- [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)$);
  \end{feynman}
\end{tikzpicture}
\end{document}

output

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.

3
  • 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 .