編輯: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