pv avatar pv committed 2b0cbca

sphinx.ext.pngmath: make Latex errors non-fatal for HTML output

Comments (0)

Files changed (1)

sphinx/ext/pngmath.py

     except Exception:
         pass
 
+def _html_error(latex, message):
+    html = """
+<div class="system-message">
+  <p class="system-message-title">System Message: WARNING/2</p>
+  <p>Latex error in a math directive</p>
+  <pre class="literal-block">
+  %s
+  </pre>
+  <pre class="literal-block">
+  %s
+  </pre>
+  </p>
+</div>
+""" % (latex, message)
+    print "WARNING:", message
+    return html
+
 def html_visit_math(self, node):
-    fname, depth = render_math(self, '$'+node['latex']+'$')
+    try:
+        fname, depth = render_math(self, '$'+node['latex']+'$')
+    except MathExtError, exc:
+        self.body.append(_html_error(node['latex'], 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 ''))
         latex = node['latex']
     else:
         latex = wrap_displaymath(node['latex'], None)
-    fname, depth = render_math(self, latex)
+    try:
+        fname, depth = render_math(self, latex)
+    except MathExtError, exc:
+        self.body.append(_html_error(node['latex'], exc))
+        raise nodes.SkipNode
     self.body.append(self.starttag(node, 'div', CLASS='math'))
     self.body.append('<p>')
     if node['number']:
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.