transform.Highlight
返回用语法高亮器渲染后的给定代码。
transform.Highlight 函数使用 alecthomas/chroma 包,根据传入的代码、语言与选项生成带语法高亮的 HTML。
参数
CODE- (
string)要高亮的代码。 LANG- (
string)要高亮的代码的语言。该值大小写不敏感。可选;也可以用 OPTIONS 中的type键设置语言。(0.162.0 新增) OPTIONS- (
map或string)一个映射,或包在引号里的逗号分隔键值对。参见下文选项;可以为每个选项在项目配置中设置默认值。键名大小写不敏感。
示例
{{ $input := `fmt.Println("Hello World!")` }}
{{ transform.Highlight $input "go" }}
{{ $input := `console.log('Hello World!');` }}
{{ $lang := "js" }}
{{ transform.Highlight $input $lang "lineNos=table, style=api" }}
{{ $input := `echo "Hello World!"` }}
{{ $lang := "bash" }}
{{ $opts := dict "lineNos" "table" "style" "dracula" }}
{{ transform.Highlight $input $lang $opts }}
{{ $input := `print("Hello World!")` }}
{{ $opts := dict "type" "python" "style" "dracula" }}
{{ transform.Highlight $input $opts }}选项
transform.Highlight 函数接受一个选项映射。
anchorLineNos- (
bool)是否把每个行号渲染为 HTML 锚点元素,即把外层span元素的id属性设为行号。lineNos为false时无意义。默认false。 codeFences- (
bool)是否高亮围栏代码块。默认true。 guessSyntax- (
bool)当LANG参数留空,或设为一个没有对应词法分析器(lexer)的语言时,是否自动识别语言。无法自动识别语言时回退为纯文本词法分析器。默认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- (
any)控制行号的显示方式。默认false。true:启用行号,具体形式由lineNumbersInTable决定。false:关闭行号。inline:启用行内行号(把lineNumbersInTable设为false)。table:启用表格形式的行号(把lineNumbersInTable设为true)。
lineNumbersInTable- (
bool)是否把高亮代码渲染为含两个单元格的 HTML 表格:左单元格放行号,右单元格放代码。lineNos为false时无意义。默认true。 noClasses- (
bool)是否使用内联 CSS 样式,而不使用外部 CSS 文件。默认true。要使用外部 CSS 文件,请把该值设为false,并用hugo gen chromastyles命令生成 CSS 文件:hugo gen chromastyles --style=github > assets/css/highlight.css(0.164.0 新增)
有些配色方案分别提供浅色与深色两套调色板。用
--mode参数为指定模式生成样式表,用--modeSelector参数把每个选择器收拢到顶层模式类之下(例如.dark .chroma):hugo gen chromastyles --style=monokai --mode=light > assets/css/highlight.css hugo gen chromastyles --style=monokai --mode=dark --modeSelector > assets/css/highlight-dark.css在根元素上添加或移除
dark类即可切换深色模式。省略--mode时,Hugo 按配色方案自身的默认模式生成样式表。也可以在模板中使用
css.ChromaStyles函数生成样式表。 style- (
string)应用到高亮代码上的 CSS 样式。该值大小写不敏感。默认monokai。参见语法高亮配色方案。 tabWidth- (
int)把高亮代码中的每个制表符替换为这么多个空格。noClasses为false时无意义。默认4。 wrapperClass- (0.140.2 新增)
- (
string)高亮代码最外层元素使用的类或类名列表。默认highlight。