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に変換して表示してくれます。
こんな感じ。
この時点では、強調表示設定も何もしていないので、すごく地味。
いろいろ設定して見やすく書き出す
オプションが色々あるので、試してみる。
よく使いそうだなって思ったものはこの通り。
オプション | 内容 |
---|---|
-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
今度はタブの文字数を調節して書き出し直してみた。
$ enscript --highlight=python --color -C -T 2 -o output.ps mandel.py
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倍いいと思う)