![与 feynmf 中的顶点长度相等](https://linux22.com/image/422774/%E4%B8%8E%20feynmf%20%E4%B8%AD%E7%9A%84%E9%A1%B6%E7%82%B9%E9%95%BF%E5%BA%A6%E7%9B%B8%E7%AD%89.png)
我很高兴用虚线代替蓝色实线,但我无论如何也想不出如何让一切看起来都优雅。我能想到的最好的办法是:
我的 LaTeX 代码在这里:
\unitlength = 1mm
\begin{fmffile}{feyngraph}
\begin{fmfgraph*}(100,100)
\fmfleft{i2}
\fmfright{o3,o5,o2,o6,o4}
\fmf{fermion}{i2,v1,v2,v3,v4,o2}
\fmf{phantom}{v2,o4}
\fmf{phantom}{v3,o5}
\fmf{phantom}{v3,o6}
\fmf{photon,left,tension=0.1}{v1,v4} % W line
\fmf{dashes}{v2,o3}
\fmflabel{i2}{i2}
\fmflabel{o2}{o2}
\fmflabel{o3}{o3}
\fmflabel{o4}{o4}
\fmflabel{o5}{o5}
\fmflabel{o6}{o6}
\fmflabel{v4}{v4}
\fmflabel{v3}{v3}
\fmflabel{v2}{v2}
\fmflabel{v1}{v1}
\end{fmfgraph*}
\end{fmffile}
有人可以帮忙吗?
答案1
使用 feynmf/feynmp 可以很容易地做到这一点,但您需要了解一些可用但没有充分记录的“技巧”。
对于这个问题,需要的“技巧”是 \fmffreeze,它告诉布局引擎仅使用当前输入的线来修复我们当前知道的任何点的位置。
在这种情况下,我将费米子线穿过图表的中心,然后冻结布局。完成后,添加弧和额外的腿与正常情况完全一样,但不再使图表变形。
我还添加了所有标签和符号,并使用底部的点作为额外的支路,因为它生成的图表更类似于所要求的图表。(请注意,\fmflabel{TEXT}{V} 是 \fmfv{label=TEXT}{V} 的简写,但我需要角度选项,因此直接使用 \fmfv。)
结果是以下代码:
\unitlength = 1mm
\begin{fmffile}{feyngraph}
\begin{fmfgraph*}(100,60)
\fmfleft{i}
\fmfright{o}
\fmfbottom{b1,b2,b,b3}
\fmf{fermion,label=$b$}{i,v1}
\fmf{fermion}{v1,v2}
\fmf{fermion,label=$t$}{v3,v2}
\fmf{fermion}{v3,v4}
\fmf{fermion,label=$s$}{v4,o}
\fmffreeze
\fmf{photon,left,label=$W^-$}{v1,v4} % W line
\fmf{dashes,label=$S$}{v2,b}
\fmfv{label=$V_{ts}$,label.angle=-90}{v4}
\fmfv{label=$V_{tb}^*$,label.angle=-90}{v1}
\fmfv{decoration.shape=cross,label=$m_t$,label.angle=90}{v3}
\fmfv{decoration.shape=circle}{v2}
\end{fmfgraph*}
\end{fmffile}
答案2
有时,放弃出色的自动布局并手动进行会更容易。
这是常规做法元帖子图表,但我已经feynmp
直接导入并使用了“线条修饰”宏。
它包含在内,luamplib
因此您需要用 进行编译lualatex
。如果您无法lualatex
为整个项目切换到,那么您可以使用这种方法来制作独立的 PDF 文件并将其包含在内includegraphics
。
\documentclass[border=5mm]{standalone}
\usepackage{luamplib}
\begin{document}
\mplibtextextlabel{enable}
\begin{mplibcode}
input feynmp
beginfig(1);
% make a unit size
numeric u; u = 20;
% start with 11 evenly spaced points
for i=0 upto 10:
z[i] = (i*u, 0);
endfor
% draw the fermions
draw fermion z0 -- z2;
draw fermion z2 -- z4;
draw fermion z6 -- z4;
draw fermion z6 -- z8;
draw fermion z8 -- z10;
% find the mid point then draw the curved photon
z11 = z5 shifted (0, 3/2 u);
draw photon z2 .. z11 .. z8;
% now put the strange blue line in
z12 = (3u, 0) rotated -30 shifted z4;
begingroup; interim linecap := butt; % square ends on the line
draw z4 -- z12 withpen pencircle scaled 4 withcolor 1/4[blue, white];
endgroup;
fill fullcircle scaled 8 shifted z4;
% we need to make our own cross marker for this
picture cross; cross = image(
draw (left--right) scaled 3 rotated 45;
draw (up--down) scaled 3 rotated 45
);
draw cross shifted z6;
% now to all the labels
interim labeloffset := 6; % with a litte extra space...
label.top("$b$", z1);
label.top("$t$", z5);
label.top("$m_t$", z6);
label.top("$s$", z9);
label.top("$W^-$", z11);
label.llft("$S$", 1/2[z4, z12]);
dotlabel.bot("$V_{tb}^*$", z2);
dotlabel.lrt("$V_{ts}$", z8);
endfig;
\end{mplibcode}
\end{document}
答案3
简短的代码如下pstricks
:
\documentclass[12pt, border=6pt]{standalone}
\usepackage{pst-node, pst-feyn}
\begin{document}
\begin{pspicture}(0,-2)(10,3)
\pnodes{A}(0,0)(2,0)(4,0)(6,0)(8,0)(10,0)(6.5,-1.2)
\uput[d](A1){$V^*_{tb}$}\uput[d](A4){$V_{ts}$}
\uput[u](A3){$m_t$}
\pcline[linewidth=3pt, linecolor=blue](A2)(A6)\nbput{$S$}
\foreach \i/\j in {0/1,1/2,3/4,4/5,3/2}{\psArrowLine(A\i)(A\j)}
\foreach \i/\l in {1/b,5/t,9/s}{\uput[u](\i, 0){$\l$}}%\uput[u](1,0){$b$}\uput[u](5,0){$t$}\uput[u](9,0){$s$}
\psdots(A1)(A4)\psdot[dotstyle=x, dotscale=1.5](A3)\psdot[dotscale=2](A2)
\psPhotonArc[radius=3.46, amplitude=0.15,windings=11.5](5,-1.7)(30,150)\rput(5,2.2){$W^{-}$}
\end{pspicture}
\end{document}