IMG_9553.txt.txt
Edited: Thursday 1 May 2025

Friday, October 1, 2021 at 11:20
+

笔 记 文 档 一 把 梭

100gle

少 数 派

MkDocs 快 速 上 手 指 南

引 言

在 无 纸 化 信 息 处 理 的 流 程 中 , 信 息 输 入 、 信 息 整 理 阶 段 的 工 具 选 择 已 经
很 多 了 , 雨 后 春 笋 般 不 断 浮 现 的 笔 记 工 具 让 人 眼 花 缭 乱 。 但 到 了 信 息 输
出 和 展 示 的 环 节 一 一 例 如 发 表 自 己 的 读 书 心 得 、 思 考 或 是 学 习 笔 记 , 或
i ti :

一 方 面 , 如 果 选 择 语 雀 、Notion 这 样 的 第 三 方 云 端 文 档 平 台 来 存 放 ,
定 制 空 间 就 很 有 限 , 且 数 据 始 终 是 寄 人 簪 下 。 另 一 方 面 , 如 果 选 择
WordPress 这 类 CMS 或 近 年 流 行 的 Jekyll、 Hugo 或 是 Hexo 等 「 静 态
0 , 随 之 而 来 的 技 术 门 榛 和 复 杂 操 作 又 容 易 打 消 人 的 创 作 和
刀 字 烈 促 。

以 我 个 人 为 例 , 我 想 通 过 搭 建 简 单 的 静 态 网 站 来 很 好 地 展 示 我 在 学 习 编
程 过 程 中 的 所 作 的 笔 记 、 对 问 题 的 看 法 等 , 将 它 们 作 为 一 个 Cookbook
或 系 统 化 的 参 老 文 档 来 使 用 , 同 时 也 兼 具 美 观 和 可 读 性 。 对 此 , . 上 述 主
流 框 架 都 有 些 T 条 鸡 用 牛 刀 」 的 感 觉 , 那 么 , 有 没 有 更 好 的 方 式 限 ?

我 遇 见 的 答 案 是 MKDocs。
什 么 是 MkDocs?

MkDocs (Markdown Documents) 是 一 个 快 速 、 简 单 的 静 态 网 站 生 成
器 , 用 于 将 Markdown 文 档 组 织 起 来 构 建 成 有 层 次 、 美 观 的 文 档 站 点 。
MkDocs (《Markdown Documents) 是 一 个 快 速 、 简 单 的 静 态 网 站 生 成
器 , 用 于 将 Markdown 文 档 组 织 起 来 构 建 成 有 层 次 、 美 观 的 文 档 站 点 。

东 o e * 国

< 口 8 moimmmriiceoc 英 文 国 日 明 真 真 口 交 自 国 一

MKkDocs

Pageidocomeionwstdom

octeton oementoncecee
caveninetdows ondcofooed esinge conhyuaton e Sutiyesirg etedcey d bendeck e Code
C

ec anglecnddowneghtgogeeuasotc cgcoesenesesedlonndctoiergm

Greatthemes available Easy tocustomize
Isosncrolooogiotngiercanisseleninooe erponciooeonesoniosengimewenowennn
Doosbeeeneboinierwe ntcecsandnsonedcc caseranoyuriiersanderieaingsonepoare
ectorogiemuepuyeresineeonteocs Meaty s woenesone ha
Ienarmiinoee rmiaicrom < Corn

Preview yoursite as youwork Hostanywhere
evarndecconsnolonnyooloremeee Maoocsbaoconeeiy utc imcstesetyesconhe
conenutonssyounenigi nernosand cupeges nan St nonrnieedeyouciecae

mhednyoutbonecmieneeyoucoeyoecenge

MkKDocs 基 于 Python 编 写 , 也 贯 彻 了 Python 里 「 简 洁 胜 于 复 杂 」 的 理
念 , 与 其 他 常 见 的 静 态 网 站 生 成 器 相 比 , 无 需 繁 琐 的 环 境 配 置 ( 如
Jekyll 涉 及 的 Bundler、Gems 等 ) , 所 有 配 置 都 用 足 有 简 单 的 一 个 配
置 文 件 管 理 , 并 且 当 中 配 置 项 的 内 容 也 仅 有 一 页 文 档 。

MKDocs 见 名 知 意 就 是 为 Markdown 而 生 , 根 据 Markdown 格 式 将 内 容
渲染 成 美 观 的 文 档 , 并 通 过 目 录 层 级 关 系 对 应 文 档 的 树 状 结 构 , 使 得 当
中 所 有 的 文 档 组 织 分 明 且 层 次 递 进 。

E illUUicduirihriuttitniidii 5 时 on

Jekyll 涉 及 的 Bundler、Gems 等 ) , 所 有 配 置 都 用 只 有 简 单 的 一 个 配
置 文 件 管 理 , 并 且 当 中 配 置 项 的 内 容 也 仅 有 一 页 文 档 。

MKDocs 见 名 知 意 就 是 为 Markdown 而 生 , 根 据 Markdown 格 式 将 内 容
渲染 成 美 观 的 文 档 , 水 级 关 系 对 应 文 档 的 树 状 结 构 , 使 得 当
中 所 有 的 文 档 组 织 分 阮 且 层 次 递

鱼 目 @ 日 wy 0ocs x 十

人 〇 @ 127.0.0.1:8000 骑 亢 “ 囚 “ 图 。 申

早 _& 明 _ 跌 叶 失 白 屋

My Docs Q Search

Welcome to MkDocs | Welcome t MKkDocs

Commands Forfull documentation visit mkdocsorg.

Project layout | c d
0mmanQds

  • nkdocs new [dir-nane] - Create a new project

  • nkdocs serve - Start the live-reloading docs server

  • nkdocs buitd - Build the documentation site.

“ nkdocs -h - Print help message and exit

Project layout

mkdocsynt 。 芒 The configoration 仁 le。
docs/

dndex.md 芒 The docunentation homepage,
C 芒 ther parkdown pages, Lnages ang other 秀 les.

Documentation builtwith MKDocs

