+ Available customization:
+ nofootnotes: Doesn't do footnotes.
+ nothemes: Doesn't do themes.
+ defaultleading: Default leading.
+ onehalfleading: Bigger leading.
+ doubleleading: Big leading.
+ nowlfont: Uses standard TeX font instead of JUnicodeWL.
+
+ """
+
+ cover_class = None
+ tex_passes = 1
+ style = get_resource('pdf/default.sty')
+ cover = None
+
+ @property
+ def has_cover(self):
+ """ For use in XSLT. """
+ return self.cover is not None
+
+ @property
+ def customization_str(self):
+ """ For use in XSLT. """
+ return u','.join(k for k, v in self.customization.items() if v)
+
+ def get_texml(self):
+ raise NotImplementedError
+
+ def get_tex_dir(self):
+ texml = self.get_texml()
+ temp = mkdtemp('-wl2pdf')
+ # Save TeX file
+ tex_path = os.path.join(temp, 'doc.tex')
+ with open(tex_path, 'w') as fout:
+ process(StringIO(texml), fout, 'utf-8')
+ if self.save_tex:
+ shutil.copy(tex_path, self.save_tex)
+ # Copy style
+ shutil.copy(get_resource('pdf/wl.cls'), temp)
+ shutil.copy(self.style, os.path.join(temp, 'style.sty'))
+ # for sfile in ['wasysym.sty', 'uwasyvar.fd', 'uwasy.fd']:
+ # shutil.copy(get_resource(os.path.join('res/wasysym', sfile)), temp)
+
+ # Save attachments
+ if self.cover:
+ self.cover.for_pdf().dump_to(os.path.join(temp, 'makecover.sty'))
+ return temp
+
+ def get_pdf(self):
+ temp = self.get_tex_dir()
+ tex_path = os.path.join(temp, 'doc.tex')
+ try:
+ cwd = os.getcwd()
+ except OSError:
+ cwd = None