日記
今日も前回同様、作業だけ書く。
作業記録
ここに来てMathJaxの変なバグが判明。
簡単に説明すると、MathJaxは数式番号の生成時に特定の関数を呼び出すようになっている。特定の関数というのがその数式番号を振る方程式に元々割り当てられた番号(1,2,...)を引数にとっており、ユーザはその関数の中身を弄って出力させることで好きに数式番号を生成出来る。
ここからが問題なのだが、どうやら特定のタグが用いられていると関数が2回呼び出されるらしいのだ。一回全ての方程式で生成されたあとにもう一回生成され、前の結果が上書きされる。
これ、2回呼び出されるとはいえ同じ方程式には同じ番号が割り振られているので、その番号にしか依存しない設計にしておくと同じ結果が出力されるためにバグの影響を受けない。デフォルトの設計も右から来た引数をそのまま左の出力に受け流すシンプルなものなので当然影響を受けない。
しかし、私は引数とは別に、呼び出す毎に結果の変わるような引数をとらない関数を作り、それによってでしか出力結果が変わらないようにした。このことで2回出力のバグの影響をモロに受けた。
当初は自作のプログラムのせいだと考えていたものの様々な検証の結果MathJax自体がおかしいと分かったときは驚いた...。
これを明日は解決したい(学校...。