2

I need a specific diagram in 't Hooft's double line notation. I already got most of it but one feature is missing. My code for the diagram so far:

    \documentclass{article}
    \usepackage{tikz-feynman} 
        \tikzfeynmanset{compat=1.1.0}
\begin{document}
\begin{tikzpicture}
\begin{feynman}
\vertex[coordinate] (a1) {\(\)};
\vertex[coordinate, right=2cm of a1] (a2) {\(\)};
\vertex[coordinate, right=0.5em of a2] (a3) {\(\)};
\vertex[coordinate, right=0.5em of a3] (a4) {\(\)};
\vertex[coordinate, right=2cm of a4] (a5) {\(\)};
\vertex[coordinate, below=0.5em of a1] (b1) {\(\)};
\vertex[coordinate, below=0.5em of a3] (b3) {\(\)};
\vertex[coordinate, below=0.5em of a5] (b5) {\(\)};
\diagram* [edges=fermion]{
(a1) -- (a2) --[half left,, out=135, in=45, loop, min distance=2cm] (a4) -- (a5),
(b5) -- (b3) -- (b1),
(a3) --[out=135, in=45, loop] (a3),
};
\end{feynman}
\end{tikzpicture}
\end{document}

I thought that the line (a3) --[out=135, in=45, loop] (a3) would give me a loop inside the other loop, however this code-line changes nothing in the diagrams. Any ideas on how to fix that?

2

Is this what you're after?

output of code

It's probably not the most elegant workaround, what I did was removing the line you refer to from the \diagram*, and then adding

\draw [/tikzfeynman/fermion] (a3) to[out=135, in=45, loop, min distance=1.5cm] (a3);

between \end{feynman} and \end{tikzpicture}.

Note also that, as JP-Ellis mentioned in a comment, \vertex [coordinate] (a) {}; does the same as \vertex (a);, i.e. if you don't add any text, the \vertex automatically becomes a coordinate. Hence, your code can by tidied up a bit.

\documentclass{article}
\usepackage{tikz-feynman} 
\tikzfeynmanset{compat=1.1.0}
\begin{document}
\begin{tikzpicture}
\begin{feynman}
\vertex                    (a1);
\vertex[right=2cm of a1]   (a2);
\vertex[right=0.5em of a2] (a3);
\vertex[right=0.5em of a3] (a4);
\vertex[right=2cm of a4]   (a5);
\vertex[below=0.5em of a1] (b1);
\vertex[below=0.5em of a3] (b3);
\vertex[below=0.5em of a5] (b5);
\diagram* [edges=fermion]{
(a1) -- (a2) --[half left,, out=135, in=45, loop, min distance=2cm] (a4) -- (a5),
(b5) -- (b3) -- (b1),
};
\end{feynman}
\draw [/tikzfeynman/fermion] (a3) to[out=135, in=45, loop, min distance=1.5cm] (a3);
\end{tikzpicture}
\end{document}
  • Exactly what I was looking for, thanks a lot! – user148655 Nov 20 '17 at 15:57
  • You shouldn't need to specify coordinate. It should automatically do that if you don't specify any text. That is, \vertex[coordinate] (a) {}; is the same as \vertex (a);. – JP-Ellis Nov 21 '17 at 1:30
  • @user148655 FYI, see above comments and edited answer. – Torbjørn T. Nov 21 '17 at 7:39

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.