再多的资料,不如自己动手尝试

为了实现数学公式在博客中的正常显示,我查了资料和方法,折腾了好几个小时未果,自己的next主题做了大量的定制,有可能影响到插件的效果。最终决定从头开始,按照实验的方法认真测试一遍,忠实的记录实验结果。

三种可能

网络上流传的三种方法简介如下:

工具名称方法简介安装使用相关资料
Pandoc利用hexo-renderer-pandoc对内容进行渲染,彻底解决问题方法一:下载安装
方法二:利用homebrew安装brew install pandoc
hexo根目录执行npm install hexo-renderer-pandoc --save
正常使用Pandoc Markdown语法
pandoc介绍
数学部分
一些介绍
Try Pandoc
NexT自带的Mathjax接口利用Mathjax渲染theme/_config.yml对应的Mathjax设置即可。正常使用next官方文档
hexo-math插件利用MathJax渲染npm install hexo-math --save正常使用hexo-math

实验计划

采用全新的hexo源码文件和主题文件对上面提到的三种方法进行实验。 主题以hexo新建时默认的landscape和自己现阶段的主力主题next为主。实验的目的是挑选出自己的环境下能实现math数学公式撰写的最适合方法。

实现设计

主题hexo-mathhexo-renderer-pandocnext.mathjax
landscape是否生效-onm是否生效-olp
next是否生效-olm是否生效-onp是否生效-ona

首先完成上表的基础实验之后,结合自己的实际环境测试具体实现方案,同时考虑验证如果原始代码可以正常工作,如何和自己的实际代码进行结合。比如说主题文件保留,初始化Hexo除了主题之外的文件等等。

实验准备

环境准备

从零安装环境和主题并验证本地环境为:origin

hexo init
npm install
git clone https://github.com/iissnan/hexo-theme-next themes/next
hexo s

拷贝完全一致的环境

cp -rf origin olm
cp -rf origin olp
cp -rf origin ona
cp -rf origin onm
cp -rf origin onp

在实际使用时需要调整_config.yml的主题,不再详细说明。

安装 hexo-renderer-pandoc 步骤

安装 math-plugin步骤

  • npm install hexo-math --save
  • theme/_config.yml中进行配置(事后证明这一步不需要)
conifg
  math:
    engine: 'mathjax' # or 'katex'
    mathjax:
    src: custom_mathjax_source
      config:
        # MathJax config
katex:
  css: custom_css_source
  js: custom_js_source # not used
    config:
    # KaTeX config

安装next mathjax插件步骤

  • theme/_config.yml中进行配置
# MathJax Support
mathjax:
enable: true
cdn: //cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML

数据准备

准备了一些公式的测试数据,需要的小伙伴可以直接打开拷走不谢。

实验过程

做好了充分的准备,其实实验过程还是比较顺利的,每一种情况看测试数据的结论,做好记录。在了解了结果之后进行机遇自己环境的实证效果还是不错的,下面是实证阶段留下的卡片。

一切皆卡片

实际问题

实验中遇到了一些小问题:

  • 测试数据太复杂,hexo s经常报错,修改了一般简单的数据,逐个排查。
{% math %}
\begin{aligned}
\dot{x} & = \sigma(y-x) \\
\dot{y} & = \rho x - y - xz \\
\dot{z} & = -\beta z + xy
\end{aligned}
{% endmath %}
  • 没想到同样的源码在Desktop没问题,在icloud文件夹报错,初步判断和文件夹权限或者路径中的~符号有关,没有验证。

实验结论

基础实验结论

主题hexo-mathhexo-renderer-pandocnext.mathjax
landscape生效复杂环境:报错
简单环境:不生效
next生效复杂环境:报错
简单环境:不生效
报错

复杂实验结论

  • hexo模块化非常清晰,可以把主题文件替换为我原有的文件结合hexo init其他源码正常工作。
  • 我原来的环境符合基础实验结论,但是依旧报错是因为在icloud文件夹下导致的,换到Desktop后不再报错。
  • hexo-math安装后不需要做配置及时生效可以使用。
  • 网络上的经验只能参考,自己动手才能得到真知。
  • 所有的实验都是基于本人的MAC电脑当前环境下的实验结论,也有可能和配置相关,请大家谨慎选择。(macOS Sierra Version 10.12.1 )

Hexo原理理解

your_hexo-dir/node_modules目录下的文件都是模块化的,其中hexo-renderer-marked主要用来做markdown到html的渲染。一般的hexo-renderer-XXX都是在your_hexo-dir/node_modules下安装新的渲染器。如果安装新的出现不生效的情况,记得删掉原有的,代码如下

npm uninstall hexo-renderer-XXX --save
# 把XXX部分换成你的渲染器的名字

安装了hexo-math之后,会在your_hexo-dir/node_modules/生成hexo-injecthexo-math两个目录文件。

感受

动手,动手,动手。

[完](http://blog.junyu.pro)

声明: 本文转载需标明出处,禁止用于商业目的。

ChangeLog

161124 新建