ローカルの仮想マシンにTeX Live (LaTeX) をインストール (2)

Apache2 が動いているローカルの仮想マシンに LaTeX と mathTeX をインストールしてみます。

LaTeX のインストール

まず、「ローカルの仮想マシンにTeX Live (LaTeX) をインストール (1)」を参考にしながら LaTeX を入れます。多少条件を変えました。

適当なディレクトリで、

wget  http://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz
tar  zxvf  install-tl-unx.tar.gz
./install-tl  -portable

で TeX Live のインストーラを USB などで持ち歩くためのモードで起動します。

メインメニューで、

<S> installation scheme

から、詳細メニュー Select scheme: で

a [ ] basic scheme (plain and LaTeX)

を選択します。メインメニューに戻って、

<C> standard collections

の詳細メニュー Select collections: では

a [X] Essential programs and files
o [X] Basic LaTeX packages

の二つが [X] で選択状態なので、 dvipng が含まれる c を追加します。

c [X] TeX auxiliary programs

メインメニューに戻り、

<D> directories:

詳細メニュー Directories setup: の

<1> TEXDIR:       /usr/local/texlive

以下を書き換えます。<1> を入力すると、<2>~<4> は自動的に書き換わります。<5>~<7>は -portable ではパス指定がないので、デフォルトのままです。仮に /home/makisima/texlive/2010 にインストールするなら、

<1> TEXDIR:       /home/makisima/texlive/2010
<2> TEXMFLOCAL:     /home/makisima/texlive/texmf-local
<3> TEXMFSYSVAR:    /home/makisima/texlive/2010/texmf-var
<4> TEXMFSYSCONFIG: /home/makisima/texlive/2010/texmf-config

<5> TEXMFVAR:       $TEXMFSYSVAR
<6> TEXMFCONFIG:    $TEXMFSYSCONFIG
<7> TEXMFHOME:      $TEXMFLOCAL

これでインストールオプションの設定が終わったので、メインメニューの I でインストールを開始します。

Actions:
<I> start installation to hard disk

ダウンロードしながらインストールが行われます。

インストールが終わっても、./install-tl -portable のときは、環境変数をどう設定するかという指示は表示されません。

LaTeX や dvipng が動くかどうか確認するため、フルパスまたは相対パスを指定して実行します。

find / -name latex
find / -name dvipng

でフルパスがわかります。

ちなみに、 dvipng は TeX Live のインストールオプションとしてインストールしなくても、実行ファイル単体ひとつだけを latex と同じディレクトリにコピーすれば動きます。

mathTeX のコンパイル

LaTeX のインストールが終わったら、mathTeX にとりかかります。LaTeX を web から利用する方法は様々にあると思いますが、 mimeTeX との互換性から mathTeX を選びました。mimeTeX が動いている環境なら、mimetex.cgi へのパスを mathtex.cgi に書き換えるだけで、プラグインも同じプラグインで動きます。
まず、

download mathTeX リンクから、仮想マシンの適当なフォルダにダウンロードします。今回は Ubuntu 10.10 desktop です。

mathTeX のページの指示に従い、コンパイルします。latex と dvipng へのパスは、実行ファイル名まで必要です(複数の LaTeX 処理系のどれかを任意に選べる)。また、それぞれの二重引用符の前には\が必要です(忘れるとコンパイルエラーになる)。上に述べてきたような設定で、デフォルトのオプションでコンパイルするときは次のようになります。デフォルトでは GIF 画像が生成されるようになります。

cc -DLATEX=\”/home/makisima/texlive/2010/bin/i386-linux/latex\” -DDVIPNG=\”/home/makisima/texlive/2010/bin/i386-linux/dvipng\” mathtex.c -o mathtex.cgi

mathTeX で LaTeX を動かすときに環境変数はどうするのだろうかと疑問だったのですが、コンパイル時に cgi に組み込んでしまうんですね。したがって、配布用の実行ファイルも存在しないということになります。

できた mathtex.cgi をターミナルで実行できるかどうか確認します。たとえば、

./mathtex.cgi “x^2+y^2” -o equation1

生成された equation1.gif が予想どおりの画像なら mathtex.cgi は正常です。ファイル・ブラウザですぐに確認できます。

Apache の設定

できた mathtex.cgi を apache2 で動かす設定です。

