独自のスタイルを作成する¶
では、スタイルを作成するにはどうすればよいでしょうか。必要なのは 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:
と色の値との間にスペースを入れられない場合があることに注意してください。これは、スタイルの定義文字列は空白で分割されるためです。また、サポートされる色の名前はフォーマッターによって異なるため、名前付きの色を使用することはできません。
さらに、一部のレキサーはすべてのスタイルをサポートしない場合があります。