New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

hexo-math

Package Overview
Dependencies
Maintainers
1
Versions
22
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

hexo-math - npm Package Compare versions

Comparing version

to
3.0.0-alpha3

gulp-task/cli.coffee

10

gulpconfig.json

@@ -74,3 +74,13 @@ {

}
},
"cli:default": {
"opts": {
"mapping": {
"es6:default": {},
"GLOBAL": {
"sourceMap": "debug"
}
}
}
}
}

25

lib/consts.js

@@ -6,24 +6,9 @@ "use strict";

});
var INLINE_MATH_REGEX = exports.INLINE_MATH_REGEX = /\$.*?\$/;
var INLINE_MATH_REGEX = exports.INLINE_MATH_REGEX = /\$[\s\S]?\$/;
var BLOCK_MATH_REGEX = exports.BLOCK_MATH_REGEX = /^\s*\$\$[\s\S]*\$\$\s*$/m;
var INJECTION_REGEX = exports.INJECTION_REGEX = /([\s\S]*)(<\/body>[\s\S]*)/i;
var BODY_REGEX = exports.BODY_REGEX = /<\/body>/i;
var INLINE_MATH_RENDER_REGEX = exports.INLINE_MATH_RENDER_REGEX = /\$([^\n]+?)\$/g;
var BLOCK_MATH_RENDER_REGEX = exports.BLOCK_MATH_RENDER_REGEX = /\$\$([\s\S]+?)\$\$/g;
var MATH_MARKER = exports.MATH_MARKER = "<!-- Has MathJax -->";
var DEFAULT_OPTS = exports.DEFAULT_OPTS = {
src: "//cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML",
config: {
tex2jax: {
inlineMath: [['$', '$'], ["\\(", "\\)"]],
skipTags: ['script', 'noscript', 'style', 'textarea', 'pre', 'code'],
processEscapes: true
},
TeX: {
equationNumbers: {
autoNumber: "AMS"
}
}
}
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbnN0cy5lczYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBTyxJQUFNLGdEQUFvQixTQUFwQjtBQUNOLElBQU0sOENBQW1CLDBCQUFuQjtBQUNOLElBQU0sNENBQWtCLDZCQUFsQjtBQUNOLElBQU0sa0NBQWEsV0FBYjs7QUFFTixJQUFNLG9DQUFjLHNCQUFkOztBQUVOLElBQU0sc0NBQWU7QUFDMUIsT0FBSywwRUFBTDtBQUNBLFVBQVE7QUFDTixhQUFTO0FBQ1Asa0JBQVksQ0FBRSxDQUFDLEdBQUQsRUFBSyxHQUFMLENBQUYsRUFBYSxDQUFDLEtBQUQsRUFBTyxLQUFQLENBQWIsQ0FBWjtBQUNBLGdCQUFVLENBQUMsUUFBRCxFQUFXLFVBQVgsRUFBdUIsT0FBdkIsRUFBZ0MsVUFBaEMsRUFBNEMsS0FBNUMsRUFBbUQsTUFBbkQsQ0FBVjtBQUNBLHNCQUFnQixJQUFoQjtLQUhGO0FBS0EsU0FBSztBQUNILHVCQUFpQjtBQUNmLG9CQUFZLEtBQVo7T0FERjtLQURGO0dBTkY7Q0FGVyIsImZpbGUiOiJjb25zdHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgSU5MSU5FX01BVEhfUkVHRVggPSAvXFwkLio/XFwkLztcclxuZXhwb3J0IGNvbnN0IEJMT0NLX01BVEhfUkVHRVggPSAvXlxccypcXCRcXCRbXFxzXFxTXSpcXCRcXCRcXHMqJC9tO1xyXG5leHBvcnQgY29uc3QgSU5KRUNUSU9OX1JFR0VYID0gLyhbXFxzXFxTXSopKDxcXC9ib2R5PltcXHNcXFNdKikvaTtcclxuZXhwb3J0IGNvbnN0IEJPRFlfUkVHRVggPSAvPFxcL2JvZHk+L2k7XHJcblxyXG5leHBvcnQgY29uc3QgTUFUSF9NQVJLRVIgPSBcIjwhLS0gSGFzIE1hdGhKYXggLS0+XCI7XHJcblxyXG5leHBvcnQgY29uc3QgREVGQVVMVF9PUFRTID0ge1xyXG4gIHNyYzogXCIvL2Nkbi5tYXRoamF4Lm9yZy9tYXRoamF4L2xhdGVzdC9NYXRoSmF4LmpzP2NvbmZpZz1UZVgtQU1TLU1NTF9IVE1Mb3JNTUxcIixcclxuICBjb25maWc6IHtcclxuICAgIHRleDJqYXg6IHtcclxuICAgICAgaW5saW5lTWF0aDogWyBbJyQnLCckJ10sIFtcIlxcXFwoXCIsXCJcXFxcKVwiXSBdLFxyXG4gICAgICBza2lwVGFnczogWydzY3JpcHQnLCAnbm9zY3JpcHQnLCAnc3R5bGUnLCAndGV4dGFyZWEnLCAncHJlJywgJ2NvZGUnXSxcclxuICAgICAgcHJvY2Vzc0VzY2FwZXM6IHRydWVcclxuICAgIH0sXHJcbiAgICBUZVg6IHtcclxuICAgICAgZXF1YXRpb25OdW1iZXJzOiB7XHJcbiAgICAgICAgYXV0b051bWJlcjogXCJBTVNcIlxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdLCJzb3VyY2VSb290IjoiL3NvdXJjZS8ifQ==
var KATEX_INLINE_MARKER = exports.KATEX_INLINE_MARKER = "<span class=\"katex\">";
var KATEX_BLOCK_MARKER = exports.KATEX_BLOCK_MARKER = "<span class=\"katex-display\">";

40

lib/filter/inject.js

@@ -11,15 +11,10 @@ "use strict";

var _underscore = require("underscore");
var _underscore2 = _interopRequireDefault(_underscore);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
var Inject = function () {
function Inject(hexo) {
function Inject(hexo, opts) {
_classCallCheck(this, Inject);
this.hexo = hexo;
this.opts = opts;
}

@@ -32,10 +27,12 @@

filter.register("inject_ready", this._inject.bind(this));
var injectors = {
mathjax: this._injectMathJax.bind(this),
katex: this._injectKaTeX.bind(this)
};
filter.register("inject_ready", injectors[this.opts.engine]);
}
}, {
key: "_inject",
value: function _inject(inject) {
var config = this.hexo.config;
var data = _underscore2.default.defaults({}, config.mathjax, _consts.DEFAULT_OPTS);
key: "_injectMathJax",
value: function _injectMathJax(inject) {
var data = this.opts.mathjax;
var opts = {

@@ -50,2 +47,16 @@ data: data,

}
}, {
key: "_injectKaTeX",
value: function _injectKaTeX(inject) {
var css = this.opts.katex.css;
var opts = {
shouldInject: function shouldInject(src) {
return src.indexOf(_consts.KATEX_INLINE_MARKER) >= 0 || src.indexOf(_consts.KATEX_BLOCK_MARKER) >= 0;
}
};
inject.headEnd.link({ rel: 'stylesheet', href: css }, opts);
}
}]);

@@ -57,3 +68,2 @@

exports.default = Inject;
module.exports = exports['default'];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImZpbHRlci9pbmplY3QuZXM2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUdxQjtBQUNuQixXQURtQixNQUNuQixDQUFZLElBQVosRUFBa0I7MEJBREMsUUFDRDs7QUFDaEIsU0FBSyxJQUFMLEdBQVksSUFBWixDQURnQjtHQUFsQjs7ZUFEbUI7OytCQUlSO1VBQ0gsU0FBVyxLQUFLLElBQUwsQ0FBVSxNQUFWLENBQVgsT0FERzs7QUFFVCxhQUFPLFFBQVAsQ0FBZ0IsY0FBaEIsRUFBZ0MsS0FBSyxPQUFMLENBQWEsSUFBYixDQUFrQixJQUFsQixDQUFoQyxFQUZTOzs7OzRCQUlILFFBQVE7VUFDUixTQUFXLEtBQUssSUFBTCxDQUFYLE9BRFE7O0FBRWQsVUFBSSxPQUFPLHFCQUFFLFFBQUYsQ0FBVyxFQUFYLEVBQWUsT0FBTyxPQUFQLHNCQUFmLENBQVAsQ0FGVTtBQUdkLFVBQUksT0FBTztBQUNULGtCQURTO0FBRVQsZ0JBQVEsSUFBUjtBQUNBLHNCQUFjLHNCQUFDLEdBQUQ7aUJBQVMsSUFBSSxPQUFKLHlCQUE0QixDQUE1QixJQUFpQywwQkFBa0IsSUFBbEIsQ0FBdUIsR0FBdkIsQ0FBakMsSUFBZ0UseUJBQWlCLElBQWpCLENBQXNCLEdBQXRCLENBQWhFO1NBQVQ7T0FIWixDQUhVO0FBUWQsYUFBTyxPQUFQLENBQWUsT0FBZixDQUF1Qix5QkFBdkIsRUFBa0QsSUFBbEQsRUFSYzs7OztTQVJHIiwiZmlsZSI6ImZpbHRlci9pbmplY3QuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNQVRIX01BUktFUiwgSU5MSU5FX01BVEhfUkVHRVgsIEJMT0NLX01BVEhfUkVHRVgsIERFRkFVTFRfT1BUUyB9IGZyb20gXCIuLi9jb25zdHNcIjtcclxuaW1wb3J0IF8gZnJvbSBcInVuZGVyc2NvcmVcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEluamVjdCB7XHJcbiAgY29uc3RydWN0b3IoaGV4bykge1xyXG4gICAgdGhpcy5oZXhvID0gaGV4bztcclxuICB9XHJcbiAgcmVnaXN0ZXIoKSB7XHJcbiAgICBsZXQgeyBmaWx0ZXIgfSA9IHRoaXMuaGV4by5leHRlbmQ7XHJcbiAgICBmaWx0ZXIucmVnaXN0ZXIoXCJpbmplY3RfcmVhZHlcIiwgdGhpcy5faW5qZWN0LmJpbmQodGhpcykpXHJcbiAgfVxyXG4gIF9pbmplY3QoaW5qZWN0KSB7XHJcbiAgICBsZXQgeyBjb25maWcgfSA9IHRoaXMuaGV4bztcclxuICAgIGxldCBkYXRhID0gXy5kZWZhdWx0cyh7fSwgY29uZmlnLm1hdGhqYXgsIERFRkFVTFRfT1BUUyk7XHJcbiAgICBsZXQgb3B0cyA9IHtcclxuICAgICAgZGF0YSxcclxuICAgICAgaW5saW5lOiB0cnVlLFxyXG4gICAgICBzaG91bGRJbmplY3Q6IChzcmMpID0+IHNyYy5pbmRleE9mKE1BVEhfTUFSS0VSKSA+PSAwIHx8IElOTElORV9NQVRIX1JFR0VYLnRlc3Qoc3JjKSB8fCBCTE9DS19NQVRIX1JFR0VYLnRlc3Qoc3JjKVxyXG4gICAgfVxyXG4gICAgaW5qZWN0LmJvZHlFbmQucmVxdWlyZSgnLi4vLi4vYXNzZXQvaW5qZWN0LnN3aWcnLCBvcHRzKVxyXG4gIH1cclxufVxyXG4iXSwic291cmNlUm9vdCI6Ii9zb3VyY2UvIn0=
module.exports = exports['default'];

@@ -9,4 +9,3 @@ "use strict";

var mathJax = hexo.mathJax = new _main2.default(hexo);
mathJax.register();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LmVzNiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUVBLElBQUksVUFBVSxLQUFLLE9BQUwsR0FBZSxtQkFBWSxJQUFaLENBQWY7QUFDZCxRQUFRLFFBQVIiLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTWF0aEpheCBmcm9tIFwiLi9tYWluXCI7XHJcblxyXG5sZXQgbWF0aEpheCA9IGhleG8ubWF0aEpheCA9IG5ldyBNYXRoSmF4KGhleG8pXHJcbm1hdGhKYXgucmVnaXN0ZXIoKVxyXG4iXSwic291cmNlUm9vdCI6Ii9zb3VyY2UvIn0=
var math = hexo.math = new _main2.default(hexo);
math.register();

@@ -17,2 +17,8 @@ "use strict";

var _post = require("./filter/post");
var _post2 = _interopRequireDefault(_post);
var _option = require("./option");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

@@ -23,8 +29,10 @@

var MathJax = function () {
function MathJax(hexo) {
function MathJax(hexo, opts) {
_classCallCheck(this, MathJax);
this.hexo = hexo;
this.tag = new _math2.default(hexo);
this.injector = new _inject2.default(hexo);
this.opts = (0, _option.getOptions)(hexo, opts);
this.tag = new _math2.default(hexo, this.opts);
this.injector = new _inject2.default(hexo, this.opts);
this.post = new _post2.default(hexo, this.opts);
}

@@ -37,5 +45,7 @@

var injector = this.injector;
var post = this.post;
tag.register();
injector.register();
// post.register();
}

@@ -48,3 +58,2 @@ }]);

