def __init__(self, other=None, file_handle=None, file_name=None): if not other: self._text = r"\documentclass{article}" + "\n" self._text += "\n" self._text += r"\usepackage{graphicx}" + "\n" self._text += "\n" self._text += r"\usepackage[margin=0.5in]{geometry}" + "\n" self._text += "\n" self._text += "\usepackage{fancyhdr}" + "\n" self._text += "\n" self._text += "\pagestyle{fancy}" + "\n" self._text += "\n" self._text += "\lhead{\\today}" + "\n" self._text += "\n" self._text += r"\begin{document}" self._text += "\n" self.file_handle = file_handle self.items = [] if not file_name: if file_handle: self.file_handle.write(self._text) else: handle = open(file_name, "r") in_table = False for line in handle.readlines(): if line.startswith(r"\begin{table}"): t = Table() in_table = True elif in_table: if "&" in line: elts = map(str.strip, line.split("&")) if elts[-1].endswith(r" \\ \hline"): elts[-1] = elts[-1][0 : -len(r" \\ \hline")] sys.stderr.write("elts stripped: " + str(elts)) # If we are on the column labels line if not t.has_column_labels(): t.column_labels = [elt.replace("\\", "") for elt in elts] # A regular row else: t.add_row(elts[1:], elts[0].replace("\\", "")) if line.startswith(r"\end{table}"): in_table = False self.add_item(t) handle.close() else: self._text = other.text self.items = copy.deepcopy(other.items)