觀點|高效率科研神器——精致排版和繪圖
Word之外的另一個世界——Tex和它的朋友們
廣大科研搬磚工工作者常用的排版和繪圖工具主要是以下幾種:微軟Office系列的Word、Powerpoint、Excel,Origin,Mathtype等等。這些軟件都屬于所見即所得類的軟件,也就是說你在輸入或者操作的同時能夠實時地看到最終的輸出結果。然而他們實際上只是理論上的所見即所得,在實際使用中,這些軟件都或多或少的存在著以下這些缺點:
1、版本和兼容問題:同一個文件用不同版本的軟件打開時,顯示效果往往會有變化,最重要的是這種變化往往無法預知,難以避免。
2、格式與內容混為一體:在使用Word時,每輸入一段文字,基本都要停滯一段時間,將鍵盤上連續打字的手移到鼠標上,點擊軟件上的各種按鈕,設置格式。如果想等到完全輸入完之后再修改格式,要么已經忘記了哪些地方需要修改,要么限于長時間的無聊的重復操作之中。
3、多軟件的協同問題:我們在寫論文或者做PPT的時候,總是免不了需要用到多個軟件,比如用Excel處理數據,用Origin繪制圖表。然而多個不同公司、不同類型的軟件之間經常很難做到完美配合、合理分工。也許這里處理完的數據復制到那個軟件里,格式就出了錯,或者這里畫的圖在那個軟件里發生了變形,產生了錯誤。這些情況不僅經常發生,而且很難解決,耗費了我們很多精力。
4、排版的細節問題:如果你看過國外排版精美的教科書,你也許會發現Word之類的軟件排版出的文字有一種奇怪的感覺,文字之間的間隔、行與行之間的間距很僵硬。圖片、表格和文字之間的結合也有一種粗糙感,顯得不夠專業。
相信每一個科研工作者或者幾乎需要寫作技術類文字的人都希望有一個更加完美的寫作體系。這一個寫作體系最好具有以下幾個特點:
1、格式和內容的分離:輸入內容的時間可以不考慮格式,修改格式的時候無需再回到具體的內容中。
2、美觀而方便的公式輸入:技術類文章中往往少不了公式,而傳統的鼠標點擊式的公式輸入方式無疑是十分低效而丑陋的。
3、自動化的編號和引用系統:參考文獻的編號和插入、章節的序號、目錄的生成應該能夠自動實現,不需要我們操心。
4、精確的、可自定義的繪圖功能:示意圖、流程圖之類的圖片中每一個元素的位置、大小、形狀之類的參數應該是可以精確定義的,生成的圖片應該是不受縮放影響的矢量格式。
5、一致的工作方式、豐富的可拓展性:無論是文字、公式、圖片、還是表格、參考文獻都可以在一個軟件里用一種方式生成,同時還能根據需要方便的植入其他功能。
也許有人會想,這么好的東西我怎么沒聽說過,應該還沒出現吧。事實是,具有上述特點的寫作系統不僅有、而且早就有了。然而由于一定的入門門檻,僅僅在相對較小的圈子中使用。然而,科研和技術工作者理應就是這一小圈子的目標受眾,因此,我希望簡單介紹一下Tex排版系統,讓更多的人能夠使用它,同時也介紹一些簡單、強大的工具,希望能夠降低一下初學者的入門門檻,不要在感受到Tex的魅力之前就被它嚇倒。
Tex的簡單歷史和現狀
Tex是由計算機專家Knuth(中文名高德納)在80年代創造的,Knuth是以為編程大牛,他在寫作的巨作《計算機編程藝術》第二卷的過程中發現當時使用的計算機排版系統實在是丑陋不堪,大牛就是大牛,不忍他的著作被糟糕的排版污染,就發揮自己的特長,花費了近十年的時間從頭創造了一個新的排版系統,并將其命名為Tex,是希臘語藝術和技術兩詞的詞頭,同時創造的還有字體處理程序Metafont。大家可能已經猜到了,Tex其實是一門編程語言,只不過他的任務是進行排版。Tex作為一門編程語言,天生具有強大的功能性、拓展性和可移植性。但是最初的Tex實在是太復雜了,需要記憶數百個格式處理命令,即使是專家用起來也不輕松。后來一個名字以La開頭的數學系博士在Tex的基礎將格式和內容文件分離,形成了現在廣為使用的Latex系統。現在的Latex最新版本是Latex2e。
對于我們中國的使用者來說,如果你直接去用原版的Latex的話,并不是一件輕松的事,應為要讓Tex支持中文需要復雜的設置。幸好,已經有前人幫我們做好了功課。現在大部分中國Latex使用者使用的是已經配置好的CTex套裝。這一套裝已經集成了Tex系統、編譯器、絕大多數宏包、pdf閱讀器等一系列工具,到手即用,非常方便,大家可以搜索下載。
Tex學習資源推薦
Tex是一個非常復雜的系統,然而大部分人不需要用到它的全部功能,只需要用到一小部分即可。國內有一些非常熱心人致力于Tex的普及工作,下面是一些常用的資源:
1、Latex Studio:http://www.latexstudio.net/國內最為活躍和全面的Latex綜合站點,提供Latex教程、資源、模板等等。
2、《Latex2e完全學習手冊》非常全面的中文入門教程,覆蓋了Latex的方方面面,對于一般的使用者來說已經足夠。
3、如果你覺得上面的學習手冊篇幅太長,或者你已經有一定的Latex基礎,可以看看K.L Wu 所寫的《簡單粗暴Latex》,這本書的latex源碼作者也共享出來了,可以到此地址下載:https://github.com/wklchris/Note-by-LaTeX/tree/master/LaTeX-cn
Latex的重要性
Latex的學習曲線是十分陡峭的,理論上,你可以直接將一些模板拿來使用,改改文字就行了。但是,實際上,你總會遇到各種各樣的問題。對于很多人來說,碰到一個Error,卻有找不到錯誤所在的感覺是十分令人抓狂的。而且,一旦你不滿足與現成的模板,想對格式做一些針對性的修改,往往有一些無所適從。你必須去檢索、查閱大量的資料。這些特點注定了Latex的小眾。那么我們為什么還要學習Latex呢?
回想起當初走進Latex這個大坑的緣由,吸引我努力學習Latex的第一個理由就是對完美排版的追求。有過完整的Latex使用體驗的人大多會被它排版的精致和美觀所感動。和同樣內容的Word文檔對比,這種精致感是顯而易見的,就像看到花了幾百大洋買的精裝書一樣由衷發自內心的愉悅感。當你一旦知道了有很好的排版方式存在,就越來越不能忍受那些粗糙而低劣的效果。尤其對于數學公式而言,沒有其他任何工具可以提供和Latex一樣的效果。另一個理由就是Latex可以避免重復勞動。我十分討厭Word上一遍遍的鼠標點擊、拖選、再點擊,就是為了把某些段落改個格式。除了時間上的浪費,損害最大的其實是寫作時的心情。而Latex的哲學是格式和內容的分離。無論多少內容、無論分布于文檔的何處,都可以通過一兩個命令一次性完成調整。就像學習其他知識一樣,一旦你掌握了某個技巧,你可以永遠享受它帶來的好處。一旦你學會了某個Latex命令,你以后再也不需要花時間去學它了。還有一個理由,是Latex對特殊格式的處理能力。比如說,生物領域的學者往往需要排版大段的DNA序列,用Word來處理會非常頭疼。而通過自定義Latex命令,你可以實現下面的效果。又或者你需要插入外文、音階之類的特殊符號,在Word環境下,你需要非常費力的去找、然而插入進去,但是插入的特殊符號往往與其他文字格格不入。Latex可以通過調入宏包的方式很方便的實現。
使用Latex排版的DNA序列圖
Latex繪圖——Tikz和pstricks
Latex的繪圖曾經是一個麻煩的問題。當然,你可以用其他工具將圖片畫好之后直接插入進來,但是,那樣的話圖片的清晰度、圖片與文本之間的協調型必然會大打折扣。對于已經進了Latex大坑的完美主義者肯定是不能容忍的事。所以有人搞出了tikz和pstricks。它們是Latex的宏包,通過程序語言能夠直接繪制出各種復雜精美的圖形。原則上,如果你是個編程控的,你可以精確的定義圖形上每一個數據點、坐標軸、圖形的坐標、大小、位置、樣式。然而,大部分普通用戶往往會被大段的程序嚇到,不信的話可以去http://www.texample.net/tikz/上感受一下。這里我就不介紹tikz的具體語法和使用了(畢竟我自己也不會,如果你想學的話,可以去看看這個:http://blog.sina.com.cn/s/blog_01ea59580100urwi.html)。這里我介紹一個圖形界面工具,幫助大家用更簡單的方法畫出美觀的圖形。
Matlab2Tikz
對于工程技術類工作者來說,Matlab是一個常用工具。Matlab輸出的函數圖表可以通過非常簡單的方法輸出為Tikz圖表,直接插入到Latex文件中。這樣,你既可以利用Matlab強大的數據處理和繪圖功能,又能利用Tikz的繪圖、排版功能,在文本中插入風格一致、可編輯的矢量位圖。經過latex輸出的圖片在精細度、美觀度上都比Matlab的原圖有所提升。這個程序在數學建模之類的比賽中非常有用,能夠在保證效率的前提下大大提高輸出文件的美觀度。
事實上,除了Matlab,Mathematica軟件的數據也可以通過簡單的處理導入Tikz來繪制,詳情可見http://bbs.ctex.org/forum.php?mod=viewthread&tid=40700&highlight=。
GeoGebra
初見GeoGebra的時候,以為它只是一個其貌不揚的小工具。然而簡單使用一番之后,卻發現它的功能真是出乎意料的強大。 一方面,GeoGebra是一個動態的幾何軟件。你可以在上面畫點、向量、線段、直線、多邊形、圓錐曲線,甚至是函數,事后你還可以改變它們的屬性。另一方面,你也可以直接輸入方程和點坐標來繪制圖形。GeoGebra也有處理變數的能力(這些變數可以是一個數字、角度、向量或點坐標),它也可以對函數作微分與積分,找出方程的根或計算函數的極大極小值。總的來說,GeoGebra是一個面向中學數學教育的功能全面的綜合數學平臺。之所以在介紹Latex的這篇文章里介紹這個軟件,是因為它可以方便的將繪制的各種平面函數圖形直接導出為Tikz格式的latex文件。對于中學數學老師來說,出試卷方便了很多啊(不要打我)。
初步感覺,Geogebra真的是一個很強大的軟件,但是知名度很低。我自己也沒怎么用過,無法過多評價,希望大家多多挖掘它的潛力。
Geogebra的初始界面
包含了3D繪圖、繪圖過程、表格區域的界面
Dia
Dia是一個簡單好用的小工具。它主要是用來畫各種流程圖、UML圖。同樣支持直接導出為Tikz格式。相比于現在各種各樣的流程圖軟件來說,Dia體積小巧、界面簡潔、功能強大,是個不錯的選擇。
Dia界面
Inkscape
Inkscape是一個類似于Adobe illustrator的矢量繪圖軟件。免費、小巧,功能同樣強大。Inkscape可以將繪制的矢量圖導出為Latex支持的格式。
Inkscape界面
TikzEdt
Tikzedt是一個專門用來繪制Tikz圖形的軟件,它支持Tikz圖形的實時編譯預覽,內置了很多命令,大大降低了Tikz的使用門檻。
TikzEdt界面
好工具的意義不在它自身
很多人會問這樣一個問題:Word已經夠用了,我為什么要學Latex?我自己也問過自己同樣的問題。其實這個問題的答案很簡單:如果你覺得Word已經夠用的話,你不需要去學Latex。就像天天用電腦的人也沒必要去學怎么造計算機一樣。這篇文章標題的前半部分已經強調了,這是一個科研神器,它更適用于理工科技術類人員。尤其適用于能夠自己產出知識的那一部分。就像望子成龍的父母一樣,每一個研究出新想法、新理論的人都希望給自己辛苦計算出的公式、圖形、文字一個好的外表,在他們看來,學習Latex的成本遠遠不及量子力學,而因為糟糕的排版使得其他人不愿意認真閱讀背后的內容所帶來的損失無疑大得多。
同時,好工具的意義并不在于工具本身。優秀的工具能夠讓你重新去思考你所做的事。學習Latex的過程能夠重新審視寫作和排版的內涵,讓你掌握一個更為優秀的工作理念。正如知乎上這個問題所問的一樣:如何做到像使用LaTeX那樣優雅地使用Word?即使你放棄了Latex,重新用起了Word,它依然發揮了它的價值。
本文轉自簡書,作者青銅紅瓦
鏈接:http://www.jianshu.com/p/97ce35bcc6e3
本文由材料牛deer編輯整理。
但是導師不讓用啊