说明本文核心内容在笔者的笔记本网站原文中亦有记载,此页面为整理重制版。
有了前面的一系列工作,我们的 MkDocs 网站已经可以正常生成和部署了,请读者务必对整套流程熟悉之后再继续阅读本文。
本文中,笔者将通过几个例子,介绍一些 MkDocs 的高级用法。
配置评论系统
有很多评论系统可以集成到 MkDocs 中,这里选用最常用的 Giscus 作为例子,请读者以官方文档为准。
首先要安装 Giscus GitHub App 并授权给你的仓库。
然后,去 Giscus 官网,跟着提示引导一步一步走下来,会获得一段代码,类似这样:
<script src="https://giscus.app/client.js" data-repo="Fanovian/notebook" data-repo-id="R_kgDOJ2i3-Q" data-category="Announcements" data-category-id="DIC_kwDOJ2i3-c4CXtT_" data-mapping="pathname" data-strict="0" data-reactions-enabled="1" data-emit-metadata="0" data-input-position="bottom" data-theme="preferred_color_scheme" data-lang="zh-CN" crossorigin="anonymous" async></script>
接着在网站根目录创建目录和文件编辑 overrides/comments.html
文件:
{% if page.meta.comments %} <h2 id="__comments">{{ lang.t("meta.comments") }}</h2> <!-- Insert generated snippet here -->
<!-- Synchronize Giscus theme with palette --> <script> var giscus = document.querySelector("script[src*=giscus]")
// Set palette on initial load var palette = __md_get("__palette") if (palette && typeof palette.color === "object") { var theme = palette.color.scheme === "slate" ? "transparent_dark" : "light"
// Instruct Giscus to set theme giscus.setAttribute("data-theme", theme) }
// Register event handlers after documented loaded document.addEventListener("DOMContentLoaded", function() { var ref = document.querySelector("[data-md-component=palette]") ref.addEventListener("change", function() { var palette = __md_get("__palette") if (palette && typeof palette.color === "object") { var theme = palette.color.scheme === "slate" ? "transparent_dark" : "light"
// Instruct Giscus to change theme var frame = document.querySelector(".giscus-frame") frame.contentWindow.postMessage( { giscus: { setConfig: { theme } } }, "https://giscus.app" ) } }) }) </script>{% endif %}
第三行的 <!-- Insert generated snippet here -->
处粘贴上面的 Giscus 代码。
如果你对前端三件套比较了解,也可以对这个文件进行一些修改,比如添加一些样式。
配置好之后记得在 mkdocs.yml
文件中添加:
theme: custom_dir: overrides
来把这个文件引入到主题中。除此之外,许多其他自定义的 html 文件也可以放在这个文件夹中,这里直接在主题中一次引入了。
然后在你想要添加评论的页面的 Markdown 文件的头部添加:
---comments: true---
即可在这个页面中添加评论系统。
添加顶部公告
在 overrides
文件夹中创建 main.html
文件:
{% extends "base.html" %}
{% block announce %} <!-- Add announcement here, including arbitrary HTML -->{% endblock %}
中间填写 HTML 格式的公告内容。
然后在 mkdocs.yml
文件中添加:
theme: custom_dir: overrides features: - announce.dismiss
最后一行的作用是读者可以关闭公告直至公告内容更新,关掉功能则公告常驻。
自定义配色和字体
这个属于 CSS 的内容了。在 docs
文件夹下创建 stylesheets
文件夹,然后在其中创建 extra.css
文件。
在 extra.css
文件中写入你的 CSS 代码,比如:
:root { --md-primary-fg-color: #0287ac; --md-primary-fg-color--light: #0287ac; --md-primary-fg-color--dark: #0287ac; --md-accent-fg-color: #0287ac;
/* --md-text-font: "LXGW WenKai Screen"; --md-code-font: "Menlo", "LXGW WenKai Screen"; */}
[data-md-color-scheme="default"] { --md-footer-bg-color--dark: #ffffffd5; --md-footer-fg-color--light: #000000c6; --md-footer-fg-color--lighter: #0000009d; --md-footer-fg-color--lightest: #000000;}
[data-md-color-scheme="slate"] { --md-default-bg-color: #131313; /* --md-default-bg-color--light: #161616; --md-default-bg-color--lighter: #161616; --md-default-bg-color--lightest: #161616; */ --md-default-fg-color: rgba(255, 253, 253, 0.868); --md-default-fg-color--light: rgba(255, 255, 255, 0.854); --md-default-fg-color--lighter: rgba(255, 255, 255, 0.393); --md-default-fg-color--lightest: rgba(255, 255, 255, 0.58); --md-primary-fg-color: #1f1e33; --md-typeset-a-color: #ffffff; --md-footer-fg-color: #fff; --md-footer-bg-color: var(--md-default-bg-color); --md-footer-bg-color--dark: var(--md-default-bg-color); --md-footer-fg-color--light: #ffffffc3; --md-footer-fg-color--lighter: #ffffffc4; --md-code-bg-color: #1c1c1c;}
.md-header__title { font-weight: bold; font-family: "LXGW Wenkai Screen", sans-serif;}
笔者这里对日间模式和夜间模式都单独设置了一些自己喜欢的颜色,这些颜色的参数很多,具体可以看 Material for MkDocs 作者给出的示例,里面包含了所有的颜色定义。
同时笔者也对字体进行了设置,这里设置了正文和代码的字体,这里的字体是笔者自己下载的字体,你可以根据自己的喜好更改,可以是网上的字体链接,也可以下载之后引入。
我的字体选择
正文中,笔者使用非常出名的开源字体 霞鹜文楷,这是一款非常适合中文阅读的字体,同时也支持英文和数字。在网站设置中,参考了文章在站点网页中使用霞鹜文楷(LXGW WenKai),将字体 CSS 链接引入,使用的是屏幕阅读优化的版本。
代码字体是 Maple Font,具体可以前往其官网查看,比较符合笔者的审美。
我的配色方案
夹带点私货 (*´∀`)~♥
- 网站的日间模式主题色(#0287ac)来源于动画《Girls Band Cry》中登场角色河原木桃香的代表色(#85c9dc),经过针对可读性的优化而得。
- 网站的夜间模式主题色(#1f1e33)来源于曲师 かめりあ 的 Arcaea 独占曲目《#1f1e33》。
插件的引入
笔者使用了两个额外的 MkDocs 插件。
一个是 TonyCrane 学长的字数统计插件。
另一个是 ignorantshr 和 timvink 开发的自动标题插件。
插件的具体使用方式直接看仓库中的 README 即可。
需要注意的是,在本地安装好插件就可以渲染出效果,但是在 GitHub Pages 上渲染出效果需要构建页面的工作流中让 GitHub Actions 安装这些插件,需要在 PublishMySite.yml
文件中添加:
jobs: # 工作流的具体内容 deploy: runs-on: ubuntu-latest # 创建一个新的云端虚拟机 使用最新Ubuntu系统 steps: - uses: actions/checkout@v2 # 先checkout到main分支 - uses: actions/setup-python@v2 # 再安装Python3和相关环境 with: python-version: 3.x - run: pip install mkdocs-material # 使用pip包管理工具安装mkdocs-material - run: pip install mkdocs-statistics-plugin # 安装mkdocs-statistics-plugin - run: pip install mkdocs-add-number-plugin # 安装mkdocs-add-number-plugin - run: mkdocs gh-deploy --force # 使用mkdocs-material部署gh-pages分支
即先安装好所有的插件,然后再部署网站。否则 Actions 会报错。
此外在网站的主页自定义样式中还用到了下列插件: