ひとつ前の記事で PHP と MySQL だけで使える StackOverflow のようなフリーソフトを探して、MathJax を使えるようにすれば MathOverflow のようなサイトを自分で作れるんじゃないかという話をしたつもりです。 (はっきりそのように書いたかどうかはもう忘れてしまいましたが。)

実際に Qwench を試してみましたが、いまいちでした。

今度は Question2Answer (Q2A) を試してみました。こちらの方が断然良さそうです。

Qwench の良い点は最初からリアルタイムプレビューを備えていることですが、作り方が雑な感じでいじりにくい。

それに対して Q2A はリアルタイムプレビューの機能を備えていない点がかなり不満なのですが、作り方がより洗練されており、いじりやすい構造になっています。しかも複数の言語 (日本語を含む) にすでに対応済みです。サンプルサイトとして CMS BoxCMS Box Q&A が非常に参考になります。

さて問題は MathJax 対応です。 Q2A には HTML のヘッダに挿入するコードを管理者メニューから簡単に設定できます。そこに MathJax.js を読み込むコードを入れておけば、各ページで MathJax で数式が表示されるようになります。これは簡単。

問題は記事や回答の編集です。 LaTeX のコードは書き間違えることが多いのでプレビュー機能の充実は必要な条件です。

現在の Q2A では CKEditor を採用しています。これを MathJax 対応にすればそれでおしまいです。しかし検索した限りにおいて、MathJax 対応のプラグインの類はまだ作成されていないようです。 (おそらく待っていれば誰かが作ってくれるでしょう。)

まずデフォルトではソースとプレビューのボタンが表示されないようになっているので、 qa-plugin/wysiwyg-editor/qa-wysiwyg-editor.php の 'Bold','Italic' の直前に 'Source','Preview', を追加してみました。これで WYSIWYG ではなく、HTML のソースを直接編集して、プレビューできるようになりました。

そのままプレビューボタンを押しても MathJax 用のコードが含まれていないプレビュー画面が表示されてしまいます。当然数式は表示されない。

この livedoor blog レベルのプレビューができれば個人的に十分だと思うのですが、そのようなカスタマイズは可能なんですかね? 個人的にこの livedoor blog は相当によくできていると思います。 (MathJax 対応も非常に易しいし。)

よくわからないので、この問題を解決する最も汚い方法を試してみました。 ckeditor.js を直接編集する! preview や /head のようなキーワードを検索してそれらしきところを見付けてそこに MathJax 用のコードを挿入してしまう。作業はすぐに終わります。

まあとにかく、一部とても汚いことをやってはいますが、たったこれだけの作業で MathOverflow もどきのサイトが作れそうです。誰かやりませんかね?