我想强调我在乳胶创造了一个新的命令:
\newcommand{\conceito}[3]{
\subsection{#1} (Original: \textit{#2} #3).
}
我以这种方式使用此代码:
\conceito{Foo}{Bar}{Bla}
我跟着手册 ,并把这个代码在我的~/.emacs
,但它没有工作:
(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金指出了点,也存在以下两个问题:
试试这个:
(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”之后直接跟随(除非有空格之间),我们不需要测试\\>
更多可言。
在一般情况下,尝试重新的Mx建设者交互手艺正则表达式:您可以在一个较小的缓冲区编辑一个新的正则表达式,并立即看到什么是从中调用重新构建器中的缓冲区突出。
GNU AUCTeX有定义自定义高亮用户自定义宏的内置方式。 看一看可变font-latex-user-keyword-classes
和AUCTeX文档 。
这里有一个简单的例子(我的配置):
(setq font-latex-user-keyword-classes
'(("shadow-hidden" (("hide" "{")) shadow command)
("shadow-mycomment" (("mycomment" "{")) shadow command)
("shadow-comment" (("comment" "{")) shadow command)))
这将显示在昏暗的阴影面\隐藏{} \ mycomment {}和\评论{}宏的内容。