2

任何人都可以建议一种方法来包围包含前导的区域\$并用片段包围它。在latex-mode中,我经常在应付款项下划线或双下划线,并且使用的 yasnippet 删除了反斜杠。我希望能够在所有情况下使用相同的代码段——有没有前导\$.

# -*- mode: snippet -*-
# contributor: lawlist
# key: underline_selected
# group: font
# name: underline_selected
# binding: C-I u s
# --
\uline{`yas/selected-text`}
4

1 回答 1

1

很少有问题会导致原始发布者所描述的行为,他们使用的是自定义修改版本tex-mode.el而不是AUCTeX。

首先,yas--snippet-parse-create除了其他代码之外,该函数还包含以下与 LaTeX 转义的美元符号不能很好配合的函数:

(yas--protect-escapes nil `(?\\ ?` ?'))
(yas--protect-escapes)
(yas--restore-escapes)
(yas--delete-regions ys--dollar-regions)

其次,yas--simple-mirror-regexp除了标准的 yasnippet 字段(例如$1. 当上述(yas--delete-regions yas--dollar-regions)被 调用时yas--snippet-parse-create,结果是错误删除。此答案的作者已修改正则表达式以排除带有前面反斜杠的美元符号:

(setq yas--simple-mirror-regexp "[^\\]$\\([0-9]+\\)")

此答案的作者目前没有修复yas--protect-escapesand yas--restore-escapes,并且在此期间只是将它们注释掉。[这对于任何编程的人来说显然都是有问题的,但对于仅仅编写 LaTeX 文档似乎就足够了。] Github 上已经打开了一个问题,如果在那里找到解决方案,这个答案的作者将更新这个线程。

于 2013-09-03T17:59:26.687 回答