抱歉,我不得不删除上一个问题。我没有意识到我把这里的所有东西(从我的其他问题)都弄乱了。隐藏的想法实际上如下,但我以错误的方式简化了它。
我应该这样回答这个问题。
LaTeX 允许我们在输入文件中使用 PSTricks 代码。为什么 pdfTEX 不直接支持此功能?
注意: auto-pst-pdf
可以允许我们在用 pdfTeX 编译的输入文件中使用 PSTricks,但功能有限,例如
- 我们不能使用 PSTricks 在 JPEG、PNG、PDF 图像上绘制对象
- 我们可以使用 PSTricks 在方程式上添加注释,
\label{}
但交叉引用不再起作用。
答案1
TeX 对图像一无所知,TeX 只对边界框感兴趣。其余的都由驱动程序文件完成。如果你想支持 eps、tiff、gif 等,那么就创建一个,将高度/宽度传递给 TeX 并包含图像。如果处于 pdf 模式,则无法在 pdflatex 中使用 PSTricks 代码,因为它没有内部驱动程序来检测命令\special
并xetex
运行外部程序将所有\special
片段转换为 pdf 代码。
答案2
PSTricks 的工作原理是创建 PostScript 代码,该代码将嵌入\special{...}
DVI 中的部分,然后由某些“驱动程序”集成到 PostScript 输出中,例如通过将 DVI 转换为 PS 的程序。稍后,另一个程序可以在将其转换为 PDF 或其他格式时解释此生成的 PostScript 文档。(PostScript 是一种用于打印机的编程语言,但也在普通计算机上运行的一些程序中实现,例如大多数将 PostScript 文件转换为其他格式的程序。)
(一些 DVI 预览器也理解一些 PSTricks 特技。)
如果我们不生成 PS,而是直接生成 PDF,则无法在其中嵌入 PSTricks 代码。一些工具(例如)auto-pst-pdf
提供了一些解决方法,首先创建一个包含文档中与 PSTricks 相关的部分的 DVI,将其转换为 PS(从而集成 PSTricks 代码),然后将 PS 转换为 PDF 以嵌入(作为图像)到最终的 PDF 输出中。
当然,这存在使用图像的常见问题,如您所提到的。这也仅适用于 PSTricks 部分,这些部分与主要内容明显可分,如您在标签示例中所见。
它不能与 PDFTeX 直接支持的其他图像格式一起使用,因为这些格式不能以正常的 LaTeX-DVI-PS 方式嵌入。
对于原始问题(为什么 PDFLaTeX 不支持嵌入 EPS):
PDFTeX 直接支持某些图像格式(JPEG、PNG)的主要原因是这些格式实际上可以直接作为对象包含在 PDF 格式中,而无需进行任何转换。类似的规则适用于 PDF 文件(当然需要进行一些转换)。
对于 EPS 来说,这是不可能的。
当然,可以自动调用一些转换程序(从评论来看,这似乎是用 TeXLive 2010/2011 完成的),但这不会比手动调用同一工具进行转换产生更好的结果。