exports.default = MathJax;
module.exports = exports['default'];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1haW4uZXM2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBR3FCO0FBQ25CLFdBRG1CLE9BQ25CLENBQVksSUFBWixFQUFrQjswQkFEQyxTQUNEOztBQUNoQixTQUFLLElBQUwsR0FBWSxJQUFaLENBRGdCO0FBRWhCLFNBQUssR0FBTCxHQUFXLG1CQUFZLElBQVosQ0FBWCxDQUZnQjtBQUdoQixTQUFLLFFBQUwsR0FBZ0IscUJBQVcsSUFBWCxDQUFoQixDQUhnQjtHQUFsQjs7ZUFEbUI7OytCQU1SO1VBQ0gsTUFBa0IsS0FBbEIsSUFERztVQUNFLFdBQWEsS0FBYixTQURGOztBQUVULFVBQUksUUFBSixHQUZTO0FBR1QsZUFBUyxRQUFULEdBSFM7Ozs7U0FOUSIsImZpbGUiOiJtYWluLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IE1hdGhUYWcgZnJvbSBcIi4vdGFnL21hdGhcIjtcclxuaW1wb3J0IEluamVjdCBmcm9tIFwiLi9maWx0ZXIvaW5qZWN0XCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNYXRoSmF4IHtcclxuICBjb25zdHJ1Y3RvcihoZXhvKSB7XHJcbiAgICB0aGlzLmhleG8gPSBoZXhvO1xyXG4gICAgdGhpcy50YWcgPSBuZXcgTWF0aFRhZyhoZXhvKTtcclxuICAgIHRoaXMuaW5qZWN0b3IgPSBuZXcgSW5qZWN0KGhleG8pO1xyXG4gIH1cclxuICByZWdpc3RlcigpIHtcclxuICAgIGxldCB7IHRhZywgaW5qZWN0b3IgfSA9IHRoaXM7XHJcbiAgICB0YWcucmVnaXN0ZXIoKTtcclxuICAgIGluamVjdG9yLnJlZ2lzdGVyKCk7XHJcbiAgfVxyXG59XHJcbiJdLCJzb3VyY2VSb290IjoiL3NvdXJjZS8ifQ==
module.exports = exports['default'];

