如何更改“feynmp”中的箭头大小

如何更改“feynmp”中的箭头大小

考虑以下 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(双线) 。我的假设的证明是,如果您证明此代码:v2v1\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}

在此处输入图片描述

相关内容