LaTeX——比Word更適合學術寫作的編纂語言。
Credit:講座是敝系的幾個技術宅辦的,作者只負責記錄和整理。後面的更新是個人心得。寫這篇日誌的初衷是小圈子分享和個人心得記錄,適合完全不了解tex的入門者閱讀,我的水平有限所以肯定有所疏漏,歡迎提出建議。具體使用什麼寫作工具,還要看寫作內容和個人習慣,畢竟優化工作效率才是最終目標 :) 有興趣的可以翻翻推薦語,有不少高人給出了相關資源和意見。
第一眼看上去,LaTex的語法也許有些嚇人,但是只要你熟悉了基本的編纂模式,就會發現它的強大之處。
第一部分:新手資源線上編纂
LaTeX可以進行線上編纂,好處是能夠隨時自動保存工作進度和數據,而且可以多人合作編寫文檔。
常用的LaTex online compiler基本就是sharelatex.com和writelatex.com這兩個,需要註冊,基本帳戶免費。
本地編纂
如果希望用LaTeX Compiler在本地電腦工作,則需要以下軟體:
For Windows:
MikTex: http://miktex.org/download和TexMaker: http://www.xm1math.net/texmaker/download.html
For Mac:
MacTeX: http://www.tug.org/mactex/index.html和TexMaker(地址同Windows)
之所以都需要兩個軟體是因為它們各自的作用不同:MikTex是package管理軟體,而TexMaker是用這些package和你自己的文字來生成最終PDF文件的軟體。package的作用會在下面專門解釋。
下面以sharelatex.com的界面為例子演示LaTeX的基本編纂規則和package的作用。
第二部分:文檔編寫基礎基本界面
打開sharelatex.com註冊帳號之後,點擊右上角的New Project,在下拉菜單中選擇example project,隨便起個名字,出現這個Metro風格的界面。
ShareLaTeX基本界面
從左到右的三豎欄分別是文件相關信息、編碼欄和文件生成欄,暫時叫它們ABC欄,其中B欄是進行文檔編寫的主要工作區。B欄中的改動在點擊C欄的Recompile之後才能看到生成文件的相應改動。
B欄中藍色的字符是function,function後面{}的裡面是argument。LaTeX的function使用「」符號表示開頭,「%」表示comment out即不執行此行代碼。有編程知識的同學都知道這些語句的意義是把特定的argument插入到function表達式中,LaTeX也不例外。
基本function解釋
documentclass{article}的意思是這篇文檔的類型是學術文章,除此之外也有book,booklet等其他出版物類型,這一句限定了排版能夠使用的格式,比如說如果類型是article,那麼排版就可以用APA/Chicago/MLA等版式,而不是專用於booklet的一些版式;
userpackage這一行不用改動,只是定義文檔的編碼方式;
title是整個文檔的標題,會自動居中,可以試著把例子中的42改成其他標題,再點擊Recompile,可以看到生成了帶新標題的文件。
再往下,author和date是文檔的作者和日期信息,如果想讓date自動顯示今天的日期,就把這一行改為date{today}。
下面兩行usepackage規定了文檔使用的文字排版是natbib,圖表排版是graphicx。natbib在理科寫作中比較常用,如果要換成文科生常用格式比如APA的話,把上面一行改成:usepackage{apacite}。
這裡就要講到package的作用了。package類似於一個插件,能夠把各種事先設定好的標準排版方式、圖表排列方式、公式生成方式等等直接插入文檔中,免去了手動調整這些參數的麻煩。很多常用的package都有高人寫好的代碼,我們只要拿過來用就行了,比用word調整頁邊距、頁碼等等要方便得多。apacite就算是一個廣泛使用的package,我們學校也有專門的機構負責編寫論文排版的package,我們只要在usepackage{}中把這些package作為argument插入{}就可以了。
如果需要的話,我們可以在下一行加一個function:tableofcontents,然後點擊recompile,可以看到latex會自動在標題後面插入目錄,而且目錄內容會根據後面的正文小標題改變。還可以在tableofcontents後面加上另一個function:pagebreak,這樣文檔的正文就會另起一頁。pagebreak類似於word裡面的分頁符,在任何需要分頁的地方都可以使用。
begin{document}是正文正式的開始標誌,相應的結束標誌end{document}則在文檔最後。end{document}後面的任何內容都不會在compile裡面顯示出來,所以如果我們需要只把編碼的一部分生成文檔,只要在這部分的結束處輸入end{document}就行了。begin和end的命令也適用於標記文中插入的圖表的起始和結束。
很多時候我們還需要在文章前面加上abstract,方法也很簡單,只要像下面這樣進行編碼:
begin{document}
maketitle
begin{abstract}
(這裡放置abstract的文字)
end{abstract}
就可以了。
注意maketitle這一行一定要在begin{document}的下面,否則LaTeX會判定為語法錯誤。maketitle命令的作用是把標題信息(也就是begin{document}之前的title,author,date等)顯示出來,如果comment out或者刪去maketitle這一行,這些標題信息將不會顯示在C欄的PDF中。當然,如果你正好不需要顯示標題,就可以刪去這個命令。
section{introduction}是對文檔部分的劃分,括號裡是這部分的名稱,latex會生成具體的部分數字編號。子分層的命令是subsection。一般來說latex不允許過多子分層,比如說在usepackage{apacite}規則中,只允許兩個子分層也就是subsubsection{}。
了解了以上基礎知識之後,就可以進行最基本的LaTeX文檔編寫了。下面幾部分要講的是如何插入引用和生成參考書目。
第三部分:引用Google Scholar和LaTeX的協作
打開Google Scholar首頁,點擊右上角設置,將「參考書目管理軟體」設置為「顯示導入BibTex的連結」。然後隨便搜索一篇文章,點擊搜索結果下面的「導入BibTex」,可以看到幾行代碼,這就是LaTeX能夠識別的bibliography。
設置導入BibTeX之後的Google Scholar條目
點擊「導入BibTex」之後的代碼
把這幾行代碼複製粘貼到sharelatex界面A欄的reference.bib中:
將代碼複製到reference.bib裡面
但是如果這時候點recompile,會看到生成的reference裡並沒有新加入的這篇文章,因為我們在正文中還沒有引用它。
於是接下來講一下如何在正文中插入引用。
在正文中插入引用
複製剛才粘貼的代碼的第一行中劃紅線的內容(也就是BibTeX自動生成的引用文章代碼),然後在正文中需要插入引用的部分插入citeA{文章代碼},這樣就能在正文中引用了。
正文中引用,注意只複製文章代碼
這時候再點recompile,才能看到reference中出現了新加的這篇文章。注意:citeA是APA格式的引用function,示例文檔代碼裡面的citep是另一種排版格式的引用function。
在reference中,latex會自動調整文章標題的大小寫為只大寫首單詞的開頭字母。如果需要保留文章原標題的大小寫格式,就在reference.bib裡面相應文章標題title的兩邊再加上一個括號{},比如title={{A bird’s-eye view of learner CORPUS research}},就可以保留原標題的大小寫了。
第四部分:LaTeX維基百科全書上面也提到了LaTeX的function中有很多不同的package供選擇,那麼到哪裡去找不同類型的package呢?比如說我這篇文章用了apacite,那如果我下一篇文章要用MLA格式,該用什麼package?
LaTeX的維基頁面http://en.wikibooks.org/wiki/LaTeX 就提供了這樣一個百科全書式的資源,也有PDF版可以下載。
頁面中詳細列出了各部分function所能夠使用的package,只要點開目錄連結去找到package名稱就行了。對於本地編纂軟體來說,則需要下載package之後用MikTex來進行管理。
自從寫了LaTeX教程筆記之後,我試著用ShareLatex代替word完成了三個written assignment和兩個presentation,寫作體驗和效果都還不錯。所以像我一樣的文科僧大可不必對寫代碼這件事感到頭疼,比起HTML/CSS,LaTeX還算是對新手比較友好的,畢竟很多常用的格式和排版都有寫好的LaTeX package。
下面就以我自己已經完成的一個assignment和一個presentation作為例子來講LaTeX的具體應用和注意事項。
主要涉及的document type有article和beamer兩種,主要的功能有1)用qtree畫樹形結構,2)用tabular做表格,3)調整行間距/字體字號/頁邊距等,4)beamer(幻燈片)的一些簡單排版。
LaTeX也可以做幻燈片,而且直接保存為PDF格式,不用擔心PPTX在不同的電腦上渲染效果不同了。網上有一個流傳較廣的Beamer Quick Start,我的slide基本上也是照著這個教程做出來的,下文簡稱為BQS。
PREAMBLE首先在preamble(就是begin{document}前面的那些部分)中定義:
documentclass[xcolor=dvipsnames]{beamer}
其中方括號[]裡的指令是要求beamer使用xcolor來生成dvipsnames指定的色彩效果。LaTeX的很多指令都是這個[]{}的格式,大多數遵循【[ ]定義具體參數 - { }定義上層argument】的規則,所以這一行的意思是「建立一個顏色可由dvip指定的beamer文件」。(beamer自帶的default)
然後下面這幾行:
usecolortheme[named=Maroon]{structure}
usetheme{Boadilla}
usepackage{helvet}
usecolortheme就是來指定beamer的顏色是Maroon,{structure}的意義我也不清楚,大概是只在heading和title這些構建structure的文字上菜使用自定義顏色的意思。所以可以看到,生成的slide中只有標題和頁腳等部分才是紅色的。
usetheme是指定beamer的主題,類似PPT中的設計模板。BQS中給出了好幾個常用的theme。需要注意的是有一些不常用的theme是不會直接被sharelatex識別的,必須和開發者設計的其他的指令配合使用。不過類似Boadilla,Warsaw,Singapore和BQS裡面給的這些theme都能被sharelatex識別,而且足夠應付一般的presentation了。
usepackage{helvet}用來指定beamer使用的字體。beamer的默認字體是略帶圓角的某個字體,如果不喜歡的話就在preamble中另外設置,幾個比較常用的helvet (Helvetica),times (Times New Roman),bookman (Bookman Old Style),serif等等都是不錯的選擇。字體對應的名稱見:http://www.uncg.edu/cmp/reu/presentations/Charles%20Batts%20-%20Beamer%20Tutorial.pdf 中的第48頁。
標題和頁眉設置title[Short title of the presentation]{Full title of the presentation}
標題:方括號是縮寫,會顯示在每一張slide的頁腳;大括號裡是完整的標題。
subtitle{subtitle here}
副標題。
author[John Smith]{John Smith}
演講者姓名。方括號裡的名字會顯示在頁腳中。
institute[XX University]{M.A. in XXX
XXX University[1ex]
texttt{example@XXX.edu}}
演講者的affiliation。方括號還是頁腳內容。大括號中的用來分行,[1ex]用來減小email的字號。
date[March 2013]{today}
演講日期。估計都已經摸著規律了,beamer中title這幾行,方括號裡都是頁腳的內容。
插入新幻燈片begin{document}之後就是幻燈片正文了。每一張幻燈片的起始和結束用begin{frame}和end{frame}來標示。這兩個tag之間的代碼就是這張幻燈片上的內容。begin{frame}{slide title}則可以把title直接插入頁眉,更符合實際需要;但是相應的end{frame}後面不需要加上{slide title}。
插入Bulletin pointbegin{itemize}
item (空一格後輸入每個point的內容)
item (同上)
item
...
end{itemize}
插入數字列表begin{enumerate}
item
item
item
...
end{enumerate}
學過HTML的同學可以把itemize和enumerate理解為ordered list和unordered list
分行在兩行文字中間插入par。也可以用一行空白來代替。
需要較大行間距,則可在兩行之間插入:
par
bigskip
插入圖片先把要插入的圖片用A欄的upload file導入。如果compiler是pdfLaTeX的話,常用圖片格式比如JPG/PNG/BMP都兼容,如果compiler是LaTeX則只有EPS才能插入。compiler可在setting中設置。
導入之後,輸入插入圖片的指令includegraphics[scale=X]{X.PNG},如下圖所示,左邊為代碼,右邊為對應的slide:
用includegraphics插入圖片(紅色劃線部分)
scale就是圖片的縮放,X一般是個大於0小於1的數字,比如0.6就是原圖片縮放百分之六十。{ }裡面是圖片文件名。【注意:圖片文件名中不能有空格,否則latex無法識別】
如果需要讓圖片居中,則需要centering這個命令:
...
par
centering
includegraphics[] {}
par
...
經個人實驗得出結論:par這個空行命令在這裡是必不可少的,因為如果不用par把居中的圖片和上下文分隔開的話,上下文靠近圖片的部分也會居中。
插入圖片的方法是把圖片作為Figure插入,比如:(建立一個example file也能看到類似的例子)
begin{figure}[h!]
centering
includegraphics[scale=1.7]{universe.jpg}
caption{The Universe}
label{threadsVsSync}
end{figure}
這樣還能給圖片加上caption,功能更完善一些。
控制內容顯示先後順序LaTeX也可以實現powerpoint那種逐一顯示每一項的效果。還是剛才那張圖:
用pause控制內容顯示順序(藍色劃線)
加入pause這個命令後,下面新加入的內容會在一張新的slide上顯示,播放的時候,配合講解,可以營造一種「揭曉謎底」「步步推進」的效果。
插入簡單表格插入簡單表格
圖片中代碼太小看不清楚所以直接複製在這裡:
begin{frame}{Quantifier and Scope}
The scope of quantifier is directly reflected by the surface structure;
par
bigskip
begin{center}
begin{tabular}{|c|c|c|c|} hline
textsc{Obj} position & Scrambling & Trace & Ambiguity hline
Spec,TP & A-scrambling & non-recoverable & unambiguous hline
Spec,HP & A'-scrambling & recoverable & ambiguous hline
end{tabular}
end{center}
(cf.23 and 24)
par
bigskip
Disambiguation can be reached by inserting a higher adverb such as 'fortunately'.
end{frame}
關鍵就是從begin{center}到end{center}之間的這一段代碼。
{center}是表格居中的命令;
begin{tabular}{|c|c|c|c|} hline這一行建立表格的結構。其中第二個{ }裡面有多少個用「|」 分開的格子,表格就有多少個column。可以把「|」理解為vertical line,很形象。每個格子裡面能出現的字幕只有r/c/l三種,分別代表左對齊、居中、右對齊,所以這個表格所有的單元格都是居中對齊的。hline是加入一個horizontal line也就是分行的命令。
再往下是表格的具體內容:
Spec,TP & A-scrambling & non-recoverable & unambiguous hline
因為設置了表格有四個column,所以對應的每一個row裡面就要用三個「&」把四個column分隔開。「&」相當於「|」的作用。每一個row的結束由「空格 + 」標示。最後的hline用來給這一橫行下面加上邊欄。如果沒有hline,就沒有這一行下面的邊欄。
以此類推,最後以
end{tabular}
end{center}
結束這個表格。
本文轉自寄託天下
歡迎關注北大人生活圈,便利自己的燕園生活。