LaTeX 中的某些命令几乎从不包含有意义的单词。一些主要的例子是:
\label
\ref
\includegraphics
\input
\cite
然而在 TexMaker 中,全部单词包含在拼写检查中,这意味着每次检查都会出现大量误报。是否可以让拼写检查器忽略某些命令的内容?理想情况下,忽略的命令列表应可由用户编辑。
如果 TexMaker 无法实现此功能,是否有包含此功能的类似软件?
答案1
目前这是不可能的,正如第 187 期Texmaker 问题跟踪器。也许其他编辑器也有此功能,您可以在大列表:LaTeX 编辑器/IDE。
答案2
好的,我想我找到了一种解决方法 - 没有 Google 帐户,因此无法在错误报告中发布;任何人想要的话,如果有用的话,请随意在那里转发/通知。
无论如何,我首先发现使用\label
, 会使 TexMaker 忽略语法检查:
然后我查看了源代码texmaker-4.4.1.tar.bz2
,发现latexhighlighter.cpp
在关于这一节中,这部分内容被明确硬编码:
....
} else
if (tmp== '}' ){
blockData->code[i]=1;
setFormat( i, 1,ColorStandard);
state=StateStandard;
int poslab=buffer.indexOf("label{");
if (poslab!=-1)
{
for (k=poslab; k <i ; k++) {if (k>0 && k<text.length()) blockData->code[k]=1;}
}
...
因此,我基本上在之后插入了这个代码片段,以供引用(以差异格式显示):
--- latexhighlighter_orig.cpp 2014-01-02 11:58:33.000000000 +0100
+++ latexhighlighter.cpp 2015-06-10 20:34:55.293092059 +0200
@@ -263,6 +263,17 @@
{
for (k=poslab; k <i ; k++) {if (k>0 && k<text.length()) blockData->code[k]=1;}
}
+ // NB: buffer: "label{dfs}" ; text: "Testing; teaasting ... \label{dfs}" (the whole line); i is current closing brace pos - buffer.indexOf returns 0 if match!
+ QString tmpcmd=QString("cite{");
+ poslab=buffer.indexOf(tmpcmd);
+ if (poslab!=-1)
+ {
+ int startscan = i-buffer.length()+tmpcmd.length()+1; // with this, should scan only inside the {}
+ for (k=startscan; k <i ; k++) {
+ if (k>0 && k<text.length()) blockData->code[k]=1;
+ //qDebug() << "plab " << poslab << " " << k << " " << text.length() << " " << i << " " << blockData->data[k] << buffer << " " << text.at( k ) << " " << text;
+ }
+ }
poslab=buffer.indexOf("begin{verbatim}");
if(poslab != -1) {state=StateVerbatim;for (k=poslab; k <i ; k++) {if (k>0 && k<text.length()) blockData->code[k]=1;}}
poslab=buffer.indexOf("begin{verbatim*}");
重新编译后make
(只要您已经完成./BUILD.sh
一次构建),您将获得以下内容:
请注意,此补丁仅使 内部的\cite{}
拼写检查器不进行检查,而行的其余部分则进行检查,正如人们所期望的那样。同时请注意,这\label{}
显然会取消整行的拼写检查 - 显然这是一个错误,要修复它,还应该在检查中实现for (k=startscan; ...
而不是。for (k=poslab; ...
{label
最好使用像这样的文件spell/spellignore.txt
,但我现在没有时间提供完整的解决方案......
最后,为了进行比较,这是我的test.tex
:
\documentclass{article}
\begin{document}
Testing; teoesting....
Testing; teeesting.... \cite{testciiite} .... toreasdf \cite{sdkjfhwe} sdfgedtju
Testing; teaasting ... \label{dfs}
\end{document}
答案3
编辑于 2019 年 6 月 4 日:在较新版本的 TeXMaker 中,本答案中描述的功能已被删除。拼写检查器现在可对源文件进行操作。
这并非对您的问题的准确回答,而是达到同一目标的另一条路径:
Texmaker 有一个非常漂亮的功能:您可以将文档编译为 PDF,并在内部查看器中对 PDF 文件进行拼写检查。
编辑:如何对 PDF 文件进行拼写检查?编译 PDF 后,查看 PDF 预览窗口的最右侧。那里有一个带有熟悉的 ABC 的小图标。单击它,将弹出一个新窗口,其中包含要进行拼写检查的文本。