mimeTeX を anlak の dahnielson_mimetex プラグインで使う

LaTeX プラグインによっては、空白が + に化けることがあるので注意。そういうときは {} を使ってみましょう。

  • y=\int \dot{x} dt (空白使用)
  • y=\int{}\dot{x}{}dt ({}使用)

(上の式は現在稼働中のプラグインによって見え方が異なります)

さて、mimeTeX を wp-latexrender プラグインで使う (2) では、mimeTeX の本家 mimeTeX quickstart からリンクが張られている anlak の dahnielson_mimetex.php は本家の公開サーバを使うと書いてきましたが、接続先を自前の mimeTeX に設定すればちゃんと動いてくれます。

本家の公開サーバで動かすには、こちらのやり方の通りです。

要は、cache ディレクトリを作ってパーミッションを 777 にするのと、CGI の URL 設定を現状のものに書き換えるということになります。

変更するのは60行目。
$snoopy->fetch(‘http://www.forkosh.dreamhost.com/cgi-bin/
mimetexpublic.cgi?formdata=’.urlencode($formula_text));
の部分を
$snoopy->fetch(‘http://www.forkosh.dreamhost.com/mimetex.cgi?’
.urlencode($formula_text));
に変更します。

上記は公開サーバの URL になっていますが、この公開サーバは混んでいることが多いので不安定です。自前の mimeTeX があるなら、その CGI の URL に書き換えればよいわけです。たとえば、こんな感じです。

$snoopy->fetch(‘http://www.example.com/mimetex/mimetex.cgi?’
.urlencode($formula_text));

//www.example.com/mimetex/ あたりのパスは自分の環境に合わせて書き換えます。

プラグインの管理画面で表示される説明書きには <tex>~</text> で囲めと書いてありますが、text という誤植が残っていて、さらに <> から [] に仕様変更されているので、実際には[ tex ]~[ /tex ] (空白不要)です。

このプラグインは LaTeX の式をもとに MD5 でキャッシュ ファイル名を生成しています。何らかの原因で一度でも数式キャッシュ画像の生成に失敗すると、壊れた画像を表示できないので、ページ(数式)の表示がおかしくなります。その場合はキャッシュ ファイルを消去して何度かページの再表示を繰り返すと正常な数式が表示されるようになります。

ただし、サーバの設定状況によるのかもしれませんが、当方の環境では、生成された数式画像キャッシュ ファイル (“tex_xxx….xxx.gif”) の所有者が apache、パーミッションが 640 になるのでユーザが削除できません。キャッシュ ディレクトリをユーザが作っていれば、キャッシュ ディレクトリごと削除すればファイルごと削除することは可能です。個別のキャッシュ ファイルを消したい場合、php などで chmod するためのスクリプトを書けばパーミッションを変更できます。

たとえば、 tex_12345abcde67890fghij.gif というファイル名で、パーミッションを 646 に変えるなら、

<?php
chmod (‘tex_12345abcde67890fghij.gif’, 0646);
?>

という内容の、例えば chmod_file.php というファイル名をつけて、このスクリプトをキャッシュ ディレクトリにアップロードして、ブラウザから実行させればパーミッションが変更できます。パーミッションは 8進数表現にするため、646 なら、その頭に 0 をつけて 0646 と書く必要があります。0646 でなくてもよいので、削除したりコピーしたりできるようなパーミッションにすれば O.K. です。

このプラグインは ‘Snoopy.php’ を使っていますが、オリジナルのスクリプトのとおりの Curl にすることもできます。Snoopy になっているところをコメントアウトし、コメントアウトになっている Curl のところを有効にすれば Curl で動きます。もちろん、Curl が動かない環境があるから Snoopy がいるので、動くかどうかは環境しだいです。私のところでは動きました。

(2010.11.06)

関連記事

  1. (投稿一覧)LaTeX の数式を mimeTeX で使う
  2. LaTeX – *数式が得意な組み版システム LaTeX –> mimeTeX プラグイン(CGI)
  3. mimeTexをWordPressのプラグインなしで使う方法
  4. mimeTeX を wp-latexrender プラグインで使う (1)
  5. mimeTeX を wp-latexrender プラグインで使う (2)
  6. mimeTeX を anlak の dahnielson_mimetex プラグインで使う

mimeTeX を wp-latexrender プラグインで使う (2)

mimeTeX を wp-latexrender プラグインで使う (1) に引き続き)

