latex.py
96 lines
| 3.5 KiB
| text/x-python
|
PythonLexer
MinRK
|
r13664 | """LaTeX Exporter class""" | ||
Jonathan Frederic
|
r10479 | #----------------------------------------------------------------------------- | ||
# 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 | ||||
#----------------------------------------------------------------------------- | ||||
Jonathan Frederic
|
r10585 | |||
damianavila
|
r11203 | # Stdlib imports | ||
import os | ||||
Jonathan Frederic
|
r10585 | # IPython imports | ||
Thomas Kluyver
|
r13933 | from IPython.utils.traitlets import Unicode | ||
Matthias BUSSONNIER
|
r10872 | from IPython.config import Config | ||
Jonathan Frederic
|
r10585 | |||
Thomas Kluyver
|
r18381 | from IPython.nbconvert.filters.highlight import Highlight2Latex | ||
Jonathan Frederic
|
r12505 | from .templateexporter import TemplateExporter | ||
Jonathan Frederic
|
r10677 | |||
Jonathan Frederic
|
r10479 | #----------------------------------------------------------------------------- | ||
# Classes and functions | ||||
#----------------------------------------------------------------------------- | ||||
Jonathan Frederic
|
r12505 | class LatexExporter(TemplateExporter): | ||
Jonathan Frederic
|
r10677 | """ | ||
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. | ||||
""" | ||||
Thomas Kluyver
|
r13925 | |||
def _file_extension_default(self): | ||||
return 'tex' | ||||
def _template_file_default(self): | ||||
return 'article' | ||||
Jonathan Frederic
|
r10479 | |||
Jonathan Frederic
|
r10690 | #Latex constants | ||
Thomas Kluyver
|
r14047 | def _default_template_path_default(self): | ||
return os.path.join("..", "templates", "latex") | ||||
Jonathan Frederic
|
r10690 | |||
Thomas Kluyver
|
r14050 | def _template_skeleton_path_default(self): | ||
return os.path.join("..", "templates", "latex", "skeleton") | ||||
Jonathan Frederic
|
r10690 | |||
#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) | ||||
Matthias BUSSONNIER
|
r10869 | |||
Thomas Kluyver
|
r13834 | output_mimetype = 'text/latex' | ||
MinRK
|
r13664 | |||
Jonathan Frederic
|
r11733 | |||
Matthias BUSSONNIER
|
r10963 | @property | ||
def default_config(self): | ||||
c = Config({ | ||||
Jonathan Frederic
|
r11419 | 'NbConvertBase': { | ||
MinRK
|
r18589 | 'display_data_priority' : ['text/latex', 'application/pdf', 'image/png', 'image/jpeg', 'image/svg+xml', 'text/plain'] | ||
Matthias BUSSONNIER
|
r10965 | }, | ||
Paul Ivanov
|
r12219 | 'ExtractOutputPreprocessor': { | ||
Jonathan Frederic
|
r11367 | 'enabled':True | ||
Jonathan Frederic
|
r11383 | }, | ||
Paul Ivanov
|
r12219 | 'SVG2PDFPreprocessor': { | ||
Jonathan Frederic
|
r11383 | 'enabled':True | ||
}, | ||||
Paul Ivanov
|
r12219 | 'LatexPreprocessor': { | ||
Jonathan Frederic
|
r11383 | 'enabled':True | ||
Jonathan Frederic
|
r11736 | }, | ||
Paul Ivanov
|
r12219 | 'SphinxPreprocessor': { | ||
Jonathan Frederic
|
r11733 | 'enabled':True | ||
Pablo de Oliveira
|
r12573 | }, | ||
'HighlightMagicsPreprocessor': { | ||||
'enabled':True | ||||
Jonathan Frederic
|
r11733 | } | ||
Matthias BUSSONNIER
|
r10963 | }) | ||
c.merge(super(LatexExporter,self).default_config) | ||||
return c | ||||
Thomas Kluyver
|
r18381 | |||
def from_notebook_node(self, nb, resources=None, **kw): | ||||
Thomas Kluyver
|
r18469 | langinfo = nb.metadata.get('language_info', {}) | ||
lexer = langinfo.get('pygments_lexer', langinfo.get('name', None)) | ||||
Thomas Kluyver
|
r18381 | self.register_filter('highlight_code', | ||
Highlight2Latex(pygments_lexer=lexer, parent=self)) | ||||
return super(LatexExporter, self).from_notebook_node(nb, resources, **kw) | ||||