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