FAQ - Re:VIEW の使い方について(EPUB・WebMaker)

FAQ(よくある質問と回答)のこのセクションは、Re:VIEW の使用方法のうち、EPUB および Web ページの生成に関係する事柄をまとめています。


EPUB とは何ですか?

電子書籍フォーマットの世界標準です。多くのリーダーソフトがあり、PC やスマートフォンで本を開くことができます。

中身としては、HTML と CSS を使っていますが、通常は JavaScript は禁止され、CSS の一部も使えないような制約された表現に抑制されています。

ページ表現としては、リフロー型とフィクス型の2種類があります。

  • リフロー型:Web ブラウザと同様に表示サイズや基本フォントサイズによって1ページあたりに表現する範囲が変化します。

  • フィクス型:ページを1つの画像として、紙の本と同じ表現で固定します。

Re:VIEW が生成する EPUB はリフロー型です。

EPUB に変換するにはどうしたらよいですか?

rake epub

または

review-epubmaker config.yml

Web ページに変換するにはどうしたらよいですか?

rake web

または

review-webmaker config.yml

これで、プロジェクトの webroot フォルダに公開用の HTML ファイルが作成されます。

生成される EPUB のバージョンはいくつですか?

デフォルトでは EPUB バージョン 3 のファイルが生成されます。config.yml の epubversion(デフォルトは3)および htmlversion(デフォルトは5)のパラメータで調整できますが、古いバージョンについては今後サポートを終了する可能性があります。

生成された EPUB が標準に合致しているかどうかの確認はどうしたらよいですか?

Kindle 用の mobi ファイルは作れますか?

