- 这部分内容主要展示和说明这个仓库的特别之处内容
中文搜索支持
- 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: 正常构建,生成 HTMLencrypt.py post book: build 后运行,对记录的文件,提取渲染后的 HTML 内容进行 AES-256-CBC 加密,替换为密文 div- 前端
encrypt.js用浏览器原生 Web Crypto API 解密,零第三方依赖
密码缓存
- 解密成功后密码自动缓存在
localStorage,key 为页面路径 - 再次访问同一页面自动解密,无需重复输入
- 密码变更后缓存自动失效,会重新弹出密码框