移行後にtex記法でうまく表示されなかった問題・解決編

はてなダイアリーではtex記法の処理にmimeTeXが利用されていた。
はてなブログではMathJaxというJavascriptライブラリが使用されているようだ。
mimeTeXよりMathJaxの方が記述に対してstrictなようで、
以前にも書いたように、ダイアリーで表示できていた書き方がブログでは通らないものがある。
まあ、ゆるいことにおんぶした書き方をしている方が悪いとも言えるけど。
表示できなかった記述で一番多かったのは、
\left\{や\right\}を\left{や\right}のようにエスケープせずに使っているものだった。
エラーを起こすようなtex記法が書かれているのは、
書いた時期が遅いものが多く、最初の頃はきちんと書いているので、
段々書き方が緩くなってきたんだなあと反省。
とりあえず、ざっとチェックして目に付いたものは直した。

このチェックの際、問題だったことがある。
MathJaxがエラーしたtex記法の場合はその中身を文字で表示するのだが、
現在の黒背景に黒文字で表示するので、
妙な空間が開いているとか気が付かなければエラーを見逃す可能性があったのだ。
もちろん文章をきちんと読んでいけばすぐ発見できるけれど、
さすがに全部の記事をしっかり読むなんて面倒の極みなので、
次のようなスタイルを入れておいた。

/* tex記法でMathJaxのエラーが起きていないかのチェック用 */
.MathJax .math .noError {
  border: thick solid #8f8;
}

エラーを起こしているtex記法ではnoErrorクラスが付くことを利用して、
このクラスの要素を目立つ枠で囲うことでパッと見て判別できるようにした。
これで結構作業効率高くなった。

ところで、MathJaxがエラーを報告する際のクラスがnoErrorなので、最初、混乱した。
確かに正常なものにはなく、間違ったものに付くクラスなので、
誤りを報告するものであるのは間違いないのだが、*no*なのが何とも不思議な。
調べてみると、どうやら、予想通り、noErrorクラスはエラーを表しているのだが、
このクラスの内容はエラー自体を報告する代わりにエラーしたソースを示すということで、
表示をしなかったり動作のエラーを実際に起こしたりするのではなく、
代替表示を行う拡張機能という意味でnoErrorということらしい。