概要
ドキュメントジェネレーターのSphinxに興味を持って試しているときに、電子書籍のフォーマットの1つである、EPUBの作成が案外簡単に行えることがわかりました。
Kindleの出版に使えるかもしれないと思い、確認してみました。
EPUBに関する設定
バージョンの記載をした方が良い
conf.pyに以下の設定を行います。
version = '1.0'
HTMLのビルド(make html
)では指定していなくても警告されませんが、EPUBのビルド(make epub
)では警告されます。
EPUBのビルドでversionを指定せずともEPUBのファイルは作成できますが、「WARNING: EPUB3出力では設定値 "version" が必要です」と表示されます。
HTMLページは_build\htmlにあります。
Sphinx v5.0.2 を実行中
翻訳カタログをロードしています [ja]... 完了
保存された環境データを読み込み中... 完了
WARNING: EPUB3出力では設定値 "version" が必要です
ビルド中 [mo]: 更新された 0 件のpoファイル
ビルド中 [epub]: 更新された 0 件のソースファイル
環境データを更新中0 件追加, 0 件更新, 0 件削除
更新されたファイルを探しています... 見つかりませんでした
更新が必要な対象はありませんでした
ビルド 成功, 1 warning.
EPUBだけ索引のページを非表示にする
Sphinxでは各ページにindexディレクティブを記述することで、索引を作成できます。
ただ、indexディレクティブを記述していなくても、ドキュメントの最後に索引のページが作成されます。indexディレクティブを1つも書いていない場合は、空の索引ページが作成されます。
EPUBで索引ページを作成しないようにするには、conf.pyに以下の設定を行います。
epub_use_index = False
デフォルトでは、HTMLの索引に関する設定であるhtml_use_index
がTrueとなっているため、EPUBも索引が作成されますが、HTMLとは別にEPUBだけ索引を作成しないことが可能です。
EPUBとしてのドキュメントを作成する上で実施したほうが良いことについて
書籍の目次を作成する
目次は、index.rstにtoctreeディレクティブを使ってファイルを構成すればOKです。
各ファイルで見出しを付けて文章を構成し、toctreeディレクティブを使えば、それでもう目次が出来上がります。
================================
SphinxでEPUB出版を行う
================================
.. toctree::
:maxdepth: 2
:caption: もくじ:
contents/intro
contents/sphinx
contents/epub
上記の設定では、toctreeのオプションとして以下を設定しています。
- maxdepth
- 目次として表示する階層は第2階層まで
- caption
- 目次のページの見出しを「もくじ」とする
すべての見出しを目次に表示すると、目次が煩雑に見えてしまうことになりがちなので、maxdepthで表示する階層を絞っておいた方が良いと考えています。
まとめ
Sphinxでは、簡単な設定で電子書籍用のフォーマットであるEPUBが作成できることがわかりました。
Sphinxでは、reStructuredText(reST)で文章を記述することで、文章と文章に対する装飾をきっちり分けておくことが可能です。HTMLやMarkdownなど、見出しや段落、リストなどの文章構成要素を意識して文章を書くことに慣れている人にとっては、SphinxでEPUBが簡単に作成できることはメリットだと思われます。
Sphinxの標準であるreSTに馴染めるかどうか、という問題はありますが(SphinxでもMarkdownで記述する方法はありますが、筆者はまだ試していません)、reSTに馴染める・既に馴染んているのであれば、Sphinxは電子書籍を作成するのに有力なツールと言えそうです。