このサイトのいくつかのページでは数式を出力するためにPHPを使い,裏でTeXを動かしています。例えば
![\[ f(x) = \frac{1}{\sqrt{2\pi}} \exp\biggl(-\frac{x^2}{2}\biggr) \]](mathimg/ffa752da726616f1f132a468416bfce3.png)
という数式は
<div class="math">
<?php tex('\[ f(x) = \frac{1}{\sqrt{2\pi}} \exp\biggl(-\frac{x^2}{2}\biggr) \]') ?>
</div>
と書いてあります。
そのほかでは,ページの頭に
<head>
...
<?php require("phptex.inc") ?>
</head>
と書いてあるだけです。この phptex.inc
というファイルは次のようになっています。好みによって適当に変えてください。
<?php
function tex($x) {
$t = md5($x);
if (!file_exists("mathimg/$t.png")) {
$f = fopen("mathimg/$t.tex", "w");
fwrite($f, "\\documentclass{article}\n\\usepackage{mathptmx,amsmath,amssymb}\n\\pagestyle{empty}\n\\begin{document}\n$x\n\\end{document}\n");
fclose($f);
system("$HOME=/tmp; ulimit -t 10 -f 1024 -c 0; cd mathimg; latex -interaction=nonstopmode $t.tex >/dev/null 2>&1 && dvipng -q -D 144 -T tight -pp 1 $t.dvi -o $t.png >/dev/null 2>&1", $retval);
if ($retval) die("Error");
}
echo "<img src=\"mathimg/$t.png\" alt=\"$x\" style=\"vertical-align:middle\" />";
}
?>
latex と dvipng はフルパスで書かないといけないかもしれません。あとは,同じディレクトリにhttpdに対して書き込み権を与えた mathimg
というディレクトリを作っておきます。
関係ありませんが,SourceForgeにphptexというプロジェクトがあることにさきほど気づきました。私のは無関係です。私のは,以前に QA: mimeTeXもどき でもご紹介したことがあります。
Last modified: 2011-09-07 16:50:15