Edited at

LaTeXからkindle本を作る

More than 1 year has passed since last update.


はじめに

これまでLaTeXで書いた資料をPDFにして配布したりしていたのですが、わけあってkindle本にすることになったので、調べてやってみたメモです。


参考記事

半ばあきらめていたところで、以下の記事により復活しました。感謝いたします。


準備

参考記事の内容と重複しますが、必要となるツールのインストール記録です。

LaTeXからkindle本を作るために、htmlに変換するのですが、そのためにはやはりTeXシステム一式が必要となります。インストールの仕方は色々なサイトで紹介されているので省略します。すでにインストールしている人は飛ばして結構です。


  • helpers4htのインストール

LaTeXからhtmlに変換するtex4htはTeX一式の中に入っていますが、足りないファイルがあるそうなので、helpers4htをインストールします。

インストールの手順には、

cd `kpsewhich -var-value TEXMFHOME`

mkdir -p tex/latex
cd tex/latex
git clone git@github.com:michal-h21/helpers4ht.git

とありますが、Windowsの場合、

kpsewhich -var-value TEXMFHOME

でフォルダを確認した上で、さらにその下にtex\latexフォルダを作って、Download ZIPで取ってきたhelpers4ht一式をコピーします。


LaTeX原稿の修正

tex4htではpLaTeXではなく、LuaLaTeXを使うので、プリアンブルの書き方が若干違います。なので、通常のLaTeX用のtexファイルとは別にkindle作成用のtexファイルを作っておくとよいでしょう。

以下は私がkindle用に修正した点です。TeXの書き方は人それぞれなので、必ずしもこうする必要はありません。


  • 漢字コードはutf-8に


  • プリアンブルを以下のように修正(jがつくクラスは使えないので注意)


\documentclass{book}

\usepackage{alternative4ht}
\altusepackage{fontspec}
\altusepackage{xeCJK}
\altusepackage{xunicode}
\setCJKmainfont{IPAMincho}


  • インデントしない(zwの単位は使えない)

\parindent=0pt


  • equation環境は使わず、eqnarray環境を使う


  • 数式を左寄せにして式番号を付ける


\documentclass[fleqn]{book}

\mathindent=45mm

数式はpngファイルに変換されるのですが、数式の位置によって表示サイズが変わったりしたので、数式の環境と式の始まりから式番号までの幅を同じにして何とか凌ぎました。


  • graphicのスケールをpdf用とkindle用で変える

図のスケールをpdfに合わせておくと、kindleに変換したときにかなり小さくなってしまいます。そこで、図の倍率をpdf用とkindle用で変えられるようにfpというパッケージを使いました。

\usepackage{fp}

そして、倍率を表すmultという定数を使って、pdf用は、

\def\mult{1}

kindle用は、

\def\mult{3}

と変えておきます。そして、図を挿入するところで、

def\gscale{0.5}

\FPmul{\gscale}{\gscale}{\mult}
\includegraphics[scale=\gscale]{figure.png}

のようにgscalemult倍して渡すと、kindle用だと3倍の大きさにすることができます。

なお、最後にkindle本にするときに、サブフォルダ上のファイルは認識されないようなでの、図のファイルはサブフォルダに分けないで、texと同じフォルダに入れておきます。


  • 数式のサイズ調整

図と同じくpngに変換される数式のサイズが小さいので、

C:\w32tex\share\texmf-dist\tex4ht\base\win32\tex4ht.env を編集します。

<dvipng>

G.png
%echo "dbg: got to dvi to png via (dvipng)"
Gdvipng -T tight -D 144 -bg Transparent -pp %%2:%%2 %%1 -o %%3

の部分の-D 144-D 288に変えてみます。このサイズだと、解像度が低い端末ではかなり大きい数式になりますが、解像度が高い端末だとちょうどよいサイズとなります。


htmlへ変換

make4htというコマンドを

make4ht -l -d dist main.tex

のように実行すると、main.texをhtmlに変換します。ここで、オプションの-lは、LuaLaTeXを使うことを、-dは出力ファイル一式をdistというフォルダにコピーすることを意味します。

ここで注意ですが、このコマンドは一時的なファイルを頻繁に作ったり削除したりするので、クラウドと同期したフォルダ上で実行すると、アクセス違反が起こってうまく変換できないことがあります。


kindle本の作成

変換されたhtmlファイル一式をzipファイルにしてKDP(Kindle Direct Publishing)にアップロードすればkindle本の完成です。

出版前に内容を確認するためには、KDPの「Kindle 本のプレビュー」でダウンロード版プレビューアーのオプション「コンピューター上でプレビュー」を選んで、Mobiファイルをダウンロードします。これをPCやタブレットのKindleフォルダにコピーしてkindleアプリで確認します。


おわりに

今回わけあってkindle本を作りましたが、LaTeXは普通にPDFファイルにした方が明らかに見た目がきれいです。kindle本は図形(LaTeXの数式も)のサイズが端末の解像度で決まってしまいます。文字のサイズは変えられるのに、図形サイズが変えられないのは残念なところです。今後の改善に期待します。


ちなみに

上記の方法で作成したkindle本です。