とふと思ってやってみました。
が、私はTeXあんまり詳しくないです。。間違いがあればご指摘ください。
やり方
このスライドに情報がまとまりすぎていて感動しました。
TeX4htでHTMLを生成、それをCalibreでMOBI形式に変換することにします。
環境
Ubuntu 16.04でやりました。まず必要なパッケージをインストールします。TeX関連でもうちょい入れたパッケージがあった気がするんですが、忘れました…
sudo apt install git make texlive tex4ht calibre
ソースを取ってくる
Stanのマニュアルは本体のレポジトリに含まれています。これをcloneします。
git clone https://github.com/stan-dev/stan
とりあえずmake manualする
TeXファイル一式はsrc/docs/stan-reference
にありますが、もろもろ中間生成物がないとうまくコンパイルできないみたいでした。とりあえずmake manual
します。
cd stan/
make manual
TeX4htでHTMLを生成
パスの指定の仕方がよく分からなかったので、TeXファイルがあるディレクトリに行って、そこでhtlatex
コマンドを実行します。
cd src/docs/stan-reference/
htlatex stan-reference.tex
さっきmake manual
したときと同じような出力が出て、HTMLファイルとPNGファイルが生成されるはずです。
が、このままだとちょっと問題があります。
画像のサイズを大きくする
数式のサイズをもうちょい大きくしないとKindleではすこぶる見づらいです。
画像をSVGで出力するようにする方法↓はあるんですが、ちょっと設定がめんどくさそうでした。
http://12000.org/my_notes/faq/LATEX/layout/#x1-40001.2
とりあえず画像のサイズを2倍にしてみます。htlatex
を実行した時のログを見ると
System call: dvipng -T tight -x 1400 -D 72 -bg Transparent -pp 938:938 stan-reference.idv -o stan-reference661x.png
みたいな感じのが出ているので、この-D
に指定している値を大きくすればよさそうです。これは/etc/tex4ht/tex4ht.env
の以下の箇所で指定されています。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % This is the Debian default which uses dvipng %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% <dvipng> G.png Gdvipng -T tight -x 1400 -D 72 -bg Transparent -pp %%2:%%2 %%1 -o %%3
これを書き換えます。(-x
はdeprecatedなオプションだと書いてあったのでついでに取ります)
Gdvipng -T tight -D 144 -bg Transparent -pp %%2:%%2 %%1 -o %%3
で、これだけでいいかと思いきや、なんとhtlatex
では普通にはこの値が反映されません(いったいどこを見てるんでしょう…)。/usr/bin/htlatex
の中身を覗くと、4つ目の引数に指定したものがt4ht
コマンドに渡るみたいです。
tex4ht -f/$1 -i/usr/share/texmf/tex4ht/ht-fonts/$3 t4ht -f/$1 $4 -d~/WWW/temp/ -m644
ということで、こんな感じに指定します。
htlatex stan-reference.tex "" "" -e/etc/tex4ht/tex4ht.env
CalibreでMOBIに変換
Calibreは電子書籍をつくるツールです。Pandocのようにドキュメント形式を変換するだけではなく、スクレイピングした結果を電子書籍にしたり、電子書籍データをいじったりするのにも使えます。今回使うのはコマンドラインツールですが、GUIからも操作できます。Pythonのライブラリとしても使えるので、Pythonを書ける人にはかなり便利だと思います。
ebook-convert
コマンドでMOBIファイルを生成します。(stan.mobi
の代わりにstan.epub
にするとEPUBを生成することもできます)
ebook-convert stan-reference.html stan.mobi --extra-css=stan-reference.css
途中、
Selector: Invalid or incomplete selector: SelectorList: Invalid Selector:
みたいなエラーだか警告だかが出まくりますが、とりあえず気にしないことにして待っていると、MOBI形式のStanマニュアルの完成です。
感想
やっぱ日本語で読みたいな、と思いました。