章の順番を変える作業と、目次に載せるかを決める作業は、同じ一覧で行えても別の判定です。STUDIO-431の固定標本は、六章を6 → 1 → 2 → 3 → 4 → 5の順に選び、並べ替え後の2番目だけを目次非掲載にしました。この2番目は、章題では「検証章1」です。
epub ページ 順を判定するときは、「六章が収録された」と「目次案内は五件だった」を両立させます。以前の接続表にあった「目次6項目」は証拠と合わないため、5項目へ訂正します。
並べ替え後の六行を先に固定する
入力はchapter-1.mdからchapter-6.mdまでの合成原稿です。ただし、生成に渡した順序はファイル名順ではなく、chapter-6、chapter-1、chapter-2、chapter-3、chapter-4、chapter-5です。操作前にこの六行を書き出し、各行に「本文収録」と「目次掲載」の二列を付けます。
本文収録列は六行すべて可です。目次掲載列は、順序位置2のchapter-1だけ否、その他は可としました。「2番目を外す」と「章番号2を外す」は意味が違うため、位置、ファイル名、章題を必ず一組で残します。
二番目だけ目次から外す
Runeの選択操作では上記の六ファイルを順番どおりに渡し、--exclude-from-toc 2を指定しました。応答はインデックス1のchapter-1.mdだけをtocFlags=falseとし、他の五ファイルをtrueとしています。
この時点で本文から章を削除してはいません。目次非掲載は、読者をその章へ直接案内するリンクを作らない設定です。本文を読ませない設定として使うのではなく、前の章からの読書順で到達することを前提にします。
spine九項目から六章を読む
出力EPUBのSHA-256は61c05e10…fedd753です。ZIPを再度開くと、spineはtitle.xhtml、nav.xhtml、p001.xhtmlからp006.xhtml、colophon.xhtmlの9項目でした。ここで数える「9」は本文章数ではなく、前後の生成ページを含むspine総数です。
章XHTMLの中身は順に検証章6、検証章1、検証章2、検証章3、検証章4、検証章5でした。つまり、六つの本文章は一つも欠けず、選択時の順番で収録されています。欠落資源も0件でした。
navとNCXが五件になる理由
nav.xhtmlのリンクは、検証章6、2、3、4、5の5件です。toc.ncxのnavPointも同じ5件で、ラベルと参照先の順番が一致しました。非掲載の検証章1はp002.xhtmlに本文として存在しますが、navとNCXには出てきません。
これが「六収録・五案内」の内容です。目次リンクが5件だから本文も5章だと考えると、意図して非掲載にした章を欠落と誤認します。逆にspineに六章あるだけで目次も六件と記録すると、今回の接続表のような内部矛盾が生じます。
件数が正しくても参照先を読む
5件という数字だけでは不十分です。navのラベルが検証章2でも、hrefが検証章3のXHTMLを指していれば読者を誤導します。検査表にnavのラベルとhref、NCXのラベルとsrc、参照先XHTMLの実見出しを一行に並べます。
今回はnavとNCXの全参照先が存在し、五行の順番も一致しました。それでも、第三者readerの目次メニューをクリックした結果までは証明しません。ここで合格にするのは、保存されたパッケージ内部の参照解決です。
誤った六件記録を五件へ戻す
古い接続表には「6章原稿、目次6項目」と書かれていました。入力原稿の数だけを目次数へ複写したことが原因です。復旧ではEPUBを作り直すのではなく、保存済みの同じSHAを再展開し、navとNCXの5件を読み直して記録を修正します。
受入値は、入力6ファイル、収録本文6章、spine総数9項目、nav 5件、NCX 5件、欠落0件です。さらに非掲載対象を「並べ替え後2番目のchapter-1.md」と書き、数字の「2」を章題と混同しないようにします。
reader操作を構造検査で済ませない
今回は実端末と第三者readerの目次メニューを操作していません。navとNCXが解決できることは強い構造証拠ですが、古いreaderがNCXをどう見せるか、現行readerがnavをどの位置に表示するかは別の検査です。
六収録・五案内で完了する
最終票の六行を、spine順に検証章6、1、2、3、4、5と並べます。本文収録は全行可、目次掲載は検証章1だけ否です。その横にnavとNCXの参照先を記録し、五件が同じ章へ解決したことを確定します。
この作業の目的は、ドラッグ後の見た目を信じることではありません。並べ替えはspineの六章、掲載設定はnavとNCXの五章へと、保存済みEPUBの中で二本の検査線を閉じることです。その線が分かれていれば、非掲載章を欠落と誤診せず、六件と書いた接続表の誤りも見つけられます。