先に知っておきたいこと
ナビゲーション文書は、必ず必要
EPUB 3.3の仕様は、EPUBの出版物に、ナビゲーション文書を含めることを求めています。XHTMLで書き、パッケージ文書のmanifestでは、properties="nav"を付けて登録します(content.opfの書き方|タグと属性の意味を整理を参照)。
目次は、リーダーの案内として使われる
ナビゲーション文書は、リーダーが目次などの案内を作るためのものです。本文として読ませる目次ページを別に作ることもありますが、それとは別の役割です。KDPの目次の考え方は、後の節で触れます。
nav要素の種類
ナビゲーション文書には、nav要素を1つ以上書けます。種類は、epub:typeで指定します。
| 種類 | 役割 | 仕様での扱い |
|---|---|---|
toc | 目次 | 必須 |
landmarks | 表紙・本文の開始など、主要な場所への案内 | 任意 |
page-list | 紙の本のページ番号との対応 | 任意 |
最小の例
この記事のために新しく書いた例です。実際に使うときは、EPUBCheckなどで確認してください。
<?xml version="1.0" encoding="UTF-8"?>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:epub="http://www.idpf.org/2007/ops" xml:lang="ja">
<head>
<title>目次</title>
</head>
<body>
<nav epub:type="toc">
<h1>目次</h1>
<ol>
<li><a href="chapter1.xhtml">第一章</a></li>
<li><a href="chapter2.xhtml">第二章</a></li>
</ol>
</nav>
<nav epub:type="landmarks" hidden="">
<ol>
<li><a epub:type="bodymatter" href="chapter1.xhtml">本文</a></li>
</ol>
</nav>
</body>
</html>
xmlns:epub="http://www.idpf.org/2007/ops"は、epub:typeを使うための名前空間の宣言です。
toc navの書き方
仕様では、toc navは、順序つきリスト(ol)に、1つ以上のリスト項目(li)を入れます。各項目は、リンク(a要素)か、見出しだけを示すspan要素のどちらか1つで書きます。spanの場合は、そのあとに入れ子のolが続きます。
階層を作るときは、liの中に、さらにolを入れ子にします。
<ol>
<li>
<a href="chapter1.xhtml">第一章</a>
<ol>
<li><a href="chapter1.xhtml#sec1">第一節</a></li>
</ol>
</li>
</ol>
landmarks navの書き方
landmarksは、本の主要な構成要素(表紙、本文の開始など)への案内です。仕様は、各liのa要素に、epub:typeで、案内の種類を示す値を付けることを求めています。
仕様は、nav要素にhidden属性を付けて、画面に表示しないようにできると説明しています。
epub:typeとは
epub:typeは、要素の構造上の意味を示す属性です。仕様は、制作者が内容の構造上の意味を表すための属性だと説明しています。見た目を変えるものではなく、「この部分は何か」を伝えるものです。
使える値は、EPUB Structural Semantics Vocabularyにまとめられています。主な値と、その定義(要約)です。
| 値 | 意味 |
|---|---|
cover | 作品を紹介する部分(表紙) |
titlepage | 作品の扉 |
frontmatter | 本文の前の部分(目次、献辞など) |
bodymatter | 本文 |
backmatter | 本文の後の部分(索引、付録など) |
chapter | 作品の主要な章 |
colophon | 版に関する制作情報の短い節(奥付など) |
toc | 主な見出しへのリンクの順序つきの一覧(目次) |
landmarks | 出版物の中の、よくある構成要素への参照の集まり |
footnote | 参照される文に関する補足の情報(脚注) |
endnotes | 作品や節の終わりにある注の集まり |
noteref | 注への参照(上付きの数字や記号など) |
index | 主要な主題へのリンクの一覧(索引) |
glossary | 用語の簡単な辞書 |
bibliography | 引用された外部資料の一覧 |
使う場所の例
<section epub:type="chapter">
<h1>第一章</h1>
</section>
epub:typeは、sectionやa、nav、asideなどの要素に付けます。
複数の値と、独自の語彙
epub:typeは、半角スペースで区切って、複数の値を並べられます。標準の語彙にない値を使うときは、語彙の宣言が必要です。パッケージ文書ではpackage要素のprefix属性、コンテンツ文書ではルートのhtml要素のepub:prefix属性で宣言します(名前空間のないprefix属性は、RDFa用の別の属性です)。
未知の値の扱い
語彙は、定められた使いどころに合わない使い方を、リーダーが無視することがあると書いています。この記事の確認時点で、リーダーごとのepub:typeの扱いを比べた公式の情報は確認できていません。
KDPでの目次の考え方
KDPのヘルプ(ナビゲーションのガイドライン)では、次のように案内されています。
- 本文として読む目次(HTMLの目次)は、本の先頭に置く。項目はHTMLのリンクにして、tableタグで作らない。ページ番号は書かない
- 論理的な目次(NCX、またはEPUB 3のnav)は、特に20ページを超える本で重要。Kindleは、2階層までの入れ子に対応している
詳しくは、EPUB変換で崩れる原因と対策6つ|注意点まとめの「目次とメタデータの不足」を参照してください。
結論:navは目次、epub:typeは意味づけ
| 項目 | 役割 | ポイント |
|---|---|---|
| nav(toc) | 目次の案内 | 必須。olとliとリンク |
| nav(landmarks) | 主要な場所への案内 | 任意。各項目にepub:type |
| epub:type | 構造上の意味の表示 | 語彙はStructural Semantics Vocabulary |
よくある質問
nav.xhtmlがないと、どうなりますか?
EPUB 3.3の仕様では、ナビゲーション文書は必須です。ないと、仕様に合わないEPUBになります。
epub:typeは、必ず付ける必要がありますか?
toc navには必要ですが、本文のsectionなどに付けるかどうかは、任意です。付けると、構造が分かりやすくなります。
EPUB 2のtoc.ncxは、もう要りませんか?
EPUB 3.3の仕様では、NCXは旧来の機能とされ、必須ではありません。ただし、KDPのヘルプには、論理的な目次として、NCXまたはEPUB 3のnavが挙げられています。