pandocを用いてMarkdownからEPUB3+MathMLを作る

長らく \(\TeX\) を利用してきましたが,電子書籍の主流形式であるEPUB3を視野に入れると,限界を感じます.EPUB3はxhtmlベースですので,今流行り(?)のMarkdownを用いると,例えば定理環境として次のような記述が非常に簡単にできるので,かなり親和性が高いと思います(これを \(\TeX\) でやろうとするのは本当に大変).

本文書ではEPUB3+MathMLな電子書籍を作成する手順を簡単に紹介します.MarkdownをEPUBに変換するにはMathMLに対応しているpandocが現状では最善かと思われます(他にもっと良いものがあればご教授ください).また,Macの環境を前提としていますが,pandocはWindows版にもあるので,参考にはなるかと思います.

pandocでEPUB3を作成

Markdownを編集するには,数式をリアルタイムでレンダリングしてくれるAtomが使いやすいです.インストールはAtomでMarkdown+数式を利用するなどをご覧ください.

さて,次のようなMarkdownファイルを用意します.

pandocは\(\TeX\)の\newcommandを認識するのですが,

ではなく

としないと認識されないようです.

以下のようなCSSファイルも用意します.

上の2つのファイルを同じディレクトリに入れた状態で,次のコマンドを実行すると filename.epub が作成されます.

iBooksで表示すると次のようになります.

pandocの-Nオプションは,見出しの先頭に番号を自動で振ってくれる機能です.本来これはcssで表示すべきですが,EPUBは章ごとにファイルを分割するのが一般的なので,やむを得ないと思います.

--tocオプションは目次を自動的に作成してくれる機能です.

--epub-chapter-level=1とすると,章ごとにファイルを分割しますが,mathmlを大量に入れると1つのファイルの情報量が増えてしまうので,ファイル容量の制限に引っかかってしまうことがあります(楽天KWLではxhtmlファイル1つあたり200KBの容量制限があります).その場合は--epub-chapter-level=2として,節ごとにファイルを分割します.すると,次のように表示されてしまいます.

章の最初のページが寂しいと感じるならば,最初の節に入る前に文章をいれるか,挿絵などを入れるのがよろしいかと思います.

html5の出力

毎回EPUBを出力すると,iBooksのライブラリにファイルが溜まっていく一方なので,ある程度まとまるまではhtml5を出力してブラウザで確認するのが効率的です.

MathMLが対応しているブラウザはSafariとFirefoxです(Chromeは対応していません).Safariで開くと次のようになります.

Markdownの可能性

元々私は \(\TeX\) からEPUB3に変換していたので,少し手探りでやってみまたのですが,Markdownにはかなりの可能性を感じました.

コメントする