如何在 TeXnicCenter 中运行 Metafont

如何在 TeXnicCenter 中运行 Metafont

我想用该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 描述的过程!

相关内容