如何避免 AUCTeX 错误推断文档的语言?

如何避免 AUCTeX 错误推断文档的语言?

一位使用我编写的类的同事报告说,当他按下双引号键时,AUCTeX 会插入引号。调查显示,TeX-language-fr-hook尽管文档本身不是法语的,但还是会调用该函数。

如果我理解 @egreg 在回答我同事的问题时做出的评论(在 emacs 中双引号会产生 guillemets) AUCTeX 认为该注释是法语的原因可能是这样的\usepackage[french]{babel}

实际上,类中有这样的代码:\iffrench \RequirePackage[english,francais]{babel}\fi 只有当french用户选择了我们类的选项时,才会触发此条件分支。AUCTeX 似乎认为该行表示文档是法语的,无论如何。我该如何安排它,以便\usepackage从 AUCTeX 隐藏它,或者仅在需要时才起作用?

完整内容请参阅 在 emacs 中双引号会产生 guillemets

编辑:下面是 emacs 缓冲区中的几行内容*Messages*,可能对追踪问题有用:

Loading /var/lib/auctex/emacs24/msp.elc...done
Loading /usr/share/emacs/site-lisp/auctex/style/babel.el (source)...done
Loading /var/lib/auctex/emacs24/francais.elc...done
Loading /usr/share/emacs/site-lisp/auctex/style/francais.el (source)...done
Loading /usr/share/emacs/site-lisp/auctex/style/frenchb.el (source)...done
Loading /var/lib/auctex/emacs24/english.elc...done

答案1

我从*Messages*日志中推断出“有问题”的类是msp.cls。不幸的是,我在互联网上找不到它来测试它,但无论如何,/var/lib/auctex/emacs24/msp.elc文件中某处应该有一个"french"字符串。只需将其删除(您需要使用 root 权限编辑它,从 Emacs 问题中C-x C-f /sudo::/var/lib/auctex/emacs24/msp.elc RET打开它)即可完成。

答案2

感谢 Giordano 和 David Carlisle 提供的关键信息,下面是完整的答案。在包文件中,用 替换\RequirePackage[english,francais]{babel}\@nameuse{RequirePackage}[english,francais]{babel}现在,当您的用户 auctex 编译文件时(您也可以在 emacs 中使用 进行测试M-x TeX-auto-generate),该字符串francais将不再出现在输出中(通常放在 中~/.emacs.d/auctex/auto/msp.el),一切都会好起来。

相关内容