EPUB: 目次の階層とリンクについて

EPUBの目次は制約がいくつかあるので重要なポイントを理解しておく必要がる。例を挙げて階層の構造を解説していく。

例

<?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" lang="ja">
    <head>
    <title>コーヒー - 一杯の飲み物はいかにして世界の日常になったのか</title>
    <link rel="stylesheet" href="style.css" type="text/css"/>
    </head>
    <body>
        <h1>コーヒー - 一杯の飲み物はいかにして世界の日常になったのか</h1>
        <nav epub:type="toc">
        <h2>目次</h2>
            <ol>
                <li><a href="preface.xhtml">訳者まえがき</a></li>
                <li><a href="acknowledgements.xhtml">謝辞</a></li>
                <li><a href="introduction.xhtml">はじめに</a> 
                <ol>
                    <li><a href="introduction.xhtml#intro_1" id="nav_in_1">コーヒーと紅茶の関係</a></li>
                    <li><a href="introduction.xhtml#intro_2" id="nav_in_2">コーヒーという名の由来</a></li>
                    ...
                    <li><a href="introduction.xhtml#intro_10" id="nav_in_10">コーヒーと新しい日常</a></li>
                </ol>
                </li>
                <li><span>豆を運んだ人々の国――概略史 山本 恒一</span>
                <ol>
                    <li><a href="chapter2.xhtml">エチオピア高原</a></li>
                    <li><a href="chapter2.xhtml">アラビア半島</a></li>
                    <li><a href="chapter2.xhtml">ヨーロッパへ</a></li>
                </ol>
                </li>
                ...
                <li><a href="chapter11.xhtml">経営戦略としての自家焙煎</a></li>
                <li><a href="chapter12.xhtml">「スペシャルティコーヒーの定義」について</a></li>
                <li><a href="chapter13.xhtml">豆、機械、そしてカップ</a></li>
                <li><a href="chapter14.xhtml">最初の一杯 ある喫茶店の物語</a></li>
                <li><a href="chapter15.xhtml">純喫茶たちの回帰</a></li>
                <li><a href="appen_A.xhtml">付録A:ディベート――ドリップは時代遅れだ。</a></li>
                <li><a href="profile.xhtml">プロフィール</a></li>
            </ol>
        </nav>
    </body>
</html>

EPUBで目次を作成する場合必ずepub:type="toc"を含める必要があります。エラーにはならないが基本的には<nav>タグに記述する。

そして<nav>タグ直下には<ol>タグか<h1>~<h6>タグしか記述できない。ulタグは使えないので注意が必要。

package.opfのspineせ設定した順番と目次の順番も合わせる必要がある。

liタグについて

liタグは基本的にはaタグの子要素を含めなくてはいけない。以下のようにテキストのみを記述はEPUBではエラーになる。

<li>はじめに</li>

またspanタグで囲んでもエラーになる。

<li><span>はじめに</span></li>

ただ、以下のようにさらに入れ子が発生する構造であればspanタグを使用しても問題ない。基本的にliタグにはaタグを使用する必要がある。

<li><span>豆を運んだ人々の国――概略史 山本 恒一</span>
<ol>
    <li><a href="chapter2.xhtml">エチオピア高原</a></li>
    <li><a href="chapter2.xhtml">アラビア半島</a></li>
    <li><a href="chapter2.xhtml">ヨーロッパへ</a></li>
</ol>
</li>