Customizing Syntax Highlighting#
Under the hood, nbconvert uses pygments to highlight code. pdf, webpdf and html exporting support changing the highlighting style.
Using Builtin styles#
Pygments has a number of builtin styles available. To use them, we just need to set the style setting in the relevant preprocessor.
To change html and webpdf highlighting export with:
jupyter nbconvert --to html notebook.ipynb --CSSHTMLHeaderPreprocessor.style=<name>
To change pdf and latex highlighting export with:
jupyter nbconvert --to pdf notebook.ipynb --LatexPreprocessor.style=<name>
where <name>
is the name of the pygments style. Available styles may vary from system to system.
You can find all available styles with:
pygmentize -L styles
from a terminal or
from pygments.styles import get_all_styles
print(list(get_all_styles()))
from python.
You can preview all the styles from an environment that can display html like jupyter notebook with:
from pygments.styles import get_all_styles
from pygments.formatters import Terminal256Formatter
from pygments.lexers import PythonLexer
from pygments import highlight
code = """
import os
def function(test=1):
if test in [3,4]:
print(test)
"""
for style in get_all_styles():
highlighted_code = highlight(code, PythonLexer(), Terminal256Formatter(style=style))
print(f"{style}:\n{highlighted_code}")
Making your own styles#
To make your own style you must subclass pygments.styles.Style
, and then you must register your new style with Pygments using
their plugin system. This is explained in detail in the Pygments documentation.