Vim:在部分LaTeX文件中进行拼写检查

4

我使用一个问题集类来打印我的问题集。我经常有一个类似以下的main.tex文件。

\documentclass{problemset}

\begin{document}

\input{problem1}

\end{document}

我通常为每个问题创建不同的文件。例如,problem1.tex 可能如下所示。
\begin{problem}
there is a spelling errrrrrrror here
\end{problem}

我希望vim能够检测到problem1.tex中的拼写错误,但不幸的是它并没有。正如这篇文章所述,问题似乎是vim无法识别任何语法区域:当我运行以下命令时:

:echo synIDattr(synID(line("."),col("."),1),"name")

我没有得到任何输出。举个例子,如果我将problem1.tex更改为以下内容,则会识别出拼写错误。

\section{dummy section}
\begin{problem}
there is a spelling errrrrror here
\end{problem}

我尝试为我的问题环境创建语法区域,但是失败了。 我的尝试包括创建以下 .vim/syntax/tex.vim 文件。
syntax region texProblem start="\\begin{problem}" end="\\end{problem}" contains=@Spell

当我创建这个tex.vim文件时,似乎没有任何反应。我使用scriptnames检查语法文件是否正在加载(默认语法文件也在我的语法文件之后加载)。我还可以通过将文件类型设置为plaintex来标记拼写错误,如此处建议的那样,但这似乎是一种可怕的hack。看起来应该有更好的方法在我的problem1.tex文件中进行拼写检查。


确实是我的问题。有什么解决办法吗? - Floyd
1
在我的情况下,将 syntax spell toplevel 添加到 .vim/syntax/tex.vim 中起作用了。 - Stirling
жҲ‘жӯЈеңЁdebian wheezy/7.8дёӢиҝҗиЎҢvim73зҡ„vim-latexsuiteпјҢ并且е®ғд№ҹеҜ№жҲ‘жңүз”Ёпјҡcp /usr/share/vim/vim73/syntax/tex.vim .ж·»еҠ ''syntax spell toplevel''пјҢзҺ°еңЁеңЁ\include-edж–Ү件дёӯжҳҫзӨәжӢјеҶҷй”ҷиҜҜгҖӮи°ўи°ўпјҢStirlingпјҒ - Floyd
2个回答

1

上面的评论对我有用 (syntax spell toplevel),即使稍后运行,这个设置也对我有效(因此不需要从 /usr 复制任何内容)。但是我不想让这个设置对所有 tex 文件都生效 - 相反,我在我的 .vimrc 中为给定的文件自定义它:

au BufNewFile,BufRead body.tex syntax spell toplevel

2
你能否将其改写为指令形式?这样会更好作为一个合适的答案。[答案] - Nick Volynkin

0
我使用了一个hack来解决这个问题。将以下内容添加到您的文件顶部:
\iffalse{}\section{vim-hack}\fi{}

通过这种方式,Vim的语法和拼写算法会找到一些令牌以开始工作,但由于“if”的存在,该部分将被LaTeX本身忽略。

(我没有测试更专业的编辑器是否会忽略此虚拟部分,因此如果您同时使用vim和编辑器,则可能需要进行更多的技巧处理。)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接