Skip to main content
`Ctrl`+`K`

# 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.