)((.|\n)*?)(<\/div>)/', array($this,'escape_verbatim'), $html);
$html = preg_replace_callback('/(
)([^<]*)(<\/pre>)/', array($this,'escape_verbatim'), $html);
//
@@ -154,8 +160,8 @@ class Page2Tex
'\href{http://www.pradosoft.com/docs/manual/$1/$2.html}{$1.$2 API Reference}', $html);
//text modifiers
- $html = preg_replace('/([^<]*)<\/b>/', '\textbf{$1}', $html);
- $html = preg_replace('/([^<]*)<\/i>/', '\emph{$1}', $html);
+ $html = preg_replace('/]*>([^<]*)<\/b>/', '\textbf{$1}', $html);
+ $html = preg_replace('/]*>([^<]*)<\/i>/', '\emph{$1}', $html);
$html = preg_replace_callback('/([^<]*)<\/tt>/', array($this,'texttt'), $html);
//links
@@ -171,11 +177,11 @@ class Page2Tex
$html = preg_replace('/<\/dl>/', '\end{description}', $html);
//item lists
- $html = preg_replace('//', '\begin{itemize}', $html);
+ $html = preg_replace('/]*>/', '\begin{itemize}', $html);
$html = preg_replace('/<\/ul>/', '\end{itemize}', $html);
- $html = preg_replace('//', '\begin{enumerate}', $html);
+ $html = preg_replace('/]*>/', '\begin{enumerate}', $html);
$html = preg_replace('/<\/ol>/', '\end{enumerate}', $html);
- $html = preg_replace('/- /', '\item ', $html);
+ $html = preg_replace('/
- ]*>/', '\item ', $html);
$html = preg_replace('/<\/li>/', '', $html);
//headings
@@ -183,14 +189,62 @@ class Page2Tex
$html = preg_replace('/
([^<]+)<\/h2>/', '\subsection{$2}', $html);
$html = preg_replace('/([^<]+)<\/h3>/', '\subsubsection{$2}', $html);
-
+ //div box
+ $html = preg_replace_callback('/((.|\n)*?)<\/div>/',
+ array($this, 'mbox'), $html);
+
+ //tabular
+ $html = preg_replace_callback('/\s*
]*>((.|\n)*?)<\/table>/',
+ array($this, 'tabular'), $html);
$html = html_entity_decode($html);
-
return $html;
}
+ function tabular($matches)
+ {
+ $options = array();
+ foreach(explode(',', $matches[1]) as $string)
+ {
+ $sub = explode('=', trim($string));
+ $options[trim($sub[0])] = trim($sub[1]);
+ }
+
+ $widths = explode(' ',preg_replace('/\(|\)/', '', $options['width']));
+ $this->_tabular_widths = $widths;
+
+ $this->_tabular_total = count($widths);
+ $this->_tabular_col = 0;
+
+ $begin = "\begin{table}[!hpt]\centering \n \begin{tabular}{".$options['align']."}\\hline";
+ $end = "\end{tabular} \n \end{table}\n";
+ $table = preg_replace('/<\/tr>/', '\\\\\\\\ \hline', $matches[2]);
+ $table = preg_replace('//', '', $table);
+ $table = preg_replace('/([^<]+)<\/th>/', '\textbf{$1} &', $table);
+ $table = preg_replace_callback('/ | ((.|\n)*?)<\/td>/', array($this, 'table_column'), $table);
+ $table = preg_replace('/ /', ' \\\\\\\\', $table);
+
+ $table = preg_replace('/&\s*\\\\\\\\/', '\\\\\\\\', $table);
+ return $begin.$table.$end;
+ }
+
+ function table_column($matches)
+ {
+ $width = $this->_tabular_widths[$this->_tabular_col];
+ if($this->_tabular_col >= $this->_tabular_total-1)
+ $this->_tabular_col = 0;
+ else
+ $this->_tabular_col++;
+ return '\begin{minipage}{'.$width.'\textwidth}\vspace{3mm}'.
+ $matches[1].'\vspace{3mm}\end{minipage} & ';
+ }
+
+ function mbox($matches)
+ {
+ return "\n\begin{mybox}\n".$matches[1]."\n\end{mybox}\n";
+ }
+
function get_chapter_label($chapter)
{
return '\hypertarget{'.str_replace(' ', '', $chapter).'}{}';
--
cgit v1.2.3
|