論理目次と視覚目次を別にする

先日「目次にルビをつけてください」というリクエストにのけ反った。
『電子書籍の目次が難しい』https://t2aki.doncha.net/?id=1366594374
この時、教えてもらって、論理目次と視覚目次を別に作って対応。忘れないうちにメモしておこうと、すっかり忘れてたので改めてメモ。
EPUB3の目次は2種類。
・デバイスやアプリで使うための「論理目次」
・画面に表示するための「視覚目次」
たぶん、ひとつの目次ファイルを両方に使うことが多いと思う(って、 『EPUB3::かんたん電子書籍作成』 が、ひとつの目次ファイルを論理目次と視覚目次に使っている)
でも、論理目次は使えるタグが限られていて、ルビタグなどはエラーになる。
そこで、論理目次とは別ファイルで視覚目次用のファイルを作る。こっちは本文のページと同じくxhtmlファイルとして使われるので、ルビタグも使える。
・パッケージファイル content.opf
manifestで視覚目次も指定しておいて、spineでは視覚目次を入れて、論理目次を外してしまう。
・ナビゲーション文書 nav.xhtml
ナビゲーション文書の目次部分(toc)には、視覚目次を入れておく(目次に「目次」という項目があるのはイヤなので display:none として、ここでは表示させないようにした)
landmarks 部分に視覚目次を指定しておく。
・視覚目次 display.xhtml
視覚目次はナビゲーション文書のtoc部分(olタグ)だけのファイルで、ルビなどのタグが使える。
クライアントからのリクエストはこれで解決だった。
こうすることで、レイアウト・デザインが自由にできる目次が可能だけど、目次をふたつ持つことで間違いの元がひとつ増える。本当はひとつで済ませたいところだったなあ。
» ローカル環境で電子書籍を作る、Macアプリ・Windows版ツール 「かんたんEPUB3作成easy_epub」
【電子書籍発売中】