このブログは、org2blog というライブラリを使って、 Emacs org-mode でかかれた文章を HTML に変換して投稿している。

今回、org-mode から HTML へ変換した文章中で 数式を扱う方法を調べてみた。

MathJax をつかう

MathJax とは、javascript でかかれた 数式を表示するためのライブラリ。 Latex なみの数式表現が扱えるようになる。

すべてのブラウザで動作し、表示するクライアント側での設定はいらない。

さらに、MathJax のファイル群のインストールは必要ない。

MathJax は、コンテンツデリバリネットワーク(Contents Delivery Network、CDN)で公開・配信されているので、 JavaScript ライブラリをダウンロードして、サーバーにアップロードといった作業は必要はないのである。

MathJax を使用するには、<html>…</html> タグの中に以下を書く。

<script type="text/javascript" async
  src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-MML-AM_CHTML">
</script>

<body>…</body> の中で、MathJax の記法(MathML、LaTeX、ASCIIMathML)を使って数式を書くと、 数式がレンダリングされる。

org-mode で MathJax をつかう

org-mode は MathJax にデフォルトで対応しているようだ(version. 9.0.5)

なので、org-mode の文章中に 数式を 書いて、org-export で HTML 形式で export すればよい。

これに今まで気づかなかったのは、自分の環境では、#+OPTIONS: TeX:nil を指定していたから。 ここは、Tex t でなければいけない。

Default の設定だと参照する MathJax の version が古いらしく、以下の設定で最新が使える。

(setf org-html-mathjax-options
      '((path "https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML")
        (scale "100") 
        (align "center") 
        (indent "2em")
        (mathml nil))
      )
(setf org-html-mathjax-template
      "<script type=\"text/javascript\" src=\"%PATH\"></script>")

org2blog は、html 形式に org-mode の文章を変換してから、WordPress にアップロードする。 org2blog で WordPress に投稿すれば、WordPress 上でも数式が表示される。

Example

\[〜\] で囲んで数式を表示

\[f(a)= \frac{1}{2\pi i}\oint_{\Gamma} \frac{f(z)}{z-a}dz\]

$$f(a)= \frac{1}{2\pi i}\oint_{\Gamma} \frac{f(z)}{z-a}dz$$

\(〜\) で囲んで本文中に表示

\(〜\) で囲んで、本文中に$a$を表示。

参考

あとは、Latex 記法を覚えるだけだ。(これが一番大変)