最終更新:2007-12-10 (月) 00:22:10 (4429d)

FrontPage

mimetex

mimetex みたいなもの

HTML ファイルを次のように用意.

<html>
<head>
<title>test</title>
</head>
<body>
<p>$3$l <img src="/webtex/?q=\prod_{i=0}^nx_i"> $O4JC1$J%5%s%W%k$G$9!#</p>
<center><img src="/webtex/?q=\displaystyle\prod_{i=0}^nx_i\cdot y_i"></center>
</body>
</html>

index.php とか適当に名前を作る. work ディレクトリの書き込み権限を ON. latex と dvipng を使っている.md5 で hash を算出し,cache ディレクトリに 画像をキャッシュする.

<?php
$res    = 140;
$pwd    = '/var/www/html/webtex/';
$work   = $pwd . "work/";
$f      = $pwd . 'tmp';
$token  = $_GET['q'];
$out    = hash("md5", $token) . '.png';
$imgdir = $pwd . "cache/";
$img    = $imgdir . $out;
$debug  = $work . "x.log";

$latex  = 'latex -no-shell-escape -interaction=nonstopmode -halt-on-error'
   . " -output-directory=$work"
   . ' "\\relax\\def\\cs{' . $token . '}\\input{' . $f . '}" >>' . $debug;

$dvipng = 'dvipng -D ' . $res . ' --t1lib -q -p 1 -l 1 -T tight ' .
    "-o $img ${work}tmp.dvi >>$debug";

if (!file_exists($img)){
    $p = popen($latex, "r");
    pclose($p);
    $p = popen($dvipng, "r");
    pclose($p);
}

if (file_exists($img)){
    $size = filesize ($img);
    header ("Content-Type: image/png");
    header ("Last-Modified: " . date("r", filectime($img)));
    header ("Content-Length: $size");
    $png = imagecreatefrompng($img);
    imagepng($png);
    imagedestroy($png);
} else {
    header ("Content-Type: image/png");
    header ("Content-Length: 0");
}

/*
echo "<pre>";
echo "pwd:\t$pwd\n";
echo "work:\t$work\n";
echo "f:\t$f\n";
echo "token:\t$token\n";
echo "out:\t$out\n";
echo "imgdir:\t$imgdir\n";
echo "debug:\t$debug\n\n";
echo "img:\t$img\n";
echo "latex: $latex\n";
echo "dvipng: $dvipng\n";
echo "</pre>";
*/

?>

LaTeX の原稿ファイル tmp.tex は次のようにするときれい.

\documentclass{article}
\usepackage{amsmath,amstext,amssymb,type1cm}
\pagestyle{empty}
\begin{document}
\begin{math}
\cs
\end{math}
\end{document}