flyspell
在使用时,配置忽略某些环境的内容emacs
会很有用,例如或。flyspell
tikzcd
tikzpicture
例如,在下面的文档中,人们想要flyspell
忽略环境中的单词“asdf” myenv
。
\documentclass{standalone}
\newenvironment{myenv}{}{}
\begin{document}
\begin{myenv}
asdf
\end{myenv}
\end{document}
如何实现这一点?
答案1
将以下代码添加到您的~/.emacs
文件中告诉flyspell
忽略环境的内容myenv1
,myenv2
和myenv3
:
(put 'LaTeX-mode 'flyspell-mode-predicate 'auctex-mode-flyspell-skip-myenv)
(defun auctex-mode-flyspell-skip-myenv ()
(save-excursion
(widen)
(let ((p (point))
(count 0))
(not (or (and (re-search-backward "\\\\begin{\\(myenv1\\|myenv2\\|myenv3\\)}" nil t)
(> p (point))
(or (not (re-search-forward "^\\\\end{\\(myenv1\\|myenv2\\|myenv3\\)}" nil t))
(< p (point))))
(eq 1 (progn (while (re-search-backward "`" (line-beginning-position) t)
(setq count (1+ count)))
(- count (* 2 (/ count 2)))))))))
)
(add-hook 'LaTeX-mode-hook (lambda () (setq flyspell-generic-check-word-predicate
'auctex-mode-flyspell-skip-myenv)))
可以根据需要在 第 7 行和 第 9 行同时添加环境。