AUCTeX+Emacs 是目前我见过的能最大限度提高 LaTeX 编辑效率的编辑器 (转)

AUCTeX+Emacs 是目前我见过的能最大限度提高 LaTeX 编辑效率的编辑器

效率的提高程度取决于你对 Emacs/lisp 的熟悉程度,但可以说基本上能提高到你所能想象的最大程度了。下面我会就效率方面介绍它的几个特性,不仅与 WinEdt 做对比,同时也和其他 OSX上的某些编辑器做一下对比,
安装和配置网上很多,比如这篇小文档[1],这里就不介绍了。

  1. 强大的快捷键系统 (CDLaTeX)

    就提高编辑效率而言,快捷键是最重要的,同样的内容别的编辑要按10下键盘才能实现你就按5下就实现了,如果熟练的话显然是会快很多的。这里需要对 AUCTeX+Emacs 加上一个强力助推器:CDLaTeX [2]. 有了个这个插件,加上 Emacs 自带的快捷键,就已经能满足大部分人对于快捷键的需求了。

    CDLaTeX 是干什么的呢?最主要的一个功能就是环境的快速输入。比如\begin{equation}... \end{equation}, \begin{itemize} ...\end{itemize}. 每次想输入这些环境的时候,如果一个字母一个字母打完,往往令人捉急,WinEdt 以及其他编辑器的处理方式是(1) 纯快捷键,比如你可以定义 shift+ctrl+e 快捷输入 equation 环境;(2) 或者你输入完了\begin{xxx} 可以自动帮你补全\end{xxx}. 但这些,还是不够快的。CDLaTeX的方案是,输入环境名的前三个字母,比如
    equ,然后点 <tab>,自动完成整个环境,光标放在\begin{equation}后面并给你换好了行,更进一步还可以自动加入智能标签帮你输入好这样的内容:

    \begin{equation}\label{eq:1}
    [光标]
    \end{equation}
    

    注意\label{eq:1}是自动生成的,会帮你自动编号。当然你想改成别的内容也可以。最方便的是,key(比如上面的equ),自动补全的内容,以及自动补完之后的光标位置都可以自定义。你完全可以自定义为最适合你记忆的几个字母,只要不混淆即可。所以这样以来,输入一个环境,最多就需要按3-4次键盘,还不需要刻意去记快捷键 (WinEdt 那种方式难记而且毕竟可定义的快捷键很有限),我没见过还能比这个更方便的。

    除此之外,这种方案也运用在了输入数学公式中,那真是可谓行云流水,输入 fr<tab> 补全\frac{[光标]}{},lr ( <tab> 补全\left( [光标] \right). 这些key几乎都不用记,因为就是个缩写而已,觉得不好记还可以自定义。另外想输入 \tilde{a},只需输入 a`~ 即可,因为 tilde 就是~嘛,输入\bar{a},就是 a`-. 比方说,我要输入 $\tilde{a} \left( \frac{\beta^{\gamma} }{x\times y} \right)$
    这么长的表达式(53个字符),我只要输入,$a`~lr(<tab>fr<tab>`b^`g<tab>x`*y 即可(21个字符), 少了一半多。

    总的来说,几乎所有环境和数学模块的输入,都只需要按4次以内键盘。这将极大提高编辑效率。 大多数的编辑器,比如 TeX Works, TeX Shop, Sublime , vim,TeX Studio, 都没有这么快捷的输入方式。这个是其最大的优势。

    最后,不得不再提一个 CDLaTeX的功能(因为很受用),就是带模式识别的补全,比如在数学模式中,输入"_" / "^"自动补全 "_{}" / "^{}",如果是文本模式就补全 "$_{}$" / "$^{}$" (数学模式里面的文本模式都可以),加上成对符号$ { [ (自动补全,基本上避免了很多粗心造成的错误 (被惯坏了再去用别的编辑器就更加容易犯错了)。你还可以自定义补全哪些符号。

  2. 方便的自动补全 (auto-complete)

    事实上,CDLaTeX 也算某种意义上的自动补全了,但这里说的是关键词(keyword)的自动补全,这个有什么意义呢,这个意义在于 LaTeX 的很多 command 实在是难记,甚至是你自己定义的 command (呵呵)。 这时候 Emacs 的自动补全就派上用场了,他会像 Visuo Studio 一样给出一个下拉菜单 (如下图,虽然很丑),注意菜单里可不只是 LaTeX command 哦,所有你的历史输入都会被记录入词库,并根据使用频率自动改变排序。

    本来这是为写代码服务的,写代码自动补全很常见,但如果写文章也按写代码来招待,这功能就体现出了一个新的优势,你在写论文的时候,输入单词都能自动补全!而且你用的越久,词库越成熟,我现在写论文已经是每个单词就输两三个字母然后回车了。(导致好多单词都忘记了怎么拼写......)。

    当然这个功能也不算什么特色,因为很多别的编辑器也有,比如收费的 texpad, sublime text 2/3 或者免费的 vim, TeXworks。不过这个 auto-complete 跟后面说的 yasnippet 功能结合起来可谓强强联合,事半功倍 [3]。

    (补充:但是比较遗憾的是,自动补全其实 Emacs 比不上 vim 和 Sublime Text,因为后者支持模糊补全,而 Emacs 的 auto-complete 插件对模糊补全支持的很不好)

  3. 完善的引用系统 (RefTeX)

    引用功能对于 latex 编辑器来说也是至关重要的,包括交叉引用和参考文献引用。RefTeX也是一个 Emacs 插件,辅助 AUCTeX 的。当文档较大时,此功能尤为好用。输入 ref 然后<tab>,再输入 e,就可以在所有公式 (equation) 中搜索 label,搜到了直接选中即可,搜索图片就把 e 换成 f。分类管理,层次清晰。对于参考文献,输入 cte 然后<tab>,回车输入关键字就能搜到相应文献,回车就插入了引用。跟 CDLaTeX 类似,插入一个项目的引用只需按5-6次键盘加关键词即可。

    引用功能可谓和 WinEdt 不相上下,WinEdt 里面是输入\cite, \ref 之后自动弹出对话框,然后输入关键字即可查找label或者文献的key。

    (补充:其实 sublime text 3 做的挺好的,而且还支持文献的模糊搜索,这个角度来看其实比 Emacs 做的要好一些。)

  4. 快捷的自定义模板与环境 (Yasnippet)

    snippet 功能像 sublime, vim 也是有的,不过这里介绍的 Yasnippet 配合起自动补全对于 LaTeX 用户来说是非常好用的。我们用 LaTeX 的时候最头疼的往往是想用一个模板 (比如输入一个具有一些特性的表格,或者图片环境),那一堆代码每次都一样但又懒得记,而且代码里面还有很多重复部分也不想多次输入,没问题,Yasnippet 帮你搞定,你完全可以自定义一个 snippet 并绑定一个 key。比如我绑定了一个输入并排子图的 snippet 如下:

    绑定的 key
    是 subfig, 注意我定义每个子图的 label 是 fig:xxx ,其中 xxx 是该图的文件名,所以当我输入 fig:aaaaa 的时候,下面的文件名自动变为 {./figures/aaaaa},不用输入两遍。之后每按一次 tab 光标就转到下一个要输入的地方。另外要知道我们是有自动补全的,来让我数下输入这么个大块模板要按几次键,输入 sub (补全自动亮出来了),回车 (完成 subfig),再<tab>,done!只按了5次键盘,可见两者搭配多么提高效率!当然这只是冰山一角,具体可参见[1]和[3]。

以上这几点基本上是 AUCTeX+Emacs关于提高编辑效率的几个比较明显的优势了,可以看出 AUCTeX+Emacs 基本上综合了众多编辑器的优点。此外像 部分预览,语法高亮自定义这些也很好,但对于提高输入效率并无太大帮助就没有提了。说到语法高亮,根据水木社区这里的说法,

只有 Emacs+AUCTeX 和 WinEdt 的语法高亮比较完整地支持 LaTeX,另外一些编辑器不能识别“环境级”的内容,如 SciTE 只能识别出环境标签。

时间: 2024-12-15 15:59:18

AUCTeX+Emacs 是目前我见过的能最大限度提高 LaTeX 编辑效率的编辑器 (转)的相关文章

Emacs学习心得之 LaTeX编辑(1)

目录 1. 前言 2. texlive的安装 3. AUCTEX的安装和配置 4. RefTEX的安装和配置 一. 前言 本篇博文记录了Emacs下LaTeX编辑环境的搭建,参考一下文章: http://wenku.baidu.com/link?url=4dF67D_Z_zUmb1U_s2ywri4GUOy8PPvyZc0x7NdKJQ-GibHOHJXoFppMshVAb5DQcSHo1WztTCwRM06u-sd-OxcHJci_FoDEBtSdflVVnte (基于Emacs的LaTeX编

打造最高效的科研环境之Emacs插件们

0 盲人摸象 作为初学者,迫切的需求就是直接上手Emacs并打造包含自动补全命令在内的科研环境. 和网上众多的插件安装的教程相比,我认为找到一个与自己需求匹配的Emacs配置环境来得更方便. 本例中,在实测了两个AucTex和CDlatex插件的安装无果之后,转而寻找现成的配置. 比如Github上的这个设计,支持 C/C++ Matlab Markdown/LaTeX Haskell 与我的需求高度重合,克隆一份相应的配置简直是再方便不过了!也省去了一个个安装的麻烦,也无需解决各个依赖关系,对

老菜鸟趣谈:对编程初学者的一些建议

对编程初学者的建议 PS:这篇文章我只在微信公众号和头条网发布了,忘了在博客里发. 我是程序员,我为程序员代言. 现在真的是编程的黄金年代,程序员从来不曾这样供不应求,特别是嵌入式领域. 现在哪怕是银行,也需要几个程序员,负责网站的编写,App编写,数据库管理,服务器管理,安全管理,等等. 所以学会编程你就有福了,真的不是夸张,我到目前还是菜鸟一个,真的越学习越感到自己了解得就如牛顿所说:“我只不过是在海边捡到了几块贝壳的孩子,尚且有些许欢喜,岂知知识的海洋正在眼前”. 也没有一个时代像现在这样

Emacs教程(一)

http://www.cnblogs.com/robertzml/archive/2009/09/10/1564108.html前言的前言:本人也是初学Emacs,之前对Vim也只接触了一点,所以也谈不上对哪个更喜欢,也分不出哪个更好.写这个教程的目的一是方便自己更好的学习Emacs,二是没事找事.如果有专家路过还望多指点. 前言:大名鼎鼎的Emacs,传说中程序员的终极武器,已经跨越了文本编辑器,IDE的境界,可以替代操作系统GUI的东东.怀着一种膜拜的心情我决定开始学习Emacs,期望有一天

一年成为Emacs高手(像神一样使用编辑器)

作者: 陈斌(redguardtoo) 版本号: 20160125 更新时间: <2016-01-25 Mon> 原创时间: <2012-01-31 Tue> 版权: 本文采用以下协议进行授权,自由转载 - 非商用 - 非衍生 - 保持署名 | Creative Commons BY-NC-ND 3.0,转载请注明作者及出处. 简介 成为高手很容易.当初我在Vi阵营,偶尔用Emacs还忘记"退出"的快捷键,一年后我跨入高手行列. 很多文章强调Emacs有多牛,但

Emacs 从入门到精通

1 前言 不想再说废话了,既然你会阅读这篇文档,说明你多少对Emacs有 些兴趣,或者已 经非常熟悉Emacs的基础操作了,并且希望有所提高.因此我不需要再把"编辑器 之神,还是神的编辑器"之类的恶俗话语放出来,来吸引你的好奇心.下面的内容, 从最基础的快捷键操作开始,一直到让你生活在Emacs中.这中间没有跳跃,你只 需要跟着我做,就可以了. 注意 该文档就是用Org生成的,我会把.org源码和html文档一块打包.关于 什么是Org,怎么生成,且看后面的讲解 2 Emacs 基础操

手把手教你学会 Emacs 定制

Table of Contents 1 前言 2 配置Emacs 2.1 设置界面 2.2 全屏以及最大化 2.3 设置周边 2.4 显示时间设置 2.5 设置日历 2.6 设置符合个人的操作习惯 2.7 其它小功能 2.8 绑定键设置 2.9 C/C++/JAVA编程模式 1 前言 说实话,emacs的迷人之处就是具有非常强的自主配置能力,你可以完全根据自己的个人习惯来设置它.就像我在下面罗列的那些lisp代码,你可以 尽情的改变F1,F2..等等键所对应的功能,也可以在编辑C/C++/jav

Emacs for All, All for Emacs

*/--> Emacs for All, All for Emacs Table of Contents 1. How to enable Chinese input in emacs? 2. Is it possible to use version control tools like svn, git, cvs…? 3. How do I make emacs recognize the version-controlled files? 4. How to use latex in em

给树莓派IIraspberrypi安装emacs+ecb+cedet+session+color-theme+cscope+linum

类似这篇文章写的不多,为了避免以后大家转来转去而忽略了写文章的时间,这些特别加上是2014年6月28日,省的对不上一些软件的版本(下文中有些"最新"的说法就对应这个时间).如果转发的时候能够加上我老顾的原文链接就更好了:) 还是在2008~2010年的时候,比较粉Emacs,然后花了很多时间在上面,编程效率的确高了,但是在上面花的时间也不少.2010年底的时候,放弃Emacs,而是选用所有支持emacs key的IDE,比如Eclipse,NetBean,VS等,说到底Emacs的编程