Ubuntu 10.04 desktop に apache2 を入れると、デフォルトでは、ウェブのルートは /var/www です。今回は http://localhost/mathtex/mathtex.cgi に置くことにしたので、/var/www/mathtex/ に mathtex.cgi をコピーしました。なお、apache の設定次第で、どのディレクトリに置いても //localhost/mathtex に見せることは可能です。

Apache2 mod_rewrite と AllowOverride

のときの設定を流用して、/etc/apache2/sites-available/default を

<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews +ExecCGI
#Options Indexes FollowSymLinks MultiViews
# AllowOverride None
AllowOverride All
Order allow,deny
allow from all
</Directory>

と書き換えました。公開するわけではないので、とりあえず動けばいいという設定です。apache2 を再起動します。

$ sudo /etc/init.d/apache2 restart

ブラウザで、

http://localhost/mathtex/mathtex.cgi

を開いて

No expression supplied

などと表示すれば動いています。

http://localhost/mathtex/mathtex.cgi?y=x^2

のように ? の後に LaTeX の式を入れて数式画像が表示されれば正常です。

赤字でエラーメッセージが表示されたら

http://www.forkosh.com/mathtex.html の Run-time error messages… の項を参照して対処します。

たとえば、cache ディレクトリ mathtex が作れないと言ってきたら、mathtex ディレクトリのパーミッションを

sudo chmod 777 /var/www/mathtex

といった具合です。

デフォルトのコンパイル オプションでは、 mathtex.cgi のあるディレクトリに mathtex というサブディレクトリを作って、一度生成した画像をキャッシュとして置いておくようになっています。

プラグインの設定

ここまでの設定で、HTML の <img > タグに mathtex.cgi を指定すれば LaTeX 画像を表示できます。たとえば、

<img src=”http://localhost/mathtex/mathtex.cgi?y=x^2″ alt=”y=x^2″ />

WordPress などではプラグインを使うと便利です。mathTeX は mimeTeX と入替えて使えるので、プラグインの mimeTeX への http パスを mathTeX のものに書き換えるだけです。

ちなみに、 mathTeX の配布先に公開サーバがあるので、http のパスをそちらに接続すれば品質確認できます。

mimeTeX から mathTeX に切り替えたとき、そのままでは数式画像が表示されず、WordPress でページを編集→更新すると表示されるという現象が発生しました。このあたりの動作についてはどうなっているのかよくわかりません。

(2010.11.17)

ローカルの仮想マシンにTeX Live (LaTeX) をインストール (1)

ローカルの仮想マシン (Ubuntu 10.04) で LaTeX を動かそうという試みです。あわよくば WordPress で数式を表示するのに使おうという思惑ですが、とりあえず、LaTeX を動かせるかどうか確認です。

日本語の文章や日本語フォントは考慮せず、一般的な数式さえ書ければいいという前提なので、英語版で十分です。また、今回はローカルの仮想マシンですが、ホスティング サーバでは root 権限がないので、ユーザ権限で環境構築できなければなりません。

定番の奥村先生のサイトで Linux 版のインストールについてみると( Make – TeX Wiki )、「ptexlive がお薦め」とのことで、その FrontPage – ptexlive Wiki を見ると、 TeX Live を日本語化するのが ptexlive です。ならば、今回は英語版 TeX Live だけで十分です。そのサイトは、

ですが、サイトの作りがよくわかりません。そこでまず DVD イメージを

から torrent で落としました。2 GB くらいです。その中身を読んで、なんとなくわかってきました。

DVD イメージ作成後も更新されているようですし、今回は最小限の LaTeX だけ必要で、フルセットの 2 GB もいりません。ネット越しにインストールするのがよさそうです。

で Linux 用の install-tl-unx.tar.gz (2.5mb) を持ってきて解凍すればよいことがわかりました。ただし、この URL は最寄りのミラーサーバにリダイレクトされるようになっているのですが、うまくリダイレクトされないことがあります。その場合は list of CTAN mirrors から日本のサーバの URL を探します。各サーバはたいてい /CTAN で終わっていますが、そこから CTAN → systems → texlive → tlnet とたどっていきます。たとえば、 jaist.ac.jp (北陸先端科学技術大学院大学)ならば、

  • http://ftp.jaist.ac.jp/pub/CTAN/systems/texlive/tlnet/

に install-tl-unix.tar.gz やその他のインストーラ類が置いてあります。

