File modules/wikiparser/renderer/LatexRenderer.class.php

Last commit: Sun Nov 1 03:08:55 2020 +0100	Jan Dankert	Replaced the calls to "Configuration::rawConfig()" with the OO style calls; Cleanup LoginAction.
1 <?php 2 3 namespace wikiparser\renderer; 4 use util\Text; 5 6 /** 7 * Renderer fuer das LaTex-Format. 8 * 9 * Diese Klasse erzeugt aus dem internen DOM-Baum ein LaTex-Dokument. 10 * 11 * @author Jan Dankert, $Author$ 12 * @version $Revision$ 13 * @package openrat.text 14 */ 15 class LatexRenderer 16 { 17 var $linkedObjectIds = array(); 18 19 /** 20 * Rendert ein Dokument-Element. 21 * 22 * @param Object $child Element 23 * @return String 24 */ 25 function renderElement($child) 26 { 27 $val = ''; 28 $before = ''; 29 $after = ''; 30 31 switch (strtolower(get_class($child))) { 32 case 'tableofcontentelement': 33 $before = '\tableofcontents' . "\n"; 34 break; 35 36 case 'rawelement': 37 $tag = ''; 38 $val = $child->src; 39 40 break; 41 42 case 'textelement': 43 $val = $child->text; 44 //$val = Text::encodeHtml( $val ); 45 $val = Text::replaceHtmlChars($val); 46 break; 47 48 case 'footnoteelement': 49 $before = '\footnote{'; 50 $after = '}'; 51 break; 52 53 case 'codeelement': 54 55 break; 56 57 case 'quoteelement': 58 break; 59 60 61 case 'paragraphelement': 62 $before = "\n"; 63 break; 64 65 case 'speechelement': 66 67 break; 68 69 case 'linebreakelement': 70 $after = '\\'; 71 break; 72 73 case 'linkelement': 74 // Ggf. Hyperref-Paket verwenden. 75 break; 76 77 case 'imageelement': 78 break; 79 80 case 'strongelement': 81 $before = '\textbf{'; 82 $after = '}'; 83 break; 84 85 case 'emphaticelement': 86 $before = '\textit{'; 87 $after = '}'; 88 break; 89 90 case 'insertedelement': 91 $before = ''; 92 $after = ''; 93 break; 94 95 case 'removedelement': 96 $before = ''; 97 $after = ''; 98 break; 99 100 case 'headlineelement': 101 102 switch ($child->level) { 103 case 1: 104 $before = '\section'; 105 break; 106 case 2: 107 $before = '\subsection'; 108 break; 109 case 3: 110 default: 111 $before = '\subsubsection'; 112 break; 113 } 114 $before .= '{'; 115 $after = '}'; 116 break; 117 118 case 'tableelement': 119 $before = '\begin{tabular}' . "\n"; 120 $after = '\end{tabular}' . "\n"; 121 break; 122 123 case 'tablelineelement': 124 $before = ''; 125 $after = '\\'; 126 break; 127 128 case 'definitionlistelement': 129 break; 130 131 case 'definitionitemelement': 132 break; 133 134 case 'macroelement': 135 break; 136 137 case 'tablecellelement': 138 $before = ''; 139 $after = ' & '; 140 break; 141 142 case 'listelement': 143 $before = '\begin{itemize}' . "\n"; 144 $after = '\end{itemize}' . "\n"; 145 break; 146 147 case 'teletypeelement': 148 $before = '\texttt{'; 149 $after = '}'; 150 break; 151 152 case 'numberedlistelement': 153 $before = '\begin{itemize}' . "\n"; 154 $after = '\end{itemize}' . "\n"; 155 break; 156 157 case 'listentryelement': 158 $before = '\item '; 159 break; 160 161 default: 162 163 $tag = 'unknown-element'; 164 $attr['class'] = strtolower(get_class($child)); 165 break; 166 } 167 168 $val .= $before; 169 foreach ($child->children as $c) { 170 $val .= $this->renderElement($c); 171 } 172 $val .= $after; 173 174 return $val; 175 } 176 177 178 /** 179 * Rendering des Dokumentes.<br> 180 * 181 * @return String 182 */ 183 function render() 184 { 185 $this->renderedText = ''; 186 $this->renderedText .= '\documentclass{article}' . "\n"; 187 $this->renderedText .= '\begin{document}' . "\n"; 188 189 foreach ($this->children as $child) 190 $this->renderedText .= $this->renderElement($child); 191 192 $this->renderedText .= '\end{document}' . "\n"; 193 194 return $this->renderedText; 195 } 196 } 197 198 ?>
Download modules/wikiparser/renderer/LatexRenderer.class.php
History Sun, 1 Nov 2020 03:08:55 +0100 Jan Dankert Replaced the calls to "Configuration::rawConfig()" with the OO style calls; Cleanup LoginAction. Sat, 26 Sep 2020 10:32:02 +0200 Jan Dankert Refactoring: No global $conf array any more. Sat, 22 Feb 2020 23:58:02 +0100 Jan Dankert Refactoring: Namespacing for module 'util'. Sat, 22 Feb 2020 22:45:05 +0100 Jan Dankert Refactoring: Enable Autoloading, Fix namespace structure. Sat, 16 Dec 2017 23:41:50 +0100 Jan Dankert Der Wikiparser als eigenes Modul (ehem. 'textclasses').