我使用问题集类来键入我的问题集。我经常有一个类似于以下内容的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中的拼写错误,但不幸的是它没有。如this post中所述,问题似乎是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文件时似乎没有任何事情发生。我使用脚本名来检查是否正在加载语法文件(默认语法文件也在我之后加载)。我也可以通过将文件类型设置为plaintex来标记拼写错误,如建议here,但这似乎是一个可怕的黑客。似乎应该有更好的方法在我的problem1.tex文件中进行拼写检查。
答案 0 :(得分:1)
以上评论对我有用(syntax spell toplevel
),即使以后运行,此设置也适用于我(因此无需从/ usr复制任何内容)。但是我不希望所有tex文件的设置都是活动的 - 而是我为 .vimrc 中的给定文件自定义它:
au BufNewFile,BufRead body.tex syntax spell toplevel
答案 1 :(得分:0)
我针对此问题使用了骇客工具。在文件顶部添加以下内容:
\iffalse{}\section{vim-hack}\fi{}
通过这种方式,vim的语法和拼写算法可以找到一些令牌来启动它们,但是由于“如果”,该部分将被乳胶本身忽略。
(我没有测试是否有更多专业的编辑器会忽略此虚拟部分,因此,如果同时使用vim和编辑器,可能会需要更多的黑客手段。)