hexo 进阶设置指南(持续更新)
时间:2022-07-24
本文章向大家介绍hexo 进阶设置指南(持续更新),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
让hexo渲染MathJax复杂公式(默认的渲染引擎复杂公式会报错)
Problem
对复杂公式的支持不够好,简单公式可以显示,复杂编译错误,验证表明,问题不是mathjax.js导致,是默认hexo引擎编译导致html文本转义错误。
Reason
Hexo默认使用"hexo-renderer-marked"引擎渲染网页,该引擎会把一些特殊的markdown符号转换为相应的html标签,比如在markdown语法中,下划线'_'代表斜体,会被渲染引擎处理为<em>
标签
因为类Latex格式书写的数学公式下划线 '_' 表示下标,有特殊的含义,如果被强制转换为<em>
标签,那么MathJax引擎在渲染数学公式的时候就会出错。例如,x_i
在开始被渲染的时候,处理为x<em>i</em>
,这样MathJax引擎就认为该公式有语法错误,因为不会渲染。
类似的语义冲突的符号还包括'*', '{', '}', ''等。
Solution
- 更换默认的Hexo下 Markdown渲染引擎 marked -> kramed
npm uninstall hexo-renderer-marked --save
npm install hexo-renderer-kramed --save
- 更改hexo转义冲突
找到根目录
node_moduleskramedlibrulesinline.js
- 修改11行,取消对
,{,}
的转义escape // escape: /^\([\`*{}[]()#$+-.!_>])/, escape: /^\([`*[]()#$+-.!_>])/, - 修改20行em // em: /^b_((?:__|[sS])+?)_b|^*((?:**|[sS])+?)*(?!*)/, em: /^*((?:**|[sS])+?)*(?!*)/,
- 修改11行,取消对
- 三连
hexo cl && hexo g && hexo s
查看效果 Debug - 如果出问题,在主题
_config.yml
下设置mathjax
为true
- 文章也要开启
mathjax
---
title: 我是标题
date: 2020-08-15 23:18:50
tags:
mathjax: true
--
其他解决办法
- 服务器端的渲染
SEO 搜索引擎优化
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法