MathJax 用 PukiWiki プラグインを作ってみた
「まだ PukiWiki 使ってるの?」と言われそうですが作りました。
mathjax.inc.php - PukiWiki
経緯
約3年前に Google Chart API を使って、PukiWiki で手軽に数式を表示させるプラグインを作成しました。
自作プラグイン/tex.inc.php - PukiWiki-official
ただ、Google Chart API の数式は 200 文字という制限があるため、次にように 1 文字でも多く記述できるように涙ぐましい努力をしたものです。
Google Chart APIの文字数制限を回避するために… - あらびき日記
1年もあれば実質字数制限はなくなるだろうと楽観的だったのですが、いつまで経っても状況は改善せず、PukiWiki で数式を書く度に字数制限に対する恐怖やストレスと戦っていました。
当時 tex.inc.php を作成した時は jsMath だと毎回表示されるのに時間がかかって鬱陶しいという思いもあったのですが、どうしても 1 項で 200 字の制限に引っかかる数式を記述したかったので MathJax 用のプラグインを作成したという運びです。
MathJax をロードするだけじゃダメなの?
PukiWiki で手っ取り早く MathJax を使うには jsmath.inc.php のロードする JS を MathJax に変更して設定を記述するという選択肢もあります。
ただ、個人的には数式の配置やサイズなども変更したかったのでわざわざこのような形でプラグインを作成しました。
中でも苦労したのが text-align の制御です。MathJax は displayAlign という項目に “left”, “center”, “right” のいずれかを指定することで数式の配置を指定できると謳っていますが、それぞれの数式の配置を指定することはできません。数式を div で囲って text-align を指定しても無視されます。
どうも、数式を表示するコンテナクラスの text-align を “center” にしておいて、displayAlign が指定されていれば style=”text-align:…” の形で要素ごとに適用するという仕組みみたいです。
なので、displayAlign: “hoge” にでもしようものなら普通のブラウザはそんなスタイルは無視してコンテナクラスに適用されているスタイルを採用します。
意図せず配置がおかしくなることを防ぐための配慮なんでしょうが甚だ迷惑です・・・。
なんとかコンテナクラスのスタイルを無効にできないものかと頭を悩ませていたんですが、CSS2 から “inherit” という値が指定できるようになっていたようですね。
16.2 Alignment: the ‘text-align’ property
というわけで、config=TeX-AMS_HTML を指定した上で、最終的に次のような設定をすることで所望の動作になりました。
MathJax.Hub.Config({
displayAlign: "inherit",
TeX: {
Macros: {
bm: ["\\boldsymbol{#1}", 1],
argmax: ["\\mathop{\\rm arg\\,max}\\limits"],
argmin: ["\\mathop{\\rm arg\\,min}\\limits"],
},
extensions: ["autobold.js", "color.js"],
},
tex2jax: {
ignoreClass: ".*",
processClass: "mathjax-eq"
}
});
ようやく字数制限から解放されたので論文を読むモチベーションも上がりそうです!