Re:VIEW など出版ワークフロー

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 と電子書籍を同時に出す」という一点が、その用途にぴたりと合っていたからです。

review
= 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 を叩くと、どちらが欠けているのか分からないエラーに悩むことになります。

terminal
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.yml

review-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.clskpsewhich jlreq.cls はどちらも実在のパスを返すのに、review-jsbook.clsreview-jlreq.cls は何も返しません。親は TeX Live にいるが、子はいない という関係です。この二つのクラスは Re:VIEW 3.0 で導入されたもので、それ以前は jsbook.cls をそのまま使っていました。

terminal
$ 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.ymldvicommanddvipdfmx なのと合わせて、印刷経路は (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 + EPUBRe:VIEW。rake pdfrake epub が同じ原稿を読みます
PDF only素の LaTeX。層が一枚少ないぶん、直す場所が明確です
tombopaper, bleed_margin印刷所入稿。Re:VIEW の LaTeX 経路(media=print
rake vivliostyleCSS 組版で PDF。LaTeX を通らない経路(5.1 以降)
.docx, .mdRe:VIEW も Markdown を出しますが、汎用の相互変換は別項に

最後に、Re:VIEW を使っていても LaTeX の知識が要らなくなるわけではない、という点だけ押さえておいてください。図が動いた、和文の行送りが詰まった、\usepackage を足したい——こうした要望は結局クラスファイルと .sty の側で解決することになり、そのとき読むのは Re:VIEW のドキュメントではなく LaTeX の知識です。config.ymltexdocumentclasstexcommanddvicommand という三つの鍵は、そこへ降りていくための入口として用意されています。