Hexo的自定义配置
vscode 代码片段配置
像 HTML 一样, hexo 可以自定义很多标注性质的词法来渲染不容类型的信息进行展示, 而像我这样的懒人, 一般不乐意一直不停的敲那些一成不变的代码片段, 所以在 blog 根目录下建立一个隐藏文件夹 .vscode
, 在这个文件夹内新建文件 snippets.code-snippets
可以定义更短的代码来触发代码片段, 方便内容编辑.
所以现在我正在使用的 blog 所拥有的代码片段用 mermaid 图展示就是:
stateDiagram-v2 direction LR [*]-->BBlock [*]-->ThmBlock [*]-->RefBlock state BBlock { direction LR Mermaid: >mermaid MermaidDesc: mermaid图 Bubble: >bubble BubbleDesc: 用来显示鼠标悬停信息 Mermaid-->MermaidDesc Bubble-->BubbleDesc } state ThmBlock { direction LR Def: >def DefDesc: 定义区块 Thm: >thm ThmDesc: 定理区块 Lemma: >lem LemmaDesc: 引理区块 Hint: >hint HintDesc: 提示, 折叠消息类 Ques: >ques QuesDesc: 问题区块 Example: >example ExampleDesc: 例子区块 Otherproof: >otherproof OtherproofDesc: 对于多种证法的证明使用tab页 Def-->DefDesc Thm-->ThmDesc Lemma-->LemmaDesc Hint-->HintDesc Ques-->QuesDesc Example-->ExampleDesc Otherproof-->OtherproofDesc } state RefBlock { direction LR Label: >label LabelDesc: 用于在文章内跳转的标签 Ref: >ref RefDesc: 引用文章内的标签 Cite: >cite CiteDesc: 引用文章 Label-->LabelDesc Ref-->RefDesc Cite-->CiteDesc }
自定义配置mathjax
首先根据baidu出来的信息, 找到简书上的教程, 然后在参考MathJax官方教程在本地找到文件[blog path]/themes/butterfly/layout/includes/third-party/math/mathjax.pug
进行修改, 为了防止链接实效, 将简要步骤叙述如下:
step 1
更换Hexo的markdown渲染引擎, hexo-renderer-kramed引擎
是在默认的渲染引擎hexo-renderer-marked
的基础上修改了一些bug, 两者比较接近, 也比较轻量级.
1 | npm uninstall hexo-renderer-marked --save |
执行上面的命令即可, 先卸载原来的渲染引擎, 再安装新的. 更换引擎后行间公式可以正确渲染了, 但是这样还没有完全解决问题, 行内公式的渲染还是有问题, 因为hexo-renderer-kramed引擎
也有语义冲突的问题. 接下来到博客根目录下, 找到node_modules\kramed\lib\rules\inline.js
, 把第11行的escape变量的值做相应的修改:
1 | // escape: /^\\([\\`*{}\[\]()#$+\-.!_>])/, |
这一步是在原基础上取消了对\,{,}的转义(escape).
同时把第20行的em
变量也要做相应的修改.
1 | // em: /^\b_((?:__|[\s\S])+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/, |
重新启动hexo(先clean再generate), 问题完美解决.
step 2
参考MathJax官方教程, 在本地找到文件[blog path]/themes/butterfly/layout/includes/third-party/math/mathjax.pug
进行添加以下行:
1 | ... |
如此便可以在hexo编写数学公式时使用自定义宏\ud
和\RR
来分别表示正体积分微元符号d
和花写实数集R
.
自定义配置搜索
在blog根目录执行以下代码:
1 | npm install hexo-generator-searchdb --save |
在_config.yml
文件中新增以下代码段
1 | search: |
在hexo博客所选择的主题, 比如_config.yml
, 中增加以下配置即可
1 | Local search |
在blog中调用latex包
1 | $ |
mathjax 的其它书写功能模板展示
交叉引用
1 | $$ |
这里我们引用$\eqref{eq}$。
Hexo 主题 butterfly 的目录结构
graph LR; A[butterfly]-->B[languaes语言配置]; A-->C[layout布局]; A-->D[script脚本]; A-->E[source资源]; A-->F[_config.yml 配置文件]; C-->H[includes页面布局]; C-->I[404.pug]; J[head.pug]-->|用于|I; K[loading.pug]-->|用于|I; L[预加载]-->K; M[additional-js.pug]-->|用于|I; C-->N[archive.pug归档布局]; G[article-sort.pug]-->|用于|N; O[pagination.pug]-->|用于|N; N-->|继承|P[layout.pug]; C-->Q[category.pug]; Q-->|继承|P; R[post-ui.pug]-->|用于|Q; S[article-sort.pug]-->|用于|Q; C-->T[index.pug]; C-->U[page.pug]; C-->V[post.pug]; C-->W[tag.pug]; H-->IA[head]; H-->IB[header]; H-->IC[loading]; H-->ID[mixins]; H-->IE[page]; IE-->IEA[flink.pug]-->IEAA[友情链接]; H-->IF[post]; H-->IG[third-party]; H-->IH[widget]; H-->M; H-->II[footer.pug]; H-->IJ[head.pug]; H-->P; H-->O; H-->IL[rightside.pug]; H-->IM[sidebar.pug];
layout/includes/head
analytics.pug
主要用于分析网站数据: 流量, 访客量等. 可以参考tongji
1 | // 登录百度统计 https://tongji.baidu.com/web/welcome/login |
config_site.pug
配置网站全局变量GLOBAL_CONFIG_SITE
的数据, 内容有代码折叠
属性, 是否显示文章目录
等.
config.pug
配置 algolia
快速搜索, 本地搜索, 简繁体互换, 版权说明, 主题日夜间切换相关, 文章是否过时设置, 代码高亮, 全局变量 GLOBAL_CONFIG
等.
google_adsense.pug
配置 google adsense
广告.
site_verification.pug
如果在搜索引擎中搜索不到自己的 blog 页面, 可以在这里添加到搜索引擎中, 比如百度的站点管理地址在这里, bing 和 google 的地址均可在 _config.yml
文件的相应位置找到站点添加地址.
layout/includes/header
index.pug
配置在不同页面顶部信息的展示方式.
menu_item.pug
顶部菜单信息的展示配置.
nav.pug
导航栏标题与搜索配置.
post-info.pug
博文元数据信息, 如: 是否可以在浏览器编辑文章, 发表日期, 更新日期, 文章类别, 字数统计, 访问量等.
social.pug
联系信息展示.
tabs 测试区
This is Tab 1.
This is Tab 2.
This is Tab 3.
引用段落测试区
这是一个引用段落, 可以看看配色.
其它待添加工具
References
tongji. 分析网站数据, https://zhuanlan.zhihu.com/p/392900656 ↩