Skip to content

Latest commit

 

History

History
145 lines (100 loc) · 7.13 KB

write-latex-math-in-emacs.org

File metadata and controls

145 lines (100 loc) · 7.13 KB

使用 Emacs 来编写 LaTeX 数学文档

声明 本文是介绍如何使用 Emacs 来写作 LaTeX 数学文档的文章,至于到底该使用哪个编辑器来写作 LaTeX 文档这样的问题,与本文无关,不在本文考虑范围。

本文介绍使用 Emacs 配合相关插件来编写 LaTeX 文档(偏向数学文档),并作出一份相关的最小化配置,主要内容如下:

  1. Emacs 基础.
    • Emacs 安装.
    • 基本使用.
    • 插件的安装方法.
  2. LaTeX 相关插件的安装与配置.
    • auctex 的安装及配置.
    • company-auctex 的安装及配置.
    • cdlatex 的安装及配置.

有一个内容被略去,即 LaTeX 环境的安装,这一点不在本文介绍范围,请自行网上搜索。

Emacs 基础

Emacs 是一个通用的文本编辑器,其本质上是一个 Emacs Lisp 语言(简称 elisp)的解释器和编程平台, elisp 是一个 lisp 系的编程语言。通过用 elisp 编写实现各种功能的程序(插件),可以无限的扩展 Emacs 的功能。

安装 Emacs

[待完成]

Emacs 基本使用

无论如何, Emacs 自带的教程必须通读两遍,安装后打开编辑器,界面上就有这个教程的链接(Emacs Tutorial),其中介绍了基本的使用。

Emacs 的配置

Emacs 可以通过其自带的编程语言 Emacs Lisp 进行无限制扩展,这些用于扩展 Emacs 功能的程序代码就称为配置,也正因为如此, Emacs 的配置可以简单到没有配置,也可以复杂到拥有几十万个代码文件,甚至比 Emacs 本身还更复杂的配置。

关于 HOME 路径.

Emacs 的配置文件必须放在指定路径才能被正确加载,这就是 HOME 路径,在类 unix 系统上就是用户的主目录,在 windows 上根据系统版本的不同而不同,在 windows 2000/XP/2003 上是 C:\Documents and Settings\<username>\Application Data ,在 windows vista/7/2008/8/10 上则是 C:\Users\<username>\AppData\Roaming ,其它版本系统请查阅 Emacs 官方文档的介绍。

两种配置方式

如果配置内容不多,可以只写一个文件在 HOME 路径下,这个文件必须被命名为 .emacs 注意前面的点号,在 windows 系统中则是 _emacs ,因为 windows 文件名不允许以点号开头。

如果配置内容比较多,则可以在 HOME 下创建名为 .emacs.d 的目录(windows 下不能直接在图形界面中创建点号开头的文件夹,但可以在命令行创建,也可以通过启动一次 Emacs 的方式自动创建),并在此目录下创建文件 init.el 作为配置的入口文件(名称必须是这个)。

配置的模块化.

插件的安装方法

Emacs 有大量的插件包(称为 package)可供下载和安装,这些插件实现了各种各样的额外功能,每一个 package 都是一个独立的 Emacs Lisp 程序,而且通常还有独立的手册或者文档。按下 M-x list-packages 后会在一个名为 *Packages* 的缓冲区中列出所有的 package ,可以在此缓冲区中安装和删除 package.

./pic/list-packages.png

如果已经知道一个 package 的名字,则可以 C-h P 后输入这个名字,回车后会在一个名为 *Help* 的缓冲区中显示这个 package 的描述信息。

安装 package 的方式有两种,一种是手工安装,一种是自动安装,当然这都指的是通过 Emacs 内置的 package 工具来安装,除此之外还可以手工下载后自行加载 package ,这是后话。

手工安装一个 package 的方法是,在 *Packages* 缓冲区中,将光标移动到要安装的 package 上,按下 i 标记它,可以一次性标记多个 package ,标记完成后按下 xEmacs 就开始执行下载安装的动作,默认的安装目录是 ~/.emacs.d/elpa/.

默认情况下, Emacs 会从官方维护和插件仓库中下载插件,可以通过配置第三方插件仓库来改变这一点,这一点是有用的,因为默认的官方仓库都在国外,速度通常比较慢,网友”子龙山人”在国内利用阿里的服务器搭建了主要的官方仓库的国内镜像,详情见 https://elpa.emacs-china.org/, 按上面的说明,我们把默认的插件仓库切换到 emacs-china 上的仓库镜像,把以下代码加到配置文件中。

(setq package-archives '(("gnu"   . "http://elpa.emacs-china.org/gnu/")
                         ("melpa" . "http://elpa.emacs-china.org/melpa/")))

LaTeX 相关插件的安装及配置

auctex 的安装及配置

完整代码如下(lisp/init-auctex.el)

;; 如果 auctex 未安装,则进行安装
(install-package-if-not-found 'auctex)

;; 加载 auctex.el 文件
(load "auctex.el" nil t t)

;; 如果需要预览 latex,则去掉下面这行前面的注释
;;(load "preview-latex.el" nil t t)

;; 如果是 windows 系统,则需要 MikTeX.
(if (string-equal system-type "windows-nt")
  (require 'tex-mik))
  
;; 默认情况下,编译的时候总是假定正在编译的 tex 文件为主文件,如果去掉下面这行的注释,
;; 则在每次编译时都会询问哪一个 tex 文件是主文件。
(setq-default TeX-master nil) ; Query for master file.

;; 定义 LaTeX 模式在哪些环境下启用
(mapc (lambda (mode)
	(add-hook 'LaTeX-mode-hook mode))
      (list 'LaTeX-math-mode
            'turn-on-reftex))

;; 作 LaTeX 相关设定
(add-hook 'LaTeX-mode-hook
          (lambda ()
            (setq TeX-auto-untabify t     ; 在保存的时候自动去掉的 TAB 空白
                  TeX-engine 'xetex       ; 默认使用 XeLaTeX 编译引擎
                  TeX-show-compilation t) ; 显示编译输出窗口
            (TeX-global-PDF-mode t)       ; 启用 PDF 模式
            (setq TeX-save-query nil)
            (imenu-add-menubar-index)
            (define-key LaTeX-mode-map (kbd "TAB") 'TeX-complete-symbol)))

(provide 'init-auctex)

company-auctex 的安装及配置

完整代码如下(lisp/init-company-auctex.el)

;; 如果没有安装 company-auctex,则进行安装
(install-package-if-not-found 'company-auctex)

;; 加载 company-auctex 并初始化
(use-package company-auctex
  :config
  (company-auctex-init))

(provide 'init-company-auctex)

cdlatex 的安装及配置

完整代码(lisp/init-cdlatex.el)

;; 如果 cdlatex 没有安装,则进行安装
(install-package-if-not-found 'cdlatex)

;; 在 LaTeX 模式被启用时,启用 cdlatex
(use-package cdlatex
  :config
  (add-hook 'org-mode-hook 'turn-on-org-cdlatex)
  (add-hook 'LaTeX-mode-hook 'turn-on-cdlatex))
  
;; 提供 init-cdlatex 特性.
(provide 'init-cdlatex)

相关链接