使用Markdown輸出LaTex數學公式

如今大數據、人工智能、數據分析等不少技術崗位都對數學有必定的要求,數學愈來愈重要,不少人也開始嘗試學習數學,腦子裏忽然就有告終合Python編程來學習數學的想法。在網絡上搜索了不少相關資料,看到很是多不錯的嘗試,可是國內在這方面的資料卻比較少,因而就想到開一個技術專欄。

實踐出一整套便於互聯網傳播分享的數學公式跨平臺編輯、跨環境顯示是很是有必要的,若是仍是停留在Word或PDF時代,那數學就會被限制在文檔或圖片裏而沒法經過最流行的網頁方式進行傳播,並且Word、PDF等文件處理軟件裏的數學公式編輯既麻煩,並且最重要的是與編程脫節。javascript

數學公式的編輯與顯示

要將學習心得(尤爲是數學公式等)寫成文檔在知乎、簡書、微信公衆號以及網站的網頁上面展現出來,使用Markdown以及LaTex Math的結合我認爲是最佳的方法。css

與LaTex文檔的比較
雖然不少數學學術論文整個文檔就像使用Markdown同樣是直接使用的LaTex語法來編輯的,可是仔細比對以後發現直接用LaTex語法來寫整個文檔來,它的效果和Markdown + LaTex Math 方式沒有太大的區別。
可是LaTex的語法、編輯器、配置、中文支持等都要比Markdown要複雜的多,並且也不及Markdown已經很是成熟的生態(包括工具鏈、社區等)。html

編輯器與插件
Markdown的編輯器很是多,對於不少初學者來講,我的比較推薦使用VS Code。java

  • 一是VS Code漢化比較方便,想讓更多人學會使用Python來學數學,有一箇中文界面仍是比較重要的;並且VS Code是跨平臺的,Mac、Windows均可以上手;
  • 二是VS Code是一款極爲優秀的代碼編輯器,提及優秀,應該算是目前最爲推薦的編輯器之一(可能沒有之一);要用Python學數學,就不能用純Markdown軟件,代碼編輯器是少不了的,使用VS Code編譯Python和Markdown都極爲溫馨;
  • 三是VS Code插件豐富,Python的編譯、Markdown的編寫與預覽、LaTex Math的顯示等工具鏈至關完備。好比Python插件,只須要安裝插件集合Python Extension Pack,裏面就包含了微軟官方插件Python、MagicPython、Jupyter等優秀插件;而Markdown插件,推薦安裝Markdown All in One,以及Markdown+Math。

LaTex Math的語法

LaTex Math的語法多且雜,咱們是無法徹底記住這些語法的,能記住也不提倡吧,我連Markdown語法都沒能全記住。查詢手冊在手,天下我有,這裏比較推薦名校萊斯Rice大學的一個語法手冊,萊斯大學LaTex Math在線PDF手冊ajax

固然安裝了上述插件的VS Code也是有LaTex Math語法提示的。用英文字符反斜槓就能夠爲你提示。下面咱們就結合這個PDF裏LaTex Math的語法在Markdown裏面進行實戰,以及對這些語法的使用進行一些簡單的講解。編程

希臘字母
使用$LaTex希臘字母語法$,也就是將LaTex的希臘字母語法用兩個美圓符號圍住便可。好比如下案例:微信

$\Gamma$、$\iota$、$\sigma$、$\phi$、$\upsilon$、$\Pi$、$\Bbbk$、$\heartsuit$、$\int$、$\oint$

輸出的結果就是這樣子啦~
$\Gamma$、$\iota$、$\sigma$、$\phi$、$\upsilon$、$\Pi$、$\Bbbk$、$\heartsuit$、$\int$、$\oint$ 網絡

值得注意的是希臘字母有大寫和小寫之分,這個大小寫是由LaTex的首字母是否大小寫來控制的。async

三角函數、對數、指數
三角函數、對數、指數的寫法以及其餘符號的語法和字母是同樣的,也是使用$LaTex符號$,也就是將LaTex的希臘字母語法用兩個美圓符號圍住便可,咱們來看下面的案例:編輯器

$\tan$、$\sin$、$\cos$、$\lg$、$\arcsin$、$\arctan$、$\min$、$\max$、$\exp$、$\log$

輸出的結果以下:
$\tan$、$\sin$、$\cos$、$\lg$、$\arcsin$、$\arctan$、$\min$、$\max$、$\exp$、$\log$

運算符
運算符的寫法也是如此,不過要注意的是加號、減號、等於號、大於、小於的寫法有點不一樣,是直接用符號便可,這個要注意一下。

$+$、$-$、$=$、$>$、$<$、$\times$、$\div$、$\equiv$、$\leq$、$\geq$、$\neq$

輸出的結果就是:
$+$、$-$、$=$、$>$、$<$、$\times$、$\div$、$\equiv$、$\leq$、$\geq$、$\neq$

集合符號
集合是高中數學就會學習的知識,也是很是重要的基礎概念,集合的符號也比較多,因此會特意把它們單獨列出來,雖然它們的語法和上面沒有區別。

$\cup$、$\cap$、$\in$、$\notin$、$\ni$、$\subset$、$\subseteq$、$\supset$、$\supseteq$、$\infty$

輸出的結果就是:
$\cup$、$\cap$、$\in$、$\notin$、$\ni$、$\subset$、$\subseteq$、$\supset$、$\supseteq$、$\infty$

數學符號很是多,這裏只是列舉了一些經常使用的符號,更多符號細節既能夠查看萊斯大學的PDF。

數學公式與Markdown Math

