在这问题,我询问了如何突出显示多个 markdown 列表标点符号项。我现在想将突出显示扩展到罗马数字,因为 Pandoc 的扩展支持这些数字,我使用这些扩展从 markdown 源创建 PDF。
Markdown Extended syntax definition
在中,line 1180
我插入了以下内容regex
:
^\s{0,4}([0-9]+|[ivxlcdm]+|[IVXLCDM]+)\.(?=\s\w)
现在看起来像这样:
list-paragraph:
- match: \G\s+(?=\S)
push:
- meta_scope: meta.paragraph.list.markdown
- match: ^\s*$
pop: true
- match: '^\s{0,4}([*+-])(?=\s)'
scope: punctuation.definition.list_item.markdown
- match: '^\s{0,4}([0-9]+|[ivxlcdm]+|[IVXLCDM]+)\.(?=\s\w)'
captures:
1: punctuation.definition.list_item.markdown punctuation.definition.list_item.number.markdown
2: punctuation.definition.list_item.markdown
- include: inline
我理解,这不会考虑罗马数字的有效性,但我无论如何都会正确输入它们,所以我不在乎它是否也会突出显示其他无效的罗马数字。此外,一旦 markdown 中的列表以有效数字开头,通常,i.
编号会在创建 PDF 时由 Pandoc 自动计算,因此即使输入i.
10 次,PDF 中仍将是 1 到 10 的罗马数字。
我使用以下正则表达式检查了这个在线正则表达式测试器和调试器。我使用的模式是mg
,因为我在SublimeText 网站:
正则表达式每次只能针对一行文本运行。
g
在找到匹配项后继续匹配。
m
使匹配项被视为^
行的开始和$
行的结束。
这就是我理解的 SublimeText 内部所做的事情。
我的测试文本如下:
## Normal Equation
When the number of features for an $x^{(i)}$ of the training data is not too high, maybe lower than $9000$, an alternative way to [gradient descent](#gradient-descent-algorithm) for solving the optimization problem of the [cost function](#cost-function), using the normal equation, is feasible.
The vector $\theta$, which contains the coefficients for the hypothesis function can be optimized in one step using the following formula:
$$\theta = (X^T X)^{-1} X^T y$$
Where $X$ is a matrix, is constructed as follows:
+as
+ as
-as
-asa
* asas
* asas
asas
1.
2. 1212
3. 1212
qqq
I. asas
II. asa
III. asa
qqq
i. sa
ii. 1212
iii. asas
asdasd *asasas* 1. sadqwqe. *This is fat text!* **double** ewwrew ass a as as asa aas asasasas 1. ewr34 43543
正则表达式的测试完全成功,它完全按照我想要的方式突出显示。但是,当我将其粘贴到 Markdown Extended 的语法定义中时,罗马数字保持白色,没有突出显示。
示例截图:
所以我不知道正则表达式有什么问题。我需要如何更改它,以便也包含罗马数字(不一定是正确的、有效的罗马数字)?
附加信息
- SublimeText 版本:3103
- 操作系统:Xubuntu 14.04
答案1
正则表达式本身工作正常,但永远不会在编号列表中触发。您还必须将正则表达式调整693
为'^[ ]{0,3}([0-9]+|[ivxlcdm]+|[IVXLCDM]+)(\.)(?=\s)'
。在此行中,list-paragraph
上下文被推送。但是您应该知道,这也将被突出显示(并且已经突出显示):
1. ...
ii. ...
如果想避免这种情况,您可以添加上下文list-paragraph-roman
并将其推送到罗马数字。