def make_dvi(self, tex, fontsize): """ Generate a dvi file containing latex's layout of tex string. Return the file name. """ if rcParams['text.latex.preview']: return self.make_dvi_preview(tex, fontsize) basefile = self.get_basefile(tex, fontsize) dvifile = '%s.dvi' % basefile if not os.path.exists(dvifile): texfile = self.make_tex(tex, fontsize) with Locked(self.texcache): self._run_checked_subprocess([ "latex", "-interaction=nonstopmode", "--halt-on-error", texfile ], tex) for fname in glob.glob(basefile + '*'): if not fname.endswith(('dvi', 'tex')): try: os.remove(fname) except OSError: pass return dvifile
def make_dvi(self, tex, fontsize): """ generates a dvi file containing latex's layout of tex string returns the file name """ if rcParams['text.latex.preview']: return self.make_dvi_preview(tex, fontsize) basefile = self.get_basefile(tex, fontsize) dvifile = '%s.dvi' % basefile if DEBUG or not os.path.exists(dvifile): texfile = self.make_tex(tex, fontsize) outfile = basefile + '.output' command = self._get_shell_cmd( 'cd "%s"' % self.texcache, 'latex -interaction=nonstopmode %s > "%s"' % (os.path.split(texfile)[-1], outfile)) mpl.verbose.report(command, 'debug') with Locked(self.texcache): exit_status = os.system(command) try: with open(outfile) as fh: report = fh.read() except IOError: report = 'No latex error report available.' try: os.stat(dvifile) exists = True except OSError: exists = False if exit_status or not exists: raise RuntimeError( ('LaTeX was not able to process the following ' 'string:\n%s\nHere is the full report generated by ' 'LaTeX: \n\n' % repr(tex.encode('unicode_escape')) + report)) else: mpl.verbose.report(report, 'debug') for fname in glob.glob(basefile + '*'): if fname.endswith('dvi'): pass elif fname.endswith('tex'): pass else: try: os.remove(fname) except OSError: pass return dvifile
def make_dvi(self, tex, fontsize): """ generates a dvi file containing latex's layout of tex string returns the file name """ if rcParams['text.latex.preview']: return self.make_dvi_preview(tex, fontsize) basefile = self.get_basefile(tex, fontsize) dvifile = '%s.dvi' % basefile if DEBUG or not os.path.exists(dvifile): texfile = self.make_tex(tex, fontsize) command = [ str("latex"), "-interaction=nonstopmode", os.path.basename(texfile) ] mpl.verbose.report(command, 'debug') with Locked(self.texcache): try: report = subprocess.check_output(command, cwd=self.texcache, stderr=subprocess.STDOUT) except subprocess.CalledProcessError as exc: raise RuntimeError( ('LaTeX was not able to process the following ' 'string:\n%s\n\n' 'Here is the full report generated by LaTeX:\n%s ' '\n\n' % (repr(tex.encode('unicode_escape')), exc.output.decode("utf-8")))) mpl.verbose.report(report, 'debug') for fname in glob.glob(basefile + '*'): if fname.endswith('dvi'): pass elif fname.endswith('tex'): pass else: try: os.remove(fname) except OSError: pass return dvifile