使用Markdown輸出LaTex數(shù)學(xué)公式

現(xiàn)在大數(shù)據(jù)蜜另、人工智能、數(shù)據(jù)分析等很多技術(shù)崗位都對(duì)數(shù)學(xué)有一定的要求嫡意,數(shù)學(xué)越來越重要举瑰,很多人也開始嘗試學(xué)習(xí)數(shù)學(xué),腦子里突然就有了結(jié)合Python編程來學(xué)習(xí)數(shù)學(xué)的想法蔬螟。在網(wǎng)絡(luò)上搜索了很多相關(guān)資料此迅,看到非常多不錯(cuò)的嘗試,但是國(guó)內(nèi)在這方面的資料卻比較少旧巾,于是就想到開一個(gè)技術(shù)專欄耸序。

實(shí)踐出一整套便于互聯(lián)網(wǎng)傳播分享的數(shù)學(xué)公式跨平臺(tái)編輯、跨環(huán)境顯示是非常有必要的菠齿,如果還是停留在Word或PDF時(shí)代佑吝,那數(shù)學(xué)就會(huì)被限制在文檔或圖片里而無法通過最流行的網(wǎng)頁方式進(jìn)行傳播,而且Word绳匀、PDF等文件處理軟件里的數(shù)學(xué)公式編輯既麻煩芋忿,而且最重要的是與編程脫節(jié)。

數(shù)學(xué)公式的編輯與顯示

要將學(xué)習(xí)心得(尤其是數(shù)學(xué)公式等)寫成文檔在知乎疾棵、簡(jiǎn)書戈钢、微信公眾號(hào)以及網(wǎng)站的網(wǎng)頁上面展示出來,使用Markdown以及LaTex Math的結(jié)合我認(rèn)為是最佳的方法是尔。

與LaTex文檔的比較
雖然很多數(shù)學(xué)學(xué)術(shù)論文整個(gè)文檔就像使用Markdown一樣是直接使用的LaTex語法來編輯的殉了,但是仔細(xì)比對(duì)之后發(fā)現(xiàn)直接用LaTex語法來寫整個(gè)文檔來,它的效果和Markdown + LaTex Math 方式?jīng)]有太大的區(qū)別拟枚。
但是LaTex的語法薪铜、編輯器众弓、配置、中文支持等都要比Markdown要復(fù)雜的多隔箍,而且也不及Markdown已經(jīng)非常成熟的生態(tài)(包括工具鏈谓娃、社區(qū)等)。

編輯器與插件
Markdown的編輯器非常多蜒滩,對(duì)于很多初學(xué)者來說滨达,個(gè)人比較推薦使用VS Code。

  • 一是VS Code漢化比較方便俯艰,想讓更多人學(xué)會(huì)使用Python來學(xué)數(shù)學(xué)捡遍,有一個(gè)中文界面還是比較重要的;而且VS Code是跨平臺(tái)的竹握,Mac画株、Windows都可以上手;
  • 二是VS Code是一款極為優(yōu)秀的代碼編輯器涩搓,說起優(yōu)秀污秆,應(yīng)該算是目前最為推薦的編輯器之一(可能沒有之一);要用Python學(xué)數(shù)學(xué)昧甘,就不能用純Markdown軟件良拼,代碼編輯器是少不了的,使用VS Code編譯Python和Markdown都極為舒適充边;
  • 三是VS Code插件豐富庸推,Python的編譯、Markdown的編寫與預(yù)覽浇冰、LaTex Math的顯示等工具鏈相當(dāng)完備贬媒。比如Python插件,只需要安裝插件集合Python Extension Pack肘习,里面就包含了微軟官方插件Python际乘、MagicPython、Jupyter等優(yōu)秀插件漂佩;而Markdown插件脖含,推薦安裝Markdown All in One,以及Markdown+Math投蝉。

LaTex Math的語法

