
아래 예와 같이 광자의 자체 에너지와 같은 루프 다이어그램을 그리려면:
나는 그 코드를 시도했다
\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}