kindleのmobiをhtmlでつくって専用リーダ用の目次もつけたいとき最低限必要なものを調べてみると、こんな情報がひっかかる。
ファイル名をaとする。
- a.html (本文)
- a.opf (定義ファイル)
- a.ncx もしくは nav.xhtml (目次用)
- a.jpg (カバー)
- kindlegen (mobi作成ツール)
nav.xhtmlをつくってncxとhtml目次を自動生成する方法は olリストで目次を定義すればいいので実に簡単だが 、タグがつかえない。(縦中横とかルビとか)
mobiunpack で kindlegen の生成した mobiファイル を分解してみると、結局 ncxファイルを新しく生成し、guide要素もopfファイルの中に追加され、nav.xhtmlはhtmlの中にspineの順序にしたがって挿入されている。ならncxはncxで作ってhtml目次は目次で好きに作ったらいいんじゃないの。
でもncxファイルの記法って読みづらいし書きづらいんよな。ncxって機械向け目次なんだから手をぬけれるなら手を抜きたい。
....
ということでいろいろやってみたら、olリスト をnav要素の中に適当に並べただけのhtmlでも行けることがわかった。html目次の方は本文の中の目次を指定したって問題ない。
ということで最低必要なのは
- a.html (本文)
- a.opf (定義ファイル)
- a.nav.html (専用リーダ向け目次)
- a.jpg (カバー画像)
- kindlegen (mobi作成ツール)
以下サンプルを貼ってみる。
a.html
<html><head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <title>残水滸</title> <style> html{ -webkit-writing-mode:vertical-rl; -epub-writing-mode:vertical-rl;} .tcy{-webkit-text-combine: horizontal} p.author{text-align:right} p{text-indent:1em} </style> </head> <body> <!-- 所詮はhtmlだから好き放題配置できる --> <h2 id="000-1">敍</h2> <p> 皖南程師善之、先兄綬伯摯友也、三十年前.....<br/> 民国二十二年秋.... </p> <mbp:pagebreak/> <h1>残水滸</h1> <h2 id="000-2">小引</h2> <p class="author">秋風</p> <p> 昔讀施耐庵水滸、受其善於描寫!一展巻、而百八人之... </p> <mbp:pagebreak/> <h2 id="000-3">目録</h2> <ul> <li><a href="#071">第七十一囘 玉麒麟夢魂驚草莽 智多星妙語穏英雄</a> <ul> <li><a href="#071_001">話説盧俊義夢中</a>...(<span class="tcy">1</span>節目)</li> <li><a href="#071_002">不多一會、呉軍</a>...(<span class="tcy">2</span>節目)</li> </ul> </li> <li><a href="#072">第七十二囘 刧軍餉林武師遇友 念庭闈公孫勝歸山</a></li> <li><a href="#073">第七十三囘 呉加亮議打兗州府 燕小乙組合軍官團</a></li> <li>... </ul> <mbp:pagebreak/> <h2 id="071">第七十一囘 玉麒麟夢魂驚草莽 智多星妙語穏英雄</h2> <p id="071_001"> 話説盧俊義夢中看見自己和一百〇七個兄弟、一齊就忠義堂下草地裏處斬、刀鋒過處、煞地一陣清涼。忽然間身子直跳起来.... </p> <p id="071_002"> 不多一會、呉軍師、便仝安道全來問病。... </p> <mbp:pagebreak/> <h2 id="072">第七十二囘 刧軍餉林武師遇友 念庭闈公孫勝歸山</h2> <p>話說呉用見李應和蔣敬兩個、說起山寨錢糧、只支三月...</p> <mbp:pagebreak/> <h2 id="073">第七十三囘 呉加亮議打兗州府 燕小乙組合軍官團</h2> <p>話說那些百姓喚到宋江馬前...</p> <mbp:pagebreak/> </body></html>
a.opf(定義ファイル)
<?xml version="1.0" encoding="utf-8"?> <package> <metadata> <dc-metadata xmlns:dc="http://purl.org/metadata/dublin_core" xmlns:oebpackage="http://openebook.org/namespaces/oeb-package/1.0/" xmlns:opf="http://www.idpf.org/2007/opf" > <dc:title>残水滸</dc:title> <dc:creator>程善之</dc:creator> <dc:Language>JA</dc:Language> </dc-metadata> <x-metadata> <output encoding="utf-8" /> <EmbeddedCover>a.jpg</EmbeddedCover> </x-metadata> <meta name="primary-writing-mode" content="vertical-rl"> </metadata> <manifest> <item id="item1" media-type="text/x-oeb1-document" href="a.html" /> <item id="toc" properties="nav" href="a.nav.html" media-type="text/x-oeb1-document" /> </manifest> <spine page-progression-direction="rtl" toc="ncx"> <itemref idref="item1" /> </spine> <tours> </tours> <guide> <reference type="cover" title="Cover Page" href="a.jpg" /> <reference type="toc" title="Table of Contents" href="a.html#000-3" /> <reference type="text" title="Start Page" href="a.html#000-1" /> </guide> </package>
a.nav.html(電子書籍リーダ向け目次)
<html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> </head> <body> <nav epub:type="toc" id="toc"> <ol> <li><a href="a.html#071">第七十一囘 玉麒麟夢魂驚草莽 智多星妙語穏英雄</a> <ol> <li><a href="a.html#071_001">話説盧俊義夢中...1節目</a></li> <li><a href="a.html#071_002">不多一會、呉軍...2節目</a></li> </ol> </li> <li><a href="a.html#072">第七十二囘 刧軍餉林武師遇友 念庭闈公孫勝歸山</a></li> <li><a href="a.html#073">第七十三囘 呉加亮議打兗州府 燕小乙組合軍官團</a></li> </ol> </nav> </body> </html>
そしてコマンドラインから
kindlegen a.opf
できたできた。最低限必要なのがわかったら自動化も目処がつくな。
これでkindleストアに登録できるかどうかは知らない。 (その後やってみたら登録できた)
まぁでも電子書籍リーダとかいっても、要するに読書に特化したブラウザなんだな。
kindleがkindleだけで通用する要素とか用意してるのも昔IEだけで使える要素があったりしたようなもんだろ?そのうち規格にうるさい奴とか出てきたりするんだろうな。htmlの文法が正しいかどうかチェックするツールもあったしなぁ。歴史は繰り返すのか...