樣式¶
Pygments 內建一些樣式,可用於 HTML 和 LaTeX 格式化器。
可以使用 get_style_by_name 函式查詢內建樣式
>>> from pygments.styles import get_style_by_name
>>> get_style_by_name('colorful')
<class 'pygments.styles.colorful.ColorfulStyle'>
您可以將 Style 類別的實例以字串形式,作為 style 選項傳遞給格式化器
>>> from pygments.styles import get_style_by_name
>>> from pygments.formatters import HtmlFormatter
>>> HtmlFormatter(style='colorful').style
<class 'pygments.styles.colorful.ColorfulStyle'>
或者您也可以匯入自己的樣式(必須是 pygments.style.Style 的子類別)並將其傳遞給格式化器
>>> from yourapp.yourmodule import YourStyle
>>> from pygments.formatters import HtmlFormatter
>>> HtmlFormatter(style=YourStyle).style
<class 'yourapp.yourmodule.YourStyle'>
建立自己的樣式¶
請參閱 撰寫您自己的樣式。
內建樣式¶
Pygments 提供一些由 Pygments 團隊維護的內建樣式。
要取得已知樣式的列表,您可以使用此程式碼片段
>>> from pygments.styles import STYLE_MAP
>>> STYLE_MAP.keys()
['default', 'emacs', 'friendly', 'colorful']
取得可用樣式列表¶
在 0.6 版本中新增。
因為可能有一個外掛程式註冊了一個樣式,所以有一種方法可以遍歷所有樣式
>>> from pygments.styles import get_all_styles
>>> styles = list(get_all_styles())
終端機樣式¶
在 2.2 版本中新增。
用於 256 色終端格式化器的自訂樣式也可以將顏色映射到 8 種預設的 ANSI 顏色。若要這樣做,請使用 ansigreen
、ansibrightred
或 pygments.style.ansicolors
中定義的任何其他顏色。前景 ANSI 顏色將會被映射到對應的跳脫碼 30 到 37,因此會遵守許多終端模擬器提供的任何自訂顏色映射和主題。淺色變體會被視為前景顏色,並添加粗體標記。bg:ansi<color>
也會被遵守,但淺色變體會與其深色變體相同。
請參閱以下範例,其中字串 "hello world"
的顏色由跳脫序列 \x1b[34;01m
控制(Ansi 亮藍色、粗體,41 為紅色背景),而不是擴展的前景和背景顏色。
>>> from pygments import highlight
>>> from pygments.style import Style
>>> from pygments.token import Token
>>> from pygments.lexers import Python3Lexer
>>> from pygments.formatters import Terminal256Formatter
>>> class MyStyle(Style):
styles = {
Token.String: 'ansibrightblue bg:ansibrightred',
}
>>> code = 'print("Hello World")'
>>> result = highlight(code, Python3Lexer(), Terminal256Formatter(style=MyStyle))
>>> print(result.encode())
b'\x1b[34;41;01m"\x1b[39;49;00m\x1b[34;41;01mHello World\x1b[39;49;00m\x1b[34;41;01m"\x1b[39;49;00m'
使用 ansi*
指定的顏色,在使用非 terminal-256 格式化器的情況下,會轉換為一組預設的 RGB 顏色。
根據 ANSI 的定義,以下顏色被視為「淺色」,並且會被大多數終端機以粗體呈現
“brightblack”(深灰色)、“brightred”、“brightgreen”、“brightyellow”、“brightblue”、“brightmagenta”、“brightcyan”、“white”
以下顏色被視為「深色」,並且會以非粗體呈現
“black”、“red”、“green”、“yellow”、“blue”、“magenta”、“cyan”、“gray”
確切的行為可能取決於您使用的終端模擬器及其設定。
在 2.4 版本中變更。
ANSI 顏色名稱的定義已變更。新的名稱更容易理解,並且與其他專案中使用的顏色一致。
新的名稱 |
Pygments up to 2.3 |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
舊的 ANSI 顏色名稱已棄用,但仍然可以使用。