我有很多 LaTeX 文件,我的 AucTeX 已设置为自动以 LaTeX 模式打开所有 *.tex 文件。但最近我开始使用 ConTeXt,对于这些文件(也以 .tex 结尾),我想使用 ConTeXt 模式。有没有办法在文件中嵌入一些东西来告诉 Emacs 打开正确的模式?
我可以使用以下方式启动一个文件,例如
-*- mode: context; -*-
效果很好,但即使它是文件中的第一行,ConTeXt 仍然会解析它并将其写入输出,尽管它出现在之前\starttext
。
有人有更好的建议吗?我认为明智的做法是将所有 ConTeXt 文件移动到一个目录树中,并.dir-locals.el
在该目录中设置一个文件,该文件将告诉 Emacs 使用 ConTeXt 模式打开所有 .tex 文件。但我仍然希望能够逐个文件地执行此操作。
值得一提的是,我正在使用 Linux。
谢谢!
答案1
您不能简单地%
在这行前面放一个吗?
例如,我在我的文件的最后几行中使用了它。
%%% Local Variables:
%%% mode: latex
%%% TeX-master: "spezialisierung"
%%% End:
但
% -*- mode: context; -*-
第一行也应该可以工作。
答案2
作为手动设置文件局部变量的替代方法mode
(这是首选,因为它不依赖于启发式方法),AucTeX 会自动识别 TeX 格式!它了解 LaTeX(通过 检测\documentclass
)、ConTeXt(通过 检测\starttext
)和 Plain TeX。例如,您可以执行以下操作:
- 创建一个文件
abc.tex
。AucTeX 默认以 LaTeX 模式启动。 - 进入
\starttext
。 - 点击
C-c C-n
强制重新解析缓冲区。 - AucTeX 自动检测您计划编写 ConTeXt 文档并切换到 ConTeXt 模式。
- 点击
M-x add-file-local-variable RET mode RET RET
将模式添加为文件局部变量。这样,即使自动识别失败,文件也会始终触发 ConTeXt 模式。