Windows でダウンロードして解凍、サーバに転送でもよいですし、直接、サーバで落として解凍でもかまいません。今回は仮想マシンの Ubuntu 10.04 の端末 (terminal) で実行しました。適当なディレクトリに移って、

wget http://ftp.sample.com/pub/CTAN/systems/texlive/tlnet/install-tl-unx.tar.gz (URLは適宜読み替え)

tar  zxvf  install-tl-unx.tar.gz

インストール方法は

に詳しく書かれています。Linux ではテキストモードでインストールできて、root 権限も不要です。

Perl で書かれた install-tl を実行すると、最下行で一文字(大文字・小文字の区別あり)または文字列を入力して設定をカスタマイズするようになっています。入力するごとにメニューの案内画面が書き換わって最下行でコマンドを打つようになっているので、たぶん telnet や SSH でも実行可能です。

./install-tl

今回はインストールするディレクトリをユーザのホームディレクトリの下にまとめるようにパスを設定しました。(USB メモリなどで持ち運びできるようなインストール方法もあり、./install-tl -portable 、環境に合わせてパスを自動検出するようです。)

<S> installation scheme

の項目を変更するので、S キー。詳細メニューになります。

a [ ] basic scheme (plain and LaTeX)

最低限を目標にするので、a キーで TeX と LaTeX のみ選択すると、

a [X] basic scheme (plain and LaTeX)

に変わります。選択している項目が [X] で示されます。

メインメニューに戻るので R キー。

<D> directories:

の設定で、D キー。今回は、インストールディレクトリを

~/texlive/2010

にすることにして、予めディレクトリを作成しておきます(または、別のターミナルで作成)。インストーラの設定では、’~’ がユーザのホームディレクトリを示すことになっています。

<1> TEXDIR:       /home/makisima/texlive/2010

のように、1 キーで選択、次の行でディレクトリを ~/texlive/2010 と指定すると、1~4 のパスが書き換わります。同様に 5~6 も順に書き換えました。

<1> TEXDIR:       /home/makisima/texlive/2010
<2> TEXMFLOCAL:     /home/makisima/texlive/texmf-local
<3> TEXMFSYSVAR:    /home/makisima/texlive/2010/texmf-var
<4> TEXMFSYSCONFIG: /home/makisima/texlive/2010/texmf-config

<5> TEXMFVAR:       ~/texlive/makisima/texmf-var
<6> TEXMFCONFIG:    ~/texlive/makisima/texmf-config
<7> TEXMFHOME:      ~/texlive/makisima/texmf

パスを書き換えて、 R キーでメインメニューに戻り、他のオプションを確認します。今回はその他の設定項目はデフォルトのままです。

<I> start installation to hard disk

の I でインストールが開始されます。

しばらく待つと、環境変数を設定するようにというメッセージとともに、そのパスと変数が示され、インストールが終了します。インストールの詳しいログは install-tl.log に書き込まれています。

環境変数の設定方法は、別項のとおりです。

ターミナルで TeX が動くかどうか確認します。

$ tex -version
TeX 3.1415926 (TeX Live 2010)
kpathsea version 6.0.0
Copyright 2010 D.E. Knuth.
There is NO warranty.  Redistribution of this software is
covered by the terms of both the TeX copyright and
the Lesser GNU General Public License.
For more information about these matters, see the file
named COPYING and the TeX source.
Primary author of TeX: D.E. Knuth.

PATH の設定も成功して、動いているようです。

LaTeX が動くかどうか確かめるため、適当なファイルを作ります。たとえば、sample.tex に次のように書き込みます。

\documentclass{article}
\begin{document}
\LaTeX

Using latex article style.

\[
y=x^2 + \int_0^\infty \sin x dx
\]

\end{document}

コマンドラインで、

latex sample.tex

で sample.dvi が生成されます。

X window が動いているなら、

xdvi sample.dvi

で表示できます。

どうやら、最低限は動いていたようです。

容量はどれくらいになったのか確認すると、

$ du -sm texlive
179    texlive

なので、容量はおよそ 180 MB でした。どれくらい必要かはインストーラのオプションを変更すると随時表示されるのでわかります。

(2010.11.15) (2010.11.17)

(投稿一覧)LaTeX の数式を mimeTeX で使う

  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 プラグインで使う

(2010.11.07)

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 プラグインで使う