代码高亮
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。