我想使用 feynmp 绘制一个简单的 e+e- -> 2 gamma 费曼图,并且我希望外部顶点标签非常接近线条的边缘,因为我的空间不够。
我知道:
- 外部顶点必须放置
\fmfleft
在\fmfright
\fmflabel
无法控制标签的放置
有没有什么办法可以让标签任意靠近线条的边缘?
短暂性脑缺血发作
当前状态:
\documentclass[10pt]{article}
\usepackage[usenames]{color}
\usepackage{amssymb}
\usepackage{amsmath}
\usepackage[utf8]{inputenc}
\usepackage{feynmp-auto}
\begin{document}
\begin{fmffile}{feyngraph}
\begin{fmfgraph*}(60,60)
\fmfleft{i2,i3}
\fmflabel{$e^-$}{i2}
\fmflabel{$e^+$}{i3}
\fmfright{o1,o2}
\fmflabel{$\gamma$}{o2}
\fmflabel{$A'$}{o1}
\fmf{fermion}{i2,b,c,i3}
\fmf{photon}{b,o1}
\fmf{photon}{c,o2}
\end{fmfgraph*}
\end{fmffile}
\end{document}
答案1
Feynmf 对标签放置有相当多的控制,但这些无法通过命令实现\fmflabel
。\fmflabel{LABEL}{VERTEX}
只是 的快捷方式\fmfv{label=LABEL}{VERTEX}
,如果您直接使用 ,则可以使用额外的选项\fmfv
。 具体来说,这两个选项是label.angle
和label.dist
。 在它们两个之间,您几乎可以完全控制标签的位置。
使用这些,我将标签拉得比默认的更近,以获得以下效果
\documentclass[10pt]{article}
\usepackage[usenames]{color}
\usepackage{amssymb}
\usepackage{amsmath}
\usepackage[utf8]{inputenc}
\usepackage{feynmp-auto}
\begin{document}
\begin{fmffile}{feyngraph}
\begin{fmfgraph*}(60,60)
\fmfleft{i2,i3}
\fmfv{label=$e^-$,label.dist=1}{i2}
\fmfv{label=$e^+$,label.dist=1}{i3}
\fmfright{o1,o2}
\fmfv{label=$\gamma$,label.dist=1}{o2}
\fmfv{label=$A'$,label.dist=1}{o1}
\fmf{fermion}{i2,b,c,i3}
\fmf{photon}{b,o1}
\fmf{photon}{c,o2}
\end{fmfgraph*}
\end{fmffile}
\end{document}
答案2
抱歉,因为这并没有回答如何使用出色的feynmp
TeX 界面做到这一点的问题,而是展示了如何使用一些基本的元帖子直接加载宏feynmp
。
这已被包裹起来,luamplib
因此您需要用 来编译它lualatex
。
\documentclass[border=5mm]{standalone}
\usepackage{luamplib}
\begin{document}
\mplibtextextlabel{enable}
\begin{mplibcode}
input feynmp
beginfig(1);
% define 6 points
-z2 = z1 = 20 up;
z3 = z1 + 40 dir 32;
x5 = -x3; y5 = y3;
z4 = z2 + 40 dir -32;
x6 = -x4; y6 = y4;
drawoptions(withpen pencircle scaled 3/4);
% draw the fermions
draw fermion z6 -- z2;
draw fermion z2 -- z1;
draw fermion z1 -- z5;
% and the two photons
draw photon z1 -- z3;
draw photon z2 -- z4;
drawoptions();
% and now the labels
interim labeloffset := -1;
drawoptions(withcolor 2/3 blue);
label.urt("$\gamma$", z3);
label.lrt("$A'$", z4);
label.ulft("$e^+$", z5);
label.llft("$e^-$", z6);
drawoptions();
endfig;
\end{mplibcode}
\end{document}
在带有 的普通 MP 中input feynmp
,photon
和fermion
宏可作为“装饰”添加到路径中,如图所示。
常规labeloffset
参数控制点与文本中心之间的距离。这里我将其设置为-1
使其美观且紧密。并添加了一些颜色以进行强调。
如果您喜欢这种技术,您可以单独编译它以制作可以作为图形包含的 PDF,或者切换到lualatex
整个文档。
请注意,我认为这种方法没有在任何地方记录;但如果您阅读feynmp
宏的源代码,那么如何使用它们就相当明显了。