* * @package Text_Wiki * * @todo [http://google.com] becomes 1 with a LaTeX footnote in subscript. * This should be a normal LaTeX footnote associated with the * previous word? * * @todo parse "..." to be ``...'' * * @todo parse '...' to be `...' * * @todo move escape_latex to a static function, move escaping to the * individual .php files they are associated with * * @todo allow the user to add conf items to do things like * + A custom document header * + Custom page headings * + Include packages * + Set Title, Author, Date * + Include a title page * + Not output Document Head/Foot (maybe combinding many pages?) * */ class Text_Wiki_Render_Latex extends Text_Wiki_Render { function escape_latex ($txt) { $txt = str_replace("\\", "\\\\", $txt); $txt = str_replace('#', '\#', $txt); $txt = str_replace('$', '\$', $txt); $txt = str_replace('%', '\%', $txt); $txt = str_replace('^', '\^', $txt); $txt = str_replace('&', '\&', $txt); $txt = str_replace('_', '\_', $txt); $txt = str_replace('{', '\{', $txt); $txt = str_replace('}', '\}', $txt); $txt = str_replace('<', '\textless{}', $txt); $txt = str_replace('>', '\textgreater{}', $txt); // Typeset things a bit prettier than normas $txt = str_replace('~', '$\sim$', $txt); $txt = str_replace('...', '\ldots', $txt); return $txt; } function escape($tok, $ele) { if (isset($tok[$ele])) { $tok[$ele] = $this->escape_latex($tok[$ele]); } return $tok; } function pre() { foreach ($this->wiki->tokens as $k => $tok) { if ($tok[0] == 'Code' || $tok[0] == 'Phplookup') { continue; } $tok[1] = $this->escape($tok[1], 'text'); $tok[1] = $this->escape($tok[1], 'page'); $tok[1] = $this->escape($tok[1], 'href'); $this->wiki->tokens[$k] = $tok; } $this->wiki->source = $this->escape_latex($this->wiki->source); return ''; } function post() { return ''; } }