我尝试用 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*}