はじめての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拡張機能については、下記ブログを参照してください。
書籍のファイル構成
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ファイルを生成しました。
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に簡単にインストールすることができます。
第4章の「記法をおぼえよう」は、とても役に立ちます。また、この本の原稿(.re)そのものが参考になります。「ReVIEW 記法チートシート」は、覚え書きとして利用できます。
第9章に ReVIEW.jsについて作成者自身が原稿を書いています。ReVIEW.jsは、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を生成することができました。