Jekyll 中加 LaTeX 公式

MathJex配置和基础语法

Posted by lintao on April 15, 2019

Markdown语法中应该是可以支持基础公式编写,但是Jekyll未必支持,故没有尝试。
以下采用MathJax配置。

1. 配置并链接 MathJex 库

MathJax 是一款基于 JavaScript 的开源数学公式显示引擎,利用它可在各种当下流行的浏览器中“完美”渲染并显示 LaTax、MathML 以及 AsciiMath 数学公式。

但是,在 Jekyll 中使用 MathJax 时会出现严重问题,原因在于一些 LaTex 公式通常被作为 Markdown 标记处理从而影响公式的正常输出显示,因此需要一些特殊的配置。

配置方法:<head> 标签中加入以下代码块。 如果使用本仓库的博客模板,加在 _include 下的 head.html<head> 内即可。

<script type="text/x-mathjax-config">
  MathJax.Hub.Config({
    tex2jax: {
      skipTags: ['script', 'noscript', 'style', 'textarea', 'pre'],
      inlineMath: [['$','$']]
    }
  });
</script>
<script src='https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/latest.js?config=TeX-MML-AM_CHTML' async></script>

效果如下:

2. MathJex 基本语法

2.1. 呈现位置:

  • 行内显示(inline)中的 LaTeX 公式用 $...$ 定义:
    • 语句为 $\sum_{i=0}^N\int_{a}^{b}g(t,i)\text{d}t$
    • 显示为 $\sum_{i=0}^N\int_{a}^{b}g(t,i)\text{d}t$
  • 行间显示(display)中 LaTeX 公式用 $$...$$ 定义,公式居中并放大展示:
    • 语句为 $$\sum_{i=0}^N\int_{a}^{b}g(t,i)\text{d}t$$
    • 显示为

    行间公式必须单独写一行,且行上行下必须都空出一行

  • 以下描述语法若非特别指出均省略 $...$

2.2 上下标、矢量和字体

code show code show code show
X_n^i $X_n^i$ e^{i\pi}+1=0 $e^{i\pi}+1=0$    
\vec a $\vec a$ \overrightarrow{xy} $\overrightarrow{xy}$ \overline x $\overline x$
\mathtt{ABC} $\mathtt{ABC}$ \mathbb{A} $\mathbb{ABC}$ \mathsf{A} $\mathsf{ABC}$

2.3. 求和、极限与积分

code show code show code show code show
\sum $\sum_{i=1}^n{a_i}$ \lim $\lim_{x\to 0}$ \displaystyle $\displaystyle\lim_{x\to \infty}$ \int $\int_0^\infty{fxdx}$

2.4. 分式与根式

code show code show code show
\frac{x}{y} $\frac{x}{y}$ \left(...\right) $\left(\frac{x}{y}\right)$ \sqrt[x]{y} $\sqrt[x]{y}$

2.5 特殊函数

code show code show code show
\sin x $\sin x$ \ln x $\ln x$ \max(A,B,C) $\max(A,B,C)$

2.6 特殊符号、希腊字母

code show code show code show code show
\infty $\infty$ \cup $\cup$ \cap $\cap$ \subset $\subset$
\subseteq $\subseteq$ \supset $\supset$ \in $\in$ \notin $\notin$
\varnothing $varnothing$ \forall $forall$ \exists $\exists$ lnot $\lnot$
\nabla $\nabla$ \partial $\partial$ \alpha $\alpha$ \beta $\beta$
\gamma $\gamma$ \delta $\delta$ \epsilon $\epsilon$ \zeta $\zeta$
\eta $\eta$ \theta $\theta$ \iota $\iota$ \kappa $\kappa$
\lambda $\lambda$ \mu $\mu$ \nu $\nu$ \xi $\xi$
\pi $\pi$ \rho $\rho$ \sigma $\sigma$ \tau $tau$
\upsilon $\upsilon$ \phi $\phi$ \chi $\chi$ \psi $\psi$
\omega $\omega$            

2.7 矩阵

  • 起始标记 \begin{matrix}, 结束标记 \end{matrix}.
  • 每一行末尾标记 \\ , 行间元素之间以 & 分隔
  • 举例
    $$\begin{matrix}
    1&0&0\\
    0&1&0\\
    0&0&1\\
    \end{matrix}$$

2.8 省略元素、边框元素

code show code show code show
\cdots $\cdots$ \vdots $\vdots$ \ddots $\ddots$
pmatrix bmatrix Bmatrix
vmatrix Vmatrix    
  • 举例
    $$\begin{bmatrix}
    {a_{11}}&{a_{12}}&{\cdots}&{a_{1n}}\\
    {a_{21}}&{a_{22}}&{\cdots}&{a_{2n}}\\
    {\vdots}&{\vdots}&{\ddots}&{\vdots}\\
    {a_{m1}}&{a_{m2}}&{\cdots}&{a_{mn}}\\
    \end{bmatrix}$$

2.9 阵列

  • 需要array环境:起始、终止处以 {array} 声明
  • 对齐方式:在 {array} 后以 {} 逐行统一声明
    • 左对齐: l \ 居中 c \ 右对齐 r
    • 竖直线: 在声明对齐方式时,插入 | 建立竖直线
  • 插入水平线: \hline
  • 举例:
    $$\begin{array}{c|lll}
    {arr}&{a}&{b}&{c}\\
    \hline
    {R_1}&{c}&{b}&{a}\\
    {R_2}&{b}&{c}&{c}\\
    \end{array}$$

2.10 方程组

  • 需要cases环境:起始、终止处以 {cases} 声明
  • 举例:
    $$\begin{cases}
    a_1x+b_1y+c_1z=d_1\\
    a_2x+b_2y+c_2z=d_2\\
    a_3x+b_3y+c_3z=d_3\\
    \end{cases}$$