def regenerate(self, filename): (baseFilename, extension) = splitext(filename) if extension.lower() == '.py': pdfFilename = baseFilename + '.pdf' documentModule = load_source('documentModule', filename) for k in documentModule.__dict__.keys(): document = documentModule.__dict__[k] # the convention for Texifiable .py modules if isinstance(document, JinjaTexDocument): (errors, warnings, pdfFilename) = document.generate(pdfFilename) # eventually calls regenerateFromTexFile() break # only generate the first document we find elif extension.lower() == '.tex': (errors, warnings, pdfFilename) = generatePdf(filename, self.system, glossary=self.arguments['glossary'], preserveLogFile=self.arguments['log']) else: self.out.put('ERROR: You can only Texify something ending in .tex or .py!') exit(-1) if errors or warnings: self.indentMessages("ERRORS", errors) self.indentMessages("WARNINGS", warnings) else: sleep(1) # wait for pdf to be written self.out.put('starting "evince %s"' % pdfFilename) p = self.system.startCommandProcess(['evince', pdfFilename]) if self.evinceProcess == None: self.evinceProcess = p
def generate(self, outputFilenameBase, system, variables={}): # apply the template if it hasn't been applied already # (this will be the case if no custom clauses have been added) self.applyTemplateContentIfNecessary() errors = self.validate() if errors: return (errors, [], None) # errors, warnings, filename extension = outputFilenameBase[-4:].lower() if extension == ".tex" or extension == ".pdf": outputFilenameBase = outputFilenameBase[0:-4] classFilename = outputFilenameBase + ".cls" classFile = codecs.open(classFilename, "w", "utf-8") today = datetime.date.today() classFile.write( """ \\NeedsTeXFormat{LaTeX2e}[1999/09/01] \\ProvidesClass{%s}[%4d/%2d/%2d J Luke Scott, Copyright (C) %4d] """ % (outputFilenameBase, today.year, today.month, today.day, today.year) ) output = self.classTemplate.render(variables) classFile.write(output) classFile.close() texFilename = outputFilenameBase + ".tex" texFile = codecs.open(texFilename, "w", "utf-8") texFile.write( """ \\documentclass{%s} """ % (outputFilenameBase) ) output = self.texTemplate.render(variables) texFile.write(output) texFile.close() return generatePdf(texFilename=texFilename, system=system)