3

I am trying to draw Feynman diagrams with two loops. I have managed to draw the following one:

\documentclass[DIV=14,headsepline]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage[utf8]{luainputenc}
\usepackage[compat=1.1.0]{tikz-feynman}
\begin{document}
\[
    \feynmandiagram[horizontal=a to b, layered layout]{
    a[dot]  -- c [dot] --[out=135, in=45, loop, min distance=2cm,insertion=0.5] c -- b [dot],
    };
\]
\end{document}

Which gives me,

enter image description here

I would like to add another loop just above the first one but I don't know how. I have tried using tikzpicture but I haven't arrived to any result.

Another problem I have is that I would like some dots to be bigger in order to have source terms (big dots) and vertices (small dots) but I don't know how to do it either. [big=dot] is not working.

Thank you in advance.

2
  • Welcome to TeX.SX! Please make your code snippet compilable by adding the documentclass, the required packages and the document environment.
    – TeXnician
    Jan 1, 2018 at 18:13
  • I use scrartcl for document class and luainputenc because tikz-feyman works on Lualatex. I use the version \usepackage[compat=1.1.0]{tikz-feynman}
    – luciamp
    Jan 1, 2018 at 20:52

2 Answers 2

2

The issue is that tikz-feynman implements the "insertion" option using a decoration instead of a new node. It's therefore tricky to find the position of the vertex at the top of the loop in order to draw a second loop above the first.

A good workaround is to use relative node positions:

\documentclass[DIV=14,headsepline]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage[utf8]{luainputenc}
\usepackage[compat=1.1.0]{tikz-feynman}
\begin{document}
\[
  \feynmandiagram[horizontal=a to b]{
    a[dot]  -- c [dot] -- b [dot],

    c --[out=135, in=185, min distance=0.6cm] d[dot, above = 2cm of c]
      --[out=355, in=45, min distance=0.6cm] c,

    d --[out=135, in=185, min distance=0.6cm]
      e[large, dot, above = 4cm of c]
      --[out=355, in=45, min distance=0.6cm] d,

    e --[out=135, in=185, min distance=0.6cm]
      f[small, blob, above = 6cm of c]
      --[out=355, in=45, min distance=0.6cm] e,
  };
\]
\end{document}

This yields the following diagram when compiled with LuaLaTeX: Feynman diagram with several loops

I've also changed the styles of two of the vertices to show you some of the options that are available.

1

Something like this?

\documentclass{article}
\usepackage[compat=1.1.0]{tikz-feynman}
\begin{document}
\begin{tikzpicture}[baseline=(current bounding box.north)]
\begin{feynman}
\vertex(in);
\tikzfeynmanset{every vertex={dot,minimum size=4mm}} %<- change the size of the dots here
\vertex[right=1.5cm of in] (v);
\vertex[above=1.2cm of v] (u);
\tikzfeynmanset{every vertex={empty dot,minimum size=0mm}} %<- ugly, I know
\vertex[right=1.5cm of v] (out);
\vertex[above=1.2cm of u] (w);
\diagram{(in)  -- (v) -- (out)};
\diagram{(v)  -- [half left] (u) -- [half right] (w) -- [half right] (u) -- [half left] (v)};
\end{feynman}
\end{tikzpicture}
\end{document}

enter image description here

Note that I compiled with xelatex (since I am not able to get lualatex working) and that this is my very first diagram drawn with tikz-feynman, so undoubtedly there is a lot of room for improvement.

EDIT: This is an attempt to make the diagram a bit more appealing.

\documentclass{article}
\usepackage[compat=1.1.0]{tikz-feynman}
\begin{document}
\begin{tikzpicture}[baseline=(current bounding box.north)]
\begin{feynman}
\vertex(in);
\vertex[right=1.5cm of in] (v);
\vertex[above=1.2cm of v] (u);
\vertex[right=1.5cm of v] (out);
\vertex[above=1.2cm of u] (w);
\diagram{(in)  -- (v) -- (out)};
\diagram{(v)  -- [half left] (u) -- [half right] (w) -- [half right] (u) -- [half left] (v)};
\draw[fill=black] (v) circle(1.5mm);
\draw[fill=black] (u) circle(1.5mm);
% \draw (1.5,0.6) circle (0.6cm); %<- uncomment this line to compare the loop toa real circle
\end{feynman}
\end{tikzpicture}
\end{document}

enter image description here

2
  • Yes! something like this is what I am looking for. (I wish I could draw something as good as this in my first attempt)
    – luciamp
    Jan 1, 2018 at 21:31
  • Thanks to both that tried to answer! I worked out a solution now ^^
    – luciamp
    Jan 11, 2018 at 20:13

You must log in to answer this question.

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