narou
narou copied to clipboard
章立てがある長い作品をslice_sizeで分割すると、2冊め以降のepub中のnav.xhtmlが不正になることがある
[使用ソフトウェアヴァージョン] narou version 3.8.2 AozoraEpub3 1.1.1b13Q
[設定] device: epub default.enable_half_indent_bracket: false default.slice_size: 1200 default.author_comment_style: simple
[再現手順] $ narou download n0692es && narou convert n0692es 生成されたepubのうち、二冊目以降はepub validationを通りません。nav.xhtmlが不正と言われます。
[説明]
これはAozoraEpub3側の問題かも知れませんが、.narou/local_setting.yaml ファイル内にdefault.slice_sizeを設定して(例 "narou s default.slice_size=1200")出力が分割されるようにすると、章立てがある作品では、(運が良くない限り)2冊目以降のepubがvalidation errorになります。 一冊目がたとえば3章の20話目で終わり、二冊目が3章の21話目から始まる、なんていう場合に、nav.xhtmlの最初の方のエントリが不正になるようです。具体的には
普通なら nav.xhtml はこんな具合になるようです(1冊目は正しくこんな具合になります)。実際には<li>
のそれぞれには各話へのリンクの<a>
エレメントが入りますが、ここでは省略しています。
<ol><li>作品のタイトル</li>
<li>第1章の見出し
<ol><li>1-1話</li>
<li>1-2話</li>
<li>1-3話</li>
...
</ol></li>
<li>第3章の見出し
<ol><li>3-1話</li>
...
</ol></li>
</ol>
ところが、2冊めは、こんな風に始まります。
(誤り)
<ol>
<ol><li>作品のタイトル</li>
<li>3-21話</li>
<li>3-22話</li>
外側の<ol>
は第2巻全体をくるむもの、本来はその中のはじめの<li>
エレメントが第3章(の残り)
の見出しページを複製し、その中に内側の<ol>
が来て、その章に属する各話が<li>
エレメントで列挙されるはずですが、そこがうまく行っていかずに、<ol>
の次に<li>
でも</ol>
でもないモノが来てsgmlバリデーションが通らない、ということになります。
最小限の修正は、作品タイトルの<li>
エレメントを動かして
<ol><li>作品のタイトル</li>
<li><ol>
<li>3-21話</li>
<li>3-22話</li>
とすることですが、<li>第3章の見出し(つづき)
というのを作品タイトルの後ろに入れて
<ol><li>作品のタイトル</li>
<li>第3章の見出し(つづき)
<ol>
<li>3-21話</li>
<li>3-22話</li>
と始めるようにできれば、より良いかもしれません(第1巻と同じ構造になる)。 ただ、そうすると「見出し」ページを複製しないといけないので面倒は増えるかも知れませんが。