Add KaTeX and MathJax support to Hexo
npm install hexo-math


!npm download
Embed [KaTeX] and [MathJax] in [Hexo] post/page via tag plugins. Equations are rendered in Hexo (server-side), so browser-side javascript library is not needed and should be removed. CSS stylesheets are included by default but can be easily replaced.
``bash`
$ npm i hexo-math --save
- Requires Hexo 5+
KaTeX
``
{% katex '{options}' %}
content
{% endkatex %}
``
{% katex %}
c = \pm\sqrt{a^2 + b^2}
{% endkatex %}
Override front-matter and global options for a particular content. Options must be specified in JSON format.
``
{% katex '{ "output": "mathml", "felqn": true, "minRuleThickness": 0.05, "throwOnError": true }' %}
c = \pm\sqrt{a^2 + b^2}
{% endkatex %}
MathJax
``
{% mathjax '{options}' %}
content
{% endmathjax %}
``
{% mathjax %}
\frac{1}{x^2-1}
{% endmathjax %}
Override front-matter and global options for a particular content. Options must be specified in JSON format.
``
{% mathjax '{ "conversion": { "em": 14 }, "tex": { "tags": "ams" }, "svg": { "exFactor": 0.03 } }' %}
\frac{1}{x^2-1}
{% endmathjax %}
Override the global options via the front-matter of an article (post/page) basis.
` yml`
---
title: On the Electrodynamics of Moving Bodies
categories: Physics
date: 1905-06-30 12:00:00
katex: false
mathjax: false
---
Disable math renderer in an article:
` yml`
---
katex: false
mathjax: false
---
Override global options:
` yml`
---
katex:
output: 'mathml'
felqn: true
minRuleThickness: 0.05
throwOnError: true
mathjax:
conversion:
em: 14
tex:
tags: 'ams'
svg:
exFactor: 0.03
---
`yaml`_config.yml
math:
katex:
css: 'https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/katex.min.css'
options:
throwOnError: false
mathjax:
css: 'https://cdn.jsdelivr.net/npm/hexo-math@4.0.0/dist/style.css'
options:
conversion:
display: false
tex:
svg:
- css: Location of stylesheet.
* Specify a relative path if you're self-hosting the stylesheet.
* Example: css: '/css/style.css' refers to source/css/style.css or themes/.css: false
* It can be disabled () if the installed theme has already included one.
* KaTeX: defaults to the official stylesheet.
* MathJax: defaults to style.css
` yaml`
katex:
options:
throwOnError: false
- options: Refer to the documentation for available options.
` yaml`
mathjax:
options:
conversion:
display: false
tex:
svg:
- options: Rendering options.
* conversion: Conversion options.
* tex: TeX input options.
* svg: SVG output options.
Unique options are combined, if there is any duplicate options, argument overrides front-matter, front-matter overrides global options.
Example:
``
{% katex '{ "output": "html", "felqn": true }' %}
content
{% endkatex %}
` yml`front-matter
---
katex:
output: 'mathml'
minRuleThickness: 0.05
throwOnError: true
---
` yml`_config.yml
math:
katex:
options:
minRuleThickness: 0.03
maxExpand: 900
Following options will be parsed as argument for that specific content:
` js`
{
output: 'html',
felqn: true,
minRuleThickness: 0.05,
throwOnError: true,
maxExpand: 900
}
- [hexo-filter-mathjax]: A MathJax plugin developed by @stevenjoezhang, who is also a Hexo developer. It enables you to write LaTeX in-line within your post without using a tag {% %}`.
* hexo-math uses tag plugin approach due to minor incompatibility between LaTeX and [marked], the default markdown renderer of Hexo (via [hexo-renderer-marked]).
[KaTex]: https://katex.org/
[MathJax]: https://www.mathjax.org/
[Hexo]: https://hexo.io/
[hexo-filter-mathjax]: https://github.com/next-theme/hexo-filter-mathjax
[marked]: https://github.com/markedjs/marked
[hexo-renderer-marked]: https://github.com/hexojs/hexo-renderer-marked