function TexOutput($expression, $graphic=false) { global $CFG; $output = ''; $latex = new latex(); // first check if it is likely to work at all $output .= "<h3>Checking executables</h3>\n"; $executables_exist = true; if (is_file($CFG->filter_tex_pathlatex)) { $output .= "latex executable ($CFG->filter_tex_pathlatex) is readable<br />\n"; } else { $executables_exist = false; $output .= "<b>Error:</b> latex executable ($CFG->filter_tex_pathlatex) is not readable<br />\n"; } if (is_file($CFG->filter_tex_pathdvips)) { $output .= "dvips executable ($CFG->filter_tex_pathdvips) is readable<br />\n"; } else { $executables_exist = false; $output .= "<b>Error:</b> dvips executable ($CFG->filter_tex_pathdvips) is not readable<br />\n"; } if (is_file($CFG->filter_tex_pathconvert)) { $output .= "convert executable ($CFG->filter_tex_pathconvert) is readable<br />\n"; } else { $executables_exist = false; $output .= "<b>Error:</b> convert executable ($CFG->filter_tex_pathconvert) is not readable<br />\n"; } // knowing that it might work.. $md5 = md5($expression); $output .= "<p>base filename for expression is '$md5'</p>\n"; // temporary paths $tex = "$latex->temp_dir/$md5.tex"; $dvi = "$latex->temp_dir/$md5.dvi"; $ps = "$latex->temp_dir/$md5.ps"; $img = "$latex->temp_dir/$md5.{$CFG->filter_tex_convertformat}"; // put the expression as a file into the temp area $expression = html_entity_decode($expression); $output .= "<p>Processing TeX expression:</p><pre>$expression</pre>\n"; $doc = $latex->construct_latex_document($expression); $fh = fopen($tex, 'w'); fputs($fh, $doc); fclose($fh); // cd to temp dir chdir($latex->temp_dir); // step 1: latex command $cmd = "$CFG->filter_tex_pathlatex --interaction=nonstopmode $tex"; $output .= execute($cmd); // step 2: dvips command $cmd = "$CFG->filter_tex_pathdvips -E $dvi -o $ps"; $output .= execute($cmd); // step 3: convert command $cmd = "$CFG->filter_tex_pathconvert -density 240 -trim $ps $img "; $output .= execute($cmd); if (!$graphic) { echo($output); } else { send_file($img, "$md5.{$CFG->filter_tex_convertformat}"); } }
function TexOutput($expression, $graphic = false) { global $CFG; $output = ''; $latex = new latex(); // first check if it is likely to work at all $output .= "<h3>Checking executables</h3>\n"; $executables_exist = true; if (is_file($CFG->filter_tex_pathlatex)) { $output .= "latex executable ({$CFG->filter_tex_pathlatex}) is readable<br />\n"; } else { $executables_exist = false; $output .= "<b>Error:</b> latex executable ({$CFG->filter_tex_pathlatex}) is not readable<br />\n"; } if (is_file($CFG->filter_tex_pathdvips)) { $output .= "dvips executable ({$CFG->filter_tex_pathdvips}) is readable<br />\n"; } else { $executables_exist = false; $output .= "<b>Error:</b> dvips executable ({$CFG->filter_tex_pathdvips}) is not readable<br />\n"; } if (is_file($CFG->filter_tex_pathconvert)) { $output .= "convert executable ({$CFG->filter_tex_pathconvert}) is readable<br />\n"; } else { $executables_exist = false; $output .= "<b>Error:</b> convert executable ({$CFG->filter_tex_pathconvert}) is not readable<br />\n"; } // knowing that it might work.. $md5 = md5($expression); $output .= "<p>base filename for expression is '{$md5}'</p>\n"; // temporary paths $tex = "{$latex->temp_dir}/{$md5}.tex"; $dvi = "{$latex->temp_dir}/{$md5}.dvi"; $ps = "{$latex->temp_dir}/{$md5}.ps"; $img = "{$latex->temp_dir}/{$md5}.{$CFG->filter_tex_convertformat}"; // put the expression as a file into the temp area $expression = html_entity_decode($expression); $output .= "<p>Processing TeX expression:</p><pre>{$expression}</pre>\n"; $doc = $latex->construct_latex_document($expression); $fh = fopen($tex, 'w'); fputs($fh, $doc); fclose($fh); // cd to temp dir chdir($latex->temp_dir); // step 1: latex command $cmd = "{$CFG->filter_tex_pathlatex} --interaction=nonstopmode {$tex}"; $output .= execute($cmd); // step 2: dvips command $cmd = "{$CFG->filter_tex_pathdvips} -E {$dvi} -o {$ps}"; $output .= execute($cmd); // step 3: convert command $cmd = "{$CFG->filter_tex_pathconvert} -density 240 -trim {$ps} {$img} "; $output .= execute($cmd); if (!$graphic) { echo $output; } else { if (file_exists($img)) { send_file($img, "{$md5}.{$CFG->filter_tex_convertformat}"); } else { echo "Error creating image, see command execution output for more details."; } } }
function TexOutput($expression, $graphic = false) { global $CFG; $output = ''; $latex = new latex(); // first check if it is likely to work at all $output .= "<h3>Checking executables</h3>\n"; $executables_exist = true; if (is_file($CFG->filter_tex_pathlatex)) { $output .= "latex executable ({$CFG->filter_tex_pathlatex}) is readable<br />\n"; } else { $executables_exist = false; $output .= "<b>Error:</b> latex executable ({$CFG->filter_tex_pathlatex}) is not readable<br />\n"; } if (is_file($CFG->filter_tex_pathdvips)) { $output .= "dvips executable ({$CFG->filter_tex_pathdvips}) is readable<br />\n"; } else { $executables_exist = false; $output .= "<b>Error:</b> dvips executable ({$CFG->filter_tex_pathdvips}) is not readable<br />\n"; } if (is_file($CFG->filter_tex_pathconvert)) { $output .= "convert executable ({$CFG->filter_tex_pathconvert}) is readable<br />\n"; } else { $executables_exist = false; $output .= "<b>Error:</b> convert executable ({$CFG->filter_tex_pathconvert}) is not readable<br />\n"; } // knowing that it might work.. $md5 = md5($expression); $output .= "<p>base filename for expression is '{$md5}'</p>\n"; // temporary paths $tex = "{$latex->temp_dir}/{$md5}.tex"; $dvi = "{$latex->temp_dir}/{$md5}.dvi"; $ps = "{$latex->temp_dir}/{$md5}.ps"; $gif = "{$latex->temp_dir}/{$md5}.gif"; // put the expression as a file into the temp area $expression = stripslashes($expression); $expression = html_entity_decode($expression); $output .= "<p>Processing TeX expression:</p><pre>{$expression}</pre>\n"; $doc = $latex->construct_latex_document($expression); $fh = fopen($tex, 'w'); fputs($fh, $doc); fclose($fh); // cd to temp dir chdir($latex->temp_dir); // step 1: latex command $cmd = "{$CFG->filter_tex_pathlatex} --interaction=nonstopmode {$tex}"; $output .= execute($cmd); // step 2: dvips command $cmd = "{$CFG->filter_tex_pathdvips} -E {$dvi} -o {$ps}"; $output .= execute($cmd); // step 3: convert command $cmd = "{$CFG->filter_tex_pathconvert} -density 240 -trim {$ps} {$gif} "; $output .= execute($cmd); if (!$graphic) { echo $output; } else { $lastmodified = filemtime($gif); $lifetime = 86400; $filetype = 'image/gif'; $image = "{$md5}.gif"; header("Last-Modified: " . gmdate("D, d M Y H:i:s", $lastmodified) . " GMT"); header("Expires: " . gmdate("D, d M Y H:i:s", time() + $lifetime) . " GMT"); header("Cache-control: max_age = {$lifetime}"); // a day header("Pragma: "); header("Content-disposition: inline; filename={$image}"); header("Content-length: " . filesize($gif)); header("Content-type: {$filetype}"); readfile("{$gif}"); } }