Kobo TouchはどうやらEPUBの目次に全てのページが存在していることを前提としているようで、
metadata.opfのspine内のN番目のitemref要素を開いている = toc.ncxのN番目のnavPoint要素が現在地ねっ!
と解釈するようです。目次画面を開いたとき、現在地が後方にズレるのはこれが原因です。楽天Koboから大手出版社の小説のサンプル版をいくつかダウンロードしてみましたが、普通にズレていましたので、あまり気にする人はいないのかもしれません。(というか使ってる人がそもそもいない…?)ですが、今自分がどこを開いているのかがわからないというのは、用途によってはかなり致命的です。
ところで、自炊した画像データやPDFからEPUBを作成するにはChainLPが大変便利で、僕はこのツールでデータをEPUBに変換しています。ChainLPで作成したEPUBは、一枚の画像(を表示するためのページ)と一つのitemrefが1対1になっています。このため、データに目次を設定し、出来上がったEPUBをKobo Touchで閲覧する場合、目次の現在位置が後方に(正確には、開いているページがN番目のページであった場合、N番目の目次に)ズレることになります。悲しいことですが、悲しんでばかりもいられません。少し考えると、Kobo Touchのこの仕様への対策がいくつか思いつきました。
対策A 全てのページを目次に登録する
目次の動作がすごく遅くなり、実用上問題がありました。また、意味のある目次項目が、便宜上加えられた無意味な目次項目に埋もれてしまい、加えてその位置が不規則に分散してしまうため、非常に使いづらいです。これはやめておいたほうがよいでしょう。
対策B 目次ごとにページを統合する
要するに
ページ番号 | 見出し |
---|---|
1 | 表紙 |
2 | |
3 | まえがき |
4 | |
5 | 第一章 |
6 |
とある場合、
ページ番号 | 見出し |
---|---|
1, 2 | 表紙 |
3, 4 | まえがき |
5, 6 | 第一章 |
のようにセクションごとにページをまとめてしまうわけです。この方法が今のところ最良だと思います。ページ送りも問題なく行え、またセクション内のでページ送りは、単一のページに格納する場合より高速なようです。 ChainLPで作成したEPUBに、この変更を施すスクリプトが以下です。
ところで、Kobo Touchで目次を使って別の位置にジャンプしたあと、”戻る”的な操作がうまく動作しないのはどうしてなんでしょうね…? しかたなく毎回しおりを挟んで、あとでそこに戻っていますが…。不便!