Kaon 衰变图排列 feynmf

Kaon 衰变图排列 feynmf

我尝试用 Feynmf 排版以下企鹅图

在此处输入图片描述

我已经用下面的代码非常接近了

\begin{fmffile}{Kaone}
        \begin{equation}
            \begin{fmfgraph*}(175,60)
                %\fmfstraight
                \fmfleft{i0,i1,,i4,i2,i3}
                \fmfright{o0,o1,o4,o2,o3}
                \fmf{fermion,tension=.2}{i0,v0,o0}
                \fmf{fermion, tension=.2}{i3,v3}
                \fmf{photon, tension=.2}{v3,v4}
                \fmf{fermion, tension=.2}{v4,o3}
                \fmffreeze
                \fmf{fermion, right=.5, tension=3}{v3,v1}
                \fmf{fermion, right=.3, tension=3}{v1,v2,v4}
                \fmf{gluon, tension=3}{v1,v0}
                \fmf{gluon, tension=3}{v2,v5}
                \fmf{fermion}{o1,v5}
                \fmf{fermion}{v5,o2}
            \end{fmfgraph*}
        \end{equation}
    \end{fmffile} 

导致这个结果有点不协调

在此处输入图片描述

特别是胶子的两个外夸克。此外,我想使用在页面,但我不知道如何继续。我对这个包还很陌生。

如果有人愿意帮忙,我将不胜感激!

答案1

我想我已经成功地制作出了您想要的图表,但我必须使用更高级的立即模式才能做到这一点。

我使用的主要技巧是绘制基本形状而不使用幻影线连接各个部分,然后使用 metapost 命令提取线条的各个部分,然后使用即时模式绘制线条的这些部分。

对于 blob,我使用您在问题中链接的页面中的代码。具体来说,我将以下内容放在文档的标题中。

\begin{filecontents*}{vovalblob.mp}
vardef vovalblob (expr bd, a) (text vl)=
  forsuffixes $=vl:
    if not vexists $: venter $; fi
    vlist[vlookup $]decor.shape := fullcircle xscaled a;
    vlist[vlookup $]decor.size := bd;
    vlist[vlookup $]decor.sty := "shaded";
 endfor
enddef;
\end{filecontents*}
\def\fmfovalblob#1#2#3{\fmfcmd{input vovalblob; vovalblob ((#1), (#2), \fmfpfx{#3});}}

然后使用命令绘制斑点\fmfovalblob{HEIGHT}{WIDTHSCALE}{LOCATION},其中 HEIGHT 是高度(使用 w 或 h 分别指定大小为图像宽度或高度的分数),WIDTHSCALE 是斑点的宽度是高度的倍数,LOCATION 是设置顶点位置的顶点。

然后生成图表的代码如下

        \begin{fmfgraph*}(175,60)
            \fmfstraight % need straight edges for the blobs to look right.
            \fmfleft{i0,i1,_,i4,_,i2,i3}
            \fmfright{o0,o1,_,o4,_,o2,o3}
            % bottom line
            \fmf{fermion,tension=.2}{i0,v0,o0}
            % top line
            \fmf{fermion, tension=.2}{i3,v3}
            \fmf{photon, tension=.2}{v3,v4}
            \fmf{fermion, tension=.2}{v4,o3}
            
            % top fermion loop - draw later as it will need splitting into bit.
            \fmf{phantom, tension=0, right=1}{v3,v4}
            % bottom inner fermion line on the right hand side
            \fmf{fermion, tension=7}{o1,v1}
            \fmf{phantom}{v1,i1}
            % top inner fermion line on the right hand side
            \fmf{fermion, tension=7}{v2,o2}
            \fmf{phantom}{v2,i2}
            % side fermion loop - draw later as it will need splitting into bits
            \fmf{phantom,left=1,tension=0}{v1,v2}
            % centers of the blobs on the right hand side.
            \fmf{phantom, tension=1}{o0,o5,o1}
            \fmf{phantom, tension=1}{o2,o6,o3}
            \fmffreeze % Do layout now. All later stuff using pre-calculated points.
            % Declare and set the two fermion loops.
            \fmfipath{p[]}
            \fmfiset{p1}{vpath(__v3,__v4)}
            \fmfiset{p2}{vpath(__v1,__v2)}
            % declare and set the points part way along the fermion loops.
            \fmfipair{j[]}
            \fmfiset{j1}{point length(p1)/2 of p1}
            \fmfiset{j2}{point 3length(p1)/4 of p1}
            \fmfiset{j3}{point length(p2)/2 of p2}
            %draw in the fermion loops but in pieces so we get correct arrows.
            \fmfi{fermion}{subpath (0, length(p1)/4) of p2}
            \fmfi{fermion}{subpath (length(p1)/2,length(p1)) of p2}
            \fmfi{fermion}{subpath (0, length(p1)/2) of p1}
            \fmfi{fermion}{subpath (length(p1)/2, 3length(p1)/4) of p1}
            \fmfi{fermion}{subpath (3length(p1)/4,length(p1)) of p1}
            % draw the gluons using the calculated points.
            \fmfi{gluon}{j1 -- vloc(__v0)}
            \fmfi{gluon}{j2 -- j3}
            %a dd the blobs
            \fmfovalblob{1.1h}{0.2}{i4}
            \fmfovalblob{0.3h}{0.4}{o5}
            \fmfovalblob{0.3h}{0.4}{o6}
        \end{fmfgraph*}

输出: 输出费曼图

所有内容直到 \fmffreeze 为止,但幻影线显示为点。 部分图表

相关内容