编辑:Deokhwan金原指出,你的正则表达式包含两个连续的双引号,而右括号)
需要用双引号进行转义还有:
(add-hook 'LaTeX-mode-hook
(lambda()
(font-lock-add-keywords nil
'(("\\<\\(\\conceito\\)\\>" 1 font-lock-warning-face t)))))
除了点指出,通过Deokhwan金,也存在以下两个问题:
试试这个:
(add-hook 'LaTeX-mode-hook
(lambda()
(font-lock-add-keywords nil
'(("\\(\\\\conceito\\)\\>" 1 font-lock-warning-face t)))
编辑:另外一个很好的观察到Deokhwan金正日提出的是,在这种特殊情况下,你真的不需要括号可言,因为你试图无论如何要匹配整个表达。所以到最后一行的选择可以是:
'(("\\\\conceito\\>" 0 font-lock-warning-face t)))))
关于括号中的点是正确的,但你可以在你的正则表达式实际上延伸到只有一个大括号{
如下单词“conceito”时的匹配。但是,因为你真的不希望强调的是梅开二度,使用括号定义子组是路要走:
(add-hook 'LaTeX-mode-hook
(lambda()
(font-lock-add-keywords nil
'(("\\(\\\\conceito\\)\\s-*{" 1 font-lock-warning-face t)))
注意,因为我们正在测试的“conceito”后直接跟随一个{
(除非两者之间有空格),我们根本不需要测试\\>
。
一般来说,应尽量M-X再建设者交互手艺正则表达式:您可以在一个较小的缓冲区编辑一个新的正则表达式,并立即看到什么是从中调用重新构建器中的缓冲区突出。
为了记录,在我删除的帖子中,我指出了一些错误,如连续的双引号''“',在'''之前丢失\\',在问题的正则表达式中。但托马斯通知我还有其他问题,但我的解决方案还不够。所以我删除了我的帖子以避免任何并发症。 – dkim 2012-08-07 17:32:12
不错的工作!还有一点建议是,在最后一个例子中,'\\ s- *'最好不在那里。在LaTeX中,一个论点应该立即跟随它的宏观而没有任何空间,不是吗? – dkim 2012-08-09 06:39:15
@Deokhwan Kim - 不,命令和'{'之间没有空格。 – Thomas 2012-08-10 02:16:03