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-파인만(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해당 레이블이 정의하는 모든 선 세그먼트에 적용됩니다. 줄의 다른 부분에 다른 인수를 적용할 수 없습니다. 가장 간단한 해결책은 두 개의 명령을 사용 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}

관련 정보