1. 程式人生 > >學術寫作利器——LaTeX入門筆記整理(不定期更新,附加使用心得)

學術寫作利器——LaTeX入門筆記整理(不定期更新,附加使用心得)

LaTeX入門教程(上)

比Word更適合學術寫作的編纂語言

Credit:講座是敝系的幾個技術宅辦的,作者只負責記錄和整理。後面的更新是個人心得。
寫這篇日誌的初衷是小圈子分享和個人心得記錄,適合完全不瞭解tex的入門者閱讀,我的水平有限所以肯定有所疏漏,歡迎提出建議。具體使用什麼寫作工具,還要看寫作內容和個人習慣,畢竟優化工作效率才是最終目標 :) 有興趣的可以翻翻推薦語,有不少高人給出了相關資源和意見。

LaTeX是專為學術寫作開發的語言和編纂程式,擁有強大的package資源,這意味著用LaTeX寫作可以避免Word帶來的令人頭疼的排版問題,而且世界上有很多人已經寫好了針對各種寫作格式的coding package,我們只需要套用這些package就行了。很多主流學術期刊都有自己的LaTeX模板,所以要把同一篇文章投給不同期刊的話,只要套用相應的package就可以了,比起在word裡面一點點調整頁邊距行距引用格式之類的細節,LaTeX的效率顯然要高得多。


第一眼看上去,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基本介面
ShareLaTeX基本介面


如果圖太小看不清請戳http://www.douban.com/photos/photo/1884275523/large。從左到右的三豎欄分別是檔案相關資訊、編碼欄和檔案生成欄,暫時叫它們A\B\C欄,其中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之後的Google Scholar條目


點選“匯入BibTex”之後的程式碼
點選“匯入BibTex”之後的程式碼


把這幾行程式碼複製貼上到sharelatex介面A欄的reference.bib中:

講程式碼複製到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來進行管理。

(今天的講座只講到了這裡,下週繼續寫)

========2013. 04.05 期末趕論文期間更新的分割線=========

自從寫了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(幻燈片)的一些簡單排版。

********例項一:用Beamer做presentation*******

LaTeX也可以做幻燈片,而且直接儲存為pdf格式,不用擔心pptx在不同的電腦上渲染效果不同了。網上有一個流傳較廣的Beamer Quick Start:http://www.math.umbc.edu/~rouben/beamer/,我的slide基本上也是照著這個教程做出來的,下文簡稱為BQS。另一個pdf格式的教程http://www.uncg.edu/cmp/reu/presentations/Charles%20Batts%20-%20Beamer%20Tutorial.pdf 也比較實用。

【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{[email protected]}}
演講者的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 point】
\begin{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插入圖片(紅色劃線部分)
用\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控制內容顯示順序(藍色劃線)


加入\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}

結束這個表格。

from: https://www.douban.com/note/264288981/

相關推薦

學術寫作利器——LaTeX入門筆記整理定期更新附加使用心得

LaTeX入門教程(上)比Word更適合學術寫作的編纂語言Credit:講座是敝系的幾個技術宅辦的,作者只負責記錄和整理。後面的更新是個人心得。寫這篇日誌的初衷是小圈子分享和個人心得記錄,適合完全不瞭解tex的入門者閱讀,我的水平有限所以肯定有所疏漏,歡迎提出建議。具體使用

SQL Server Management StudioSSMS的使用與配置整理定期更新 2016/02/04

目錄 本文將不定期持續更新(by Hyper Wang at 2016/02/04) 1. SQL Server Management Studio的使用與配置 SQL Server Management Studio(即SSMS),作為

遊離在技術的邊緣----我的大學 我的青春定期更新有時間一一直接著寫

(一)     經歷過兩次失敗的高考,終於在第三次高考以後,我考上了一所二本大學。2005年的時候,坐上南下的火車,經歷了將近37個小時的興奮和疲憊之後,到達了長這麼大以來的第一座大城市---春城昆明。     學校不像想象中的那麼大(首先是從視覺上),心裡很是失落,覺得自己花了三年時間考試的大學,盡然是

iOS常見又通用的一些小方法集合定時更新歡迎補充

開發過程中,往往會用到一些常見又通用的方法,整個工程中我們可能需要多次用到,或者多個工程中會用到相同的方法。比如判斷手機號、郵箱的合法性,在登入或者註冊相關頁面,我們都需要用到相應的方法去判斷,而如果我們每次都寫一個判斷方法的話,程式碼會顯得尤其的冗餘,這時候我

javascript基礎知識整理定時更新

nsh firefox 可用 splice mage true size -1 對數 1.js中真與假的定義:   真:true,非零數字,非空字符串,非空對象   假:false,數字零,空字符串,空對象(null),undefined 2.使用for循環對json進

整理】常用電子設備功耗定期更新

