ReVIEWを使って電子書籍作成を試してみた日記

ReVIEW、以前教えてもらった時にはスライドを見て、「また変なオレオレフォーマットが生まれたのか〜」とか思ってスルーしていたのだけども、今日またReVIEWが良いよと布教されたのでもう一度きちんと見てみたら、これはなかなか良い!

TeX形式で数式が書けることも僕にとっては重要なポイントだけども、個人的に燃えるのはコマンド実行結果を埋め込む機能。

quickstart.rdoc
>#@mapfile、#@maprange、#@mapoutput のタグを使って、指定のファイルの内容あるいはコマンドの実行結果を挿入できます。挿入・更新を行うには、プリプロセッサとなる review-preproc コマンドを使います。

いま、僕の原稿は「コード片を実行して期待した通りの出力が出るかテストする」って仕組みを作って、機械的にまとめてテストできるようにしている。つまりコードとその出力は機械可読な形で記述されているので、それをReVIEW形式で出力するコマンドを追加してやれば、コード片とその出力の動作確認から原稿に埋め込むところまで全部自動化できる。すばらしい。これで「執筆中に処理系がバージョンアップして挙動が変化してないかチェックしなおす」って悪夢から解放されるぞw

しかもinao形式も出力できるじゃん?だったら今からrst2inaoやinao2indesignを頑張って実装するより、ReVIEWで書いてinaoに変換すれば良くない?

      • -

さっそくReVIEWでのPDF作成を試してみる。

まずTexLiveを入れる。「PDF を作成するには、pTeXLive2009 以上の環境が必要です」と書いてあるのでpTeXLive2009で検索するが、微妙な情報ばかりヒットする。試行錯誤してインストールしている旨の情報が見つかるが、最新のTexLiveではplatexも入ってるようだ。

インストールが終わったのでパスを通してPDF作成を試してみる。

おっと、スタイルがないと怒られる。

! LaTeX Error: File `jumoline.sty' not found.

うーん?これは検索してみると、こちらにあるjumoline.styが必要なようだ。

https://github.com/takahashim/review-sample-book/tree/master/src/sty

jumoline.styを配置して再挑戦したが、本体部分が空っぽなPDFを作ってしまった。sample.yamlを読んでみたらそもそもどの*.reを読むかはここには記述されていない。CHAPSを参照して作るんだな。CHAPSを作ってsample.reと書いたらちゃんと中身の入ったPDFが作られた。めでたしめでたし。

      • -

試しに先日の「言語によるTraitsの挙動の違い」のサンプルコードを流しこんでみる。元のコード片はこちらでReSTで見ることができる。

https://github.com/nishio/learn_language/tree/master/trait

ReVIEWで出力してビルドした結果できたPDF

https://dl.dropbox.com/u/370621/review-sample.pdf

ReSTではコード片に言語を指定してやればpygmentsでシンタックスハイライトされるのだけども、ReVIEWでどうやるかわからなかった。あとコードが改ページをまたぐ時に「まだ続きがある」のか「もうここで終わり」なのかわかるといいなぁ。

追記(sample.re)

このPDFを出力するのに使ったReVIEWファイルが見たいとの要望があったので載せておく

= はじめてのReVIEW

//lead{
「ReVIEWいいじゃん!」
//}

== ReVIEWとは

この辺を読んでください。

 * https://github.com/kmuto/review/blob/master/doc/quickstart.rdoc
 * https://github.com/kmuto/review/blob/master/doc/format.rdoc

== 埋め込みテスト

#@mapoutput(python test.py --format=review)
#@end

sample.reに入ってなくてPDFにどっさり入っているサンプルコードは#@mapoutput(python test.py --format=review)で起動されたtest.pyが出力している。

追記(sample.yaml)

Q:「PDFの著者名とかはどこからきたの?」
A: PDF作成の時にyamlで渡す。https://github.com/kmuto/review/blob/master/doc/quickstart.rdoc のPDF作成のところに書いてあるsample.yamlを持ってきて名前のところをいじっただけ。

追記(epub)

PDFを作る代わりに review-epubmaker を叩いたらあっさりePubができた。iTunesにドラッグドロップしてiPhoneに同期し、iBookを開くと、そこにはあっさりと自分の作った電子書籍が!

iPhone画面だと縦20行、横30桁くらいかなぁ。ソースコードを読むのにはやはり辛い感じがある。