![feynmp-auto 线长和角度](https://linux22.com/image/345480/feynmp-auto%20%E7%BA%BF%E9%95%BF%E5%92%8C%E8%A7%92%E5%BA%A6.png)
我制作了 W' 生成的费曼图,显示了传入和传出的部分子:
\begin{fmffile}{feynmanW_partons}
\begin{fmfgraph*}(150,100)
% External vertices on the left
\fmfleft{i1,i2}
% External vertices on the right
\fmfright{o1,o2,o3,o4}
% protons > blob
\fmf{fermion,tension=0}{i2,v3}
\fmf{fermion,tension=0}{i1,v1}
\fmffreeze
% quarks blob > VB > blob
\fmf{fermion,label=$q$,label.side=right, tension=0.5}{v3,v4}
\fmf{fermion,label=$\bar{q}$,label.side=right,tension=0.5}{v4,v1}
% tension between protons and blob
\fmf{phantom, tension=2}{i2,v3}
\fmf{phantom, tension=2}{i1,v1}
% tension between blob and extra quarks
\fmf{phantom, tension=1}{v1,o1}
\fmf{phantom, tension=1}{v3,o4}
% Labels on external vertices
\fmf{plain,straight}{i2,v3,o4}
\fmf{plain}{i2,v3,v4,v1,i1}
\fmf{plain}{o3,v2,o2}
\fmf{plain,straight}{i1,v1,o1}
\fmfblob{.12w}{v1}
\fmfblob{.12w}{v3}
\fmflabel{\(p\)}{i1}
\fmflabel{\(p\)}{i2}
% \fmflabel{\(o1\)}{o1}
\fmflabel{$\bar{\nu}_{\ell} / \nu_{\ell}$}{o2}
\fmflabel{$\ell^{-} / \ell^{+}$}{o3}
\fmf{boson,label=$\wpmin / \wpplu$}{v4,v2}
\fmffreeze
% bottom lhs vertex
\fmfi{plain}{vpath (__i1,__v1) shifted (thick*(-0.5,2))}
\fmfi{plain}{vpath (__i1,__v1) shifted (thick*(0.5,-2))}
% top lhs vertex
\fmfi{plain}{vpath (__i2,__v3) shifted (thick*(0.5,2))}
\fmfi{plain}{vpath (__i2,__v3) shifted (thick*(-0.5,-2))}
% top rhs vertex
\fmfi{plain}{vpath (__v3,__o4) shifted (thick*(-0.5,2))}
% bottom rhs vertex
\fmfi{plain}{vpath (__v1,__o1) shifted (thick*(0.5,2))}
\end{fmfgraph*}
\end{fmffile}
我花了一段时间研究这个问题,希望缩短输出部分子的线条,也许可以添加箭头。我想我还希望输入粒子只有水平线,而不是倾斜线。有人知道我该如何实现吗?
答案1
如果你知道(或者你愿意学习)元帖子,还有另一种使用feynmp
宏来制作图表的方法。您只需input feynmp
在顶部执行,然后直接使用 Metapost 布局所有内容,而不是依赖于 中的自动布局引擎feynmp
,然后使用宏绘制符号feynmp
,如下所示。
这是使用该技术的图表版本。
这使您可以在重要时更好地控制精确的布局。
prologues := 3;
outputtemplate := "%j%c.eps";
input feynmp;
beginfig(1);
% middle
z0 = origin;
u = 1cm;
y1 = y3 = y5 = -y2 = -y4 = -y6 = 2u;
x1 = x2 = -1u;
x3 = x4 = -3u;
x5 = x6 = +1u;
z7 = (2u,0);
z8 = (3u,+u);
z9 = (3u,-u);
draw fermion z3--z1 cutafter fullcircle scaled 16 shifted z1;
draw fermion z1--z0 cutbefore fullcircle scaled 16 shifted z1;
draw (z3--z1) shifted 4 up;
draw (z3--z1) shifted 4 down;
draw (z1--z5) shifted 2 up;
draw (z1--z5) shifted 2 down;
draw fermion z4--z2 cutafter fullcircle scaled 16 shifted z2;
draw fermion z0--z2 cutafter fullcircle scaled 16 shifted z2;
draw (z4--z2) shifted 4 up;
draw (z4--z2) shifted 4 down;
draw (z2--z6) shifted 2 up;
draw (z2--z6) shifted 2 down;
make_blob(z1,16);
make_blob(z2,16);
draw photon z0 -- z7;
draw z7--z8;
draw z7--z9;
label.lft(btex $p$ etex, z3);
label.lft(btex $p$ etex, z4);
label.llft(btex $q$ etex, 1/2[z1,z0] shifted 2 left);
label.ulft(btex $\bar{q}$ etex, 1/2[z2,z0] shifted 2 left);
label.bot(btex $W'^-/W'^+$ etex, 1/2[z0,z7]);
label.rt (btex $\ell^{-} / \ell^{+}$ etex, z8);
label.rt (btex $\bar{\nu}_{\ell} / \nu_{\ell}$ etex, z9);
endfig;
end.
唯一的问题是它没有很好的文档记录——我依赖于阅读中的源代码../texmf-dist/metapost/feynmf
。
在中定义了许多有用的宏feynmp
,但我在这里只使用了其中三个:
fermion
接受主路径参数,沿其中点绘制箭头,然后返回相同路径photon
采用主路径参数,并返回它的波动版本。make_blob(z,d)
绘制一个斑点(如图所示),按直径缩放d
并移动到点z
。
其余部分就是普通的 Metapost。
答案2
这是另一种解决方案:
\begin{fmfgraph*}(150,100)
% External vertices on the left
\fmfleft{i1,i3,i4,i2}
% External vertices on the right
\fmfright{o1,o2,o3,o4}
\fmf{phantom, tension=2}{i2,v3,o4}
\fmf{phantom, tension=2}{i1,v1,o1}
\fmffreeze
% protons > blob
\fmf{fermion,tension=0}{i2,v3}
\fmf{fermion,tension=0}{i1,v1}
\fmffreeze
% quarks blob > VB > blob
\fmf{fermion,label=$q$,label.side=right, tension=0.5}{v3,v4}
\fmf{fermion,label=$\bar{q}$,label.side=left,tension=0.5}{v1,v4}
% tension between protons and blob
\fmf{phantom, tension=2}{i2,v3}
\fmf{phantom, tension=2}{i1,v1}
% tension between blob and extra quarks
\fmf{phantom, tension=1}{v1,o1}
\fmf{phantom, tension=1}{v3,o4}
% Labels on external vertices
\fmf{plain,straight}{i2,v3,o4}
\fmf{plain}{i2,v3,v4,v1,i1}
\fmf{plain}{o3,v2,o2}
\fmf{plain,straight}{i1,v1,o1}
\fmfblob{.05w}{v1}
\fmfblob{.05w}{v3}
\fmfv{label=$p$,label.angle=200}{i1}
\fmfv{label=$p$,label.angle=160}{i2}
% \fmflabel{\(o1\)}{o1}
\fmflabel{$\bar{\nu}_{\ell} / \nu_{\ell}$}{o2}
\fmflabel{$\ell^{-} / \ell^{+}$}{o3}
\fmf{boson,label=$W^{\prime+} / W^{\prime-}$}{v4,v2}
\fmffreeze
% bottom lhs vertex
\fmfi{plain}{vpath (__i1,__v1) shifted (thick*(-0.5,2))}
\fmfi{plain}{vpath (__i1,__v1) shifted (thick*(0.5,-2))}
% top lhs vertex
\fmfi{plain}{vpath (__i2,__v3) shifted (thick*(0.5,2))}
\fmfi{plain}{vpath (__i2,__v3) shifted (thick*(-0.5,-2))}
% top rhs vertex
\fmfi{plain}{vpath (__v3,__o4) shifted (thick*(-0.5,2))}
% bottom rhs vertex
\fmfi{plain}{vpath (__v1,__o1) shifted (thick*(0.5,2))}
\end{fmfgraph*}