带有 pdflatex 的 eps 图形

带有 pdflatex 的 eps 图形

在最近关于这个网站的讨论中,我了解到使用

\usepackage[pdf]{pstricks}

使得pdflatex在包含epspstricks​​文件的文件上运行成为可能(以及psfrag用法)。现在有几个问题:

  1. 如果文件不包含pstricks,只有epspsfrag,则仍然可以使用此方法。但是有没有不需要加载的方法可以做到这一点pstricks?我知道这auto-pst-pdf是一种方法,另一种方法是加载epstopdf,还有其他方法可以在不加载这些文件的情况下实现这一点吗?也许通过添加一个选项graphicx

  2. 在所有这些方法中,每次pdflatex运行时,所有epspstricks文件都会转换为pdf文件,即使它们没有更改。有没有一种方法可以阻止这种情况,并且只有pdf当文件自上次编译以来发生变化时才转换为?

谢谢

答案1

TeX Live 2010 和 2011 会自动将 EPS 文件转换为 PDF,但看起来它一直在转换,即使 EPS 文件没有改变。根据 Herbert 的建议,这应该可以解决问题。它也可能适用于其他发行版,但我没有尝试过。

\documentclass{article}
\usepackage{graphicx}
\usepackage{epstopdf}
\epstopdfsetup{update} % only regenerate pdf files when eps file is newer
\begin{document}
\includegraphics[width=\textwidth]{sine} % loads sine-eps-converted-to.pdf
\end{document}

答案2

  1. 在现代系统中,如果存在foo.eps文件,则会在运行过程中\includegraphics{foo}自动转换为。foo.pdfpdflatex

  2. 此转换仅进行一次,因此foo.pdf将留待下次运行。如果您更改eps文件,它将重新生成。

考虑这个例子:

\documentclass{article}
\usepackage{graphicx}
\begin{document}
\includegraphics{tmp1}
\end{document}

当我运行它时,我有文件tmp1.eps,但没有tmp1.pngtmp1.pdf在我的工作目录中。日志显示:

(/usr/local/texlive/2011/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg
File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Liv
e
))
Package epstopdf Info: Source file: <tmp1.eps>
(epstopdf)                    date: 2011-12-12 13:41:25
(epstopdf)                    size: 15351 bytes
(epstopdf)             Output file: <tmp1-eps-converted-to.pdf>
(epstopdf)             Command: <repstopdf --outfile=tmp1-eps-converted-to.pdf 
tmp1.eps>
(epstopdf)             \includegraphics on input line 4.
runsystem(repstopdf --outfile=tmp1-eps-converted-to.pdf tmp1.eps)...executed sa
fely (allowed).

Package epstopdf Info: Result file: <tmp1-eps-converted-to.pdf>
(epstopdf)                    date: 2011-12-16 14:36:28
(epstopdf)                    size: 7774 bytes.

<tmp1-eps-converted-to.pdf, id=1, 346.00266pt x 37.00826pt>
File: tmp1-eps-converted-to.pdf Graphic file (type pdf)

<use tmp1-eps-converted-to.pdf>
Package pdftex.def Info: tmp1-eps-converted-to.pdf used on input line 4.
(pdftex.def)             Requested size: 346.0018pt x 37.00815pt.

如你所见,文件已转换。然后我pdflatex再次运行:

Package epstopdf Info: Source file: <tmp1.eps>
(epstopdf)                    date: 2011-12-12 13:41:25
(epstopdf)                    size: 15351 bytes
(epstopdf)             Output file: <tmp1-eps-converted-to.pdf>
(epstopdf)                    date: 2011-12-16 14:36:28
(epstopdf)                    size: 7774 bytes
(epstopdf)             Command: <repstopdf --outfile=tmp1-eps-converted-to.pdf 
tmp1.eps>
(epstopdf)             \includegraphics on input line 4.
Package epstopdf Info: Output file is already uptodate.

<tmp1-eps-converted-to.pdf, id=1, 346.00266pt x 37.00826pt>
File: tmp1-eps-converted-to.pdf Graphic file (type pdf)

如您所见,没有进行任何转换。

然后我改变了我的tmp1.eps并再次运行`pdflatex。日志显示:

(/usr/local/texlive/2011/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg
File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Liv
e
))
Package epstopdf Info: Source file: <tmp1.eps>
(epstopdf)                    date: 2011-12-16 14:40:16
(epstopdf)                    size: 620519 bytes
(epstopdf)             Output file: <tmp1-eps-converted-to.pdf>
(epstopdf)                    date: 2011-12-16 14:36:28
(epstopdf)                    size: 7774 bytes
(epstopdf)             Command: <repstopdf --outfile=tmp1-eps-converted-to.pdf 
tmp1.eps>
(epstopdf)             \includegraphics on input line 4.
runsystem(repstopdf --outfile=tmp1-eps-converted-to.pdf tmp1.eps)...executed sa
fely (allowed).

Package epstopdf Info: Result file: <tmp1-eps-converted-to.pdf>
(epstopdf)                    date: 2011-12-16 14:40:21
(epstopdf)                    size: 19423 bytes.

<tmp1-eps-converted-to.pdf, id=1, 241.90375pt x 188.705pt>
File: tmp1-eps-converted-to.pdf Graphic file (type pdf)

<use tmp1-eps-converted-to.pdf>
Package pdftex.def Info: tmp1-eps-converted-to.pdf used on input line 4.
(pdftex.def)             Requested size: 241.90315pt x 188.70453pt.

如你所见,现在文件已重新生成!

答案3

关于您的第一个问题:epstopdf使用 eps 图像时,包是一个不错的选择。

关于第二个问题:只有创建不图像或创建所有图像的可能性。

答案4

我尝试了很多帖子中提到的选项。它也不是epstopdf-shell-escape

对我来说,解决方案是安装texlive-font-utils

相关内容