使用 graphicx 插入 eps 图形(未找到文件)

使用 graphicx 插入 eps 图形(未找到文件)

当我跑步时安德鲁·罗伯特import.tex在 MikTeX 中我收到一条错误消息,说未找到图像文件:

! LaTeX Error: File `chick' not found.

See the LaTeX manual or LaTeX Companion for explanation.
Type  H <return>  for immediate help.
 ...                                              

l.21   \includegraphics{chick}

?

我已将图像文件(在本例中chick.eps)放在与的同一文件夹中import.tex

答案1

您可能使用pdflatex而不是latex。前者实际上是推荐的,但不支持 EPS 图形,只支持 JPG、PNG 和 PDF。您应该使用例如 将 EPS 转换为 PDF。TeX Liveepstopdf的较新版本pdflatex应该通过运行名为 的限制版本(出于安全原因)来自动执行此转换repstopdf

答案2

使用微特克斯您必须根据所使用的引擎使用推荐的图形格式。

因此,如果你使用乳胶—主要在队列 latex→dvips→pstopdf—你只能使用每股收益、PCX、BMP、MSP、PICT 或 PNTG,所有这些文件扩展名都不同,有时还会有其他结尾。EPS 是 latex→dvips 最推荐的文件格式,因为 EPS 的尺寸可以自行检测graphics/graphicx。对于其他文件格式,您需要具有尺寸的附加 bb 文件或使用选项boundingbox

如果你正在使用pdflatex直接 PDF 输出时,您只能使用 PDF、JPEG、PNG 和 MPS。(注意:MPS 是由 EPS 生成的子类型,需要安装MetaPost的部分。)ConTeXt

TeX 直播自 2010 年起,已添加对 EPS 到 PDF 的即时转换支持。这应在框外激活。转换包括三个部分:

  1. graphics.cfg支持文件扩展名的文件,.ps甚至.eps使用带有直接 pdf 输出的 pdflatex。
  2. LaTeX 包epstopdf,使用 shell 转义将 eps 动态转换为 pdf韓國
  3. texmf.cnf带有设置shell_escpape = pshell_escape_commands = repstopdf的A。

因此,如果您自 2010 年以来一直使用 TeX Live,则可以将 EPS 与 pdflatex 一起使用并直接进行 PDF 输出。

微特克斯您也可以使用即时转换。在这种情况下,您必须epstopdf自行加载 LaTeX 包(有关详细信息,请参阅手册),并且必须--enable-write18在调用时设置命令行选项pdflatex。如果您pdflatex从 LaTeX 编辑器中调用,请查看编辑器或配置文件设置和编辑器手册以了解您可以在哪里添加此命令行选项。

您可以使用以下方法测试即时转换:

\begin{filecontents*}{\jobname.eps}
%!
%%BoundingBox:100 100 172 172
100 100 moveto
72 72 rlineto
72 neg 0 rlineto
72 72 neg rlineto
stroke
100 100 moveto
/Times-Roman findfont
72 scalefont
setfont
(A) show
showpage
\end{filecontents*}
\documentclass{article}
\usepackage{graphicx}
\usepackage{ifpdf}

\begin{document}
\ifpdf
  You are using pdf\LaTeX. If you see the picture, on-the-fly conversion does work!
\else
  You need to use pdflatex to test the on-the-fly conversion! You may see the
  original eps file without conversion now:
\fi

\includegraphics{\jobname.eps}
\end{document}

除了使用即时转换之外,您还可以使用以下方法将每个 EPS 转换为 PDF:epstopdf。在这种情况下,您可以使用以下方法删除图片周围的多余空白pdfcrop

请注意,有时转换为 PDF 会导致 PDF 的边界框不正确。在这种情况下,您应该%%PageBoundingBox在 PS 文件中搜索并将此行的四个维度复制到%%BoundingBox文件开头或结尾的行(替换您在那里找到的值)。即时转换将在下次运行 pdflatex 时使用这些新值。如果您使用手动转换,请不要忘记再次执行此操作。

要将 PDF 转换为 EPS,建议使用pdftops --eps。这是来自的命令行实用程序pdf。请注意,这不仅适用于 Linux,也适用于 Windows。您也可以使用pdf2psghostscript命令行实用程序。但结果可能不如 的结果好pdftops

答案3

我遇到了无法使用 TeXworks 读取 eps 文件的问题。我通过在 tex 文件中添加以下行解决了该问题:

\usepackage{epstopdf}

然后我使用以下命令调用该文件:

\includegraphics[scale=0.9]{SecularGmst.eps}

答案4

文件内容的第一行应为“%!PS”而不是“%!”,以避免出现 epstopdf.cpp 中的“无效的二进制 DOS 标头”,网址为 ftp://163.143.1.21/pub/tex/miktex-svn/miktex-latest/Programs/MiKTeX/epstopdf/epstopdf.cpp

我的设置是 C:\Pub\Tex>pdflatex -version

MiKTeX-pdfTeX 2.9.4225 (1.40.12) (MiKTeX 2.9)

J.Gélinas

相关内容