• 这部分内容主要展示和说明这个仓库的特别之处内容

中文搜索支持

  • mdbook 本身生成的静态资源并不直接支持中文搜索只能搜索英文
  • 我在下面的参考下通过添加js文件,解决了这个问题

[!NOTE] 参考 小霖家的混江龙 Support CJK (mutiple language) search · Issue #2052 · rust-lang/mdBook · GitHub

中文url无法跳转问题

  • 默认的 obsidian-export 出现了中文无法跳转的问题
  • 我更改了他的源代码自己编译了一份解决
  • 更改后的github链接

添加右侧大纲

  • 类似obsidian右边的大纲系统

[!NOTE] 参考 GitHub - JorelAli/mdBook-pagetoc: A page table of contents for mdBook

其他改进了的特性

  • 无法识别 [[]] 语法的问题,使用obsidian-export 解决了 old
  • obsidian本体的==高亮设置==
  • obsidian的tag识别和搜索 #tag
  • 多行应用不会换行的问题

example next line

[!important] 引用语法识别 类似这种

  • math公式支持, 类似 $$a^2=b^2+c^2$$

笔记加密

  • 支持对指定笔记设置密码保护,前端 AES-256-CBC 解密,防君子不防小人
  • 密码本地缓存在浏览器 localStorage 中,同一页面不用重复输入

使用方法

在 obsidian 笔记的开头添加 front-matter:

---
password: "你的密码"
---

正文内容...
  • 带 password 字段的笔记会被加密,构建时正文被 AES 加密为密文,前端输入密码后解密显示
  • 不带 password 的 front-matter 会在构建时自动去掉,不会渲染为 <hr>

工作原理

  • encrypt.py pre src: build 前运行,去掉所有 front-matter,记录有 password 的文件
  • mdbook build: 正常构建,生成 HTML
  • encrypt.py post book: build 后运行,对记录的文件,提取渲染后的 HTML 内容进行 AES-256-CBC 加密,替换为密文 div
  • 前端 encrypt.js 用浏览器原生 Web Crypto API 解密,零第三方依赖

密码缓存

  • 解密成功后密码自动缓存在 localStorage,key 为页面路径
  • 再次访问同一页面自动解密,无需重复输入
  • 密码变更后缓存自动失效,会重新弹出密码框