LaTex Math的語法多且雜养葵,我們是沒法完全記住這些語法的,能記住也不提倡吧瘩缆,我連Markdown語法都沒能全記住关拒。查詢手冊(cè)在手,天下我有,這里比較推薦名校萊斯Rice大學(xué)的一個(gè)語法手冊(cè)着绊,萊斯大學(xué)LaTex Math在線PDF手冊(cè)谐算。

當(dāng)然安裝了上述插件的VS Code也是有LaTex Math語法提示的。用英文字符反斜杠\就可以為你提示畔柔。下面我們就結(jié)合這個(gè)PDF里L(fēng)aTex Math的語法在Markdown里面進(jìn)行實(shí)戰(zhàn)氯夷,以及對(duì)這些語法的使用進(jìn)行一些簡(jiǎn)單的講解臣樱。

希臘字母
使用$LaTex希臘字母語法$靶擦,也就是將LaTex的希臘字母語法用兩個(gè)美元符號(hào)圍住即可。比如以下案例:

$\Gamma$雇毫、$\iota$玄捕、$\sigma$、$\phi$棚放、$\upsilon$枚粘、$\Pi$、$\Bbbk$飘蚯、$\heartsuit$馍迄、$\int$、$\oint$

輸出的結(jié)果就是這樣子啦~
\Gamma局骤、\iota攀圈、\sigma\phi峦甩、\upsilon赘来、\Pi\Bbbk凯傲、\heartsuit犬辰、\int\oint

值得注意的是希臘字母有大寫和小寫之分冰单,這個(gè)大小寫是由LaTex的首字母是否大小寫來控制的幌缝。

三角函數(shù)、對(duì)數(shù)诫欠、指數(shù)
三角函數(shù)涵卵、對(duì)數(shù)、指數(shù)的寫法以及其他符號(hào)的語法和字母是一樣的呕诉,也是使用$LaTex符號(hào)$缘厢,也就是將LaTex的希臘字母語法用兩個(gè)美元符號(hào)圍住即可,我們來看下面的案例:

$\tan$甩挫、$\sin$贴硫、$\cos$、$\lg$、$\arcsin$英遭、$\arctan$间护、$\min$、$\max$挖诸、$\exp$汁尺、$\log$

輸出的結(jié)果如下:
\tan\sin多律、\cos痴突、\lg\arcsin狼荞、\arctan辽装、\min\max相味、\exp拾积、\log

運(yùn)算符
運(yùn)算符的寫法也是如此,不過要注意的是加號(hào)丰涉、減號(hào)拓巧、等于號(hào)、大于一死、小于的寫法有點(diǎn)不同肛度,是直接用符號(hào)即可,這個(gè)要注意一下摘符。

$+$贤斜、$-$、$=$逛裤、$>$瘩绒、$<$、$\times$带族、$\div$锁荔、$\equiv$、$\leq$蝙砌、$\geq$阳堕、$\neq$  

輸出的結(jié)果就是:
+-择克、=恬总、><肚邢、\times壹堰、\div拭卿、\equiv\leq贱纠、\geq峻厚、\neq

集合符號(hào)
集合是高中數(shù)學(xué)就會(huì)學(xué)習(xí)的知識(shí),也是非常重要的基礎(chǔ)概念谆焊,集合的符號(hào)也比較多惠桃,所以會(huì)特地把它們單獨(dú)列出來,雖然它們的語法和上面沒有區(qū)別辖试。

$\cup$辜王、$\cap$、$\in$剃执、$\notin$誓禁、$\ni$、$\subset$肾档、$\subseteq$、$\supset$怒见、$\supseteq$、$\infty$

輸出的結(jié)果就是:
\cup姑宽、\cap遣耍、\in\notin炮车、\ni舵变、\subset\subseteq瘦穆、\supset纪隙、\supseteq\infty

數(shù)學(xué)符號(hào)非常多扛或,這里只是列舉了一些常用的符號(hào)绵咱,更多符號(hào)細(xì)節(jié)既可以查看萊斯大學(xué)的PDF。

