我需要一张采用 '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}