mpgraphics:无法在 Windows 上使用 MikTex 进行编译

mpgraphics:无法在 Windows 上使用 MikTex 进行编译

这是来自 mpgraphics 包文档的一个示例:

\documentclass{article}
\usepackage{mpgraphics}
\begin{document}
\begin{mpinline}
draw (20,20)--(0,0)--(0,30)--(30,0)--(0,0)
\end{mpinline}
\end{document}

我得到了这样的信息: 在此处输入图片描述

我正在使用:
- mpost 版本 1.504(MiKTeX 2.9)
- pdfTeX,版本 3.1415926-2.3-1.40.12(MiKTeX 2.9)
- MiKTeX EPS-to-PDF 转换器 2.9.3275(MiKTeX 2.9)

我使用 wrige 使用 TexMaker 进行编译,并通过以下方式进行编译:
latexmk -e "$pdflatex=q/pdflatex -synctex=1 -shell-escape -interaction=nonstopmode/" -pdf %.tex

或者

pdflatex -interaction=nonstopmode -synctex=1 -shell-escape %.tex (结果相同)

我究竟做错了什么?

您可以找到日志文件这里. 示例编译自:pdflatex -interaction=nonstopmode -enable-write18 -synctex=1 -shell-escape %.tex

生成的pdf:关联

编辑:
我尝试通过命令行进行编译。这是我得到的结果: 包含源代码和日志的整个文件夹

答案1

正如我在之前的评论中所说,您的示例在我的 OSX 机器上编译没有问题,所以我猜测问题出在您的 Windows 设置上。

仔细查看您的_COMMAND_LINE_.txt文件,我注意到第 72 行的内容如下:

Preloading the plain mem file, version 1.004))epstopdf: -o: unknown option

请注意行末的错误。您的epstopdf程序拒绝-o选项,因此它不会生成 pdf 输出。mpgraphics包发出警告,不知何故,它没有出现在标准输出或 .log 文件中,而是出现在最终的 pdf 中。这就是您的文档包含奇怪的文本mpgrahphics********等的原因。(这可以被视为 mpgraphics 实现中的一个错误。)

尽管如此,问题还是出在你的epstopdf程序上。mpgraphics软件包建议使用“最近”版本的epstopdf。我不知道问题是你的epstopdf版本不够新还是epstopdf在 Windows 上坏了。

您可以尝试在命令行中执行epstopdf --help并了解它使用哪个开关来代替-o(用于设置结果的名称pdf)。一旦您知道这一点,您就可以破解文件mpgraphics.sty(在该文件中搜索字符串-o,在我的版本中是第 77 行),并进行适当的更改。

答案2

正如用户 JLDiaz 所说,问题是由于程序的可选参数造成的-oepstopdf我确信epstopdfTeXLive 中的程序在任何平台上的行为都相同。我在 Windows 上使用 TeXLive 2012 尝试过,它成功了,但它无法与 MiKTeX 2.9 提供的 epstopdf 一起使用。目前不需要破解任何东西,只需将您的最小工作示例更改为:

\documentclass{article}
\usepackage{mpgraphics}
\makeatletter
\renewcommand*{\mpg@cmd@epstopdf}[2]{epstopdf \mpg@epstopdf@opts\space --outfile "#2" "#1"}
\makeatother
\begin{document}
\begin{mpinline}
draw (20,20)--(0,0)--(0,30)--(30,0)--(0,0)
\end{mpinline}
\end{document}

也就是说,MiKTeX 2.9 中的 epstopdf 接受,--outfile而 TeXLive 2012 中的 epstopdf 接受-o。我尽力修复这个问题mpgraphics,并向 CTAN 发布一个新版本。但我认为没有人能实现条件\ifMiKTeX,所以我认为我唯一能做的就是向MiKTeX包中添加选项。但如果你使用 TeXLive 而不是 MiKTeX,那么当前版本的包应该不会有问题。

更新:新版本现已在 CTAN 上线。TDS 可从这里

答案3

在 Unix 系统上,我得到了所需的结果

latexmk -pdf -pdflatex='pdflatex --shell-escape --interaction=nonstopmode %O %S' 文件名.tex

在 Windows 上可能应该是引号",所以我建议尝试给 Texmaker 指令

latexmk -pdf -pdflatex="pdflatex --shell-escape --interaction=nonstopmode %O %S" %.tex

如果--shell-escape不起作用你应该尝试--enable-write18


您可以尝试使用gmp(不使用 )epstopdf,而不是mpgraphics

\documentclass{article}
\usepackage[shellescape]{gmp}
\begin{document}
\begin{mpost}
draw (20,20)--(0,0)--(0,30)--(30,0)--(0,0)
\end{mpost}
\end{document}

我用前面的调用测试了它latexmk并且它似乎有效。

披露:我是的作者gmp

相关内容