我正在尝试将TeXWorks编辑器配置为使用与TeXMaker相同的语法着色.但是,TexWorks使用正则表达式来指定应该着色的内容.不幸的是,它没有数学的默认设置.
我想匹配之间的一切$和$,之间的一切\[和\]之间,一切都\(和\)之间的一切$$和$$.后者不是很必要,因为它在LaTeX文档中很少使用.
它也可以是多个正则表达式来匹配所有情况.
当然\$是逃跑,所以我不想匹配,也不\\[等.
然后,我也想匹配之间的一切\begin{equation}和\end{equation},但说起来很简单.
"无法做到"是一个可能的答案.
试试这个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\}
)
))))
Run Code Online (Sandbox Code Playgroud)
请参阅此正则表达式:https://regex101.com/r/wP2aV6/25
由于此正则表达式使用递归,因此它将正确处理嵌套的数学表达式.
这仅适用于PCRE兼容的正则表达式引擎.它需要一些正则表达式引擎的高级功能,如负面的后观,条件表达式和递归,这些都不是所有正则表达式引擎中都存在的.
除非你需要一些非常简单的东西,否则我建议不要使用这个正则表达式而是使用适当的LaTeX解析器.
| 归档时间: |
|
| 查看次数: |
2709 次 |
| 最近记录: |