2016-08 式入り tex 文書を epub にする方法: 私的まとめ

この記事は4分で読めます

中高の数学の復習から専門的な数学・物理までいろいろな情報を発信しています.
中高数学に関しては中高数学駆け込み寺,
大学数学に関しては現代数学観光ツアーという無料の通信講座があります.
ご興味のある方はぜひお気軽にご登録ください!


このツイートがそれなりにふぉばられていたので,
実際にいまやっていることについてまとめておく.
自分用の備忘録でもある.

上のように書いたけれども,
結局は tex4ebook は使わずに pandoc でやっている.
結論から書くと pandoc に対して次のフィルターをかけて式を jpg に変換し,
それを入れている.

  • https://github.com/phasetr/pandoc-japanese-filters

フォーク元の mr_konn さんのプログラムでは svg へ変換していて,
それを私が jpg に書き換えて使っている.
mr_konn さんのまとめについては次のスライド参照.
ついでに mr_konn さんの元リポジトリもリンクを張っておこう.

  • http://www.slideshare.net/konn/ss-45587178
  • https://github.com/konn/pandoc-japanese-filters

さて, 私の執筆環境 (?) についてもう少し書いておこう.
正直, かなり無茶苦茶なスタイルだろう.
私の異常なところはあとで書くとして,
まずは mr_konn さんのスライドにもある定理環境と式の話だ.

pandoc を使っていても定理や命題の環境は適切に変換してくれない.
mr_konn さんの env-to-div-filter フィルターがよきにはからってくれるのかもしれないが,
参照つきでやってくれるのかよくわからない (試していない).
そこで私は力づくで前から採番して div に変換して対応している.

その上であとの問題は式.
これも math-to-svg-filter もとい math-to-jpg-filter を使っている.
しかしこれが困りもので,
実際には上のスライド中で mr_konn さんが書いている通りでうまく動かなかった.
原因はよくわかっていない.
Haskell もよくわからないので pandoc まわりの動きが追い切れない.
そこでとにかく力づくで対応した.

また epub と言っても私の主目的は Kindle 出版で,
Kindle ではまだ svg や mathml が使えない.
そこで svg ではなく jpg にしたのだ.
svg の方が圧縮したときの容量もご機嫌なのだが仕方ない.
式が多くなると相当のボリュームになる.

それはそれとして,
実際にやったのは次のような変換経路だ.

  • tex を JSON に変換し, その JSON に math-to-jpg-filter を通して再度 JSON に変換する.
  • この JSON を epub に変換する.

直接 tex から epub に持っていければいいのだが,
いまの私の技術力では無理だった.

ちなみに言うと私の執筆スタイルはさらにむちゃくちゃだ.
元のファイルは org (Emacs 御用達のフォーマット) を基礎にして書いている.
「基礎にして」というのは章や節の折り畳みに関するところだけ使っていて,
あとの形式は pandoc+markdown のフォーマットに従っているからだ.
例えば org であればリンクを貼るとき [[ URL ][ リンクの文字列 ]] という形式で書く.
それを org 文書であるにも関わらず pandoc+markdown スタイルの
[リンクの文字列] (URL) という形式で書いているというわけだ.

これは個人的な理由がある.
Emacs の markdown モードが重くてまともに動かなかったからだ.
別のエディタを使え, とか Emacs 整備しろ,
とかいろいろあるといえばある.
しかしもう Emacs が手に馴染みきってしまっていて,
今更変えるのがつらい.
一方で折り畳みは愛用している機能で無くてはならない機能だ.
何かあって乗り換えが必要になったとき,
org から markdown に速やかに移行できるようにしたい.

そういう割と謎のモチベーションにも支配されつつ,
苦肉の策として折り畳みの部分に Emacs+org パワーを使わせてもらい,
あとは pandoc でよしなに, というわけで pandoc+markdown 形式にした.
もちろん pandoc に流すときに org の折り畳み用セクションの部分を
markdown 形式に変えている.

表についても org モードの表スタイルをうまく使っていて,
それを pandoc+markdown の形式に変換している.

けっこう面倒なのは画像の処理だ.
完全に掌握しきれていないのだけれども,
markdown の書式と TeX の書式と html への書式とで
pandoc でうまいこと変換できなかった.
そこで適当なスクリプトを使って TeX の場合,
epub に流す場合とで直接自分で書き換えている.
しかもこの書式が私独自の書式だ.
自分の首を締めまくっている気がする.
技術力の低さが恨めしい.

そうして org を markdown に変換し,
それから markdown を tex に変換している.

まとめると結局次のようなステップになっている.

  • pandoc markdown を主体にしつつ折り畳みのための章の部分だけ org で書く.
  • org のコメントと章分けと表を変換して markdown にする.
  • 画像の書式を書き換える.
  • pandoc で markdown を tex に変換する.
  • tex を math-to-jpg-filter をかませつつ json に変換する.
  • json を epub に変換する.

スクリプト作成と調整があり,
最初は本当に面倒だったがいまは自動化したので一応は楽だとは思う.
式入りの成果物としては次の Amazon ページに置いてある本だ.

  • http://tinyurl.com/hd3hbth

具体的には次の 2 冊.

かなりひどい執筆環境なので真似したい方もいなかろうが,
具体的に知りたいという方がいればスクリプトも公開する.
コードも相当ひどいが自分にとって読みやすくかつ動けばいいのでとりあえず気にしていない.

最後になったが実は scholarly markdown というのもある.

  • http://scholarlymarkdown.com/

TeX と HTML だけならこちらの方が遥かに完成度が高い.
これも pandoc を元にしている.
現状 epub 対応していないから使っていないだけだ.
これを epub 対応させてみたいという野望だけはある.
しかし技術力が追いつかない.
Haskell を勉強したい理由の 1 つでもある.

そのうち数値計算も Haskell でやってみたい.
当分は Python+Anaconda で scipy, numpy, matplotlib あたりを使って頑張るけれども.


中高の数学の復習から専門的な数学・物理までいろいろな情報を発信しています.
中高数学に関しては中高数学駆け込み寺,
大学数学に関しては現代数学観光ツアーという無料の通信講座があります.
ご興味のある方はぜひお気軽にご登録ください!

  • このエントリーをはてなブックマークに追加
  • LINEで送る

関連記事

  • コメント (0)

  • トラックバックは利用できません。

  1. この記事へのコメントはありません。

このサイトについて

はじめまして。相転移Pです。数学・物理の情報を中心にアカデミックな話題を発信しています。このサイトを見て興味があればぜひご連絡ください。 mail: phasetr@gmail.com LINE: oxg2753d
  • このエントリーをはてなブックマークに追加
  • LINEで送る

YouTube チャンネル登録

講義など動画を使った形式の方が良いコンテンツは動画にしています。ぜひチャンネル登録を!

メルマガ登録

メルマガ登録ページからご登録ください。 数学・物理の専門的な情報と大学受験向けのメルマガの 2 種類があります。

役に立つ・面白い記事があればクリックを!

記事の編集ページから「おすすめ記事」を複数選択してください。