@@ -13,2 +13,12 @@ "use strict";

var _katex = require("katex");
var _katex2 = _interopRequireDefault(_katex);
var _underscore = require("underscore");
var _underscore2 = _interopRequireDefault(_underscore);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }

@@ -19,6 +29,7 @@

var MathTag = function () {
function MathTag(hexo) {
function MathTag(hexo, opts) {
_classCallCheck(this, MathTag);
this.hexo = hexo;
this.opts = opts;
}

@@ -36,7 +47,30 @@

value: function _transform(args, content) {
content = entities.encode(content.trim());
var multiLine = /\n/.test(content);
var transformers = {
mathjax: this._mathJax.bind(this),
katex: this._kaTeX.bind(this)
};
return transformers[this.opts.engine](content, multiLine);
}
}, {
key: "_mathJax",
value: function _mathJax(content, multiLine) {
content = entities.encode(content.trim());
return multiLine ? "<span>$$" + content + "$$</span>" + _consts.MATH_MARKER : "<span>$" + content + "$</span>" + _consts.MATH_MARKER;
}
}, {
key: "_kaTeX",
value: function _kaTeX(content, multiLine) {
content = entities.decode(content.trim());
var opts = _underscore2.default.extend({}, this.opts.katex.config, { displayMode: multiLine });
try {
return _katex2.default.renderToString(content, opts);
} catch (e) {
this.hexo.log.error(e);
}
return content;
}
}]);