1 月 sd 一 i [ T rr 林 C 一 东 一 人 口 日 一 厂 干 一 a 5 人 /
T
为 Markdown 增 加 列 表 语 法 等 ; 我 们 也 可 以 对 MkKDocs 构 建 的 站 点 的
布 局 样 式 进 行 二 次 定 制 和 编 排 , 使 得 整 个 站 点 更 加 美 观 。

MkDocs 的 上 述 优 点 , 让 它 被 很 多 知 名 开 源 项 目 选 中 , 用 于 搭 建 和 项 目
相 关 的 文 档 扇 站 。 比 如 Eython 里 知 名 的 Web 团 里 的 djanggo-rest-
framework、FastAPl 以 及 基 于 CC 编 写 的 云 团 关 位 理 服 劳 碧 raefik 等
项 目 的 官 方 文 档 站 点 , 都 是 通 过 MKDocs 进 行 指 建 。

当 然 ,MkDocs 并 不 仅 仅 是 开 发 者 的 玩 物 。 由 于 文 档 的 本 质 就 是 一 组 结
构 化 、 体 系 化 的 说 明 文 本 , 任 何 具 有 这 种 特 征 的 内 容 一 一 例 如 就 特 定 话
所 做 的 笔 记 、Wiki 等 一 - 只 要 是 使 用 了 Markdown 格 式 记 录 , 那 么 用
MkDocs 来 搭 建 一 个 自 用 的 Cookbook 或 参 考 手 册 也 完 全 不 在 话 下 。

鲜 园 @ O aposcux x |
< 〇 @ tmoonsooopyionpresy 公 四 国 日 园 @ 目 路 口 主 申
串 Pytest @.,Q
简 单 用 例
Fesleaek
Pasheaek 信 用 sssert 关 铁 朱 逼 行 新 言 , 知 梁 目 失 货 可 以 窑 接 揽 出 应 的 佳
Pyon 、
Dgnge 5 dmport pyiest E
Pask > sr f 标 2 Inaf
Aiahtp return 3 李 S ponmetze
Apchedoer def test 河 Bl
Pet go f0 Palue wos dd should be ever 颅 d 用 8 skp 命 skpt
E s
Ja 》 spf
com , 标 记 (mark) R useoaoee
Datibase 》 2
o 》 mover 是 pytest 特 玲 的 一 科 标 识 , 必 以 裆 洁 的 式 木 裂 余 箭 骗 制 的 团 数 , 包 招 洁 定 澈 讨 参 SE 亨 X
数 、 是 西 跳 汝 答 、 我 f 可 侦 pytest –aerkers 朱 真 真 所 有 记 。 ngSA
西 R: baune

参 数 测 访 : parametrize sope f

paranetrize 标 2 史 用 于 挂 宏 筠 刻 函 数 的 去 经 测 论 夕 数 它 积 fixture 不 网 的 地 市 在 于 它 古

能 作 用 于 当 莲 松 的 国 政 或 踹 征 3 明
dmport pytest 内 页

sntp 积 adom
outpat“.[00.(2.22).(8.35).044010

Spytestumark parametri 0 MX
notpub

def testmutiplicatio
sssert n

M 达
E
E se
如 根 要 狭 得 孙 个 去 勒 的 所 有 绍 合 , 可 b 棣 敌 多 个 parsmetrize 裂 : 口

E

y

MKDocs 春 个 不 错 的 选 择 。
注 : 尼 管 MkDocs 没 有 提 供 汉 化 翻 译 , 但 它 的 文 档 内 容 足 够 简 洁

了 , 所 以 即 使 读 者 对 自 己 的 英 语 水 平 东 太 有 信 心 , 也 可 以 在 翻 1
和 示 例 项 目 的 帮 助 下 , 快 速 上 手 并 构 建 一 个 站 点 。

伍 速 上 手

下 面 , 我 们 来 尝 试 从 无 到 有 用 MkKDocs 制 作 一 个 网 站 , 顺 便 对 它 的 轻
量 快 捷 建 立 一 个 直 观 认 识 。

首 先 , 请 确 保 自 己 安 装 了 Python3, 然 后 通 过 命 令 pip instal1
mkdocs 安 装 MkKDocs。 然 后 , 按 照 下 列 步 骤 新 建 站 点

  1. 使 用 mkdocs new 新 建 站 点 项 目 ,
    比 如 我 这 里 叫 mysite, 则 是 mkdocs new mysite ;
  2. 切 换 到 mysite 目 录 下 , 并 使 用 mkdocs serve 在 本 地 运 行 。

第 三 步 …… 没 有 第 三 步 了 。 现 在 打 开 浏 览 器 , 输 入 localhost:8000,
就 能 预 览 到 MkDocs 帮 我 们 搭 建 好 的 文 档 站 点 了 。

osttoos 2 RPR ER 工 XR M SD ie

对 于 这 种 情 况 , 直 接 在 原 有 目 录 下 新 建 一 个 aocs 文 件 夹 并 包 含 一 个 名
为 indaex.md 的 Markdown 文 件 ; 同 时 在 原 有 目 录 下 再 新 建 一 个 名 为
mkdocs.ynml 的 文 件 并 填 写 基 本 信 息 之 后 , 就 能 直 接 通 过 mkdocs serve
看 到 效 果 了 。 例 如 :

my-exist-projct

[ 一 docs

index.md

厂 notes

| | mkaocs.mad
| L 一 python.md

L 一 sspai

一 一 mkdocs .Yml

i MKkDocs 搭 建 的 文 档 站 点 , 都 有 着 和 上 述 示 例 类 似 的 目 录

。 docs 文 件 夹 就 是 用 于 存 放 我 们 所 有 的 Markdown 格 式 的 文 档 内
容 , 当 然 我 们 也 可 根 据 自 己 的 需 要 进 一 步 用 文 件 夹 归 类 划 分 , 这
也 是 MkDocs 运 行 时 默 认 的 根 路 径 。 我 们 也 可 以 后 续 手 动 指 定 修
改 成 其 他 目 录 。

。 弥 c .yml 该 文 件 主 要 用 于 MkDocs 的 定 制 化 配 置 的 设 置 与 管

。 docs/index.mad 该 文 档 内 容 是 必 须 要 有 的 , 它 是 整 个 MkDocs 构
建 的 首 页 入 口

因 为 MKDocs 只 会 对 Markdown 文 件 进 行 处 理 , 因 此 我 们 除 了 需 要 将
自 己 电 子 化 的 记 录 或 者 笔 记 放 到 docs 这 一 目 录 之 外 , 还 需 要 确 保 这 些
女 档 女 位 的 扩 展 书 为 _ 的 Markrnwn 栓 汀 _

C d 一 ld

文 档 文 件 的 扩 展 名 为 .ma 的 Markdown 格 式 。

确 保 结 构 、 格 式 没 有 问 题 后 , 我 们 就 可 以 开 始 编 写 相 关 的 配 置 文 件 了 ,
国 免 吴 有 编 写 了 配 置 文 件 才 能 让 MkDocs 更 好 地 符 合 我 们 的 需 要 去 构

Anvo

插 曲 : YAML 配 置 文 件 格 式 速 成

稍 等 ! 虽 然 我 们 准 备 好 了 相 关 Markdown 的 文 档 内 容 , 但 想 要 MKDocs
炎 闪 H 伟 那 就 是 编 写 关 于 MkDocs 的 配 置 文

和 前 面 提 到 的 其 他 几 个 框 架 一 样 ,MkKDocs 也 存 在 许 多 可 选 配 霁 , 需 要
通 过 mkaocs .yml 这 一 个 YAAML 文 件 来 进 行 设 置 和 管 理 。 因 此 我 们 需 要
简 单 了 解 一 下 YAML 以 及 如 何 编 写 YAAML 文 件 。

YAML 是 YAML Aint Markup Language 的 递 归 缩 略 语 , 也 是 一 种 人 类
可 读 (human-readable) 的 数 据 序 列 化 语 言 , 其 文 件 扩 展 名 为 .yml 或
月 1 。 常 被 用 作 和 JSON 格 式 文 件 一 样 编 写 配 置 或 存 储

河 洁 皇 胡 师 李 根 长 连 人 十 孙 页 ( 善心 疯 技 e 仪 一 丨 侃 页 尼 眸 一
其 支 持 的 语 法 特 性 有 多 么 丰 富 。 不 过 , 虽 然 文 档 长 度 很 唱 人 , 但 「
怎 挂 1 罗技 连 筹 7 贺 升 01 时 许 宏 动 春 医 沥 佳 诊 根 绍 形 性 用 男 汀
20%f 的 语 法 并 不 常 用 , 需 要 我 们 额 外 查 阅 文 档 。 不 仅 如 此 , 由 扎
MkDocs 本 身 配 置 项 就 不 多 , 因 此 我 们 在 编 写 rtkaocs.yml 旷 ,

到 的 YAML 语 法 可 能 不 到 10%。

这 样 一 来 , 我 们 只 需 要 谨 记 以 下 三 个 核 心 元 素 的 用 法 , 就 能 应 付 大 多 数
YAML 配 置 需 求 , 包 括 本 文 的 主 角 MkDocs:

  1. 键 值 对 (Key-Value Pair)
  2. 缩 进 (indent)

“ El “ 巴 仪 三 一 Ab 工 毛 必 54
w RD 相 T 小 , 巳 J 尸 个 一 y 二 / 李 e

  1. 键 值 对 (Key-Value Pair)
    2 缩 进 (indent)
    . 同 一 层 级 下 不 能 有 重 名 键

键 值 对

eu 这 其 实 理 解
为 1 标 记 与 内 容 的 对 应 形 式 」 即 可 。

键 值 对 在 YAML 中 的 形 式 如 下 :

name: 100g1e

其 中 的 标 记 ( 键 ) 就 是 上 面 的 name, 在 现 实 生 活 中 可 以 表 现 为 我 们 很
多 属 性 的 代 称 , 伟 认 职 位 等 等 ; 而 内 容 ( 值 ) 就 是 这 些 代
称 下 的 具 体 详 情 , 比 少 数 派 鸽 子 等 等 。 这 在 YAML 中 通 过
一 个 : 英 文 冒 号 将 二 婉 明 招 洁 这 等 价 于 编 程 语 言 里 的 = 等 于 号 。
缩 进

YAML 用 空 格 缩 进 来 表 示 层 级 关 系 , 这 区 别 于 另 一 种 流 行 配 置 格 式
JSON 使 用 的 花 括 号 {}, 可 能 是 受 到 了 Python 的 影 响 。

family :
father :
name : foo
age: 100
Child :

name : bDaZ
需 要 注 意 的 是 , 空 格 (ASCI 码 值 为 32) 有 的 时 候 会 和 Tab 键 产 生 的
制 表 符 (ASCI 码 值 为 9) 混 在 一 起 , 二 者 单 从 外 观 上 来 看 无 法 分 辨 ,
因 此 为 避 免 YAAML 解 析 错 误 , 我 们 在 编 写 时 要 遮 循 YAML 官 方 缩 进 的
要 求 使 用 两 个 半 角 空 格 。

同 一 层 级 下 不 能 有 同 名 键

了 解 键 值 对 和 缩 进 值 后 , 我 们 还 需 要 注 意 的 一 点 就 是 YAML 不 允 许 在 同
一 层 级 下 出 现 相 同 的 键 , 例 如 :

father :
name : foo

age: 100

family :
father :

name : foo

age: 3

father : foo
father: foo

在 这 个 例 子 中 father 和 两 个 family/father 键 ( 行 文 方 便 起 见 , 我 这
里 会 以 文 件 路 径 的 形 式 表 现 层 级 关 系 ) 虽 然 同 名 , 但 因 为 它 们 并 不 在 一
个 层 级 中 , 因 此 并 不 会 产 生 冲 突 。

但 是 在 family 中 , 第 一 个 family/father 会 和 第 三 个 family/father
产 生 冲 突 , 因 为 它 们 同 级 且 同 名 。

这 就 好 比 在 同 一 个 班 级 里 有 两 个 同 名 的 张 三 , 同 学 们 如 果 只 是 看 名 字 肯
定 都 没 办 法 分 辨 得 出 提 到 的 是 哪 个 张 三 , 更 别 说 程 序 和 计 算 机 了 。

在 mkdocsyml 中 编 写 配 置

了 解 了 YAML 的 简 单 用 法 之 后 , 我 们 就 可 以 编 写 mkaocs .yml 文 件 了 。
在 编 写 的 过 程 中 我 们 会 碰 到 字 符 串 和 列 表 的 表 达 语 法 , 但 我 并 不 打 算 在
这 里 再 继 续 展 开 , 因 为 它 们 十 分 简 单 , 一 看 便 能 知 道 。

关 于 MKDocs 支 持 的 所 有 配 置 你 都 能 在 官 方 文 档 中 找 到 , 但 当 中 的 配
置 我 们 只 需 要 填 写 关 键 的 几 个 即 可 。

添 加 站 点 信 息

最 开 始 在 mkdocs.yml 文 件 中 填 写 的 主 要 还 是 关 于 站 点 相 关 的 信 息 。 其
中 我 们 可 以 填 写 的 有 那 么 几 个 :

Site_name : 站 点 名 称
site_ur1: 站 点 URL 链 接
Site_author : 站 点 作 者
site_description : 站 点 描 述

copyright: 版 权 信 息
repo_ur1: 站 点 仓 库 URL

F 人 h r 1 连 人 门 口 口
中 我 们 可 以 填 写 的 有 那 么 几 个 :

s site_name: 站 点 名 称

s site_url1: 站 点 URL 链 接

s site_author: 站 点 作 者

s site_description: 站 点 描 述
s copyright: 版 权 信 息

s repo_url1: 站 点 仓 库 URL

其 中 , 只 有 两 个 必 须 要 填 写 的 配 置 项 就 是 site_name 站 点 名 称 和
site_ur1l 站 点 URL 链 接 。 例 如 :

site_name: “My Notes“

site_url1: “http: //:/

但 如 果 我 们 使 用 的 是 ,mkaocs serve 来 本 地 运 行 , 那 么 无 需 填 写
site_url, 因 为 MkDocs 会 自 动 将 其 挂 在 本 地 的

http://127.0.0.1:8000/

除 此 之 外 的 选 项 都 是 选 填 , 如 果 填 写 了 则 MkDocs 会 将 其 作 为 元 数 据
或 元 素 渲染 最 后 的 HTML 中 。

添 加 文 档 路 径

既 然 我 们 想 要 搭 建 的 是 一 个 文 档 站 点 , 那 么 文 档 内 容 才 是 关 键 , 除 了 对
内 容 进 行 必 要 的 排 版 校 对 之 外 , 如 何 组 织 文 档 或 是 让 文 档 以 清 晰 有 层 次
的 结 构 展 示 也 是 必 不 可 少 的 。

MKDocs 提 供 工 让 使 用 者 能 够 自 由 安 排 文 档 层 级 结 构 或 目 录 编 排 的 设
置 , 这 将 决 定 最 后 文 档 在 站 点 中 的 编 排 效 果 如 何 。 这 里 主 要 是 通 过 nav
项 来 进 行 配 置 :

DaV :
既 然 我 们 想 要 搭 建 的 是 一 个 文 档 站 点 , 那 么 文 档 内 容 才 是 关 键 , 除 了 对
内 容 进 行 必 要 的 排 版 校 对 之 外 , 如 何 组 织 文 档 或 是 让 文 档 仪 清 晰 有 层 次
的 结 构 展 示 也 是 必 不 可 少 的 。

MKDocs 提 供 工 让 使 用 者 能 够 自 由 安 排 文 档 层 级 结 构 或 目 录 编 排 的 设
置 , 这 将 决 定 最 后 文 档 在 站 点 中 的 编 排 效 果 如 何 。 这 里 主 要 是 通 过 nav
项 李 进 行 配 置 :

nav:

  • “index .md「

  • user-guide :

  • _quickstart: “user-guide/quickstart .md “

  • usage: “hser-guide/how-to-use-MKDocs .md 「

  • “about .md 「

  • “1icense.md「

在 该 设 置 项 中 , 使 用 了 YAML 所 支 持 的 列 表 语 法 , 这 和 Markdown 的
无 序 列 表 语 法 是 完 全 一 致 。 默 认 情 况 下 如 果 不 指 定 键 名 ,MKkDocs 会 自
动 根 据 列 举 的 Markdown 文 件 名 字 符 串 来 确 定 最 终 该 页 面 的 名 称 如 何 ;
如 果 我 们 手 动 指 定 了 键 名 , TE 比 如 这 里 的

user-guide/usage 这 一 部

需 要 注 意 的 是 , 前 面 对 于 水 MkDocs
默 认 会 将 项 目 目 录 下 的 aocs 目 录 作 为 默 认 的 根 路 径 , 所 以 在 nav 设 置
小 技 芸 沥 暨 居 是 雯 心 林 目 余 吊 命 那 么 就 是 只 需 要 填 写 相 对 路
代 。

这 也 是 为 什 么 在 上 述 例 子 中 的 user-guide 这 一 部 分 下 的 文 档 路 径 都 不
需 要 写 成 docs/user-guide/XXXX.md 的 原 因 。
中 我 们 如 果 指 定 的 是 该 目 录 下 的 其 他 内 容 , 那 么 就 是 只 需 要 填 写 相 对 路
代 。

这 也 是 为 什 么 在 上 述 例 子 中 的 user-guide 这 一 部 分 下 的 文 档 路 径 都 不
需 要 写 成 docs/user-guide/XXXX.md 的 原 因 。

同 时 , 最 终 MkDocs 也 会 根 据 nav 配 置 的 层 级 关 系 将 内 容 的 层 级 关 系
或 包 含 关 系 一 同 渲染 。

当 然 , 如 果 你 不 想 使 用 MKDocs 的 默 认 目 录 , 那 么 你 也 可 以 通 过 修 改
adocs_dqir 选 项 来 指 定 对 应 的 文 件 夹 名 称 。 但 通 常 情 况 我 们 都 不 需 要 进
行 修 改 就 已 经 能 满 足 我 们 的 基 本 需 要 了 。

用 扩 展 和 主 题 武 装 MkDocs

基 本 上 我 们 只 需 要 将 站 点 信 息 和 文 档 路 径 在 mkaocs .yml 文 件 中 填 写 好
就 已 经 可 以 运 行 MkDocs 了 。 不 过 MkDocs 为 使 用 者 预 留 了 可 扩 展 的
配 置 , 方 便 使 用 者 去 添 加 其 他 开 发 者 所 开 发 的 主 题 、 扩 展 等 功 能 。

Markdown 扩 展

MkDocs 使 用 Python-Markdown 库 (Markdown 规 范 的 Python 实 现 )
来 渲染 Markdownh 内 容 , 因 此 MkDocs 中 对 于 Markdown 内 容 渲染 的
扩 展 也 是 来 自 于 此 。 我 们 可 以 在 Python-Markdown 的 官 方 文 档 中 浏
览 到 目 前 所 支 持 的 「Markdown 扩 展 有 哪 些 。

1 一 Markdown 内 容 标 题 的 固 定 标 识 符 、 脚 注 以 及 表
markdown_extensions :

toC :

permalink: True
MkDocs 使 用 Python-Markdown 库 (Markdown 规 范 的 Python 实 现 )
来 渲染 Markdownh 内 容 , 因 此 MkDocs 中 对 于 Markdown 内 容 渲染 的
扩 展 也 是 来 自 于 此 。 我 们 可 以 在 Python-Markdown 的 官 方 文 档 中 浏
览 到 目 前 所 支 持 的 「Markdown 扩 展 有 哪 些 。

1 一 Markdown 内 容 标 题 的 固 定 标 识 符 、 脚 注 以 及 表

markdown_extensions :

  • toc:
    permalink: True
  • footnotes

= 七 ableS

除 此 之 外 ,Python-Markdown 还 支 持 一 些 来 自 于 第 三 方 的 Markdown
扩 展 你 能 在 Python-Markdown 的 Github 仓 库 中 的 Wiki 页 面 找 到 符
佳 绫 需 要 的 扩 展 , 比 如 支 持 数 学 公 式 、emoji 表 情 、 增 强 Markdown 语
/ 八 如

但 这 些 第 三 方 扩 展 都 还 是 需 要 通 过 pip 工 具 ( 安 装 Python 解 释 器 时 会
自 带 ) 来 进 行 安 装 , 安 装 之 后 在 mkdocs.yml 中 的 markdown_extension
部 分 继 续 追 加 。

这 里 我 下 载 了 一 个 名 为 markdown-checklist 的 扩 展 , 使 我 的
Markdown 文 档 内 容 支 持 清 单 列 表 的 预 览 样 式 。

pip install markdown-check1is 七

安 装 完 成 后 将 其 添 加 到 markdown_extension 中 , 注 意 , 这 里 是 需 要 安
装 插 件 对 应 文 档 的 名 称 来 填 写 包 含 相 应 的 makeEgxtension 属 性 的 模 块
动 姚 孟 了 Markqnwn 店 中 rs+anain 的 娄 “ 所 | 我 设 惧 A 了
或 继 承 了 Markdown 库 中 Extension 河 所 以 我 就 填 入 了

ImiaIL kdown__ checklist .extensionl 这 一

markdown_extensions :

  • toc :
    permalink: True

footnotes

  • 七 abl1eS

  • markdown_check1ist.extension

最 后 运 行 MkDocs 后 就 可 以 看 到 其 对 应 的 效 果 了 。

园 FlaskBack

气 立 D “@ 1270.01:8000 “ 善 克 @@ _ 围 明 智 _ 口 明 , 六 白 屋

FlaskBack

口 | 为 Hithere

“ v taskK2
《 tasK3

王 育 2 MKDocs 默 认 的 主 题 已 经 相 当 简 约 美 观

不 过 , 如 果 你 有 一 定 的 HTML、CSS 以 及 JavaScript 基 础 , 对 MkDocs
默 认 的 主 题 样 式 存 在 某 些 想 要 定 制 化 的 部 分 , 那 么 你 可 以 通 过 设 置

extra_templateS 、 eXxta_CSS 和 extra _javascript 二 三 个 选 项 来 进 行
局 部 调 整 。 哪 怕 你 是 想 从 头 到 尾 自 己 定 制 一 套 主 题 样 式 , 那 么 MkDocs
也 能 如 你 所 愿 , 还 有 专 门 的 文 档 来 指 导 你 如 何 去 操 作 。

当 然 , 更 多 时 候 我 们 会 希 望 直 接 套 用 别 人 定 制 好 的 主 题 。 对 此 , 你 同 样
i MkDocs 的 Github 仓 库 中 的 Wiki 页 面 中 找 到 你 心 仪 的 主 题 样
工 vo

无 论 是 自 己 定 制 还 是 使 用 第 三 方 的 主 题 样 式 , 想 要 主 题 样 式 生 效 , 最 后
都 需 要 通 过 配 置 文 件 中 的 theme 项 来 进 行 配 置 。

比 如 我 这 里 使 用 了 目 前 使 用 度 最 广 泛 的 MkDocs 第 三 方 主 题 样 式
Material for MkDocs, 使 得 MkDocs 能 够 以 Google 推 行 的 Material
Design 风 格 呈 现

但 因 为 该 主 题 属 于 第 三 方 主 题 样 式 , 我 们 需 要 使 用 前 面 安 装 MkKDocs
使 用 的 pip 工 具 进 行 安 装 :

pip install mkdocs-material

安 装 完 成 后 , 我 们 只 需 要 在 mkdocs.ymil 文 件 中 进 行 配 置 即 可 :

theme :

name : mate1al

之 后 我 们 就 能 得 到 一 个 Material Design 风 格 的 MkDocs 站 点 了 , 这 个
站 点 甚 至 还 有 自 适 应 的 暗 黑 模 式 (Dark Mode) 。
HA e - 一 4 GeoGoeo e e

临 Apscheduler

Pasiesex

Pasesex

夙 可 M 朋 阜 有 步

djet0 有 法

站 点 生 成 与 部 署

如 果 你 只 是 临 时 用 于 离 线 浏 览 文 档 , 那 么 使 用 mkdocs serve 命 令 其 实
足 矣 ; 但 如 果 你 是 打 算 作 为 个 人 站 点 或 主 页 部 暑 到 云 服 务 器 , 那 么 你 就
需 要 将 整 个 文 档 项 目 编 译 打 包 , 最 后 放 到 对 应 的 服 务 器 上 部 署 。

这 里 MkDocs 给 我 们 提 供 了 两 个 选 项 : 一 个 是 使 用 mkdocs build 命 令
将 项 目 打 包 之 后 , 再 由 个 人 将 打 包 文 件 上 传 至 服 务 器 对 应 的 目 录 下 进 行
部 署 ; 另 外 一 个 就 是 如 果 你 有 打 算 使 用 Github Pages 来 作 为 展 示 的 站
点 ( 参 见 GitHub Pages 搭 建 教 程 ) , 那 么 我 们 就 只 需 要 使 用 mkdocs

gh-aeploy 这 一 条 命 令 就 可 以 帮 我 们 完 成 部 署 任 务 。

人 仁 应 人 水 心 一 c t 门 口

如 果 你 只 是 临 时 用 于 离 线 浏 览 文 档 , 那 么 使 用 mkdocs serve 命 令 其 实
足 矣 ; 但 如 果 你 是 打 算 作 为 个 人 站 点 或 主 页 部 暑 到 云 服 务 器 , 那 么 你 就
需 要 将 整 个 文 档 项 目 编 译 打 包 , 最 后 放 到 对 应 的 服 务 器 上 部 署 。

这 里 MkDocs 给 我 们 提 供 了 两 个 选 项 : 一 个 是 使 用 mkdocs build 命 令
将 项 目 打 包 之 后 , 再 由 个 人 将 打 包 文 件 上 传 至 服 务 器 对 应 的 目 录 下 进 行
部 署 ; 另 外 一 个 就 是 如 果 你 有 打 算 使 用 Github Pages 来 作 为 展 示 的 站
点 ( 参 见 GitHub Pages 搭 建 教 程 ) , 那 么 我 们 就 只 需 要 使 用 mkdocs
gh-aeploy 这 一 条 命 令 就 可 以 帮 我 们 完 成 部 署 任 务 。

该 命 令 的 过 程 主 要 是 先 将 编 译 打 包 好 的 相 关 资 源 文 件 ( 如 HTML 页
面 、 样 式 、 静 态 资 源 图 片 、 用 于 交 互 的 JavaScript 等 ) 上 传 至 对 应 个
人 Github 用 户 名 的 Github Pages 仓 库 中 , 然 后 再 利 用 GitHub Actions

来 保 持 站 点 活 跃 。

这 样 我 们 每 次 只 需 要 在 本 地 更 新 内 容 之 后 , 通 过 该 命 令 进 行 提 交 、 部
署 , 就 可 以 实 现 文 档 内 容 的 更 新 。

DERELNIELNLL SILIIGL

sanewiepostoy onthe commandine

nponcm

相 相 Microsoft

pooao

主 白 广

a +- @-

园 Microsoft

注 : 由 一 仪 定 时 间 ( 大 约 在 几 分 钟 到 十 分 钟 不
等 ) , 因 此 部 署 完 成 后 你 需 要 等 待 一 会 儿 才 能 看 到 Github Pages 生
效 , 口 贤 妮 邹 环 404 错 误 。

士 1 五
结 语

对 程 序 员 来 说 , 大 部 分 时 间 都 花 在 了 写 文 档 和 Debug 上 。 e
过 相 应 工 具 来 慢 慢 排 查 并 通 过 少 量 代 码 去 解 决 , 但 除 了 自 动 生 成 的 文 档
之 外 , 大 部 分 情 况 下 都 必 须 要 人 为 撰 写 。 可 内 容 写 出 来 是 一 回 事 , 展 示
得 是 口 妥 当 又 是 另 外 一 回 事 。

使 用 MKDocs 就 像 Markdown 一 样 , 一 定 程 度 上 能 够 减 少 使 用 者 内 容
e 而 让 使 用 者 能 更 加 专 注 于 记 录 或 写 作 的
谷 o

可 根

关 于 MkKDocs 的 更 多 内 容 本 文 五 没 有 进 一 步 展 开 , 但 如 果 你 有 兴 趣 或
有 需 要 , 可 以 到 MkDocs 的 Github Wiki 页 面 进 一 步 探 索 MkDocs 生

Z o

Backlinks