Markdown + R 可以替代 LaTeX 完成論文寫作嗎?
最近看到一篇文章(《為什麼Markdown+R有較大概率成為科技寫作主流?》)講Markdown+R的未來,而LaTex本身有時候也稍顯複雜,那麼Markdown+R為主的排版方式是否能夠在借用LaTex一些數學功能的情況下成為LaTex的替代呢?
語文不好,所以說的不是很清楚,但是不想再修改了。。。。。
-------------------------------------------------------------------------------------------
我的觀點是:不可能替代。其實只要認真的思考一下什麼是排版,了解過一些印刷排版的資料,有過排版長文甚至書籍的經歷,在 LaTeX 中遇到過一些難以解決的棘手問題,應該會對什麼是排版有所感覺,就會知道 LaTeX 不能替代的地方在哪裡。因為「排版」不等同於「結構標記」。
詳細的說,僅僅從論文寫作的角度來說,也就是說,只是把把想要寫的內容用電腦敲出來,該畫的圖畫出來,該計算的結果計算出來,從這個意義來講,Markdown+R 倒是可行,這其實也是每個作者希望的方式,其實也應該是開發者所追求的的目標——內容與格式的分離、計算結果直接輸出至文檔。但就現在的情況以及未來的趨勢來看,我認為Markdown+R或者+其他的某種科學計算語言(比如 SageTeX、SciPy)或者繪圖程序(比如 TeXGraph、Gnuplot)不能成為 LaTeX 的替代,因為他們做的事情是書寫加上簡單的標記。另外需要提到的是,像這種把寫作與計算相結合的嘗試非常多,我覺得 R 在這裡並不是關鍵,除了前面提到的幾個例子,TeXmacs、Scientific Workplace都支持直接在寫作中計算、繪圖等,MATLAB 甚至直接在 MS Word 中邊寫文章邊計算,而且用 Mathematica 直接書寫效果也是差強人意。不過,他們還是無法替代 LaTeX 最為排版工具的地位(他們涉及的只是最簡單的標記或者最基礎層次的排版,無法對版面、文字等進行精細的設置、調整)。
其實,我們現在的目標格式都是 PDF,說白了,那個 LaTeX 代碼也是一個中間過程,我們希望的結果是:作者用簡單的標記語言(比如Markdown)書寫,再加上一些科學計算語言使得我們可以把計算的結果也直接得到,然後生成「排版」規範的科技文獻的PDF。縱觀現在各種實現方式,最後一步都是拿 (La)TeX 來完成的(當然要出去TeXmacs、Mahtematica和Scientific Workplace),其實機器生成的 (La)TeX 代碼也非常有有限,難道大家認為直接寫的 (La)TeX 代碼都不一定能排版好的文章,難道用這二手的機器生成的 (La)TeX 代碼就完美的解決了?如果要排版,還是需要手工調整 (La)TeX 代碼。如果排版要求不高,自己看的話,工作量不是很大,還可以接受,畢竟 (La)TeX 的標記要稍稍繁瑣一些。但是如果是比較長的文章,對真正意義上的排版比較講究的話,這個工作量就大了,甚至要比直接寫 LaTeX 代碼更加麻煩。
所以說有一定的使用價值,畢竟標記簡單,但是局限性很大,不能替代 LaTeX 的地位。
再來扯淡一些:我們來看看Markdown 是什麼:
「Markdown」 is two things:
(1) a plain text formatting syntax; and
(2) a software tool, written in Perl, that converts the plain text formatting to HTML.
它的哲學是:
The overriding design goal for Markdown』s formatting syntax is to make it as readable as possible. The idea is that a Markdown-formatted document should be publishable as-is, as plain text, without looking like it』s been marked up with tags or formatting instructions.
這是原始的 Markdown 語法(標記)以及轉換程序(markdown.pl)。可以看出,他最初不是用來排版的,只是一些簡單的格式化,並且希望能夠只用純文本就可以清晰的體現格式,讓標記顯得自然。
後來Markdown由於它的這種簡潔易用火了,但同時也發現了它在很多方面的不足,儘管可以直接書寫 html 來實現更多的標記,但大家自然是不肯局限於此的,於是結合已有的 org-mode、rst 等等標記,又有了很多的拓展和變種。比如 Markdown Extra, MultiMarkdown, Maruku, kramdown, Pandoc Markdown, Github Markdown, Stackexchange Markdown 等等。他們在標記以及轉換程序上都有做出了很多的修改,而且可以支持各種不同的輸出格式。我最喜歡的也是我認為最有前景的 Pandoc,在 Markdown 的基礎之上做出了非常多的擴展,包括跟 LaTeX 的結合、各表表格、參考文獻、交叉引用、頁眉頁腳、圖表標題都可以實現,但即使這樣,作為論文排版這就夠了嗎?而且,在加入這這些複雜的東西之後,可以明顯感覺到,原文本並不能很好的遵循最初的設想(a Markdown-formatted document should be publishable as-is, as plain text, without looking like it』s been marked up with tags or formatting instructions)了。只是又造了一個輪子而已,而且還造的功能不全。
一般大家僅僅認為TeX只是一種標記,加粗、傾斜、章節、插圖、超鏈接等等,特別的,感覺它只是對數學公式的一個標記,於是就認為這些東西 Markdown(加上擴展) 都可以做到,這其實是對「排版」這個詞的認識太有限。也正是這一點使大家認為 Markdown 就可以替代 LaTeX 了。TeX 作為一個排版程序大大家都不怎麼關注,這確實也不是一般作者需要關注的東西,但是它確實在那裡,有其難以撼動的的地位。實際上前面說了,如論如何,我們最終的排版是交給 TeX 來完成的,如果直接寫的 LaTeX 代碼都難以很好的完成,二手代碼就更難了,一些機械化的東西可以由轉換來實現(比如生成表格的代碼),但是排版並不完全是機械性的勞動。大家熟悉的網頁的內容的排版工作,是由瀏覽器完成的,標記 HTML + 樣式 CSS + 輔助的程序 JS 然後就可以完成排版了,也有一些利用TeX演算法來完成網頁排版的JS,比如 hyphenator.js,但是網頁排版跟印刷排版畢竟不同,搞網頁標準化的人希望能能夠搞定實際的印刷排版,但是現在來看,還是很幼稚。網頁內容的排版離印刷排版還有很大的差距,將來如何我不好作評論。不過,css is awesome!
對我有很大影響的一篇文章,多次讀過。但現在回看,覺得最大的問題在:
既兼容了LaTeX的既有能力,同時,又廣泛藉助於R自身強大的作圖與統計學習能力。
以我的經驗看來,「兼容」 LaTeX 這件事真不是這麼容易,pandoc 的轉換也沒想像的那麼完美。推薦另一篇最近看到的博客 Markdown or LaTeX?,論證很清晰:你需要把寫的東西漂亮地列印到紙上嗎?如果是,用 LaTeX,不是則 Markdown。
我認為可以,但是現階段使用可能有一些問題。
先說一下問題吧:
1. 評估你論文的人,沒猜錯的話,看得是你的tex而不是markdown或者pdf。但是轉換出的tex不太好閱讀。
2. 有時候你需要寫包含大量tex 的東西,比如等號對齊的數學公式。這種情況下markdown的語法或者用$$擴起來的內容已經不夠用了(環境不同)。不過你可以在markdown中裸寫latex(不知道knitr是否支持,但是pandoc支持markdown中裸寫latex或者html)
現階段我懷疑可以考慮一個這樣的解決方案:先用markdown打草稿把論文寫出來,然後使用tex重寫一遍(或者用knitr或者pandoc轉成tex之後進行修改)
其實我覺得latex有這樣的一個問題,如果你沒有浮動體(比如圖片和表格),那麼你排出來的東西都很正常,但是這時候markdown似乎也可以。但是如果你有浮動體(比如一些圖片),但是有想要指定浮動體的位置和大小來達到某種排版效果,latex會讓你很痛苦:你需要可視化去查看浮動體現有的位置,在代碼用dirty tricks中調整浮動體位置
我上面這句話並非在推薦word......因為我好久沒有用office系列寫過東西以至於我不好說word好用或者word不好用了。我在這裡覺得如果你有真正的排版需求,也許Indesign或者Scribus這種專業軟體會比較好(其實這兩個我都不會用,我在等著別人跳坑然後貢獻教程)
然後說一下為什麼我覺得markdown或者類似的寫法是未來的選項。
原因是一般的論文寫作者關注的是內容,而不是關注自己排版是怎樣的。
而對於大部分人來說,latex比markdown更容易打擾思路。比如,雖然我覺得,只考慮內容的寫作中,latex的語法沒有比markdown麻煩多少。但是我依然覺得markdown比latex順手。
可能是 ##, !()[] 這種標誌比 subsection, includegraphicx之類的東西看起來清爽的原因吧
所以我覺得,如果論文寫作主要管的是內容的話,用markdown不僅僅可行並且對大多數人來說比latex更容易入門,畢竟最後的排版是雜誌編輯之類處理的。
但是 knitr這種方式我不清楚是否會更好,因為很多時候需要引用一些處理過的或者實驗得出的數據進行做圖,而這些數據有不會跟隨論文給出LaTeX 與 Word 對比起來有很多的優點 :首先在編輯複雜文檔時 ,Word 總能給人這些意外 , 當計算機在一次死後 , 打開上次編輯的試卷時發現所有的公式都變成不可編輯的圖片 , 但這決
不可能發生在 LaTeX 中 ;其次 ,LaTeX 使用幾條簡單的命令就可以很容易生成腳註、索引、目錄和參考文獻等複雜的結構。它使得出版快速 , 並生成質量很高的科技作品以交流科技信息。另外 , 使用 LaTeX 時 , 你只是詩人 ,LaTeX 則是你的排版工。而在使用 Word 等文字處理軟體時你既是詩人又是排版工。LaTeX 可以提供專業級的排版設計 , 使文檔看起來如同印刷好的一樣 , 但從遠處看 Word 的文檔則是黑一塊白一塊的 ; 最後 ,LaTeX 實際是TeX 的宏命令 , 這些宏命令能把各種複雜的數學公式系統化 , 許多數學符號 , 例如上下標的大小等都可由系統自動製作 , 這就給LaTeX 的用戶帶來了很大的方便 . 用戶可以不用涉及文章的具體格式和印刷要求 , 只要按照規定給出這些確定的宏命令 , 即可生成質量較高的作品。這正是為什麼世界上這麼多科學家對 LaTeX 愛不釋手的原因所在。
這幾天一直markdown做PDF htm等等,既然要寫R程序,為什麼不用sweave和knitr呢。。。
個人不太建議用markdown寫論文,雖然也可以產生pdf,但是用來產生網頁更多。
而且markdown有個問題是,個人感覺,好像不能用%隱去不想要的段落,但是這一點sweave或者latex就好用很多。今天不想要的用%隱去明天想要了還能找回來。
另外我覺得sweave比latex更好用是因為R程序直接嵌套,latex的話好像做不到吧?
反正我以前剛用latex現在用sweave/knitr,覺得knitr還挺順手的,直接Rstudio就搞定了。
Sweave已經內置於RStudio了,Markdown進行學術文檔學術寫作還是有差距的。在若干science society,寫文章Tex還是基本門檻一般的。
Sweave編譯雖然慢,但對於LaTex已經是極大的擴展了R的兼容性。其非同步性能讓寫作和代碼/結果分開,對於邏輯上潔癖的人(完美主義者),真是一件大快所有人心的大好事呀。
- 該文作者完全不熟悉文字處理軟體和排版軟體,根本沒資格談論誰取代誰
- 該作者不明白TeX是排版軟體,不僅僅是用來添加公式等特殊數學符號的
看情況,基本上可以。謝大神最近寫了一個新包:bookdown ,&bookdown: Authoring Books and Technical Documents with R Markdownbookdown: Authoring Books and Technical Documents with R Markdown"> Bookdown & 這個可以。
Bookdown用markdown的語法解決了不少原本markdown排版上的問題,基本上技術文檔是沒問題的
並不能,
我感覺當你R code計算量不大時, 選擇用R markdown編譯很輕鬆。 假如R code中涉及到一些複雜的,需要長時間運行才能得到結果的計算,那麼你可能需要仔細保存R data(不然需要長時間才能編譯好R markdown), 然後再在R markdown中載入那些歷史記錄。 這樣看的話一旦涉及複雜的計算, 用R markdown也不是很輕鬆。
可以的,我都是用稿紙,特別性感
完全可以,不過需要添加一些tex的文件對於文章的頁眉和頁腳進行新的定義,所有的排版定義都可以通過tex文件來完成,然後在Rmarkdown文件中include一下就可以了。
Markdown和LaTeX在一開始的理念就不一樣的,自己的感受時LaTeX不會被markdown替代,customisation完全不及LaTeX。好的editor會讓LaTeX更加舒心。
中文處理不怎樣。
markdown對R代碼和結果的兼容性比TEX好,但排版沒有TEX精細,還不能完全當TEX用!
我覺得不要一下就追求替代LaTeX,先替代word比較現實。Markdown可以看作html的簡化版本,然而html是不管排版的,排版由css管。word格式基於xml,自身也有一些用於排版的規範。添加了css擴展(或者其它東西)的markdown應該有望取代word。
推薦閱讀: