Cygwin上でREVIEWを動かす

市川せうぞーさんの記事「はじめてのReVIEW〜InDesignへの取り込み」に触発されて、Windows上でREVIEWを動かしてみました。CygwinTexも初めてだったので、大分苦労しました。EPUB出力は正常に行えるようになりましたが、PDF出力はまだ原因不明のエラーが発生します。が、一応動作するまでの手順をメモっておきます。

1) Cygwinにインストールする必要があるソフトウェア

Ruby
・vi
・bsdtar
・git
wget
・rebase
・TexLive2011(TexLive2011のインストール手順については下記ページ参照)
Using LaTeX in Japanese on Cygwin.

2) REVIEWのインストール手順

下記のページ参照
ReVIEW の使い方

ただし、TexLive2011へのフォントのインストールは別途行うので、「otf.styのインストール」以降の手順は行う必要なし。

3) REVIEWの要修正箇所

Cygwin固有の問題で、REVIEWを実行するためのRubyコマンドスクリプトに修正を加える必要がある。

review-epubmaker

499行目から

  # Zip epubファイルの作成。mimetypeは圧縮しないようにする
  fork {
    basedir = Dir.pwd
    Dir.chdir("#{tmp}/#{bookname}") {|d|
      exec("zip -0X ../#{bookname}.epub mimetype")
    }
  }
  Process.waitall
  fork {
    basedir = Dir.pwd
    Dir.chdir("#{tmp}/#{bookname}") {|d|
      exec("zip -Xr9D ../#{bookname}.epub META-INF OEBPS")
    }
  }

review-pdfmaker
436行目

unless File.directory?(dirname)

4) rebaseの実行

REVIEWを実行すると、多分、以下のようなエラーが出る。

$ review-epubmaker config.yml
      1 [main] ruby 4896 C:\cygwin\bin\ruby.exe: *** fatal error - unable to rem
ap \\?\C:\cygwin\lib\ruby\1.8\i386-cygwin\etc.so to same address as parent: 0x1A
0000 != 0x200000
Stack trace:
Frame     Function  Args
02407288  6102796B  (02407288, 00000000, 00000000, 00000000)
02407578  6102796B  (6117EC60, 00008000, 00000000, 61180977)
024085A8  61004F1B  (611A7FAC, 61243684, 001A0000, 00200000)
End of stack trace
      1 [main] ruby 4832 fork: child 4896 - died waiting for dll loading, errno
11
/home/hirai/review/bin/review-epubmaker:113:in `fork': Resource temporarily unav
ailable - fork(2) (Errno::EAGAIN)
        from /home/hirai/review/bin/review-epubmaker:113:in `main'
        from /home/hirai/review/bin/review-epubmaker:109:in `each_line'
        from /home/hirai/review/bin/review-epubmaker:109:in `main'
        from /home/hirai/review/bin/review-epubmaker:108:in `open'
        from /home/hirai/review/bin/review-epubmaker:108:in `main'
        from /home/hirai/review/bin/review-epubmaker:638

この問題を解決するために、Cygwinのrebaseallというコマンドを実行する。

4-1) Cygwinコマンドプロンプトを閉じる。

4-2) Windowsコマンドプロンプトを開く。

4-3) 以下のコマンドを実行する(Cygwinのインストール先がC:\cygwinの場合)

> cd c:\cygwin\bin
> ash
$ ./rebaseall

5) Cygwin.batの書き換え

以下のワーニングメッセージが出ないようにするために、Cygwin.batを書き換える。

cygwin warning:
  MS-DOS style path detected: C:/Users/hirai/AppData/Local
  Preferred POSIX equivalent is: /cygdrive/c/Users/hirai/AppData/Local
  CYGWIN environment variable option "nodosfilewarning" turns off this warning.
  Consult the user's guide for more details about POSIX paths:
    http://cygwin.com/cygwin-ug-net/using.html#using-pathnames

Cygwin.batにrem以降の2行を追加する。

@echo off

rem --- Cygwin が DOS 形式のパスについての警告を出力しないようにする
set CYGWIN=nodosfilewarning

C:
chdir C:\cygwin\bin

bash --login -i

ここまでの手順でEPUBの生成が可能になる。
PDFを生成する場合は、以降のセットアップを続ける。

6) PDF生成のためのフォント関連のセットアップ

TexLive2011への日本語フォントのセットアップ手順については、下記ページ参照。
日本語フォントのセットアップ

私の場合は、Adobe CS 4にバンドルされている小塚明朝、小塚ゴシックを使用。
上記ページの解説に従ってフォントをコピーし、フォントマップ(kozukaEmbed.map)を配置。

ls-Rデータベースを更新するために、Cygwinのコンソールから、

$ mktexlsr

を実行。

PDFファイルを生成するときに、kozukaEmbed.mapを使うようにreview-pdfmakerファイルを次のように書き換える。

135行目

      exec("dvipdfmx -f kozukaEmbed.map -d 5 book.dvi")

以上のセットアップが完了したら、一応PDFの生成が可能になるが、以下のようなエラーが発生してテキストの一部が欠落してしまう。

! Undefined control sequence.

原因は不明だが、REVIEWのバグ?