Pandoc will automatically highlight syntax in fenced code
blocks that are marked with a language name. The Haskell library skylighting is used for
highlighting. Currently highlighting is supported only for HTML, EPUB,
Docx, Ms, Man, Typst, and LaTeX/PDF output. To see a list of language
names that pandoc will recognize, type
pandoc --list-highlight-languages.
The color scheme can be selected using the
--syntax-highlighting option. The default color scheme is
pygments, which imitates the default color scheme used by
the Python library pygments (though pygments is not actually used to do
the highlighting). To see a list of highlight styles, type
pandoc --list-highlight-styles.
If you are not satisfied with the predefined styles, you can use
--print-highlight-style to generate a JSON
.theme file which can be modified and used as the argument
to --syntax-highlighting. To get a JSON version of the
pygments style, for example:
pandoc -o my.theme --print-highlight-style pygments
Then edit my.theme and use it like this:
pandoc --syntax-highlighting my.theme
If you are not satisfied with the built-in highlighting, or you want
to highlight a language that isn’t supported, you can use the
--syntax-definition option to load a KDE-style
XML syntax definition file. Before writing your own, have a look at
KDE’s repository
of syntax definitions.
If you receive an error that pandoc “Could not read highlighting theme”, check that the JSON file is encoded with UTF-8 and has no Byte-Order Mark (BOM).
To disable highlighting, use
--syntax-highlighting=none.