1

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

粗体和下划线: {\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

))
4

2 回答 2

1

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

(1 lawlist-regular t)

't' 的意思是替换现有的字体。

相反,请尝试:

(1 larlist-regular append)

这会将新字体添加到现有字体中。

从 Emacs 变量的文档中font-lock-keywords

MATCH-HIGHLIGHT 应采用以下形式:

(SUBEXP FACENAME [覆盖 [LAXMATCH]])

[...]

OVERRIDE 和 LAXMATCH 是标志。如果 OVERRIDE 为 t,则可以覆盖现有的字体。如果keep,则仅突出显示尚未字体化的部分。如果prependappend,则现有字体与新字体合并,其中新字体或现有字体分别优先。

于 2013-05-21T13:39:23.730 回答
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

))
于 2013-05-21T12:16:03.660 回答