mathTeX.cgi のキャッシュ

LaTeX 数式の表示は、サーバに latex と dvipng の実行ファイル( TeX Live 2010 )を入れ、mathTeX の CGI から呼び出しています。(一部は mimeTeX)

昨日気がついたのですが、このサイトのところどころで mathTeX のエラー(7) が発生しています。

エラーメッセージ ☞ (7) Can't run latex program... mathtex.cgi

(7) Can’t run latex program:
check -DLATEX=\”path\”, etc.
See mathtex.html#message7

対処療法的には、ページ記述の際に数式に mathtex.cgi の \cache オプションを付加して明示的にサーバにキャッシュを生成するようにすれば、何度かページを再読み込みする間に解消するようです。明示しなくてもデフォルトでサーバにキャッシュ画像を生成するはずなのですが、うまくいかないことがあるようです。latex や dvipng で処理した画像のキャッシュファイルが一度生成できれば、次からはキャッシュ画像を返すようになります。

サイトをご覧の方の側では、ブラウザで何度か再読み込みを繰り返すと、そのうちに数式画像が表示されるようになります。(たいていは…… orz )

このエラーは複数の LaTeX 数式画像があるページで発生していて、ブラウザで再読み込みするたびに違う数式画像がエラーになります。サーバ上の mathtex.cgi 用キャッシュ ディレクトリを眺めていると、エラーになるような場合、数式画像のキャッシュが残っていません。

エラーメッセージによると latex プログラムが実行できないと言っているので、処理が間に合わずに多重起動で失敗が連鎖していくような状況でしょうか。何がおこっているのかはよくわかりません。場合によっては、dvipng が実行できないエラーのこともあります。以前のサーバでは発生していなかったようにも思えるので、CGI や実行ファイルの起動数など、サーバ側の設定による可能性もあります。

だいたい、LaTeX の処理系自体、シェルログインできないサーバにFTP でファイル一式コピーして、無理やり動かしています。そんな状態なので、現象や問題の切り分けからして難しいんですよね。

mathtex.cgi は 1.05 が出ていたので 1.03 からバージョンアップしましたが、同じ現象が起こっているようです。

mathTeX version 1.03 → mathTeX version 1.05

mathtex.cgi に \version を渡すと、

現在: \cache \version

なお、一度キャッシュが生成されると自動的には書き換わらないので、バージョンアップしたらキャッシュをクリアしておかないと、いつまでも古いバージョンとして表示され続けます。

< img src=”…/mathtex.cgi?… ” / > で直接書くより、 [ tex ] ~ [ /tex ] で呼び出すほうがエラーの率が高いように思えますが、はっきりしません。問題は mathtex.cgi ではなく、[ tex ] のほうのプラグインかもしれません。

以下、適当に数式を載せてみます。

TeX入門/簡単な数式(2) – TeX Wiki より

mathTeX manual (mathtex.html) より

       

エラー(7)にならずに表示されているでしょうか。このページ作成時には表示可能でしたが……。私のサイトには LaTeX 処理系のサブセットしか入れていないので、表示不能の例もいろいろありました。そういう場合もエラー(7)が表示されるようです。

(2013/7/13)