zensical.toml 配置详解¶
全面了解 Zensical 的配置选项
配置文件格式¶
Zensical 项目通过 zensical.toml 文件进行配置。如果你使用 zensical new 命令创建项目,该文件会自动生成,并包含带注释的示例配置。
为什么选择 TOML?¶
TOML 文件格式 专门设计为易于扫描和理解。我们选择 TOML 而不是 YAML,因为它避免了 YAML 的一些问题:
- YAML 使用缩进表示结构,这使得缩进错误特别容易出现且难以定位。在 TOML 中,空白主要是样式选择。
- 在 YAML 中,值不需要转义,这可能导致歧义,例如
no可能被解释为字符串或布尔值。TOML 要求所有字符串都要加引号。
从 MkDocs 过渡¶
为了便于从 Material for MkDocs 过渡,Zensical 可以原生读取 mkdocs.yml 配置文件。但是,我们建议新项目使用 zensical.toml 文件。
配置文件支持
由于 Zensical 是由 Material for MkDocs 的创建者构建的,我们支持通过 mkdocs.yml 文件进行配置,作为过渡机制,使现有项目能够平滑迁移到 Zensical。对 mkdocs.yml 的支持将始终保持,但最终会移出核心。
项目作用域¶
zensical.toml 配置以声明项目作用域的行开始:
| TOML | |
|---|---|
1 | |
目前,所有设置都包含在此作用域内。随着 Zensical 的发展,我们将引入额外的作用域,并在适当的地方将设置移出项目作用域。当然,我们会提供自动重构,因此无需手动迁移。
⚠️ 重要:配置顺序规则¶
在 TOML 配置文件中,配置顺序非常重要。必须遵循以下规则:
正确的配置顺序¶
- 先声明父表
[project] - 然后配置所有直接属于
[project]的键值对 site_name,site_url,site_description等基本信息repo_url,repo_name,edit_uri等仓库配置extra_javascript,extra_css等额外资源nav导航配置- 其他所有直接属于
[project]的配置 - 最后才声明子表
[project.theme]- 主题配置[project.extra]- 额外配置[project.plugins.xxx]- 插件配置[project.markdown_extensions]- Markdown 扩展配置
为什么顺序很重要?¶
在 TOML 中,一旦声明了子表(如 [project.theme]),当前作用域就从 [project] 变成了 [project.theme]。之后的所有键值对都属于最后声明的表。
不能在声明子表后再回到父表添加键!
正确示例¶
| TOML | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | |
❌ 错误示例¶
| TOML | |
|---|---|
1 2 3 4 5 6 7 8 | |
常见错误¶
- 在子表后添加父表配置 - 会导致 TOML 解析错误
- 子表声明顺序混乱 - 虽然不会报错,但会让配置文件难以阅读和维护
- 忘记关闭父表配置 - 在声明子表前,确保所有父表配置都已完成
配置顺序错误会导致解析失败
如果配置顺序不正确,Zensical 可能无法正确解析配置文件,导致构建失败。请务必遵循上述顺序规则。
主题变体¶
Zensical 提供两种主题变体:modern(现代)和 classic(经典),默认为 modern。classic 主题完全匹配 Material for MkDocs 的外观和感觉,而 modern 主题提供全新的设计。
如果你来自 Material for MkDocs 并希望保持其外观,或基于其外观自定义网站,可以切换到 classic 主题变体:
| TOML | |
|---|---|
1 2 | |
| YAML | |
|---|---|
1 2 | |
自定义提示
Zensical 的 HTML 结构在两种主题变体中都与 Material for MkDocs 匹配。这意味着你现有的 CSS 和 JavaScript 自定义应该可以在任一主题变体中工作。
基础设置¶
让我们从最基础的配置开始,逐步构建一个完整的配置文件。
site_name¶
必需设置 - 提供网站名称,将显示在浏览器标签页、页面标题和导航栏中。
| TOML | |
|---|---|
1 2 | |
| YAML | |
|---|---|
1 | |
实际效果:
- 浏览器标签页显示:我的 Zensical 项目
- 页面标题显示:我的 Zensical 项目 - 页面名称
- 导航栏左上角显示:我的 Zensical 项目
关于 site_name
site_name 目前是必需的,因为 Zensical 替换的静态网站生成器 MkDocs 需要它。我们计划在未来版本中使此设置可选。
site_url¶
强烈推荐 - 网站的完整 URL,包括协议(http:// 或 https://)和域名。
| TOML | |
|---|---|
1 2 3 | |
| YAML | |
|---|---|
1 2 | |
为什么需要 site_url?
site_url 是以下功能的前提:
- 即时导航 - 需要知道网站的完整 URL 才能正确工作
- 即时预览 - 预览功能依赖正确的 URL
- 自定义错误页面 - 404 页面需要知道网站 URL
- RSS 订阅 - RSS 链接需要完整的 URL
- 社交分享 - 分享功能需要正确的 URL
重要
如果使用即时导航功能,site_url 是必需的,否则即时导航将无法正常工作。
示例:
| TOML | |
|---|---|
1 2 3 4 5 6 7 8 | |
site_description¶
可选 - 网站的描述,用于 SEO 和社交媒体分享。
| TOML | |
|---|---|
1 2 3 4 | |
| YAML | |
|---|---|
1 2 3 | |
实际效果:
- 在 HTML <meta name="description"> 标签中
- 社交媒体分享时显示
- 搜索引擎结果中可能显示
SEO 建议
建议设置一个简洁、有吸引力的描述(50-160 个字符),有助于提高搜索引擎排名。
site_author¶
可选 - 网站作者名称。
| TOML | |
|---|---|
1 2 3 | |
| YAML | |
|---|---|
1 2 | |
实际效果:
- 在 HTML <meta name="author"> 标签中
- 页脚可能显示作者信息(取决于主题配置)
copyright¶
可选 - 版权声明,显示在页面页脚。
| TOML | |
|---|---|
1 2 | |
| YAML | |
|---|---|
1 | |
实际效果:
- 显示在页面左下角页脚
- 支持 HTML 标签(如 © 显示为 ©)
示例:
| TOML | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 | |
docsdir 和 sitedir¶
可选 - 文档目录和输出目录配置。
| TOML | |
|---|---|
1 2 3 | |
| YAML | |
|---|---|
1 2 | |
说明:
- docs_dir:存放 Markdown 源文件的目录
- site_dir:构建后生成的静态网站文件目录
目录结构示例
| Text Only | |
|---|---|
1 2 3 4 5 6 7 8 | |
完整的基础配置示例¶
以下是一个完整的基础配置示例,包含了所有推荐的基础设置:
| zensical.toml - 完整基础配置 | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | |
验证配置
配置完成后,运行以下命令验证:
| Bash | |
|---|---|
1 2 3 4 5 | |
如果配置有误,会显示具体的错误信息。
extra¶
extra 配置选项用于存储模板使用的任意键值对。如果你覆盖模板,可以使用这些值来自定义行为。
| TOML | |
|---|---|
1 2 3 | |
| YAML | |
|---|---|
1 2 3 | |
usedirectoryurls¶
控制文档网站的目录结构,从而控制用于链接到页面的 URL 格式。
| TOML | |
|---|---|
1 2 | |
| YAML | |
|---|---|
1 | |
离线使用
在构建离线使用时,此选项会自动设置为 false,以便可以从本地文件系统浏览文档,而无需 Web 服务器。
主题配置¶
language¶
设置网站的语言。
| TOML | |
|---|---|
1 2 | |
| YAML | |
|---|---|
1 2 | |
features¶
启用或禁用主题功能。这是一个数组,可以同时启用多个功能。
配置示例:
| TOML | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | |
常用功能说明:
| 功能 | 说明 | 推荐 |
|---|---|---|
navigation.instant |
即时导航,无需刷新页面 | ✅ 强烈推荐 |
navigation.instant.prefetch |
预加载链接,提升性能 | ✅ 推荐 |
navigation.tracking |
URL 自动更新为当前锚点 | ✅ 推荐 |
navigation.tabs |
一级导航显示为顶部标签 | ✅ 推荐 |
navigation.top |
返回顶部按钮 | ✅ 推荐 |
search.suggest |
搜索时显示建议 | ✅ 推荐 |
content.code.copy |
代码块复制按钮 | ✅ 强烈推荐 |
即时导航需要 site_url
如果启用 navigation.instant,必须设置 site_url,否则即时导航将无法正常工作。
| TOML | |
|---|---|
1 2 3 4 5 6 7 8 9 10 | |
| YAML | |
|---|---|
1 2 3 4 5 6 7 8 9 | |
palette¶
配置颜色主题,支持明暗模式切换。
基础配置示例:
| TOML | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 | |
完整配置示例(包含自动模式):
| TOML | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | |
支持的主色调:
red,pink,purple,deep-purpleindigo(推荐),blue,light-blue,cyanteal,green,light-green,limeyellow,amber,orange,deep-orangebrown,grey,blue-grey,black,white
选择颜色
indigo和blue是最常用的主色调primary影响导航栏、链接等主要元素accent影响按钮、高亮等强调元素
| TOML | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 | |
| YAML | |
|---|---|
1 2 3 4 5 6 7 8 | |
font¶
配置字体。
| TOML | |
|---|---|
1 2 3 | |
| YAML | |
|---|---|
1 2 3 4 | |
logo 和 favicon¶
设置网站 logo 和 favicon。
| TOML | |
|---|---|
1 2 3 | |
| YAML | |
|---|---|
1 2 3 | |
插件配置¶
博客插件¶
| TOML | |
|---|---|
1 2 3 4 5 6 | |
| YAML | |
|---|---|
1 2 3 4 5 6 7 8 9 | |
搜索插件¶
| TOML | |
|---|---|
1 2 3 | |
| YAML | |
|---|---|
1 2 3 4 5 6 7 | |
标签插件¶
| TOML | |
|---|---|
1 2 | |
| YAML | |
|---|---|
1 2 3 4 | |
导航配置¶
nav¶
定义网站的导航结构。
基本用法¶
| TOML | |
|---|---|
1 2 3 4 5 6 | |
| YAML | |
|---|---|
1 2 3 4 | |
实际效果: - 导航栏显示三个顶级菜单项 - 点击后跳转到对应页面
嵌套导航(导航分组)¶
创建多层级的导航结构,将相关页面组织在一起:
| TOML | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 | |
| YAML | |
|---|---|
1 2 3 4 5 6 7 8 | |
实际效果: - "快速开始" 和 "核心教程" 显示为可展开的分组 - 点击分组名称展开子菜单 - 子菜单项点击后跳转到对应页面
外部链接¶
导航项也可以指向外部 URL,任何无法解析为 Markdown 文件的字符串都会被当作 URL 处理:
| TOML | |
|---|---|
1 2 3 4 5 6 | |
| YAML | |
|---|---|
1 2 3 4 | |
实际效果: - 外部链接在新标签页中打开 - 可以混合使用内部页面和外部链接
完整配置示例¶
本教程实际使用的完整导航配置:
| TOML | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | |
导航配置技巧
- 路径相对于
docs_dir:所有文件路径都相对于docs目录 - 自动提取标题:如果不指定标题,Zensical 会自动从文件中提取
- 嵌套层级:支持多层嵌套,但建议不超过 3 层以保持导航清晰
- 外部链接:URL 会在新标签页中打开,内部链接在当前页面打开
- 数组格式:使用
nav = [...]格式,结构清晰,易于维护
Markdown 扩展¶
Zensical 支持丰富的 Markdown 扩展,这些扩展基于官方推荐配置,提供了强大的文档编写能力。
官方推荐配置(完整版)¶
以下配置是 Zensical 官方推荐的完整 Markdown 扩展配置,包含了所有常用功能:
| TOML | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | |
| YAML | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | |
扩展功能说明¶
基础扩展¶
| 扩展 | 功能 | 示例 |
|---|---|---|
abbr |
缩写支持 | <abbr title="HyperText Markup Language">HTML</abbr> |
admonition |
警告框 | !!! note "提示" |
attr_list |
属性列表 | {: .class-name } |
def_list |
定义列表 | 术语 : 定义 |
footnotes |
脚注 | [^1] 和 [^1]: 脚注内容 |
md_in_html |
HTML 中使用 Markdown | <div markdown="1">**粗体**</div> |
toc |
自动生成目录 | 自动生成页面目录 |
PyMdown 扩展¶
| 扩展 | 功能 | 示例 |
|---|---|---|
pymdownx.arithmatex |
数学公式 | $E=mc^2$ 或 $$\int_0^\infty$$ |
pymdownx.betterem |
智能斜体/粗体 | 自动处理 *text* 和 **text** |
pymdownx.caret |
上标 | ^text^ → text |
pymdownx.details |
可折叠详情 | ??? note "点击展开" |
pymdownx.emoji |
Emoji 表情 | :smile: → 😄 |
pymdownx.highlight |
代码高亮 | 语法高亮的代码块 |
pymdownx.inlinehilite |
行内代码高亮 | `code` |
pymdownx.keys |
键盘按键 | ++ctrl+alt+del++ |
pymdownx.mark |
标记文本 | ==text== → text |
pymdownx.smartsymbols |
智能符号 | (c) → ©, (tm) → ™ |
pymdownx.superfences |
代码块和 Mermaid | 支持代码块和流程图 |
pymdownx.tabbed |
标签页 | === "标签1" |
pymdownx.tasklist |
任务列表 | - [ ] 未完成 / - [x] 已完成 |
pymdownx.tilde |
删除线 | ~~text~~ → |
常用配置示例¶
最小配置(仅基础功能)¶
| TOML | |
|---|---|
1 2 3 4 5 | |
推荐配置(常用功能)¶
| TOML | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | |
实际使用示例¶
警告框(Admonition)¶
| Markdown | |
|---|---|
1 2 3 4 5 6 7 8 | |
代码高亮(Highlight)¶
| Markdown | |
|---|---|
1 2 3 4 | |
标签页(Tabbed)¶
| Markdown | |
|---|---|
1 2 3 4 5 6 7 8 9 | |
任务列表(Tasklist)¶
| Markdown | |
|---|---|
1 2 | |
数学公式(Arithmatex)¶
| Markdown | |
|---|---|
1 2 3 4 5 6 | |
Emoji 表情¶
| Markdown | |
|---|---|
1 | |
更多示例
详细的使用示例和说明请参考 Markdown 扩展使用指南。
完整配置示例¶
以下是一个完整的、生产环境可用的配置示例,包含了所有常用配置:
| zensical.toml - 完整配置示例 | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 | |
配置验证
配置完成后,建议运行以下命令验证:
| Bash | |
|---|---|
1 2 3 4 5 | |
下一步¶
参考资料: - Zensical 官方文档 - Basics - TOML 规范 - Material for MkDocs 配置