Jekyll 显示数学公式
许多博客系统都用 MathJax 实现对数学公式的支持,一般在主题模板上外部引用 MathJax 的脚本,稍作配置即可使用。 相较于 Ghost、Wordpress, 用 Kramdown 引擎的 Jekyll 对 MathJax 的支持更方便,在公式内无需用下标转义。
Kramdown 自动将一对双美元符号「$$」里的内容放入「math/tex」类型的 script 标签内。 MathJax 看到这个标签就自动渲染成单行公式。
源代码翻译成:
<script type="math/tex; mode=display">% <![CDATA[
N < f(x) < M \Leftrightarrow [ f(x)-M ][ f(x)-N] < 0 \\
\Leftrightarrow | f(x)-\frac{M+N}{2} | < \frac{M-N}{2} \\
\Leftrightarrow \frac{f(x)-N}{M-f(x)}>0 %]]></script>
当然在源文件里用 script 标签的形式写也可行:
∁U(A⋂B)=∁UA⋃∁UB;∁U(A⋃B)=∁UA⋂∁UB对一对单美元符号「$」的内容也一样,不做翻译,也不换行,所以 MathJax 见到了就显示成行内公式:
像这样: m=γm0=m0√1−v2/c2
另外还有一个 math 标签,里面须是 MathML 语法才能正常显示,否则 MathJax 报错。
找一个模板文件,加入下面的代码就 OK:
<head>
...
{% if page.latex == true %}
<script type="text/javascript" src="//cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-MML-AM_HTMLorMML">
</script>
{% endif %}
...
</head>
默认 MathJax 关闭了「$」内的公式显示,需要设置。如果想用 AsciiMath, 我试了一下,要把配置的那段放在 body 内:
<body>
...
{% if page.latex == true %}
<script type="text/x-mathjax-config">
MathJax.Hub.Config({ tex2jax: { inlineMath: [ ['$', '$'], ['\\(', '\\)'] ] } });
</script>
{% endif %}
...
</body>
默认 AsciiMath 放在一对「`」符号内, Kramdown 里面需要转义:
n∑i=1i3=(n(n+1)2)2
写文章的时候,文件头加入 latex: true
就会自动包含 MathJax 脚本。