![光子的动量和 feynmp-auto 的气泡](https://linux22.com/image/420343/%E5%85%89%E5%AD%90%E7%9A%84%E5%8A%A8%E9%87%8F%E5%92%8C%20feynmp-auto%20%E7%9A%84%E6%B0%94%E6%B3%A1.png)
我喜欢这幅画,我想回答这个问题:tikz-feynman 中的循环更加圆形经过多次尝试,我发现,在这个关联,如何把动量放上去。有这个newcommand
叫做\marrow
:
\newcommand{\marrow}[5]{%
\fmfcmd{style_def marrow#1
expr p = drawarrow subpath (1/4, 3/4) of p shifted 6 #2 withpen pencircle scaled 0.4;
label.#3(btex #4 etex, point 0.5 of p shifted 6 #2);
enddef;}
\fmf{marrow#1,tension=0}{#5}}
字体没有给我eulervm
动力。如何解决这个问题?
我的 MWE:
\documentclass[a4paper,12pt]{article}
\usepackage{amsmath,amssymb}
\usepackage{feynmp-auto}
\usepackage{eulervm}
\newcommand{\marrow}[5]{%
\fmfcmd{style_def marrow#1
expr p = drawarrow subpath (1/4, 3/4) of p shifted 6 #2 withpen pencircle scaled 0.4;
label.#3(btex #4 etex, point 0.5 of p shifted 6 #2);
enddef;}
\fmf{marrow#1,tension=0}{#5}}
\begin{document}
\begin{fmffile}
\begin{fmfgraph*}(100,80)
\fmfleft{i}
\fmfright{o}
\fmflabel{$\mu$}{i}
\fmflabel{$\nu$}{o}
\marrow{fi}{up}{top}{$p$}{i,v1}
\marrow{se}{up}{top}{$p$}{v2,o}
\fmf{photon,tension=1}{i,v1}
\fmf{photon,tension=1}{v2,o}
\fmf{fermion,left,tension=0.4,label=$k$}{v1,v2}
\fmf{fermion,left,tension=0.4,label=$k-p$}{v2,v1}
\end{fmfgraph*}
\end{fmffile}
\end{document}
答案1
要获得匹配的外部字体,您需要使用宏feynmp
而LaTeX_text
不是普通btex .. etex
机制。
我对您的宏做了以下更改:
\newcommand{\marrow}[5]{%
\fmfcmd{style_def marrow#1
expr p = drawarrow subpath (1/4, 3/4) of p shifted 6 #2 withpen pencircle scaled 0.4;
% label.#3(btex #4 etex, point 0.5 of p shifted 6 #2); <- removed
LaTeX_text(point 0.5 of p shifted 8 #2, #3, "#4");
enddef;}
\fmf{marrow#1,tension=0}{#5}}
第一个参数LaTeX_text
是标签的点,第二个参数是角度,第三个参数是字符串形式的文本。所以我需要将对宏的调用更改为如下形式:
\marrow{fi}{up}{90}{$p$}{i,v1}
\marrow{se}{up}{90}{$p$}{v2,o}
这里90
的意思是“向上”,“-90”表示向下等等......
我还必须在后面添加一个缺失的文件名fmffile
才能进行编译。所以我编译了这个:
\documentclass[a4paper,12pt]{article}
\usepackage{amsmath,amssymb}
\usepackage{feynmp-auto}
\usepackage{eulervm}
\newcommand{\marrow}[5]{%
\fmfcmd{style_def marrow#1
expr p = drawarrow subpath (1/4, 3/4) of p shifted 6 #2 withpen pencircle scaled 0.4;
% label.#3(btex #4 etex, point 0.5 of p shifted 6 #2);
LaTeX_text(point 0.5 of p shifted 8 #2, #3, "#4");
enddef;}
\fmf{marrow#1,tension=0}{#5}}
\begin{document}
\begin{fmffile}{first}
\begin{fmfgraph*}(100,80)
\fmfleft{i}
\fmfright{o}
\fmflabel{$\mu$}{i}
\fmflabel{$\nu$}{o}
\marrow{fi}{up}{90}{$p$}{i,v1}
\marrow{se}{up}{90}{$p$}{v2,o}
\fmf{photon,tension=1}{i,v1}
\fmf{photon,tension=1}{v2,o}
\fmf{fermion,left,tension=0.4,label=$k$}{v1,v2}
\fmf{fermion,left,tension=0.4,label=$k-p$}{v2,v1}
\end{fmfgraph*}
\end{fmffile}
\end{document}
我将其保存为seb.tex
并使用其进行编译xelatex seb && mpost first && xelatex seb
以获得:
我认为这正是我们想要的。
但是,我认为您真的不需要费尽心思定义宏——您只需将动量标签直接添加到光子上,如下所示:
\documentclass[border=5mm]{standalone}
\usepackage{amsmath,amssymb}
\usepackage{feynmp-auto}
\usepackage{eulervm}
\begin{document}
\begin{fmffile}{first}
\begin{fmfgraph*}(100,80)
\fmfleft{i}
\fmfright{o}
\fmflabel{$\mu$}{i}
\fmflabel{$\nu$}{o}
\fmf{photon,tension=1,label=$\underrightarrow{p}$}{v1,i}
\fmf{photon,tension=1,label=$\underrightarrow{p}$}{o,v2}
\fmf{fermion,left,tension=0.4,label=$k$}{v1,v2}
\fmf{fermion,left,tension=0.4,label=$k-p$}{v2,v1}
\end{fmfgraph*}
\end{fmffile}
\end{document}
结果是: