我尝试用以下方式绘制费曼feynmf
图LaTeX
:
这是我的代码:
\begin{fmffile}{edm_neutrino}
\begin{fmfchar*}(50,40)
\fmfkeep{vlm1}
\fmfleft{o}\fmflabel{$\nu_\tau$}{o}
\fmfright{i}\fmflabel{$\nu_\tau$}{i}
\fmftop{g}\fmflabel{$\gamma_\mu$}{g}
\fmf{plain, tension=1.5}{i,v1} \fmflabel{$Y_{ib}$}{v1}
\fmf{phantom, label=$\tau_j$, tension=0.8, left=1.0,tag=1}{v2,v1}
\fmf{dashes_arrow, label=$W^+$, left=-1.0, tension=0.4}{v2,v1}
\fmf{plain, tension=2.5}{v2,o}
\fmfposition
\fmfipath{p[]}
\fmfiset{p1}{vpath1(__v2,__v1)}
\fmfi{fermion}{subpath (0,2length(p1)/3) of p1}
\fmfi{fermion}{subpath (2length(p1)/3,length(p1)) of p1}
\fmfi{photon}{point length(p1)/3 of p1 -- point 2length(p1)/3 of p1}
%should go to g
\end{fmfchar*}
\end{fmffile}
但我不知道如何将线上的点连接W^-
到外部点g
。 是否有可能写类似的东西?
\fmfi{photon}{point 2length(p1)/3 of p1 -- point g}
我知道这行代码不正确。但该如何修复呢?
非常感谢你的阅读!matthias
答案1
您超出了自动布局程序的权限feynmf
,因此您需要使用“立即”模式来放置节点。
然而,此时,通常更容易直接在元帖子,使用feynmp
宏。像这样:
prologues := 3;
outputtemplate := "%j%c.eps";
input feynmp;
beginfig(1);
path ring; ring = fullcircle scaled 78;
z1 = -z2 = 78 left; z3 = z2 rotated -24;
label.top(btex $\tau_j$ etex, point 2 of ring);
label.bot(btex $W^+$ etex, point 6 of ring);
label.top(btex $\nu_\tau$ etex, z1);
label.top(btex $\nu_\tau$ etex, z2);
label.rt(btex $\gamma_\mu$ etex, z3);
draw fermion z1 -- point 4 of ring;
draw fermion subpath(4,0) of ring;
draw fermion point 0 of ring -- z2;
draw_dashes_arrow subpath(4,8) of ring;
draw photon origin -- z3 cutbefore ring;
endfig;
end.
(请注意,fullcircle
路径上有 8 个点,从 3 点位置逆时针延伸。)
界面非常简洁:feynmp
定义多个宏作为路径装饰器,将路径作为正确参数并返回装饰路径。例如fermion
上文。不幸的是,装饰器集并不完整,因此对于虚线箭头,我们必须draw_dashes_arrow
直接调用宏。我找到的唯一文档是 Metapost 源文件,但fmfman.pdf
仍然有用。