沒事 標準 優酷 運行 充電 電子 組裝 由器 1.2 NAS 關機:1.4W(我擦,關機還耗電,還不少) 待機:20W 運行:20W+每塊3.5寸硬盤5W PC 關機:1.2W 待機:45W(要不是你太吵,那你當nas也可以) 處理器滿負荷:100W 顯卡滿負荷:180

菜鳥教程PHP學習筆記定期更新

NO.1—PHP表單驗證 程式碼詳細註釋版 <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title>菜鳥教程(runoob.com)</title>

記錄使用Vue相關API開發專案時遇到的問題難點整理定時更新

本文為整理記錄本人從17年初開始上手使用Vue以後,針對專案中業務需求所遇到到的各種問題及難點的解決方法整理?。 1、keep-alive元件快取: <!--這裡是需要快取的--> <keep-alive> <router-v

Spring Boot2 + JDK11使用筆記定期更新

下面描述的問題和解決方法全部基於Gradle構建,Maven使用者自行轉換 異常處理 Caused by: java.lang.NoClassDefFoundError: javax/xml/b

Spring框架學習筆記——IoCInversion of Control控制反轉和AOPAspect Oriented Programming面向切面程式設計

1、Spring IoC IoC是一個Bean容器,在Spring中,它認為一切Java資源都是Java Bean,容器的目標就是管理這些Bean和它們之間的關係。所以在Spring IoC裡面裝載的各種Bean,也可以理解為Java的各種資源,包括Java Bean的建立、事件、行為和Java

2018-3-20論文一種新型的智慧演算法-狼群演算法WPA筆記狼群系統分析演算法步驟

狼群系統分工:頭狼: 狼群中最有智慧以及最凶猛的。它不斷的根據狼群所感知的資訊進行決策,身份:行動的指揮者探狼:負責偵查資訊,感知獵物的氣味。在進行實物搜尋的階段,會派出一些探狼(只是一小部分)去偵測資訊,他們會根據偵測到的資訊進行自主決策,向著獵物氣味最近的方向前進。猛狼:

【leetcode】leetcode 刷題 筆記 定期更新

237.Delete Node in a Linked List 題目要求只給定連結串列中一個節點的前提下,刪除該節點。注意這裡題目並沒有給出對連結串列的引用,因而我們無法遍歷連結串列得到前驅。有一個思路確實很好,它並不是刪除連結串列的節點,而是把該節點的內容改為下一個節

Android學習筆記——webview 適配相關定期更貼填坑

業務需要,會用到android webview相關跳轉H5頁面,開發中發現坑不少,很多東西之前都不知道,想立個彙總帖,之後遇到坑了就來更新一下。     1.webview 自適應手機螢幕大小

Golang 學習筆記定期更新

本文主要記錄作者使用 Go 開發過程中的問題及總結。 1)不同檔案屬於同一個 package,每個 go 檔案如果有 init(), 則全部 init() 會預設執行,根據包的匯入先後及遞進關係來先後執行;同一個檔案可以有多個同名 init 函式,即不會出現重

Pandas學習筆記定期更新

1.如何使用Pandas處理大資料檔案 reader=pd.read_csv('xxx.csv', iterator=True) #分塊讀取 chunkSize = 10000000 #一次讀取一千萬

【前端學習筆記】專案經驗積累定期更新

樣式重置—————————————————————————– /* reset */ body,h1,h2,h3,h4,h5,p,dl,dd,ul,ol,form,input,textarea,th,td,select { margin:0; pa

js奇奇怪怪的函數整理定時更新轉載+整理

函數 結果 方法 arr som true 找到 都是 mage 刷題或者開發中總會看到別人用過很多看起來特別高大上的函數方法(可能是我水平不夠),這篇文章用來整理每次遇到的js函數,不定時更新,文中已標註轉載位置。 1.數組相關的函數 1.1.some()和every

Android Jetpack從入門到精通深度好文值得收藏

前言 即學即用Android Jetpack系列Blog的目的是通過學習Android Jetpack完成一個簡單的Demo,本文是即學即用Android Jetpack系列Blog的第一篇。 記得去年第一次參加谷歌開發者大會的時候,就被Navigation的圖形導航介面給迷住了,一句臥槽就代表了小王的全部心

sed 實踐案例 定期更新

一個 mysqld swd dia col 一行 rac 刪除 實踐 刪除每行第一個字符 sed -r ‘s/^.//g‘ /etc/passwd 刪掉每行第二個字符 sed -r ‘s/^(.)(.)/\1/g‘ /etc/passwd 刪掉每行最後一個字符 s

2017-2018-1 Java演繹法 小組會議及交互匯總定期更新

當前 演繹法 還需要 優點 計劃 除了 但是 log 凝聚力 第一周會議   今天我們小組開展了第一次團隊例會活動。我們小組將《構建之法》分為了六個部分並由六位成員先分別學習並向組長上傳學習收獲,這次的活動內容便是 交流前兩周小組成員學習閱讀《構建之法》的收獲。   在