latex.py
94 lines
| 3.5 KiB
| text/x-python
|
PythonLexer
Jonathan Frederic
|
r10677 | """ | ||
Exporter that allows Latex Jinja templates to work. Contains logic to | ||||
appropriately prepare IPYNB files for export to LaTeX. Including but | ||||
not limited to escaping LaTeX, fixing math region tags, using special | ||||
tags to circumvent Jinja/Latex syntax conflicts. | ||||
""" | ||||
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 | ||
Jonathan Frederic
|
r11383 | from IPython.utils.traitlets import Unicode, List | ||
Matthias BUSSONNIER
|
r10872 | from IPython.config import Config | ||
Jonathan Frederic
|
r10585 | |||
Paul Ivanov
|
r12219 | from IPython.nbconvert import filters, preprocessors | ||
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. | ||||
""" | ||||
Jonathan Frederic
|
r10624 | file_extension = Unicode( | ||
'tex', config=True, | ||||
help="Extension of the file that should be written to disk") | ||||
Jonathan Frederic
|
r10479 | |||
Jonathan Frederic
|
r11745 | default_template = Unicode('article', config=True, help="""Template of the | ||
data format to use. I.E. 'full' or 'basic'""") | ||||
Jonathan Frederic
|
r10690 | |||
#Latex constants | ||||
Jonathan Frederic
|
r11648 | default_template_path = Unicode( | ||
Jonathan Frederic
|
r11191 | os.path.join("..", "templates", "latex"), config=True, | ||
Jonathan Frederic
|
r10690 | help="Path where the template files are located.") | ||
template_skeleton_path = Unicode( | ||||
Jonathan Frederic
|
r11191 | os.path.join("..", "templates", "latex", "skeleton"), config=True, | ||
Jonathan Frederic
|
r10690 | help="Path where the template skeleton files are located.") | ||
#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 | |||
Jonathan Frederic
|
r11733 | |||
Matthias BUSSONNIER
|
r10963 | @property | ||
def default_config(self): | ||||
c = Config({ | ||||
Jonathan Frederic
|
r11419 | 'NbConvertBase': { | ||
MinRK
|
r11573 | 'display_data_priority' : ['latex', 'pdf', 'png', 'jpg', 'svg', 'jpeg', 'text'] | ||
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 | ||||