本文档描述了 Hugo 如何处理 Markdown 内容,将其从原始 Markdown 文本转换为可在模板中使用的 HTML。Hugo 的 Markdown 处理系统以 Goldmark 库为核心,该库是自 Hugo v0.60.0 以来的默认 Markdown 处理器。有关 front matter 解析的信息,请参阅 Front Matter Parsing,有关生成目录的详细信息,请参阅 Table of Contents Generation。
Hugo 使用基于管道的方法将 Markdown 内容转换为 HTML。该过程涉及将 Markdown 解析为抽象语法树 (AST),对该树应用转换,然后将树渲染为 HTML。
来源
Hugo 的 Markdown 处理通过站点配置高度可配置。默认配置在标准 Markdown 兼容性和有用扩展之间提供了平衡。
来源
Hugo Markdown 处理的核心是 goldmarkConverter 结构体,它实现了 converter.Converter 接口。此转换器负责解析 Markdown 内容、生成目录以及渲染最终的 HTML。
转换过程包含三个主要阶段
来源
Hugo 提供多种生成标题 ID 的策略来支持锚链接
ID 生成过程会清理标题文本,并通过为重复项添加数字后缀来确保唯一性。
来源
Hugo 会自动从 Markdown 标题生成目录。这被实现为一个 AST 转换器,它在 Markdown 处理过程中收集标题及其元数据。
目录可通过模板中的 .TableOfContents 变量访问。
来源
Hugo 通过支持标题、代码块和其他元素的自定义属性来扩展 Goldmark。这允许为 Markdown 元素添加 CSS 类、ID 和其他 HTML 属性。
来源
Hugo 使用多个扩展来配置 Goldmark,以增强 Markdown 功能集。这些扩展在 newMarkdown 函数中初始化。
| 扩展 | 描述 | 默认 |
|---|---|---|
| 排版 | 智能引号、破折号、省略号 | 已启用 |
| 表格 | Markdown 表格 | 已启用 |
| 删除线 | 已启用 | |
| 链接化 | 自动将 URL 转换为链接 | 已启用 |
| 任务列表 | GitHub 风格的任务列表 | 已启用 |
| 定义列表 | 定义列表 | 已启用 |
| 脚注 | 脚注支持 | 已启用 |
| CJK | CJK 语言支持 | 已禁用 |
| 其他 | 删除、插入、标记等。 | 可变 |
| 直通 | 原始内容直通 | 已禁用 |
来源
Hugo 提供了几个用于处理已渲染 Markdown 内容的助手函数
来源
Hugo 将 Markdown 代码块与语法高亮系统集成。启用代码围栏后,代码块将被处理,以根据指定的语言添加语法高亮。
代码块渲染器支持多种选项,如行号、行高亮等。
来源
Hugo 的 Markdown 处理系统提供了一种强大而灵活的方式,可以将 Markdown 内容转换为 HTML。它围绕 Goldmark 库构建,提供了广泛的配置选项、各种扩展以及与 Hugo 的其他功能(如语法高亮和模板渲染)的紧密集成。
该系统旨在符合 CommonMark 规范,同时提供增强内容创作体验的附加功能。
刷新此 Wiki
最后索引时间2025 年 4 月 18 日(a88b48)