Pygmentsでpython→HTML
Pygmentsで、syntaxhighlightされたpythonコードを、htmlで出力して、サイトに貼り付けるやり方をいまだにやっております。(現在、markdown記法のブログ投稿ツールを探しています。)
Pygmentsを使ってhtmlを出すには、大きく分けて、2パターンあると思います。
1 .pyファイルを、.htmlファイルに出力するやり方。
2 標準入出力を使うやり方。
主に、2のやり方を、Ubuntuの端末から行ってきましたが、同じことがWindowsですぐにできませんでした。
理由は、Windowsの標準入力から抜け出す方法を知らなかったからというだけでした。
とりあえず、嵌ったので書きます。
1 .pyファイルを、.htmlファイルに出力するやり方
Pythonのコードを保存(例えば、a.py)
↓
pygmentize -f html -l python noclasses=True -o a.html a.py
↓
a.htmlをテキストエディタで開いてコピペ。
2 標準入出力を使うやり方。
入力ファイルがない場合に、標準入力(入力待ち)になります。
長いコードの一部分をコピペ→highlightしたhtmlを取得したい時など便利だと思っています。
Windowsのコマンドラインからの場合
pygmentize -f html -l python -O noclasses=True
↓
標準入力にpythonのコード書く。
↓
改行→Ctrl+Z→Enterで、標準入力から抜ける。
↓
標準出力に表示されるのをコピペ。
(Ctrl+Cでも、Ctrl+Breakでもでない。)
Ubuntuの端末からの場合
pygmentize -f html -l python -O noclasses=True
↓
標準入力にpythonのコード書く。
↓
Ctrl+Dで、標準入力から抜ける。
↓
標準出力に表示されるのをコピペ。
コマンドの意味
pygmentize -f html -l python noclasses=True -o a.html a.py
もしくは、
pygmentize -l python -f html -O noclasses=True
と書きましたが、
-l python
…………………………lexer(字句解析)は、python用のを使う。元のファイルがpythonの時はpythonと書くし、rubyのときはrubyと書き換える。
-f html
………………………………出力するフォーマットはhtml
-O noclasses=True
これがあると、cssいじらなくてもよくなる代わりに、毎回、htmlタグに色指定が入り、編集時に、ごちゃごちゃする。
-oは、-Oとは違う。(大文字小文字で意味が違う。)
The -o option gives an output file name. If it is not given, output is written to stdout.
-oオプションは、出力ファイル名を与えます。もし与えられなかったら、出力は、stdout(標準出力)に書かれます。
-o hogehoge.html
の、有る・無しで、「指定されたファイルを読む→ファイルが出力される」となるか、標準出力に表示される(端末画面に表示される)かが決まるようです。
本当は4パターン
-f html -l python noclasses=True
は省略します。
pygments -o a.html a.py
a.pyを読んで、a.htmlに出力
pygments a.py
a.pyを読んで、cmdもしくは端末画面に表示(標準出力に出力)
pygments -o a.html
入力待ち(標準入力)→入力終了(改行→Ctrl+Z→EnterもしくはCtrl+D)→a.htmlに出力
pygments
入力待ち→入力終了→cmdもしくは端末画面に表示