MathOverflow は超有名なQ&Aサイト StackOverflow の数学版です。 MathOverflow は MathJax を採用しており、数式を気軽に書くことができます。

MathOverflow に似たサイトを作るためには、StackOverflow のシステムのクローンを見付けて、 MathJax 対応にすれば良いわけです。

StackOverflow クローンはいろいろたくさんあるようですが、 PHP と MySQL だけで使える Qwench をローカルにインストールして試してみました。

まず、MathJax 以前の問題としてコメントの日本語が化けまくる。 sanitize() に問題があるようです。 libraries/shared.php の sanitize() の定義中の comment の項目をいじればコメントの文字化けは回避できます。

Qwench にもリアルタイムプレビューが装備されています。やりたいことはLaTeXコマンドによる数式混じりの文章をリアルタイムでプレビューしながら質問や解答を投稿できるようにすることです。

MathJax を読み込む HTML のヘッダーは view/header.php に書き込んでおけばよいようです。

リアルタイムプレビューでも MathJax が適用されるようにするためには js/wmd.js の pushPreviewHtml(text); の次の行に MathJax.Hub.Queue(["Typeset",MathJax.Hub,"wmd-preview"]); を挿入すればよいようです。

しかし、上で文字化けを回避できたコメントの投稿時に MathJax が自動的に適用されるようにする方法はわかりませんでした。コメント投稿のあとにブラウザでリロードすれば MathJax が適用され数式が表示されますが、コメントを投稿した直後に表示されるコメントは数式に変換されません。

あとQ&Aの投稿時にバックスラッシュを入れるためには二重に入れてエスケープしてやらないといけません。この辺色々問題がありそうです。

他にもたくさん問題がありそうなのですが、この辺で止めにしました。

見た目の感じでは Qwench よりも Question2Answer の方が元祖に近い感じのようです。あ、日本語でQ2A使っている人がいるようですね。

XAMPP を入れてローカルに Qwench をインストールして試してみた後に「Q&Aシステム Qwenchを入れてみたけど・・・」を見ると笑える。

ちなみに XAMPP は現在最新版の 1.7.4 を 64bit Windows に入れるとはまりますが、 1.7.3 を入れると簡単でした。