(L) [2008/09/11] [greenhybrid] [Testing latex] Wayback!>> tbp wrote:PS: sadly installing LaTeX on this host wasn't an option.
if it ever will be an option, I have coded an ugly hack in use on my sites. It is unsafe yet (no input check), but maybe forms a simple base. the function mkdir_p() is nothing but an emulation of mkdir -p.
pre-edit: meh, php extension not allowed, here is the code:
Code: [LINK # Select all]<?php
function genMathImg ($math, $standalone=true) {
$LaTeX =
'\documentclass[fleqn]{article}
\usepackage{amssymb,amsmath,bm}
\usepackage[latin1]{inputenc}
\begin{document}
\thispagestyle{empty}
\mathindent0cm
\parindent0cm
\begin{displaymath}
'.$math.'
\end{displaymath}
\end{document}
';
// Write temporary LaTeX file.
mkdir_p (GEN_MATH_FOLDER."/tmp");
$tmp_filename = GEN_MATH_FOLDER."/tmp/".md5 ($math); // Filename w/out type-postfix.
//$destFilename = "gen-math/".urlencode ($math).".png";
$destFilename = GEN_MATH_FOLDER."/".md5 ($math);
file_put_contents ($tmp_filename.".tex", $LaTeX);
// Run LaTeX and dvipng.
$command = "pushd ".dirname ($tmp_filename)."; pwd; "
."latex ".basename ($tmp_filename).".tex ; "
."popd; "
."dvipng --strict -D 130 -T tight -fg 'rgb 0.0 0.0 0.0' -bg 'rgb 1.0 1.0 1.0' -o {$destFilename}.png {$tmp_filename}.dvi; "
//."dvipng --strict -D 130 -T tight -fg 'rgb 1.0 1.0 1.0' -bg 'transparent' -o {$destFilename}.png {$tmp_filename}.dvi; "
."dvipng --strict -D 320 -T tight -o {$destFilename}.big.png {$tmp_filename}.dvi; "
;
$buffer = array ();
exec ($command, $buffer, $ret);
$buffer = implode ("\n", $buffer);
// Check if there was an error on the shell.
if (0 != $ret) {
echo "<span style=\"color: #0F0FFF;\"><strong>warning:</strong> Failed to generate a png-file from formula '$math', the return value of 'latex .. && dvipng ..' is '$ret':<br><hr>";
echo "$buffer<br>";
echo "<hr></span><br />";
return '<p style="text-align: center">'.$math.'</p>';
}
// Set permissions.
if(!@chmod ($destFilename.".png", 0644)) {
echo "<span style=\"color: #0000FF;\"><strong>warning:</strong> setting permission for file '$destFilename.png' failed. Run 'chmod 0644 $destFilename.png'.</span><br />";
}
if(!@chmod ($destFilename.".big.png", 0644)) {
echo "<span style=\"color: #0000FF;\"><strong>warning:</strong> setting permission for file '$destFilename.big.png' failed. Run 'chmod 0644 $destFilename.big.png'.</span><br />";
}
// Cleanup.
rm_r (GEN_MATH_FOLDER."/tmp");
rmdir (GEN_MATH_FOLDER."/tmp");
// Prepare returned markup.
$href = '<a href="'.SITE_FQN.$destFilename.'.big.png"><img style="vertical-align: bottom;" class="naked" src="'.SITE_FQN.$destFilename.'.png" alt="'.$math.'"></a>';
return
$standalone
? ( '<p style="text-align: center;">' . $href .'<p>' )
: ( '<span style="vertical-align: center; text-align: center;">' . $href . '</span>' )
;
}
?>