最近在新电脑上重新搭了个博客,为了使hexo开启latex支持又踩了一次坑,在此记录一下。
卸载旧版渲染引擎
npm uninstall hexo-renderer-marked --save
npm uninstall hexo-math --save
安装新引擎
npm install hexo-renderer-kramed --save
npm install hexo-renderer-mathjax --save
更改库文件
node_modules/hexo-renderer-kramed/lib/renderer.js
将
// Change inline math rule
function formatText(text) {
// Fit kramed's rule: $$ + \1 + $$
return text.replace(/`\$(.*?)\$`/g, '$$$$$1$$$$');
}
修改为:
// Change inline math rule
function formatText(text) {
return text;
}
node_modules/kramed/lib/rules/inline.js
latex与markdown语法上有语义冲突,hexo默认的转义规则会将一些字符进行转义,所以我们需要对默认的规则进行修改。更改后为:
var inline = {
// escape: /^\\([\\`*{}\[\]()#$+\-.!_>])/,
escape: /^\\([`*\[\]()#$+\-.!_>])/,
autolink: /^<([^ >]+(@|:\/)[^ >]+)>/,
url: noop,
html: /^<!--[\s\S]*?-->|^<(\w+(?!:\/|[^\w\s@]*@)\b)*?(?:"[^"]*"|'[^']*'|[^'">])*?>([\s\S]*?)?<\/\1>|^<(\w+(?!:\/|[^\w\s@]*@)\b)(?:"[^"]*"|'[^']*'|[^'">])*?>/,
link: /^!?\[(inside)\]\(href\)/,
reflink: /^!?\[(inside)\]\s*\[([^\]]*)\]/,
nolink: /^!?\[((?:\[[^\]]*\]|[^\[\]])*)\]/,
reffn: /^!?\[\^(inside)\]/,
strong: /^__([\s\S]+?)__(?!_)|^\*\*([\s\S]+?)\*\*(?!\*)/,
// em: /^\b_((?:__|[\s\S])+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,
em: /^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,
code: /^(`+)\s*([\s\S]*?[^`])\s*\1(?!`)/,
br: /^ {2,}\n(?!\s*$)/,
del: noop,
text: /^[\s\S]+?(?=[\\<!\[_*`$]| {2,}\n|$)/,
math: /^\$\$\s*([\s\S]*?[^\$])\s*\$\$(?!\$)/,
};
node_modules/hexo-renderer-mathjax/mathjax.html
由于现有浏览器认为http链接请求不安全,这就导致博客的latex公式无法渲染。因此将最后一行改为:
<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-MML-AM_CHTML"></script>
开启mathjax
打开主题目录下的 _config.yml 文件,加入如下:
mathjax:
enable: true
per_page: true
在写博客的时候需要开启latex就加上字段说明:
title: test
mathjax: true
但每次都这么加显得很麻烦,可以在 scaffolds/post.md 添加如下模版:
---
title: {{ title }}
date: {{ date }}
categories:
tags:
mathjax: true
toc: true
---
这样就无需每次手写了。
本文详细介绍了如何在新电脑上为Hexo博客启用LaTeX支持,包括卸载旧渲染引擎、安装新引擎、修改配置文件,以及解决浏览器安全问题和设置mathjax。通过添加模板简化了频繁手动操作的过程。
2154

被折叠的 条评论
为什么被折叠?



