2

バックスラッシュ 1 つだけ、バックスラッシュ 2 つだけ、チルダとバックスラッシュ 2 つを一致させることができるかどうかを知りたいです。Emacs をラテックス モードで使用しており、font-lock のキーワードを設定しています。単一のバックスラッシュをキーワードとして定義すると、他のさまざまな定義が混乱します。バックスラッシュを 1 つ赤くしたいのですが。2 つのバックスラッシュは青色です。チルダ + 2 つのバックスラッシュは緑色になります。チルダが問題になるとは思いませんが、それ自体を赤くしたいと思います。私は 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)

))

上記の例のコンテキストでは、単一のバックスラッシュを定義すると、行 280 ~ 285font-latex.el内の事前定義された警告が無効になります。auctex-11.86コードの 4 行目から を削除して"\\"も、状況は改善されません。\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)

バッファの例 -- latex-mode:

\newpage-- フォントフェイスはfont-latex-warning-face

\newpagefont-latex-sedate-face--上記のように単一のバックスラッシュを定義した場合のように、フォント フェースが誤って表示されます。


編集 -- トラブルシューティング -- テスト --re-builderおよび LaTeX ドキュメントのスクリーンショット:

\\(\\\\\\)[^a-zA-Z@]

再建者
(出典: lawlist.com )

test01
(出典: lawlist.com )

(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
   '(("~\\|\\(\\\\\\)[^a-zA-Z@]" 0 lawlist-face-a prepend)
     ("\\\\\\\\" 0 lawlist-face-b prepend)
     ("~\\\\\\\\" 0 lawlist-face-c prepend)))

test02
(出典: lawlist.com )

4

1 に答える 1