數(shù)學(xué)公式與Markdown Math

前面只是介紹了單一的數(shù)學(xué)符號(hào)顯示問題熙兔,但是一段完整的數(shù)學(xué)公式則包含多個(gè)數(shù)學(xué)符號(hào)悲伶、數(shù)值,在介紹數(shù)學(xué)公式之前住涉,我們需要先來了解一下內(nèi)聯(lián)與塊狀的概念麸锉。
內(nèi)聯(lián)輸出與塊狀輸出
前面我們?cè)谳敵雒總€(gè)符號(hào)的時(shí)候,都用兩個(gè)美元符號(hào)$$舆声,這種方式就是內(nèi)聯(lián)花沉,所謂內(nèi)聯(lián)就是我們可以把數(shù)學(xué)符號(hào)嵌入到文字段落里面,比如:

函數(shù)式:$f(x)=\frac{P(x)}{Q(x)}$  

函數(shù)式:f(x)=\frac{P(x)}{Q(x)} ,我們可以看到這段公式在文字段落里面主穗。
如果我們需要輸出的數(shù)學(xué)公式比較復(fù)雜泻拦,或者我們需要凸出并獨(dú)立顯示公式,這個(gè)時(shí)候我們就需要使用到公式的塊狀輸出忽媒,塊狀輸出的語法使用4個(gè)美元符號(hào)$$數(shù)學(xué)公式$$争拐,我們來看案例。

$$f(x)=\frac{P(x)}{Q(x)}$$ 

使用塊狀輸出晦雨,函數(shù)會(huì)居中顯示架曹,值得一提的是我們?cè)谑褂脡K狀輸出數(shù)學(xué)公式時(shí),在Markdown里需要換行來寫公式闹瞧。
f(x)=\frac{P(x)}{Q(x)}

簡(jiǎn)單的四則運(yùn)算
我們先來看簡(jiǎn)單的四則運(yùn)算怎么用Markdown Math編寫绑雄,

$2x - 5y =  8$  
$3x + 9y =  -12$
$7x \times 2y \neq 3z$

注意這里的\times是乘號(hào),\neq是不等于奥邮,輸出的效果如下:
2x - 5y = 8
3x + 9y = -12
7x \times 2y \neq 3z

指數(shù)輸出
Markdown Math的指數(shù)運(yùn)算符是^万牺,這個(gè)在Python里位運(yùn)算符,Python的指數(shù)運(yùn)算符是**洽腺,這個(gè)注意區(qū)別即可脚粟。

$x^3+x^9$  
$x^y$  

輸出的結(jié)果為:
x^3+x^9
x^y

n次方根輸出
\sqrt{}是開平方,注意數(shù)值使用大括號(hào){}圍住蘸朋,而開n次方的語法是\sqrt[n]{}核无,n次方的n用中括號(hào)[]圍住,我們來看下面的案例:

$\sqrt{3x-1}+\sqrt[5]{2y^5-4}$

輸出的結(jié)果是:
\sqrt{3x-1}+\sqrt[5]{2y^5-4}

三角公式
三角公式通常括號(hào)藕坯、字母团南、符號(hào)、運(yùn)算符混雜的比較厲害炼彪,所以書寫的時(shí)候要特別注意吐根,我們來看下面的例子:

$$\cos (2\theta) = \cos^2 \theta - \sin^2 \theta$$

輸出的結(jié)果如下:
\cos (2\theta) = \cos^2 \theta - \sin^2 \theta

輸出分?jǐn)?shù)
輸出帶有分子分母的分?jǐn)?shù)的語法為\frac{分子}{分母},使用大括號(hào)把分子霹购、分母都圍住佑惠。

$$\frac{x}{2y} +\frac{x-y}{x+y} $$

輸出的結(jié)果如下:
\frac{x}{2y} +\frac{x-y}{x+y}

