欢迎来到我的文档网站
这是一个使用 mdBook 构建的文档网站,托管在 GitHub Pages 上。
关于 mdBook
mdBook 是一个用于从 Markdown 文件创建现代在线书籍的命令行工具。它具有以下特点:
- 📝 使用 Markdown 语法编写
- 🎨 美观的默认主题
- 🔍 内置搜索功能
- 📱 响应式设计
- ⚡ 快速构建
开始使用
查看左侧的目录来浏览文档内容。
贡献
如果您发现任何问题或想要改进文档,欢迎在 GitHub 上提交 issue 或 pull request。
快速开始
本章将帮助您快速开始使用我们的文档系统。
先决条件
在开始之前,请确保您具备以下条件:
- 基本的 Markdown 语法知识
- Git 的基本使用经验
- 文本编辑器(推荐 VS Code)
安装 mdBook
方法 1:使用 Cargo 安装
cargo install mdbook
方法 2:从 GitHub 下载
访问 mdBook 发布页面 下载预编译的二进制文件。
创建新书
mdbook init my-book
cd my-book
预览书籍
mdbook serve
这将在 http://localhost:3000
启动一个本地服务器来预览您的书籍。
构建书籍
mdbook build
构建的静态文件将生成在 book
目录中(或配置文件中指定的目录)。
基本概念
了解 mdBook 的核心概念将帮助您更好地组织和管理文档。
书籍结构
mdBook 项目具有以下基本结构:
my-book/
├── book.toml # 配置文件
├── src/ # 源文件目录
│ ├── SUMMARY.md # 目录结构
│ ├── chapter_1.md # 章节文件
│ └── images/ # 图片资源
└── book/ # 构建输出目录
配置文件 (book.toml)
book.toml
是 mdBook 的主要配置文件,包含:
- [book] 部分:书籍的基本信息
- [build] 部分:构建相关设置
- [output] 部分:输出格式配置
目录文件 (SUMMARY.md)
SUMMARY.md
定义了书籍的目录结构和导航。它支持:
- 嵌套章节
- 链接到外部资源
- 分割线和分组
Markdown 扩展
mdBook 支持标准 Markdown 语法,同时还提供了一些扩展功能:
代码块
支持语法高亮:
fn main() { println!("Hello, mdBook!"); }
数学公式
支持 KaTeX 数学公式(需要启用):
\[ \int_{-\infty}^{\infty} e^{-x^2} dx = \sqrt{\pi} \]
提示框
注意: 这是一个重要的提示信息。
链接
- 内部链接:
[章节名称](./chapter.md)
- 外部链接:
[网站](https://example.com)
配置说明
本章详细介绍 mdBook 的各种配置选项。
基本配置
[book] 部分
[book]
title = "我的书籍"
authors = ["作者姓名"]
language = "zh-cn"
description = "书籍描述"
src = "src"
[build] 部分
[build]
build-dir = "book" # 输出目录
create-missing = true # 自动创建缺失的文件
use-default-preprocessors = true
输出配置
HTML 输出
[output.html]
theme = "light" # 默认主题
default-theme = "light" # 默认主题
preferred-dark-theme = "navy" # 暗黑主题
curly-quotes = true # 智能引号
mathjax-support = false # MathJax 支持
copy-fonts = true # 复制字体文件
google-analytics = "UA-XXXXXX" # Google Analytics
additional-css = ["theme/custom.css"] # 自定义CSS
additional-js = ["theme/custom.js"] # 自定义JS
Git 集成
[output.html]
git-repository-url = "https://github.com/user/repo"
git-repository-icon = "fa-github"
edit-url-template = "https://github.com/user/repo/edit/main/src/{path}"
预处理器
链接检查
[preprocessor.links]
# 启用链接检查
索引
[preprocessor.index]
# 生成索引页面
自定义主题
可以通过以下方式自定义主题:
- 创建
theme
目录 - 添加自定义 CSS 和 JS 文件
- 修改 HTML 模板
目录结构
theme/
├── index.hbs # 主页模板
├── css/
│ └── variables.css # CSS 变量
└── js/
└── custom.js # 自定义脚本
最佳实践
以下是使用 mdBook 的一些最佳实践建议。
文档组织
目录结构
保持清晰的目录结构:
src/
├── SUMMARY.md
├── introduction.md
├── tutorials/
│ ├── basic.md
│ └── advanced.md
├── reference/
│ ├── api.md
│ └── config.md
└── assets/
├── images/
└── videos/
命名约定
- 使用小写字母和连字符:
getting-started.md
- 避免特殊字符和空格
- 保持文件名简洁且描述性强
内容编写
Markdown 最佳实践
-
使用清晰的标题层次
# 一级标题 ## 二级标题 ### 三级标题
-
合理使用列表
- 使用无序列表表示不相关的项目
- 使用有序列表表示步骤或优先级
-
代码块格式化
\`\`\`语言名称 代码内容 \`\`\`
图片和媒体
- 将图片存放在专门的目录中
- 使用相对路径引用图片
- 提供替代文本(alt text)

维护和更新
版本控制
- 使用 Git 进行版本控制
- 编写清晰的提交信息
- 定期备份重要内容
持续集成
设置 GitHub Actions 自动构建和部署:
name: Deploy mdBook
on:
push:
branches: [ main ]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Setup mdBook
uses: peaceiris/actions-mdbook@v1
- name: Build
run: mdbook build
- name: Deploy
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./book
性能优化
图片优化
- 压缩图片以减少文件大小
- 使用适当的图片格式(WebP、PNG、JPG)
- 提供不同分辨率的图片版本
内容优化
- 避免过长的页面
- 合理分割内容
- 使用目录和索引提高导航性
可访问性
- 提供清晰的标题结构
- 使用语义化的 Markdown
- 确保颜色对比度足够
- 添加适当的替代文本
常见问题
这里收集了使用 mdBook 时的常见问题和解决方案。
安装问题
Q: 无法安装 mdBook
A: 确保您已安装 Rust 和 Cargo:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source ~/.cargo/env
cargo install mdbook
Q: mdbook 命令未找到
A: 确保 Cargo 的 bin 目录在您的 PATH 中:
echo 'export PATH="$HOME/.cargo/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
构建问题
Q: 构建失败,提示链接错误
A: 检查 SUMMARY.md 中的链接是否正确,确保所有引用的文件都存在。
Q: 图片无法显示
A:
- 检查图片路径是否正确
- 确保使用相对路径
- 验证图片文件是否存在于 src 目录中
部署问题
Q: GitHub Pages 显示 404 错误
A:
- 确保构建输出目录设置正确
- 检查 GitHub Pages 设置中的源分支
- 确认 index.html 文件存在于根目录
Q: 样式丢失或显示异常
A:
- 检查基础 URL 设置
- 确保所有 CSS 和 JS 文件都被正确复制
- 检查浏览器控制台是否有错误信息
内容问题
Q: 数学公式不显示
A: 在 book.toml 中启用 MathJax 支持:
[output.html]
mathjax-support = true
Q: 代码高亮不工作
A: 确保代码块指定了正确的语言:
\`\`\`rust
fn main() {
println!("Hello, world!");
}
\`\`\`
Q: 中文字符显示异常
A: 确保文件以 UTF-8 编码保存,并在 book.toml 中设置正确的语言:
[book]
language = "zh-cn"
自定义问题
Q: 如何修改主题颜色
A: 创建自定义 CSS 文件并在配置中引用:
[output.html]
additional-css = ["theme/custom.css"]
Q: 如何添加自定义 JavaScript
A: 类似于 CSS,添加 JS 文件:
[output.html]
additional-js = ["theme/custom.js"]
获取帮助
如果上述解决方案都不能解决您的问题,可以:
- 查看 mdBook 官方文档
- 在 GitHub Issues 搜索相关问题
- 参与 Rust 社区讨论
参考资料
这里收集了有用的参考资料和链接。
官方资源
mdBook
Rust
Markdown 资源
语法参考
编辑器
GitHub Pages
官方文档
自定义域名
相关工具
静态站点生成器
- GitBook - 在线文档平台
- VuePress - Vue.js 驱动的静态站点生成器
- Docusaurus - Facebook 开源的文档平台
- Jekyll - Ruby 静态站点生成器
部署平台
- Netlify - 现代 Web 项目平台
- Vercel - 前端开发者平台
- GitLab Pages - GitLab 的静态站点托管
主题和插件
mdBook 主题
- mdBook Admonish - 添加提示框
- mdBook Mermaid - 支持 Mermaid 图表
- mdBook KaTeX - 数学公式支持
自定义样式
- Material Design - Google 的设计系统
- Bootstrap - 流行的 CSS 框架
- Tailwind CSS - 实用优先的 CSS 框架
社区资源
论坛和讨论
示例项目
- The Rust Programming Language - Rust 官方教程
- Rust by Example - Rust 示例代码
- mdBook 用户指南 - 本身就是用 mdBook 构建的
许可证
- MIT 许可证
- Apache 2.0 许可证
- Creative Commons - 内容许可证