July 08, 2016

Windows で Gitbook + mathjax を使った文書作成

Gitbook は Markdown 形式で書かれた文書から HTML や PDF, EPUB, MOBI 形式の作成が行えるツールです。 ここでは Windows で環境を構築する方法を解説します。

Node.js のインストール

まず、Node.js が必要です。以下のサイトから LTS 版をダウンロードします。

Node.js

ダウンロードしたファイルを実行してインストールします。 インストール先はデフォルトのままで構いません。

gitbook-cli のインストール

gitbook をコマンドで実行するために gitbook-cli をインストールします。 コマンドプロンプトを開いて以下のコマンドを実行します。

npm install -g gitbook-cli

gitbook-cli 自体は gitbook を含んでいません。 gitbook の機能を使うときに自動でインストールされます。そこで適当なサブコマンドを実行してインストールします。

gitbook help

テストしてみる

サンプルとして以下の文書をビルドしてみます。

Learn Javascript

適当なフォルダを作成します。 git が使えるなら clone します。

git clone https://github.com/GitbookIO/javascript

git が使えない場合はリンク先から Clone or download > Download Zip でダウンロードします。

パスを javascript に設定して以下のコマンドを実行します。

gitbook serve

ビルドが開始され Serving book on http://localhost:4000 と出たら成功です。 ブラウザで http://localhost:4000 を開いて確認してみます。

Mathjax を使う

gitbook のプラグインとして mathjax が使用できます。 新規にフォルダを作成して新しい文書を作成しましょう。 適当なフォルダを作成してパスを通し、以下のコマンドを実行します。

gitbook init

実行するといくつかのファイルが生成されます。そのまま gitbook serve を実行して動作確認しておきます。

プラグインの追加

book.json にプラグインを記述することができます。 gitbook init では作成されませんので、新規に作成します。 プラグインの指定は plugins で行います。 mathjax を使う場合は以下のようになります。

{
	"plugins":["mathjax"]
}

VisualStudio 2015 のインストール

mathjax を使うためにはビルド環境が必要です。 VisualStudio の最新版である 2015 を入れます。

VisualStudio 2015

上記のサイトから Community 版をダウンロードしてインストールします。 デフォルトのままでは必要なファイルがインストールされませんので、カスタムインストールします。

インストールの種類を選択するときに カスタム を選択します。 プログラミング言語 > Visual C++ > Visual C++ 2015 用の共通ツール にチェックを入れます。 それ以外はチェックをはずしても問題ありません。 インストール先はデフォルトのままで構いません。 インストールには時間がかかりますので、待ちましょう。

python 2.7.x のインストール

次に python が必要になります。python には 2.x 系と 3.x 系がありますが 2.x 系をインストールします。 以下のサイトから 2.7.x 系の最新版をダウンロードしてインストールします。

python

インストール先はデフォルトのままで構いません。 コマンドから python を実行するために環境変数にパスを登録する必要があります。 インストーラを使ってインストールする場合は Add python.exe to Path を有効にしておきます。

mathjax をインストールする

これで準備が整ったので mathjax をインストールします。 book.json に書かれたプラグインをインストールする場合は以下のコマンドを実行します。

gitbook install

info: >> plugin "mathjax" installed with success と表示されればインストール成功です。 もし次のようなエラーが出た場合:

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\CodeAnalysis\Microsoft.CodeAnalysis.targets(214,5): error	MSB4175: タスク ファクトリ "CodeTaskFactory" を
アセンブリ ":\Program Files (x86)\MSBuild\v12.0\bin\Microsoft.Build.Tasks.v12.0.dll" から読み込めませんでした。
プロセスを開始するのに使用される環境ブロックの長さは、65,535 バイトを超えて指定することはできません。
ユーザーの環境ブロックの長さは 1860986 バイトです。環境変数のいくつかを削除して、もう一度実行してください。
"c:\book\node_modules\contextity\build\contextify.vcxproj"
...
Error: contextify@0.1.15 install: `node-gyp rebuild`
Exit status 1

問題となっている contextify を直接インストールします。 以下のコマンドを実行します。

npm install contextify

問題なくインストールされたら再度プラグインのインストールを試みます。

gitbook install

info: >> plugin "mathjax" installed with success と表示されればインストール成功です。 あとは文書をビルドして確認してみます。

gitbook serve

PDF, epub, mobi 形式の作成

svgexport

PDF などで数式を文書に含めるには SVGexport が必要です。 以下のコマンドを実行してインストールします。

npm install -g svgexport

ebook-convert

PDF などの文書を作成するには ebook-convert が必要です。 以下のサイトから calibre をダウンロードしてインストールします。

calibre

pdf, epub, mobi 形式の作成

それぞれ次のコマンドで作成することができます。

gitbook pdf
gitbook epub
gitbook mobi

プラグインのオプション指定

gitbook のプラグインのオプションは book.json で指定できます。 例えば mathjax のオプションを指定する場合は次のようになります。

"plugins":["mathjax"],
"pluginsConfig":{
	"mathjax":{
		"forceSVG":true
	}
}

最後に…

残念ながら Windows で mathjax を使った pdf を作成すると数式の解像度がひどいことになっており、使えません。 HTML 形式では問題ないので、html でデプロイする場合には問題ないと思います。 CentOS7 で pdf 出力した場合はぎりぎり許容できそうなレベルではありますが、それでもイマイチな出来です。 そのあたり改善されるか、または調整できるのであれば大変便利ですね。 また、gitbook でビルドすると綺麗ですので、こちらを使うのもありです。 専用のエディタもあるので、なかなか便利です。 Windowsでは数式を使わなければ問題ないので、文書作成環境として問題ないと思います。