Skip to main content

transform.Highlight

The highlight function uses the Chroma syntax highlighter, supporting over 200 languages with more than 40 available styles.

Arguments​

INPUT : The code to highlight.

LANG : The language of the code to highlight. Choose from one of the supported languages. Case-insensitive.

OPTIONS : A map, or comma-separated list, of zero or more options. Set default values in site configuration.

Options​

lineNos : Boolean. Default is false.
Display a number at the beginning of each line.

lineNumbersInTable : Boolean. Default is true.
Render the highlighted code in an HTML table with two cells. The left table cell contains the line numbers. The right table cell contains the code, allowing a user to select and copy the code without line numbers. Irrelevant if lineNos is false.

anchorLineNos : Boolean. Default is false.
Render each line number as an HTML anchor element, and set the id attribute of the surrounding <span> to the line number. Irrelevant if lineNos is false.

lineAnchors : String. Default is "".
When rendering a line number as an HTML anchor element, prepend this value to the id attribute of the surrounding <span>. This provides unique id attributes when a page contains two or more code blocks. Irrelevant if lineNos or anchorLineNos is false.

lineNoStart : Integer. Default is 1.
The number to display at the beginning of the first line. Irrelevant if lineNos is false.

hl_Lines : String. Default is "".
A space-delimited list of lines to emphasize within the highlighted code. To emphasize lines 2, 3, 4, and 7, set this value to 2-4 7. This option is independent of the lineNoStart option.

hl_inline : Boolean. Default is false.
Render the highlighted code without a wrapping container.

style : String. Default is monokai.
The CSS styles to apply to the highlighted code. See the style gallery for examples. Case-sensitive.

noClasses : Boolean. Default is true.
Use inline CSS styles instead of an external CSS file. To use an external CSS file, set this value to false and generate the file with the hugo client.

tabWidth : Integer. Default is 4.
Substitute this number of spaces for each tab character in your highlighted code. Irrelevant if noClasses is false.

guessSyntax : Boolean. Default is false.
If the LANG argument is blank or an unrecognized language, auto-detect the language if possible, otherwise use a fallback language.

Instead of specifying both lineNos and lineNumbersInTable, you can use the following shorthand notation:

lineNos=inline : equivalent to lineNos=true and lineNumbersInTable=false

lineNos=table : equivalent to lineNos=true and lineNumbersInTable=true

Examples​

{{ $input := `fmt.Println("Hello World!")` }}
{{ transform.Highlight $input "go" }}

{{ $input := `console.log('Hello World!');` }}
{{ $lang := "js" }}
{{ transform.Highlight $input $lang "lineNos=table, style=api" }}

{{ $input := `echo "Hello World!"` }}
{{ $lang := "bash" }}
{{ $opts := dict "lineNos" "table" "style" "dracula" }}
{{ transform.Highlight $input $lang $opts }}