我正在尝试使用包和 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,
更新
答案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)
。