latex公式居中_结合MathType和MathJax在Hexo博客中插入数学公式

在博客写作过程中,经常需要往文章中插入数学公式,对于不熟悉LaTex语法的人来说,我们自然希望能使用MathType编辑公式,然后往文章中插入LaTex语法的公式即可。然而,如果使用Hexo部署博客,Hexo自带的默认渲染引擎hexo-renderer-marked无法渲染LaTex公式。本文将告诉你:

  1. 如何用MathJax插件渲染数学公式;
  2. 以及如何处理Hexo默认渲染引擎hexo-renderer-markedMathJax之间的冲突的;
  3. 如何将用MathType编辑好的公式复制粘贴到markdown中。

安装与配置

安装和配置hexo-math

  • 首先,安装hexo-math插件,该插件使用MathJax/KaTex来渲染数学公式:
$ npm install hexo-math --save
  • 安装完成后,配置hexo目录下的_config.yml,加入下面配置信息:
math:
  engine: 'mathjax'
  mathjax:
    src: custom_mathjax_source
    config:
      # MathJax config
  • 另外,打开文件themes/next/_config.yml,并搜索关键词math ,你将会看到:
mathjax:
  enable: false
  per_page: false
  cdn: //cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML

改变enable标签的值为true,如下:

mathjax:
  enable: true
  per_page: false
  cdn: //cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML

更改Hexo渲染引擎

  • 更改Hexo的渲染引擎。将Hexo的默认渲染引擎是hexo-renderer-marked替换为hexo-renderer-kramed。之所以这么做,是因为Hexo默认渲染引擎会将$$之间的下划线 _ 解析成HTML中的<i>。然而,在LaTex公式中,经常用下划线 _ 表示下标,这就导致冲突。而hexo-renderer-kramedhexo-renderer-marked基础上修改了这个Bug。在安装hexo-renderer-kramed之前,需要卸载hexo-renderer-marked,顺序执行以下两行命令完成卸载与安装:
$ npm uninstall hexo-renderer-marked --save $ npm install hexo-renderer-kramed --save

解决语义冲突

  • 解决语义冲突(参考的这个博客)。在markdown中,斜体用下划线_或星号*表示,而在LaTex中,下划线_表示下标。为了解决这个冲突,需要修改两处。在博客根目录下,进入node_moduleskramedlibrulesinline.js,修改第11行escape变量的值(这一步是在原基础上对,{,}转义(escape)):
修改前:escape: /^([`*{}[]()#$+-.!_>])/,
修改后:escape: /^([`*[]()#$+-.!_>])/,

同时,把第20行的em变量也做相应的修改:

修改前:em: /^b_((?:__|[sS])+?)_b|^*((?:**|[sS])+?)*(?!*)/,
修改后:em: /^*((?:**|[sS])+?)*(?!*)/,

在博客开头打开mathjax开关

  • 最后,在博客的Front-matter里,添加一行mathjax: true,如下:
---
  title: xxxxxxxxxxxxxxx
  date: 2020-02-22 15:44:53
  tags: xxx
  mathjax: true
  ---

测试

公式单行居中显示

完成上述步骤,我们可以试试效果。我们键入下面的LaTex公式:

$$ evidence_{i}=sum_{j}W_{ij}x_{j}+b_{i} $$

LaTex公式两端的$$表示公式居中显示,效果如下:

公式嵌入到句子中

若想在一句话中嵌入公式,则只需要在LaTex公式两端用一个$,如:

在公式 $ evidence_{i}=sum_{j}W_{ij}x_{j}+b_{i} $中, $W_i$$b_i$分别为类别
的权值和偏置。

效果如下:

在公式

中,
分别为类别
的权值和偏置。

与MathType结合使用

对于比较复杂的公式,如果不熟悉LaTex语法,直接写起来很麻烦,所以我尝试先使用MathType将公式写好,再复制公式,并以LaTex格式粘贴到markdown中。按照MathType官方教程,对Preferences下的Cut and Copy Preferences进行设置。如下图:

2913f5e32e567f281c367e0790d3715c.png

我尝试了多种粘贴方式,包括Plain TeXLaTex2.09 and laterMathJax:LaTex,但运行hexo g之后,总是出现这个错误:

INFO  [hexo-math] Using engine 'mathjax'
INFO  Start processing
FATAL Something's wrong. Maybe you can find the solution here: http://hexo.io/docs/troubleshooting.html
Template render error: (unknown path) [Line 52, Column 56]
  expected variable end

后来我发现当有多个花括号,如}}{{,在一起时,就会报Template render error错误。最后在这篇博客中找到了解决办法。即,在公式的前后分别加上{% raw%}{% endraw %}:

{% raw%} 数学公式 {% endraw %}

具体地,如下所示:

  • LaTex2.09 and laterMathJax:LaTex方式粘贴:
{% raw%} [{x_{1,2}} = frac{{ - b pm sqrt {{b^2} - 4ac} }}{{2a}}] {% endraw %}

效果为:

  • 以Plain Tex方式粘贴:
{% raw%} $${x_{1,2}} = {{ - b pm sqrt {{b^2} - 4ac} } over {2a}}$$ {% endraw %}

效果为:

  • 在句子中间粘贴:
公式在句子中显示:{% raw%} ${x_{1,2}} = {{ - b pm sqrt {{b^2} - 4ac} } over {2a}}$ {% endraw %}。

效果为:

公式在句子中显示:

至此,我们可以结合MathType在博客中写出各种数学公式啦!

参考链接

  1. hexo-math
  2. Hexo 下 LaTeX 无法显示的解决方案
  3. working with math equations in hexo next theme
  4. Using Hexo MathJax and Writing LaTex Equations
  5. hexo在遇到“{{”符号时出现解析报错
  6. Hexo的一个小BUG(Template render error)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值