独自のスタイルを作成する

では、スタイルを作成するにはどうすればよいでしょうか。必要なのは 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 は、すべてのトークン タイプに継承されるデフォルトのスタイルです。

Pygments でスタイルを使用できるようにするには、次の処理を行う必要があります。

  • プラグインとして登録します(プラグインのドキュメントを参照)。

  • または、 pygments.styles サブパッケージ ディレクトリを更新します。たとえば

    • your.py ファイルを追加します。

    • tox -e mapfiles を使用してマッピング ファイルを再生成します。

**メモ**

Pygments へのコントリビューションに取り組んでいる場合にのみ、 pygments.styles サブディレクトリに追加する必要があります。既存の Pygments のコピーを拡張するためにはその方法を使用しないでください。それにはプラグイン メカニズムを使用してください。

スタイルのルール

ここでは、サポートされるすべてのスタイルの概要を示します。

bold

テキストを太字として表示します。

nobold

テキストを太字として表示しません(部分トークンが太字として強調表示されるのを防ぎます)。

italic

テキストを斜体として表示します。

noitalic

テキストを斜体として表示しません。

underline

テキストに下線を引きます。

nounderline

テキストに下線を引きません。

bg

透明な背景

bg:#000000

背景色(黒)

border

境界線なし

border:#ffffff

境界線の色(白)

#ff0000

テキストの色(赤)

noinherit

スーパートークンのスタイルを継承しません。

bg: と色の値との間にスペースを入れられない場合があることに注意してください。これは、スタイルの定義文字列は空白で分割されるためです。また、サポートされる色の名前はフォーマッターによって異なるため、名前付きの色を使用することはできません。

さらに、一部のレキサーはすべてのスタイルをサポートしない場合があります。