
光子の自己エネルギーなどのループ図を描くには、次の例のようにします。
私はそれらのコードを試しました
\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}