欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

emacs & auctex 博客分类: 编辑器 emacs

程序员文章站 2024-03-21 10:38:40
...
首先需要 安装 texlive
下载texlive
http://www.tug.org/texlive/

windows8 图文安装 教程
http://www.dante.de/tex/tl-install-windows/installation-einfach.html

下载pdf阅读器
http://blog.kowalczyk.info/software/sumatrapdf/downloadafter.html


下载 auctex
http://www.gnu.org/software/auctex/download-for-windows.html

auctex 简介

为何选用 auctex?

TeX 的编辑器很丰富,有跨平台的 TeXworks,Kile 以及 vim 的
LaTeX-suite 插件。选用 emacs+auctex 作为 tex 的编辑器与之相不还是有太
多的优点。

块平台 auctex 作为 emacs 的插件,自然可以实现跨平台,只是由于外部工具
的限制在 windows 实在有诸般限制。
半 'WYSIWYG' TeX 的工作方式为 WYTIWYG,但是其搭配 emacs,auctex 可以对
tex文件进行分析,并且提供一部分的可视化特性,例如可以以粗体显示章节目
录,以斜体表示 \textit{} 中的文本。另外配合 preview 组件,还可以显
示 tex 文件中的公式和图片。
拓展性 auctex 是完全是 elisp 实现的,如果你觉得 auctex 不能很好的按照
你预想的方式工作或是觉得 auctex 功能还是不够强大,你可以用 elisp 轻松
的拓展其功能,当然这需要一定的 elisp 功力。


安装

安装条件

在 unix-like 上的手动安装比较方便,只需要 "./configure && make && make
install" 即可。

windows 下的安装

需要单独说明下 auctex 在 windows 下的配置,windows 下建议使用官方提供的
预编译版本,如现在的版本为 "auctex-11.86-e23.1-msw.zip"。如果喜欢折腾自
己的话,也可以选择在 windows 编译安装 auctex,但是除了满足之前叙述的安装
前提外,你还需要一个可以工作的 shell,现在只有 MSYS 和 Cygwin 可
供选择。最后还是再建议使用预编译的版本,更加建议你在 unix 下使用 emacs 和 TeX,可以免去太多的被折腾。

加载 auctex

首先你需要把 auctex 加入到 load-path 中,然后加载 auctex 即可。
如把 auctex 的预编译安装包解压至 "~/.emacs.d/auctex" 路径,相应的配置如
下,其他的目录也可以相应修改。

(add-to-list 'load-path
             "~/.emacs.d/lisps/auctex/site-lisp/site-start.d")
