ソースコードをカラー印刷する
仕事で大量にソースコードを印刷して配布する機会があったので、その ノウハウをまとめておきます。
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で見えます。