Re:VIEWの技術資料「はじめてのReVIEW」

Re:VIEWとは

Re:VIEWとは

はじめてのReVIEW

2018年5月、Windows10に書籍執筆支援システム Re:VIEWをインストールし、使い方を修得中です。

Re:VIEWの参考資料を検索していたら「はじめてのReVIEW – TechBooster」という電子書籍(1,000円)をみつけました。内容的に興味がある書籍ですが、アニメ調の表紙なのでスルーしていました。さらに調べていたら、同じ書籍がTechBooster/FirstStepReVIEWで無償公開していました。

「はじめてのReVIEW」は書籍制作ツールRe:VIEWの解説本です。電子書籍も販売していますが、本レポジトリから電子版と同等のPDFを作成できます

TechBoosterによる『C85 ReVIEW』のメイン作業レポジトリです。 このたび書籍制作ツールRe:VIEWの普及のため、無償公開しました。

このレポジトリはRe:VIEWで書いた原稿を公開しており、PDFは自分で生成しなければなりません。私はWindows10にRe:VIEWをインストールしていますので、自分でEPUB/PDFを生成しました。

Re:VIEWの概要、インストール、設定方法、VS Code拡張機能については、下記ブログを参照してください。

Windows10に Re:VIEW 執筆支援システムをインストールする方法

書籍執筆支援システム Re:VIEWの設定ファイルについて

Visual Studio Codeプラグインで Re:VIEW を使う方法

書籍のファイル構成

GitHub TechBooster/FirstStepReVIEWからFirstStepReVIEW-master.zipをダウンロードします。

.zipを展開すると、下記のようなディレクトリー構成になっています。

ディレクトリー構成

ディレクトリー構成