求和輸出
求和公式比較復(fù)雜,會(huì)涉及到上標(biāo)和下標(biāo)齐疙,在輸出指數(shù)^時(shí)我們可以把它看成是上標(biāo)膜楷,使用_來輸出下標(biāo),我們來看具體案例:

$$\sum_{n=1}^\infty k$$

輸出的結(jié)果如下:
\sum_{n=1}^\infty k

極限的輸出
在我們了解了上下標(biāo)的概念之后贞奋,輸出極限就會(huì)使用到下標(biāo)赌厅,

$$\lim\limits_{x \to \infty} \exp(-x) = 0$$

輸出的結(jié)果:
\lim\limits_{x \to \infty} \exp(-x) = 0

階乘的輸出

$$\frac{n!}{k!(n-k)!} = \binom{n}{k}$$

輸出的結(jié)果如下:
\frac{n!}{k!(n-k)!} = \binom{n}{k}

Markdown Math輸出矩陣
使用\begin{matrix}\end{matrix}圍住即可輸出矩陣,矩陣之間用$來空格轿塔,用\\來換行特愿。

$$
  \begin{matrix}
   1 & 2 & 3 \\
   4 & 5 & 6 \\
   7 & 8 & 9
  \end{matrix} 
$$

輸出的結(jié)果是:
\begin{matrix} 1 & 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 9 \end{matrix}

復(fù)雜數(shù)學(xué)公式

分段函數(shù)的編寫
分段函數(shù)是非常復(fù)雜的仲墨,這時(shí)候會(huì)用到LaTex的cases語法,用\begin{cases}\end{cases}圍住即可揍障,中間則用\\來分段目养,具體我們來看下面的例子。

$$
X(m,n)=
\begin{cases}
x(n),\\
x(n-1)\\
x(n-1)
\end{cases}
$$

分段函數(shù)輸出的結(jié)果如下:
X(m,n)= \begin{cases} x(n),\\ x(n-1)\\ x(n-1) \end{cases}

Markdown Math也就是LaTex語法輸出數(shù)學(xué)公式的基本用法毒嫡,我們先介紹到這里癌蚁,后面我們會(huì)在學(xué)習(xí)過程中接觸到時(shí)再來研究。

Markdown Math的跨平臺(tái)顯示

讓數(shù)學(xué)公式可以在知乎兜畸、簡(jiǎn)書努释、公眾號(hào)等自媒體平臺(tái)以及網(wǎng)頁和博客系統(tǒng)Wordpress上優(yōu)雅的顯示,這樣才有利于數(shù)學(xué)公式的閱讀與傳播咬摇。
知乎伐蒂、簡(jiǎn)書、掘金上顯示數(shù)學(xué)公式
簡(jiǎn)書的Markdown編輯器可以比較完美的支持Markdown語法以及Markdown Math語法肛鹏,可以直接把用VS Code寫的Markdown文件里的內(nèi)容復(fù)制粘貼過去逸邦,然后進(jìn)行一些簡(jiǎn)單的修改就可以了。
而知乎自帶數(shù)學(xué)公式的插入龄坪,如果直接導(dǎo)入Markdown文件顯示會(huì)出現(xiàn)一些問題昭雌,需要把數(shù)學(xué)公式用知乎自帶的Tex編輯器重新書寫,只需要把$$刪除即可健田。

在網(wǎng)頁上顯示數(shù)學(xué)公式
由于我們的網(wǎng)頁可以不用Markdown,用HTML替換Markdown排版語法就可以佛纫,所以我們只需要專注于如何在網(wǎng)頁上顯示數(shù)學(xué)公式即可妓局。比較完美的解決方案是使用mathjax,我們只需要在<head>標(biāo)簽內(nèi)插入mathjaxjs即可呈宇。
比如下面的案例好爬,大家只需要把下面的代碼復(fù)制下來并保存為html文件即可,不過要注意的是內(nèi)聯(lián)式的語法會(huì)有些不同甥啄,不再是$符號(hào)與公式$存炮,而是:\(符號(hào)與公式\)

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <script type="text/javascript" async
  src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML" async>
