TextMate 2 + LaTeX 捆绑包。各部分的标签片段

TextMate 2 + LaTeX 捆绑包。各部分的标签片段

我正在尝试修改该部分标签的代码。

这是实际的代码

\section{${1:section name}} % (fold)
\label{sec:${2:${1/\\\\\w+\{(.*?)\}|\\\\(.)|(\w+)|([^\w\\\\]+)/(?4:_:\L$1$2$3)/g}}}
${0:$TM_SELECTED_TEXT}
% section $2 (end)

它的作用是,在您输入时将部分标题放入标签中,并将空格更改为下划线,将每个字符更改为小写。我希望它还能更改标签不支持的一些拉丁字符,例如:

a进入a

é进入e

í进入i

ó进入o

ú进入u

ñ进入n

它的作用如下:

\section{Configuración de diseño} % (fold)
\label{sec:configuración_de_diseño}

% section configuración_de_diseño (end)

这就是我想要它做的事情:

\section{Configuración de diseño} % (fold)
\label{sec:configuracion_de_diseno}

% section configuracion_de_diseno (end)

答案1

这是一个正则表达式替换,我不认为正则表达式引擎支持这种转换。您可以匹配非 ASCII,但我不确定替换后您会怎么做。我也不太熟悉 Oniguruma,它可能有这种功能。

在 Cocoa 或 Core Foundation 中,使用以下命令可以轻松删除 Unicode 变音符号:CFStringTransform,因此你可以通过以下方式进行替换插入 shell 代码使用 PyObjC 程序或者其他程序。

编辑:不确定标记为暂停的内容的协议是什么;无论如何,这里是答案的其余部分。由于我也使用 TextMate 来处理 LaTeX,所以我想看到一个完整的解决方案,但最好在 TextMate 邮件列表中查看。这是一个最小的代码示例,可以修改为从 读取sys.stdin和写入sys.stdout

#!/usr/bin/env python
# coding: utf-8

from CoreFoundation import CFStringCreateMutableCopy, CFStringGetLength, CFStringTransform
from CoreFoundation import kCFStringTransformToLatin, kCFStringTransformStripCombiningMarks
from Foundation import NSString, NSASCIIStringEncoding
import sys

if __name__ == '__main__':

    dc = u"a string with düîåçritics"
    dc = CFStringCreateMutableCopy(None, 0, dc)

    sys.stdout.write("original: %s\n" % (dc))
    CFStringTransform(dc, None, kCFStringTransformToLatin, False)
    CFStringTransform(dc, None, kCFStringTransformStripCombiningMarks, False)
    ascii_data = dc.dataUsingEncoding_allowLossyConversion_(NSASCIIStringEncoding, True)
    os = NSString.alloc().initWithData_encoding_(ascii_data, NSASCIIStringEncoding)
    sys.stdout.write("modified: %s\n" % (os))

相关内容