首先,對三者的一些基本功能做一個基本的評價;
| LaTex | Markdown | TeXmacs | |
|---|---|---|---|
| 即時預(yù)覽 | Y | Y | |
| 圖片編輯 | Y | Y | |
| 數(shù)學(xué)支持 | Y | Y | Y |
| 代碼插入 | Y | Y | Y |
| 網(wǎng)絡(luò)模板 | Y | ||
| 擴(kuò)展支持 | Y | Y | |
| 選擇分頁 | Y | Y | |
| 輸出格式 | Y | ||
| 使用范圍 | Y | Y |
它們是什么?
LaTex(音譯“拉泰赫”)是一種基于TeX的排版系統(tǒng),由美國計算機(jī)學(xué)家萊斯利·蘭伯特(Leslie Lamport)(同時這位也是寫出了號稱分布式計算領(lǐng)域內(nèi)最難懂的論文“Paxos Made Simple”的那位)在20世紀(jì)80年代初期開發(fā),利用這種格式,即使使用者沒有排版和程序設(shè)計的知識也可以充分發(fā)揮由TeX所提供的強(qiáng)大功能,能在幾天,甚至幾小時內(nèi)生成很多具有書籍質(zhì)量的印刷品。對于生成復(fù)雜表格和數(shù)學(xué)公式,這一點(diǎn)表現(xiàn)得尤為突出。因此它非常適用于生成高印刷質(zhì)量的科技和數(shù)學(xué)類文檔。這個系統(tǒng)同樣適用于生成從簡單的信件到完整書籍的所有其他種類的文檔。


Mardown是一種語言,一種可以被普通的文本編輯器編寫的標(biāo)志語言,通過一些簡單的標(biāo)志可以使得簡單的文本內(nèi)容具有一定的格式。Mardown本身的語法功能并不算強(qiáng)大,但是由于它強(qiáng)大的可擴(kuò)展性,衍生出了極多的強(qiáng)大的版本和編輯器,它們在語法上基本兼容,只是在一些語法和渲染效果上有所改動。由于它的語法簡潔明了,且功能比純文本更強(qiáng),因此有很多人使用它來寫博客(最著名的例子應(yīng)該是全球最大的同性交友平臺GitHub)。它的強(qiáng)大之處一定程度上取決于你所使用的編輯器。這里使用Typora作為比較對象(本文同樣使用該編輯器完成)

TeXmacs是一個所見即所得的編輯器. 你也許想到了LyX, TeXworks之類的工具, 但是TeXmacs和它們不一樣—它并不依賴LaTeX. 他吸收了LaTeX的優(yōu)點(diǎn), 即文章的排版非常美觀. 同時它又不同于LaTeX, 比如, 在TeXmacs里是沒有“源文件”這個概念的. 另外它還有一些非常實(shí)用的特性(尤其是對于數(shù)學(xué)公式的支持), 可以極大的提高編輯效率。可以這么簡單的理解,TeXmacs既有LaTex的排版優(yōu)點(diǎn),同時又吸收了許多Markdown編輯器的功能,算是二者的一個綜合體。

功能橫向?qū)Ρ?/h2>
就文中第一個表所提到的功能給它們做一個橫向?qū)Ρ?,由于可能對三者的使用并沒有完全掌握,所以可能有些粗糙:
1、即時預(yù)覽
-
LaTex:LaTex具有非常多優(yōu)秀的編輯器,但在使用這些編輯器之前首先要在電腦上安裝TexLive等編譯系統(tǒng)才可以使用,專門的編輯器有TexStudio、TexWork等,一些常見的IDE如VScode,Atom通過安裝插件也可以實(shí)現(xiàn)撰寫LaTex文檔的目的。
LaTex的編輯器均沒有即時預(yù)覽功能,這是由于本身其作為一個排版系統(tǒng)的特性所決定的。一般需要經(jīng)過編譯運(yùn)行,產(chǎn)生PDF文件之后才能實(shí)現(xiàn)預(yù)覽功能,一般編輯器會使用雙欄排版,一欄LaTex書寫源代碼,另外一欄提供編譯運(yùn)行后的預(yù)覽功能。
如下圖,overleaf是一個在線的LaTex編輯器(額外說明:該網(wǎng)站提供了一個富文本模式下的LaTex實(shí)時預(yù)覽,但是效果馬馬虎虎)

