Re:VIEWで索引を作る
2019年5月、Re:VIEWでEPUB用の索引を作成することができました。環境は、Windows10 WSLにインストールしたUbuntu18.04.2です。Re:VIEWのバージョンは、3.1.0です。
$ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 18.04.2 LTS Release: 18.04 Codename: bionic
$ review version 3.1.0
Amazonから『最強の電子書籍執筆ツール Re:VIEW解説』を出版しました。
EPUBで索引を作れないか?
標準のRe:VIEWは、PDFビルダ(TeX)でのみ索引を作成できます。PDF索引の作成方法は、 『執筆支援システム Re:VIEWでPDF用の索引を作る』を参照してください。
EPUBでは、索引を作成できないのでしょうか?今回、『最強の電子書籍執筆ツール Re:VIEW解説』を書くときに、Re:VIEWマークアップのリファレンスマニュアルとしても利用できるように索引が欲しいと考えて、いろいろ調べました。
公式サイトのドキュメントに「索引の使い方」という説明があります。
LaTeX ビルダ以外のビルダでそれを活用する方法は提供していません。というのも、ほかのビルダでは、索引を読み順に並べ替えたり、それを表現したりといった方法についての一般的な解が存在しないからです。
EPUB (HTML ビルダ) では <!– IDX:索引文字列 –>のコメントで、IDGXML ビルダでは <index value=”索引文字列”> の XML 要素で、それぞれ索引は埋め込まれます。
例えばこれらを拾い出して、独自の辞書読み・整列ツール (LaTeX の mendex コマンドを流用するなど) を用意する方法が考えられるでしょう。
Re:VIEWで記述した@<idx>、@<hidx>マークアップは、HTMLのコメント「<!– IDX:索引語 –>」でEPUB内に索引文字列を埋め込んでいます。このコメントから索引文字列を抽出すれば、自前で索引を作成することが可能です。
フックとは
Re:VIEWは、EPUB作成処理の途中に割り込んで任意の処理を行うフックという機能があります。Re:VIEWは次の表に示すように、いろいろなタイミングでフックを仕込めます。
項番 | 機能 | フックタイミング | 引数 |
---|---|---|---|
1 | beforeprocess | ファイル変換処理の前 | 作業パス |
2 | afterfrontmatter | 前付けの作成後 | 作業パス |
3 | afterbody | 本文の変換後 | 作業パス |
4 | afterbackmatter | 後付けの作成後 | 作業パス |
5 | aftercopyimage | 画像などのコピー後 | 作業パス |
6 | prepack | ePUB zipアーカイブ直前 | EPUBパス |
config.yml設定ファイルにフックするプログラムを指定するとRe:VIEWの処理中に指定したプログラムを呼び出すことができます。フックプログラムは、実行権限があればバイナリープログラムでもシェル・スクリプトでもかまいません。
フックプログラムの引数は、第1引数に作業用展開ディレクトリーのパスを渡しますので、そのディレクトリー内のEPUB要素を加工することができます。prepackフックは、EPUB準備ディレクトリーのパスを渡しますので、メタ情報などの加工に使用することができます。
本文の変換後にフックを仕掛けて、自分で作成したプログラムで索引を作成します。
索引のページ番号は?
索引は、書籍中に出現するキーワードなどを容易に探し出せるように一定の順序に並べてその所在を明確にしたものです。PDFや紙の書籍では、ページ番号によりその所在位置を示しています。リフロー型の電子書籍において、ページ番号という概念がありません。キーワードの所在位置を示すための方法はないでしょうか。「1.1」などの見出し番号が使えそうです。
見出しは、目次からリンクするためにアンカーとなる<a>タグが付いています。図に示したように索引語から見出しのアンカーにリンクを付ければ、索引語をクリックすると本文の見出しに飛ぶことができます。
EPUB書籍を作る
原稿や読み方辞書は、 『執筆支援システム Re:VIEWでPDF用の索引を作る』で使用したものを使います。
$ rake epub review-epubmaker config.yml
索引はできませんが、次のようなEPUBを作成しました。
EPUB索引の組み込み
EPUB索引の作成方法は、 『最強の電子書籍執筆ツール Re:VIEW解説』に書いてありますので、そちらを見てください。
Linuxシェルで書いたソースコードと簡単なコードの説明を書いています。
この索引作成プログラムは、私が本書の索引を作るために書いたプロトタイプなのですべての環境での動作を保証するものではありません。本書は情報の提供だけを目的としています。読者自身の責任と判断によってお使いください。
作成したEPUBのサンプルは、ここ(book)からダウンロードしてください。
まとめ
Re:VIEWのEPUBビルドで索引を作成することができました。
Re:VIEWは、あるタイミングでフック処理により追加の処理を実行できるので、いろいろな拡張ができる素晴らしいシステムです。