UltiSnips Regex Macthing

Oct 16 2020

Ich möchte die Möglichkeit haben, eine Inline-Gleichung in Latex in eine Anzeigegleichung umzuwandeln.

Also will ich $something$werden

$$ something $$

Mein Versuch war folgender:

snippet "$(.+)$" "whatever" r
$$ \1 $$
$1
endsnippet

Meines Wissens nach (.+)würde das mit einem Zeichen mindestens einmal übereinstimmen (in einer Gruppe erfasst) und \1die Übereinstimmung in der Gruppe drucken.

Ich habe auch versucht, Python-Interpolation !p snip.rv = match.group(1)ohne Erfolg zu verwenden.

Beide Versuche führen nur zu einem eingefügten Tab. Irgendwelche Ideen?

Antworten

1 RicardoKullock Oct 18 2020 at 01:40

Aufgrund des Kommentars von Jake Grossman wurde mir schließlich klar, dass der $in der Regex enthaltene Trigger maskiert werden sollte: (Musste auch Python-Interpolation verwenden)

snippet "\$(.+)\$" "whatever" r $$
`!p snip.rv = match.group(1)`
$$ $0
endsnippet

Der Trigger direkt danach stimmt snippetmit allem überein $und erfasst es in einer Gruppe (mit dem ())

snip.rvSteht in der Python-Interpolation für "Rückgabewert" und gibt die match.group(1)erste Gruppe im regulären Ausdruck aus (in diesem Fall die einzige).