-
Markdown:因?yàn)槠湔Z法的簡單便捷,Markdown可以說是擁有世界上最廣泛支持的標(biāo)志語言之一。絕大多數(shù)的Markdown編輯器都提供了即時預(yù)覽功能(部分IDE可能沒有),在寫作的過程中可以即時得到反饋。同時一般的編輯器也支持SourceCode模式,給你足夠復(fù)古的體驗(yàn)。
下圖是Typora編輯器:

-
TeXmacs:與我而言,TeXmacs最讓我驚艷到的一點(diǎn)就是它在書寫數(shù)學(xué)公式的時候的實(shí)時預(yù)覽功能,在使用LaTex的時候我就常常因?yàn)橐粋€手抖打錯數(shù)學(xué)公式中的一個符號,然后在那一長串的源碼中玩起“一起來找茬”游戲,它的數(shù)學(xué)支持真的是非常棒,使用起來也相當(dāng)方便,此外在Texmacs中存在著大量的快捷鍵,如果熟練掌握的話,寫作效率會得到極大的提升,。
但是實(shí)話說Texmacs的界面是真的太簡陋了,而且不知道是我的機(jī)器的原因還是其他,我在是使用Texmacs寫東西時總感覺偶爾有點(diǎn)卡頓,不夠流暢。
2、圖片編輯
-
LaTex:LaTex的圖片編輯支持在這三者之中毫無疑問是獨(dú)占鰲頭的,這不但得益于LaTex本身的系統(tǒng)設(shè)計,更加要感謝所有LaTex背后的開發(fā)小組的努力(TIKZ等宏包的出現(xiàn)無疑擴(kuò)展了LaTex的圖文功能)。在LaTex中支持圖片的絕對路徑插入,插入的圖片可以選擇尺寸,位置和模式,而利用tikz宏包,我們可以利用其自帶的命令迅速地作出我們所需要用到的圖片。
下面是利用tikz作圖的一個代碼實(shí)例
\begin{tikzpicture} % draw the axis \draw[eaxis] (-\num,0) -- (\num,0) node[below] {$x$}; \draw[eaxis] (0,-\num) -- (0,\num) node[above] {$f(x)$}; % draw the function (piecewise) \draw[elegant,domain=-\num:-1/\num] plot(\x,{1/\x}); \draw[elegant,domain=1/\num:\num] plot(\x,{1/\x}); \draw[elegant,orange,domain=-\num:\num] plot(\x,{sin(\x r)}); \end{tikzpicture}

