# Markdown + R
來源:[Markdown寫作淺談](http://www.yangzhiping.com/tech/r-markdown-knitr.html)
## 科技寫作與Markdown+R
### 科技寫作會碰到什么難題?
如果你是純文科生,寫的都是豆瓣小酸文或者詩歌之類的,那么,看完上面這一部分就可以打住了。如果你還有寫科技論文的需要,則繼續往下看。
科技寫作與文藝寫作的不同主要有:
* 公式與圖表:相信各位寫過科學論文的,都會為數學公式與各類圖表的輸出頭疼不已;
* 格式轉換:pdf是通用的,但是有時偏偏需要LaTeX原始格式或者Word原始格式;
* 參考文獻:投稿給不同刊物,往往參考文獻要根據對方的格式來調整。
解決這些難題,[LaTeX](http://en.wikipedia.org/wiki/LaTeX)是國際科學界,尤其是偏數理類的學科的主流方案之一。當然,因為中國盜版office的流行,導致國內科技論文Word更盛行,則是另一碼事。Word因為近些年在參考文獻協作軟件、數學公式方面的發力,也逐步成為科技界認同的論文投遞標準之一。
提到LaTeX的人們,常常有兩種口氣。一種是當做大神來敬仰的,當語言、軟件變為傳奇,路人皆知它的誕生歷史時,于是,眾多如你我這類文科生,只有抬頭仰望的份了。另一類,則是不屑的口氣,LaTeX那么好學,你怎么都學不會!國際期刊都是用這個寫的,你別混了。。。
于是,我等文科生只好在被鄙視的眼光之下,快快走過LaTeX。。。但是,LaTeX真的符合人們寫作習慣嗎?請記住當時的歷史。那時的計算機,所見即所得,并不像今天這么流行。那時的計算機,處理能力也不像今天這么強大。更別提什么腳本語言了。翻出上一份LaTeX文檔所用的APA模版,大家就知道它有多么坑爹了。。。

使用Lyx,好看多了。問題是,它有坑嗎?你跳過嗎?
## Markdown+R如何解決的?
每位試圖解決LaTeX的不便,又試圖保留它的優點的人們,都走上了一條不歸路。
直到有一天,極其熟悉LaTeX,也熟悉Markdown的yihui同學,意識到了,LaTeX它可以作為最終格式生成。但是,我們中間的寫作過程,完全可以用Markdown這么簡單明了的語法來寫,我們真正需要的,就是一堆數學公式、圖表與參考文獻而已。前2者,恰恰是R的強項。后者,則留給開源社區,下一步解決。(可參考[線索1](http://johnmacfarlane.net/pandoc/README.html#reference-links)、[線索2](https://github.com/inukshuk/citeproc-ruby)、[線索 3](https://github.com/inukshuk/jekyll-scholar) )
于是,在他的新作R包[knitr](http://yihui.name/knitr/)中,果斷提供了Markdown支持。并說服R社區主流編輯器廠家,開源軟件[RStudio](http://www.rstudio.com/) 提供 Markdown支持,從而使得Rmd這種新格式開始流行。我們有幸看到這個重要格式的誕生,國人的貢獻如此重要。
## Rmd 簡介
Rmd 格式更詳細的描述,讀 yihui 的文檔:[自動化報告](https://github.com/yihui/r-ninja/blob/master/11-auto-report.md)
在這里,讓我簡單說明,如何最快上手Rmd格式。
### 安裝并配置RStudio
下載 [RStudio](http://rstudio.org/) 之后,打開配置選項,如下圖所示:

然后,進行如下配置:

### 新建Rmd文檔
新建一個Rmd文檔,如下圖所示:

然后,默認會出來一些內容。如果你對Markdown語法有不熟悉的地方,點擊MD按鈕。寫完之后,直接點擊: **Knit HTML** 按鈕即可發布。MD按鈕與Knit Html按鈕的位置如下圖所示:

就會預覽成功。你也可以點擊保存,生成相應的圖片、Markdown文檔。
是的,你要的一切圖片都有了!這就是 yihui 所推崇的 文學性編程、[可重復研究](http://biostat.mc.vanderbilt.edu/wiki/pub/Main/UseR-2012/InvitedXieAllaire.pdf)概念的神奇。
更重要的是,還保留了對LaTeX的無縫兼容。比如,大家可以敲下這段文字:

其中,這一段,
```
$$latex
f(x;\mu,\sigma^2) = \frac{1}{\sigma\sqrt{2\pi}} e^{ -\frac{1}{2}\left(\frac{x-\mu}{\sigma}\right)^2 }
$$
```
就是直接生成LaTeX格式的數學公式!
沒有安裝RStudio,或者不熟悉R的朋友,可以在我搭建的一個在線演示APP里面,將上述代碼,粘貼上去,然后看看神奇的效果!
網址是:[R Markdown App](http://r.psyapp.com/apps/markdown/) 效果如下圖所示:

## 這么做,有什么好處呢?
讓我細數一下:
### 真正意義上的可重復性研究
發表論文或者審核同事的報告,有個最麻煩的事情,你不知道他的步驟或者計算是否有誤。現在,代碼嵌在報告正文中,或者附錄在報告末尾。而你,要做的,僅僅是一鍵生成。。。 這就是真正意義上的可重復性研究!
### 更強大的數學與制圖能力
既兼容了LaTeX的既有能力,同時,又廣泛借助于R自身強大的作圖與統計學習能力。
更重要的是,未來,并不是非要用R語言作圖。yihui 同學在前文中的描述已經極其清楚了。
### 當然,還有云計算
真正意義上的云計算,尤其是類似于我們這樣,中小企業、小型實驗室實戰使用的小型云計算,不同于各類忽悠的云計算。Markdown+R這種方式是最佳方式之一。上述例子中提到的那個APP,就是搭建在云中。同時提供各類REST接口,可以被Ruby程序調用。
## Markdown格式與LaTeX、Word等格式的互轉
點這里:[Pandoc](http://johnmacfarlane.net/pandoc/)
還有不少有趣的玩法,如[Building a beamer presentation with knitr](https://gist.github.com/2955183).
## 如何學習Markdown+R?
好了,回到大家最關心的部分。分成兩部分,先是如何學習Markdown,其次是如何學習R。
### Markdown格式說明
* 參考:[Markdown](http://markdown.tw/)
* 更好的學習辦法是直接讀各類范本文件
* 更多資源參考[V2ex節點](http://v2ex.com/go/markdown)
### Markdown編輯器
* Mac等平臺下推薦[Mou](http://mouapp.com/)
* Windows平臺推薦[MarkdownPad](http://markdownpad.com/)
RStudio可作為寫作科技論文與R語言編輯器選擇,它是跨平臺的
* [markdown-here](https://github.com/adam-p/markdown-here)借助Chrome插件,將gmai寫作窗口變為Markdown在線寫作窗口
* 可以直接在線通過github撰寫與提交Markdown文件,github有自動的版本跟蹤功能,不用擔心寫廢與找不到以前寫的
## Windows下的GitHub特別說明
* 如果碰到git、github等與windows不兼容的現象,不建議折騰,而是直接在線提交即可。
* GitHub最近發行了Windows版本,下載地址[在這里](https://github.com/blog/1127-github-for-windows)
* 我的老文:[如何高效利用github](http://www.yangzhiping.com/tech/github.html)
## 如何學習R
### Rstudio
* Getting_Started_with_RStudio.pdf
### R語言入門讀物
* R for SAS and SPSS Users.pdf : 適合有SPSS基礎的朋友
* Analysis of Questionnaire Data with R : 適合處理問卷數據的文科生或社會科學類
* 更多參考我的豆列:[技術派心理學](http://book.douban.com/doulist/1222833/)
## 示范
### 文藝青年
文藝青年看這里,
* [為什麼文科生也該用markdown寫作?](http://www.douban.com/note/221187015/)
* [為什么作家應該用 Markdown 保存自己的文稿](http://jianshu.io/p/qqGjLN)
### 科學青年
可以看這里:[如何學習科學:開放科學工具箱](https://github.com/ouyangzhiping/openscience/blob/master/README.md)
點擊 RAW 即可看到原始格式。這是一個長文檔的示范。另一個示范是作者寫的一個在線DEMO:
[云中的社會網絡分析+Markdown](http://r.psyapp.com/apps/markdown/)
以及:[Markdown+R科技文寫作](http://panda0411.com/2012/06/22/markdownr%E7%A7%91%E6%8A%80%E6%96%87%E5%86%99%E4%BD%9C/)
### 技術青年
* [knitr](http://yihui.name/knitr/)以及各類Google、維基百科。
* 特別是:[pandoc-markdown](http://johnmacfarlane.net/pandoc/README.html#pandocs-markdown)
* [Primarily Pandoc: Writing in Markdown instead of LaTeX](http://www.charlietanksley.net/philtex/primarily-pandoc/)
- Markdown 簡介
- Markdown 編輯器推薦
- Markdown 基本語法
- Markdown 高級語法
- Markdown + Gitbook
- Markdown + R
- Markdown + Pandoc
- 用Markdown寫博客:Hexo + Gitcafe
- Hexo 入門指南(一) - 簡介 & 準備
- Hexo 入門指南(二) - 安裝、初始化和配置
- Hexo 入門指南(三) - 文章 & 草稿
- Hexo 入門指南(四) - 頁面、導航、邊欄、底欄
- Hexo 入門指南(五) - 搬家 & 備份
- Hexo 入門指南(六) - sitemap、rss 和部署
- Hexo 入門指南(七) - 評論 & 分享