Re:VIEW 自体にその機能はありませんが、Amazon が無料で配布している Kindle Previewer(https://www.amazon.com/gp/feature.html?ie=UTF8&docId=1000765261)というソフトウェアで EPUB から変換できます。

なお、論理目次だけではエラーが報告されるようです。物理目次ページを付けるためには、次のように config.yml に設定します。

epubmaker:
  toc: true

かつては Linux にも対応した CUI の KindleGen というコマンドがありましたが、すでに配布が停止し、Windows または macOS で動作する GUI ベースの Kindle Previewer のみが Amazon 公式の変換ツールです。

「電書協ガイドライン」に従った EPUB は作れますか?

電書協ガイドライン は、紙の本を電子書籍化する過程で EPUB の仕様を知らない制作会社でも迷わないように策定されたローカル規約です。EPUB の標準よりもファイル名やフォルダ構成、タグの付け方などに縛りがあります。

完全に準拠しているかという観点で言えば、Re:VIEW の EPUB は準拠していません。メタファイルに電書協ガイドラインの必須属性を追加するだけならば、config.yml に以下のように加えます。

opf_prefix: {ebpaj: "http://www.ebpaj.jp/"}
opf_meta: {"ebpaj:guide-version": "1.1.3"}

iBooks で EPUB を開いたときに左右ページの間に影ができます

config.yml に以下のように加えると、影を消せます。

opf_prefix: {ibooks: "http://vocabulary.itunes.apple.com/rdf/ibooks/vocabulary-extensions-1.0/"}
opf_meta: {"ibooks:binding": "false"}

上記の電書協ガイドラインの設定もある場合は以下のようにします。

opf_prefix: {ebpaj: "http://www.ebpaj.jp/", ibooks: "http://vocabulary.itunes.apple.com/rdf/ibooks/vocabulary-extensions-1.0/"}
opf_meta: {"ebpaj:guide-version": "1.1.3", "ibooks:binding": "false"}

EPUB から PDF を作ることはできませんか?

Re:VIEW 5.1.0 から、CSS 組版ソフトウェア Vivliostyle-CLI を呼び出す Rake ルールを追加しています。Vivliostyle-CLI をインストールした環境において、rake vivliostyle:build または rake vivliostyle で PDF を作成、rake vivliostyle:preview でブラウザのプレビューが開きます。

関連して以下のような手法・ドキュメントがあります。

CSS を変更するにはどうしたらよいですか?

デフォルトでプロジェクトに展開される style.css ファイルを編集できます。

config.yml の stylesheet パラメータで別ファイルを指定したり、複数指定したりすることも可能です。

Web フォントは利用できますか?

WebMaker で生成した Web ページでは、CSS で設定していれば利用可能です。

EPUB については、EPUB リーダーが対応していれば可能ですが、そのようなリーダーが存在するかは不明です。

縦書き右綴じにするにはどうしたらよいですか?

縦書きにするには、CSS で文字方向を縦にする必要があります。

body {
  ...
  -webkit-writing-mode: vertical-rl;
  -epub-writing-mode:   vertical-rl;
  writing-mode: tb-rl;
}

さらに、config.yml で EPUB のページ送りを右から左に遷移するよう指定します。

direction: "rtl"

実際に縦書きが正常に表示されるかは、EPUB リーダーの能力に依存します。

数式を入れたいのですが良い方法はありませんか?

Re:VIEW フォーマットガイド の「TeX 式」を参照してください。imgmath という機能で TeX 式を画像化できます。

Re:VIEW 5.1 以降では、math_format パラメータの値に基づいて @<m> および //texequation に記載した TeX 数式を HTML 内で実際どう表現するかを指定できます。

  • null: 何もせず、単に文字列として配置します。

  • mathml: MathML で表現します。

  • mathjax: MathJax で表現します。

  • imgmath: 画像で表現します。

コードハイライトを使うにはどうしたらよいですか?

highlight 設定を有効にします。現時点で有効な値は rouge または pygments です。前者の場合は rouge gem パッケージ、後者の場合は pygments.rb gem パッケージおよび Python の pygments コマンドが必要です。

highlight:
  html: "rouge"

ハイライト解析に使う言語をリストの言語設定(emlist 系では第2、list 系では第3オプション)で指定する必要があります。

//emlist[][ruby]{
def hello
  puts 'Hello.'
end
//}

ハイライトを有効にすると、コード内のインライン命令がそのまま出てしまいます

ハイライトとインライン命令は極めて相性が悪く、現状ではまだ妥当な解決方法がありません。ハイライトを使う箇所ではコード内のインライン命令は使わないようにしてください。

どうしてもという場合、いったんインライン命令を隠し、ハイライトをかけてからインライン命令を戻す、という処理が必要です。(#1256)

複数のスペース文字を入れても、1つになってしまいます。どうしたらよいですか?

どうしてもリテラルなスペースを入れたいときには、以下のようにして埋め込みます。

3つのスペースを@<embed>{|latex|~~~}@<embed>{|html|&nbsp;&nbsp;&nbsp;}と入れる

見出しのない re ファイルが EPUB に収録されません

EPUBMaker は論理的な目次を作って管理しているため、見出しのない re ファイルから生成されるコンテンツは欠落してしまいます。

見出しの nodisp オプションを使うと、「目次に含めるけれどもコンテンツ側には表示しない」見出しを定義できます。たとえば以下の例では、「謝辞」という見出しは目次のみに登場し、コンテンツでは「ありがとうございます。」のみが表示されます。

=[nodisp] 謝辞

ありがとうございます。

どうしても目次にも表示したくない場合は、フックで目次の HTML ファイルを書き換えてください。

複雑な表表現をしたいです

Re:VIEW の表表現はシンプルな縦横表の記述を前提にしています。セル結合や任意の罫線、箇条書きを含めるなどの複雑な表を表現するには不向きなので、画像として作成し、//imgtable 命令を使って貼り込むことを検討してください。

EPUB/Web で索引を使うにはどうしたらよいですか

索引を作ると一概に言っても、「読み順のソートをどう実現するか」「相互参照関係をどう表すか」という2つの大きな問題があります。

EPUB/Web 向けの実装例を以下で掲載しています。

上記2つの問題への対応として、次のアプローチをとっています。

  • 索引は TeX 環境、読みは MeCab を流用する(つまり、基本的に TeX と同じやり方を使う)

  • 被参照側(hidx を埋め込んだ側)には中身が空のリンクアンカー(<span id="〜" class="rv_index_target"></span>)、参照側(索引一覧側)は 記号でリンクにする(記号は hook_afterbackmatter_common.rb で変更可)

CSS 組版の場合には参照記号の代わりにたとえば counter(page) などの CSS 命令を使ってページ番号を入れることはできますが、そのページ番号は「組んでみるまでわからない」ので、重複したページ番号を除くといった処理はできません。組んだ結果を見て手動で埋め込み索引を除く、あるいは HTML を加工するといった作業が必要になるでしょう。

<section> 囲みにすることはできませんか

Re:VIEW 5.2 以降では、use_section パラメータを true にすると、HTML の見出しの登場とそのレベルに応じて <section> 要素で囲むようになります。

epubmaker:
  use_section: true