##// END OF EJS Templates
Embed LaTeX output from pyout into equation* environment
Embed LaTeX output from pyout into equation* environment

File last commit:

r8766:0f9a80e1 merge
r8783:cd446cd3
Show More
rst.py
73 lines | 2.4 KiB | text/x-python | PythonLexer
from converters.base import Converter
from converters.utils import markdown2rst, rst_directive, remove_ansi
from IPython.utils.text import indent
class ConverterRST(Converter):
extension = 'rst'
heading_level = {1: '=', 2: '-', 3: '`', 4: '\'', 5: '.', 6: '~'}
def render_heading(self, cell):
marker = self.heading_level[cell.level]
return ['{0}\n{1}\n'.format(cell.source, marker * len(cell.source))]
def render_code(self, cell):
# Note: cell has type 'IPython.nbformat.v3.nbbase.NotebookNode'
if not cell.input:
return []
lines = ['In[%s]:' % self._get_prompt_number(cell), '']
lines.extend(rst_directive('.. code:: python', cell.input))
for output in cell.outputs:
conv_fn = self.dispatch(output.output_type)
lines.extend(conv_fn(output))
return lines
def render_markdown(self, cell):
#return [cell.source]
return [markdown2rst(cell.source)]
def render_raw(self, cell):
if self.raw_as_verbatim:
return ['::', '', indent(cell.source), '']
else:
return [cell.source]
def render_pyout(self, output):
lines = ['Out[%s]:' % self._get_prompt_number(output), '']
# output is a dictionary like object with type as a key
if 'latex' in output:
lines.extend(rst_directive('.. math::', output.latex))
if 'text' in output:
lines.extend(rst_directive('.. parsed-literal::', output.text))
return lines
def render_pyerr(self, output):
# Note: a traceback is a *list* of frames.
return ['::', '', indent(remove_ansi('\n'.join(output.traceback))), '']
def _img_lines(self, img_file):
return ['.. image:: %s' % img_file, '']
def render_display_format_text(self, output):
return rst_directive('.. parsed-literal::', output.text)
def _unknown_lines(self, data):
return rst_directive('.. warning:: Unknown cell') + [data]
def render_display_format_html(self, output):
return rst_directive('.. raw:: html', output.html)
def render_display_format_latex(self, output):
return rst_directive('.. math::', output.latex)
def render_display_format_json(self, output):
return rst_directive('.. raw:: json', output.json)
def render_display_format_javascript(self, output):
return rst_directive('.. raw:: javascript', output.javascript)