$renderer
//if(method_exists($renderer, "getInfo"))
// return parent::getInfo(); /// this will grab the data from the plugin.info.txt
// Otherwise return some hardcoded data for old dokuwikis
return array(
'author' => 'Wizardry and Steamworks (original by Alexander Kraus, Michael Boyle, and Mark Lundeberg)',
'email' => 'wizardry.steamworks@outlook.com',
'date' => '???',
'name' => 'LaTeX plugin',
'desc' => 'LaTeX rendering plugin; requires LaTeX, dvips, ImageMagick.',
'url' => 'http://www.dokuwiki.org/plugin:latexwas'
);
}
/* common constructor -- get config settings */
//function syntax_plugin_latex_common()
function __construct()
{
global $conf;
$meddir = $conf['mediadir'] . '/' . strtr($this->getConf('latex_namespace'),':','/');
$this->_mkpath($meddir,$conf['dmode']);
$this->_mkpath($meddir.'/tmp',$conf['dmode']);
$latex = new LatexRender($meddir,
DOKU_BASE.'lib/exe/fetch.php?media='.$this->getConf('latex_namespace').':',
$meddir.'/tmp');
$latex->_latex_path = $this->getConf("latex_path");
$latex->_dvips_path = $this->getConf("dvips_path");
$latex->_convert_path = $this->getConf("convert_path").' '.$this->getConf("convert_options");
$latex->_identify_path = $this->getConf("identify_path");
$latex->_keep_tmp = false;
$latex->_image_format = $this->getConf("image_format");
$latex->_colour = $this->getConf("colour");
$latex->_xsize_limit = $this->getConf("xsize_limit");
$latex->_ysize_limit = $this->getConf("ysize_limit");
$latex->_string_length_limit = $this->getConf("string_length_limit");
$latex->_preamble = $this->getConf("preamble");
$latex->_postamble = $this->getConf("postamble");
$this->_latex = $latex;
}
function connectTo($mode) { }
function handle($match, $state, $pos, Doku_Handler $handler) {}
function getType(){return 'protected'; }
function getSort(){return 405; }
function render($mode, Doku_Renderer $renderer, $data) {
// global $conf
if($data[1] != DOKU_LEXER_UNMATCHED) return true; // ignore entry/exit states
if($mode == 'xhtml') {
////////////////////////////////////
// XHTML //
////////////////////////////////////
$url = $this->_latex->getFormulaURL($data[0]);
$this->_url = $url;
$title = $data['title'];
if(!$url){
// some kinda error.
$url = DOKU_BASE.'lib/plugins/latex/images/renderfail.png';
switch($this->_latex->_errorcode) {
case 1: $title = $this->getLang('fail1').$this->_latex->_errorextra.
$this->getLang('failmax').$this->_latex->_string_length_limit;
break;
case 2: $title = $this->getLang('fail2');
break;
case 4: $title = $this->getLang('fail4');
break;
case 5: $title = $this->getLang('fail5').$this->_latex->_errorextra.
$this->getLang('failmax').$this->_latex->_xsize_limit.'x'.$this->_latex->_ysize_limit.'px';
break;
case 6: $title = $this->getLang('fail6');
break;
case 7: $title = $this->getLang('fail7');
break;
default: $title = $this->getLang('failX');
break;
}
}
$renderer->doc .= '';
$fname = $this->_latex->_filename;
return true;
} elseif ($mode == 'metadata') {
// nothing to do in metadata mode.
return true;
} elseif ($mode == 'odt') {
////////////////////////////////////
// ODT //
////////////////////////////////////
$url = $this->_latex->getFormulaURL($data[0]);
$fname = dirname(__FILE__).'/images/renderfail.png';
if($url) {
$fname = $this->_latex->_filename;
}
$info = getimagesize($fname);
// expand images sizes 20% larger than those in renderer->_odtGetImageSize .
$width = ($info[0] * 0.03175)."cm";
$height = ($info[1] * 0.03175)."cm";
if($data['class'] == "latex_displayed")
// displayed math: 5 spaces seems to look okay.
$renderer->doc .= '';
$renderer->_odtAddImage($fname,$width,$height);
return true;
} elseif ($mode == 'latex') {
////////////////////////////////////
// LATEX //
////////////////////////////////////
if($data['class'] == "latex_displayed")
$renderer->doc .= "\n".$data[0]."\n";
else
$renderer->doc .= $data[0];
return true;
}
$renderer->doc .= htmlspecialchars($data[0]); /// unknown render mode, just fart out the latex code.
return false;
}
function _mkpath($path,$dmask=0777)
{
if(@mkdir($path,$dmask) or file_exists($path)) return true;
return ($this->_mkpath(dirname($path),$dmask) and mkdir($path,$dmask));
}
}