剥いだ布団とメモランダム.old

情報系のことをかいてゆく

macでenscriptを使ってソースコードを見やすく印刷する

研究をやっていたり、課題をこなしていたりすると、
ソースコードを印刷して提出しろということを言われたりします。

今まではeclipseの印刷機能を使ってみたり、wordの書式設定をいろいろいじってみたりしていたのですが、どれも面倒だったり見やすく印刷できなかったりするんですよね。

今回はenscriptというものを試してみたので、備忘録。

enscriptってなに

基本的にはテキストをPostScriptにして出力してくれるものです。(htmlなどにも出力できます)
プログラムのコードを解析できて、予約語の強調表示や行番号表示などをしてくれます。
なので、それなりに見やすいソースコード印刷ができるぞっていう話です。

注意しておきたいのは、日本語非対応。残念。

enscriptを導入

homebrewをつかっているので、

$ brew install enscript

でインストールしました。

とりあえずPostScriptで書きだす

書き出すコードは12月のエントリー
Python + gnuplot でマンデルブロ集合を描く - 剥いだ布団とメモランダム
で書いたPythonのコードです。

ターミナルで、

$ enscript -o output.ps mandel.py

って打ってやるととりあえずPostScriptに出力できます。
MacOS XであればプレビューでPostscriptファイルを開くと自動でpdfに変換して表示してくれます。

こんな感じ。
f:id:sheemaa:20140307065534p:plain

この時点では、強調表示設定も何もしていないので、すごく地味。

いろいろ設定して見やすく書き出す

オプションが色々あるので、試してみる。
よく使いそうだなって思ったものはこの通り。

オプション 内容
-o 出力ファイル名 ファイル書き出し
-w 出力言語 指定した言語(PostScript,html...)ファイルを書き出す。
たぶんpsとhtmlしか使わない
--highlight=言語 指定した言語用の強調表示を行う。--colorと使うとよし。
使える言語はenscript --help-highlightで見れる。
--color 色付きハイライトを使用
-B ページヘッダーを印刷しない
-C 行番号 行番号を印刷する。番号は省略可能で、デフォルトは1から。
-T 文字数 タブの文字数を指定できる。デフォルトは8文字。

試しに色付きハイライトと、行番号表示を有効にして書きだした結果。
1行で収まりきらないような行があるコードは、やはり見難くなってしまっている…。

$ enscript --highlight=python --color -C -o output.ps mandel.py

f:id:sheemaa:20140307065900p:plain

今度はタブの文字数を調節して書き出し直してみた。

$ enscript --highlight=python --color -C -T 2 -o output.ps mandel.py

f:id:sheemaa:20140307070532p:plain


HTMLファイルで書きだしたものは以下のリンクにあげてみた。
色付きハイライトを使用した。ちなみに、html書き出しだと行番号オプションは使用しても反映されないようだ。

$ enscript --highlight=python --color -w html -o output.html mandel.py

https://dl.dropboxusercontent.com/u/46632739/enscript_blog.html

HTMLだと自分でHTMLファイルを編集してレイアウトを微調整できるので、いいかもしれない。
(psファイルでも編集出来ないことはないが、psをマスターするのであればHTMLをやったほうが100倍いいと思う)

雑感

試してみて、wordよりはまだましかな、というレベルです。
eclipseで印刷してもいいですが、言語が限られてるし、印刷時のヘッダーなんかもいじれないしで、
いろいろこだわって刷りたいんだ!という人にはenscriptは良さそう。
印刷時の選択肢の中には入ってくるとは思う。
しかし、日本語のコメントに対応できないのが痛い。(英語コメントにしろということだろう)

そもそもソースコード文字コード指定でファイルで提出させてくれという感じですが…