我正在尝试学习如何使用 feynMF 绘制费曼图,我从此链接并编译。然而,即使在这个简单的例子中,我也从手动的它给了我! I detected a fmfgraph environment outside of fmffile. ! I detected a fmfgraph environment outside of fmffile.
这些错误。我该如何解决这个问题?谢谢
\documentclass[11pt]{article}
\usepackage{feynmf}
\begin{document}
\begin{fmfgraph}(40,25)
\fmfpen{thick}
\fmfleft{i1,i2}
\fmfright{o1,o2}
\fmf{fermion}{i1,v1,v3,o1}
\fmf{fermion}{o2,v4,v2,i2}
\fmf{photon}{v1,v2}
\fmf{photon}{v3,v4}
\fmfdotn{v}{4}
\end{fmfgraph}
\end{document}
答案1
如今,最好使用feynmp
而不是feynmf
,因为这样更容易生成图片。feynmp
还具有使用 Metapost 的显著特点,可生成EPS
矢量图形,而 FeynMF 使用 Metafont,可生成位图。据该软件包的创建者 Thorsten Ohl 称,feynmf
它已经过时了。
无论如何,您必须告诉包要写入 Metapost 代码的辅助文件的名称,这可以通过打开环境来完成fmffile
。
\documentclass[11pt]{article}
\usepackage{feynmp}
\DeclareGraphicsRule{*}{mps}{*}{} % for being able to read the produced file
\begin{document}
\begin{fmffile}{afilename}% choose something better!
\begin{fmfgraph}(40,25)
\fmfpen{thick}
\fmfleft{i1,i2}
\fmfright{o1,o2}
\fmf{fermion}{i1,v1,v3,o1}
\fmf{fermion}{o2,v4,v2,i2}
\fmf{photon}{v1,v2}
\fmf{photon}{v3,v4}
\fmfdotn{v}{4}
\end{fmfgraph}
\end{fmffile}
\end{document}
运行 LaTeX 后,您必须运行mpost afilename
然后重新编译。如果您有较新的 TeX 发行版,则可以使用feynmp-auto
:
\documentclass[11pt]{article}
\usepackage{feynmp-auto}
\begin{document}
\begin{fmffile}{afilename}% choose something better!
\begin{fmfgraph}(40,25)
\fmfpen{thick}
\fmfleft{i1,i2}
\fmfright{o1,o2}
\fmf{fermion}{i1,v1,v3,o1}
\fmf{fermion}{o2,v4,v2,i2}
\fmf{photon}{v1,v2}
\fmf{photon}{v3,v4}
\fmfdotn{v}{4}
\end{fmfgraph}
\end{fmffile}
\end{document}
并且您只需编译两次(仅当费曼图的代码发生变化或添加了一些新图时才需要第二次运行 LaTeX)。