.
|-- article
|   |-- CHAPS
|   |-- commands.re
|   |-- config_print.yml
|   |-- config.yml
|   |-- contributors.re
|   |-- _cover.html
|   |-- douzinshi.re
|   |-- editor.re
|   |-- first_review_project.re
|   |-- Gemfile
|   |-- Gemfile.lock
|   |-- how_to_install.re
|   |-- images
|   |   |-- cover.jpg
|   |   |
|   |   | ・・・(画像ファイル)・・・
|   |   |
|   |   `-- 
|   |-- introduction.re
|   |-- layouts
|   |   `-- layout.tex.erb
|   |-- main.css
|   |-- markup.re
|   |-- PART
|   |-- POSTDEF
|   |-- PREDEF
|   |-- preface.re
|   |-- Rakefile
|   |-- review-ext.rb
|   |-- sheet.re
|   |-- sty
|   |   |-- jumoline.sty
|   |   |-- samplemacro.sty
|   |   |-- tatsumacro.sty
|   |   |-- techbooster-doujin.sty
|   |   `-- ulem.sty
|   |-- style_customize.odp
|   |-- style_customize.re
|   |-- troubles.re
|   |-- vvakame-grammer.xhtml
|   |-- vvakame-peg-grammer
|   |-- vvakame.re
|   |-- vvakame-w3c-grammer
|   |-- words.re
|   `-- yanzm.re
|-- HowToUse.re
`-- README.md

章立てを記述するcatalog.yml カタログファイルがありません。

「はじめてのReVIEW」原稿は、Re:VIEW 1.xのバージョンで記述されたようです。Re:VIEW 2.xとRe:VIEW 1.xは上位互換でない部分があります。そこで、Re:VIEW 2.5.0に対応した記述に変更していきます。

「Re:VIEW 1.xの文書をRe:VIEW 2.0でビルドする前に知っておきたいこと」の記事がとても参考になりました。

EPUB生成

EPUBを生成すると、大量のメッセージとワーニング(WARN)が発生しました。

デバッグモード

config.ymlを調べるとデバッグモードとなっていました。

debug: true

デバッグモードをOFFにします。

debug: false

EPUBを生成します。

> review-epubmaker config.yml
Parameter 'coverfile' is obsolete. Please use 'cover' and make complete html file with header and footer.
Parameter 'pubhistory' is obsolete. Please use 'history' array.
WARN: review-epubmaker: configuration file has no review_version property.
WARN: !!! CHAPS is obsoleted. please use catalog.yml.
WARN: !!! PREDEF is obsoleted. please use catalog.yml.
WARN: review-epubmaker: 'params:' in config.yml is obsoleted.
WARN: review-epubmaker: stylesheets should be defined in 'stylesheet:', not in 'params:'
WARN: !!! POSTDEF is obsoleted. please use catalog.yml.
WARN: review-epubmaker: 'params:' in config.yml is obsoleted.
WARN: review-epubmaker: stylesheets should be defined in 'stylesheet:', not in 'params:'
WARN: review-epubmaker: 'params:' in config.yml is obsoleted.
WARN: review-epubmaker: stylesheets should be defined in 'stylesheet:', not in 'params:'
WARN: review-epubmaker: 'params:' in config.yml is obsoleted.
WARN: review-epubmaker: stylesheets should be defined in 'stylesheet:', not in 'params:'
WARN: review-epubmaker: 'params:' in config.yml is obsoleted.
WARN: review-epubmaker: stylesheets should be defined in 'stylesheet:', not in 'params:'
WARN: review-epubmaker: 'params:' in config.yml is obsoleted.
WARN: review-epubmaker: stylesheets should be defined in 'stylesheet:', not in 'params:'
WARN: review-epubmaker: 'params:' in config.yml is obsoleted.
WARN: review-epubmaker: stylesheets should be defined in 'stylesheet:', not in 'params:'
WARN: warning: duplicate ID: files (#)
WARN: review-epubmaker: 'params:' in config.yml is obsoleted.
WARN: review-epubmaker: stylesheets should be defined in 'stylesheet:', not in 'params:'
WARN: review-epubmaker: 'params:' in config.yml is obsoleted.
WARN: review-epubmaker: stylesheets should be defined in 'stylesheet:', not in 'params:'
WARN: review-epubmaker: 'params:' in config.yml is obsoleted.
WARN: review-epubmaker: stylesheets should be defined in 'stylesheet:', not in 'params:'
WARN: review-epubmaker: 'params:' in config.yml is obsoleted.
WARN: review-epubmaker: stylesheets should be defined in 'stylesheet:', not in 'params:'
WARN: douzinshi.re:340: image not bound: hyoushi
WARN: douzinshi.re:345: image not bound: nyuko
WARN: review-epubmaker: 'params:' in config.yml is obsoleted.
WARN: review-epubmaker: stylesheets should be defined in 'stylesheet:', not in 'params:'
WARN: review-epubmaker: 'params:' in config.yml is obsoleted.
WARN: review-epubmaker: stylesheets should be defined in 'stylesheet:', not in 'params:'
WARN: review-epubmaker: 'params:' in config.yml is obsoleted.
WARN: review-epubmaker: stylesheets should be defined in 'stylesheet:', not in 'params:'
WARN: review-epubmaker: 'params:' in config.yml is obsoleted.
WARN: review-epubmaker: stylesheets should be defined in 'stylesheet:', not in 'params:'
WARN: review-epubmaker: images/how_to_install-mactex_download.png: 3588x2276 exceeds a limit. suggeted value is 2511x1592
WARN: review-epubmaker: images/introduction-review-friendly-books.jpg: 3264x2448 exceeds a limit. suggeted value is 2309x1732
WARN: review-epubmaker: images/introduction-review-hostile-books.jpg: 3264x2448 exceeds a limit. suggeted value is 2309x1732
WARN: review-epubmaker: images/sheet-page1.png: 4234x3636 exceeds a limit. suggeted value is 2158x1853
WARN: review-epubmaker: images/sheet-page2.png: 4234x2591 exceeds a limit. suggeted value is 2556x1564
WARN: review-epubmaker: images/sheet-page3.png: 4257x3044 exceeds a limit. suggeted value is 2365x1691
WARN: review-epubmaker: images/sheet-page4.png: 4257x3168 exceeds a limit. suggeted value is 2318x1725

大量のワーニング(WARN)が発生しています。

パラメータ指定

Parameter ‘coverfile’ is obsolete. Please use ‘cover’ and make complete html file with header and footer.
Parameter ‘pubhistory’ is obsolete. Please use ‘history’ array.
WARN: review-epubmaker: configuration file has no review_version property.

いくつかのパラメータが使われなくなったようです。
また、review_versionプロパティの指定が必要です。

coverfile: _cover.html

pubhistory: |
  2013年12月31日  初版発行 v1.0.0

config.yml を修正します。

cover: _cover.html

history: [["2013年12月31日  初版発行 v1.0.0"]]

review_version: 2.0

カタログファイル

WARN: !!! CHAPS is obsoleted. please use catalog.yml.
WARN: !!! PREDEF is obsoleted. please use catalog.yml.
WARN: !!! POSTDEF is obsoleted. please use catalog.yml.

章立てを記述する下記ファイルが非推奨になり、catalog.yml カタログファイルの使用が推奨になりました。

  • PREDEFファイル
  • CHAPSファイル
  • POSTDEFファイル
preface.re
introduction.re
how_to_install.re
first_review_project.re
markup.re
style_customize.re
commands.re
editor.re
yanzm.re
vvakame.re
douzinshi.re
words.re
troubles.re
contributors.re
sheet.re

これらの情報から章立てを記述したcatalog.yml カタログファイルを作成します。

PREDEF:
   - preface.re

CHAPS:
   - introduction.re
   - how_to_install.re
   - first_review_project.re
   - markup.re
   - style_customize.re
   - commands.re
   - editor.re
   - yanzm.re
   - vvakame.re
   - douzinshi.re
   - words.re
   - troubles.re
APPENDIX:
   - contributors.re
POSTDEF:
   - sheet.re

stylesheets指定

WARN: review-epubmaker: ‘params:’ in config.yml is obsoleted.
WARN: review-epubmaker: stylesheets should be defined in ‘stylesheet:’, not in ‘params:’

params:パラメータが使われなくなり、スタイルシートはstylesheet:で記述します。

params: --stylesheet=main.css

config.yml を修正します。

stylesheet: ["main.css"]

画像サイズの上限指定

WARN: review-epubmaker: images/how_to_install-mactex_download.png: 3588×2276 exceeds a limit. suggeted value is 2511×1592
WARN: review-epubmaker: images/introduction-review-friendly-books.jpg: 3264×2448 exceeds a limit. suggeted value is 2309×1732
WARN: review-epubmaker: images/introduction-review-hostile-books.jpg: 3264×2448 exceeds a limit. suggeted value is 2309×1732
WARN: review-epubmaker: images/sheet-page1.png: 4234×3636 exceeds a limit. suggeted value is 2158×1853
WARN: review-epubmaker: images/sheet-page2.png: 4234×2591 exceeds a limit. suggeted value is 2556×1564
WARN: review-epubmaker: images/sheet-page3.png: 4257×3044 exceeds a limit. suggeted value is 2365×1691
WARN: review-epubmaker: images/sheet-page4.png: 4257×3168 exceeds a limit. suggeted value is 2318×1725

いくつかの画像ファイルが画像サイズ上限を超えています。

画像の縦ピクセル×横ピクセルの上限値を指定します(デフォルト値は、おそらく 4000000)。config.yml を修正します。

epubmaker:
     image_maxpixels: 16000000

IDの重複

WARN: warning: duplicate ID: files (#)

filesというIDが重複しているようです。調べてみるとcommands.reファイルに記述ミスがあります。

//table[files][生成されるファイルと役割]{
コマンド名と引数 意味
 ・・・(省略)・・・
//}

//table[files][生成されるファイルと役割]{
ファイル名 役割
 ・・・(省略)・・・
//}

tableIDのfilesが2回使われています。commands.reファイルを修正します。

//table[filesmap][生成されるファイルと役割]{
コマンド名と引数 意味
 ・・・(省略)・・・
//}

//table[files][生成されるファイルと役割]{ ファイル名 役割
 ・・・(省略)・・・ 
//}

画像ファイルなし

WARN: douzinshi.re:340: image not bound: hyoushi
WARN: douzinshi.re:345: image not bound: nyuko

douzinshi.reで参照している画像(hyoushi、nyuko)がありません。このワーニングは、そのまま残しておきます。

修正後のEPUB生成

EPUBを生成します。

> review-epubmaker config.yml
WARN: douzinshi.re:340: image not bound: hyoushi
WARN: douzinshi.re:345: image not bound: nyuko

画像なしのワーニングは残りますが、EPUBファイルを生成しました。

EPUB例

EPUB例

EPUB例

EPUB例

PDF生成

PDFを生成すると意味不明のエラーが発生しました。

> review-pdfmaker config.yml
compiling preface.tex
compiling introduction.tex
compiling how_to_install.tex
compiling first_review_project.tex
compiling markup.tex
compiling style_customize.tex
compiling commands.tex
compiling editor.tex
compiling yanzm.tex
compiling vvakame.tex
compiling douzinshi.tex
WARN: douzinshi.re:340: image not bound: hyoushi
WARN: douzinshi.re:345: image not bound: nyuko
compiling words.tex
compiling troubles.tex
compiling contributors.tex
compiling sheet.tex

・・・(省略)・・・
Traceback (most recent call last):
        11: from C:/Ruby25-x64/bin/review-pdfmaker:23:in `'
        10: from C:/Ruby25-x64/bin/review-pdfmaker:23:in `load'
         9: from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/review-2.5.0/bin/review-pdfmaker:16:in `'
         8: from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/review-2.5.0/lib/review/pdfmaker.rb:81:in `execute'
         7: from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/review-2.5.0/lib/review/pdfmaker.rb:131:in `execute'
         6: from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/review-2.5.0/lib/review/pdfmaker.rb:239:in `generate_pdf'
         5: from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/review-2.5.0/lib/review/pdfmaker.rb:164:in `build_pdf'
         4: from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/review-2.5.0/lib/review/pdfmaker.rb:401:in `template_content'
         3: from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/review-2.5.0/lib/review/template.rb:20:in `result'
         2: from C:/Ruby25-x64/lib/ruby/2.5.0/erb.rb:876:in `result'
         1: from C:/Ruby25-x64/lib/ruby/2.5.0/erb.rb:876:in `eval'
