存在几种类型的图形文件,例如 jpeg eps pdf png tif jif。有些适用于 LaTeX + Dvips,有些适用于 PDFLaTeX。如何知道哪种类型适用于哪种处理器?
更令人困惑的是,metapost 生成 .eps 文件,但只要我输入四行咒语,我就可以将它们与 PDFLaTeX 一起使用。
有人能解释一下吗?
答案1
与 LaTeX 兼容的格式 (dvi
模式,使用dvips
):
eps
适用于 LaTeX 的格式(dvi
模式,使用dvipdfm
(x
)):
pdf
png
jpeg
eps
pdf
与 pdfLaTeX (模式)兼容的格式:
eps
(*)pdf
png
jpeg
jbig2
LuaTeX 还可以读取
采用这种工作方式的原因是,在dvi
模式下,TeX 仅为图形留出空间。eps
包含在输出中dvips
。
pdfLaTeXpdf
使用该格式提供的功能直接在 中包含图形。pdf
格式可以包含其他(pdfs
这并不奇怪)、png
、和图形。jpeg
jpeg2000
jbig2
(*) 尽管 pdfTeX 不能eps
直接合并文件,但现代 TeX 系统中的设置会自动将它们转换为pdf
,因此它们在实践中受到支持。
XeTeX 始终使用驱动程序,因此与使用传统的基于 DVI 的路由xdvipdfmx
具有相同的结果。dvipdfmx
请注意,LaTeXgraphics
包和相关帮助代码将自动搜索适当的文件扩展名。因此,扩展名应该是省略例如,当包含图形时
\includegraphics{foo}
对于文件foo.eps
。使用最新的 TeX 系统,这将允许例如pdfLaTeX 自动转换.eps
文件为 PDF 格式并“自动”找到它。
答案2
如今一切都变得非常简单。本质上,您只需要担心三种不同的文件格式:
矢量图形的 PDF
照片采用 JPEG 格式
PNG 适用于其他类型的光栅图形。
pdflatex 支持全部其中,几乎任何图形文件都可以转换为其中一种格式。
pdflatex 不仅支持这些,而且做得非常好。例如,生成的 PDF 文件中包含一个 JPEG 文件照原样。它不会被解压并重新压缩;没有任何丢失,并且您知道在文档中包含 100 KB 的 JPEG 文件会使生成的 PDF 文件正好扩大 100 KB。
(使用 latex + dvips + ps2pdf 等工具,一切都将变得不可预测;通常您会得到巨大的 PDF 文件或低质量的重新压缩的 JPEG 文件,或两者兼而有之。但幸运的是,如今您几乎总是可以使用 pdflatex 代替 latex。)
答案3
这不是问题的答案按照要求,但我认为它可能对那些试图弄清楚使用哪种格式以及如何选择它的人有用。
如果您使用图形包,并且您的意图是灵活(因为您希望能够从同一源文件生成不同的输出格式),那么有一个简单的方法可以避免必须知道使用哪种格式:如果您在命令中省略文件扩展名,\includegraphics
那么它会根据模式选择最佳的扩展名。因此,如果您有.eps
和.pdf
可用的图形版本,那么latex + dvips
将选择.eps
而pdflatex
将选择.pdf
。命令是:
\includegraphics{MonaLisa}
它选择哪一个甚至是可定制的:每个输出类型都有一个扩展名列表,它会遍历该列表,直到找到一个存在的文件。重新定义该列表会改变优先级。该列表存储在一个逗号分隔的宏中,因此\Gin@extensions
重新定义会改变顺序。这里有一个简单的方法可以确保.pdf
在生成 PDF 输出时首先选择(因为奇怪的是,PDF 输出的列表以 开头.png
):
\documentclass{article}
\usepackage{ifpdf}
\ifpdf
\PassOptionsToPackage{pdftex}{graphicx}
\fi
\usepackage{graphicx}
\ifpdf
\makeatletter
\let\orig@Gin@extensions\Gin@extensions
\def\Gin@extensions{.pdf,\orig@Gin@extensions} %prepend .pdf before .png
\makeatother
\fi
\begin{document}
\includegraphics{pullback}
\end{document}
当然,要真正转换格式,有很多方法可以做到。TeXLive 附带一个将文件epstopdf
转换.eps
为的程序.pdf
,甚至还有一个 LaTeX 包epstopdf.eps
如果它检测到图像,它将尝试为您进行转换(假设 PDFTeX 被允许进行 shell 转义)!
对于命令行转换(即在 U*nx 系统上,包括 MacOSX),ghostscript 可以轻松地来回转换,并附带两个脚本,pdf2ps
可以ps2pdf
进行转换,并且netpbm
工具可以在 PDF、PS 和许多其他图形格式之间进行转换(当然还有许多其他这样的工具)。
因此,通过确保目录中有每种类型的图像,您可以确保 Latex 将选择正确的图像进行正确的输出。
答案4
这个问题已经得到了关于两个 Tex 引擎的图形格式的一般问题的出色答案,但 Metapost 部分却被忽略了(只是为了混淆问题,metapost 产生了.eps
,但我可以在 pdflatex 中使用这些,只要我输入四行咒语),所以我将记录您可以从 Metapost 获得什么。
Hobby 最初的实现,,mpost
仅支持 Postscript 作为其可缩放图形格式 Metapost,并附带一些其他实用程序以允许排版标签(makempx
,mpto
)。还有其他几个选项。
- 对于原始问题最有用的是
mptopdf
,它是 Hobby 的修改版,mpost
用于本地创建 PDF,我认为它是由 Hans Hagen 与 Metafun 扩展一起实现的,并且是mplib
用于在 Luatex 中设置 Metapost 的代码库的父级。请参阅 Pragma 的Metapost 和 Metafun页。 - John Hobby 扩展了 Metapost 程序,使其能够以与 Tex 非常相似的方式在 Troff 排版系统中使用。这为设置 Metapost 提供了可能性,但在 Tex 中使用不方便,而且我认为这些可能性没有得到积极维护。
- Taco Hoekwater 已扩展
mplib
/mptopdf
本机支持 SVG,这是一种可以嵌入 PDF 的图像格式,在某些情况下它是一种比 PS 或 PDF 更方便的图形表示。