用Auctex寫Latex

本文是《從零開始——Emacs 安裝配置使用教程 2015》(簡稱《從零開始》)的姊妹篇,總結(jié)了我在這幾個月中使用Auctex模式的經(jīng)驗。建議優(yōu)先閱讀《從零開始》,以理解安裝配置emacs的基本操作。我使用Tex Live2014作為Latex的編譯環(huán)境十偶。本文并不以介紹Latex以及Auctex為重點,僅僅止于描述基本的使用場景园细。

Auctex簡介

背景知識

本文以《從零開始》中使用的設(shè)置為基礎(chǔ)惦积,如需額外設(shè)置均有提及。

本文中猛频,init-auctex代表auctex的初始化文檔狮崩。可以是一個獨立的文件鹿寻。如果你只有一個初始化文件睦柴,那么對應(yīng)其中初始化auctex的部分。

emacs中毡熏,有些指令會在當前窗口的左側(cè)或右側(cè)調(diào)出一個臨時區(qū)域坦敌,提供一個選項列表。一般光標會自動切換到這個區(qū)域中痢法。其中狱窘,使用方向鍵或者np可以上下移動财搁,RET鍵確認選擇训柴。

LaTex快捷鍵

核心操作

  • 編譯文檔
    C-c C-c 對主文檔執(zhí)行各種命令,如編譯妇拯、預(yù)覽PDF等幻馁。如果沒有額外設(shè)置,默認主文檔為當前正在編輯的文檔越锈。比如仗嗦,使用Latex編譯當前文檔,C-c C-c latex甘凭∠」眨或者,預(yù)覽當前文檔丹弱,C-c C-c view德撬。

  • 預(yù)覽PDF
    C-c C-v,相當于C-c C-c view的快捷版躲胳。

其他操作

原則上蜓洪,Latex源碼可以用任何文檔編輯器編寫。使用emacs坯苹,只要知道編譯和預(yù)覽指令的快捷鍵隆檀,就足夠應(yīng)對一般需求了。但畢竟用的是大名鼎鼎的auctex模式,不去使用那些特色功能就太可惜了恐仑。

  • 放大字體
    C-x C-+

  • 添加章節(jié)
    C-c C-s

  • 文檔目錄
    C-c =泉坐,體驗非常贊。

  • 添加各類環(huán)境
    一個環(huán)境以\begin{env name}開始裳仆,以\end{env name}結(jié)束腕让。使用C-c C-e來快速添加一個指定環(huán)境,比如C-c C-e equation歧斟,并且可以快速指定相關(guān)屬性纯丸,比如label构捡。

  • 快速引用label
    Latex中,許多地方都可以添加label屬性壳猜,比如章節(jié)勾徽、公式塊、圖表等统扳。C-c )可以快速引用指定label喘帚。右側(cè)會自動打開一個窗口,鍵入RET選擇以label名的形式引用咒钟,鍵入p以頁碼的形式引用吹由。接下來,程序會檢索整個文檔朱嘴,生成引用數(shù)據(jù)倾鲫,所以請稍微等一下。然后窗口頂部提示“SELECT A LABEL TYPE”萍嬉,鍵入相關(guān)快捷鍵后乌昔,比如e(equation),程序會列出文檔中的全部有l(wèi)abel的公式壤追,選中后即可插入磕道。另外,emacs會智能檢測當前位置的文本環(huán)境行冰。比如溺蕉,如果你在單詞“section”后面調(diào)用C-c ),那么程序會直接列出所有的"section label"悼做。"equation"疯特、"figure"也有類似的效果。如果修改了源文檔中的label肛走,記得在列出所有l(wèi)abel的窗口內(nèi)鍵入r來刷新label目錄辙芍。

文獻的引用比較特殊,參見RefTex插入引入文獻
更多功能故硅,請參考RefTeX-in-a-Nutshell

  • Auctex文檔內(nèi)預(yù)覽Latex
    auctex的核心功能之一庶灿。編輯完一個公式塊后,只想預(yù)覽公式本身編譯的結(jié)果吃衅,而非整個文檔往踢,該功能便派上用場了。保證光標在公式塊內(nèi)徘层,鍵入C-c C-p C-e即可峻呕。這時,相應(yīng)位置的Latex代碼會被替換為渲染后的圖片趣效。光標進入到圖片區(qū)域內(nèi)部時瘦癌,會顯示Latex源碼,移出源碼區(qū)后跷敬,會顯示圖片讯私,很方便吧?當然西傀,修改過代碼后斤寇,需要再次鍵入C-c C-p C-e來重新生成圖片。對于大文檔拥褂,局部預(yù)覽可以節(jié)省許多時間娘锁。
    如果想要移除當前文檔內(nèi)的全部預(yù)覽結(jié)果,鍵入C-c C-p C-c C-d即可饺鹃。
    除了公式外莫秆,插入的圖片、表格等悔详,都可以預(yù)覽馏锡。

