2009年10月1日星期四

关于TeX编辑器

TeX有很多编辑器, 我现在用emacs+aucte

使用CTeX默认是winEdt.

下边是来自http://blog.163.com/[email protected]/blog/ 的文章

关于TeX编辑器的详细介绍.

用TeX/LaTeX/ConTeXt处理排版的用户大都有过一个寻找顺手的编辑器软件的过程,本人也不例外。说来可能很多人难以相信,我最早使用的TeX编辑器竟然是DOS版的WPS!

当然今天的情况已经大大的不同了,对TeX用户来讲,困难已经不在找不到合适的编辑器,而在于在众多的编辑器中哪一个才是最好的。这个问题不会有一个终极的答案,因为所谓编辑器的好坏与使用者的习惯有很大的关系。因此在这里谈到的编辑器都是与我个人的经验和兴趣分不开的。

首先需要对编辑器的种类有所界定。界定的标准当然也是人为的,例如可以按操作系统平台来界定、按是否专用于TeX来界定,按编辑器的涉及风格来界定、按编辑器背后采用的技术来界定,等等。这里不想谈哪种界定方式更为科学,只是随意罗列这么几类:

* (近)所见所得的编辑器:包括Mackichan Software Inc的商业软件Scientific Workplace/Notebook/Word系列,其代表作品为workplace (SWP);随BakomaTeX发布的共享软件TeXWord、GNU TeXMacs、LyX以及Micropress的MicroIMP、为残障人士设计的Infty Editor等等。这个单子还可以继续加长,例如共享软件SciWriter也可以列入这一类,不过以本人试用的经验看,这类软件中真正有吸引力的目前只有SWP、LyX和TeXmacs三种。SWP目前可能在国内TeX用户圈中最为著名,这应该感谢mathlabpass多年来在CTeX论坛上所作的普及工作。不过从WYSIWYG的角度,SWP并不是做得最好的,这方面LyX和 TeXmacs都比它强。SWP的真正优势在于集成了计算机代数系统引擎(CAS),使得用户不必懂得背后的CAS的语法就能直接进行代数计算。SWP默认安装并不能支持中文排版,但它与第三方TeX引擎的配合是比较容易配置好的。SWP的缺点当然也很明显:昂贵且只能运行在Windows系统。 TeXmacs和LyX都可以运行在Linux和Windows平台,而且WYSIWYG的功能都很强。TeXmacs的优点在于可以作为许多CAS的前端使用,本人就曾经发布过一个基本的集成软件包TeXmacs-CAS。但是TeXMacs也有几个致命的缺点:一是它的用户界面实在是怪异,和 Windows及标准的Linux GUI界面均有很大差异,用户需要慢慢熟悉它。二是TeXmacs的Windows版好像是昙花一现,目前已经停止开发了。最后TeXmacs并没有在界面上调用TeX引擎生成dvi/pdf输出的功能,且虽然声称支持中文,但本人从未成功使用过。本人在这类软件中最为推崇的是LyX。它是真正免费和跨平台的软件,在WYSIWYG方面最近全面超越了SWP,而且从1.5版开始全面支持Unicode,中文自不在话下。LyX也有一个CAS接口,不过目前功能还比较弱,这是它不及SWP和TeXmacs的地方。

* 基于文本的专用(或主要用于)TeX编辑器:这类编辑器的代表作无疑是WinEdt。虽然几乎同时起步的类似编辑器还有wintex2000、TeXShell等,但WinEdt的光辉使得后者完全被掩盖、埋没了。WinEdt的成功极大地方便了Windows下的TeX用户,以至于无论国内、国外许多初级用户会以为(La)TeX就是WinEdt。个人以为,WinEdt的成功主要在于这么几个方面:强大的工程管理、语法高亮、动态拼写检查以及丰富的可配置用户按钮。经过多年发展,目前此类软件的数量也已经非常丰富,例如 LaTeXEditor (LEd)、TeXmaker、Kile等均属此类,而后起之秀WinShell、VisualTeX有些方面则更突出。从界面设计上看,这些后来的软件都或多或少地受到WinEdt的启发。为什么说WinShell、VisualTeX更为突出呢?因为它们除了具有WinEdt常用的功能外,还支持UTF8编码。长远来看,UTF8应该是中文及其他双字节文字的一个趋势。此外,VisualTeX更是发明了此类编辑器中首创的代码折叠功能,本人基于这个编辑器的源代码改进了其背后的编辑模块Scintilla,结果导致了一大批支持TeX的代码折叠的多用途编辑器,这是后话。从功能的丰富程度来讲,这类编辑器中每一个均堪称精品,不过个人目前更喜欢VisualTeX和TeXmaker。喜欢 TeXmaker的理由是它是跨平台的,而且界面很漂亮。但从功能的角度它还是不如前者的。
* 支持TeX的多功能文本编辑器:原则上任何文本编辑器均可以用来编辑TeX源代码。这里当然不准备罗列所有的文本编辑器。因此选择这类编辑器的标准是:要么支持专门为TeX设计的语法高亮等特殊功能,要么允许用户直接在界面上配置TeX的编译、预览工具。在这样的标准下,我们可以轻易的列举出诸如 Emacs、Vim、UltraEdit、PsPad、Crimson Editor等一大批著名软件。以上每一个软件均有自己庞大的拥趸队伍,故避免在这里对它们评价高下。不过从体积上来讲,Emacs比列在其后的所有软件的总和还大若干倍,因此它的功能的强大似乎并不成为这个软件设计得卓越的一个理由(把其他的软件搞到同样大估计功能也可以覆盖得差不多了吧)。同样应该归结于这一类软件的还有一批基于Scintilla的多功能编辑器,不过由于他们的特殊共性,我准备把这些编辑器单列为一类。

