如何使用包 feynmp 表示循环图中的标签?

如何使用包 feynmp 表示循环图中的标签?

画一个环路图,比如光子的自能量,如下例: 光子的单环校正

我试过这些代码

\begin{fmffile}{loop} % Loop correction
 \begin{fmfgraph*}(80,65)
  \fmfkeep{loop}
  \fmfleft{ve1}
  \fmfright{ve4}]
  \fmflabel{$P \rightarrow$}{ve1}
  \fmf{photon}{ve1,ve2}
  \fmf{photon}{ve3,ve4}
  \fmf{fermion,right,label=$K$,label.side=top,label=$K - P$,label.side=bottom,tension=.23}{ve2,ve3,ve2}
\end{fmfgraph*}
\end{fmffile}

但这些代码无法在左侧制作顶部和底部的标签以及 $P$ 的位置:

在此处输入图片描述

我该如何处理标签问题?

答案1

虽然你提到你正在使用 FeynMP,但我在这里提供了一个替代方案,它使用TikZ-Feynman加拿大运输安全局)绘制费曼图。

\documentclass[tikz,convert]{standalone}

\usepackage[compat=1.1.0]{tikz-feynman}

\begin{document}
\feynmandiagram [horizontal=a to b, layered layout] {
  a -- [photon, momentum=\(p\)] b 
    -- [fermion, half left, momentum=\(k\)] c 
    -- [fermion, half left, momentum=\(p-k\)] b,
  c -- [photon, momentum=\(p\)] d,
};
\end{document}

输出

答案2

如果您在命令中指定标签,fmf它将应用于它定义的所有线段。它不能将不同的参数应用于线的不同部分。最简单的解决方案是只使用两个fmf命令并分别指定每个部分,如下所示。另一种选择是绘制线条,然后在第二步添加标签,但至少对于这种情况来说,这太复杂了。

\begin{fmffile}{loop} % Loop correction
 \begin{fmfgraph*}(80,65)
  \fmfkeep{loop}
  \fmfleft{ve1}
  \fmfright{ve4}]
  \fmflabel{$P \rightarrow$}{ve1}
  \fmf{photon}{ve1,ve2}
  \fmf{photon}{ve3,ve4}
  \fmf{fermion,right,label=$K$,label.side=top,tension=.23}{ve2,ve3}
  \fmf{fermion,right,label=$K - P$,label.side=bottom,tension=.23}{ve3,ve2}
\end{fmfgraph*}
\end{fmffile}

相关内容