在Jekyll中使用LaTeX

我准备用 Jekyll + Github page 搭建自己的技术博客. 但是有个问题, 技术文章中不可避免地需要使用到数学公式, Jekyll 原生的 Markdown 解释器总是不能很好地使用 Latex. 通过查阅资料, 我最终解决了这个问题. 下面是我的做法:

  1. 禁用 Kramdown 自带的公式解释器:

    _config.yml 中加入:

    1
    2
    kramdown:
    math_engine: null

  2. 导入 mathjax 的 javascript 代码: 在 _includes 下新建文件 latex.html, 粘贴上以下内容:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    <script type="text/x-mathjax-config">
    MathJax.Hub.Config({
    TeX: {
    equationNumbers: {
    autoNumber: "AMS"
    }
    },
    tex2jax: {
    inlineMath: [ ['$','$'] ],
    displayMath: [ ['$$','$$'] ],
    processEscapes: true,
    }
    });
    </script>
    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
    </script>

  3. 把 mathjax include 到 html 的 <head> 标签中: 这一步根据你使用的主题的不同, 修改 _layouts 文件 或是 _includes 文件. 总之就是找到 <head> 标签定义的地方然后加入 include 代码. 我使用的主题是 minima, minima 的 <head> 标签定义在 _includes/head.html 中. 因此我在自己的博客目录下新建文件 _includes/head.html 来覆盖主题默认的文件, 粘贴上以下内容:

    1
    2
    3
    4
    5
    6
    7
    8
    <head>
    <meta charset="utf-8">
    ...

    {% unless page.no_latex %}
    {% include latex.html %}
    {% endunless %}
    </head>

大功告成! 在 \$ \$ 之间的 LaTex 会变成行内公式就像这样: $\mathrm{e}^{\pi\mathrm{i}}+1=0$ 转换成 \(\mathrm{e}^{\pi\mathrm{i}}+1=0\) ; 新起一段并且在 \\(\\\) \\(\\\) 之间的 LaTeX 会变成段落公式就像这样:

1
2
3
4

$$
H_n=1+\frac{1}{2}+\frac{1}{3}+...+\frac{1}{n}=\sum_{i=1}^{n}\frac{1}{i}=O(\log n)
$$
转换成

\[ H_n=1+\frac{1}{2}+\frac{1}{3}+...+\frac{1}{n}=\sum_{i=1}^{n}\frac{1}{i}=O(\log n) \]

参考资料: How to use MathJax in Jekyll generated Github pages


在Jekyll中使用LaTeX
https://luyuhuang.tech/2019/09/12/use-latex-in-jekyll.html
Author
Luyu Huang
Posted on
September 12, 2019
Licensed under