スタイル

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カラーを使用するように色をマッピングすることもできます。そのためには、ansigreenansibrightred、または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 2.3まで

ansiblack

#ansiblack

ansired

#ansidarkred

ansigreen

#ansidarkgreen

ansiyellow

#ansibrown

ansiblue

#ansidarkblue

ansimagenta

#ansipurple

ansicyan

#ansiteal

ansigray

#ansilightgray

ansibrightblack

#ansidarkgray

ansibrightred

#ansired

ansibrightgreen

#ansigreen

ansibrightyellow

#ansiyellow

ansibrightblue

#ansiblue

ansibrightmagenta

#ansifuchsia

ansibrightcyan

#ansiturquoise

ansiwhite

#ansiwhite

古いANSIカラー名は非推奨ですが、引き続き機能します。