【问题标题】:emacs AUCTeX macros fontificationemacs AUCTeX 宏字体化
【发布时间】:2013-05-02 12:47:44
【问题描述】:

我最近开始使用优秀的包xargs 提供\newcommandx。它共享类似于默认\newcommand 的语法。 我希望font-lock 反映这一点。 我做了

(custom-set-variables
 '(font-latex-user-keyword-classes
   (quote (("cx" ("newcommandx" "*|{\\[[{")
        (:family "font-lock-type-face") command)))))

但这只是字体化命令名称本身,而不是它的主体 (\newcommand'font-lock-function-name-face 字体化正文, 在我的情况下是粗体)。我希望\newcommandx'font-lock-function-name-face 字体化它的主体。

总结问题:如何使\newcommandx 的字体化与\newcommand 完全相同(即在我的情况下为粗体)?

【问题讨论】:

  • 我已经更新了答案以专门解决您的问题,并且我已经在 OSX Mountain Lion 上使用 Emacs / Aquamacs 的夜间版本对其进行了测试。在此示例中,\newcommandx{cmd}[args]{def} 现在的行为类似于 \newcommand{cmd}[args]{def}。参见auctex--11.86font-latex.el 的第301 ​​行。

标签: emacs latex syntax-highlighting auctex


【解决方案1】:

这是一个示例,您可以根据需要进行修改。有关预定义关键字的完整列表,请参见 auctex-11.86font-latex.el 的第 280 到 436 行。以下示例用于添加其他关键字,和/或为波浪/方括号的内容定义自己的颜色。

;; \EFFECT{[font-lock-function-name-face]}
(setq font-latex-match-function-keywords
    '(
        ("newcommandx" "*|{\\[[{")
    )
 )


;; \EFFECT{[font-lock-constant-face]}
(setq font-latex-match-reference-keywords
    '(
        ("fancypagestyle" "[{")
        ("fancyhead" "[{")
        ("fancyfoot" "[{")
    )
 )


;; \EFFECT{[font-lock-type-face]}
(setq font-latex-match-textual-keywords
    '(
        ("parentext" "{")
        ("hybridblockquote" "[{")
        ("parskip" "")
        ("footskip" "")
    )
)


;; \EFFECT{[font-lock-variable-name-face]}
(setq font-latex-match-variable-keywords
    '(
        ("newgeometry" "[{")
        ("quotingsetup" "[{")
        ("TabPositions" "[{")
        ("rfoot" "")
    )
)


;; \font-latex-warning-face
(setq font-latex-match-warning-keywords
    '(
        ("fixme" "{") 
    )
)


;; only affects inside wavy brackets
(setq font-latex-user-keyword-classes
          '(("my-warning-commands"
                (("fixme" "{"))
                (:foreground "purple" :background "yellow")
                command)))

另请参阅:http://www.gnu.org/software/auctex/manual/auctex/Fontification-of-macros.html


我选择了以下方法来自定义我所有的特殊关键字:

(defvar lawlist-face-01 (make-face 'lawlist-face-01))
(set-face-background 'lawlist-face-01 "black")
(set-face-foreground 'lawlist-face-01 "white")
(set-face-bold-p 'lawlist-face-01 t)
(set-face-italic-p 'lawlist-face-01 t)
(set-face-underline-p 'lawlist-face-01 t)
(set-face-underline 'lawlist-face-01 "yellow")

(defvar lawlist-face-02 (make-face 'lawlist-face-02))
(set-face-attribute 'lawlist-face-02 nil :background "gray" :foreground "red" :font "Courier" :height 180 :bold t :underline "yellow" :italic t)

(font-lock-add-keywords 'latex-mode '(
("\\\\test01\\|insert\\|BUGS\\|FIXME\\|TODO\\|and\\|or\\|not" 0 lawlist-face-01 prepend) ;; 0 = highlight all
("\\\\test02\\|INSERT\\|document-name\\|\\\\begin{document}" 0 lawlist-face-02 prepend) ;; 0 = highlight all
("\\test01{\\([^}]*\\)}" 1 lawlist-face-02 prepend) ;; 1 = colorize contents of wavy brackets
))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-17
    • 2013-01-17
    • 1970-01-01
    • 1970-01-01
    • 2013-05-27
    • 1970-01-01
    • 2012-12-25
    • 1970-01-01
    相关资源
    最近更新 更多