PelicanでMathJaxを使って数式を表示する

スポンサード リンク

Pelicanでもmathjaxを導入して数式を記述することができる。Tinkererなら,pipでsphinxのmathjaxプラグインを導入すれば良いのだが,PelicanはSphinxに依存しない(よね?)のでPelican独自のプラグインを導入しなければならない。これは,pipには無い(2015年1月21日時点では)のでgithubよりダウンロードする。

インストール

githubのページ getpelican/pelican-plugins よりプラグインを導入する方法を説明する。

まず,依存関係を満たす。render_mathはPelican 3.5以上とTypogrify 2.0.7以上,markdownに依存しているので,pipでインストールしておく

$ pip install pelican typogrify markdown

次に,リポジトリをクローンする。

$ git clone https://github.com/getpelican/pelican-plugins

最後に,pelicanconf.pyでプラグインを有効化する。ホームディレクトリ以下にcloneした場合は

# Pelican Plugins
import os
home = os.environ['HOME']
PLUGIN_PATHS = [home+'/pelican-plugins']
PLUGINS = ['render_math']

とすれば良い。 なお,私の場合は複数マシンから編集するのでpelican-pluginsのパスをベタ打ちしないようにした。

reStructuredTextの記述方法

正しく導入できていれば,reStructuredTextでは次のように \(\LaTeX\) の数式を書けるようになる

インライン数式は :math:`A_\text{c} = (\pi/4) d^2` てな感じに書ける。

ブロック数式の書き方は

.. math::

  \alpha_t(i) = P(O_1, O_2, \cdots O_t, q_t= S_i \lambda)

である。

インライン数式は \(A_\text{c} = (\pi/4) d^2\) てな感じに書ける。

ブロック数式の書き方は

\begin{equation*} \alpha_t(i) = P(O_1, O_2, \cdots O_t, q_t= S_i \lambda) \end{equation*}

である。

どうやら,PelicanのreStructreudTextでは数式番号は使えないようである。 Sphinxの拡張では使えるだけに残念だ。

ちなみに,SphinxやTinkererなら以下のようにして数式番号を付けられる

.. math:: e^{i\pi} + 1 = 0
   :label: euler

Euler's identity, equation :eq:`euler`, was elected one of the most
beautiful mathematical formulas.

Markdownの記述方法

正しく導入できていれば,Markdownでは次のように \(\LaTeX\) の数式を書けるようになる

インライン数式は$A_\text{c} = (\pi/4) d^2$てな感じに書ける。

ブロック数式の書き方は

$$ \alpha_t(i) = P(O_1, O_2, \cdots O_t, q_t= S_i \lambda) $$

である。

しかも,数式番号(とういうか:math:LaTeX のマクロ)も使える

$\LaTeX$のマクロは次のように書け,数式番号が使える!

$$
\begin{equation}
    y=x^2 \label{eq1}
\end{equation}
$$

引用は式($\ref{eq1}$)のようになる。

この記事自体はreSTで書かれているので,Markdownの場合のレンダリング結果は render_mathのMarkdownにおけるレンダリング結果 を参照。

Comments !

social