本文基于Typora+Hugo+Gitee的笔记系统
,仅把Typora
改成Obsidian
而已。
Obsidian
是一个强大的知识库,可在纯文本Markdown文件的本地文件夹上运行。 支持双向链接
(Roam Link)。
通过gitee
可实现云同步;通过gitee pages
可以发布成网页。
但是,Hugo
无法解析Obsidian
的双向链接
,解决这个问题是本文的目标。
【解决方案】 我通过shell脚本
和Hugo短代码
的配合解决这个问题。 通过shell脚本
将Obsidian
的双向链接
转换成Hugo
可以识别的自定义格式;Hugo短代码
则负责解析这种自定义格式。
本笔记系统是我自用,仅供参考。
...
缘由
由于Hugo对Markdown的解析和LaTeX存在诸多冲突。比如:当LaTex中出现\\
、\{
、\}
之类的东西,Hugo就无法正常解析数学公式。
解决方案之一就是用Hugo的shortcodes
机制,在md文件中用形如{{< katex [display] >}}latex code{{< /katex >}}
格式。
这样一来,网站显示正常了,但在本地Typora就无法识别了。 个人体验不好。
于是我想到用流编编器sed
对md内容进行替换。 我以前用sed
都是简单的情况,复杂需求我就不会用了。 于是有了此文。
...
目标(配置好后的日常操作)
更新流程简单舒服,页面主题简洁,完全支持Markdown+LaTeX。
1)本地撰写内容:用Typora写基于Markdown+LaTeX的内容。
2)利用静态网站生成器Hugo生成待发布的静态文件: 执行./forgitee
。
- 这个脚本实际依次执行了:1. 对所有md文件进行部分内容替换,确保站点可以完全解析; 2. 执行
hugo -D
,生成待发布的静态文件,生成文件夹public
; 3. 执行./fortypora
对所有md文件进行逆向置换复原,确保Typora打开能完全显示正常。
3) 将站点git提交到码云(gitee): https://gitee.com/chaoskey/notes
- 包括站点全部源码(相当于文档云同步)和生成的静态文件目录
public
。
4) 部署到: https://chaoskey.gitee.io/notes
5) 一键发布的脚本./publish
(注意,必须根据你自己的情况修改之),依次执行了: 1. ./forgitee
; 2. 将修改过的笔记提交到master
分支; 3. 将public
提交到gh-pages
分支; 4. 将gh-pages
分支push
到gitee
和github
。
...