hexo-math
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.
Installation
$ npm i hexo-math --save
- Requires Hexo 5+
Usage
KaTeX
{% katex '{options}' %}
content
{% endkatex %}
Examples
{% 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 %}
Examples
{% 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 %}
Per-article configuration
Override the global options via the front-matter of an article (post/page) basis.
---title: On the Electrodynamics of Moving Bodiescategories: Physicsdate: 1905-06-30 12:00:00katex: falsemathjax: false---
Options
Disable math renderer in an article:
---katex: falsemathjax: false---
Override global options:
---katex:output: 'mathml'felqn: trueminRuleThickness: 0.05throwOnError: truemathjax:conversion:em: 14tex:tags: 'ams'svg:exFactor: 0.03---
Global Options
# _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 tosource/css/style.css
orthemes/<theme-name>/source/css/style.css
.
- Example:
- It can be disabled (
css: false
) if the installed theme has already included one.- KaTeX: defaults to the official stylesheet.
- MathJax: defaults to style.css
- Specify a relative path if you're self-hosting the stylesheet.
KaTeX
katex:options:throwOnError: false
- options: Refer to the documentation for available options.
MathJax
mathjax:options:conversion:display: falsetex:svg:
- options: Rendering options.
- conversion: Conversion options.
- tex: TeX input options.
- svg: SVG output options.
Configuration priority
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 %}
# front-matter---katex:output: 'mathml'minRuleThickness: 0.05throwOnError: true---
# _config.ymlmath:katex:options:minRuleThickness: 0.03maxExpand: 900
Following options will be parsed as argument for that specific content:
output: 'html'felqn: trueminRuleThickness: 005throwOnError: truemaxExpand: 900
Similar project
-
- hexo-math uses tag plugin approach due to minor incompatibility between LaTeX and marked, the default markdown renderer of Hexo (via hexo-renderer-marked).