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。