![带有 pdflatex 的 eps 图形](https://linux22.com/image/243881/%E5%B8%A6%E6%9C%89%20pdflatex%20%E7%9A%84%20eps%20%E5%9B%BE%E5%BD%A2.png)
在最近关于这个网站的讨论中,我了解到使用
\usepackage[pdf]{pstricks}
使得pdflatex
在包含eps
和pstricks
文件的文件上运行成为可能(以及psfrag
用法)。现在有几个问题:
如果文件不包含
pstricks
,只有eps
和psfrag
,则仍然可以使用此方法。但是有没有不需要加载的方法可以做到这一点pstricks
?我知道这auto-pst-pdf
是一种方法,另一种方法是加载epstopdf
,还有其他方法可以在不加载这些文件的情况下实现这一点吗?也许通过添加一个选项graphicx
?在所有这些方法中,每次
pdflatex
运行时,所有eps
和pstricks
文件都会转换为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
在现代系统中,如果存在
foo.eps
文件,则会在运行过程中\includegraphics{foo}
自动转换为。foo.pdf
pdflatex
此转换仅进行一次,因此
foo.pdf
将留待下次运行。如果您更改eps
文件,它将重新生成。
考虑这个例子:
\documentclass{article}
\usepackage{graphicx}
\begin{document}
\includegraphics{tmp1}
\end{document}
当我运行它时,我有文件tmp1.eps
,但没有tmp1.png
或tmp1.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