LoginSignup
0
4

More than 5 years have passed since last update.

Pygmentsを、標準入出力で使う

Last updated at Posted at 2016-10-01

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もしくは端末画面に表示

0
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
4