在 feynmp 中,移位的 vpath 被裁剪

在 feynmp 中,移位的 vpath 被裁剪

我正在尝试使用包和 LaTeXiT 绘制费曼图feynmp。但vpath生成的图像中移位的 s 被裁剪,如附件所示。此示例在我之前的 Mac 环境中运行正常,但目前我无法访问它。

为什么它们被裁剪了?我该如何修复?

当在终端中仅使用普通 LaTeX 命令时,也会出现相同的裁剪。

$ latex latexit-1.tex
$ mpost feyngraph
$ latex latexit-1.tex
$ dvipdfm latexit-1.dvi
\documentclass[10pt]{article}
\usepackage[usenames]{color} %used for font color
\usepackage{amssymb} %maths
\usepackage{amsmath} %maths
\usepackage[utf8]{inputenc} %useful to type directly diacritic characters
\usepackage{feynmp}

\pagestyle{empty} \begin{document}\begin{fmffile}{feyngraph}
  \begin{fmfgraph}(120,80)
    \fmfset{arrow_len}{10}
    \fmfstraight
    \fmfleft{i3,i1}
    \fmfright{o3,o2,o1}
    % fermions
    \fmf{phantom}{i1,v1,o1}
    \fmf{fermion,tension=0}{o2,v1,o1}
    % boson
    \fmf{boson}{v1,v3}
    % neutron
    \fmf{phantom}{i3,v3,o3}
    \fmffreeze
    \fmfi{fermion}{vpath (__i3,__v3) shifted ( 0, 0)}
    \fmfi{fermion}{vpath (__v3,__o3) shifted ( 0, 0)}
    \fmfi{fermion}{vpath (__i3,__v3) shifted ( 0,-8)}
    \fmfi{fermion}{vpath (__v3,__o3) shifted ( 0,-8)}
    \fmfi{fermion}{vpath (__i3,__v3) shifted ( 0,-16)}
    \fmfi{fermion}{vpath (__v3,__o3) shifted ( 0,-16)}
  \end{fmfgraph}
\end{fmffile}

\end{document}

生成的费曼图

在此处输入图片描述

$ mpost --version
MetaPost 2.00 (TeX Live 2019) (kpathsea version 6.3.1)
$ /Library/TeX/texbin/latex --version
pdfTeX 3.14159265-2.6-1.40.20 (TeX Live 2019)
$ dvipdfm --version
This is xdvipdfmx Version 20190225 by the DVIPDFMx project team,

更新

@egreg 的建议在我的 Mac 上显示了不同的结果。 使用 fmfframe

答案1

手册警告说,图表可能会超出 Metapost 指定的边界框。

对于这种情况,您可以\fmfframe在图表周围使用,以增加或减少边界框(有关详细信息,请参阅手册)。

在下面的代码中,我还添加了\fbox整个构造,以便能够看到边界框何时正确。

\documentclass[10pt]{article}
\usepackage[usenames]{color} %used for font color
\usepackage{amssymb} %maths
\usepackage{amsmath} %maths
\usepackage[utf8]{inputenc} %useful to type directly diacritic characters
\usepackage{feynmp}

\pagestyle{empty}
\begin{document}
\begin{fmffile}{\jobname1}
  \fbox{\fmfframe(0,0)(0,20){\begin{fmfgraph}(120,80)
    \fmfset{arrow_len}{10}
    \fmfstraight
    \fmfleft{i3,i1}
    \fmfright{o3,o2,o1}
    % fermions
    \fmf{phantom}{i1,v1,o1}
    \fmf{fermion,tension=0}{o2,v1,o1}
    % boson
    \fmf{boson}{v1,v3}
    % neutron
    \fmf{phantom}{i3,v3,o3}
    \fmffreeze
    \fmfi{fermion}{vpath (__i3,__v3) shifted ( 0, 0)}
    \fmfi{fermion}{vpath (__v3,__o3) shifted ( 0, 0)}
    \fmfi{fermion}{vpath (__i3,__v3) shifted ( 0,-8)}
    \fmfi{fermion}{vpath (__v3,__o3) shifted ( 0,-8)}
    \fmfi{fermion}{vpath (__i3,__v3) shifted ( 0,-16)}
    \fmfi{fermion}{vpath (__v3,__o3) shifted ( 0,-16)}
  \end{fmfgraph}}}
\end{fmffile}

\end{document}

在此处输入图片描述

\fbox下面您可以看到有但没有的结果\fmfframe,这表明由于垂直偏移,边界框计算不正确。

在此处输入图片描述

答案2

经过进一步的 Google 搜索,我发现了一篇关于 XeLaTeX 中类似问题的帖子。

带有 feynmf/feynmp 的费曼图 – 图表边缘被裁剪掉了吗?

解决方案是放入\DeclareGraphicsRule{*}{mps}{*}{}并编译它,pdflatex而不是latex+ dvipdf(m)

在此处输入图片描述 在此处输入图片描述

相关内容