上周五,我對友人說(shuō),十年后,基于Markdown+R的科技寫(xiě)作方式將有較大概率成為主流。而這一切,少不了來(lái)自一位友人的重要開(kāi)源貢獻。他給這條生態(tài)鏈補上了最重要的一環(huán)。他,就是yihui。
好了,觀(guān)點(diǎn)擺出來(lái)了,趨勢來(lái)臨之際,人人覺(jué)得與自己沒(méi)有關(guān)系?,F在,讓我講清楚,Markdown+R與你可能有什么關(guān)系。小文結構如下:
寫(xiě)作一般而言,會(huì )碰到這么一些難題:
從2009年開(kāi)始,我拋棄Word寫(xiě)作,幾年來(lái),幾本書(shū)、十萬(wàn)字以上的長(cháng)文檔,幾乎只是用Word在最后做個(gè)轉換與掃尾工作。剛開(kāi)始是使用google doc,然后當Markdown出現在視線(xiàn)之中后,毫不猶豫轉到它上面來(lái)了。
它實(shí)際上是個(gè)非常簡(jiǎn)單、非常容易學(xué)習的語(yǔ)法。這個(gè)語(yǔ)法簡(jiǎn)單到每個(gè)人都可以在5分鐘以?xún)葘W(xué)會(huì )。應該是為數不多,你真的可以徹底學(xué)會(huì )的語(yǔ)言。
更重要的是,Markdown語(yǔ)法所有要素,是與寫(xiě)作的習慣一脈相承的,套用句俗語(yǔ):僅為寫(xiě)作而生。比如:
習慣是人生最大的指導。
一切就這么簡(jiǎn)單。Markdown之所以在被鼓吹之后,越來(lái)越流行,不是因為它復雜,而是因為它足夠簡(jiǎn)單。
Markdown誕生于互聯(lián)網(wǎng)時(shí)代,更是由深諳互聯(lián)網(wǎng)文本之道的John Gruber等人設計。因為Ruby與github圈的極客們的熱捧,以及來(lái)自github、Stackoverflow等的大力支持。從一開(kāi)始,就建立一個(gè)完整的生態(tài)鏈。我們可以粗略看看,Markdown如何解決這些難題的。感興趣的朋友可以去讀我的老文:理想的寫(xiě)作環(huán)境:git+github+markdown+jekyll
Word共享難?我的所有文檔都放在github或者其他支持git版本跟蹤服務(wù)的服務(wù)器上。所以,可以極其方便的共享文檔寫(xiě)作過(guò)程??纯?,最近在與豆瓣友鄰協(xié)作的一本書(shū)的截圖:

可以清晰地看到,我的所有寫(xiě)作過(guò)程,github都可以自動(dòng)記錄下來(lái),從而不再擔心寫(xiě)廢。另一位豆瓣友鄰的任何改動(dòng)、編輯的修訂意見(jiàn),大家都可以實(shí)時(shí)完成,也具備歷史跟蹤與版本查找功能。
在用Word寫(xiě)作的時(shí)候,經(jīng)常浪費大量時(shí)間去思考排版,但是因為Markdown足夠簡(jiǎn)單,你無(wú)法思考排版,也沒(méi)必要思考,所以,逼自己集中精力寫(xiě)作。Markdown語(yǔ)法因為格式足夠簡(jiǎn)單,所以,導致開(kāi)發(fā)者非常容易生成漂亮的版式,一切既有的CSS都可以簡(jiǎn)單修改之后套用,如:css 1 、css 2
這是我在寫(xiě)的一篇長(cháng)篇科普文章。大家可以看到,我左邊寫(xiě),右邊就是非常漂亮的稿件出來(lái)了。同樣,值得驕傲的是,這個(gè)寫(xiě)作軟件,在世界范圍,廣受好評的Mou,也是另一位國人Chen Luo開(kāi)發(fā)的:D 我們?yōu)檫@個(gè)時(shí)代,類(lèi)似于yihui與Chen Luo,這批安靜的創(chuàng )作者而驕傲。

如果你是純文科生,寫(xiě)的都是豆瓣小酸文或者詩(shī)歌之類(lèi)的,那么,看完上面這一部分就可以打住了。如果你還有寫(xiě)科技論文的需要,則繼續往下看。
科技寫(xiě)作與文藝寫(xiě)作的不同主要有:
解決這些難題,LaTeX是國際科學(xué)界,尤其是偏數理類(lèi)的學(xué)科的主流方案之一。當然,因為中國盜版office的流行,導致國內科技論文Word更盛行,則是另一碼事。Word因為近些年在參考文獻協(xié)作軟件、數學(xué)公式方面的發(fā)力,也逐步成為科技界認同的論文投遞標準之一。
提到LaTeX的人們,常常有兩種口氣。一種是當做大神來(lái)敬仰的,當語(yǔ)言、軟件變?yōu)閭髌?,路人皆知它的誕生歷史時(shí),于是,眾多如你我這類(lèi)文科生,只有抬頭仰望的份了。另一類(lèi),則是不屑的口氣,LaTeX那么好學(xué),你怎么都學(xué)不會(huì )!國際期刊都是用這個(gè)寫(xiě)的,你別混了。。。
于是,我等文科生只好在被鄙視的眼光之下,快快走過(guò)LaTeX。。。但是,LaTeX真的符合人們寫(xiě)作習慣嗎?請記住當時(shí)的歷史。那時(shí)的計算機,所見(jiàn)即所得,并不像今天這么流行。那時(shí)的計算機,處理能力也不像今天這么強大。更別提什么腳本語(yǔ)言了。翻出上一份LaTeX文檔所用的APA模版,大家就知道它有多么坑爹了。。。

