##// END OF EJS Templates
Cleanup and refactor of filters
Cleanup and refactor of filters

File last commit:

r10630:d5a4e2e2
r10676:9d4965be
Show More
latex.py
98 lines | 3.8 KiB | text/x-python | PythonLexer
#-----------------------------------------------------------------------------
# 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
# other libs/dependencies
from jinja2 import Environment, FileSystemLoader
# local import
import exporter
import nbconvert.filters.latex
import nbconvert.filters.highlight
from nbconvert.transformers.latex import LatexTransformer
#-----------------------------------------------------------------------------
# Globals and constants
#-----------------------------------------------------------------------------
#Latex Jinja2 constants
LATEX_TEMPLATE_PATH = "/../templates/latex/"
LATEX_TEMPLATE_SKELETON_PATH = "/../templates/latex/skeleton/"
#Special Jinja2 syntax that will not conflict when exporting latex.
LATEX_JINJA_COMMENT_BLOCK = ["((=", "=))"]
LATEX_JINJA_VARIABLE_BLOCK = ["(((", ")))"]
LATEX_JINJA_LOGIC_BLOCK = ["((*", "*))"]
#-----------------------------------------------------------------------------
# Classes and functions
#-----------------------------------------------------------------------------
class LatexExporter(exporter.Exporter):
#Extension that the template files use.
template_extension = ".tplx"
file_extension = Unicode(
'tex', config=True,
help="Extension of the file that should be written to disk")
template_file = Unicode(
'base', config=True,
help="Name of the template file to use")
def __init__(self, preprocessors=None, jinja_filters=None, config=None, **kw):
#Call base class constructor.
super(LatexExporter, self).__init__(preprocessors, jinja_filters, config, **kw)
self.extract_figure_transformer.display_data_priority = ['latex', 'svg', 'png', 'jpg', 'jpeg' , 'text']
self.extract_figure_transformer.extra_ext_map={'svg':'pdf'}
def _init_environment(self):
self.environment = Environment(
loader=FileSystemLoader([
os.path.dirname(os.path.realpath(__file__)) + LATEX_TEMPLATE_PATH,
os.path.dirname(os.path.realpath(__file__)) + LATEX_TEMPLATE_SKELETON_PATH,
]),
extensions=exporter.JINJA_EXTENSIONS
)
#Set special Jinja2 syntax that will not conflict with latex.
self.environment.block_start_string = LATEX_JINJA_LOGIC_BLOCK[0]
self.environment.block_end_string = LATEX_JINJA_LOGIC_BLOCK[1]
self.environment.variable_start_string = LATEX_JINJA_VARIABLE_BLOCK[0]
self.environment.variable_end_string = LATEX_JINJA_VARIABLE_BLOCK[1]
self.environment.comment_start_string = LATEX_JINJA_COMMENT_BLOCK[0]
self.environment.comment_end_string = LATEX_JINJA_COMMENT_BLOCK[1]
def _register_filters(self):
#Register the filters of the base class.
super(LatexExporter, self)._register_filters()
#Add latex filters to the Jinja2 environment
self.register_filter('escape_tex', nbconvert.filters.latex.escape_tex)
self.register_filter('highlight', nbconvert.filters.highlight.highlight2latex)
def _register_transformers(self):
#Register the transformers of the base class.
super(LatexExporter, self)._register_transformers()
#Register latex transformer
self.register_transformer(LatexTransformer)