パッケージ feynmp を使用してループ図のラベルを示すにはどうすればよいでしょうか?

パッケージ feynmp を使用してループ図のラベルを示すにはどうすればよいでしょうか?

光子の自己エネルギーなどのループ図を描くには、次の例のようにします。 光子の1ループ補正

私はそれらのコードを試しました

\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-ファインマンCTAN) を使用してファインマン図を描きます。

\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それが定義する線のすべてのセグメントに適用されます。線の異なる部分に異なる引数を適用することはできません。最も簡単な解決策は、2 つのfmfコマンドを使用して、以下に示すように各部分を個別に指定することです。もう 1 つのオプションは、線を描画してから 2 番目の手順でラベルを追加することですが、少なくともこの場合は複雑すぎます。

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

関連情報