识别在“文本模式”下拼写错误但在“数学模式”下正确的字符串

识别在“文本模式”下拼写错误但在“数学模式”下正确的字符串

我的文字编辑工作主要是发现拼写错误。我有一些由字符串组成的拼写错误,例如“ .”、“”、“ ,”、“ :”...(标点符号前的空格),我们在文本模式下认为这些拼写错误(例如“as follow :”),但在内联数学或数学环境中则不是问题(例如“$\mu .$”)。

通常我们使用自定义 emacs 的查询替换正则表达式来查找和纠正这些拼写错误,但是,由于 emacs 不区分数学模式和文本模式(我知道,我可以使用一些技巧来做到这一点,但这不是一个强大的解决方案),我通常会有很多误报(这非常无聊)。

我想知道是否有原生的 La​​TeX 解决方案可以做到这一点。我的意思不是查询替换,而是突出显示一些匹配的字符串。

例如,我找到了该xesearch包,但它不处理标点符号搜索。

以下是 MWE:

\documentclass[11pt]{article}
\pagestyle{empty}
\begin{document}

Punctuation , typos .

No problem with this string
\begin{equation}
(\mu + \nu) ,
\end{equation}
\end{document}

我也发现了,l3regex但我认为它对 LaTeX 代码执行正则表达式,而不是对预格式化的代码执行正则xesearch表达式。

欢迎任何提示、建议或有用的想法。

编辑。正如我在评论中回答的那样:“我要求一种技术来区分数学模式中的字符串和文本模式中的字符串,并仅突出显示第二个字符串”。

编辑2。我移动并在此处发布了相关问题:XeTeXinterchartoks:为什么“\eqref”和(\ref{…})布局中的“)”的解释不同?

答案1

您可以使用 xelatex 和\XeTeXinterchartoks

\documentclass[11pt]{article}
%
\usepackage{xcolor}

\newXeTeXintercharclass\mypunctclass
\XeTeXcharclass `\. \mypunctclass
\XeTeXcharclass `\, \mypunctclass
\XeTeXinterchartokenstate=1
\XeTeXinterchartoks 4095 \mypunctclass{\textcolor{red}{TYPO}}



\pagestyle{empty}
\begin{document}

Punctuation , typos .

Punctuation, typos.

No problem with this string
\begin{equation}
(\mu + \nu) ,
\end{equation}
\end{document}

在此处输入图片描述

答案2

为了遵循卡莱尔的传统,我将其命名为“宝石” \z。这里已为逗号、句号和冒号完成,但可以为其他测试设置附加循环。

如果我没有提请您注意 Ulrike 的评论,我会很失职,并指出 有很多陷阱\z。例如verbatim,材料以及有效参数列表中出现的违规语法都可能会导致编译错误。

已编辑,因此当有问题的位落在环境内时,它现在可以工作align。 我不会动态输出各部分(如果有问题的位落在参数内,则会导致问题),而是创建一个连接,其中\def每个.等都被替换为\ifmmode{} .\else\colorbox{cyan}{ .}\fi内部的\def。 只有在最后,defed 宏才会被重新命名。 [仅出于完整性考虑,可以通过定义而不是修订来\z@save获得原始行为]\newcommand\zz@[1]{#1}\newcommand\zz@[1]{\g@addto@macro\z@save{#1}}

\documentclass[11pt]{article}
\usepackage{xcolor,amsmath}
\makeatletter
\newcommand\z[1]{\def\z@save{}\z@A#1 ,\z@end\z@save}
\long\def\z@A#1 ,#2\z@end{%
  \z@B#1 .\z@end%
  \ifx\z@end#2\else\zz@{\ifmmode{} ,\else\colorbox{cyan}{ ,}\fi}\z@A#2\z@end\fi}
\long\def\z@B#1 .#2\z@end{%
  \z@C#1 :\z@end%
  \ifx\z@end#2\else\zz@{\ifmmode{} .\else\colorbox{orange}{ .}\fi}\z@B#2\z@end\fi}
\long\def\z@C#1 :#2\z@end{%
  \zz@{#1}%
  \ifx\z@end#2\else\zz@{\ifmmode{} :\else\colorbox{yellow}{ :}\fi}\z@C#2\z@end\fi}
\newcommand\zz@[1]{\g@addto@macro\z@save{#1}}
\makeatother
\pagestyle{empty}
\begin{document}
\z{
Punctuation , typos : such as 3 .75 and such .

No problem with this string
\begin{equation}
(3 .7\mu + \nu) ,
\end{equation}

\begin{align} 
\mathcal{A}_{\text{reg}}:\qquad ( - l_u/2+\epsilon_u , - l_\phi/2+\epsilon_\phi ) 
  \rightarrow ( l_u/2-\epsilon_u , l_\phi/2-\epsilon_\phi )\,. \end{align}
And again , are there these problems : a nd b .
}
\end{document}

在此处输入图片描述

相关内容