代码高亮
highlight
短代码调用 transform.Highlight
函数,该函数使用 Chroma 语法高亮器,支持 200 多种语言和 40 多种可用样式。
参数
highlight
短代码接受三个参数。
{{< highlight LANG OPTIONS >}}
CODE
{{< /highlight >}}
- CODE
- (
string
)要高亮的代码。 - LANG
- (
string
)要高亮的代码的语言。从支持的语言中选择一种。此值不区分大小写。 - OPTIONS
- (
string
)零个或多个以空格分隔的键值对,用引号括起来。在您的站点配置中设置每个选项的默认值。键名不区分大小写。
示例
{{< highlight go "linenos=inline, hl_Lines=3 6-8, style=emacs" >}}
package main
import "fmt"
func main() {
for i := 0; i < 3; i++ {
fmt.Println("Value of i:", i)
}
}
{{< /highlight >}}
Hugo 将其渲染为
1package main
2
3import "fmt"
4
5func main() {
6 for i := 0; i < 3; i++ {
7 fmt.Println("Value of i:", i)
8 }
9}
您还可以将 highlight
短代码用于内联代码片段
This is some {{< highlight go "hl_inline=true" >}}fmt.Println("inline"){{< /highlight >}} code.
Hugo 将其渲染为
这是一些 fmt.Println("inline")
代码。
鉴于上述示例的冗长性,如果您需要频繁高亮内联代码片段,请使用预设选项创建您自己的短代码,并使用较短的名称。
layouts/shortcodes/hl.html
{{ $code := .Inner | strings.TrimSpace }}
{{ $lang := or (.Get 0) "go" }}
{{ $opts := dict "hl_inline" true "noClasses" true }}
{{ transform.Highlight $code $lang $opts }}
This is some {{< hl >}}fmt.Println("inline"){{< /hl >}} code.
Hugo 将其渲染为
这是一些 fmt.Println("inline")
代码。
选项
调用短代码时传递选项。您可以在站点配置中设置它们的默认值。
- anchorLineNos
- (
bool
)是否将每行行号呈现为 HTML 锚元素,并将周围span
元素的id
属性设置为行号。如果lineNos
为false
,则无关紧要。默认值为false
。 - codeFences
- (
bool
)是否高亮围栏代码块。默认值为true
。 - guessSyntax
- (
bool
)如果LANG
参数为空或设置为没有相应词法分析器的语言,是否自动检测语言。如果无法自动检测到语言,则回退到纯文本词法分析器。默认值为false
。
- hl_Lines
- (
string
)要在高亮代码中强调的行的空格分隔列表。要强调第 2、3、4 和 7 行,请将此值设置为2-4 7
。此选项独立于lineNoStart
选项。 - hl_inline
- (
bool
)是否在不使用包装容器的情况下呈现高亮的代码。默认值为false
。 - lineAnchors
- (
string
)当将行号呈现为 HTML 锚元素时,将此值添加到周围span
元素的id
属性之前。当页面包含两个或多个代码块时,这提供了唯一的id
属性。如果lineNos
或anchorLineNos
为false
,则无关紧要。 - lineNoStart
- (
int
)在第一行开头显示的数字。如果lineNos
为false
,则无关紧要。默认值为1
。 - lineNos
- (
bool
)是否在每行开头显示一个数字。默认值为false
。 - lineNumbersInTable
- (
bool
)是否在具有两个单元格的 HTML 表格中呈现高亮的代码。左侧表格单元格包含行号,而右侧表格单元格包含代码。如果lineNos
为false
,则无关紧要。默认值为true
。 - noClasses
- (
bool
)是否使用内联 CSS 样式而不是外部 CSS 文件。要使用外部 CSS 文件,请将此值设置为false
并使用hugo gen chromastyles
命令生成 CSS 文件。默认值为true
。 - style
- (
string
)应用于高亮代码的 CSS 样式。有关示例,请参见[样式库]。区分大小写。默认值为monokai
。 - tabWidth
- (
int
)在您的高亮代码中,用此数量的空格替换每个制表符。如果noClasses
为false
,则无关紧要。默认值为4
。 - wrapperClass
- 在 v0.140.2 中新增
- (
string
) 用于高亮代码最外层元素的类或多个类。默认值为highlight
。