我试图配置TeXWorks编辑器使用与TeXMaker相同的语法着色。然而,TexWorks使用正则表达式来指定应该着色的内容。遗憾的是,它没有math的默认设置。
我想匹配$
和$
之间的所有内容,在[
和]
之间,(
和)
之间的一切,$$
和$$
之间的所有内容。后者不是很必要,因为它很少在LaTeX文档中使用。
也可以有多个正则表达式来匹配所有的大小写。
当然$
是转义的,所以我不想匹配它,\[
也不想匹配。
然后我还想匹配begin{equation}
和end{equation}
之间的所有内容,但这很简单。
"It cannot be done"是一个可能的答案。
试试这个PCRE正则表达式:
(?<!\) # negative look-behind to make sure start is not escaped
(?: # start non-capture group for all possible match starts
# group 1, match dollar signs only
# single or double dollar sign enforced by look-arounds
((?<!$)${1,2}(?!$))|
# group 2, match escaped parenthesis
(\()|
# group 3, match escaped bracket
(\[)|
# group 4, match begin equation
(\begin{equation})
)
# if group 1 was start
(?(1)
# non greedy match everything in between
# group 1 matches do not support recursion
(.*?)(?<!\)
# match ending double or single dollar signs
(?<!$)1(?!$)|
# else
(?:
# greedily and recursively match everything in between
# groups 2, 3 and 4 support recursion
(.*(?R)?.*)(?<!\)
(?:
# if group 2 was start, escaped parenthesis is end
(?(2)\)|
# if group 3 was start, escaped bracket is end
(?(3)\]|
# else group 4 was start, match end equation
\end{equation}
)
))))
查看这个正则表达式的实际操作:https://regex101.com/r/wP2aV6/25
由于这个正则表达式使用递归,它将正确处理嵌套的数学表达式。
这只适用于PCRE兼容的正则表达式引擎。它需要正则表达式引擎的一些高级特性,比如负向后看、条件表达式和递归,这些在所有正则表达式引擎中都不存在。
除非你需要一些非常简单的东西,否则我建议不要使用这个正则表达式,而是使用一个合适的LaTeX解析器。