我很想看看是否可以匹配1個反斜槓,只有2個反斜槓,以及一個波形符號和兩個反斜槓。我在latex-mode中使用Emacs,併爲字體鎖設置關鍵字。將單個反斜線定義爲關鍵字會對各種其他定義造成嚴重破壞。我希望一個反斜槓是紅色的;兩個反斜槓是藍色的;一個波浪號+兩個反斜槓是綠色的。我不認爲代字號會造成問題,但我希望它本身是紅色的。我有font-lock-add-keywords格式,但不是這種情況下的特殊正則表達式。這與我們之前和之後使用\ b的情況類似,但據我所知,這不適用於反斜槓。匹配一個間隙;匹配兩個反斜槓;匹配代字符+兩個反斜槓
~
- 紅色
\
- 紅色,except
觸摸字母數字字符時。
\\
- 藍色
~\\
- 綠色
(defvar lawlist-face-a (make-face 'lawlist-face-a))
(set-face-attribute 'lawlist-face-a nil :foreground "red" :bold t)
(defvar lawlist-face-b (make-face 'lawlist-face-b))
(set-face-attribute 'lawlist-face-b nil :foreground "blue" :bold t)
(defvar lawlist-face-c (make-face 'lawlist-face-c))
(set-face-attribute 'lawlist-face-c nil :foreground "green" :bold t)
(font-lock-add-keywords 'latex-mode '(
("~\\|\\\\" 0 lawlist-face-a prepend)
("\\\\\\\\" 0 lawlist-face-b prepend)
("~\\\\\\\\" 0 lawlist-face-c prepend)
))
在上面提到的示例的上下文中,定義單個反斜槓勾銷內auctex-11.86
的font-latex.el
預定警告在線路280 -285。從第四行代碼中刪除"\\"
不能解決這種情況。例如,鍵入\newpage
不再與font-latex-warning-face
關聯 - 而是以未定義的形式出現,它被分配到font-latex-sedate-face
。
(defvar font-latex-built-in-keyword-classes
'(("warning"
("nopagebreak" "pagebreak" "newpage" "clearpage" "cleardoublepage"
"enlargethispage" "nolinebreak" "linebreak" "newline" "-" "\\*" "\\"
"appendix" "displaybreak" "allowdisplaybreaks" "include")
'font-latex-warning-face 1 noarg)
緩衝示例 - 膠乳模式:
\newpage
- 字型應font-latex-warning-face
\newpage
- 字體面限定一個反斜槓當如上文所指出的錯誤地顯示爲font-latex-sedate-face
。
編輯 - 疑難解答 - 測試 - 的re-builder
截圖和一個LaTeX文檔:
\\(\\\\\\)[^[email protected]]
re-builder http://www.lawlist.com/images/re-builder_01.png
test01 http://www.lawlist.com/images/test01.png
(defvar lawlist-face-a (make-face 'lawlist-face-a))
(set-face-attribute 'lawlist-face-a nil :background "black" :foreground "red" :bold t)
(defvar lawlist-face-b (make-face 'lawlist-face-b))
(set-face-attribute 'lawlist-face-b nil :foreground "blue" :bold t)
(defvar lawlist-face-c (make-face 'lawlist-face-c))
(set-face-attribute 'lawlist-face-c nil :foreground "green" :bold t)
(font-lock-add-keywords 'latex-mode
'(("~\\|\\(\\\\\\)[^[email protected]]" 0 lawlist-face-a prepend)
("\\\\\\\\" 0 lawlist-face-b prepend)
("~\\\\\\\\" 0 lawlist-face-c prepend)))
test02 http://www.lawlist.com/images/test02.png
我運行你的代碼,它給了我期望從你的描述中得到的結果。你能給出一個文本的例子,你期望什麼,出了什麼問題。 –
我已經添加了一個由定義單個反斜槓引起的錯誤的具體示例。昨天,我遇到了這樣的情況:單個反斜槓將雙反斜槓的定義置爲無效 - 我會看看是否可以重新創建該反斜槓並將其作爲第二個示例發佈。 – lawlist
請在緩衝區中添加一個包含文本的框,並說明所需的輸出。重現更容易。 –