光速(大雾)博客配置II -- Github + NexT主题

前言

年三十才配完的博客初一就访问异常了,懂也不懂前端的我查了一波,发现好像是因为服务器访问国内的cdn出了点问题,然后archer主题就刷不出来网页了(还有这种操作)。
转念一想这服务器成天被拿来做一些富强民主文明和谐的事,搞不好哪天就被墙了,还是把博客部署在github上来得靠谱一点(真香)。顺便换一个更稳定的Hexo主题,NexT。

Github + Hexo博客配置

第零步 在自己电脑上重新装一遍nodejs和Hexo等

(国内下载这些果然没有国外服务器快啊。。)
hexo init blog重建一下Hexo站点

第一步 <username>.github.io建立

因为之前也搭过博客,这步就不记录了。总之在github上建立一个叫<username>.github.io的仓库就行,username需要和自己的github用户名完全一致,访问https://<username>.github.io的时候github就会访问这个仓库。

第二步 更改Hexo部署配置

blog/_config.yml中的#deploy项改为

1
2
3
4
deploy:
type: git
repo: git@github.com:<usernanme>/<username>.github.io.git
branch: master

大功告成(比自己配Nginx服务快多了,这才是真光速嘛)

测试

发布并部署Hexo

1
$ hexo clean && hexo g -d

然后就可以在<username>.github.io上看到博客啦
不过因为github.io的更新会有一定的延迟,可以先通过打开hexo server观察修改后的变化(hexo clean && hexo g就行),最后再push到github上去

NexT主题

NexT主题作为一款更新维护了好几年的热门主题,现在已经正式移交给了theme-NexT组织来维护,比较靠谱,文档也更加全面。虽然我好喜欢archer的头图和它整体的莫名萌风格,但作为一个想长期写写博客又没太大精力研究前端的人(放开我我要炼丹)来说NexT显然是更好的选择,而且NexT也支持自定义风格,有精力了还是可以搞一搞的。
所有的搭建步骤均按照NexT官方文档完成,这文档是真友好啊。
记录下对主题作出的改变方便日后修锅

主题选择

NexT自带四种主题,选了Gemini看起来内容更加全一些

主题设置

参照NexT主题设置
照着自己舒服改了几项,修改项列表:

  • 打开Github Banner(Octocat还是萌啊,网页右上方有惊喜)
  • 文章摘要,选择excerpt_description
  • 打开Post Wordcount
  • 打开Post Codeblock Copy

样式更改

把文章底部的#标签换成标签图标

修改next/layout/_macro/post.swig,将rel="tag"后的#换成<i class="fa fa-tag"></i>

next/_config.yml中的

1
2
3
4
creative_commons:
license: by-nc-sa
sidebar: false
post: false

改成

1
2
3
4
creative_commons:
license: by-nc-sa
sidebar: true
post: true

第三方服务设置

因为github服务器在北美的原因,优先选择海外服务商

webmaster(推广/搜索引擎收录)

百度是最骚的个人信息要一大堆验证还巨慢(小声bb

补充:因为百度爬虫被Github墙了,sitemap的方法不适用,将NexT/_config.yml中的baidu_push项打开实现自动推送,安装hexo-baidu-url-submit插件实现主动推送

网站分析工具

阅读统计

其余插件

LaTex支持

渲染引擎选择

NexT支持两种渲染引擎:mathjaxkatex
katex有着更快的速度(本机测试10x)渲染速度比较,katex所用的渲染器功能也更为全面

然鹅,katex所支持的LaTex公式不全(日常用其实没多大差别),关键是katex语法貌似还与标准LaTex有点区别,作为一个LaTex菜鸡望而却步,而且katex渲染在我机子上有一点点问题,暂时还是选用mathjaxmathjax还支持公式引用,这个赞一波)

渲染引擎安装

首先卸载原先的markdown renderer,并安装kramed(pandoc在mac上存在 issue)

1
2
$ npm un hexo-renderer-marked --save
$ npm i hexo-renderer-kramed --save

开启math功能

next/_config.yml中,打开math选项并选择mathjax

1
2
3
4
math:
enable: true
...
engine: mathjax

解决重复渲染问题

打开math并重新部署后,发现网页虽然能渲染公式,但会重复渲染,参照 Make Hexo Support Math Again<your-project-dir>/node_modules/hexo-renderer-kramed/lib/renderer.js 中的

1
2
3
4
function formatText(text) {
// Fit kramed's rule: $$ + \1 + $$
return text.replace(/`\$(.*?)\$`/g, '$$$$$1$$$$');
}

改成

1
2
3
function formatText(text) {
return text;
}

解决无法渲染行内公式问题

参考 Hexo的Next主题中渲染MathJax数学公式 解决行内语义冲突,将<your-project-dir>/node_modules/kramed/rules/inline.js中的

1
escape: /^\\([\\`*{}\[\]()#$+\-.!_>])/,

改成

1
escape: /^\\([`*\[\]()#$+\-.!_>])/,

1
em: /^\b_((?:__|[\s\S])+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,

改成

1
em: /^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,

测试

这是一个行内公式 $R_{m \times n} = U_{m \times m} S_{m \times n} V_{n \times n}’$ 测试

The famous matter-energy equation $\eqref{eq1}$ proposed by Einstein…

使用\tag{}标记公式

Equation $\eqref{eq_tag}$ use \tag{} instead of automatic numbering.