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

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

我正在尝试使用 LaTeX/MetaPost 创建费曼图,feynmp 似乎是完美的工具包。我按照教程操作没有遇到任何问题,并且可以毫无问题地以 .eps 格式生成图表本身。但是,一旦我开始标记每个图表,图表的边缘就会像这样被裁剪掉:

费曼图有奇怪的尺寸问题

我做错了什么? 这是我的代码:

% feynman.tex
\documentclass{article}
\usepackage{feynmp}
\usepackage{amsmath}
\begin{document}

\unitlength = 1mm

\begin{fmffile}{diagram}
\gdef\P#1#2{%
  \begin{fmfgraph*}(70,20)
    \fmfi{#1}{#2}
    \def\L##1##2{\fmfiv{%
      dec.shape=circle,dec.size=3thin,
      dec.fill=1,lab.dist=5thick,
      lab=\noexpand\texttt{%
        \noexpand\scriptsize ##1}}{##2}}
    \L{sw}{sw}\L{.3[nw,,ne]}{.3[nw,ne]}
   \L{ne}{ne}\L{.7[sw,,se]}{.7[sw,se]}
  \end{fmfgraph*}}
\P{plain}{sw .. .3[nw,ne]  
 .. .7[sw,se] .. ne}
\end{fmffile}

\end{document}

答案1

latex确实,使用和编译示例文件dvipdfm会产生错误的结果;我不知道为什么,但是其中对 EPS 文件的支持dvipdfm并不是很好,而且在其他情况下我也遇到了问题。例如,当我开发 时gmp,为了与xdvipdfmx内部使用的 XeLaTeX(而后者又基于dvipdfm(x))兼容,我只能将 Metapost 输出的文件转换为 PDF 后再包含。

因此我建议使用pdflatex。Metapost 包含 MPS 文件输出的问题可以通过添加以下代码轻松解决:

\DeclareGraphicsRule{*}{mps}{*}{}

到你的序言。另一种方法,甚至更好,是使用feynmp-auto它做两件事:

  1. 它包括上面的行
  2. 避免了单独运行 Metapost

唯一需要做的就是运行pdflatex两次(仅当文档中的费曼图发生变化时才需要第二次运行)。

需要注意的另一件事是,该代码在两个方面是错误的:为了完成这项工作而全局重新定义不是一个好主意\P,因为在使用正常命令时会遇到问题\P。你本地重新定义它,但最好不要这样做。 同样适用于\L。 还请注意,\noexpand该代码中的 是错误的。

\documentclass{article}
\usepackage{feynmp-auto}
\usepackage{amsmath}
\begin{document}

\unitlength = 1mm

\begin{fmffile}{diagram}
\newcommand\fdP[2]{%
  \begin{fmfgraph*}(70,20)
    \fmfi{#1}{#2}
    \newcommand\fdL[2]{\fmfiv{%
      dec.shape=circle,dec.size=3thin,
      dec.fill=1,lab.dist=5thick,
      lab=\texttt{%
        \scriptsize ##1}}{##2}}
    \fdL{sw}{sw}\fdL{.3[nw,,ne]}{.3[nw,ne]}
   \fdL{ne}{ne}\fdL{.7[sw,,se]}{.7[sw,se]}
  \end{fmfgraph*}}
\fdP{plain}{sw .. .3[nw,ne]  
 .. .7[sw,se] .. ne}
\end{fmffile}

\end{document}

在此处输入图片描述

相关内容