親父(元教員)が自分の書いた論文を電子出版したいと言ってきたので、父親が作成したWordファイルを基に EPUB に変換して電子出版した。
EPUB の実態はHTML+CSS だったので、簡単に変換することが出来た。
大きな流れ
今回の作業の肝は、文章を構造化することである。構造化とは、文書の要素に対して、引用や見出しのレベルを指定するものである。こうすることで、コンピューターが処理しやすくなる。例えば、引用の箇所は、30ポイント左の空白を一律で空けるといったようなことが簡単に出来る。また、見出しを基に自動的に目次を生成することが可能になる。
親父から送られてきたWordファイルは、次のようなものであった。
引用だけスタイルが指定してある。見出しは強調しているだけで、自身でナンバリングしている。Wordの場合、見出しに章の番号を自動で振るのは複雑なのでこうなるのもよくわかる。
傍点・圏点、ルビを利用している
セルを結合している複雑な表がある
今回の作業は、Pandocを利用して次のように変換を行った。Markdown に変換後、構造化を行った。EPUB の編集の際には、GitHub 上で親父と修正作業を行った。
Wordファイル(.docx)
Markdown
EPUB
Google DocumentがEPUB形式の書き出しが出来る と聞き、Wordファイルを取り込んでみたが、ルビや圏点・傍点に対応していないことが判明したために利用を見送った。Google Documentが利用できると、親父と簡単に共同作業ができるため、ありがたかったのだが。
pandoc を利用し、次のコマンドで変換を行った。
$ pandoc input_file.docx -t markdown-raw_html-native_divs-native_spans -o output_file.md
WordからMarkdown へ変換を行っているが、本来は不要な工程だ。
docxファイルから変換できる数少ないフォーマットて、電子書籍 に関する巷のノウハウが一番存在するのがMarkdown だったため、消極的な理由から利用していた。次に述べるように、日本語の電子書籍 に用いるには、ベターだがベストではないソリューションであると感じた。
テキストファイルなのでGitを用いた構成管理が可能
対応しているエディタが多く、編集作業が行いやすい。プレビューを見ながらの編集が行えたり、文法のチェックが簡単に行える。
文法がシンプルなため、習得が用意
セルの結合など複雑な表に対応できない。ただし、HTMLで記載すれば対応できるので、問題なし。
ルビ、圏点・傍点などが対応していない。ただし、HTMLで記載すれば対応できるので、問題なし。
強調するのに分かち書き が必須ではないようだが、利用していたMarkdown エディタだと認識してくれない。
pandocでEPUB ファイルに変換後、そのままではGitで管理できないため、構成管理できるようにした。
pandocのコマンドは、メモし忘れた。
構成管理できるように、.epub ファイルの拡張子を .zip に変更し、解凍し、Gitに追加した。ルートファイルは次のようになる。
解凍したEPUB ファイル
単なるHTML+CSS ファイルのため、お好きなエディタで編集すればよい。
親父とは、GitHub 上でやりとりをした。ITエンジニアではないが、文書の修正はやってもらえた。
Gitに格納されているのは、解凍された状態なので、圧縮して .epub の拡張子のファイルを生成する必要がある。
次のようなMakefile を作成し、適宜makeコマンドを実行した。
all:
rm main.epub;cd epub;zip -X0 ../main.epub mimetype;zip -9 -r ../main.epub META-INF OEBPS
$ make
EPUB における日本語固有の処理
ルビ
漢字等のよみを表示する。
例:規範ノモ 秩序ス
< ruby > 規範< rt > ノモ</ rt > 秩序< rt > ス</ rt ></ ruby >
圏点・傍点
文字の上に「・」が表示されるもの。強調を意味する。
あらゆる創造を< span class = "emph-dot" > になう</ span > 。
span .emph-dot {
text -emphasis-style: dot;
-epub-text -emphasis-style: dot;
text -emphasis-style : dot;
}
構文チェック
epubcheckを利用した。
github.com
省略
まとめ
EPUB はHTML+CSS のスキルがあれば容易
Wordが基ファイルの場合には、Pandocを利用し、変換を行う必要がある