В этом вопросе я спросил о том, как выделить несколько элементов пунктуации в списке уценок. Теперь я хочу расширить подсветку и на римские цифры, потому что они поддерживаются расширениями Pandoc, которые я использую для создания 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
Я понимаю, что это не учитывает действительность римских чисел, но я все равно буду их правильно печатать, поэтому меня не волнует, выделяет ли это и другие недействительные римские числа. Также, когда список в уценке начинается с действительного числа, обычно i.
нумерация автоматически рассчитывается Pandoc при создании PDF, чтобы можно было ввести i.
10 раз, и все равно это будут римские цифры от 1 до 10 в PDF.
Я проверил это регулярное выражение с помощью онлайн-тестера и отладчика регулярных выражений. Я использовал режим 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