2018-02-01

KDP HTML原稿の脚注

この記事は拙著『プログラマのための超手抜きKindle本作法』の補足情報です。

本書で推進するKDP向け超手抜きHTML原稿の、脚注のマークアップについて、気がついた問題点と、その後の環境変化について読者の皆さんにお知らせします。

『プログラマのための超手抜きKindle本作法』で紹介したPandocによるHTML出力では、脚注(p要素)の内容の末尾に参照元へ戻るリンク(a要素)が配置されます。

<p>脚注の内容テキスト<a href="参照元へのリンク">↩</a></p>

これに対して『Amazon Kindle パブリッシング・ガイドライン』の脚注サンプルコードでは次のようにa要素がp要素の内容の先頭に配置されています。

<p><a href="参照元へのリンク">↩</a>脚注の内容テキスト</p>

PandocのHTML出力そのままでも、Kindleアプリで閲覧するぶんには問題ありません。

ところが、Kindle端末において脚注のポップアップを正常に機能させるためには、Amazonのサンプルコード通りに記述されていなくてはならないらしいのです(a要素の位置がポイント)。

a要素がテキストの後ろにあると、ポップアップで、該当項目の他に余分な脚注も表示されてしまいます。 コンバーターではエラーも警告も出ないし、そういうもの(仕様)なのだろうと思い込んでしまいました。執筆時に参照した『Amazon Kindle パブリッシング・ガイドライン バージョン 2017.3』の、脚注のガイドラインには「双方向ハイパーリンクを設定する必要があります」としか書かれていなかったので、そんな罠があるとは思いもよらず。

さらに執筆時点とは、Pandocデフォルト設定でのマークアップ形式が変わっています。 本書出版時点の検証では、脚注のHTML出力は、

<div class="footnotes"> 〜

だったのですが、現在は、

<section class="footnotes"> 〜

となっています。このままだと本書の解説にある脚注部分のCSSが反映されません。

pandocコマンドの呼び出しにオプション -t html4 を付けることで本書出版時点と同様の出力が得られます(CSS側のセレクタを書き換えて対応する手もあります)。

また、『プログラマのための超手抜きKindle本作法』の原稿を書き上げた後、『Amazon Kindle パブリッシング・ガイドライン』の改定で、「HTML5 aside 要素と epub:type 属性を使ってマークアップすることを強く推奨」となっています。