![如何判断何时对任何给定的 tex 文件使用 pdflatex、latex 和 xelatex?](https://linux22.com/image/250469/%E5%A6%82%E4%BD%95%E5%88%A4%E6%96%AD%E4%BD%95%E6%97%B6%E5%AF%B9%E4%BB%BB%E4%BD%95%E7%BB%99%E5%AE%9A%E7%9A%84%20tex%20%E6%96%87%E4%BB%B6%E4%BD%BF%E7%94%A8%20pdflatex%E3%80%81latex%20%E5%92%8C%20xelatex%EF%BC%9F.png)
我正在编写一个自动编译管道,它应该能够将任何给定的 tex 文件编译成 pdf。输入 tex 文件的多样性主要体现在它们使用的图形格式以及它们如何包含它们。这些图形大多是eps
、、ps
和pdf
,并且它们可能使用psfig
等graphix
来包含它们。
我不太清楚应该在管道中设置哪些标准,这些 tex 文件中使用的图形处理包应该触发 pdflatex、latex 和 xelatex 中的哪个 latex 编译方案。有什么简单的经验法则或表格可以让我查找规则吗?谢谢。
编辑
我知道这个问题一开始就提得不好。我想我想要的是 1) 是否有一个工具可以编译各种具有不同图形格式和图形处理包的 tex 文件。2) 如果没有,是否有一个特定的关键字我应该在文件中搜索,告诉我应该使用哪种编译方法?
我目前的设计是逐一尝试各种编译方案(latex->pdflatex->xelatex),直到成功。
答案1
“编译任何给定的 tex 文件”将不起作用,因为它们是不正确的且无法编译的文件。
如果假设给定的 tex 文件可以编译,但您不知道如何编译:仅查看文件的内容是不够的。例如,如果您的文件如下所示:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{graphicx}
\begin{document}
äöü
\includegraphics{image}
\end{document}
那么您不应该使用xelatex
(因为inputenc
),但是是否latex
可以pdflatex
使用(或两者)取决于外部图像的格式。
此外,虽然诸如fontspec
、polyglossia
或pstricks
驱动程序选项之类的内容\usepackage[dvips]{....}
都表明了预期的引擎,但它们并不排除其他引擎(因为它们可以隐藏在条件中),如果您不完全信任 tex 文件的代码,您就不能完全依赖它们——并且恕我直言,您不应该信任使用过时软件包(例如psfig
或试图将.ps
(非封装的后记)包含为图形的代码。
最后:找到正确的引擎可能还不够。有些文档只能通过附加的命令行开关 ( --shell-escape
) 进行编译,或者需要特殊的格式。
答案2
如果问题不仅限于图形,则可以提供一个标准。
如果您找到\usepackage{fontspec}
,那么它必须是首先使用的 xelatex 或 lualatex。