Comparing version
@@ -74,3 +74,13 @@ { | ||
} | ||
}, | ||
"cli:default": { | ||
"opts": { | ||
"mapping": { | ||
"es6:default": {}, | ||
"GLOBAL": { | ||
"sourceMap": "debug" | ||
} | ||
} | ||
} | ||
} | ||
} |
@@ -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\">"; |
@@ -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 [](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
951130
9.35%157
18.05%2965
3.89%228
16.92%3
50%16
6.67%+ Added
+ Added
+ Added