编辑: Deokhwan Kim 最初指出您的正则表达式包含两个连续的双引号,并且右括号)
也需要用双引号进行转义:
(add-hook 'LaTeX-mode-hook
(lambda ()
(font-lock-add-keywords nil
'(("\\<\\(\\conceito\\)\\>" 1 font-lock-warning-face t)))))
除了Deokhwan Kim指出的几点,还有以下两个问题:
试试这个:
(add-hook 'LaTeX-mode-hook
(lambda ()
(font-lock-add-keywords nil
'(("\\(\\\\conceito\\)\\>" 1 font-lock-warning-face t)))
编辑: Deokhwan Kim 所做的另一个很好的观察是,在这种特殊情况下,您根本不需要括号,因为无论如何您都在尝试匹配整个表达式。所以最后一行的替代方案可能是:
'(("\\\\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”之后的 a(除非中间有空格),因此我们根本不需要测试\\>
。
通常,尝试M-x re-builder以交互方式制作正则表达式:您可以在一个小缓冲区中编辑一个新的正则表达式,并立即查看您调用重新构建器的缓冲区中突出显示的内容。