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

2013/5/22 [15:36:21] (水) 天気

先日「目次にルビをつけてください」というリクエストにのけ反った。


『電子書籍の目次が難しい』http://t2aki.doncha.net/?id=1366594374

この時、教えてもらって、論理目次と視覚目次を別に作って対応。忘れないうちにメモしておこうと、すっかり忘れてたので改めてメモ。


EPUB3の目次は2種類。

・デバイスやアプリで使うための「論理目次」

・画面に表示するための「視覚目次」


たぶん、ひとつの目次ファイルを両方に使うことが多いと思う(って、『EPUB3::かんたん電子書籍作成』 が、ひとつの目次ファイルを論理目次と視覚目次に使っている)


でも、論理目次は使えるタグが限られていて、ルビタグなどはエラーになる。


そこで、論理目次とは別ファイルで視覚目次用のファイルを作る。こっちは本文のページと同じくxhtmlファイルとして使われるので、ルビタグも使える。


・パッケージファイル content.opf


manifest部分
<item id="nav" href="text/nav.xhtml" media-type="application/xhtml+xml" properties="nav" />
<item id="text.display.xhtml" href="text/display.xhtml" media-type="application/xhtml+xml" />

spine部分
<!--    <itemref idref="nav" linear="no" /> -->
<itemref idref="text.display.xhtml" linear="yes" />

manifestで視覚目次も指定しておいて、spineでは視覚目次を入れて、論理目次を外してしまう。


・ナビゲーション文書 nav.xhtml


toc 部分
<nav epub:type="toc" id="nav">
  <h1>目次</h1>
      <ol>
       <li style="diplay:none;" hidden="hidden"><a href="display.xhtml">目次</a></li>
       ...
      </ol>
</nav>

landmarks 部分
<nav epub:type="landmarks" id="landmarks" hidden="hidden" style="display:none;">
  <h2>Guide</h2>
    <ol style="list-style-type:none;">
      <li><a epub:type="cover" href="cover.xhtml">表紙</a></li>
      <li><a epub:type="toc" href="display.xhtml">目次</a></li>
      <li><a epub:type="bodymatter" href="title.xhtml">本文</a></li>
    </ol>
</nav>

ナビゲーション文書の目次部分(toc)には、視覚目次を入れておく(目次に「目次」という項目があるのはイヤなので display:none として、ここでは表示させないようにした)

landmarks 部分に視覚目次を指定しておく。


・視覚目次 display.xhtml

視覚目次はナビゲーション文書のtoc部分(olタグ)だけのファイルで、ルビなどのタグが使える。


クライアントからのリクエストはこれで解決だった。


こうすることで、レイアウト・デザインが自由にできる目次が可能だけど、目次をふたつ持つことで間違いの元がひとつ増える。本当はひとつで済ませたいところだったなあ。


<<2026/1>>
    123
45678910
11121314151617
18192021222324
25262728293031
検索:

【最近の20件】