编辑: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”后面的
{
(除非有空格),我们不再需要测试
\\>
。
一般来说,尝试使用
M-x re-builder交互式地创建正则表达式:您可以在一个小缓冲区中编辑新的正则表达式,并立即查看从中调用re-builder的缓冲区中高亮显示的内容。
""
和缺少)
前面的\\
。但是 Thomas 告诉我还有其他问题存在,并且我的解决方案不够完善。因此,我删除了我的帖子以避免任何麻烦。 - dkim\\s-*
。在LaTeX中,参数应该紧跟在宏的后面,它们之间不应该有任何空格,对吗? - dkim{
之间的空格是可以的。 - Thomas