簡(jiǎn)書(shū)不支持 MathJax 顯示數(shù)學(xué)公式蚀狰,較完整的閱讀體驗(yàn)請(qǐng)移步這里手销。
在書(shū)寫(xiě)數(shù)值計(jì)算類(lèi)文章苫幢,特別是機(jī)器學(xué)習(xí)相關(guān)算法時(shí)访诱,難免需要插入復(fù)雜的數(shù)學(xué)公式。一種是用圖片在網(wǎng)頁(yè)上展示韩肝,另外一種是使用 MathJax 來(lái)展示復(fù)雜的數(shù)學(xué)公式触菜。它直接使用 Javascript 使用矢量字庫(kù)或 SVG 文件來(lái)顯示數(shù)學(xué)公式。優(yōu)點(diǎn)是效果好哀峻,比如在 Retina 屏幕上也不會(huì)變得模糊涡相。并且可以直接把公式寫(xiě)在 Markdown 文章里。本文介紹使用 MathJax 在 Markdown 文件里直接插入數(shù)學(xué)公式剩蟀。并且附帶一個(gè)簡(jiǎn)單的書(shū)寫(xiě)數(shù)學(xué)公式的 LaTex 教程催蝗。
工具
配置 Markdown Preview 來(lái)支持 MathJax
使用 Sublime + Markdown Preview 插件來(lái)寫(xiě)博客時(shí)。需要開(kāi)啟 Markdown Preview 對(duì) MathJax 的支持育特,這樣在預(yù)覽界面才能正確地顯示數(shù)學(xué)公式丙号。方法是打開(kāi)在 Markdown Preview 的用戶(hù)配置文件 (Package Settings -> Markdown Preview -> Setting - User) 里添加如下內(nèi)容:
"enable_mathjax": true
配置 Pelican 主題模板來(lái)支持 MathJax
我使用的主題是 foundation-default-colours
,它默認(rèn)是支持 MathJax 的。我們可以在模板 base.html
找到如下內(nèi)容:
<!-- 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>
如果模板不支持犬缨,也可以直接添加上面的腳本來(lái)支持 MathJax喳魏。
LaTex 簡(jiǎn)明教程
例子
先來(lái)看個(gè)例子:
$$
J(\theta) = \frac 1 2 \sum_{i=1}^m (h_\theta(x^{(i)})-y^{(i)})^2
$$
上面用 LaTex 格式書(shū)寫(xiě)的數(shù)學(xué)公式經(jīng)過(guò) MathJax 展示后效果如下:
$$
J(\theta) = \frac 1 2 \sum_{i=1}^m (h_\theta(x{(i)})-y{(i)})^2
$$
這個(gè)公式是線(xiàn)性回歸算法里的成本函數(shù)。
規(guī)則
關(guān)于在 Markdown 書(shū)寫(xiě) LaTex 數(shù)學(xué)公式有幾個(gè)規(guī)則常用規(guī)則需要記妆槌摺:
行內(nèi)公式
行內(nèi)公式使用 $
號(hào)作為公式的左右邊界截酷,如 $h(x) = \theta_0 + \theta_1 x$ 公式的 LaTex 內(nèi)容如下
$h(x) = \theta_0 + \theta_1 x$
行間公式
公式需要獨(dú)立顯示一行時(shí),使用 $$
來(lái)作為公式的左右邊界乾戏,如
$$
\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 代碼
需要記住的幾個(gè)常用的符號(hào)迂苛,這樣書(shū)寫(xiě)起來(lái)會(huì)快一點(diǎn)
編碼 | 說(shuō)明 | 示例 |
---|---|---|
\frac | 分子分母之間的橫線(xiàn) | $\frac1x$ |
_ | 用下劃線(xiàn)來(lái)表示下標(biāo) | $x_i$ |
^ | 次方運(yùn)算符來(lái)表示上標(biāo) | $x^i$ |
\sum | 累加器,上下標(biāo)用上面介紹的編碼來(lái)書(shū)寫(xiě) | $\sum$ |
\alpha | 希臘字母 alpha | $y := \alpha x$ |
記住這幾個(gè)就差不多了鼓择,倒回去看一下線(xiàn)性回歸算法的成本函數(shù)的公式及其 LaTex 代碼三幻,對(duì)著練習(xí)個(gè)10分鐘基本就可以掌握常用公式的寫(xiě)法了。要特別注意公式里空格和 {}
的運(yùn)用規(guī)則呐能∧畎幔基本原則是,空格可加可不加摆出,但如果會(huì)引起歧義朗徊,最好加上空格。{}
是用來(lái)組成群組的偎漫。比如寫(xiě)一個(gè)分式時(shí)爷恳,分母是一個(gè)復(fù)雜公式時(shí),可以用 {}
包含起來(lái)象踊,這樣整個(gè)復(fù)雜公式都會(huì)變成分母了温亲。
幾個(gè)非常有用的資源
- Github 上有個(gè)在線(xiàn) Markdown MathJax 編輯器,可以在這里練習(xí)杯矩,平時(shí)寫(xiě)公式時(shí)也可以在這里先寫(xiě)好再拷貝到文章里
- 這是 LaTex 完整教程栈虚,包含完整的 LaTex 數(shù)學(xué)公式的內(nèi)容,包括更高級(jí)的格式控制等
- 這是一份PDF 格式的 MathJax 支持的數(shù)學(xué)符號(hào)表史隆,當(dāng)需要書(shū)寫(xiě)復(fù)雜數(shù)學(xué)公式時(shí)魂务,一些非常特殊的符號(hào)的轉(zhuǎn)義字符可以從這里查到
好啦,這樣差不多就可以寫(xiě)出優(yōu)美的數(shù)學(xué)公式啦泌射。