進階技巧

包含子文件的文檔

<a name="multifile"></a>編寫較大的文檔時,經(jīng)常會使用\include或者\input命令來將主要章節(jié)分離為獨立的文件伟端。在編寫這些子文檔時杯道,可不可以在鍵入編譯或預(yù)覽等命令時,讓auctex自動定位主文檔并執(zhí)行命令责蝠?參見Multifile Documents党巾。在init-auctex中添加

;; Query for master file.
(setq-default TeX-master nil) 

之后,在文檔中鍵入編譯命令時霜医,emacs會首先判斷當前正在編輯的文檔是否為主文檔齿拂。如果不是,則詢問主文檔的位置肴敛。指定后署海,emacs自動將該位置添加到文檔末尾吗购,以備后續(xù)調(diào)用,比如:

%%% Local Variables:
%%% mode: latex
%%% TeX-master: "master"
%%% End:

對應(yīng)主文檔名為master.tex砸狞。如果手動添加上述命令到文檔結(jié)尾捻勉,記得重新打開該文檔,讓上述文件變量生效刀森。

另外踱启,這一步也是RefTex、Forward-Invserse Search等功能在多文件文檔中能正常工作的前提研底。

自動執(zhí)行多步編譯

使用Arara埠偿,在init-auctex中添加

