刘洪江的流水帐

拾起点点滴滴, 聚沙成石.

一个连咖啡都要趁热一饮而尽的男子

显示公式

| Tags: math

在网页或blog中引用数学公式是一件痛苦的事情。经过几番在网上的查找,算是勉强找到了一个借鉴方法。借用强大的MathJax + Latex就可以解决这个问题。废话少说,先来一个例子

更多例子

下面是在段中插入公式:

1
段内插入LaTeX代码是这样的:$\exp(-\frac{x^2}{2})$,试试看看吧

段内插入LaTeX代码是这样的:$\exp(-\frac{x^2}{2})$,试试看看吧

1
在段中插入公式$$J_\alpha(x) = \sum\limits_{m=0}^\infty \frac{(-1)^m}{m! \, \Gamma(m + \alpha + 1)}{\left({\frac{x}{2}}\right)}^{2 m + \alpha}$$,效果如何

在段中插入公式,效果如何

更多更多例子

1
2
3
4
5
$$
\begin{align*}
  & J_\alpha(x) = \sum\limits_{m=0}^\infty \frac{(-1)^m}{m! \, \Gamma(m + \alpha + 1)}{\left({\frac{x}{2}}\right)}^{2 m + \alpha}
\end{align*}
$$

公式显示如下: 注意:$$前一定要有空行

或者在一行里:

1
$$ J_\alpha(x) = \sum\limits_{m=0}^\infty \frac{(-1)^m}{m! \, \Gamma(m + \alpha + 1)}{\left({\frac{x}{2}}\right)}^{2 m + \alpha} $$

公式显示如下:

本文开头的例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$$
\begin{align*}
  & \phi(x,y) = \phi \left(\sum_{i=1}^n x_ie_i, \sum_{j=1}^n y_je_j \right)
  = \sum_{i=1}^n \sum_{j=1}^n x_i y_j \phi(e_i, e_j) = \\
  & (x_1, \ldots, x_n) \left( \begin{array}{ccc}
      \phi(e_1, e_1) & \cdots & \phi(e_1, e_n) \\
      \vdots & \ddots & \vdots \\
      \phi(e_n, e_1) & \cdots & \phi(e_n, e_n)
    \end{array} \right)
  \left( \begin{array}{c}
      y_1 \\
      \vdots \\
      y_n
    \end{array} \right)
\end{align*}
$$

显示如下:

错误的例子

这个本来是MathJax默认的方式,但是在kramdown中无法显示

1
\[ J_\alpha(x) = \sum\limits_{m=0}^\infty \frac{(-1)^m}{m! \, \Gamma(m + \alpha + 1)}{\left({\frac{x}{2}}\right)}^{2 m + \alpha} \]

[ J\alpha(x) = \sum\limits{m=0}^\infty \frac{(-1)^m}{m! \, \Gamma(m + \alpha + 1)}{\left({\frac{x}{2}}\right)}^{2 m + \alpha} ]

krmadown

本文主要用到了krmadown,使用很简单,下载安装kramdown,在后在_config.yml文件里面配置即可

  • kramdown主页
    kramdown

  • 配置kramdown
    在_config.yml文件里

1
markdown: kramdown

链接

其实我主要是借鉴了下面两篇文字,具体如何配置,也可以在这两篇文字中找到。

MathJax加载

按照“如何加入公式”的方法加入脚本,会产生一个问题,无论这个页面有没有数学公式,都会去加载MathJax脚本,而加载这个脚本的速度非常慢。那么如何控制,哪些页面加入这个脚本,哪些页面不需要加?

首先,我在post文档中加入了一个变量math,

1
2
3
4
5
6
7
8
---
layout: post
title: "显示公式"
date: 2012-11-21 12:49
comments: true
math: true
categories: math
---

然后在source/_includes/custom/head.html加入脚本相关内容时,加入了 {% if page.math == true %}...{% endif %} 语句进行判断,完整的如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34

{% if page.math == true %}
<!--JS for show math symbols -->
<script type="text/x-mathjax-config">
  MathJax.Hub.Config({
    tex2jax: {
      inlineMath: [ ['$','$'], ["\\(","\\)"] ],
      processEscapes: true
    }
  });
</script>

<script type="text/x-mathjax-config">
    MathJax.Hub.Config({
      tex2jax: {
        skipTags: ['script', 'noscript', 'style', 'textarea', 'pre', 'code']
      }
    });
</script>

<script type="text/x-mathjax-config">
    MathJax.Hub.Queue(function() {
        var all = MathJax.Hub.getAllJax(), i;
        for(i=0; i < all.length; i += 1) {
            all[i].SourceElement().parentNode.className += ' has-jax';
        }
    });
</script>

<script type="text/javascript"
  src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
</script>
{% endif %}

这样,在post的markdown中文件中,如果你声明mathtrue,那么就会在最后生成的html文件中加上这段加载MathJax的代码;如果不声明,或在声明为空或false,就不会添加加载MathJax的代码。

还有一个问题,就是在博客首页生成的pinboard中,如果有公式的话,就无法正常显示了。如果需要在首页的pinboard中显示公式,在source/index.html文件中加入math的声明。

1
2
3
4
---
layout: default
math: true
---

关于Latex

本人不会Latex,那么怎么生成Latex格式的公式呢?

  • 一是可以在线生成:Online LaTeX Equation Editor
  • 二是使用mathtype。
    在mathtype的Preferences->Cut and Copy preferences...选中MathML to Tex。编辑公式后拷贝,粘贴到记事本,就可以得到Latex格式的公式。

常用latex符号

特殊字符

功能 语法 显示
标准函数 \sin x + \ln y +\operatorname{sgn} z $\sin x + \ln y +\operatorname{sgn} z$
其他 \nabla \partial dx $\nabla \partial dx$
\forall x\not\in\varnothing\subseteq A\cap B\cup \exists \{x,y\} \times C $\forall x \not\in \varnothing \subseteq A\cap B\cup \exists {x,y} \times C$
逻辑 p\wedge \bar{q} \rightarrow p\vee \bar{q} \Rightarrow r $p\wedge \bar{q} \rightarrow p\vee \bar{q} \Rightarrow r$
根号 \pm \sqrt{2}\approx\pm 1.4 $\pm \sqrt{2}\approx\pm 1.4$
  \sqrt[n]{x} $\sqrt[n]{x}$
等号 \sim \simeq \cong \le \ge \equiv \approx \ne $\sim \ \simeq \ \cong \ \le \ \ge \ \equiv \ \approx \ \ne$
几何 \angle \perp \| $\angle \perp \|$
特殊 \oplus \otimes \mp \hbar \dagger \ddagger \star \circ \cdot \bullet $\oplus \otimes \mp \ \hbar \dagger \ddagger \star \circ \cdot \bullet$

letax数学公式

Comments