2

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

  • 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 '17 at 6:53
  • It should still work, just make sure that \fontsize is inserted outside the {tikzpicture} environment. – JP-Ellis May 23 '17 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 '17 at 11:07

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.