@@ -48,3 +82,2 @@

exports.default = MathTag;
module.exports = exports['default'];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRhZy9tYXRoLmVzNiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUVBLElBQU0sV0FBVyxtQ0FBWDs7SUFFZTtBQUNuQixXQURtQixPQUNuQixDQUFZLElBQVosRUFBa0I7MEJBREMsU0FDRDs7QUFDaEIsU0FBSyxJQUFMLEdBQVksSUFBWixDQURnQjtHQUFsQjs7ZUFEbUI7OytCQUlSO1VBQ0gsTUFBUSxLQUFLLElBQUwsQ0FBVSxNQUFWLENBQVIsSUFERzs7QUFFVCxVQUFJLFFBQUosQ0FBYSxNQUFiLEVBQXFCLEtBQUssVUFBTCxDQUFnQixJQUFoQixDQUFxQixJQUFyQixDQUFyQixFQUFpRCxFQUFFLE1BQU0sSUFBTixFQUFuRCxFQUZTOzs7OytCQUlBLE1BQU0sU0FBUztBQUN4QixnQkFBVSxTQUFTLE1BQVQsQ0FBZ0IsUUFBUSxJQUFSLEVBQWhCLENBQVYsQ0FEd0I7QUFFeEIsVUFBSSxZQUFZLEtBQUssSUFBTCxDQUFVLE9BQVYsQ0FBWixDQUZvQjs7QUFJeEIsYUFBTyx5QkFBdUIsMkNBQXZCLGVBQ3NCLDBDQUR0QixDQUppQjs7OztTQVJQIiwiZmlsZSI6InRhZy9tYXRoLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWxsSHRtbEVudGl0aWVzIH0gZnJvbSBcImh0bWwtZW50aXRpZXNcIjtcclxuaW1wb3J0IHsgTUFUSF9NQVJLRVIgfSBmcm9tIFwiLi4vY29uc3RzXCI7XHJcbmNvbnN0IGVudGl0aWVzID0gbmV3IEFsbEh0bWxFbnRpdGllcygpXHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNYXRoVGFnIHtcclxuICBjb25zdHJ1Y3RvcihoZXhvKSB7XHJcbiAgICB0aGlzLmhleG8gPSBoZXhvO1xyXG4gIH1cclxuICByZWdpc3RlcigpIHtcclxuICAgIGxldCB7IHRhZyB9ID0gdGhpcy5oZXhvLmV4dGVuZDtcclxuICAgIHRhZy5yZWdpc3RlcihcIm1hdGhcIiwgdGhpcy5fdHJhbnNmb3JtLmJpbmQodGhpcyksIHsgZW5kczogdHJ1ZSB9KTtcclxuICB9XHJcbiAgX3RyYW5zZm9ybShhcmdzLCBjb250ZW50KSB7XHJcbiAgICBjb250ZW50ID0gZW50aXRpZXMuZW5jb2RlKGNvbnRlbnQudHJpbSgpKTtcclxuICAgIGxldCBtdWx0aUxpbmUgPSAvXFxuLy50ZXN0KGNvbnRlbnQpO1xyXG5cclxuICAgIHJldHVybiBtdWx0aUxpbmUgPyBgPHNwYW4+JCQke2NvbnRlbnR9JCQ8L3NwYW4+JHtNQVRIX01BUktFUn1gXHJcbiAgICAgICAgICAgICAgICAgICAgIDogYDxzcGFuPiQke2NvbnRlbnR9JDwvc3Bhbj4ke01BVEhfTUFSS0VSfWA7XHJcbiAgfVxyXG59XHJcbiJdLCJzb3VyY2VSb290IjoiL3NvdXJjZS8ifQ==
module.exports = exports['default'];
{
"name": "hexo-math",
"version": "3.0.0-alpha1",
"description": "Add MathJax support to hexo",
"version": "3.0.0-alpha3",
"description": "Add math support to hexo",
"main": "lib/index.js",

@@ -14,3 +14,3 @@ "repository": {

"postinstall": "cd ../.. && npm install --save hexo-inject",
"test": "gulp test"
"test": "gulp test --debug"
},

@@ -29,2 +29,3 @@ "keywords": [

"html-entities": "^1.1.3",
"katex": "^0.5.1",
"underscore": "^1.8.3"

@@ -47,4 +48,5 @@ },

"hexo-util": "^0.5.3",
"mocha": "^2.2.5"
"mocha": "^2.2.5",
"underscore": "^1.8.3"
}
}
hexo-math [![Build Status](https://travis-ci.org/akfish/hexo-math.svg?branch=master)](https://travis-ci.org/akfish/hexo-math)
===================
A hexo plugin that uses MathJax to render math equations. Features:
A hexo plugin that uses MathJax/KaTeX to render math equations. Features:
* Automatcially deploy and add reference to MathJax
* Provide support to both MathJax's inline math syntax and math tags
* Dynamic MathJax/KaTeX injection on demand
* Provide support to both inline math syntax and math tags
* Server-side rendering with KaTeX (new in 3.0.0)
<del>(See a Chinese version of this document [here](http://blog.catx.me/2014/03/09/hexo-mathjax-plugin/))</del> *Information in that post is out-dated*
## New in 3.0.0: Server-side rendering with KaTeX
Since 3.0.0, hexo-math added support to [KaTeX](https://github.com/Khan/KaTeX) .
It has serval advantages over MathJax:
* Server-side rendering
* Faster and smaller
Current limitations are:
* It supports less commands than MathJax. Check out [this list](https://github.com/Khan/KaTeX/wiki/Function-Support-in-KaTeX) for more information.
* hexo-math will only render math tags with KaTeX
## Install
> npm install hexo-math --save

@@ -23,6 +34,13 @@

```yaml
mathjax:
src: custom_mathjax_source
config:
# MathJax config
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
```

@@ -33,15 +51,26 @@

const DEFAULT_OPTS = {
src: "//cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML",
config: {
tex2jax: {
inlineMath: [ ['$','$'], ["\\(","\\)"] ],
skipTags: ['script', 'noscript', 'style', 'textarea', 'pre', 'code'],
processEscapes: true
},
TeX: {
equationNumbers: {
autoNumber: "AMS"
engine: 'mathjax',
mathjax: {
src: "//cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML",
config: {
tex2jax: {
inlineMath: [ ['$','$'], ["\\(","\\)"] ],
skipTags: ['script', 'noscript', 'style', 'textarea', 'pre', 'code'],
processEscapes: true
},
TeX: {
equationNumbers: {
autoNumber: "AMS"
}
}
}
}
},
katex: {
css: "https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.5.1/katex.min.css",
js: "https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.5.1/katex.min.js",
config: {
throwOnError: false,
errorColor: "#cc0000"
}
}
}

@@ -52,6 +81,6 @@ ```

You can use MathJax's inline math syntax directly. But always remember to escape any special characters by adding a ```\``` before it.
You can use inline math syntax directly. But always remember to escape any special characters by adding a ```\``` before it.
LaTex equations usually contains tones of special characters like ```\```, which makes it painful to escape them one by one. In such cases, you can use hexo-math's tags to make your life easier.
**MathJax Inline:**
**Inline:**

@@ -62,3 +91,3 @@ ```markdown

**MathJax Block:**
**Block:**

@@ -106,2 +135,6 @@ ```markdown

### Migrating to 3.0.0
* `mathjax` should be moved under `math` section in your `_config.yml`
### Migrating to 2.1.0

@@ -108,0 +141,0 @@

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet