$val) { $this->$key = $val; } $this->fragment = $latex; } /** * @param string Return type 'md5', ('file') * @return file Path to the generated png file. */ public function render($return='file') { $cmd = sprintf('%s %s %s %s %s', $this->texvc_path, // texvc binary escapeshellarg($this->tmp_dir), escapeshellarg($this->output_dir), escapeshellarg($this->fragment), escapeshellarg($this->encoding)); $out = exec($cmd); if (strlen($out) == 0) { throw new Exception('Unknown error in the LaTeX rendering.'); } $code = substr($out, 0, 1); if (false !== strpos('SEF-', $code)) { $error = ''; switch ($code) { case 'S': $error = 'syntax error'; break; case 'E': $error = 'lexing error'; break; case '-': $error = 'other error'; break; case 'F': $error = 'unknown function: '.substr($out, 1); break; } throw new Exception('Error in the LaTeX rendering: '.$error); } $md5 = md5($this->fragment); if (!file_exists($this->output_dir.'/'.$md5.'.png')) { throw new Exception(sprintf('Error: Output file not written (%s).', $md5.'.png')); } if ($return == 'file') { return $this->output_dir.'/'.$md5.'.png'; } return $md5; } }