我使用的是 ConTeXt MKIV(如果这有区别的话)。问题是我在 vim 中编写 ConTeXt,并且我有一个名为的语法/样式检查器插件句法的问题是它对 tex 文件使用了 chktex,这会对完全合理的 ConTeXt 发出大量警告,例如
\starttext
\startsection[title={Testing ConTeXt}]
This is a little test for \CONTEXT.
\stopsection
\stoptext
chktex 给我:
> test.tex 第 1 行中的警告 1:命令以空格终止。\starttext
^ test.tex 第 3 行中的警告 13:可能应使用句子间间距 (`\@')。这是对 \CONTEXT 的一个小测试。
^ test.tex 第 4 行中的警告 1:命令以空格终止。\stopsection
^ test.tex 第 5 行中的警告 1:命令以空格终止。\stoptext
^ 未打印任何错误;打印了 4 条警告;未显示用户隐藏警告;未显示行隐藏警告。
现在,忽略这些警告很容易,但获取样式警告实际上非常有用。只是当你养成了忽略它们的习惯时,就没那么有用了,而这正是一直收到错误警告对你造成的后果。
所以问题是:ConTeXt 有类似的东西吗?或者我是否可以将某些选项传递给 chktex,使其在这里表现得更令人满意?
答案1
我是 ChkTeX 的当前维护者。不幸的是,我从未使用过 ConTeXt,所以我不知道良好的 ConTeXt 支持需要什么。不过,我很乐意支持 ConTeXt,所以如果你有任何具体问题,请随时将其报告为错误。也欢迎补丁。代码库非常小(C 就其价值而言)。
你可以关闭任何不同的警告(并打开一些默认情况下未打开的其他警告),从命令行或 chktexrc 文件中。因此,对于您提到的特定问题,您可以简单地关闭警告 1(命令以空格结尾)。就我个人而言,我这样做是因为我发现该特定警告带来的麻烦比它的价值更大(这不是我通常遇到的问题)。如果您希望保留该警告,但只是希望一些宏有效,您可以将这些命令添加到Silent
chktexrc 部分。事实上,由于错误 36945,您可以使用正则表达式执行此操作(假设 ChkTeX 是在支持正则表达式的情况下编译的)。根据您的反馈,我计划默认添加\\start.*
和\\stop.*
,但如果您打开错误,我一定会记住(您可以告诉我应该添加的其他宏)。
至于警告 13,它似乎可能是一个错误,因为在这种情况下 LaTeX 确实会产生正确的输出(尽管添加\@
不会造成任何影响)。如果它对您很重要,请打开一个错误,我会看看我能做些什么。
答案2
你可以使用 进行基本的样式检查(匹配开始和结束标签等)mtx-check
。只需运行
mtxrun --script check filename