我用以下方式创建了这个 MWE feynmp-auto
:
\documentclass[a4paper,12pt]{article}
\usepackage{mathtools,amssymb}
\usepackage{feynmp-auto}
\begin{document}
\begin{fmffile}{draw}
\begin{fmfgraph*}(100,100)
\fmfleft{i}
\fmfright{o}
\fmfv{label=$p$,l.a=60}{i}
\fmfv{label=$p$,l.a=120}{o}
\fmf{photon,tension=1,l.side=right}{i,v1}
\fmf{photon,tension=1}{v2,o}
\fmf{fermion,left,tension=0.4,label=$p-k$}{v1,v2}
\fmf{fermion,left,tension=0.4,label=$k$}{v2,v1}
\end{fmfgraph*}
\end{fmffile}
\end{document}
但是光子没有像这样的箭头吗?
我已经阅读了文档:fmfman
,fmfsamples
和,latex_feynman [CMS Wiki Pages]
但是所有的光子都没有箭头(左或右)。
答案1
添加wiggly_arrow
样式很容易,但(a)它看起来很糟糕,并且(b)我认为这在费曼图中没有任何意义......
\documentclass[a4paper,12pt]{article}
\usepackage{mathtools,amssymb}
\usepackage{feynmp-auto}
\begin{document}
\begin{fmffile}{draw}
\fmfcmd{style_def wiggly_arrow expr p =
cdraw wiggly p;
cfill (arrow wiggly p);
enddef;}
\begin{fmfgraph*}(100,100)
\fmfleft{i}
\fmfright{o}
\fmfv{label=$p$,l.a=60}{i}
\fmfv{label=$p$,l.a=120}{o}
\fmf{wiggly_arrow,tension=1}{i,v1}
\fmf{wiggly_arrow,tension=1}{v2,o}
\fmf{fermion,left,tension=0.4,label=$p-k$}{v1,v2}
\fmf{fermion,left,tension=0.4,label=$k$}{v2,v1}
\end{fmfgraph*}
\end{fmffile}
\end{document}
第二次尝试
这看起来更好,但我仍然担心它在费曼图中不“意味着”任何东西。
\documentclass[border=5mm]{standalone}
\usepackage{mathtools,amssymb}
\usepackage{feynmp-auto}
\begin{document}
\begin{fmffile}{draw}
\fmfcmd{style_def wiggly_arrow expr p =
draw wiggly p withcolor 3/4 [foreground, background];
cfill (arrow wiggly p);
enddef;}
\fmfcmd{style_def directed_photon expr p =
interim ahangle := 30;
drawarrow (wiggly subpath (0, arctime arclength p - 2.4 ahlength of p) of p)
.. {direction infinity of p} point infinity of p
cutafter fullcircle scaled 2 shifted point infinity of p
withcolor foreground;
enddef;}
\begin{fmfgraph*}(100,100)
\fmfleft{i}
\fmfright{o}
\fmfv{label=$p$,l.a=60}{i}
\fmfv{label=$p$,l.a=120}{o}
\fmf{directed_photon,tension=1}{i,v1}
\fmf{directed_photon,tension=1}{v2,o}
\fmf{fermion,left,tension=0.4,label=$p-k$}{v1,v2}
\fmf{fermion,left,tension=0.4,label=$k$}{v2,v1}
\end{fmfgraph*}
\end{fmffile}
\end{document}
笔记
这里发生了什么?
该
feynmp
包提供了\fmfcmd
控制序列,让您可以将任意的 Metapost 代码插入到您的图表中。我已经使用了
\fmfcmd
来定义几个新的“样式”宏。style_def
我们可以使用包提供的宏来定义“样式”宏feynmp
。style_def
工作原理很像,vardef
但也设置了一些绘图命令,以及允许您使用带有控制序列的样式名称的定义\fmf
。我的第一个叫做“wiggly_arrow”,它使用了
feynmp
:cdraw
和提供的两个命令来cfill
绘制路径并在中间放置一个箭头。要绘制的路径由参数表示p
,定义使用wiggly
前面的宏对其进行修改,从而返回路径的摆动版本。第二次尝试放弃提供的
cdraw
命令cfill
并回到普通的 MPdrawarrow
宏复杂之处在于我想让箭头看起来更美观。为此,我只会将波浪形应用于路径的主要部分,并尝试将最后几毫米保持笔直,以便箭头看起来更好。
路径的长度
p
(以点为单位)为arclength p
普通 MP 箭头的长度为
ahlength
所以我想要摆动的路径的长度是
arclength p - 2.4 ahlength
所以我们想摆动一下
subpath (0, arctime a of p) of p
上面a
的长度。我们希望顺利连接到的正常端
p
,所以我们将弯曲的子路径连接到.. {direction infinity of p} point infinity of p
但最后我们想要停得稍微短一些,以便箭头的尖端更容易被看到,我们在绘制一个完整圆的边缘后切断路径,将其缩放到 2pt 并移动到最远端
p
。了解?
答案2
每次我看到连接到光子(或胶子)线的箭头时,箭头都会偏移,如示例中的绿色所示。
在我的博士论文中,我为 feynmp 添加了很多箭头样式,并将它们包含在下面。共有 3 种箭头类型和两条线,总共 6 种新线样式。'arrow' 和 'far_arrow' 样式只绘制箭头头,但偏离原始线,'line_arrow' 样式绘制一个完整的箭头,其茎覆盖了它所基于的线的中间一半(从 1/4 到 3/4),但再次偏移。
您将需要使用 \fmffreeze 或tension=0,因为它们需要像光子或胶子线一样被绘制。
以下是包含三种类型的示例的代码(为了清楚起见,采用不同的颜色)。
\documentclass[class=minimal,border=20pt]{standalone}
\usepackage{mathtools,amssymb}
\usepackage{feynmp-auto}
\begin{document}
\begin{fmffile}{draw}
\fmfcmd{
vardef middir(expr p,ang) =
dir(angle direction length(p)/2 of p + ang)
enddef;
style_def arrow_left expr p =
shrink(.7);
cfill(arrow p
shifted(4thick*middir(p,90)));
endshrink
enddef;
style_def arrow_right expr p =
shrink(.7);
cfill(arrow p
shifted(4thick*middir(p,-90)));
endshrink
enddef;
style_def far_arrow_left expr p =
shrink(.7);
cfill(arrow p
shifted(8thick*middir(p,90)));
endshrink
enddef;
style_def far_arrow_right expr p =
shrink(.7);
cfill(arrow p
shifted(8thick*middir(p,-90)));
endshrink
enddef;
style_def line_arrow_right expr p =
drawarrow subpath (1/4, 3/4) of p shifted 6 middir(p,-90) withpen pencircle scaled 0.4;
enddef;
style_def line_arrow_left expr p =
drawarrow subpath (1/4, 3/4) of p shifted 6 middir(p,90) withpen pencircle scaled 0.4;
enddef;}
\begin{fmfgraph*}(100,100)
\fmfleft{i}
\fmfright{o}
\fmfv{label=$p$,l.a=60}{i}
\fmfv{label=$p$,l.a=120}{o}
\fmf{wiggly,tension=1}{i,v1}
\fmf{wiggly,tension=1}{v2,o}
\fmf{fermion,left,tension=0.4,label=$p-k$}{v1,v2}
\fmf{fermion,left,tension=0.4,label=$k$}{v2,v1}
\fmf{arrow_right,tension=0,foreground=green}{i,v1}
\fmf{far_arrow_right,tension=0,foreground=red}{i,v1}
\fmf{line_arrow_right,tension=0}{v2,o}
\end{fmfgraph*}
\end{fmffile}
\end{document}