前面只是介紹了單一的數學符號顯示問題,可是一段完整的數學公式則包含多個數學符號、數值,在介紹數學公式以前,咱們須要先來了解一下內聯與塊狀的概念。
內聯輸出與塊狀輸出
前面咱們在輸出每一個符號的時候,都用兩個美圓符號$$,這種方式就是內聯,所謂內聯就是咱們能夠把數學符號嵌入到文字段落裏面,好比:

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

函數式:$f(x)=\frac{P(x)}{Q(x)}$ ,咱們能夠看到這段公式在文字段落裏面。
若是咱們須要輸出的數學公式比較複雜,或者咱們須要凸出並獨立顯示公式,這個時候咱們就須要使用到公式的塊狀輸出,塊狀輸出的語法使用4個美圓符號$$數學公式$$,咱們來看案例。

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

使用塊狀輸出,函數會居中顯示,值得一提的是咱們在使用塊狀輸出數學公式時,在Markdown裏須要換行來寫公式。
$$f(x)=\frac{P(x)}{Q(x)}$$

簡單的四則運算
咱們先來看簡單的四則運算怎麼用Markdown Math編寫,

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

注意這裏的\times是乘號,\neq是不等於,輸出的效果以下:
$2x - 5y = 8$
$3x + 9y = -12$
$7x \times 2y \neq 3z$

指數輸出
Markdown Math的指數運算符是^,這個在Python裏位運算符,Python的指數運算符是**,這個注意區別便可。

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

輸出的結果爲:
$x^3+x^9$
$x^y$

n次方根輸出
\sqrt{}是開平方,注意數值使用大括號{}圍住,而開n次方的語法是\sqrt[n]{},n次方的n用中括號[]圍住,咱們來看下面的案例:

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

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

三角公式
三角公式一般括號、字母、符號、運算符混雜的比較厲害,因此書寫的時候要特別注意,咱們來看下面的例子:

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

輸出的結果以下:
$$\cos (2\theta) = \cos^2 \theta - \sin^2 \theta$$

輸出分數
輸出帶有分子分母的分數的語法爲\frac{分子}{分母},使用大括號把分子、分母都圍住。

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

輸出的結果以下:
$$\frac{x}{2y} +\frac{x-y}{x+y} $$

求和輸出
求和公式比較複雜,會涉及到上標和下標,在輸出指數^時咱們能夠把它當作是上標,使用_來輸出下標,咱們來看具體案例:

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

輸出的結果以下:
$$\sum_{n=1}^\infty k$$

極限的輸出
在咱們瞭解了上下標的概念以後,輸出極限就會使用到下標,

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

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

階乘的輸出

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

輸出的結果以下:
$$\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} 
$$

輸出的結果是:

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

複雜數學公式

分段函數的編寫
分段函數是很是複雜的,這時候會用到LaTex的cases語法,用\begin{cases}\end{cases}圍住便可,中間則用\\來分段,具體咱們來看下面的例子。

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

分段函數輸出的結果以下:

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

Markdown Math也就是LaTex語法輸出數學公式的基本用法,咱們先介紹到這裏,後面咱們會在學習過程當中接觸到時再來研究。

Markdown Math的跨平臺顯示

讓數學公式能夠在知乎、簡書、公衆號等自媒體平臺以及網頁和博客系統Wordpress上優雅的顯示,這樣纔有利於數學公式的閱讀與傳播。
知乎、簡書、掘金上顯示數學公式
簡書的Markdown編輯器能夠比較完美的支持Markdown語法以及Markdown Math語法,能夠直接把用VS Code寫的Markdown文件裏的內容複製粘貼過去,而後進行一些簡單的修改就能夠了。
而知乎自帶數學公式的插入,若是直接導入Markdown文件顯示會出現一些問題,須要把數學公式用知乎自帶的Tex編輯器從新書寫,只須要把$$刪除便可。

在網頁上顯示數學公式
因爲咱們的網頁能夠不用Markdown,用HTML替換Markdown排版語法就能夠,因此咱們只須要專一於如何在網頁上顯示數學公式便可。比較完美的解決方案是使用mathjax,咱們只須要在<head>標籤內插入mathjaxjs便可。
好比下面的案例,你們只須要把下面的代碼複製下來並保存爲html文件便可,不過要注意的是內聯式的語法會有些不一樣,再也不是$符號與公式$,而是:\(符號與公式\)

<!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>
  當 \(a \ne 0\)時,  \(ax^2 + bx + c = 0\) 會有兩個解,它們是:
  $$x = {-b \pm \sqrt{b^2-4ac} \over 2a}.$$
</p>
</body>
</html>

數學公式在公衆號上的顯示
微信公衆號封閉且奇葩,美化微信公衆號的排版雖然用的是html和css語法,可是有不少須要注意的地方,所以排版也相對來講比較麻煩,相比知乎、簡書等自媒體平臺來講,公衆號的排版也能夠作到更美觀。不過要想讓數學公式在公衆號上顯示就比較麻煩,微信公衆號是不支持LaTex語法的,因此須要把公式作成圖片,其餘不支持LaTex的自媒體平臺也能夠這麼處理。

公衆號顯示數學公式有一個比較簡單好用的方法就是[Md2All]http://md.aclickall.com/,能夠直接把VS Code編輯的Markdown文檔粘貼到裏面,還能進行精美的排版,可是這個方法有兩個問題,一個是生成的圖片比較模糊,有礙觀瞻;第二就是若是數學公式過多,就須要用七牛雲的CDN,配置的方法也比較簡單,整體來講Md2All綜合效果最佳的方案,相比於其餘方法更方便,也能一梭子把Markdown文檔以及數學公式進行優雅的公衆號排版。

相關文章
相關標籤/搜索