目次項目を一度で確認!KDPの目次作り方、nav・NCXを生成する流れ

nav・NCXを生成の確認工程を、白い原稿用紙と紫色の半透明装置で抽象的に示したアイキャッチ

KDP向けEPUBでnavとNCXを作るときは、章見出しを正本にし、同じ六章の順番から両方を生成して、項目数と参照先を一度に照合します。今回の標本には同名の「再会」が二章あります。表示名だけでは区別できないため、六つの位置と六つのhrefを対応させました。ローカル生成は一致しましたが、KDPの端末メニューと実際の移動は未確認なのでStage 4はpartialです。

navとNCXは同じ章順から生成して照合する

navとNCXを別々に手入力すると、片方だけ修正し忘れる危険があります。先に本文六章の順番を確定し、その一列を元にnavとNCXを生成します。照合では、表示名だけでなく「何番目の章か」「どの本文ファイルを指すか」を見ます。

EPUB 3.3仕様ではEPUBナビゲーション文書が主要ナビゲーションです。Rune Studioはこれに加えてNCXも出力します。この記事が扱うのは二形式の生成順と同一性です。NCXが旧リーダーで果たす互換性の意味そのものは別テーマとし、ここでは広げません。

六章のうち二章を「再会」にした標本

標本は本文六章で、章見出しのうち二件を同じ「再会」にしました。開始値は本文6、nav期待6、NCX期待6、固定マーカー6です。

同名章があると、「再会が二件ある」だけでは正しいか判断できません。二つの「再会」が別の本文位置を指し、間にある章を含めて全体が六章順になっていることが必要です。そこで次を合格条件にしました。

見出しから二形式を作る一般手順

まず本文見出しを正本として六章順を固定します。次に、目次へ載せる章を決め、EPUBを生成します。展開後にnavとNCXを同時に開き、1番目から6番目まで表示名と参照先を横並びで比較します。同名章ではラベル一致だけを合格にせず、参照先が異なることを確認します。

リンク先の本文XHTMLも開き、見出しまたは固定マーカーが期待した章にあるかを確かめます。最後にAmazonの対応原稿形式に従ってKindle Previewerで端末メニューを開き、六項目すべてから移動します。生成物の一致とリーダー上の操作は別工程です。

九操作でnav六件とNCX六件を生成した

記事専用の検証作業場でシリーズと巻を設定し、同名の「再会」二章を含む六章を選択しました。章順と目次掲載を決め、出力計画を確認してEPUBを生成し、inspect後にnav、NCX、本文XHTMLを読みました。command_countは9です。

観測値はvalid=true、spine=9、欠落画像0件でした。navとNCXは存在し、各6項目です。navのhrefはp001.xhtmlからp006.xhtml、NCXのsrcはText/p001.xhtmlからText/p006.xhtmlまで同じ順序でした。「再会」は2件あり、それぞれ別の参照先を持ちます。本文側の固定マーカーも6件でした。

したがって、六章からnavとNCXを同順で生成し、同名章を別リンクとして保持したローカル構造は確認済みです。KDP上の端末メニュー表示やリンク移動は確認していないため、statusはpartialです。

端末で未確認のまま、生成のずれへ戻す

今回未確認なのは、KDP受理、Kindle Previewerや実機での端末メニュー、六リンクの実操作、全リーダーでの挙動です。失敗時は次の順で戻します。

生成したファイルを直接修正して正本にすると、再出力で修正が消えます。正本は本文の章順と目次掲載設定に置きます。

Rune Studioは同じ出力操作でnavとNCXを作る

現行Mac版Rune StudioのEPUB 3出力ウィザードでは、原稿選択、章順、目次掲載を設定し、出力計画を確認してEPUBを生成できます。生成物にはEPUBナビゲーション文書、NCX、パッケージ文書、本文XHTMLが含まれます。これはRune Studioの商品ページと製品資料で確認できるStage 3の範囲です。

六章、nav六項目、NCX六項目、同名章二件、固定マーカー六件は記事専用Stage 4の実測です。製品が二形式を生成する事実と、KDP端末で六リンクが動く事実を一つにまとめません。

結論:同名章は表示名ではなく参照先まで見る

KDPの目次作りでnavとNCXをそろえるには、本文六章の順番を正本にし、両形式を同じ出力から生成して、項目数・順番・参照先を一度に照合します。二つの「再会」は別hrefとして残り、ローカル構造は一致しました。ただし端末メニューとリンク操作は未確認なので判定はpartialです。同じEPUBの六項目をPreviewerまたは実機で操作してから完了にします。