diff options
Diffstat (limited to 'includes/pear/Text/Wiki/Render/Latex/Table.php')
| -rw-r--r-- | includes/pear/Text/Wiki/Render/Latex/Table.php | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/includes/pear/Text/Wiki/Render/Latex/Table.php b/includes/pear/Text/Wiki/Render/Latex/Table.php new file mode 100644 index 0000000..ad7866f --- /dev/null +++ b/includes/pear/Text/Wiki/Render/Latex/Table.php @@ -0,0 +1,99 @@ +<?php + +class Text_Wiki_Render_Latex_Table extends Text_Wiki_Render { + var $cell_id = 0; + var $cell_count = 0; + var $is_spanning = false; + + var $conf = array( + 'css_table' => null, + 'css_tr' => null, + 'css_th' => null, + 'css_td' => null + ); + + /** + * + * Renders a token into text matching the requested format. + * + * @access public + * + * @param array $options The "options" portion of the token (second + * element). + * + * @return string The text rendered from the token options. + * + */ + + function token($options) + { + // make nice variable names (type, attr, span) + extract($options); + + switch ($type) + { + case 'table_start': + $this->cell_count = $cols; + + $tbl_start = '\begin{tabular}{|'; + for ($a=0; $a < $this->cell_count; $a++) { + $tbl_start .= 'l|'; + } + $tbl_start .= "}\n"; + + return $tbl_start; + + case 'table_end': + return "\\hline\n\\end{tabular}\n"; + + case 'caption_start': + return "\\caption{"; + + case 'caption_end': + return "}\n"; + + case 'row_start': + $this->is_spanning = false; + $this->cell_id = 0; + return "\\hline\n"; + + case 'row_end': + return "\\\\\n"; + + case 'cell_start': + if ($span > 1) { + $col_spec = ''; + if ($this->cell_id == 0) { + $col_spec = '|'; + } + $col_spec .= 'l|'; + + $this->cell_id += $span; + $this->is_spanning = true; + + return '\multicolumn{' . $span . '}{' . $col_spec . '}{'; + } + + $this->cell_id += 1; + return ''; + + case 'cell_end': + $out = ''; + if ($this->is_spanning) { + $this->is_spanning = false; + $out = '}'; + } + + if ($this->cell_id != $this->cell_count) { + $out .= ' & '; + } + + return $out; + + default: + return ''; + + } + } +} +?> |