自前のサーバで mimeTeX を WordPress のプラグインで動かすには、 Using LaTeX in WordPress にある wp-latexrender をダウンロード して mimetex.php と mimetex-plugin.php の2つを使います。ちょっとはまったのでメモしておきます。

デフォルトでは $system_disabled=0; になっていて、php や設定もそれを前提に書かれています。ところが、私の利用しているサーバでは $system_disabled=1; でなければ動きません。 $system_disabled=0; では、サーバには式の画像ファイルが生成されているのですが、エラー表示などはなく、サイトに表示される式は LaTeX のソースコードのままです。しかも画像ファイルの所有者が apache でパーミッションが 640 なので、何も操作ができません(画像ディレクトリごと削除はできたのですが)。

$system_disabled=1; で動いたのはいいのですが、画像ディレクトリにファイルが生成されなくなったようです。一体全体どうなっているのだろうかと疑問だったので、少々調べてみました。

まず $system_disabled ですが、これは system() を使うかどうかという設定です。じつはこの system()、mimeTeX の本家 mimeTeX quickstart で、使ってくれるな、と言っているものなんですね。OS のシェルのコマンドを実行させる関数で、セキュリティがらみでトラブルの元になります。その(ちょっと敬遠したい)システム関数を使うのが wp-latexrender の mimetex プラグインのデフォルトです。

mimetex.php のコードを眺めると、そのシステム関数を使うのを前提でスクリプトを書き、システム関数が使えない環境が出てきたので対策を施したという雰囲気です。そのための条件分岐が複雑で、私には処理内容がよくわかりません。ならば、$system_disabled=1; に固定して、システム関数を呼び出さないように単純化してしまえばよいのではないかと考えました。

  1. オリジナルの mimetex.php
  2. $system_disabled=1 固定に相当する簡略化 mimetex.php

条件固定で書き直したら、異様に単純になりました。ちなみに、どちらでもプラグインとして動作可能です。

ユーザが設定すべき項目を比較すると、オリジナル mimetex.php 冒頭の

// adjust this to match your system configuration
$mimetex_path = "/home/domain_name/public_html/cgi-bin/mimetex.cgi";
$mimetex_path_http = "http://domain_name/mimetex";
$mimetex_cgi_path_http="http://domain_name/cgi-bin/mimetex.cgi";
$pictures_path = "/home/domain_name/public_html/mimetex/pictures";

のうちで、$system_disabled=1; のときに使っているのは、$mimetex_cgi_path_http だけです。つまり、http: で指定する CGI の URL だけ指定すればいいことになります。あとの3つの設定は無意味です。pictures ディレクトリ(フォルダ)は使われていないのでした。毎回 mimeTeX CGI が LaTeX の数式を解釈して画像を生成する動作になります。

プラグインのもう一つのスクリプト、 mimetex-plugin.php については特に問題ありません。あえて言うなら、書き換えるべき設定の

include_once('/home/path_to/wordpress/latexrender/mimetex.php');

include_once('mimetex.php');

としてしまうのが簡単です。どうせ2つの .php ファイルは同じディレクトリに置きますよね。

mimeTeX を anlak の dahnielson_mimetex プラグインで使う では別のプラグインで mimeTeX を使ってみます。おそらく、そのほうが mimeTeX 推奨です。

(2010.11.06)

関連記事

  1. (投稿一覧)LaTeX の数式を mimeTeX で使う
  2. LaTeX – *数式が得意な組み版システム LaTeX –> mimeTeX プラグイン(CGI)
  3. mimeTexをWordPressのプラグインなしで使う方法
  4. mimeTeX を wp-latexrender プラグインで使う (1)
  5. mimeTeX を wp-latexrender プラグインで使う (2)
  6. mimeTeX を anlak の dahnielson_mimetex プラグインで使う

mimeTeX を wp-latexrender プラグインで使う (1)

mimeTexをWordPressのプラグインなしで使う方法 では makisima.org 上の mimeTeX を直接動かしました。今回はさらに WordPress から使えるように wp-latexrender プラグインを設定しました。参考にしたのは、

mimeTeX の WordPress 用プラグインには、mimeTeX の本家 mimeTeX quickstart からリンクが張られている anlak の dahnielson_mimetex.php もありますが、こちらは本家の公開サーバ上の mimeTeX を利用するプラグインです。

