欢迎
欢迎访问!本网站记录了我的一部分个人笔记,由 mkdocs 搭建,使用的主题是 mkdocs-material
创建方式
通常静态博客都是由一堆 markdown 组成。markdown 很简洁,但明显不够用。学习笔记有各种各样的格式,除了 markdown,有时会直接用 word 或者 ppt 来写,有时看到好的内容会保存为照片、网页或者 pdf 等,甚至经常会有视频文件(尤其是一些系统性的课程)。
曾经尝试过使用 markdown 组织博客,我觉得受限太多,失去了意义。因此本仓库是由另一个文件夹转换而来,其中原始文件夹里面包含了各种各样的笔记,通过 python 脚本将其转换为 markdown 以此来在网页中显示。比如 pdf 文件,我会将其转为图片,然后将这些图片写入到 markdown 中,这样在网页上就能够将其显示出来了。
目前各个格式的文件转换还在开发中。我觉得肯定很多地方尚不完善,比如 word 我是用 docx2pdf 转为 pdf 后再转为图片,期间经常会报错。如果您有任何格式转换的方法和建议,烦请帮忙告知我一下,谢谢。
各种格式转换方式
格式 | 方式 |
---|---|
markdown | 直接转换,会检查其中的引用链接,找到引用的文件(通常是图片),将其移动到资源仓库中,然后修改原始文件的链接内容 |
ipynb | 使用 jupyter nbconvert 进行转换 |
使用 pdfium 转为图片,将图片合成到一个 markdown 中 | |
word | 使用 docx2pdf 转为 pdf,再转为图片,将图片合成到一个 markdown 中 |
ppt | 使用 pptx2pdf 转为 pdf,再转为图片,将图片合成到一个 markdown 中 |
txt | 直接使用 ``` 包起来 |
更新说明
2025.06.21
主页隐藏导航栏,使用 Section index 的特性,即点击某个子文件夹,会自动显示其对应下的 index.md 文章。该特性和 mkdocs-awesome-pages
冲突,所以不用该插件,花了几小时手动写了转换脚本实现该功能。目前是直接在 mkdocs.yml
中放入 nav
字段来完成的。
2025.06.18
优化了网页风格,参考了 vscode markdown preview enhanced 里面的 vue.js
样式,好看多了。
2025.06.16
优化资源文件存储方式,将 image、pdf 等相关资源文件存储到根据路径计算的 MD5 目录下,防止同名覆盖问题。修复了转换时候的跳转链接不正确问题,目前无破损链接。
2025.06.14
解决 mkdocs 无法渲染 <details>
的问题,原始文件使用 <details>
,转换时将其修改为 ??? note
对应格式。
2025.01.12
添加了 giscus 评论区支持。
2025.01.11
修改了 word 转换图片的格式,并且对于这种类型的文章,自动隐藏右边的 toc。
2024.11.23
修改导航栏配置,可根据 topdir.yml 文件设置导航栏,并按照该文件设定顺序。
2024.11.20
配置大改动。添加导航栏,并修改了侧边栏的一些配置,此外添加了 Google Analytics 支持和文章末尾的赞成和反对选择。
2024.11.12
添加 link 文件的支持,支持 windows 快捷方式;已经自定义的以 .link 结尾的文件,该文件里面内容就是跳转的文件路径。
2024.11.03
修改转换 txt 文件的细节,会根据文件内容中是否有 #
来判断转换方式。
2024.11.02
增加记录时间功能,即转换时会判断文件上次是否转换过以及转换的时间,以此跳过未改动文件的处理。
2024.11.01
利用 mkdocs-awesome-pages-plugin,源目录可使用 .pages 控制侧边栏的顺序和名字。
2024.10.20
添加 txt 文件的支持。
2024.10.13
添加 markdown、ipynb、pdf、word、ppt 文件的支持。
2024.10.12
初始创建。
需要做的事情
☑️列表如何强制按照输入序号渲染
已解决,转换时检测有序序号,在点前面加个反斜杠
☑️符号的渲染,默认下源文件必须要空一行才能算换行
已解决,使用 n2lbr
extension 即可
☑️txt 中有 code block 怎么办
已解决,首尾从原来的三个 变为五个
☑️添加评论系统
已解决,就使用默认的 Giscus,这篇文章给了我很大的启发。或许博客的评论系统需要登录反而是一件好事。
☑️图像处理的文章自动生成需要修改格式,比如图片的链接
已解决,完善转换程序即可
☑️本地维护一个多媒体备份
已解决,完善转换程序即可。程序解析原始文件中的链接,然后将其放入 asset 目录,并且是按照文件路径计算的 MD5 值,资源放在的是 asset 的该名称子目录,这样也防止同名文件。。
☑️mkdocs 折叠的样式在普通编辑器下无法显示
普通编辑器下可以使用 <detais>
,这是通用的语法,一般都会支持(而且我怎么感觉这种样式其实比 mkdocs 的 note 折叠更好看)
但是 mkdocs 中渲染 <details>
有问题(链接0,所以使用转换程序将 <details>
转成 ??? note "xxx"
。
保存笔记的网页链接,并且维护一个数据库,即路径和保存文件名
目前写了识别链接,没啥好说的,AI 帮忙写正则。后续考虑调用 single-file 下载,然后对应位置修改为 [xx](web_url)([本地连接](local_path))
需要生成目录树
https://www.w3schools.com/howto/howto_js_treeview.asp
目前导航栏就是脚本自动生成的,所以现在只需要寻找一个合理美观的展示插件即可。
能否在线编辑??
目前的打算:将原始笔记放入 github 私有仓库,在对应生成 MD 文章中添加原始文件的链接,点击之后即可跳转到 github 进行修改。这样的方式虽然修改非 markdown 文件较麻烦,但没有必要为了这些少数而牺牲大量时间去思考解决方法。
有些代码或视频要分享,则通过上传云盘,然后生成链接。
好难.. 一个是如何识别哪些代码考虑需要分享?或许是文件链接里面有 code;第二个是如何方向,百度网盘每次手动生成分享链接???而且也没法在线下载.. 感觉要上 Alist 之类的工具
需要添加功能:支持有文件夹或文件不能上传,但是如果文件夹或文件修改名字怎么办?
目前是在名字后面添加 '#不上传' 来区分了,这种最直观,等 windows 支持标签管理吧...
☑️数学渲染问题
只要注意 $$
记得上下要有空行即可,并且原笔记文件也有对应脚本进行这样的检查。