LaTeX / font-lock - 着色粗体/下划线;胆大;强调

时间:2013-05-20 22:37:05

标签: emacs

我无法定义不会相互冲突的粗体和下划线组合。单个下划线胜过粗体和下划线的一部分。关于如何区分它们以使它们不冲突的任何想法?我想将每个LaTeX命令保持为单独的颜色。

Bold&下划线:{\bf\uline{insert-text}}

下划线:\uline{insert-text}

[注1:我不使用\underline,因为它无法正确包装多行。]

[注2:插入文本的变量代码也应允许我突出显示属于该变量代码的某些关键字。]

[注3:单独使用粗体可能会出现同样的问题:{\bf insert-text}]

(font-lock-add-keywords 'latex-mode (list

    (list (concat "\\(\{\\)\\(\\\\bf\\)\\(\\\\uline\\)\\(\{\\)\\(\\(.\\|\n\\)+?\\)\\(\}\\)\\(\}\\)")
        '(1 lawlist-regular t)
        '(2 lawlist-red t)
        '(3 lawlist-blue t)
        '(4 lawlist-regular t)
        '(5 lawlist-bold-underline t)
        '(7 lawlist-regular t)
        '(8 lawlist-regular t))

    (list (concat "\\(\\\\uline\\)\\(\{\\)\\(\\(.\\|\n\\)+?\\)\\(\}\\)")
        '(1 lawlist-green t)
        '(2 lawlist-regular t)
        '(3 lawlist-underline t)
        '(5 lawlist-regular t))

    lawlist-keywords

))

2 个答案:

答案 0 :(得分:1)

在您的规则中,您已在规则中将't'指定为'OVERRIDE'标记:

(1 lawlist-regular t)

't'的意思是取代现有的fontification。

相反,请尝试:

(1 larlist-regular append)

这将为现有的增加新的祝福。

来自Emacs变量font-lock-keywords的文档:

  

MATCH-HIGHLIGHT应采用以下形式:

     

(SUBEXP FACENAME [OVERRIDE [LAXMATCH]))

     

[...]

     

OVERRIDE和LAXMATCH是旗帜。如果OVERRIDE是t,则存在   fontification可以被覆盖。如果是keep,则只有部分尚未存在   突出显示了。如果prependappend已存在   fontification与新的合并,其中新的或现有的   fontification分别优先。

答案 1 :(得分:0)

条目出现的顺序(在某些情况下)将控制后续条目是否胜过先前的条目。以下示例使用特定顺序,以便后续组胜过先前的组 - lawlist-keywords将在LaTeX代码的变量文本区域中突出显示。面部的定义没有包含在这个例子中 - 那些也必须列出。

(defvar lawlist-keywords
    (list (concat "\\b\\(?:"
          (regexp-opt (list "FIXME" "TODO" "BUGS"))
          "\\)\\b") 0 'lawlist-red t))

 (font-lock-add-keywords 'latex-mode (list

    (list (concat "\\(\{\\)\\(\\\\bf\\)\\(\\(.\\|\n\\)+?\\)\\(\}\\)")
       '(1 lawlist-regular t)
       '(2 lawlist-purple t)
       '(3 lawlist-bold t)
       '(5 lawlist-regular t))

    (list (concat "\\(\\\\uline\\)\\(\{\\)\\(\\(.\\|\n\\)+?\\)\\(\}\\)")
        '(1 lawlist-green t)
        '(2 lawlist-regular t)
        '(3 lawlist-underline t)
        '(5 lawlist-regular t))

    (list (concat "\\(\{\\)\\(\\\\bf\\)\\(\\\\uline\\)\\(\{\\)\\(\\(.\\|\n\\)+?\\)\\(\}\\)\\(\}\\)")
        '(1 lawlist-regular t)
        '(2 lawlist-red t)
        '(3 lawlist-blue t)
        '(4 lawlist-regular t)
        '(5 lawlist-bold-underline t)
        '(7 lawlist-regular t)
        '(8 lawlist-regular t))

    lawlist-keywords

))