TikZ Feynman:双循环

TikZ Feynman:双循环

我需要一张采用 't Hooft 双线符号表示的特定图表。我已经了解了大部分内容,但缺少一项功能。到目前为止,我为该图表编写的代码如下:

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

我以为这条线(a3) --[out=135, in=45, loop] (a3)会给我一个在另一个循环内的循环,但是这条代码线并没有改变图表。有什么办法可以解决这个问题吗?

答案1

这就是你所追求的吗?

代码输出

这可能不是最优雅的解决方法,我所做的是从中删除您引用的行\diagram*,然后添加

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

之间。\end{feynman}\end{tikzpicture}

还请注意,正如 JP-Ellis 在评论中提到的那样,\vertex [coordinate] (a) {};与 的作用相同\vertex (a);,即,如果您不添加任何文本,\vertex会自动变为coordinate。因此,您的代码可以稍微整理一下。

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

相关内容