2009/12/29

sphinx math

ドキュメント作るなら Sphinx が素敵って方々から聴いていまして
まぁ、興味があったんでちょっといじってみました
参考は渋川さんの
渋日記: Pythonって何?という人のためのSphinxインストール入門
渋日記: Pythonって何?という人のためのSphinxチュートリアル
渋日記: Pythonって何?という人のためのSphinxチュートリアル[2]
もぉ手取り足取りです

設定なんてエンター連打でとりあえずちょこちょこ書いてみてたんですが
ちょっと数式打ってみたくなって思いだしました
> pngmath: include math, rendered as PNG images (y/N) [n]: n
> jsmath: include math, rendered in the browser by JSMath (y/N) [n]: n
sphinx-quickstart でどっちも n と答えてしまった!!

でまぁ拡張なんで追加できるはずじゃん、追加すればいいじゃん
って思ったんですがドキュメントとか読むの面倒だしーと思いまして
新しく Sphinx のプロジェクト立てようとして
> pngmath: include math, rendered as PNG images (y/N) [n]: y
> jsmath: include math, rendered in the browser by JSMath (y/N) [n]: y
Note: pngmath and jsmath cannot be enabled at the same time.
pngmath has been deselected.
しっかり怒られました
conf.py を diff してみると
$ diff -u /tmp/conf.py ~/myproject/conf.py
(前略)
@@ -22,7 +22,7 @@

# Add any Sphinx extension module names here, as strings. They can be extensions
# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
-extensions = ['sphinx.ext.pngmath', 'sphinx.ext.jsmath']
+extensions = []

# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']
(後略)
名前登録するだけだった、っつーかコメントに書いてあるじゃん

png より jsmath とか格好良いかなーと思ったんですが
ググって出てきた渋川さんの翻訳
Sphinxにおける数式のサポート — Sphinx v1.0 (hg) documentation
の jsMath のとこ見たら
jsMath(と必要なフォント)はかなり巨大です
確かにフォントを用意するのは嫌だな
HTML で提供すれば十分だから今回は逃げちゃおう
ということでささっと sphinx.ext.pngmath に転向

あ、ちなみに、LaTeX 環境は当然のように整ってるんだZE!!
debian lenny なら多分 texlive-latex-base が入ってれば OK なはず

で、こんな文章書いてみました
==========
超幾何級数
==========

超幾何級数 :math:`_2F_1` とはパラメータ :math:`a, b, c, z \in\mathbb{C}` に対し

.. math::
_2F_1(a,b,c;z) &= \sum_{n=0}^\infty \frac{(a)_n (b)_n}{(c)_n n!} z^n,\\
(\alpha)_n &= \alpha \dot (\alpha+1) \cdots (\alpha + n - 1)

で定義される。但し :math:`c\not\in\mathbb{Z}_{<0}` とする。この級数は :math:`|z|<1` で絶対収束し正則関数を定義する。
そして make すると
(前略)
pickling environment... done
checking consistency... done
preparing documents... done
WARNING: dvipng command 'dvipng' cannot be run (needed for math display), check the pngmath_dvipng setting
(後略)
おぉ、dvipng ってのが要りますか、入れますとも入れますとも
debian lenny だと dvipng ってのがあったんで aptitude install dvipng
再度 make したら

こんなになりました

ってこんなスムースにはいかず LaTeX の部分で少しエラーと格闘したんですが
math:: の場合は要するに amsmath の gather 環境につっこんでいるみたい
\mathbb も使えたので amssymb も usepackage されてる
で、conf.py に pngmath_latex_preamble で preamble が書けるみたいだし
math:: に :nowrap: って付ければ段落を gather 環境に入れないみたいだし
色々好き勝手できそう

でも、数式打つのには YaTeX か AUC-TeX 使いたいな
次は jsMath?

0 件のコメント:

コメントを投稿