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)

テーマをころころ (Precious テーマ試用中)

WordPress のテーマをころころ変えてみています。

本番のサイトで試さなくていいように、バーチャルマシンでお試し用の環境を作ったほうがよさそうですね。といいつつ、www.makisima.org でやっています。

ブラウザの幅を変えたときに、本文の幅も変わってほしい、印刷を考慮するとサイドバーは左ではなく右がいい、できればスマートフォン(iPhone)でも表示しやすいほうがいい、無駄なヘッダーはいらない、等々思いながらテーマを探しています。

いまのところ、 Precious がまずまずです。 http://wordpress.org/extend/themes/precious

ファビコンが Precious テーマのものに上書きされてしまいますが、(WordPressのパス)/wp-content/themes/precious/gfx/favicon.ico がアイコンの実体なので、FTP でここに希望のファビコンを上書きすればO.K.です。

だいぶ探し回ってしまいましたが、ページのソースを表示して、<html …><head…> のあたりの
<link rel=’shortcut icon’ type=’image/x-icon’ href='<a href=”view-source:http://(略)/wp-content/themes/precious/gfx/favicon.ico”> となっているところを探せばよいのでした。書き換えたらブラウザを再起動します。

WordPress 側のテンプレートを変えることもできます。テーマ編集→テンプレート→ヘッダー(header.php) に <?php precious_favicon(); ?> という行があるので、 <!– <?php precious_favicon(); ?> –> とコメントアウトしてしまってもかまわないはずです。そうすれば、サイト全体に適用するルートフォルダの favicon.ico が有効になります。function precious_favicon() は template-tags.php で定義されています。

さらに、フォントの大きさをテーマの 62.5% から 100% に変更しました。小さい方が見た目にかっこいいのかもしれませんが、小さいフォントのページは大きくして閲覧していることが多いので、標準の大きさにしました。style.css の body に font-size があります。ここで全体的な文字の大きさを設定していて、個別にはこの大きさに対して 1.1em などと相対的に指定しているようです。

フォントサイズはこれでよいと思ったのですが、よく見ると、なんとなく大きいような…。style.css をよく見たら、本文(contents)の font-size が 1.1em になっています。ということは、body に設定すべきは 1/1.1 = 0.909… で、90.9% ですね。修正しました。たぶん、これでふつうの文字の大きさになりました。文字サイズを変えたら、他のマージン等々も変えるべきなのでしょうが、今回はここまでにします。

画像アップロードができない?

画像をアップロードする先のディレクトリにパーミッションがないというエラー メッセージらしいが、wp-content の下に uploads を作成したら動くようになった。

元は透過画像のはずが、透過画像で表示されていないように見える。う~ん、なんでだろう。

同じファイルを2度アップロードすると、ファイル名に連番が振られて別ファイルになるようだ。また、画面上で画像を削除してもサーバからは削除されていない。

ページの編集をして画像の挿入位置を移動すると、画像への URL が相対指定になって、画像が見つからなくなる。URL を強制的にフルパスに書き換えると表示されるようになる。もともとそういう仕様なのか、サブディレクトリに置いた WordPress をルートで動かすように設定したせいか、そのときに設定を修正し損ねたか。一度わかれば対処はできるのだが、ちょっと釈然としない。

編集機能の HTML はかなり癖がある。勝手に改行を挿入されたり。

(2010.11.02)