Win10でRe:VIEWからPDFを出力する環境構築

Re:VIEW のイメージ。

Windows 10 環境下で Re:VIEW を使って PDF を出力するための環境構築に苦戦したので、誰かの役に立つべく、また備忘録としてまとめておきます。 基本的には設定を小さく繰り返していけばどんなアプローチでも環境構築することができると思うのですが、重要なのは簡単にできることです。

Re:VIEW とは、Ruby で作られた出版システムで、Re:VIEW ないし Markdown 形式で書いたプレーンテキストを、 HTML, EPUB, PDF へ出力してくれるツールです。

このコンテンツは環境変数(Path)などの基本知識と操作が可能であることを前提にしています。またコマンドラインでの操作がある程度可能な人向けです。

Cygwin, MSYS2 などの方法もある

以下にはここで紹介しない方法で起こったトラブルについて書いています。 単に環境構築だけしたい方は、読み飛ばして次の項目に進んでください。

Cygwin, MSYS2 などの UNIX(LINUX) 系ターミナルシステムを Windows 上でランニングさせるソフトウェアを使って環境構築する資料が多く見つかります。

これについては、旧環境下では結構容易に構築することができるのようなのですが、 最新の環境で上手く構築するには、いくらかの手間がかかりそうです(かかりました)。

これらを使う場合、Windows システムをあまり汚さないという利点があります。 また EPUB や HTML に出力するなら、これらだけでも十分です。

一方で PDF 出力するのに少々手こずるケースがあって、 一見すると必要なコンポーネントやツールインストールには成功しているのですが、 環境差異やバージョンの都合でビルドできないケースが良くありました。

コードレベルの修正をすれば良いのですが、今回はそんな余裕もありませんでしたので、ここで紹介する他の方法を取った、という経緯がります。

これらを使う場合、基本的には Ruby をインストールし、gem コマンドで reviw をインストールし、TexLive を Windows 上にインストールするか、 ターミナルシステム上にインストール(してビルド)するかです。

Cygwin は Ruby, LiveTex(コンパイルにはperlも要る?) がインストール時に選択できるので、 これ 1 つで環境構築が済めば楽だったのですけどね。将来的には問題解決して、Cygwin が一番容易になってるかもしれません。

Winows システムとターミナルシステムをまたがると、TexLive 系の実行ファイルが、ファイルパスの問題で失敗するケースがあります。 TexLive 系の実行ファイルに投げられるファイルは、Re:VIEW から出力される中間フォーマットファイルなので、あんまり外から弄れないです。 (多分相対パスではなく絶対パスを出力するような仕組みを作ってやると問題は解決しそうなところまでは分かっているのですけども)

直接環境構築する

Windows に環境構築しないといけない、というくらい、UNIX/LINUX 系システムに慣れていない人は、 いずれにせよターミナル系のシステムを使うより、ここで紹介するやり方が早いかもしれませんね。

LiveTex をダウンロードする

すごく時間がかかるので、予め LiveTex をダウンロードしておきます。 どのアプローチから環境構築しようとも、LiveTex のダウンロード・インストールが一番時間がかかります。 ダウンロードを開始したらいったん次の項目に進み Ruby と Re:VIEW をインストールしましょう。

ここでは iso のダウンロードを推奨します。インストーラ形式だと、実行時にダウンロードするように設計されていて、 もしインストールをやり直したい場合などに、再度ダウンロードする必要があって不便です。

完全な iso が手に入るならどの方法でも良いですが、サイズが 2.9GB と大きいので、torrent 経由でのダウンロードを推奨します。 Web ブラウザ越しに iso そのままをダウンロードしても良いのですが、通信が比較的遅いのと、時折失敗することがあるため torrent 推奨です。

恐らく配信側の物理的なパフォーマンスと距離の影響です。失敗が良くあるのか md5 などのハッシュファイルも配布されています。 あとなぜかダウンロードファイルを公開しているページが時折鍵付きになってダウンロードに失敗するケースがあります。

ダウンロードするバージョンですが、執筆時時点で最新は 2017 ですが、2016 を強く推奨します。 Re:VIEW に必要なコンポーネントが 2017 に含まれていない可能性があります。

