让 Emacs 根据文件在 LaTeX/ConTeXt 模式之间进行选择?

让 Emacs 根据文件在 LaTeX/ConTeXt 模式之间进行选择?

我有很多 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。例如,您可以执行以下操作:

  1. 创建一个文件abc.tex。AucTeX 默认以 LaTeX 模式启动。
  2. 进入\starttext
  3. 点击C-c C-n强制重新解析缓冲区。
  4. AucTeX 自动检测您计划编写 ConTeXt 文档并切换到 ConTeXt 模式。
  5. 点击M-x add-file-local-variable RET mode RET RET将模式添加为文件局部变量。这样,即使自动识别失败,文件也会始终触发 ConTeXt 模式。

相关内容