</script>
</head>
<body>
<p>
  當(dāng) \(a \ne 0\)時(shí),  \(ax^2 + bx + c = 0\) 會(huì)有兩個(gè)解,它們是:
  $$x = {-b \pm \sqrt{b^2-4ac} \over 2a}.$$
</p>
</body>
</html>

數(shù)學(xué)公式在公眾號(hào)上的顯示
微信公眾號(hào)封閉且奇葩蜈漓,美化微信公眾號(hào)的排版雖然用的是html和css語法穆桂,但是有很多需要注意的地方,因此排版也相對(duì)來說比較麻煩融虽,相比知乎享完、簡(jiǎn)書等自媒體平臺(tái)來說,公眾號(hào)的排版也可以做到更美觀有额。不過要想讓數(shù)學(xué)公式在公眾號(hào)上顯示就比較麻煩般又,微信公眾號(hào)是不支持LaTex語法的彼绷,所以需要把公式做成圖片,其他不支持LaTex的自媒體平臺(tái)也可以這么處理茴迁。

公眾號(hào)顯示數(shù)學(xué)公式有一個(gè)比較簡(jiǎn)單好用的方法就是Md2All寄悯,可以直接把VS Code編輯的Markdown文檔粘貼到里面,還能進(jìn)行精美的排版堕义,但是這個(gè)方法有兩個(gè)問題猜旬,一個(gè)是生成的圖片比較模糊,有礙觀瞻胳螟;第二就是如果數(shù)學(xué)公式過多昔馋,就需要用七牛云的CDN,配置的方法也比較簡(jiǎn)單糖耸,總體來說Md2All綜合效果最佳的方案秘遏,相比于其他方法更方便,也能一梭子把Markdown文檔以及數(shù)學(xué)公式進(jìn)行優(yōu)雅的公眾號(hào)排版嘉竟。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末邦危,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子舍扰,更是在濱河造成了極大的恐慌倦蚪,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,544評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件边苹,死亡現(xiàn)場(chǎng)離奇詭異陵且,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)个束,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門慕购,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人茬底,你說我怎么就攤上這事沪悲。” “怎么了阱表?”我有些...
    開封第一講書人閱讀 162,764評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵殿如,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我最爬,道長(zhǎng)涉馁,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,193評(píng)論 1 292
  • 正文 為了忘掉前任烂叔,我火速辦了婚禮谨胞,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蒜鸡。我一直安慰自己胯努,他們只是感情好牢裳,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,216評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著叶沛,像睡著了一般蒲讯。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上灰署,一...
    開封第一講書人閱讀 51,182評(píng)論 1 299
  • 那天判帮,我揣著相機(jī)與錄音,去河邊找鬼溉箕。 笑死晦墙,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的肴茄。 我是一名探鬼主播晌畅,決...
    沈念sama閱讀 40,063評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼寡痰!你這毒婦竟也來了抗楔?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,917評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤拦坠,失蹤者是張志新(化名)和其女友劉穎连躏,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體贞滨,經(jīng)...
    沈念sama閱讀 45,329評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡入热,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,543評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了晓铆。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片才顿。...
    茶點(diǎn)故事閱讀 39,722評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖尤蒿,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情幅垮,我是刑警寧澤腰池,帶...
    沈念sama閱讀 35,425評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站忙芒,受9級(jí)特大地震影響示弓,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜呵萨,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,019評(píng)論 3 326
  • 文/蒙蒙 一奏属、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧潮峦,春花似錦囱皿、人聲如沸勇婴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽耕渴。三九已至,卻和暖如春齿兔,著一層夾襖步出監(jiān)牢的瞬間橱脸,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工分苇, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留添诉,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,729評(píng)論 2 368
  • 正文 我出身青樓医寿,卻偏偏與公主長(zhǎng)得像栏赴,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子糟红,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,614評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容