mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
Don't call LaTeX or dvipng over and over again if it was not
found once, and use text-only latex as a substitute in that case.
This commit is contained in:
parent
92033eb477
commit
361ed69a3a
3
CHANGES
3
CHANGES
@ -1,6 +1,9 @@
|
||||
Release 0.5.2 (in development)
|
||||
==============================
|
||||
|
||||
* Don't call LaTeX or dvipng over and over again if it was not
|
||||
found once, and use text-only latex as a substitute in that case.
|
||||
|
||||
* Fix problems with footnotes in the LaTeX output.
|
||||
|
||||
* Prevent double hyphens becoming en-dashes in literal code in
|
||||
|
@ -82,6 +82,11 @@ def render_math(self, math):
|
||||
depth = read_png_depth(outfn)
|
||||
return relfn, depth
|
||||
|
||||
# if latex or dvipng has failed once, don't bother to try again
|
||||
if hasattr(self.builder, '_mathpng_warned_latex') or \
|
||||
hasattr(self.builder, '_mathpng_warned_dvipng'):
|
||||
return None, None
|
||||
|
||||
latex = DOC_HEAD + self.builder.config.pngmath_latex_preamble
|
||||
latex += (use_preview and DOC_BODY_PREVIEW or DOC_BODY) % math
|
||||
if isinstance(latex, unicode):
|
||||
@ -116,12 +121,11 @@ def render_math(self, math):
|
||||
except OSError, err:
|
||||
if err.errno != 2: # No such file or directory
|
||||
raise
|
||||
if not hasattr(self.builder, '_mathpng_warned_latex'):
|
||||
self.builder.warn('LaTeX command %r cannot be run (needed for math '
|
||||
'display), check the pngmath_latex setting' %
|
||||
self.builder.config.pngmath_latex)
|
||||
self.builder._mathpng_warned_latex = True
|
||||
return relfn, None
|
||||
self.builder.warn('LaTeX command %r cannot be run (needed for math '
|
||||
'display), check the pngmath_latex setting' %
|
||||
self.builder.config.pngmath_latex)
|
||||
self.builder._mathpng_warned_latex = True
|
||||
return None, None
|
||||
finally:
|
||||
chdir(curdir)
|
||||
|
||||
@ -145,12 +149,11 @@ def render_math(self, math):
|
||||
except OSError, err:
|
||||
if err.errno != 2: # No such file or directory
|
||||
raise
|
||||
if not hasattr(self.builder, '_mathpng_warned_dvipng'):
|
||||
self.builder.warn('dvipng command %r cannot be run (needed for math '
|
||||
'display), check the pngmath_dvipng setting' %
|
||||
self.builder.config.pngmath_dvipng)
|
||||
self.builder._mathpng_warned_dvipng = True
|
||||
return relfn, None
|
||||
self.builder.warn('dvipng command %r cannot be run (needed for math '
|
||||
'display), check the pngmath_dvipng setting' %
|
||||
self.builder.config.pngmath_dvipng)
|
||||
self.builder._mathpng_warned_dvipng = True
|
||||
return None, None
|
||||
stdout, stderr = p.communicate()
|
||||
if p.returncode != 0:
|
||||
raise MathExtError('dvipng exited with error:\n[stderr]\n%s\n[stdout]\n%s'
|
||||
@ -185,9 +188,15 @@ def html_visit_math(self, node):
|
||||
sm.walkabout(self)
|
||||
self.builder.warn('display latex %r: ' % node['latex'] + str(exc))
|
||||
raise nodes.SkipNode
|
||||
self.body.append('<img class="math" src="%s" alt="%s" %s/>' %
|
||||
(fname, self.encode(node['latex']).strip(),
|
||||
depth and 'style="vertical-align: %dpx" ' % (-depth) or ''))
|
||||
if fname is None:
|
||||
# something failed -- use text-only as a bad substitute
|
||||
self.body.append('<span class="math">%s</span>' %
|
||||
self.encode(node['latex']).strip())
|
||||
else:
|
||||
self.body.append(
|
||||
'<img class="math" src="%s" alt="%s" %s/>' %
|
||||
(fname, self.encode(node['latex']).strip(),
|
||||
depth and 'style="vertical-align: %dpx" ' % (-depth) or ''))
|
||||
raise nodes.SkipNode
|
||||
|
||||
def html_visit_displaymath(self, node):
|
||||
@ -207,8 +216,13 @@ def html_visit_displaymath(self, node):
|
||||
self.body.append('<p>')
|
||||
if node['number']:
|
||||
self.body.append('<span class="eqno">(%s)</span>' % node['number'])
|
||||
self.body.append('<img src="%s" alt="%s" />\n</div>' %
|
||||
(fname, self.encode(node['latex']).strip()))
|
||||
if fname is None:
|
||||
# something failed -- use text-only as a bad substitute
|
||||
self.body.append('<span class="math">%s</span>' %
|
||||
self.encode(node['latex']).strip())
|
||||
else:
|
||||
self.body.append('<img src="%s" alt="%s" />\n</div>' %
|
||||
(fname, self.encode(node['latex']).strip()))
|
||||
self.body.append('</p>')
|
||||
raise nodes.SkipNode
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user