当我将文档划分到主文件和其他缓冲区之间时,AucTeX 并未提供完成环境和宏的提示。我使用以下方式设置主文件:
%%% TeX-master: "mymasterfile"
编译和查看工作正常。但是,例如,如果主文件使用 beamer,按下C-c C-e
缓冲区,AuCTeX 不会向我建议frame
环境(它在主文件中正确执行)。我如何让缓冲区知道主文件中的类加载?
答案1
AUCTeX 手册提供了:
5.2 多文件文档
[...] AUCTeX 会跟踪给定文档中使用的宏、环境、标签和样式文件。为了使其与多文件文档配合使用,AUCTeX 必须有一个地方来放置有关文档中文件的信息。这是通过
auto
在文档所在的目录中放置一个子目录来实现的。每次保存文件时,AUCTeX 都会将有关该文件的信息写入目录中auto
。加载文件时,AUCTeX 将读取目录中auto
有关您加载的文件和 指定的主文件的TeX-master
信息。由于主文件(可能间接)包含文档中的所有其他文件,因此 AUCTeX 将从文档中的所有文件中获取信息。这意味着您将从每个文件中获得信息,例如,在文档中任何位置定义的所有标签的完成。如果是,AUCTeX 将
auto
自动创建目录。如果没有它,文档中的文件将彼此一无所知,除了主文件的名称之外。TeX-auto-save
non-nil
下一节将提供更多信息:
5.3 TeX 文件的自动解析
AUCTeX 很大程度上依赖于能够通过解析缓冲区来提取信息。由于解析缓冲区可能有点慢,因此解析功能最初是禁用的。我们鼓励您通过在文件中添加以下几行来启用它们
.emacs
。(setq TeX-parse-self t) ; Enable parse on load. (setq TeX-auto-save t) ; Enable parse on save.
后一个命令将使 AUCTeX 在
auto
每次存储 TeX 文件时将解析的信息存储在目录中的子目录中。如果 AUCTeX 在加载文件时找到预解析的信息,则无需重新解析缓冲区。auto
目录中的信息对于多文件文档也很有用,因为它允许每个文件访问文档中所有其他文件中的解析信息。这是通过首先从主文件中读取信息,然后递归地从存储在主文件中的每个文件中读取信息来完成的。还可以通过改变文件局部变量来基于每个文件完成变量的更改。
%%% Local Variables: %%% TeX-parse-self: t %%% TeX-auto-save: t %%% End:
即使您已禁用自动解析,也可以通过按 强制生成样式信息C-c C-n。这通常是最好的选择,因为您将能够决定何时需要重新解析文件。