Em esta pergunta, perguntei sobre como realce mais de um item de pontuação da lista de descontos. Agora eu quero estender o realce para números romanos também, porque eles são suportados pelas extensões do Pandoc, que eu uso para criar PDFs a partir da fonte markdown.
No Markdown Extended syntax definition
, em line 1180
, inseri o seguinte regex
:
^\s{0,4}([0-9]+|[ivxlcdm]+|[IVXLCDM]+)\.(?=\s\w)
Agora parece com isso:
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
Eu entendo que isso não leva em conta a validade dos números romanos, mas vou digitá-los corretamente de qualquer maneira, então eu não me importo em destacar outros números romanos inválidos também. Também uma vez uma lista em markdown começa com um número válido, geralmente i.
, a numeração é automaticamente calculada pela Pandoc, quando cria o PDF, para que se possa digitar i.
10 vezes, e ainda seriam números romanos de 1 a 10 no PDF.
Eu verifiquei essa expressão regular com o testador e depurador de regex on-line . O modo que usei é mg
, porque eu leio o seguinte nos sites do SublimeText :
Regexes are only ever run against a single line of text at a time.
g
faz a correspondência depois de encontrar uma correspondência.
m
faz a correspondência considerar ^
como o início da linha e $
como o final da linha.
Isso é o que eu entendo que o SublimeText faz internamente.
Meu texto de teste é o seguinte:
## 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
O teste do regex é completamente bem sucedido, ele destaca exatamente como eu quero. No entanto, quando eu o colo na definição de sintaxe do Markdown Extended, os números romanos permanecem em branco, não são destacados.
Exemplo de captura de tela:
Então eu não sei o que há de errado com o regex. Como preciso alterá-lo para incluir também números romanos (não necessariamente números romanos válidos)?
Informações adicionais
- Versão do SublimeText: 3103
- SO: Xubuntu 14.04