写出你自己的风格

那么,如何创建一个样式呢?你所要做的就是子类 Style 并定义一些样式:

from pygments.style import Style
from pygments.token import Token, Comment, Keyword, Name, String, \
     Error, Generic, Number, Operator


class YourStyle(Style):

    styles = {
        Token:                  '',
        Comment:                'italic #888',
        Keyword:                'bold #005',
        Name:                   '#f00',
        Name.Class:             'bold #0f0',
        Name.Function:          '#0f0',
        String:                 'bg:#eee #111'
    }

就是这样,另存为 your.py 。这里只有几条规则。在为定义样式时 Name 该样式还会自动影响 Name.Function 诸若此类。如果您定义了 'bold' 而且你也不想用粗体作为子代币使用 'nobold'

(哲学:样式不是用CSS语法编写的,因为这样它们可以用于各种格式化程序。)

Token 是所有令牌类型继承的默认样式。

要使样式可用于Pygment,必须

  • 将其注册为插件(请参见 the plugin docs

  • 或更新 pygments.styles 子包目录。例如:

    • 添加 your.py 文件

    • 使用以下命令重新生成映射文件 tox -e mapfiles

备注

你应该 only 将其添加到 pygments.styles 子目录,如果您正在处理对Pygments的贡献。您不应该使用该方法来扩展已有的Pygments副本,而应使用插件机制。

风格规则

以下是所有允许样式的小概述:

bold

将文本呈现为粗体

nobold

不将文本呈现为粗体(以防止子项突出显示为粗体)

italic

以斜体显示文本

noitalic

不将文本呈现为斜体

underline

呈现带下划线的文本

nounderline

不呈现带下划线的文本

bg:

透明背景

bg:#000000

背景色(黑色)

border:

无边界

border:#ffffff

边框颜色(白色)

#ff0000

文本颜色(红色)

noinherit

不从Supertoken继承样式

注意之间可能没有空格 bg: 以及颜色值,因为样式定义字符串是以空白分割的。此外,不允许使用命名颜色,因为支持的颜色名称因不同的格式化程序而异。

此外,并非所有的lexer都支持每种风格。