一个引擎,比如 pdfLaTeX,在编译 TeX 文件时会生成一堆文件。我的问题是:如果我们切换到另一个引擎,比如这里的 XeLaTeX,我们是否需要删除所有这些生成的文件以确保编译正确?
我已经使用 LaTeX 有一段时间了,有时我确实会在不同的引擎之间切换,但我没有遇到过编译问题。
答案1
一般来说不是,但有时是的,也就是说删除总是最安全的,但速度会更慢,因为可能需要更多次运行来解决交叉引用,但在某些情况下总是有可能出错并且您需要删除,所以在这些情况下,先删除会更快。
就我个人而言,除非出现错误,否则我不会删除。
切换引擎时“旧”辅助文件出现错误的最常见原因不是引擎的变化,而是包或选项的变化,它们在检测到正在使用的引擎后采用了不同的默认值。
例如,此文件可与 pdflatex 或 lualatex(或 xelatex)一起使用,但在从 pdflatex 切换到 luatex 时需要删除 aux 和 toc 文件,因为目录信息是使用inputenc
luatex/xetex 案例中未定义的内部命令编写的。
这里有一个相当明显的对正在使用的引擎的明确测试和一个加载 inputenc 和 fontenc 的分支,但在其他情况下,代码分支可以隐藏在某些包代码中,并且在文档中不可见,但在 aux 文件中具有类似的效果。
\documentclass{article}
\ifx\Umathchar\undefined
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\fi
\begin{document}
\tableofcontents
\section{hellö world}
\end{document}