为什么 aux 文件使用 \relax 进行初始化?

为什么 aux 文件使用 \relax 进行初始化?

在 source2e(具体来说是 ltfiles.dtx)下\document,给出了以下定义:

34 \if@filesw
35 \immediate\openout\@mainaux\jobname.aux
36 \immediate\write\@mainaux{\relax}%
37 \fi

用简单的英语来说:aux 文件的第一行以 开头\relax

该服务的目的是什么\relax

答案1

LaTeX 一直都是这样做的(并且没有真正记录下为什么),但是我认为它有两个目的。

  • 正如 egreg 在评论中提到的那样,这意味着如果操作系统不允许在那时写入文件,那么您会在文档开始时收到错误,而不是在稍后 latex 需要辅助文件的某个不可预测的地方。

  • 通过写入某些内容,您可以确保文件永远不会为空,即使文档中没有交叉引用。这对于调试很有用(例如,这意味着您可以根据辅助文件中没有内容来检测“首次运行”)。

相关内容