考虑以下 MWE
\documentclass[11pt]{article}
\usepackage{feynmp-auto}
\begin{document}
\begin{fmffile}{afilename}
\setlength{\unitlength}{0.1cm}
\begin{fmfgraph}(40,25)
\fmfleftn{i}{2}
\fmfrightn{o}{2}
\fmf{dashes,tension=2}{i1,v4}
\fmf{dashes,tension=2}{o1,v1}
\fmf{dashes,tension=2}{o2,v2}
\fmf{dashes,tension=2}{i2,v3}
\fmf{dbl_plain_arrow}{v3,v2,v1}
\fmf{fermion}{v1,v4,v3}
\fmfdotn{v}{4}
\end{fmfgraph}
\end{fmffile}
\end{document}
如何将双线箭头的大小更改为与单线箭头的大小相同?我研究了文档并且在表 3 中有一个选项列为decoration.size
,但我不知道如何正确使用它。如果我将代码中产生双线箭头的行与
\fmf{dbl_plain_arrow,decoration.size=2cm}{v3,v2,v1}
没有什么变化..
感谢任何对此的意见。
答案1
FeynMF 手册在第 2.8 节(原始元字体)中描述了类似的东西。特别是,它展示了如何绘制带有放大箭头的线。这里我们只需要相反的:-)
标准线型在文件中定义,这是您发布时feynmp.mp
传递给文件的第一件事。在其中我们发现.mp
\begin{fmffile}{...}
feynmp.mp
style_def dbl_plain_arrow expr p =
draw_double_arrow p;
enddef;
所以基本上dbl_plain_arrow
是的别名double_arrow
,而后者又定义为
style_def double_arrow expr p =
draw_double p;
shrink (1.5);
cfill (arrow p);
endshrink;
enddef;
位shrink
使箭头看起来更大(因为因子1.5
)。然后您可以覆盖此定义并使用普通箭头
\documentclass[11pt]{article}
\usepackage{feynmp-auto}
\begin{document}
\begin{fmffile}{afilename}
\fmfcmd{%
style_def double_arrow expr p =
draw_double p;
cfill (arrow p);
enddef;
}%
\setlength{\unitlength}{0.1cm}%
\begin{fmfgraph}(40,25)
\fmfleftn{i}{2}
\fmfrightn{o}{2}
\fmf{dashes,tension=2}{i1,v4}
\fmf{dashes,tension=2}{o1,v1}
\fmf{dashes,tension=2}{o2,v2}
\fmf{dashes,tension=2}{i2,v3}
\fmf{dbl_plain_arrow}{v3,v2,v1}
\fmf{fermion}{v1,v4,v3}
\fmfdotn{v}{4}
\end{fmfgraph}
\end{fmffile}
\end{document}
或者,您可以只重新定义dbl_plain_arrow
,这样您仍然可以拥有原来的行为double_arrow
。
答案2
在查看文档后,我进行了多次编译和更改……我非常谦虚地认为这是不可能的。事实上,对于同一个循环,我曾考虑过同时放入、和v3
(双线) 。我的假设的证明是,如果您证明此代码:v2
v1
\fmf{dbl_plain}{v3,v2,v1}
\fmf{phantom_arrow}{v3,v2,v1}
\documentclass[11pt]{article}
\usepackage{feynmp-auto}
\begin{document}
\begin{fmffile}{afilename}
\setlength{\unitlength}{0.1cm}
\begin{fmfgraph}(40,25)
\fmfleftn{i}{2}
\fmfrightn{o}{2}
\fmf{dashes,tension=2}{i1,v4}
\fmf{dashes,tension=2}{o1,v1}
\fmf{dashes,tension=2}{o2,v2}
\fmf{dashes,tension=2}{i2,v3}
\fmf{dbl_plain}{v3,v2,v1}
\fmf{phantom_arrow}{v3,v2,v1}
\fmf{fermion}{v1,v4,v3}
\fmfdotn{v}{4}
\end{fmfgraph}
\end{fmffile}
\end{document}
你有一个奇怪的输出:
这里没有矩形。因此正确的代码只有dbl_plain_arrow
大箭头。
后续 2021/07/14:根据非常好的用户 @campa 的建议/评论,使用tension=0
到行中
\fmf{phantom_arrow,tension=0}{v3,v2,v1}
\documentclass[11pt]{article}
\usepackage{feynmp-auto}
\begin{document}
\begin{fmffile}{afilename}
\setlength{\unitlength}{0.1cm}
\begin{fmfgraph}(40,25)
\fmfleftn{i}{2}
\fmfrightn{o}{2}
\fmf{dashes,tension=2}{i1,v4}
\fmf{dashes,tension=2}{o1,v1}
\fmf{dashes,tension=2}{o2,v2}
\fmf{dashes,tension=2}{i2,v3}
\fmf{dbl_plain}{v3,v2,v1}
\fmf{phantom_arrow,tension=0}{v3,v2,v1}
\fmf{fermion}{v1,v4,v3}
\fmfdotn{v}{4}
\end{fmfgraph}
\end{fmffile}
\end{document}