如何让 AUCTeX 对 babel 和 csquotes 宏指定的语言进行拼写检查?

如何让 AUCTeX 对 babel 和 csquotes 宏指定的语言进行拼写检查?

有可能babel让 AUCTeX 加载已加载的语言的拼写词典。另一个便利之处在于它可以对文档中的语言变化做出适当的反应。可以使用和的宏进行此类更改babelcsquotes那么,是否可以根据文档的语言宏让 AUCTeX 以正确的语言进行拼写检查?

下面是一个测试文档。解决方案是让 AUCTeX 自动对第一段英文进行拼写检查,其他段落则根据指定的语言进行拼写检查。

\documentclass{article}

\usepackage[danish,english]{babel}
\usepackage{csquotes}

\begin{document}

In computing, a spell checker (or spell check) is an application
program that flags words in a document that may not be spelled
correctly.

\foreignquote{danish}{I computerterminologi er en stavekontrol en
design feature eller et software program designet til at tjekke
stavningen af ord i et dokument og som normalt kan komme med forslag
til stavningsforslag.}

\hyphenquote{danish}{I computerterminologi er en stavekontrol en
design feature eller et software program designet til at tjekke
stavningen af ord i et dokument og som normalt kan komme med forslag
til stavningsforslag.}

\foreignlanguage{danish}{I computerterminologi er en stavekontrol en
design feature eller et software program designet til at tjekke
stavningen af ord i et dokument og som normalt kan komme med forslag
til stavningsforslag.}

\begin{hyphenrules}{danish} I computerterminologi er en stavekontrol
en design feature eller et software program designet til at tjekke
stavningen af ord i et dokument og som normalt kan komme med forslag
til stavningsforslag.
\end{hyphenrules}

This sentence should be spell checked with an English dictionary.

\end{document}

答案1

假设您正在使用flyspell,是的,这是可能的!

包裹flyspell-babel.el应该完全按照您的要求进行:读取 babel 的内联语言更改,并flyspell为该语言启动一个进程。

根据文档:

此包所做的解析有其局限性,因此它不能用于任意 LaTeX 代码。我希望这些限制在实践中不会影响大多数人的典型用法。第一个语言声明通常由传递给 babel 命令的最终语言选项决定,该选项在 \begin{document} 之后生效。此后,您可以使用 语句、环境和命令\usepackage 切换声明的语言 。您还可以定义自己的语言切换命令,并使用 flyspell-babel 注册这些命令。\selectlanguageotherlanguage\foreignlanguage

因此,您可能必须让其他语言更改命令(例如\foreignquote)为人所知flyspell-babel

此软件包需要以下软件包flyspell-multi.el(目前尚无已知链接)或ispell-multi.elflyspell同时启动多个进程,以避免在滚动浏览语言变化的文件时出现速度减慢。

安装说明

将文件flyspell-babel.el放在flyspell-multi.el加载路径并将以下几行添加到您的.emacs

(autoload 'flyspell-babel-setup "flyspell-babel")
(add-hook 'latex-mode-hook 'flyspell-babel-setup)

要添加对其他命令的支持,请将以下行添加到.emacs

(add-to-list 'flyspell-babel-command-alist ("hyphenquote" "hyphenquote"))
(add-to-list 'flyspell-babel-command-alist ("foreignquote" "foreignquote"))
(add-to-list 'flyspell-babel-environment-alist ("hyphenrules" "hyphenrules"))

所有功劳归于彼得·赫斯林,这两个包的作者。

相关内容