HUGO
Menu
GitHub 87548 stars Mastodon

Hugo Highlight 短代码

使用 highlight 短代码在你的内容中插入语法高亮代码。

要覆盖 Hugo 内置的 highlight 短代码,请将 源代码 复制到 layouts/_shortcodes 目录中同名文件中。

使用 Markdown 内容格式 时,很少需要 highlight 短代码,因为默认情况下,Hugo 会自动对围栏代码块应用语法高亮。

highlight 短代码在 Markdown 中的主要用途是对内联代码片段应用语法高亮。

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 短代码用于内联代码片段:

这是某些 {{< highlight go "hl_inline=true" >}}fmt.Println("inline"){{< /highlight >}} 代码。

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 }}
这是某些 {{< hl >}}fmt.Println("inline"){{< /hl >}} 代码。

Hugo 渲染为:

这是某些 fmt.Println("inline") 代码。

参数

调用短代码时传递参数。你可以在 站点配置 中设置它们的默认值。

anchorLineNos
(bool) 是否将每个行号渲染为 HTML 锚元素,将周围 span 元素的 id 属性设置为行号。如果 lineNosfalse,则此选项无关。默认为 false
codeFences
(bool) 是否高亮代码围栏。默认为 true
guessSyntax
(bool) 如果 LANG 参数为空或设置为没有相应 词法分析器 的语言,是否自动检测语言。如果无法自动检测语言,则回退到纯文本词法分析器。默认为 false

Chroma 语法高亮器包含约 250 种语言的词法分析器,但其中只有 5 种实现了自动语言检测。

hl_Lines
(string) 要在高亮代码中强调的行的空格分隔列表。要强调第 2、3、4 和 7 行,将此值设置为 2-4 7。此选项独立于 lineNoStart 选项。
hl_inline
(bool) 是否在没有包装容器的情况下渲染高亮代码。默认为 false
lineAnchors
(string) 在将行号渲染为 HTML 锚元素时,将此值前置到周围 span 元素的 id 属性。当页面包含两个或更多代码块时,这提供了唯一的 id 属性。如果 lineNosanchorLineNosfalse,则此选项无关。
lineNoStart
(int) 在第一行显示的数字。如果 lineNosfalse,则此选项无关。默认为 1
lineNos
(any) 控制行号显示。默认为 false
  • true:启用行号,由 lineNumbersInTable 控制。
  • false:禁用行号。
  • inline:启用内联行号(将 lineNumbersInTable 设置为 false)。
  • table:启用基于表格的行号(将 lineNumbersInTable 设置为 true)。
lineNumbersInTable
(bool) 是否在 HTML 表格中渲染高亮代码,包含两个单元格。左表格单元格包含行号,右表格单元格包含代码。如果 lineNosfalse,则此选项无关。默认为 true
noClasses
(bool) 是否使用内联 CSS 样式而不是外部 CSS 文件。默认为 true。要使用外部 CSS 文件,将此值设置为 false 并从命令行生成 CSS 文件:
hugo gen chromastyles --style=monokai > syntax.css
style
(string) 应用于高亮代码的 CSS 样式。区分大小写。默认为 monokai。请参阅 语法高亮样式
tabWidth
(int) 用此数量的空格替换高亮代码中的每个制表符。如果 noClassesfalse,则此选项无关。默认为 4
wrapperClass
New in v0.140.2
(string) 用于高亮代码最外层元素的类。默认为 highlight

Last updated: January 1, 0001
Improve this page