这个问题导致了一个新的方案的出现:
feynmp-auto
要在用户中放置的命令行是什么
快速构建命令Texmaker 获得:
LaTeX +邮政+ dvips + ps2pdf + 查看PDF
也就是说,为了避免每次运行 LaTeX 命令时手动运行mpost
run on file.mp
,TeXMaker 有什么方法可以帮我做这件事吗?
我使用了 TexMaker 自己的向导,它产生了以下命令行:
latex -interaction=nonstopmode %.tex|mpost --interaction nonstopmode |dvips -o %.ps %.dvi|ps2pdf %.ps|"C:/Program Files (x86)/Adobe/Reader 10.0/Reader/AcroRd32.exe" %.pdf
它看起来很好,但是当我运行文件时,file.tex
它需要无限的时间而没有结果。
答案1
使用更新的 TeX Live 2012,无需mpost
从命令行调用,因为允许在 LaTeX 运行期间调用此程序。只需修改定义即可\endfmffile
运行 Metapost。
\documentclass{article}
\usepackage{feynmp}
\usepackage{ifpdf}
\ifpdf
\DeclareGraphicsRule{*}{mps}{*}{}
\fi
\makeatletter
\def\endfmffile{%
\fmfcmd{\p@rcent\space the end.^^J%
end.^^J%
endinput;}%
\if@fmfio
\immediate\closeout\@outfmf
\fi
\IfFileExists{\thefmffile.mp}{\immediate\write18{mpost \thefmffile}}{}
\let\thefmffile\relax
}
\makeatother
\begin{document}
\begin{fmffile}{abc}
\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}
这将产生abc.1
在下次运行中包含的内容,并带有通常的命令行调用。
使用 MiKTeX 可能无法工作,这取决于mpost
“受限 shell”是否允许。