我想用该feynmf
包创建一个费曼图。编译时没有出现错误,但没有生成任何图表。
我在网上搜索过,发现我必须创建一个 mf 文件。
我使用的代码是
\documentclass{article}
\usepackage{feynmf}
\begin{document}
\unitlength = 1mm
% determine the unit for the size of diagram.
... here comes an example with feynmf
\begin{fmffile}{one} %one.mf will be created for this feynman diagram
\fmfframe(1,7)(1,7){ %Sets dimension of Diagram
\begin{fmfgraph*}(110,62) %Sets size of Diagram
\fmfleft{i1,i2} %Sets there to be 2 sources
\fmfright{o1,o2} %Sets there to be 2 outputs
\fmflabel{$e^-$}{i1} %Labels one of the left sources
\fmflabel{$e^+$}{i2} %Labels one of the left sources
\fmflabel{${\ensuremath{\erlpm}}$}{o1} %Labels one of the right outputs
\fmflabel{${\ensuremath{\erlpm}}$}{o2} %Labels one of the right outputs
\fmf{fermion}{i1,v1,i2} %Connects the sources with a vertex.
\fmf{fermion}{o1,v2,o2} %Connects the outputs with a vertex.
\fmf{photon,label=$\gamma/Z^0$}{v1,v2} %Labels the conneting line.
\end{fmfgraph*}
}
\end{fmffile}
问题是我必须创建一个.mf 文件,运行 LaTeX,运行 one.mf 然后再次运行 LaTeX。
我该如何运行并创建 run.mf?
答案1
egreg 建议使用 MetaPost 而不是 MetaFont,这是可行的方法。如果您不习惯使用命令行,我会建议一种在 Windows 中转换文件的简单方法。
打开Notepad
并添加以下行:
mpost %1
然后保存的时候使用Drop MF file here.cmd
作为名称(别忘了加上.cmd
扩展名)并All files (*.*)
在选项中选择Type
。下图说明了这一步:(抱歉,我的 Windows 是葡萄牙语的,但想法是一样的)
现在我的文件夹中有以下文件:
编译mydoc.tex
(.tex
其中的文件是 egreg 建议您使用的文件)并将生成其他文件:
现在,魔术来了。选择one.mp
并拖动它drop MF file here.cmd
,然后释放它:
等待几秒钟,我们就可以开始了!
现在,mydoc.tex
再次编译,你的图表就会出现:
希望能帮助到你。:)
答案2
现在最好使用feynmp
来代替feynmf
。这几乎是相同的输入,但它需要运行mpost
而不是mp
:
\documentclass{article}
\usepackage{feynmp} % <- change here
\DeclareGraphicsRule{.1}{mps}{.1}{} % <- line to be added if using pdflatex
%\DeclareGraphicsRule{.1}{eps}{.1}{} % <- line to be added if using pdflatex
\begin{document}
\unitlength = 1mm
% determine the unit for the size of diagram.
... here comes an example with feynmf
\begin{fmffile}{one} %one.mf will be created for this feynman diagram
\fmfframe(1,7)(1,7){ %Sets dimension of Diagram
\begin{fmfgraph*}(110,62) %Sets size of Diagram
\fmfleft{i1,i2} %Sets there to be 2 sources
\fmfright{o1,o2} %Sets there to be 2 outputs
\fmflabel{$e^-$}{i1} %Labels one of the left sources
\fmflabel{$e^+$}{i2} %Labels one of the left sources
\fmflabel{${\ensuremath{\erlpm}}$}{o1} %Labels one of the right outputs
\fmflabel{${\ensuremath{\erlpm}}$}{o2} %Labels one of the right outputs
\fmf{fermion}{i1,v1,i2} %Connects the sources with a vertex.
\fmf{fermion}{o1,v2,o2} %Connects the outputs with a vertex.
\fmf{photon,label=$\gamma/Z^0$}{v1,v2} %Labels the conneting line.
\end{fmfgraph*}
}
\end{fmffile}
\end{document}
当图片发生变化时,必须从 shell 运行mpost one
,下次运行 LaTeX 时将包含正确的图片。
几分钟后将添加一些关于如何运行 Metapost 的建议
答案3
解决了!!!
我在之后添加了以下“脚本”
\DeclareGraphicsRule{.1}{mps}{.1}{}
和之前
\begin{document}
代码如下
\makeatletter
\def\endfmffile{%
\fmfcmd{\p@rcent\space the end.^^J%
end.^^J%
endinput;}%
\if@fmfio
\immediate\closeout\@outfmf
\fi
\ifnum\pdfshellescape=\@ne
\immediate\write18{mpost \thefmffile}%
\fi}
\makeatother
费曼突然出现了!!!我还用了另一个代码,而不是我发布的第一个代码
\begin{fmffile}{oneone}
\begin{fmfgraph}(40,25)
% Note that the size is given in normal parentheses
% instead of curly brackets.
% Define external vertices from bottom to top
\fmfleft{i1,i2}
\fmfright{o1,o2}
\fmf{fermion}{i1,v1,o1}
\fmf{fermion}{i2,v2,o2}
\fmf{photon}{v1,v2}
\end{fmfgraph}
\end{fmffile}
这两个代码都生成了漂亮的图表。非常感谢你们的努力和耐心!对于任何使用此软件包的人:为了更正图表,必须删除所有文件(.mp、.1、.t1、.txt)并执行 Paulo 描述的过程!