[avm] fix decode error in latex errors. Fixes #4744

This commit is contained in:
Yann Leboulanger 2009-08-27 19:23:19 +02:00
parent 982db9636c
commit 91018930ee
1 changed files with 15 additions and 19 deletions

View File

@ -98,6 +98,18 @@ def check_for_latex_support():
except LatexError: except LatexError:
return False return False
def try_run(argv):
try:
p = popen_nt_friendly(argv)
out = p.communicate()[0]
log.info(out)
return p.wait()
except Exception, e:
return _('Error executing "%(command)s": %(error)s') % {
'command': " ".join(argv),
'error': helpers.decode_string(e.message)}
def latex_to_image(str_): def latex_to_image(str_):
result = None result = None
exitcode = 0 exitcode = 0
@ -113,31 +125,15 @@ def latex_to_image(str_):
write_latex(os.path.join(tmpfile + '.tex'), str_) write_latex(os.path.join(tmpfile + '.tex'), str_)
# convert TeX to dvi # convert TeX to dvi
try: exitcode = try_run(['latex', '--interaction=nonstopmode',
p = popen_nt_friendly(['latex', '--interaction=nonstopmode', tmpfile + '.tex'])
tmpfile + '.tex'])
out = p.communicate()[0]
log.info(out)
exitcode = p.wait()
except Exception, e:
exitcode = _('Error executing "%(command)s": %(error)s') % {
'command': 'latex --interaction=nonstopmode %s.tex' % tmpfile,
'error': helpers.decode_string(e.message)}
if exitcode == 0: if exitcode == 0:
# convert dvi to png # convert dvi to png
latex_png_dpi = gajim.config.get('latex_png_dpi') latex_png_dpi = gajim.config.get('latex_png_dpi')
try: exitcode = try_run(['dvipng', '-bg', 'rgb 1.0 1.0 1.0', '-T',
p = popen_nt_friendly(['dvipng', '-bg', 'rgb 1.0 1.0 1.0', '-T',
'tight', '-D', latex_png_dpi, tmpfile + '.dvi', '-o', 'tight', '-D', latex_png_dpi, tmpfile + '.dvi', '-o',
tmpfile + '.png']) tmpfile + '.png'])
out = p.communicate()[0]
log.info(out)
exitcode = p.wait()
except Exception, e:
exitcode = _('Error executing "%(command)s": %(error)s') % {
'command': 'dvipng -bg rgb 1.0 1.0 1.0 -T tight -D %s %s.dvi -o '
'%s.png' % (latex_png_dpi, tmpfile, tmpfile), 'error': str(e)}
# remove temp files created by us and TeX # remove temp files created by us and TeX
extensions = ['.tex', '.log', '.aux', '.dvi'] extensions = ['.tex', '.log', '.aux', '.dvi']