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