具体的には C:\texlive\2017\bin\win32\uplatex.exeC:\texlive\2017\bin\win32\bb.exe などが必要なのですが、 パっと見では 2017 のインストール時には追加されませんでした(標準でカスタマイズなしのフルインストール、ただし 2017 検証時は iso ではない)。

後のバージョンや 2017 でそれらがインストールされているのなら、最新版をインストールしても良いですが、私は 2016 をインストールしました。 公式ページの最新のインストーラは、その時点で最新のバージョンをインストールするインストーラのみが掲載されているので注意してください。

ダウンロードが完了したら仮想ディスクドライブにマウントして、中身を展開します。 Windows10 なら特殊な環境がなくても iso イメージをマウントすることができます(右クリックのコンテキストメニューから)。

中にある install-tl-windows.bat を起動して、LiveTex のインストールを開始します。 このインストールもまた長いので注意してください。

標準のインストール先は C ドライブの直下ですが、これを変更しても構いません。 ここでは C ドライブ直下を例に紹介しますが、C:\texlive\2017\bin\win32 への環境変数(パス)を通しておきます。 これで Re:VIEW のシステムが、Tex を参照できるようになります。

また C:\texlive\2017\bin\win32 の中に、uplatex.exebb.exe が含まれているかを確認してください。 これらは Re:VIEW の実行時に参照されるので、含まれない場合、PDF のビルドに失敗します。

Ruby / Re:VIEW をインストールする

Ruby をインストーラから起動してインストールします。素直にすべて入れてしまうのが良いです。 次いで Ruby への環境変数(パス)を通しておきます。これも Ruby のインストーラが環境変数への追加を尋ねるようになっていたのでそのまま使っても良いです。

コマンドプロンプトを起動して、ruby -v コマンドでインストールを確認しておきます。 インストールが確認できたら続いて Re:VIEW をインストールします。

gem install review コマンドで、Re:VIEW をインストールします。 少々時間がかかるので、実行が停止したように見えますが、気長に待ちます。

インストールが完了したら、review -v コマンドで、Re:VIEW のインストールを確認します。

gem 経由で review を入れない場合、ruby review とコマンド入力する必要となっているかも。

動作の確認

コマンドプロンプトで適当な作業ディレクトリに移動します。そこで review-init Re:VIEWフォルダ名 コマンドを実行すると、 Re:VIEW の初期状態フォルダと、その中の初期状態ファイルが生成されます。これで執筆環境は整います。

問題の PDF 出力についてですが、先の項目の TexLive のインストールと、環境パスの設定が完了してから行います。 コマンドプロンプトを起動した後から環境パスを設定した場合は、コマンドプロンプトを一度終了してから再起動する必要がある点に注意してください。

"生成したRe:VIEWフォルダ" に移動して review-pdfmaker config.yml を実行すると PDF のビルドを開始します。 ビルドに成功するとき、"Re:VIEWフォルダ\book.pdf" が出力されます。

必ず "Re:VIEWフォルダ" に移動する必要があります。LiveTex がレイアウトを決定するための .sty ファイルなるものが "Re:VIEWフォルダ" には含まれていて、 review-pdfmaker は、コマンドを実行したフォルダと同階層にある sty フォルダの中にある .sty ファイルを参照しに行きます。

Re:VIEW では他に EPUB や HTML のビルドもありますがここでは割愛、PDF が出るなら、他のビルドも通るはずです。 もしビルドが通らないときは、エラーメッセージを参考に問題を解決する必要があります。

「~ の実行に失敗した」という類のメッセージが良くありますが、実際にはファイルが存在しなかったり、 必要なファイルが存在するものの、ファイルパスの指定方法の関係上動かないといったケースがあるので、 いくらか試してみて改善されない場合は、環境構築を見直したほうが良いかもしれません。

その他の方法

Windows 10 の CreatearsUpdate を導入している場合、"Bash on Windows" が使えます。早い話が Windows 上で LINUX を動かすものです。 これについては大変良い資料があるのでそちらを参照してください。一緒に技術書典の執筆を行っている方のものです。

その他の資料