(erb):1:in `template_content': undefined local variable or method `documentclassoption' for # (NameError)
Did you mean?  @documentclassoption

「Re:VIEW 1.xの文書をRe:VIEW 2.0でビルドする前に知っておきたいこと」によると、「/layouts/layout.tex.erb」の記述方法が大幅に変更になったようです。

「/layouts/layout.tex.erb」をhttps://raw.githubusercontent.com/kmuto/review/master/templates/latex/layout.tex.erb のファイルで上書きします。


config.ymlにLaTeX用のスタイルファイル指定を修正します。

texdocumentclass: ["jsbook", "oneside,14pt"]

config.yml を修正します。

texdocumentclass: ["jsbook", "uplatex,oneside"]

PDFを生成してみます。

> review-pdfmaker config.yml
compiling preface.tex
compiling introduction.tex
compiling how_to_install.tex
compiling first_review_project.tex
compiling markup.tex
compiling style_customize.tex
compiling commands.tex
compiling editor.tex
compiling yanzm.tex
compiling vvakame.tex
compiling douzinshi.tex
WARN: douzinshi.re:340: image not bound: hyoushi
WARN: douzinshi.re:345: image not bound: nyuko
compiling words.tex
compiling troubles.tex
compiling contributors.tex
compiling sheet.tex

