hextra/exampleSite/content/docs/guide/syntax-highlighting.md
strowk 26a298da5d
feat: support link in code block title (#523)
* feat: support link in code block title

* refactor: simplify code block filename link implementation

* docs: update syntax-highlighting.md

* chore: rename `filename_uri_base` to `base_url`

[skip ci]

* refactor: use `base_url` int code block implementation

---------

Co-authored-by: Xin <xin@imfing.com>
2024-12-28 12:41:23 +00:00

2.4 KiB

title weight
Syntax Highlighting 3

Hugo uses Chroma, a general purpose syntax highlighter in pure Go, for syntax highlighting. It is recommended to use backticks for code blocks in Markdown content. For example:

```python
def say_hello():
    print("Hello!")
```

will be rendered as:

def say_hello():
    print("Hello!")

Features

Filename

To add a filename or title to the code block, set attribute filename:

```python {filename="hello.py"}
def say_hello():
    print("Hello!")
```
def say_hello():
    print("Hello!")

You can use the base_url attribute to provide a base URL that will be combined with the file name to generate a link.

The file name can include a relative path if it specifies the file's location within the base path.

```go {base_url="https://github.com/imfing/hextra/blob/main/",filename="exampleSite/hugo.work"}
go 1.20
```
go 1.20

Line Numbers

To set line numbers, set attribute linenos to table and optionally set linenostart to the starting line number:

```python {linenos=table,linenostart=42}
def say_hello():
    print("Hello!")
```
42 43 def say_hello(): print("Hello!")

Highlighting Lines

To highlight lines, set attribute hl_lines to a list of line numbers:

```python {linenos=table,hl_lines=[2,4],linenostart=1,filename="hello.py"}
def say_hello():
    print("Hello!")

def main():
    say_hello()
```
1 2 3 4 5 def say_hello(): print("Hello!") def main(): say_hello()

Copy Button

By default, copy button is enabled for code blocks. Its behavior can changed by modifying the site configuration file:

42 43 44 45 46 47 params: highlight: copy: enable: true # hover | always display: hover

Supported Languages

For a list of supported languages, please see the Chroma documentation.