cf4e7548a8
It seems some TeX installs use a convert utility that renders poor quality images when using the GIF format, but render good ones when using PNG. If all the needed tools are available, let the admin choose the preferred output format. Merged from MOODLE_19_STABLE
77 lines
2.9 KiB
PHP
77 lines
2.9 KiB
PHP
<?PHP
|
|
// This function fetches math. images from the data directory
|
|
// If not, it obtains the corresponding TeX expression from the cache_tex db table
|
|
// and uses mimeTeX to create the image file
|
|
|
|
// disable moodle specific debug messages and any errors in output
|
|
define('NO_DEBUG_DISPLAY', true);
|
|
define('NO_MOODLE_COOKIES', true); // Because it interferes with caching
|
|
|
|
require_once('../../config.php');
|
|
|
|
if (!filter_is_enabled('filter/tex')) {
|
|
print_error('filternotenabled');
|
|
}
|
|
|
|
require_once($CFG->libdir.'/filelib.php');
|
|
require_once($CFG->dirroot.'/filter/tex/lib.php');
|
|
require_once($CFG->dirroot.'/filter/tex/latex.php');
|
|
|
|
$cmd = ''; // Initialise these variables
|
|
$status = '';
|
|
|
|
$relativepath = get_file_argument();
|
|
|
|
$args = explode('/', trim($relativepath, '/'));
|
|
|
|
if (count($args) == 1) {
|
|
$image = $args[0];
|
|
$pathname = $CFG->dataroot.'/filter/tex/'.$image;
|
|
} else {
|
|
print_error('invalidarguments', 'error');
|
|
}
|
|
|
|
if (!file_exists($pathname)) {
|
|
$md5 = str_replace(".{$CFG->filter_tex_convertformat}",'',$image);
|
|
if ($texcache = $DB->get_record('cache_filters', array('filter'=>'tex', 'md5key'=>$md5))) {
|
|
if (!file_exists($CFG->dataroot.'/filter/tex')) {
|
|
make_upload_directory('filter/tex');
|
|
}
|
|
|
|
// try and render with latex first
|
|
$latex = new latex();
|
|
$density = $CFG->filter_tex_density;
|
|
$background = $CFG->filter_tex_latexbackground;
|
|
$texexp = html_entity_decode($texcache->rawtext);
|
|
$latex_path = $latex->render($texexp, $md5, 12, $density, $background);
|
|
if ($latex_path) {
|
|
copy($latex_path, $pathname);
|
|
$latex->clean_up($md5);
|
|
|
|
} else {
|
|
// failing that, use mimetex
|
|
$texexp = $texcache->rawtext;
|
|
$texexp = str_replace('<', '<', $texexp);
|
|
$texexp = str_replace('>', '>', $texexp);
|
|
$texexp = preg_replace('!\r\n?!', ' ', $texexp);
|
|
$texexp = '\Large '.$texexp;
|
|
$cmd = tex_filter_get_cmd($pathname, $texexp);
|
|
system($cmd, $status);
|
|
}
|
|
}
|
|
}
|
|
|
|
if (file_exists($pathname)) {
|
|
send_file($pathname, $image);
|
|
} else {
|
|
if (debugging()) {
|
|
echo "The shell command<br />$cmd<br />returned status = $status<br />\n";
|
|
echo "Image not found!<br />";
|
|
echo "Please try the <a href=\"$CFG->wwwroot/filter/tex/texdebug.php\">debugging script</a>";
|
|
} else {
|
|
echo "Image not found!<br />";
|
|
echo "Please try the <a href=\"$CFG->wwwroot/filter/tex/texdebug.php\">debugging script</a><br />";
|
|
echo "Please turn on debug mode in site configuration to see more info here.";
|
|
}
|
|
}
|