如何使用 Emacs 建立 LaTeX 文件

2018-11-24 10:52:00

這篇教學將帶你遍歷在 Emacs 使用強大的開源排版系統 LaTex 來建立文件的全過程。

一篇由 Aaron Cocker 寫的很棒的文章 “在 LaTeX 中建立檔案的介紹” 中,介紹了 LaTeX 排版系統 並描述了如何使用 TeXstudio 來建立 LaTeX 文件。同時,他也列舉了一些很多使用者覺得建立 LaTeX 文件很方便的編輯器。

Greg Pittman 對這篇文章的評論吸引了我:“當你第一次開始使用 LaTeX 時,他似乎是個很差勁的排版……” 事實也確實如此。LaTeX 包含了多種排版字型和偵錯,如果你漏了一個特殊的字元比如說感嘆號,這會讓很多使用者感到沮喪,尤其是新手。在本文中,我將介紹如何使用 GNU Emacs 來建立 LaTeX 文件。

建立你的第一個文件

啟動 Emacs:

emacs -q --no-splash helloworld.org

引數 -q 確保 Emacs 不會載入其他的初始化設定。引數 --no-splash-screen 防止 Emacs 開啟多個視窗,確保只開啟一個視窗,最後的引數 helloworld.org 表示你要建立的檔名為 helloworld.org

Emacs startup screen

GNU Emacs 開啟檔名為 helloworld.org 的視窗時的樣子。

現在讓我們用 Emacs 新增一些 LaTeX 的標題吧:在選單欄找到 “Org” 選項並選擇 “Export/Publish”。

template_flow.png

匯入一個預設的模板

在下一個視窗中,Emacs 同時提供了匯入和匯出一個模板。輸入 #(“[#] Insert template”)來匯入一個模板。這將會使游標跳轉到一個帶有 “Options category:” 提示的 mini-buffer 中。第一次你可能不知道這個型別的名字,但是你可以使用 Tab 鍵來檢視所有的補全。輸入 “default” 然後按回車,之後你就能看到如下的內容被插入了:

#+TITLE: helloworld#+DATE: <2018-03-12 Mon>#+AUTHOR:#+EMAIL: makerpm@nubia#+OPTIONS: ':nil *:t -:t ::t <:t H:3 \n:nil ^:t arch:headline#+OPTIONS: author:t c:nil creator:comment d:(not "LOGBOOK") date:t#+OPTIONS: e:t email:nil f:t inline:t num:t p:nil pri:nil stat:t#+OPTIONS: tags:t tasks:t tex:t timestamp:t toc:t todo:t |:t#+CREATOR: Emacs 25.3.1 (Org mode 8.2.10)#+DESCRIPTION:#+EXCLUDE_TAGS: noexport#+KEYWORDS:#+LANGUAGE: en#+SELECT_TAGS: export

根據自己的需求修改標題、日期、作者和 email。我自己的話是下面這樣的:

#+TITLE: Hello World! My first LaTeX document#+DATE: \today#+AUTHOR: Sachin Patil#+EMAIL: [email protected]

我們目前還不想建立一個目錄,所以要將 toc 的值由 t 改為 nil,具體如下:

#+OPTIONS: tags:t tasks:t tex:t timestamp:t toc:nil todo:t |:t

現在讓我們新增一個章節和段落吧。章節是由一個星號(*)開頭。我們從 Aaron 的貼子(來自 Lipsum Lorem Ipsum 生成器)複製一些文字過來:

* Introduction  \paragraph{}  Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras lorem  nisi, tincidunt tempus sem nec, elementum feugiat ipsum. Nulla in  diam libero. Nunc tristique ex a nibh egestas sollicitudin.  \paragraph{}  Mauris efficitur vitae ex id egestas. Vestibulum ligula felis,  pulvinar a posuere id, luctus vitae leo. Sed ac imperdiet orci, non  elementum leo. Nullam molestie congue placerat. Phasellus tempor et  libero maximus commodo.

helloworld_file.png

helloworld.org 檔案

將內容修改好後,我們要把它匯出為 PDF 格式。再次在 “Org” 的選單選項中選擇 “Export/Publish”,但是這次,要輸入 l(“export to LaTeX”),緊跟著輸入 o(“as PDF file and open”)。這次操作不止會開啟 PDF 檔案讓你瀏覽,同時也會將檔案儲存為 helloworld.pdf,並儲存在與 helloworld.org 的同一個目錄下。

org_to_pdf.png

將 helloworld.org 匯出為 helloworld.pdf

org_and_pdf_file.png

開啟 helloworld.pdf 檔案

你也可以按下 Alt + x 鍵,然後輸入 org-latex-export-to-pdf 來將 org 檔案匯出為 PDF 檔案。可以使用 Tab 鍵來自動補全命令。

Emacs 也會建立 helloworld.tex 檔案來讓你控制具體的內容。

org_tex_pdf.png

Emacs 在三個不同的視窗中分別開啟 LaTeX,org 和 PDF 文件。

你可以使用命令來將 .tex 檔案轉換為 .pdf 檔案:

pdflatex helloworld.tex

你也可以將 .org 檔案輸出為 HTML 或是一個簡單的文字格式的檔案。我最喜歡 .org 檔案的原因是他們可以被推播到 GitHub 上,然後同 markdown 一樣被渲染。

建立一個 LaTeX 的 Beamer 簡報

現在讓我們更進一步,通過少量的修改上面的文件來建立一個 LaTeX Beamer 簡報,如下所示:

#+TITLE: LaTeX Beamer presentation#+DATE: \today#+AUTHOR: Sachin Patil#+EMAIL: [email protected]#+OPTIONS: ':nil *:t -:t ::t <:t H:3 \n:nil ^:t arch:headline#+OPTIONS: author:t c:nil creator:comment d:(not "LOGBOOK") date:t#+OPTIONS: e:t email:nil f:t inline:t num:t p:nil pri:nil stat:t#+OPTIONS: tags:t tasks:t tex:t timestamp:t toc:nil todo:t |:t#+CREATOR: Emacs 25.3.1 (Org mode 8.2.10)#+DESCRIPTION:#+EXCLUDE_TAGS: noexport#+KEYWORDS:#+LANGUAGE: en#+SELECT_TAGS: export#+LATEX_CLASS: beamer#+BEAMER_THEME: Frankfurt#+BEAMER_INNER_THEME: rounded* Introduction*** Programming    - Python    - Ruby*** Paragraph one    Lorem ipsum dolor sit amet, consectetur adipiscing    elit. Cras lorem nisi, tincidunt tempus sem nec, elementum feugiat    ipsum. Nulla in diam libero. Nunc tristique ex a nibh egestas    sollicitudin.*** Paragraph two    Mauris efficitur vitae ex id egestas. Vestibulum    ligula felis, pulvinar a posuere id, luctus vitae leo. Sed ac    imperdiet orci, non elementum leo. Nullam molestie congue    placerat. Phasellus tempor et libero maximus commodo.* Thanks*** Links    - Link one    - Link two

我們給標題增加了三行:

#+LATEX_CLASS: beamer#+BEAMER_THEME: Frankfurt#+BEAMER_INNER_THEME: rounded

匯出為 PDF,按下 Alt + x 鍵後輸入 org-beamer-export-to-pdf

latex_beamer_presentation.png

用 Emacs 和 Org 模式建立的 Latex Beamer 簡報

希望你會愛上使用 Emacs 來建立 LaTex 和 Beamer 文件(注意:使用快捷鍵比用滑鼠更快些)。Emacs 的 Org 模式提供了比我在這篇文章中說的更多的功能,你可以在 orgmode.org 獲取更多的資訊.