Markdown:和LaTex相比,Markdown的圖片編輯功能有些相形見絀。在Markdown里,插入圖片較為簡單,使用標(biāo)記即可在所標(biāo)志位置上插入圖片,比較遺憾的問題就是在Markdown中并不能自主控制圖片的大小,而是由markdown進(jìn)行自動調(diào)整。
-
TeXmacs:Texmacs的圖片編輯功能也較為強(qiáng)大,比較優(yōu)秀的一點(diǎn)就是可以直接粘貼復(fù)制圖片,無需使用路徑即可。同時在Texmacs內(nèi)也可使用其自帶的功能進(jìn)行直接畫圖,較LaTex來說,其可視化作圖和LaTex不太一樣的是,LaTex的
.tex源文件中并不包含圖片,因此需要單獨(dú)存儲圖片。但是Texmacs中的圖片是嵌入在.tm文檔中,移動起來相當(dāng)方便。下圖是一個利用TM作圖的一個例子:
pasted_image037.png
3、數(shù)學(xué)支持
-
LaTex:LaTex的數(shù)學(xué)功能應(yīng)當(dāng)算是非常豐富的,其內(nèi)置了許多的數(shù)學(xué)環(huán)境,并且通過配合宏包的使用可以對公式的間隔,字體,編號等進(jìn)行非常多的調(diào)整。利用專用的LaTex編輯器中的快捷鍵可以避免輸入和記憶太多的命令和數(shù)學(xué)符號。
另外在LaTex中也可以相當(dāng)簡便快捷地插入表格,矩陣。
-
Markdown的數(shù)學(xué)功能較為薄弱,可以做到插入數(shù)學(xué)公式,但是功能性仍然比較 薄弱,雖然兼容LaTex的部分語法,但是仍然不是很適合大量的公式輸入,不太建議用Markdown書寫帶太多公式的文檔。但是MD的表格插入做得十分便利,就像在Word中插入表格一樣方便,雖然表格的大小不能自由確定,但是其自適應(yīng)做得不錯。
比如這條公式就是用MD鍵入的:
Texmacs:Texmacs的數(shù)學(xué)功能在這三者之中應(yīng)該是最方便,最適用的。這也是為什么大多數(shù)人喜歡用它來代替LaTex的原因之一。
4、代碼插入
-
LaTex:關(guān)于插入代碼,LaTex依賴專門的宏包來完成。利用特定的宏包,LaTex可以更改代碼配色,控制代碼樣式,給代碼加入專門的代碼框。設(shè)置陰影等等。并且也可以插入偽代碼或者算法。
下圖是一個LaTex的插入的代碼的示例:
20160825100220467.png -
MD:MD的代碼插入最方便的一點(diǎn)就是便利,只需要用到標(biāo)志```(三個連續(xù)的逃逸符號)即可插入代碼框,在代碼框內(nèi)可以選擇語言類型便于著色。顯示效果如下圖(取決于編輯器)
import numpy as np import scipy as sp you = me = 1 love = (you and me) print("i love jiran!") -
TM:TM同樣可以做到插入代碼,但是可供選擇的插入類型并不算太多,但是也是囊括了主流的C++,R,Python等。并且可以快速插入偽代碼,算法。
TIM圖片20180321185251.png
5、網(wǎng)絡(luò)模板
-
LaTex:LaTex的各種各樣的模板相當(dāng)之多,不但有各個學(xué)校自己的學(xué)位論文模板而且網(wǎng)絡(luò)上還有許多開發(fā)者留下的比如簡歷模板,報告模板,論文模板,而各大期刊對于投稿也有自己的格式要求,并提供了相應(yīng)的LaTex 模板,無需用戶自己設(shè)定字體格式。
例如LaTex模板等,資源非常豐富。

MD:MD沒有太多的模板,實(shí)際上也不需要太多的模板,因?yàn)檎Z法簡便所以用戶可以自由地作出自己的模板。
TM:同樣和LaTex類似,內(nèi)置的就已經(jīng)有許多模板了。
6、擴(kuò)展支持
? 這個功能基本上是只有LaTex獨(dú)有,就是因?yàn)長aTex極強(qiáng)的拓展性,具有各種各樣的宏包,隨著功能拓展的需要不斷進(jìn)行更新。一般的LaTex IDE就會自帶著專門的宏包管理器,比較方便。
? 至于Texmacs,據(jù)我淺薄的認(rèn)知,其IDE可以安裝許多插件,但具體我沒有怎么用過。

7、選擇分頁
? LaTex可以選擇按照系統(tǒng)排版自動分頁,也可以安裝自己的想法選擇獨(dú)占一頁或者自由安排版面,可用性較強(qiáng)。相比之下MD有些相形見絀。Texmacs的文檔似乎沒有提到分頁這一點(diǎn),如果有什么黑科技可以實(shí)現(xiàn)的話,請一定要告訴我。
8、輸出格式
? LaTex的默認(rèn)輸出格式是PDF,但是通過下載一些特定的工具如Tex2Word等可以將.tex文件轉(zhuǎn)變成word文件。
? 而Markdown的話則是依賴于編輯器,對于我現(xiàn)在所用的Typora編輯器,在安裝了Pandoc之后,輸出格式有了非常多的選擇例如PDF,HTML,Word,EPUB,LaTex,圖像等。
? 對于TeXmacs其不但支持導(dǎo)出PDF,也支持導(dǎo)出LaTex和HTML。
9、使用范圍
? 這里主要提到Markdown,其作為一門輕量級標(biāo)志語言得到了無數(shù)人的青睞,因此基本上很多網(wǎng)站都會提供相應(yīng)的支持,許多程序或者庫函數(shù)的說明文檔一般都是用Markdown寫的。
各自的特色和適用場景
綜上所有的內(nèi)容,做一個簡單的總結(jié)吧。
- LaTex更加適合去寫一些更為正式的論文或者比較復(fù)雜的文章和書籍。
- Markdown的功能比較簡便好用適合用來寫一些blog甚至是比較簡單的實(shí)驗(yàn)報告等
- Texmacs如果你的文章需要進(jìn)行大量的數(shù)學(xué)公式推導(dǎo)和書寫,建議使用Texmacs,如果你可以忍受它非常簡陋的界面的話。