(load "auctex.el" nil t t)
(load "preview-latex.el" nil t t)
(if (string-equal system-type "windows-nt")
    (require 'tex-mik))
复制代码
另外,如果 emacs 是运行在多需折腾的 windows 平台上,系统会加载 "tex-mik"
文件,这可以提供很多在 windows 上方便的设置。

快速开始

LaTeX 设置

通常情况下,编译 tex 文件选用的多是 LaTeX,plainTeX 和 conTeXt 相对使用
要少一些。因此本文默认只涉及对 LaTeX 模式相关的设置。

为了使用 auctex 方便,为 LaTeX 模式 hook 自动换行,数学公式,reftex 和显
示行号的功能。

(mapc (lambda (mode)
      (add-hook 'LaTeX-mode-hook mode))
      (list 'auto-fill-mode
            'LaTeX-math-mode
            'turn-on-reftex
            'linum-mode))
复制代码
现在 TeX 对于中文的处理基本有两种方案,CJK 宏包和 xetex。如果使用 CJK 宏
包需要对字体进行配置,这也是大部分面对 TeX 最折腾的地方。相比 CJK 宏包,
xetex 要方便的多。本文也建议你设置 'TeX-engine' 变量为 xetex 替代 latex
作为 tex 文件的默认排版引擎。

在 LaTeX mode 中,默认开启 PDF mode,即默认使用 xelatex 直接生成 pdf 文
件,而不用每次用 'C-c C-t C-p' 进行切换。设置 'Tex-show-compilation' 为
t,在另一个窗口显示编译信息,对于错误的排除很方便。另外,编译时默认直接
保存文件,绑定补全符号到 TAB 键。


(add-hook 'LaTeX-mode-hook
          (lambda ()
            (setq TeX-auto-untabify t     ; remove all tabs before saving
                  TeX-engine 'xetex       ; use xelatex default
                  TeX-show-compilation t) ; display compilation windows
            (TeX-global-PDF-mode t)       ; PDF mode enable, not plain
            (setq TeX-save-query nil)
            (imenu-add-menubar-index)
            (define-key LaTeX-mode-map (kbd "TAB") 'TeX-complete-symbol)))
复制代码
快速插入

在 tex 文档中,为了结构化的需要,经常会需要插入 '\chapter', '\section',
'\subsection' 命令。在 auctex 中,这些命令都可以通过 'C-c C-s' 一站式完
成,你只需要告诉 auctex 你所需要插入章节层次(section level),然后告诉
auctex 相应章节的标题,如果需要,你也可以添加相应的标签(可选)。

类似的,在 tex 文档中,必不可少的 '\begin{document}' 与 '\end{document},
以及众多的类似的各种各样的环境,自己在编辑 tex 文档时,经常会遗忘去匹配
相应的环境,然后在编译时候要花费时间去修改。于 auctex 里你只需要键入
'C-c C-e' 然后告诉 auctex 你所希望插入文档的环境,例如你键入了 'math',
auctex 会悉心的插入数学环境 '\begin{math}' 与 '\end{math}'。

auctex 还提供了 'C-c C-m' 快捷键供方便地插入宏命令,在大多数情况下
auxtex 都可以理解相应宏命令的参数个数并提示你一一输入。

在使用这些快捷键时,你可以使用 TAB 自动补全,或是使用 'M-p' 与 'M-n'浏览
命令历史记录,也可以使用上下快捷键,但是相信众 emacs 党应该还是键盘流多,
会更习惯前者。

此处涉及的相关快捷键如下:

C-c C-s  插入章节

C-c C-e  插入 LaTex 环境

C-c C-j  插入列表 item

C-c ]  闭合 LaTeX 环境

C-c C-m  插入 Tex 宏

快速更改字体

auctex 也提供了一系列方便的快捷键用以方便的插入指定应该文本如何格式化的命
令,这系列命令一致以 'C-c C-f' 为前缀,以 'C- ' 结尾告诉 auctex 你具体需
要如何排版文本。

C-c C-f C-b  插入粗体文本

C-c C-f C-i  插入斜体文本

C-c C-f C-e  插入强调文本

C-c C-f C-s  插入微斜体文本

C-c C-f C-r  插入罗马体文本

C-c C-f C-f  插入无衬线体文本

C-c C-f C-t  插入打印机体字体

C-c C-f C-c  插入小型大写文本

C-c C-f C-d  删除字体信息

默认情况下,输入以上的快捷键时,会假定插入新的相应格式化文本,如果你希望
更改已存在文本的话,需要先设定区域,然后再使用这些快捷键。

一站式的编译、查看、打印服务

如果你已经完成了 tex 文档的编写想查看排版后输出的 pdf,试着输入 'C-c C-c'
auctex 会询问你想调用那项命令,在大多数情形中,auctex 所建议给出的命令往
往可以符合你的需要。例如,你刚刚完成对文档的修改,此时 auctex 所给出的建
议命令为 'latex',即建议你重新编译文档,而如果你已经完成对最新文档的编译,
auctex 会建议你查看最新的 pdf,而不是再次对文档进行编译。(如果需要更新文
档的交叉索引信息,可能需要多次的编译)

如果 auctex 给出的建议命令不合适,你可以键入 TAB 查看当前可用的命令,然
后再指定 auctex 运行相应的合适命令。

在对于自定义查看文档命令的设置中,不推荐使用原来的
'TeX-output-view-style',而更推荐灵活性更强的 'TeX-view-program-list'与
"TeX-view-program-selection"。'TeX-output-view-style' 是直接绑定指定类型
与相应的 viewer,而对于后者,在不同系统平台之间你需要定义阅读器,并且对于
不同的类型灵活绑定。

'TeX-view-program-list' 控制 Auctex 预定义的 viewer,包括符号名与具体定
义所调用的命令或函数,预定义为 'TeX-view-program-list-builtin' 的内容,
有兴趣可以查看一下该变量的内容。如果需要自定义,如在 windows 平台上,可
能会定义 SumatraPDF 查看 pdf 文档,而把相应的符号名记为 SumatraPDF,那就
可以使用如下的命令去定义。

(setq TeX-view-program-list
      '(("SumatraPDF "SumatraPDF.exe %o")))
复制代码
当然仅仅只是定义了符号名,而对于该符号名所对应的具体 viewer 在该平台是否
可用,是需要使用者自己去选择控制的。更通用而言,你可能需要同时使用
Linux 与 Windows 系统,那你需要分别定义其上平台的 viewer,如下的设置中就
分别定义了 SumatraPDF, Gsview 用于 Windows 平台,Okular, Evince, Firefox
用于Linux 平台。

(setq TeX-view-program-list
      '(("SumatraPDF" "SumatraPDF.exe %o")
        ("Gsview" "gsview32.exe %o")
        ("Okular" "okular --unique %o")
        ("Evince" "evince %o")
        ("Firefox" "firefox %o")))
复制代码
对于如上的示例而言,在 Windows 平台上绑定 SumatraPDF 为 pdf viewer,
Miktex 的组件 Yap 为 dvi viewer,而在 Linux 平台上,或许需要 Okular 作为
pdf 与 dvi 的 viewer。当然对于 Gnomer 而言,Evince 应该是比 Okular 更好
的选择。

PS:

对于 windows 平台而言,需要确保命令在 PATH 路径下,如果没有在 PATH
路径下,请使用路径全名进行调用。
由于自己没有 MacOsX 平台使用经验,所以没有对此作相关的 viewer 设置
如果有需要,也可以自己设置。


在设置好了 viewer 之后,就需要在不同类型的文件类型与相应的 viewer 之间进
行绑定。'TeX-view-program-selection' 变量用于指定如何用 viewer 查看指定
类型的文件。

(cond
((eq system-type 'windows-nt)
  (add-hook 'LaTeX-mode-hook
            (lambda ()
              (setq TeX-view-program-selection '((output-pdf "SumatraPDF")
                                                 (output-dvi "Yap"))))))

((eq system-type 'gnu/linux)
  (add-hook 'LaTeX-mode-hook
            (lambda ()
              (setq TeX-view-program-selection '((output-pdf "Okular")
                                                 (output-dvi "Okular")))))))
复制代码
可以看出,使用后者绑定 viewer 与指定类型相对要更灵活的多,而 Auctex 手册
也推荐此种方式,而且感觉可读性也更好。而在以后的版本中,可能会移除
'TeX-output-view-style' 变量。

进阶使用

编译片段文件

编译片段文件是个很实用的功能,如果你的文档很庞大,但是你只是需要看一下最近
编辑修改过的片段,这时就很有用。

用快捷键设置好一个片段(region),然后按下 'C-c C-r' 编译文件,然后再按
'C-c C-r' 就可以查看片段编译后的文件了。

编译片段文件的过程中,auctex 先首先生成 _region_.tex 文件,然后再依次
进行编译和查看的操作,当然你也可以设置 'TeX-region' 控制生成的文件名。而
为了生成 _region_.tex 文件,auctex 需要知道那些是文档开始需要的内容(例
如文档类,载入的宏包和自定义信息),那些是文档结束的内容。在 auctex 中,
这两者是由变量'TeX-header-end' 与 'TeX-trailer-start' 控制的。前者在
LaTeX mode 中默认为 '\begin{document},而后者默认为\end{document},因此
auctex 会截取文件开始到 'TeX-header-end' 的内容和片段内容以及
'TeX-trailer-start' 的内容组成 _region_.tex 文件。也可以简单的理解成
auctex 把原来文件的文档内容替换成了片段内容的过程。

此外,设置好 region,按 'C-c C-t C-r' 可以固定一个 "region",即使光标
位置改变,设定的将要部分编译的"region"也不会改变,可以随时修改
"region"中的内容,再按 'C-c C-t C-r' 取消该"region"。

转自http://bbs.ctex.org/forum.php?mod=viewthread&tid=60050
相关标签: emacs