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属性设置为行号。如果lineNos为false,则此选项无关。默认为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属性。如果lineNos或anchorLineNos为false,则此选项无关。 - lineNoStart
- (
int) 在第一行显示的数字。如果lineNos为false,则此选项无关。默认为1。 - lineNos
- (
any) 控制行号显示。默认为false。true:启用行号,由lineNumbersInTable控制。false:禁用行号。inline:启用内联行号(将lineNumbersInTable设置为false)。table:启用基于表格的行号(将lineNumbersInTable设置为true)。
- lineNumbersInTable
- (
bool) 是否在 HTML 表格中渲染高亮代码,包含两个单元格。左表格单元格包含行号,右表格单元格包含代码。如果lineNos为false,则此选项无关。默认为true。 - noClasses
- (
bool) 是否使用内联 CSS 样式而不是外部 CSS 文件。默认为true。要使用外部 CSS 文件,将此值设置为false并从命令行生成 CSS 文件:hugo gen chromastyles --style=monokai > syntax.css - style
- (
string) 应用于高亮代码的 CSS 样式。区分大小写。默认为monokai。请参阅 语法高亮样式。 - tabWidth
- (
int) 用此数量的空格替换高亮代码中的每个制表符。如果noClasses为false,则此选项无关。默认为4。 - wrapperClass
- New in v0.140.2
- (
string) 用于高亮代码最外层元素的类。默认为highlight。