什么原因导致latex.exe无法直接导入*.jpg,*.png,*.pdf?

什么原因导致latex.exe无法直接导入*.jpg,*.png,*.pdf?

从内部来看,是什么原因导致 latex.exe 无法直接导入 *.jpg、*.png、*.pdf?

答案1

Knuth TeX(最初的 TeX 引擎)并不直接支持任何图像,我们唯一能做的就是用\special命令告诉dvi驱动程序处理图像文件,当.dvi文件通过驱动程序转换为 PostScript 后Dvips,就可以支持 PostScript 图像;并且dvipdfm(x)支持 pdf/png/jpg 格式。

TeX 需要知道导入图像的边界框。Eps 文件通常是 ASCII 文本,并且有一个元注释,如

%!PS-Adobe-3.0 EPSF-3.0
%%BoundingBox: 276 362 335 429

这样 eps 大小的图片就可以用 TeX 很好的渲染了。但是 TeX 自身无法判断二进制图片文件(JPEG、PNG 等)的大小,需要借助诸如extractbb(主要用于 dvipdfm) 或(使用 pdfTeX) 之类的工具。bmpsize.sty

如果dvi不是输出格式,现代 TeX 引擎(pdfTeX、XeTeX 和 LuaTeX)可以很好地导入二进制图像。

答案2

年龄!TeX 开发时,这些标准都不存在。事实上,当时只有点阵打印机!在我看来,Knuth 明智地决定冻结 TeX 的开发,并集中精力使其变得更好、更无错误,这些标准后来通过诸如 之类的软件包的命令special添加graphicx

答案3

TeX 对图形不感兴趣,它只需要一个边界框,其余部分由导入过滤器驱动程序完成,并且 LaTeX 除了支持 ps、eps、mp 和一些位图格式之外不支持其他格式...

答案4

在 LaTeX 步骤(从 tex 到 dvi)中,LaTeX 只需要知道图像的大小。由于 eps 是一个简单的文本文件,因此 LaTeX 可以读取该文件并找到边界框信息。对于二进制图像格式,这是不可能的。但是,如果您将边界框信息提供给 LaTeX - 无论是使用 bb 键还是 .bb 文件 - LaTeX 都会很乐意处理每幅图像:

\documentclass[12pt]{article}

\usepackage{graphicx}
\begin{document}
\includegraphics[bb = 0 0 100 100]{dontexit.exotic}
\end{document}

在第二步(dvi 到 ps 或 pdf 或 ...)中,插入真实图像,并且此步骤中可以处理哪些格式取决于驱动程序(dvips、dvipdfmx、...)。其中一些(dvips)可以原生处理 eps,一些可以处理 png,一些可以在后台调用转换器(例如 dvipdfmx 可以调用 ghostscript 来处理 eps)。

相关内容