##// END OF EJS Templates
Move the pygments definition importing logic from the...
Move the pygments definition importing logic from the sphinx preprocessor to the latex one. Now all latex templates will use pygments.

File last commit:

r12583:7e55aecf
r12659:76189ecd
Show More
highlight.py
102 lines | 3.1 KiB | text/x-python | PythonLexer
"""
Module containing filter functions that allow code to be highlighted
from within Jinja templates.
"""
#-----------------------------------------------------------------------------
# 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
#-----------------------------------------------------------------------------
from pygments import highlight as pygements_highlight
from pygments.lexers import get_lexer_by_name
from pygments.formatters import HtmlFormatter
from pygments.formatters import LatexFormatter
# Our own imports
from IPython.nbconvert.utils.lexers import IPythonLexer
#-----------------------------------------------------------------------------
# Globals and constants
#-----------------------------------------------------------------------------
MULTILINE_OUTPUTS = ['text', 'html', 'svg', 'latex', 'javascript', 'json']
#-----------------------------------------------------------------------------
# Utility functions
#-----------------------------------------------------------------------------
__all__ = [
'highlight2html',
'highlight2latex'
]
def highlight2html(source, language='ipython', metadata=None):
"""
Return a syntax-highlighted version of the input source as html output.
Parameters
----------
source : str
source of the cell to highlight.
language : str
Language to highlight the syntax of.
metadata : NotebookNode cell metadata
metadata of the cell to highlight.
"""
return _pygment_highlight(source, HtmlFormatter(), language, metadata)
def highlight2latex(source, language='ipython', metadata=None):
"""
Return a syntax-highlighted version of the input source as latex output.
Parameters
----------
source : str
source of the cell to highlight.
language : str
Language to highlight the syntax of.
metadata : NotebookNode cell metadata
metadata of the cell to highlight.
"""
return _pygment_highlight(source, LatexFormatter(), language, metadata)
def _pygment_highlight(source, output_formatter, language='ipython', metadata=None):
"""
Return a syntax-highlighted version of the input source
Parameters
----------
source : str
source of the cell to highlight.
output_formatter : Pygments formatter
language : str
Language to highlight the syntax of.
metadata : NotebookNode cell metadata
metadata of the cell to highlight.
"""
# If the cell uses a magic extension language,
# use the magic language instead.
if language == 'ipython' \
and metadata \
and 'magics_language' in metadata:
language = metadata['magics_language']
if language == 'ipython':
lexer = IPythonLexer()
else:
lexer = get_lexer_by_name(language, stripall=True)
return pygements_highlight(source, lexer, output_formatter)