pygmentize - Pygmentsをコマンドラインで使う
初回公開:2018/10/14
最終更新:未
Pygmentsにはpygmentizeというコマンドラインツールが用意されている。
【 目次 】
-hでhelp
以下のコマンドを実行するとコマンドの使い方を表示してくれる。
pygmentize -h
pygmentizeのコマンドの使い方が詳しく記述されているので参考にすると良いと思う。
これをみるとpygmentizeのコマンド形式は以下のようになるようだ。
pygmentize [-l <lexer> | -g] [-F <filter>[:<options>]] [-f <formatter>] [-O <options>] [-P <option=value>] [-s] [-v] [-x] [-o <outfile>] [<infile>] pygmentize -S <style> -f <formatter> [-a <arg>] [-O <options>] [-P <option=value>] pygmentize -L [<which> ...] pygmentize -N <filename> pygmentize -H <type> <name> pygmentize -h | -V
-lでlexer,-Fでfilterを,fでformatterを,-oで出力ファイル名を
-lでlexer,
-Fでfilterを,
fでformatterを指定。
-oで出力ファイルを指定、-oを指定しない場合は標準出力に出力される。
例えば、pythonのソースコードファイルtest.pyをHTMLドキュメントとしてファイルtest.htmlには出力するには
pygmentize -f html -l python -o test.html test.py
ここでは、フォーマッターにhtmlを,
レキサーにpython言語を,
出力ファイルにtest.htmlに,
そして入力ファイルにtest.pyを指定している。
filterを使ってキーワードを大文字で出力させるには
pygmentize -F keywordcase:case=upper -o test.html test.py
拡張子によるformatterとlexerの推定
-oで指定された拡張子によってformatterが、また入力ファイルの拡張子によってlexerが推定できる場合には-lや-Fは省略できる。
例えば、上記の-oで指定された拡張子が.html
で、入力ファイルの拡張子が.py
の場合であれば
pygmentize -o test.html test.py
とする事で、フォーマッターにhtml,レキサーにpythonを勝手に推測してくれる。
-Nでlexerの推定の確認
-Nオプションでpygmentizeコマンドがどのlexerを推定するかを確認する事ができる。
c:\work>pygmentize -N test.py python
-Oでオプションを指定
-Oでさまざまなオプションを指定できる。 例えば、行番号やスタイルシートを含む完全なhtmlドキュメントを生成するにはfullを,さらにPygmentsにあらかじめ用意されているemacsという形式のスタイルで出力するには
pygmentize -O full,style=emacs -o test.html test.py
-Sでcssスタイルコードを生成
-Sを指定してpygmentizeを実行するとcssスタイルコードの生成をしてくれる。
以下のようにpygmentizeをコマンドラインより実行するとdefaultのスタイルのcssコードを吐き出してくれる。
pygmentize -S default -f html -a .codehilite > styles.css
生成されたファイルstyles.cssの内容
.codehilite .hll { background-color: #ffffcc } .codehilite { background: #f8f8f8; } .codehilite .c { color: #408080; font-style: italic } /* Comment */ /* 途中を省略*/ .codehilite .il { color: #666666 } /* Literal.Number.Integer.Long */
-aでcssのクラス属性を
-aオプションにはcssのクラス属性を指定するが、単純なcssクラスを指定するのではなくCSSセレクタを指定してみても面白いかも?
上記のコマンドではdefaultのスタイルのcssコードを吐き出してくれるが、他にもいろいろなスタイルが定義されている。
-Lオプションでリストを出力
スタイルのリスト
どのような、スタイルが定義されているかは-Lオプションを使って確認する事ができる。
pygmentize -L styles
また、以下のpythonのコードを実行する事でもPygmentsに定義されているスタイルのリストを得ることができる。
listup_pygments_styles.py
from pygments.styles import STYLE_MAP print STYLE_MAP.keys()
私の環境では以下のように表示された。
実行結果
['manni', 'igor', 'lovelace', 'xcode', 'vim', 'autumn', 'abap', 'vs', 'rrt', 'native', 'perldoc', 'borland', 'arduino', 'tango', 'emacs', 'friendly', 'monokai', 'paraiso-dark', 'colorful', 'murphy', 'bw', 'pastie', 'rainbow_dash', 'algol_nu', 'paraiso-light', 'trac', 'default', 'algol', 'fruity']
他にも、-Lオプションを使ってPygmentsにあらかじめ定義されているfilterやlexerのリストを出力させる事もできる。
filterのリスト
filterのリストを出力させるには。
pygmentize -L filters
実行結果
Pygments version 2.2.0, (c) 2006-2017 by Georg Brandl. Filters: ~~~~~~~~ * raiseonerror: Raise an exception when the lexer generates an error token. * whitespace: Convert tabs, newlines and/or spaces to visible characters. * tokenmerge: Merges consecutive tokens with the same token type in the output stream of a lexer. * gobble: Gobbles source code lines (eats initial characters). * highlight: Highlight a normal Name (and Name.*) token with a different token type. * codetagify: Highlight special code tags in comments and docstrings. * keywordcase: Convert keywords to lowercase or uppercase or capitalize them, which means first letter uppercase, rest lowercase.
lexer言語のリスト
Pygmentsがどのような言語をサポートしているかを知りたい場合には
同様に、-Lオプションを使ってlexerのリストを出力させれば良い。
pygmentize -L lexers