ソースコードをカラー印刷する

仕事で大量にソースコードを印刷して配布する機会があったので、その ノウハウをまとめておきます。

Vimから印刷する

Vimから :hardcopy で印刷するというのが一番簡単そうです。以前のVimだと 画面上でシンタックスで色分けされていれば、それがそのまま印刷にも反映 されていました。

もし、あなたがVim使いであれば、ぜひ試してみてください。色分けして印字 されるのであれば、これ以上あれこれ試す必要はありません。

しかし、どうもNeoVimでは印刷は正しく出力されるのですが、色分けなどが 反映されていないようです。

Enscriptを導入する

GNU Enscript を試してみました。 GNU Enscript はテキストファイルを Postscriptなどに変換するコンバーターです。プログラミング言語を解析して 予約語の強調や行番号表示などにも対応しています。吐き出すのは、Postscript なのでPDFなどに変換する手間はかかりますが、MacであればPreviewで開くだけ です。

ただし、残念ながらASCII文字にしか対応しておらず日本語などは文字化けして しまいます。まぁ、プログラムソースなので、日本語はコメントかリテラルしか ないと思いますので許容範囲でしょう。

Macの場合は Homebrewでインストールできます。

希望する言語がサポートされているとは限りませんが、調べると誰かが作って いたりします。 xxxxxxx.st という名前で言語設定ファイルが配布されて いることが多いです。見つけたら、言語設定ファイルを、 /usr/local/share/enscript/hl というディレクトリに格納すると使えるよう になります。

Enscriptを試す

導入さえできてしまえば、以下のような感じで使えます。

$ enscript --highlight=ruby --color --line-numbers --fancy-header --landscape --columns=2 *.rb -o sample.ps

この指定では、

  • 言語は Ruby
  • カラー表示する
  • 行番号を表示する
  • ヘッダーをつける
  • 横向き印刷にする
  • ソースコードを2カラムで印刷する
  • 出力先は sample.ps

こんな感じでPreviewで見えます。

Enscript出力結果

Enscript出力結果