画费曼图时,经常需要标注每条线并画出动量箭头。怎样才能画出令人满意的动量箭头?以电子-μ子散射为例,我曾尝试自己将箭头放在标签中来画。
\begin{fmfgraph*}(40,25)
\fmfleftn{i}{2}
\fmfrightn{o}{2}
\fmf{fermion,label=$\longrightarrow$}{i1,v1,o1}
\fmf{fermion}{i2,v2,o2}
\fmf{photon,label=$\gamma$}{v1,v2}
\fmfdotn{v}{2}
\fmflabel{$e^-$}{i1}
\fmflabel{$e^-$}{o1}
\fmflabel{$\mu^-$}{i2}
\fmflabel{$\mu^-$}{o2}
\end{fmfgraph*}
结果最多是愚蠢的:
如果正确执行此操作,将会有一个与线平行的箭头,旁边(在与线和箭头正交的方向上)将会有一个文本,例如 $p_i$。如何实现这一点?
答案1
如果你不介意切换到普通元帖子语法,并将图形放入外部文件,您可以导入定义feynmp
并在常规 MP 图表中使用它们。这提供了一种简单的方法来制作标准位feynmf
不支持的布局的图表。
这是我对上述描述的第一次尝试。
这是使用此 MP 输入生成的:
prologues := 3;
outputtemplate := "%j%c.eps";
input feynmp
beginfig(1);
z1 = -z2 = 20 up;
z3 = (-60,40);
z4 = z3 reflectedabout(up,down);
z5 = z3 reflectedabout(left,right);
z6 = z4 reflectedabout(left,right);
draw fermion z3 -- z1;
draw fermion z5 -- z2;
draw fermion z1 -- z4;
draw fermion z2 -- z6;
draw photon z1 -- z2;
label.lft(btex $\gamma$ etex, .5[z1,z2]);
label.ulft(btex $\mu^-$ etex, z3);
label.urt (btex $\mu^-$ etex, z4);
label.llft(btex $e^-$ etex, z5);
label.lrt (btex $e^-$ etex, z6);
fill fullcircle scaled 4 shifted z1;
fill fullcircle scaled 4 shifted z2;
path a[];
a1 = subpath (0.3,0.6) of (z5--z2) shifted 8 up;
drawarrow a1; label.top(btex $p_i$ etex, point .5 of a1);
a2 = subpath (0.4,0.7) of (z2--z6) shifted 8 up;
drawarrow a2; label.top(btex $p_i$ etex, point .5 of a2);
endfig;
end.
但是,如果您希望更贴近原始输入,则可以使用fmfcmd
添加新线条样式来添加动量箭头。像这样:
\begin{fmfgraph*}(120,55)
\fmfleftn{i}{2}
\fmfrightn{o}{2}
\fmf{fermion}{i1,v1,o1}
\fmf{fermion}{i2,v2,o2}
\fmf{photon,label=$\gamma$}{v1,v2}
\fmfdotn{v}{2}
\fmflabel{$e^-$}{i1}
\fmflabel{$e^-$}{o1}
\fmflabel{$\mu^-$}{i2}
\fmflabel{$\mu^-$}{o2}
% additions here
\fmffreeze
\fmfcmd{style_def marrow expr p = drawarrow subpath (1/4, 3/4) of p shifted 6 up
withpen pencircle scaled 0.4; label.top(btex $p_i$ etex, point 0.5 of p
shifted 6 up); enddef;}
\fmf{marrow}{i1,v1,o1}
\end{fmfgraph*}
结果是:
请注意,这fmffreeze
可防止多余的连接弄乱布局。我坦率地承认,这些标签有点儿不妥。
顺便说一下,为了产生这个输出,我发现将其放入fmfgraph
这样的 LaTeX 文件中很方便:
\documentclass{article}
\usepackage{feynmp-auto}
\begin{document}
\begin{fmffile}{first}
\begin{fmfgraph*}(120,55)
... graph commands here ...
\end{fmfgraph*}
\end{fmffile}
\end{document}
请注意,我必须将 OP 的大小更改为我的系统可读的大小。
答案2
回顾一下下面发生的讨论瑟斯顿的回答,这是一种在费曼图中的线旁边绘制动量箭头的有点古怪的方法。
该命令本质上是(定义新样式)和(用该样式绘制箭头)\marrow
的组合,定义有 5 个参数:\fmfcmd
fmf
\marrow{name}{arrow_pos}{text_pos}{text}{nodes}
第一个参数是必要的,因为本质上为每个箭头创建了一种新样式(仅字母符号),第二个参数是其中的任意一个up, down, left, right
,第三个参数是其中的任意一个top, bot, lft, rt
,第四个参数是您的文本,第五个参数是费曼图中的节点或顶点列表(例如i1,v1
)。
MWE 如下。
\documentclass{article}
\usepackage{feynmp-auto}
\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}
\setlength{\unitlength}{1mm}
\begin{fmffile}{marrows}
\begin{fmfgraph*}(50,30)
\fmfleftn{i}{2}
\fmfrightn{o}{2}
\fmf{fermion}{i1,v1,o1}
\fmf{fermion}{i2,v2,o2}
\fmf{photon,label=$\gamma$}{v1,v2}
\fmfdotn{v}{2}
\fmflabel{$e^-$}{i1}
\fmflabel{$e^-$}{o1}
\fmflabel{$\mu^-$}{i2}
\fmflabel{$\mu^-$}{o2}
% Momentum arrows
\marrow{a}{down}{bot}{$p_1$}{i1,v1}
\marrow{b}{up}{top}{$p_2$}{i2,v2}
\marrow{c}{left}{lft}{$q$}{v1,v2}
\marrow{d}{down}{bot}{$p_3$}{v1,o1}
\marrow{e}{up}{top}{$p_4$}{v2,o2}
\end{fmfgraph*}
\end{fmffile}
\end{document}
输出:
中的线条\marrow
张力为 0,以防止它们影响图形的形状(瑟斯顿最初的方法是\fmffreeze
在包含箭头之前调用,但我认为最佳做法是避免该命令,因为人们可能希望在绘制动量箭头后继续添加线和顶点)。
对于更具冒险精神的人:您可以允许用户自己选择每个箭头的间距,例如在此循环图中。
\documentclass{article}
\usepackage{feynmp-auto}
\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}}
\newcommand{\Marrow}[6]{%
\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}
\setlength{\unitlength}{1mm}
\begin{fmffile}{marrow2}
\begin{fmfgraph*}(50,50)
\fmfleftn{i}{2}
\fmfrightn{o}{2}
\fmf{fermion}{i1,v1,o1}
\fmf{fermion}{i2,v4,o2}
\fmf{photon}{v1,v2}
\fmf{fermion,right,tension=0.4}{v2,v3,v2}
\fmf{photon}{v3,v4}
\fmfdotn{v}{4}
\marrow{a}{down}{bot}{$p_1$}{i1,v1}
\marrow{b}{up}{top}{$p_2$}{i2,v4}
\marrow{c}{left}{lft}{$q$}{v1,v2}
\Marrow{d}{right}{rt}{$k$}{v2,v3}{26}
\Marrow{e}{left}{lft}{$q-k$}{v2,v3}{26}
\marrow{f}{left}{lft}{$q$}{v3,v4}
\marrow{g}{down}{bot}{$p_3$}{v1,o1}
\marrow{h}{up}{top}{$p_4$}{v4,o2}
\end{fmfgraph*}
\end{fmffile}
\end{document}