Re:VIEW の売り文句は「LaTeX を書かなくていい」です。ところが設定ファイル config.yml を開くと dvicommand という項目があって、既定値は dvipdfmx。PDF 用のクラスファイルは \DeclareOptionX{bleed_margin}[3mm](塗り足し 3mm)や tombopaper(トンボ)を宣言しています。つまり LaTeX は消えたのではなく、印刷所と話す係に降格した だけです。このページでは、.re という軽量マークアップ 1 種類から PDF と EPUB を同時に出すこの出版システムを、その LaTeX バックエンドの側から見ていきます。
Re:VIEW とは何で、何を出力できるのか
Re:VIEW は Ruby で書かれた 書籍向けの変換システム で、原稿は拡張子 .re の軽量マークアップで書きます。同じ原稿から EPUB・LaTeX・InDesign(IDGXML)・Markdown・プレーンテキスト・Web(HTML) に変換できます。原作者は 青木峰郎(Minero Aoki)、現在の保守は 武藤健志(kmuto) で、著作権表示には高橋征義・角征典の名も並びます(2006–2024)。ライセンスは LGPL。日本の技術系同人誌の世界で事実上の標準になったのは、この「一つの原稿から印刷用 PDF と電子書籍を同時に出す」という一点が、その用途にぴたりと合っていたからです。
= Getting started
Ordinary body text. Inline emphasis is written @<b>{like this},
and a cross-reference to a listing is @<list>{hello}.
//list[hello][A first program]{
puts "hello"
//}
//image[diagram][The system, in outline]{
//}プロジェクトは、章ごとの .re ファイルに加えて 二つの YAML で成り立ちます。config.yml が書名・著者・判型・LaTeX の設定などのメタ情報を持ち、catalog.yml が前付け・本編・後付けの 章の並び順 を持ちます。原稿ファイル自体には順序の情報がないので、章の入れ替えは catalog.yml の行を動かすだけで済みます——LaTeX の \include を並べ替えるのと同じ発想ですが、こちらは組版命令ではなく目録なので、EPUB 側の目次にもそのまま効きます。
インストールとビルド——TeX Live には入っていません
Re:VIEW は Ruby の gem であって、TeX Live のパッケージではありません。TeX Live 2024 をフルインストールした環境でも review-pdfmaker は影も形もなく、gem install review を別途走らせる必要があります。逆に、TeX の側にも要求があります——ドキュメントは「To generate PDF, you should install TeXLive 2012 or later.」と書いており、PDF を出すには TeX Live が別途要ります。つまり 二つの独立した処理系をそろえて初めて動く 仕組みで、ここを見落としたまま rake pdf を叩くと、どちらが欠けているのか分からないエラーに悩むことになります。
gem install review # the Ruby side
# TeX Live is a separate prerequisite for the PDF route
review-init hello # create a project skeleton
cd hello
rake pdf # PDF, through LaTeX
rake epub # EPUB
rake web # HTML
rake text # plain text
rake idgxml # InDesign
# the same jobs without rake:
review-pdfmaker config.yml
review-epubmaker config.ymlreview-jsbook.cls は TeX Live には無い——File not found の正体
Re:VIEW が吐いた .tex をプロジェクトの外に持ち出してコンパイルすると、TeX Live 2024 では次で止まります——! LaTeX Error: File ‘review-jsbook.cls’ not found. に続いて ! Emergency stop.。理由は単純で、このクラスは gem に同梱されていて TeX Live には入っていない からです。kpsewhich jsbook.cls と kpsewhich jlreq.cls はどちらも実在のパスを返すのに、review-jsbook.cls と review-jlreq.cls は何も返しません。親は TeX Live にいるが、子はいない という関係です。この二つのクラスは Re:VIEW 3.0 で導入されたもので、それ以前は jsbook.cls をそのまま使っていました。
$ uplatex rv.tex
! LaTeX Error: File `review-jsbook.cls' not found.
! Emergency stop.
$ kpsewhich jsbook.cls
/usr/local/texlive/2024/texmf-dist/tex/platex/jsclasses/jsbook.cls
$ kpsewhich jlreq.cls
/usr/local/texlive/2024/texmf-dist/tex/latex/jlreq/jlreq.cls
$ kpsewhich review-jsbook.cls
$ # nothing: it lives in the gemクラスの中身を見ると、この系統がどこを向いているかがよく分かります。\ProvidesClass の識別行は「Re:VIEW pLaTeX class modified for jsbook.cls」——つまり pLaTeX 用 のクラスであり、config.yml の dvicommand が dvipdfmx なのと合わせて、印刷経路は (u)pLaTeX → DVI → dvipdfmx です。そして宣言されているオプションが、そのまま印刷所の語彙になっています。\DeclareOptionX{tombopaper}(トンボ用の用紙)、\DeclareOptionX{bleed_margin}[3mm](塗り足し。既定 3mm)、\DeclareOptionX{hiddenfolio}(隠しノンブル)、\DeclareOptionX{media}[print]——既定値が print であることが、この系統の立ち位置を何より雄弁に語っています。電子配布版を作るときは media=ebook に切り替えます。
LaTeX ではない二本目の PDF 経路——5.1 の Vivliostyle
バージョン 5.1.0 で、Re:VIEW は CSS 組版 の道を一本増やしました。rake vivliostyle:build は Vivliostyle CLI を呼び、HTML と CSS から直接 PDF を作ります(rake vivliostyle:preview でブラウザ上の確認もできます)。同じ原稿から、LaTeX 経由と CSS 経由の二通りの PDF が出せるわけです。ここで思い出しておきたいのは、Re:VIEW にとって LaTeX は 出力形式の一つ にすぎない、という設計上の立場です。原稿は .re に、体裁はクラスやスタイルシートに分けてあるからこそ、後段を丸ごと差し替えられます。どちらを選ぶかは組版の要求次第で、緻密な和文組版とトンボ付きの入稿までやるなら、いまのところ LaTeX 経路のほうが道具立てが揃っています。
Re:VIEW と素の LaTeX、どちらで書くか
EPUB も出すなら Re:VIEW、出さないなら素の LaTeX ——判断はほぼこれで足ります。EPUB を捨てられないのに LaTeX で書き始めると、後から HTML 化の変換工程を自作する羽目になり、結局そこが一番重くなります。逆に EPUB が不要なら、抽象化の層が一枚増えるだけ損です。細かい組版を詰めたくなったときに、.re → LaTeX → PDF と二段構えのどこを直せばよいのかを毎回考えることになります。もう一つの判断材料は共著者で、.re の記法は Markdown を知っていれば数分で読めますが、LaTeX のプリアンブルはそうはいきません。
| やりたいこと | 向いている道具 |
|---|---|
PDF + EPUB | Re:VIEW。rake pdf と rake epub が同じ原稿を読みます |
PDF only | 素の LaTeX。層が一枚少ないぶん、直す場所が明確です |
tombopaper, bleed_margin | 印刷所入稿。Re:VIEW の LaTeX 経路(media=print) |
rake vivliostyle | CSS 組版で PDF。LaTeX を通らない経路(5.1 以降) |
.docx, .md | Re:VIEW も Markdown を出しますが、汎用の相互変換は別項に |
最後に、Re:VIEW を使っていても LaTeX の知識が要らなくなるわけではない、という点だけ押さえておいてください。図が動いた、和文の行送りが詰まった、\usepackage を足したい——こうした要望は結局クラスファイルと .sty の側で解決することになり、そのとき読むのは Re:VIEW のドキュメントではなく LaTeX の知識です。config.yml の texdocumentclass・texcommand・dvicommand という三つの鍵は、そこへ降りていくための入口として用意されています。