What is Hexo?
首先安利一下hexo博客:https://github.com/hexojs/hexo
这是一个运行在nodejs上的支持markdown的博客。在安装完nodejs
和npm
后你可以这样来安装hexo——
$ npm install hexo-cli -g
以下Quick Start部分摘自官方说明——
安装博客
$ hexo init blog #这里blog是你文件夹的名字
$ cd blog
$ npm install #这样会在blog文件夹中生成整个博客程序
开启服务,默认是监听4000端口
hexo server
写一篇新文章
hexo new "Hello World"
这样以来它会在你博客目录的./source/_posts
下生成一个.md文件,文件名默认是标题,当然可以之后更改的。
其他的博客设置,请参考github上官方文档
利用MathJax来渲染LaTeX数学公式
经过一番google之后,发现有位高手已经写好了一个自动部署MathJax的hexo插件
http://catx.me/2014/03/09/hexo-mathjax-plugin/
安装方式也很简单,在你的博客文件夹下执行——
npm install hexo-math --save
hexo math install
然后在新建的博文中写上一个麦克斯韦方程组查看LaTeX效果——
$$
\begin{eqnarray}
\nabla\cdot\vec{E} &=& \frac{\rho}{\epsilon_0} \\
\nabla\cdot\vec{B} &=& 0 \\
\nabla\times\vec{E} &=& -\frac{\partial B}{\partial t} \\
\nabla\times\vec{B} &=& \mu_0\left(\vec{J}+\epsilon_0\frac{\partial E}{\partial t} \right)
\end{eqnarray}
$$
这时如果你会发现出了一些问题,原因是hexo先用marked.js渲染,然后再交给MathJax渲染。在marked.js渲染的时候下划线_
是被escape掉并且换成了<em>
标签,即斜体字,另外LaTeX中的\\
也会被转义成一个\
,这样会导致MathJax渲染时不认为它是一个换行符了。
使Marked.js与MathJax共存
因此我提供一个修改marked.js源码的方式来避开这些问题
- 针对下划线的问题,我决定取消_
作为斜体转义,因为marked.js中*
也是斜体的意思,所以取消掉_
的转义并不影响我们使用markdown,只要我们习惯用*
作为斜体字标记就行了。
- 针对marked.js与Mathjax对于个别字符二次转义的问题,我们只要不让marked.js去转义\\
,\{
,\}
在MathJax中有特殊用途的字符就行了。
具体修改方式,用编辑器打开marked.js(在./node_modules/marked/lib/
中)
Step 1:
escape: /^\\([\\`*{}\[\]()# +\-.!_>])/,
替换成
escape: /^\\([`*\[\]()# +\-.!_>])/,
这一步是在原基础上取消了对\\
,\{
,\}
的转义(escape)
Step 2:
em: /^\b_((?:[^_]|__)+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,
替换成
em:/^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,
这样一来MathJax就能与marked.js共存了。重启一下hexo看一下吧
来源:CSDN
作者:薛定谔的死猫
链接:https://blog.csdn.net/Emptyset110/article/details/50123231