XeLaTeX Ghostscript 调用 EPS 到 PDF 转换失败

XeLaTeX Ghostscript 调用 EPS 到 PDF 转换失败

用适当简约的示例进行了更新。

我已经为此苦苦挣扎了一段时间。我有一个使用 pdfLaTeX 和 epstopdf 的设置,运行良好,但我需要 mathspec,所以我已经转向 XeLaTeX。我的所有图表现在都出现了问题。以下是示例:

\documentclass[twoside,english,xetex]{article}
\usepackage{amsmath} 
\usepackage{mathspec}
\setmainfont{Linux Libertine}
\setmathsfont(Digits,Latin,Greek){Neo Euler}
\usepackage{graphicx}
\begin{document}

\section*{A heading}

Some maths.

\begin{equation}
\frac{V_{O}}{V_{I}}=-\frac{R_{F}}{R_{I}}
\end{equation}

And a figure.

\begin{figure}[hb]
\includegraphics{plotd}
\caption{A graph in EPS format}
\end{figure}

\end{document}

plotd 调用 EPS 中的图表。文件可在此处获取http://ge.tt/4W5Mxsb1/v/0

没什么特别的,是由 Gnuplot 创建的。我从 XeLaTeX 中得到的错误如下(我认为错误可能出现的部分是:

LaTeX Font Warning: Font shape `EU1/NeoEuler(0)/m/it' undefined
(Font)              using `EU1/NeoEuler(0)/m/n' instead on input line 13.

<plotd.eps>
Overfull \hbox (16.34999pt too wide) in paragraph at lines 20--21
[][] 
[1] ("C:\Users\Li'lOne\Documents\p1l2\minim.aux")MiKTeX GPL Ghostscript 9.05: **** Could not open the file C:/Users/LilOne/AppData/Local/Temp//xdvipdfmx.b3cf3efa229c343a1415f680eef8e9a9 C:/Users/LilOne/Documents/p1l2/plotd.eps .
**** Unable to open the initial device, quitting.

** WARNING ** Couldn't open font map file "kanjix.map".
** WARNING ** Filtering file via command -->mgs.exe -q -dNOPAUSE -dBATCH -dEPSCrop -sDEVICE=pdfwrite -dCompatibilityLevel=1.5 -dAutoFilterGrayImages=false -dGrayImageFilter=/FlateEncode -dAutoFilterColorImages=false -dColorImageFilter=/FlateEncode -sOutputFile="C:/Users/Li'lOne/AppData/Local/Temp//xdvipdfmx.b3cf3efa229c343a1415f680eef8e9a9" "C:/Users/Li'lOne/Documents/p1l2/plotd.eps" -c quit<-- failed.
** WARNING ** Image format conversion for "C:/Users/Li'lOne/Documents/p1l2/plotd.eps" failed...
** ERROR ** pdf_ref_obj(): passed invalid object.

Output file removed.

完整日志可在此处查看:http://pastebin.com/ymNYwsYn

虽然我可以手动使用 epstopdf 转换每个文档,但这将是一个耗时且不可行的长期过程。我已在使用 MikTeX 2.9 的 Windows 7 和使用最新版本的 TeXLive 的 Linux Mint 15 上尝试过此操作(上述日志来自 Windows,但错误相同)。我的脚本设置为执行系统命令,因此这不是问题。

如您能提供任何建议我将非常感激。

答案1

问题在于,你正在\includegraphics{}对无效的 EPS 文件执行操作。当这种情况发生在我身上时,EPS 文件已经一年没有变化了,所以我不得不假设这是我使用的较新版本的 XeLaTeX 造成的(要么是新的错误,要么是新版本对粗糙的 EPS 文件的容忍度较低)。

如何查找导致此问题的 EPS:

遗憾的是,错误消息并未指出哪个 EPS 是罪魁祸首。您可以注释掉所有语句\includegraphics{},然后再重新添加,直到缩小问题范围。我将它们全部注释掉以利用 xelatex 的工作原理,然后我一次添加几个,直到找到问题。

更自动化的方法是:不要让 xelatex 直接生成 PDF 文件,而是让它生成 .xdv 文件,然后使用 xdvipdfmx 生成 PDF。出于某种原因,将其分为两个步骤会显示文件名。

xelatex -no-pdf thefile
xdvipdfmx -V5 thefile

您将看到如下输出:

xdvipdfmx:warning: Error locating image file "02_aw_regthisprod.eps"
xdvipdfmx:warning: Failed to read image file: 02_aw_regthisprod.eps
xdvipdfmx:warning: Interpreting special command PSfile (ps:) failed.
xdvipdfmx:warning: >> at page="1111" position="(142.227, 70.2613)" (in PDF)
xdvipdfmx:warning: >> xxx "PSfile="02_aw_regthisprod.eps" llx=0 lly=0 urx=361 ury=583 rwi="

在这种情况下02_aw_regthisprod.eps就存在问题。

注意:在我的情况下,有 3 个 EPS 文件导致了问题。这 3 个文件都是整页插页。可能是图像的尺寸导致了问题。

如何修复该问题:

对我来说,这是一个将 EPS 转换为 PDF 的问题。

步骤 1:转换文件:

epspdf 02_aw_regthisprod.eps

第 2 步:编辑用于\includegraphics{}语句的文件名:

OLD: \includegraphics{03_Informit_ad.eps}
NEW: \includegraphics{03_Informit_ad.pdf}

这解决了我的问题。希望它对你有用!

相关内容