* 基于Scintilla的多功能编辑器:Scintilla是Neil Hodgson设计的一个通用的编辑模块,非常适合用来设计小巧、功能强大的IDE和多功能编辑器。在Scintilla的官方网站上列举了为数众多的基于Scintilla的软件项目,其中不少软件已经获得很大的声誉,例如NotePad++、NotePad2、WinShell等等。WinShell 这个软件前面已经归类于专用的TeX编辑器一类,所以现在不打算多提了。而属于可用于TeX编辑的基于Scintilla的多功能编辑器中本人最喜欢的莫过于Neil本人的SciTE了。其余如NotePad++、Geany、wyoeditor等亦有不错的感觉,且容慢慢道来。

为何独钟情于SciTE?因有以下几个优点:首先是简洁的界面、丰富的自定义功能和强大的扩展性。比起许多流行的编辑器,SciTE的界面实在是比较简陋的。但唯其简陋才使得这个软件运行效率很高,占用资源小,而它的丰富可定义的快捷键和工具菜单恰到好处地弥补了界面简单的缺陷,而且使用习惯后快捷键比起其他软件上杂乱的工具按钮感觉还要方便得多。现在许多编辑器都内置了一些宏命令之类的功能,但和SciTE的Lua Script界面比起来,多有小巫见大巫之感。最近mitchell和mathmhb分别用SciTE内置的Lua Script对SciTE的功能作了极大的扩展,其中有些功能实现起来其容易程度的确令人吃惊。本人也曾对SciTE做过一些扩展,其中部分采用了 Lua,而主要工作还是用C++在源代码水平上进行改进的。至于具体理由,留待稍后解释。在本人发布的MiCTeX中集成的编辑器就是自己改进后的 SciTE,因此可以认为目前我将SciTE推荐为第一可取的编辑器。

NotePad++是另一个令我非常喜欢的编辑器。和SciTE相比,NotePad++增加了项目管理、拼写检查模块以及第三方插件支持等不错的功能,不过它的可配置性虽然不错,但不如SciTE来得方便。也许是本人过于喜欢SciTE以proprties文件来配置各种功能的风格了吧。另外一个让我将 NotePad++排在SciTE后面的理由是毕竟它不是Scintilla官方的编辑器,因此Scintilla的一些新增特色功能总要推迟一段时间才能在NotePad++中体现。当然,这要除了TeX的代码折叠功能之外。NotePad++的TeX代码折叠功能是本人写就的,最初没有被 Scintilla官方采纳,而NotePad++的作者Don先采纳了,因此官方的NotePad++比官方的SciTE更早支持了TeX代码折叠。不过目前Scintilla已经接受了本人写的TeX折叠代码,今后NotePad++只要从官方的Scintilla中获取新版的TeX代码折叠程序就好了。

Genay是我最近发现的一个基于Scintilla的IDE程序,其支持的语言与Scinilla覆盖的语言种类大体一致,其中自然也包括TeX。对这个软件本人使用经验不多,不作更多评价,但对它的项目管理功能印象深刻,感觉是所知道的基于Scintilla的软件中设计最好的。非常希望有一天能把 Geany的项目管理部分移转到SciTE中去。如果这样SciTE就更完美了。其他基于Scintilla的编辑器暂不作评论了。

没有评论:

发表评论