Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

Pygmentsを、標準入出力で使う

More than 3 years have passed since last update.

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away