使用Lyx,好看多了。問(wèn)題是,它有坑嗎?你跳過(guò)嗎?
每位試圖解決LaTeX的不便,又試圖保留它的優(yōu)點(diǎn)的人們,都走上了一條不歸路。
直到有一天,極其熟悉LaTeX,也熟悉Markdown的yihui同學(xué),意識到了,LaTeX它可以作為最終格式生成。但是,我們中間的寫(xiě)作過(guò)程,完全可以用Markdown這么簡(jiǎn)單明了的語(yǔ)法來(lái)寫(xiě),我們真正需要的,就是一堆數學(xué)公式、圖表與參考文獻而已。前2者,恰恰是R的強項。后者,則留給開(kāi)源社區,下一步解決。(可參考線(xiàn)索1、線(xiàn)索2、線(xiàn)索 3 )
于是,在他的新作R包knitr中,果斷提供了Markdown支持。并說(shuō)服R社區主流編輯器廠(chǎng)家,開(kāi)源軟件RStudio 提供 Markdown支持,從而使得Rmd這種新格式開(kāi)始流行。我們有幸看到這個(gè)重要格式的誕生,國人的貢獻如此重要。
Rmd 格式更詳細的描述,讀 yihui 的文檔:自動(dòng)化報告
在這里,讓我簡(jiǎn)單說(shuō)明,如何最快上手Rmd格式。
下載 RStudio 之后,打開(kāi)配置選項,如下圖所示:

然后,進(jìn)行如下配置:

新建一個(gè)Rmd文檔,如下圖所示:

然后,默認會(huì )出來(lái)一些內容。如果你對Markdown語(yǔ)法有不熟悉的地方,點(diǎn)擊MD按鈕。寫(xiě)完之后,直接點(diǎn)擊: Knit HTML 按鈕即可發(fā)布。MD按鈕與Knit Html按鈕的位置如下圖所示:

就會(huì )預覽成功。你也可以點(diǎn)擊保存,生成相應的圖片、Markdown文檔。
是的,你要的一切圖片都有了!這就是 yihui 所推崇的 文學(xué)性編程、可重復研究概念的神奇。
更重要的是,還保留了對LaTeX的無(wú)縫兼容。比如,大家可以敲下這段文字:
## The Normal DistributionThe normal distribution is defined as follows:$$latexf(x;\mu,\sigma^2) = \frac{1}{\sigma\sqrt{2\pi}} e^{ -\frac{1}{2}\left(\frac{x-\mu}{\sigma}\right)^2 }$$To generate random draws from a normal distribution we use the **rnorm** function:```{r block1}output <- rnorm(1000, 100, 15);```The normal distribution has the typical bell shape:```{r block2, fig.width=8, fig.height=5}ggplot2::qplot(output)```其中,這一段,
$$latexf(x;\mu,\sigma^2) = \frac{1}{\sigma\sqrt{2\pi}} e^{ -\frac{1}{2}\left(\frac{x-\mu}{\sigma}\right)^2 }$$就是直接生成LaTeX格式的數學(xué)公式!
沒(méi)有安裝RStudio,或者不熟悉R的朋友,可以在我搭建的一個(gè)在線(xiàn)演示APP里面,將上述代碼,粘貼上去,然后看看神奇的效果!
網(wǎng)址是:R Markdown App 效果如下圖所示:

讓我細數一下:
發(fā)表論文或者審核同事的報告,有個(gè)最麻煩的事情,你不知道他的步驟或者計算是否有誤?,F在,代碼嵌在報告正文中,或者附錄在報告末尾。而你,要做的,僅僅是一鍵生成。。。 這就是真正意義上的可重復性研究!
既兼容了LaTeX的既有能力,同時(shí),又廣泛借助于R自身強大的作圖與統計學(xué)習能力。
更重要的是,未來(lái),并不是非要用R語(yǔ)言作圖。yihui 同學(xué)在前文中的描述已經(jīng)極其清楚了。
真正意義上的云計算,尤其是類(lèi)似于我們這樣,中小企業(yè)、小型實(shí)驗室實(shí)戰使用的小型云計算,不同于各類(lèi)忽悠的云計算。Markdown+R這種方式是最佳方式之一。上述例子中提到的那個(gè)APP,就是搭建在云中。同時(shí)提供各類(lèi)REST接口,可以被Ruby程序調用。
點(diǎn)這里:Pandoc
還有不少有趣的玩法,如Building a beamer presentation with knitr.
好了,回到大家最關(guān)心的部分。分成兩部分,先是如何學(xué)習Markdown,其次是如何學(xué)習R。
文藝青年看這里,
可以看這里:如何學(xué)習科學(xué):開(kāi)放科學(xué)工具箱
點(diǎn)擊 RAW 即可看到原始格式。這是一個(gè)長(cháng)文檔的示范。另一個(gè)示范是作者寫(xiě)的一個(gè)在線(xiàn)DEMO:
云中的社會(huì )網(wǎng)絡(luò )分析+Markdown
ps1: 本文檔的markdown原生格式,請參考
ps2: 本文檔直接生成的html格式,請訪(fǎng)問(wèn)
本作品采用知識共享署名-非商業(yè)性使用-禁止演繹 3.0 Unported許可協(xié)議進(jìn)行許可。
聯(lián)系客服