せっかく makisima.org で mimeTeX が動いているので、自前の mimeTeX を利用するプラグインを使います。wp-latexrender パッケージに含まれている mimetex 用のプラグインを使います。

上記サイトを参考に試行錯誤しましたが、

y=x^2

y=\frac{1}{2} \ \sin A \ \cos ^\prime B \ \tan ^{\prime\prime} C \int_0^\infty \log x \ dx + \alpha

一応、表示されましたね? このページを表示した時点で、数式画像になっていれば mimeTeX とプラグインが動作中ですが、動作していないときは LaTeX のソース表示になります。「’」や「”」が化けるなど、いろいろ癖はありそうです。

mimetex.php の21行目、$system_disabled=0;$system_disabled=1; に変更したら動くようになりました。

パッケージを解凍すると現れる wp-latexrender フォルダ内の index.php は削除することにしました。サイト全体の設定がディレクトリ インデックス拒否になっているので不要です。index.php があると、その内容が表示されます。index.php を残すかどうかはサイトのセキュリティに関する方針次第です。上記の参考にしたサイトでは mimetex.php と mimetex-plugin.php の二つだけコピーしろと書いてあって、はじめからそうすればよかったわけです。

生成された数式の gif 画像の所有者、パーミッションがおかしいという問題がありますが、原因究明と対処に時間がかかりそうなので、しばらく放置です。
(11/6追記) この問題は、system() が使えないか予期せぬ動作をしているために発生したようです。 $system_disabled=1; にしたら発生しなくなりました。画像ファイルの所有者がユーザではなく apache になって削除できなくなりましたが、ディレクトリごと削除できました。また、実は $system_disabled=1; では画像ファイルを生成せず、画像のためのサブディレクトリも不要です。(詳しくは 次回

(2010.11.05, 2010.11.06)

関連記事

  1. (投稿一覧)LaTeX の数式を mimeTeX で使う
  2. LaTeX – *数式が得意な組み版システム LaTeX –> mimeTeX プラグイン(CGI)
  3. mimeTexをWordPressのプラグインなしで使う方法
  4. mimeTeX を wp-latexrender プラグインで使う (1)
  5. mimeTeX を wp-latexrender プラグインで使う (2)
  6. mimeTeX を anlak の dahnielson_mimetex プラグインで使う

mimeTexをWordPressのプラグインなしで使う方法

mimeTeX がローカルで動く状態の場合、WordPress でプラグイン導入前でも無理矢理動作させることができます。

要は、img タグの src= に mimeTeX CGI ? \LaTeX の式、という具合に書いてしまうだけです。半角空白は URL エンコードで %20 に化けるのですが、LaTeX の区切りには空白の代わりに {} を使えます。

例えば、

y=\sin{}x

という式は、通常は ¥sin と x の間に半角空白を入れますが、代わりに {} を使って、

<img src="http://makisima.org/mimetex/mimetex.cgi?y=\sin{}x" alt="y=\sin{}x" />

と HTML で書いてしまえばよいわけです。ドメインや mimeTeX CGI までのパスはご自分の環境に合わせて読み替えてください。alt= は””(空文字)でもかまいませんが、 CGI に渡す式をコピペしておいたほうが読み手に優しいかもしれません。

もうちょっと複雑な式でも、この通り

y=\frac{\log{}M}{x^2}\int_0^\infty\sin{}xdx

式の意味は考えないでくださいね ☄

mimeTeX の導入については http://makisima.jp/engineering-lab/wiki.cgi?LaTeX#i2 にメモ書きしてあります。

WordPress 用のプラグインは 次回

関連記事

  1. (投稿一覧)LaTeX の数式を mimeTeX で使う
  2. LaTeX – *数式が得意な組み版システム LaTeX –> mimeTeX プラグイン(CGI)
  3. mimeTexをWordPressのプラグインなしで使う方法
  4. mimeTeX を wp-latexrender プラグインで使う (1)
  5. mimeTeX を wp-latexrender プラグインで使う (2)
  6. mimeTeX を anlak の dahnielson_mimetex プラグインで使う

(追記)

LaTeX 数式表示の img タグの中を、上の式は

src="http://makisima.org/mimetex/mimetex.cgi?y=\sin{}x"

から

src="/mimetex/mimetex.cgi?y=\sin{}x"

に変更。下の式も同様。サーバ移転中の仮URLでは表示テストが出来なかったので。

(2013/5/6)