如何让 AuCTeX 了解主文件中的类?

如何让 AuCTeX 了解主文件中的类?

当我将文档划分到主文件和其他缓冲区之间时,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-savenon-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。这通常是最好的选择,因为您将能够决定何时需要重新解析文件。

相关内容