Web上に説明文を書く際に数式をさらっと載っけたかったので、手軽にやれる方法はないか探してみた。
JavaScriptライブラリ、MathJaxを使うと手軽だよという話を聞いた。
http://docs.mathjax.org/en/latest/
下記のように記述してJavaScriptの設定をする。
<script type="text/x-mathjax-config"> MathJax.Hub.Config({ tex2jax: {inlineMath: [['$','$']]} }); </script> <script src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
で、下記のように記述する($の部分は都合により全角で記述。実際には半角)。
$ \sum _{k=1}^{10}k $
すると下記のように表示される。
$$ \sum _{k=1}^{10}k $$
非常に手軽だが、使ってみた感じ、若干重い。長文で大量の数式が登場する場合はあまり向かない。
HTML上に数式を書く規格、MathML(正式名称はMathematical Markup Language)。
こちらはW3Cの規格なのでXML形式で記述される。ブラウザの実装に頼るので、MathJaxより軽いけどブラウザのサポート状況によって表示できるかが分かれる。
下記を見る限り、2014年12月時点でサポートしているブラウザはFirefoxとSafari。ChromeやIEはサポートしていない。IEだけがサポートしていないなら問題ないのだけど、Chromeがいないのは厳しい。またFirefoxでもそれ用の
ブラウザ対応状況
http://caniuse.com/#feat=mathml
ただ、MathJax.jsを読み込んでいると、JavaScript側で処理をしてちゃんと数式にしてくれるらしい。手元で動作させてみたところ、ChromeやIEでもちゃんと下記のMathMLの記述は評価され出力された。
Googleさんは一度MathMLを導入しかけてやめてるので、今後導入されるかどうかはよくわからない。
また、MathMLは人類が手書きするにはちょっと厳しい規格。例えば上で出した数式を出す場合、MathMLでは下記のようなk術になる。
<math xmlns="http://www.w3.org/1998/Math/MathML"> <mstyle displaystyle="true"> <munderover> <mrow> <mo> ∑<!--n-ary summation--> </mo> </mrow> <mrow> <mi> k </mi> <mo> = </mo> <mn> 1 </mn> </mrow> <mrow> <mn> 10 </mn> </mrow> </munderover> <mi> k </mi> </mstyle> </math>
latex → mathmlのコンバータ的なものを探して使うことになる。
MathToWeb
ローカルでLaTeXの文字列をMathMLに変換できるjarを配布してる。Web版もある。
http://www.mathtoweb.com/cgi-bin/mathtoweb_home.pl
iTex2Img
こちらは画像に変換してくれるサイト。
http://www.sciweavers.org/free-online-latex-equation-editor
Web Equation
手書きの数式をLaTexやMathMLに変換してくれる便利なサイト。けっこう適当に書いてもうまく判定してくれる。
http://webdemo.myscript.com/#/demo/equation