(eval-after-load "tex"
  '(add-to-list 'TeX-command-list
        '("Arara" "arara %s" TeX-run-TeX nil t :help "Run Arara.")))

參見Arara integration in Emacs。然后在需要編譯的主文檔頂部添加需要順序執(zhí)行的指令榜晦。比如

% arara: pdflatex
% arara: bibtex
% arara: pdflatex
% arara: pdflatex
\documentclass {article}
...

配置好后冠蒋,編譯文檔時,鍵入C-c C-c arara即可乾胶。

注:

  1. Arara是Latex的擴展包抖剿,TexLive2014默認集成。
  2. 使用Arara編譯文檔報錯后調(diào)試Bug時胚吁,按<code>C-c `</code>會打開一個名叫 "runscript.tlu"的文件牙躺。千萬別改里面的代碼愁憔。emacs打開這個文件只是為了提示你哪一步出錯了腕扶。如果不小心改了代碼,網(wǎng)上可以湊到源文件吨掌。替換回來即可半抱。

Forward-Inverse Search

寫完長長的一篇Latex文檔,想在預(yù)覽PDF時讓閱讀器自動定位到光標所在的位置膜宋,怎么辦窿侈?預(yù)覽PDF時,發(fā)現(xiàn)某個地方需要修改秋茫,如何在tex文檔中自動定位相關(guān)位置史简?如標題所示,這兩個功能的名字分別叫Forward SearchInverse Search肛著,需要PDF閱讀器的支持圆兵。啟用需兩個步驟。

  1. 開啟同步枢贿。
    參考Forward and Inverse Search殉农。我使用的是synctex方法,需Latex擴展包SyncTeX局荚。
    這一步是為了讓編譯器自動生成一個.synctex.gz文檔超凳,里面包含了PDF和Tex源碼之間位置上的對應(yīng)關(guān)系愈污。

  2. 開啟PDF閱讀器支持。
    我使用的是windows系統(tǒng)下的Sumatra轮傍。參考Sync Emacs AUCTeX with Sumatra PDF暂雹。

總結(jié)下,在init-auctex添加

;; forward and inverse search
(setq TeX-source-correlate-mode t)
(setq TeX-source-correlate-method 'synctex)
(setq TeX-source-correlate-start-server t)

;; use Sumatra PDF to preview pdf
(eval-after-load 'tex
  '(progn
     (assq-delete-all 'output-pdf TeX-view-program-selection)
     (add-to-list 'TeX-view-program-selection '(output-pdf "Sumatra PDF"))
))

注意替換Sumatra安裝路徑金麸。
另外擎析,需要讓Sumatra支持Inverse Search。Sumatra中挥下,Settings->Options揍魂, 在set Set inverse search command line那里添加
c:\emacs\bin\emacsclient.exe" --no-wait +%l "%f
注意替換emacs路徑。

:如果同Arara配合使用棚瘟,需要配套使用{ synctex: on }现斋。參考1.1.2 Arara。比如偎蘸,如果使用pdflatex編譯文檔庄蹋,那么應(yīng)該使用% arara: pdflatex: { synctex: on }。另外迷雪,對于包含子文件的文檔限书,記得設(shè)置主文檔。

RefTex插入引用文獻

以bibtex為例章咧。

默認快捷鍵是C-c [倦西,如果無效,請使用C-h f reftex-citation查閱綁定的快捷鍵赁严。另外扰柠,多文檔文件,記得指定主文檔疼约。也可直接調(diào)用函數(shù)卤档,M-x reftex-citation

第一步是在mini buffer中輸入需檢索的關(guān)鍵詞程剥,如果留空則會返回文獻數(shù)據(jù)庫的全部內(nèi)容劝枣。第二步,emacs會嘗試在右側(cè)新建一個臨時區(qū)域织鲸,名字為RefTex Select舔腾,用以展示檢索結(jié)果。光標自動切換到該區(qū)域后昙沦,除了普通的移動和選擇外琢唾,f還可以繼續(xù)在左側(cè)打開新窗口,瀏覽文獻數(shù)據(jù)庫中的完整信息盾饮,而且兩個窗口會保持同步滾動采桃。

另外懒熙,寫論文時經(jīng)常需要以作者名加年份的方式引用,具體的引用格式稱為Citation Style普办。參考Citation Styles工扎,Latex中有許多包可以自定義格式的引用。假定使用natbib衔蹲,希望以指令citet肢娘、citep的方式引用文獻。如果想借助RefTex自動插入指令舆驶,需要將reftex-cite-format改為natlib橱健。可以參考那篇文章中的操作步驟設(shè)置沙廉。設(shè)置好后拘荡,鍵入C-c [會出現(xiàn)許多新選項。各選項對應(yīng)的效果可以參考Reference sheet for natbib usage撬陵。另外珊皿,latex主文檔中也應(yīng)進行相應(yīng)設(shè)置,參考Natbib In-Text Citation displays (author?)巨税,即在具體調(diào)用bibtex的地方使用\bibliographystyle{plainnat}蟋定。

其實更方便的是手動輸入引用格式的代碼,比如\citep{}草添,然后光標移動到{}中驶兜,鍵入C-c [引用文獻,auctex會智能識別你已經(jīng)寫好了引用的格式果元,而只插入文獻的索引關(guān)鍵詞促王。這點同引用label類似犀盟。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末而晒,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子阅畴,更是在濱河造成了極大的恐慌倡怎,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,978評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件贱枣,死亡現(xiàn)場離奇詭異监署,居然都是意外死亡,警方通過查閱死者的電腦和手機纽哥,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評論 2 384
  • 文/潘曉璐 我一進店門钠乏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人春塌,你說我怎么就攤上這事晓避〈睾矗” “怎么了?”我有些...
    開封第一講書人閱讀 156,623評論 0 345
  • 文/不壞的土叔 我叫張陵俏拱,是天一觀的道長暑塑。 經(jīng)常有香客問我,道長锅必,這世上最難降的妖魔是什么事格? 我笑而不...
    開封第一講書人閱讀 56,324評論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮搞隐,結(jié)果婚禮上驹愚,老公的妹妹穿的比我還像新娘。我一直安慰自己劣纲,他們只是感情好么鹤,可當我...
    茶點故事閱讀 65,390評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著味廊,像睡著了一般蒸甜。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上余佛,一...
    開封第一講書人閱讀 49,741評論 1 289
  • 那天柠新,我揣著相機與錄音,去河邊找鬼辉巡。 笑死恨憎,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的郊楣。 我是一名探鬼主播憔恳,決...
    沈念sama閱讀 38,892評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼净蚤!你這毒婦竟也來了钥组?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,655評論 0 266
  • 序言:老撾萬榮一對情侶失蹤今瀑,失蹤者是張志新(化名)和其女友劉穎程梦,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體橘荠,經(jīng)...
    沈念sama閱讀 44,104評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡屿附,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了哥童。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片挺份。...
    茶點故事閱讀 38,569評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖贮懈,靈堂內(nèi)的尸體忽然破棺而出匀泊,到底是詐尸還是另有隱情影暴,我是刑警寧澤,帶...
    沈念sama閱讀 34,254評論 4 328
  • 正文 年R本政府宣布探赫,位于F島的核電站型宙,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏伦吠。R本人自食惡果不足惜妆兑,卻給世界環(huán)境...
    茶點故事閱讀 39,834評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望毛仪。 院中可真熱鬧搁嗓,春花似錦、人聲如沸箱靴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽衡怀。三九已至棍矛,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間抛杨,已是汗流浹背够委。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留怖现,地道東北人茁帽。 一個月前我還...
    沈念sama閱讀 46,260評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像屈嗤,于是被迫代替她去往敵國和親潘拨。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,446評論 2 348

推薦閱讀更多精彩內(nèi)容