从emacs拼写检查中删除Sweave文档中的代码块

Joh*_*ton 16 emacs r sweave

在Sweave文档中,R中的代码块是从主文本中设置的,如下所示:

Catz are well known for their fur & pur. 

<<echo = false>>=
catz <- 1 + 2 
@
Run Code Online (Sandbox Code Playgroud)

我想对LaTeX部分进行拼写检查(并标记"Catz")但是要跳过代码块(不是标记为"catz").在一个很长的文档中,在代码部分中为每个"拼写错误"命中"SPC"变得乏味.

hua*_*uan 16

尝试将此添加到您的emacs init文件:

(add-to-list 'ispell-skip-region-alist '("^<<.*>>=" . "^@"))
Run Code Online (Sandbox Code Playgroud)

编辑(Re Michael Hoffman的评论):

如果启用了Flyspell,则还需要这两个附加表达式:

(defun flyspell-eligible ()
  (let ((p (point)))
    (save-excursion
      (cond ((re-search-backward (ispell-begin-skip-region-regexp) nil t)
             (ispell-skip-region (match-string-no-properties 0))
             (< (point) p))
            (t)))))

(put 'latex-mode 'flyspell-mode-predicate 'flyspell-eligible)
Run Code Online (Sandbox Code Playgroud)

对于其他模式,请latex-mode使用适当的主模式名称替换最后一个表达式.