NexT provides two render engines for displaying Math Equations.
If you choose to use this feature, you don't need to manually import any JS or CSS. You just need to choose a render engine and turn on enable
for it (located in next/_config.yml
).
Notice: only turning on enable
cannot let you see the displayed equations correctly, you need to install the corresponding Hexo Renderer to fully support the display of Math Equations. The corresponding Hexo Renderer per engine will be provided below.
For now, NexT provides two Render Engines: MathJax and Katex.
If you use MathJax to render Math Equations, you need to use one of them: hexo-renderer-pandoc or hexo-renderer-kramed (Not recommended) as the renderer for Markdown.
Firstly, you need to uninstall the original renderer hexo-renderer-marked
, and install one of the renderer above:
npm uninstall hexo-renderer-marked
npm install hexo-renderer-pandoc # or hexo-renderer-kramed
Secondly, in next/_config.yml
, turn on enable
of mathjax
.
math:
...
mathjax:
enable: true
Finally, run standard Hexo generate, deploy process or start the server:
hexo clean && hexo g -d
# or hexo clean && hexo s
In the new version of NexT, we have added feature to automatically number equations and to refer to equations. We briefly describe how to use this feature below.
In general, to make the automatic equation numbering work, you have to wrap your LaTeX equations in equation
environment. Using the plain old style (i.e., wrap an equation with two dollar signs in each side) will not work. How to refer to an equation? Just give a \label{}
tag and then in your later text, use \ref{}
or \eqref{}
to refer it. Using \eqref{}
is preferred since if you use \ref{}
, there are no parentheses around the equation number. Below are some of the common scenarios for equation numbering.
For simple equations, use the following form to give a tag,
$$\begin{equation}\label{eq1}
e=mc^2
\end{equation}$$
Then, you can refer to this equation in your text easily by using something like
the famous matter-energy equation $\eqref{eq1}$ proposed by Einstein ...
For multi-line equations, inside the equation
environment, you can use the aligned
environment to split it into multiple lines:
$$\begin{equation}\label{eq2}
\begin{aligned}
a &= b + c \\
&= d + e + f + g \\
&= h + i
\end{aligned}
\end{equation}$$
We can use align
environment to align multiple equations. Each of these equations will get its own numbers.
$$\begin{align}
a &= b + c \label{eq3} \\
x &= yz \label{eq4}\\
l &= m - n \label{eq5}
\end{align}$$
In the align
environment, if you do not want to number one or some equations, just use \nonumber
right behind these equations. Like the following:
$$\begin{align}
-4 + 5x &= 2+y \nonumber \\
w+2 &= -1+w \\
ab &= cb
\end{align}$$
Sometimes, you want to use more “exotic” style to refer your equation. You can use \tag{}
to achieve this. For example:
$$x+1\over\sqrt{1-x^2} \tag{i}\label{eq_tag}$$
For more information, you can visit the official MathJax documentation on equation numbering. You can also visit this post for more details.
The Katex engine is a much faster math render engine compared to MathJax. And it could survive without JavaScript.
But, what Katex supports is not as full as MathJax. You could check it from the Useful Links below.
If you use Katex to render Math Equations, you need to use only one of those renderer: hexo-renderer-markdown-it-plus or hexo-renderer-markdown-it.
Firstly, you need to uninstall the original renderer hexo-renderer-marked
, and install one of selected above.
npm uninstall hexo-renderer-marked
npm install hexo-renderer-markdown-it-plus
# or hexo-renderer-markdown-it
Secondly, in next/_config.yml
, turn on enable
option of katex
.
math:
...
katex:
enable: true
Finally, run the standard Hexo generate, deploy process or start the server:
hexo clean && hexo g -d
# or hexo clean && hexo s
If you use hexo-renderer-markdown-it
,you also need to add markdown-it-katex
as its plugin:
npm install markdown-it-katex
And then in hexo/_config.yml
you need to add markdown-it-katex
as a plugin for hexo-renderer-markdown-it
:
# config of hexo-renderer-markdown-it
markdown:
render:
html: true
xhtmlOut: false
breaks: true
linkify: true
typographer: true
quotes: '“”‘’'
plugins:
- markdown-it-katex
$$...$$
) needs to started with new clear line.\
In other words: you must not have any characters (except of whitespaces) before the opening $$
and after the ending $$
(comment #32).$...$
) must not have white spaces after the opening $
and before the ending $
(comment #32).## Heading
).\
Then in corresponding TOC item it will show the related LaTex code 3 times (comment #32).We currently use Katex 0.11.1, some of those bugs might be caused by the outdated version of Katex we use.
But, as what is described in the beginning, the render of Math Equations relies on Hexo Renderer. Currently, Katex-related renderers only support Katex version until 0.11.1.
We will continuously monitor the updates of corresponding renderers, if there is a renderer which supports newer version of Katex, we will update the Katex we use.
ATTENTION! When you edit those configs, don't change indentation!
Currently, all NexT config use 2 spaces indents.
If your content of config is put just directly after the config name, then a space is needed between the colon and the config content (i.e. enable: true
)
# Math Formulas Render Support
math:
# Default (true) will load mathjax / katex script on demand.
# That is it only render those page which has `mathjax: true` in Front-matter.
# If you set it to false, it will load mathjax / katex srcipt EVERY PAGE.
per_page: true
# hexo-renderer-pandoc (or hexo-renderer-kramed) required for full MathJax support.
mathjax:
enable: true
# See: https://mhchem.github.io/MathJax-mhchem/
mhchem: false
# hexo-renderer-markdown-it-plus (or hexo-renderer-markdown-it with markdown-it-katex plugin) required for full Katex support.
katex:
enable: false
# See: https://github.com/KaTeX/KaTeX/tree/master/contrib/copy-tex
copy_tex: false
per_page
true
or false
, default is true
.
This option is to control whether to render Math Equations every page.
The behavior of default (true
) is to render Math Equations on demand.
It will only render those posts which have mathjax: true
in their Front-matter.
For example:
<!-- This post will render the Math Equations -->
---
title: 'Will Render Math'
mathjax: true
---
....
<!-- This post will NOT render the Math Equations -->
---
title: 'Not Render Math'
mathjax: false
---
....
<!-- This post will NOT render the Math Equations either -->
---
title: 'Not Render Math Either'
---
....
When you set it to false
, the math will be rendered on EVERY PAGE.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.