技能GET: 30分鐘學會寫出優雅的數學公式

簡書不支持 MathJax 顯示數學公式,較完整的閱讀體驗請移步這里

在書寫數值計算類文章,特別是機器學習相關算法時,難免需要插入復雜的數學公式。一種是用圖片在網頁上展示,另外一種是使用 MathJax 來展示復雜的數學公式。它直接使用 Javascript 使用矢量字庫或 SVG 文件來顯示數學公式。優點是效果好,比如在 Retina 屏幕上也不會變得模糊。并且可以直接把公式寫在 Markdown 文章里。本文介紹使用 MathJax 在 Markdown 文件里直接插入數學公式。并且附帶一個簡單的書寫數學公式的 LaTex 教程。

工具

配置 Markdown Preview 來支持 MathJax

使用 Sublime + Markdown Preview 插件來寫博客時。需要開啟 Markdown Preview 對 MathJax 的支持,這樣在預覽界面才能正確地顯示數學公式。方法是打開在 Markdown Preview 的用戶配置文件 (Package Settings -> Markdown Preview -> Setting - User) 里添加如下內容:

"enable_mathjax": true

配置 Pelican 主題模板來支持 MathJax

我使用的主題是 foundation-default-colours,它默認是支持 MathJax 的。我們可以在模板 base.html 找到如下內容:

<!-- mathjax config similar to math.stackexchange -->
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
    jax: ["input/TeX", "output/HTML-CSS"],
    tex2jax: {
        inlineMath: [ ['$', '$'] ],
        displayMath: [ ['$$', '$$']],
        processEscapes: true,
        skipTags: ['script', 'noscript', 'style', 'textarea', 'pre', 'code']
    },
    messageStyle: "none",
    "HTML-CSS": { preferredFont: "TeX", availableFonts: ["STIX","TeX"] }
});
</script>
<script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>

如果模板不支持,也可以直接添加上面的腳本來支持 MathJax。

LaTex 簡明教程

例子

先來看個例子:

$$
J(\theta) = \frac 1 2 \sum_{i=1}^m (h_\theta(x^{(i)})-y^{(i)})^2
$$

上面用 LaTex 格式書寫的數學公式經過 MathJax 展示后效果如下:

$$
J(\theta) = \frac 1 2 \sum_{i=1}^m (h_\theta(x{(i)})-y{(i)})^2
$$

這個公式是線性回歸算法里的成本函數。

規則

關于在 Markdown 書寫 LaTex 數學公式有幾個規則常用規則需要記住:

行內公式
行內公式使用 $ 號作為公式的左右邊界,如 $h(x) = \theta_0 + \theta_1 x$ 公式的 LaTex 內容如下

$h(x) = \theta_0 + \theta_1 x$

行間公式
公式需要獨立顯示一行時,使用 $$ 來作為公式的左右邊界,如

$$
\theta_i = \theta_i - \alpha\frac\partial{\partial\theta_i}J(\theta)
$$

的 LaTex 代碼為:

$$
\theta_i = \theta_i - \alpha\frac\partial{\partial\theta_i}J(\theta)
$$

常用 LaTex 代碼
需要記住的幾個常用的符號,這樣書寫起來會快一點

編碼 說明 示例
\frac 分子分母之間的橫線 $\frac1x$
_ 用下劃線來表示下標 $x_i$
^ 次方運算符來表示上標 $x^i$
\sum 累加器,上下標用上面介紹的編碼來書寫 $\sum$
\alpha 希臘字母 alpha $y := \alpha x$

記住這幾個就差不多了,倒回去看一下線性回歸算法的成本函數的公式及其 LaTex 代碼,對著練習個10分鐘基本就可以掌握常用公式的寫法了。要特別注意公式里空格和 {} 的運用規則。基本原則是,空格可加可不加,但如果會引起歧義,最好加上空格。{} 是用來組成群組的。比如寫一個分式時,分母是一個復雜公式時,可以用 {} 包含起來,這樣整個復雜公式都會變成分母了。

幾個非常有用的資源

  • Github 上有個在線 Markdown MathJax 編輯器,可以在這里練習,平時寫公式時也可以在這里先寫好再拷貝到文章里
  • 這是 LaTex 完整教程,包含完整的 LaTex 數學公式的內容,包括更高級的格式控制等
  • 這是一份PDF 格式的 MathJax 支持的數學符號表,當需要書寫復雜數學公式時,一些非常特殊的符號的轉義字符可以從這里查到

好啦,這樣差不多就可以寫出優美的數學公式啦。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容