##// END OF EJS Templates
Catch errors after our then()s, instead of in parallel with them (this missing exceptions)...
Catch errors after our then()s, instead of in parallel with them (this missing exceptions) When an error is thrown in a then() success handler, it doesn't call the same then()'s error handler. I also made all of the utils.reject handlers verbose to aid in debugging.

File last commit:

r18589:135227ac
r19080:cbc9dc59
Show More
latex.py
96 lines | 3.5 KiB | text/x-python | PythonLexer
"""LaTeX Exporter class"""
#-----------------------------------------------------------------------------
# Copyright (c) 2013, the IPython Development Team.
#
# Distributed under the terms of the Modified BSD License.
#
# The full license is in the file COPYING.txt, distributed with this software.
#-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
# Imports
#-----------------------------------------------------------------------------
# Stdlib imports
import os
# IPython imports
from IPython.utils.traitlets import Unicode
from IPython.config import Config
from IPython.nbconvert.filters.highlight import Highlight2Latex
from .templateexporter import TemplateExporter
#-----------------------------------------------------------------------------
# Classes and functions
#-----------------------------------------------------------------------------
class LatexExporter(TemplateExporter):
"""
Exports to a Latex template. Inherit from this class if your template is
LaTeX based and you need custom tranformers/filters. Inherit from it if
you are writing your own HTML template and need custom tranformers/filters.
If you don't need custom tranformers/filters, just change the
'template_file' config option. Place your template in the special "/latex"
subfolder of the "../templates" folder.
"""
def _file_extension_default(self):
return 'tex'
def _template_file_default(self):
return 'article'
#Latex constants
def _default_template_path_default(self):
return os.path.join("..", "templates", "latex")
def _template_skeleton_path_default(self):
return os.path.join("..", "templates", "latex", "skeleton")
#Special Jinja2 syntax that will not conflict when exporting latex.
jinja_comment_block_start = Unicode("((=", config=True)
jinja_comment_block_end = Unicode("=))", config=True)
jinja_variable_block_start = Unicode("(((", config=True)
jinja_variable_block_end = Unicode(")))", config=True)
jinja_logic_block_start = Unicode("((*", config=True)
jinja_logic_block_end = Unicode("*))", config=True)
#Extension that the template files use.
template_extension = Unicode(".tplx", config=True)
output_mimetype = 'text/latex'
@property
def default_config(self):
c = Config({
'NbConvertBase': {
'display_data_priority' : ['text/latex', 'application/pdf', 'image/png', 'image/jpeg', 'image/svg+xml', 'text/plain']
},
'ExtractOutputPreprocessor': {
'enabled':True
},
'SVG2PDFPreprocessor': {
'enabled':True
},
'LatexPreprocessor': {
'enabled':True
},
'SphinxPreprocessor': {
'enabled':True
},
'HighlightMagicsPreprocessor': {
'enabled':True
}
})
c.merge(super(LatexExporter,self).default_config)
return c
def from_notebook_node(self, nb, resources=None, **kw):
langinfo = nb.metadata.get('language_info', {})
lexer = langinfo.get('pygments_lexer', langinfo.get('name', None))
self.register_filter('highlight_code',
Highlight2Latex(pygments_lexer=lexer, parent=self))
return super(LatexExporter, self).from_notebook_node(nb, resources, **kw)