背景

尽管使用 Emacs + AucTeX 编译 TeX 文件已经十多年了,但非常惭愧的是我一直是用最最基本的功能,比如 C-c C-c 编译 LaTeX 文件,C-c C-l 查看编译错误信息等等,从来没有钻研探索过 AucTeX 的高级功能。因为平时使用的最多的还是单 TeX 文件的编译。偶尔需要编译包含多个 TeX 文件的文档时,每次都需要切换到主 TeX 文件然后再编译。

最近因为写讲义的原因,发现经常跳转到主文件太麻烦了,于是才想探索一下,看看 AucTeX 能否直接使用相同的快捷键编译主文件,省去每次跳转的步骤。经过简单的搜索以后,发现果然可以,只需要让 AucTeX 了解多文档的结构关系,设置清楚哪篇为主文档,哪些为辅助文档即可。

解决方式

比如,如果现有多篇 TeX 文档,其结构关系是

Main.tex

  • ch0.tex
  • ch1.tex

则只需在每篇文档的 buffer 中使用快捷键 C-c _, AucTeX 就会提示你确认此 buffer 是否为主文档。

另一种做法是,在主 TeX 文档的 buffer 结尾加上

%%% Local Variables:
%%% mode: latex
%%% TeX-master: t
%%% End:

在辅 TeX 文档的 buffer 结尾加上

%%% Local Variables:
%%% mode: latex
%%% TeX-master: "Main"
%%% End:

注意 Main 的结尾不加 .tex 。这样,无论是在编辑哪个文档,都可以使用 C-c C-c 直接对主文档进行编译了.

最后,如果多篇文档的结构关系是

./ Main.tex

  • ./ch0/ch0.tex
  • ./ch1/ch1.tex

那么,只要把 %%% TeX-master: “Main” 改成 %%% TeX-maser: “../Main” 即可.