・・・(省略)・・・

無事にPDFを生成しました。

はじめてのReVIEWの内容

「はじめてのReVIEW」は興味深い内容で構成しています。本書は2013-12-31の発行なので、情報は少々古いですが十分に役に立つ内容です。

はじめに
第1章 ReVIEW入門
第2章 環境構築
第3章 執筆を始める
第4章 記法をおぼえよう
第5章 スタイル解説
第6章 コマンド解説
第7章 Sublime Text 2でReVIEWを書く
第8章 仕様書を作ろう
第9章 ReVIEW.js で学ぶ ReVIEW記法のお約束
第10章 同人誌を作ろう
第11章 同人誌的ReVIEW関連用語開発
第12章 トラブル集
付録A 著者紹介
ReVIEW記法チートシート


第1章の「ReVIEW入門」でRe:VIEWの実例を紹介しています。

TechBooster『Effective Android』は、コミケット84での紙の同人誌版から始まり、達人出版会による電子書籍版を経て、インプレス社から紙の商業誌として出版されました。

『Effective Android』という本は、Re:VIEWを利用して共同執筆したそうです。進歩発展の早いIT系の先端技術は、Re:VIEWなどの執筆支援システムを利用して早期に電子書籍で出版する時代になってきたことを感じます。


第2章の「環境構築」で、Windows環境構築について次のように書かれています。

残念なことに、Windows にReVIEW をインストールするのは容易ではありません。

しかし、2018年現在ではWindows10に簡単にインストールすることができます。

Windows10に Re:VIEW 執筆支援システムをインストールする方法


第4章の「記法をおぼえよう」は、とても役に立ちます。また、この本の原稿(.re)そのものが参考になります。「ReVIEW 記法チートシート」は、覚え書きとして利用できます。


第9章に ReVIEW.jsについて作成者自身が原稿を書いています。ReVIEW.jsは、Visual Studio CodeのRe:VIEW拡張機能プラグインで利用しているモジュールです。

Visual Studio Codeプラグインで Re:VIEW を使う方法

9.1 ReVIEW.jsってなに?
筆者は、Rubyによる実装であるところの本家ReVIEWを参考に、JavaScript実装*1であるReVIEW.jsを作成しています。

Re:VIEWの仕様(動き?)を参考にしてシンタックスダイアグラムを定義して、パーサを作成したそうです。

まだまだRuby版には追いつかない
もちろん、長い間幾多のユーザの利用に耐え、開発が継続されてきたRuby版ReVIEWには追いつけていません。まずは、このReVIEW本の原稿の処理全てをReVIEW.jsで…といいたいところですが、実装されていない機能がそれなりにあるため、それもままなりません。悲しいですね。

まだ実装していない機能がたくさんあるようです。table ブロック記法も実装検討中で未実装となっていました。

まとめ

「はじめてのReVIEW」という電子書籍の原稿を入手して、設定ファイルをRe:VIEW 2.x対応に修正しました。

Windows10環境でRe:VIEWを使用して原稿からEPUB/PDFを生成することができました。