前言

周末在搬迁Hexo博客并且修复之前博客的bug,外加继续装修博客。整了一个周末终于弄好了。    

总结一下遇到的最让我无语而且耗时最长的问题吧。

Latex数学公式+公式无法换行。首先呢这是两个问题,要先让hexo支持数学公式,再来才是不能换行的问题。自己找了许许多多的教程,先后折磨了快半天,才找到了较为完美的解决方案。可能是关于这方面的教程大多都太老了,版本迭代后不太适用吧。

关于Hexo和主题

这个问题实际与主题无关。最开始我一直纠结于主题不同解决方法是不是不一样,最后解决了发现不是。

我用的是hexo和butterfly截止目前的最新版本:

hexo:6.3.0

butterfly:4.4.0

让Hexo支持数学公式

这部分我跟着这篇文章搞的:Hexo如何显示latex公式_gorray的博客-CSDN博客_hexo latex公式

其实要做的步骤很少:

1.首先卸载hexo-math和hexo-renderer-marked。然而hexo应该是没有自带hexo-math的,所以只需要卸载第二个就行。以防万一还是可以直接执行:

1
2
npm un hexo-math
npm un hexo-renderer-marked

2.安装hexo-renderer-pandoc渲染器

1
npm i hexo-renderer-pandoc

好,到此为止,需要的包就迭代好了。

3.然后是配置主题配置下的mathjax设置。我用的是butterfly,那么对应路径是: _config.yml

1
2
3
4
# MathJax
mathjax:
enable: true
per_page: true

Pandoc报错

理论上到这一步就可以用了对吧,一般的教程也都这样。就算再外加一步,我学习的那篇文章里提到,接下来还应该去Pandoc官网下载最新版本pandoc:Pandoc - About pandoc

关于pandoc下载安装教程随便查一下就有,这里就不说明了。然后再在环境配置配置了pandoc路径,直到你可以在cmd输入以下命令查看它的版本:

1
pandoc -v

我的输出:

1
2
3
4
pandoc 2.19.2
Compiled with pandoc-types 1.22.2.1, texmath 0.12.5.2, skylighting 0.13,
citeproc 0.8.0.1, ipynb 0.2, hslua 2.2.1
Scripting engine: Lua 5.4

有的朋友可能到这一步就发现不对了,不要慌,接下来才是重点。

一个莫名其妙的错误

先回到hexo目录,执行hexo -s,如果你没有出现这个报错:

\(\color{red}{pandoc~exited ~with ~code ~9: pandoc: Unknown~extension:~smart}\)

那么恭喜你,你的这个问题并不存在,可以选择跳过。但是如果你和我 一样报这个错误,可能就开始头疼了。不过我终于还是找到了解决方法。

首先我是找到了这篇文章:配置hexo时遇到的问题 - diralpo - 博客园 (cnblogs.com)

从这篇文章得知,导致该报错的原因是pandoc版本过低 ,而且还不是一般原因引起的版本过低,因为前面我们已经安装了最新版本的pandoc。但是最新版本的没起作用。于是我打开了everything查找电脑上存在的pandoc。然后发现位于Anaconda,真正问题也出在这儿。

是因为Anaconda安装的pandoc版本过低,而且hexo默认使用的是Anaconda的pandoc。

不信的话你去找找,那个pandoc居然是2017年的。在某一篇文章得知,pandoc版本应该在2.0以上,但那个pandoc好像是1.9。那接下来的就简单了,直接把新下载的pandoc.exe替换Anaconda里的pandoc.exe。

然后你在回去hexo -s,就没问题了。

换行问题

其实做到上一步,换行问题也已经随之解决了。不过这里还是提一下关于这个换行。

首先,想直接通过 ,end这种写法是做不到换行的,我最开始就是纠结于这个,然而这写法本来也不规范,例如:A   B 是不能达到换行的。但是在加上规范的begin和end就可以了。其次,换行公式应该写成行间公式而非行内公式。

1
2
$A \\ B$  错误写法
\begin{split} A\\B \end{split} 写在行内错误,写在行间正确。

\[ \begin{split} A\\B \end{split} \]

这篇文章是我做的hexo公式测试:Latex公式测试 | issey的博客

如果不是网速加载问题,那么显示应该是: