Link here

这里是一个宣传 TeX — 世界上最漂亮,最有趣,最可靠的排版程序的网页。希望通过我的介绍,你能体会到使用 TeX 的快乐感觉,并且成为一个 TeX 的用户和支持者。由于中国 TeX 的普及率还很低,我们必须适当宣传。如果你也情不自禁爱上了 TeX,你希望更多的人从中受益,那么就把 TeX介绍给你的朋友们吧。

不管你怎么到了这里,或者是写论文时被 Word 繁琐的功能弄晕了,想看看这个新鲜东西能否消除你的烦恼?或者你是久闻 TeX 大名,但是不知道这到底是怎么回事?或者你不知道 LaTeX 和 TeX, MikTeX, teTeX 有什么关系?或者你是被我的“公益广告”拉过来的……这一页都是非常有意思的 :)

这页分成了很多小主题,可以叫做一个非技术性的 FAQ. 里面藏着我收集的很多有趣的有关 TeX 的言论,你可以挑你喜欢的看。

TeX 是什么?

TeX 是一个排版系统。用 TeX,你可以把你的文章做成书那种效果。你可以把它打印出来,或者送到出版社投稿。TeX 非常适合写各种学术论文,书籍,幻灯片。“TeX 不是一个用来制造比较漂亮的书籍的程序,而是用来制造最美的书籍的程序。”

TeX 是哪家公司生产的?

TeX 不是一家公司生产的,它主要是由计算机科学家 D.E.Knuth 设计并实现的。在 TeX 的诞生过程中,还包含了千千万万 TeX 用户的建议和要求。TeX 使用的字体包含了许许多多书法家,字体设计家的功劳,其中包括著名的 Hermann Zapf,其实 Knuth 自己也是一个字体设计艺术家。TeX 的宏包,字体,…… 成千上万,是由各个领域的的专家按照自己专业的需要设计的。所以 TeX 是全世界科学家和艺术家集体智慧的结晶。

我们今天主角的名字怎么念啊?”Tecks”?

看看上面右边那位,它就是 TeX。TeX 的名字是由大写的希腊字母组成。在希腊语中这个词的意思是“科技”和“艺术”,这也解释了它的发音。“T”和“E”就像在“technology”中的发音一样,而“X”的发音类似于苏格兰语单词“loch”或德语单词“ach”中的“ch”,也类似于西班牙语中的“j”或俄语中的“kh”。当你对着电脑屏幕读这个单词,你的屏幕就会起雾。

左边那位漂亮女士就是 METAFONT. 她专门为 TeX 制造好看的字体。

LaTeX 怎么发音?

LaTeX 读作:“雷TeX”。嘿嘿。

排版 Word 也可以啊!TeX 跟 Word, WordPerfect 有什么不一样?

Word 和 WordPerfect 是“字处理程序”(word processor),它们是“所见即所得(WYSIWYG)”的,你直接修改字体,颜色,用鼠标画出表格…… 马上就可以看到效果。屏幕上显示出来是什么效果,印出来……基本上就是那个效果。而 TeX 不是,你输入的都是文本文件,需要一个程序(当然就是tex了)处理之后才能得到一个排版后的结果。

那样的话 TeX 还不如 Word 呢!

你认为 WYSIWYG 很好吗?其实还有更好的,TeX 是 “WYTIWYG(所想即所得)”。用 TeX 写论文的时候,你根本不用想着“这个单词使用什么字体呢?”,“这行应该缩进多少呢?”,……这类问题。你能够专注于你的思路,你的作品的逻辑关系,这样才能更好的为你的读者着想,写出比用WYSIWYG更好的作品。用TeX写文章,你想的是“这一段是否应该属于上一节呢?”,“这句话跟我这章的主题符合吗?”,“是否应该开始新的一章呢?”……

你告诉 TeX 的是:“这是一章开始”,“这个单词应该强调”,“这里是一段诗”……而不是告诉它:“这是第3章,应该用黑体三号字,开头有一个‘双S’,……”,“这个单词用斜体楷体小四”,“左右缩进各一英寸,右边不要对齐,换用小一号花体”……

在用 TeX 的时候,TeX 是你的排字工,你是诗人,作家…… 而用字处理程序的时候,你既当作者又当排字工,累不累?

其实你也知道,再好的字处理程序打印出来的效果也跟屏幕上看到的大不一样,而 TeX 生成的 dvi 文件在屏幕上看到是什么样,打印出来绝对就是那个样子,每一个字符的每一笔每一划,……都是一模一样。在某种程度上,TeX 才是“所见即所得”。

TeX,几十年前的东西了,又不更新,早过时了吧?

TeX 确实已经很老了,它在 1982 年以后基本就没有变化过。但是你相信世界上有如此完美的程序吗?它几乎没有bug, 而且你可以在几乎任何计算机上使用它,从PC机到Cray巨型机。经过几十年的风霜,它仍然是文档排版界的 “No.1”, “state-of-the-art”.它的王牌地位明显还将在21世纪继续保持!

TeX 的版本自从1995年3月就保持在 3.14159 没有变化,最近才变成了 3.141592。这说明什么呢?这说明它已经趋于完美。你应该改变所有软件都必需从 0.1, 1.0, 1.1, 1.2, 2.0, …, 3.0, 3.1, 95, 98, 2000, XP, … 不断升级的想法。

TeX 是如此的稳定,几十年前的文档在现在输出效果不会有任何变化,你学习的TeX语法有永远不过时的保证。

虽然TeX程序和语言本身没有再变化,但是TeX是可以在不修改主体的情况下扩展的。TeX的扩展性使得它成为最先支持PDF的系统之一,你可以参考ConTeXt 专栏。基于TeX的各种格式,应用风起云涌,百花齐放。TeX 现在还是 SGML, XML 的后端主力。

虽然你几十年前的文档不加修改是不会变化的,但是你可以任意的选择采用新式的办法处理你的文档。当新的宏包产生的时候,你只要改几个字就可以使你的“古籍”具有当今最流行的效果。比如转化成一个带有超级链接和bookmark的PDF文件!

你不应该随便用形容词的最高级来形容一个东西,我听你说了“最漂亮”,“最美”,甚至“完美”!

通常我们不应该乱用最高级,但是在这种情况下,我可以使用“最漂亮”,“最美”,甚至“完美”来形容 TeX,因为还没有其它程序能够处理如此复杂的内容,得到的效果能够与 TeX 比美!这些问题太复杂,以至于 Microsoft,Quark,甚至 Adobe 都不感兴趣。TeX 是如此不可一世,以至于 TeX 经常成为“宗教战争”的起因。

长江后浪推前浪,将来一定会出现超过 TeX 的程序。它们从 TeX 身上应该能学到很多东西。即使有一天 TeX 不再是最好,但是它的影子还是会在其它程序身上出现。

你这么关心文档的外表干什么?重要的是内容!

正确。重要的是内容。但是如果你编辑你的大作的时候还想着字体该用什么,行间距该多大,…… 你的内容质量是否会受到影响呢?TeX 使你专心于内容,这正符合你的一贯思想啊!而且顺便你就得到了世界一流的美观效果,何乐而不为?

知之者不如好之者,好之者不如乐之者。

Beautiful presentations can greatly deepen our perception of difficult concepts.

看到漂亮的公式,均称的排版,优雅的字体,你体会到美的旋律,行云流水,一气呵成…… 即使最难的概念也会轻松的印到你的大脑里,持久不变!

TeX 完全没有 bug 吗?

不能说完全没有 bug. Knuth 用他自己设计的“文学编程语言”WEB写了TeX的所有代码,到了正式发行的时候,他非常自信的奖励 $1.28 给第一个发现 bug 的人,以后每发现一个 bug, 奖金都会翻倍,最多 $327.68。后来由于加入了对8字节字符的支持,产生了一些小 bug. 从1995年到现在,总共只发现一个 bug. 发现 bug 的周期越来越长,而且后来的 bug 都不是一般的程序问题比如内存啊,文件啊,而是一些在排版界很挑剔的人挑出来的一些“排版学”上的问题了。但是严谨的 Knuth 仍然把它们作为 bug 处理。不过最后一个bug已经被Knuth提前发现了(看下面) :)

Knuth 还奖励 $2.56 给每一个发现他书里错误的人。可是 Knuth 的签名是如此值钱,把支票装在像框里的人比兑现支票的人还多,即使是最大金额的 :P

听说 Knuth 不允许别人改进它的程序?

绝对不是这样!Knuth 不但公开了全部代码,而且欢迎大家利用 TeX 改进成为更加好的排版程序。但是为了保障以前的文档不会失去支持,保证一个稳定的语言的存在,Knuth 要求修改了的程序的名字不能使用 “TeX” 这三个字。这点小小的要求我们应该满足。

现在确实有很多改进的 TeX, 比如 Omega, NTS, … 他们的思想是和 TeX 类似的,用过 TeX 的人用起那些程序也很简单。
TeX 在不断趋近于完美的 $\pi$。TeX 的最后一个 bug 已经被 Knuth 自己发现了, 下面就是 Knuth 提前写下的的“遗嘱”:

The absolutely final change (to be made after my death)
@x module 2
@d banner==’This is TeX, Version 3.14159’ {printed when \TeX\ starts}
@y
@d banner==’This is TeX, Version $\pi$’ {printed when \TeX\ starts}
@z
When this change is made, the corresponding line should be changed in
Volume B, and also on page 23 of The TeXbook.

My last will and testament for TeX is that no further changes be made
under any circumstances. Improved systems should not be called simply
`TeX’; that name, unqualified, should refer only to the program for
which I have taken personal responsibility. – Don Knuth

我还听说 LaTeX 非常好,TeX 比它还好吗?

呵呵,你有个概念没有搞清楚。这两者其实是同一个程序,但是有层次上的不同,TeX 是 LaTeX 的基石,LaTeX 建立在 TeX 之上。如果你想搞清楚他们具体是怎样的关系,可以看看LaTeX+CJK是怎样工作的

其实世界上只有一个TeX程序,它就叫做 “tex”, 它是由计算机科学家 D. E. Knuth 设计并且实现的。TeX 不仅是一个排版程序,而且是一种程序语言。LaTeX 就是用这种语言写成的一个“TeX 宏包”,它扩展了 TeX 的功能,使我们很方便的逻辑的进行创作而不是专心于字体,缩进这些烦人的东西。TeX 还有其它的大型宏包,它们和 LaTeX 一起都被叫做 “format”,现在还有一种常用的format叫做 ConTeXt, 用它能方便的作出极其漂亮的幻灯片,动态屏幕文档…… 我们通常用 TeX 都是在用 LaTeX, ConTeXt, 因为 TeX 的底层需要更多的知识才能了解,一般人不需要自己设计自己的格式。

所以答案是 LaTeX 和 TeX 一样好。

LaTeX2e 是什么?这些东西怎么这么奇怪啊?

LaTeX2e 是 LaTeX 目前的版本。以前的 LaTeX 叫做 LaTeX 2.09. 这就是历史 :) 你现在随便下载一个 TeX 系统,里面带的 LaTeX 都是 LaTeX2e。

LaTeX 建立在 plain TeX 之上吗?

不是。很多人把 plain TeX 认为是最底层的,其实不是这样。plain 和 LaTeX 一样,都是 TeX 的宏包,也叫 format,它们是平等的关系。只不过这个 plain format 实在太简单了,你需要自己定义很多宏才能很好的工作,所以叫做 “plain”。在它们之下就是 TeX,或者明确一点,叫做 “TeX primitive” — 最基本的 TeX 语言。你几乎不想用 TeX primitive 干任何事情,因为即使打出一个很简单的符号,用 TeX primitive 你也需要费很多事。即使最顽固的号称“永远不用 LaTeX” 的底层派,他们也不敢不依赖 plain TeX,因为自己设计一个 format 是很不容易的,你自己看看,最简单的 plain 的宏包都有1200行稀奇古怪的 TeX primitive!

那还有 MikTeX, teTeX, … 呢。它们到底是什么?

Knuth 创造了 TeX 之后,公布了 TeX 程序的源代码。所以任何人都可以在保证不修改那个文件的情况下把它编译成程序,然后跟其它很多程序一起打包发行。这样就有了很多发行版本,比如 Windows 下有 MikTeX,fpTeX, … Linux 和 UNIX 下有 teTeX. 这些简称“发行”。

你知道 Linux 吗?如果知道我就打个比方:TeX 和 MikTeX, teTeX… 的关系,就像 Linux 和 Debian GNU/Linux, Redhat Linux, … 的关系。每一个TeX发行里都包含了 TeX, METAFONT, LaTeX, amsTeX, MetaPost, dvips, pdfTeX, dvipdfm…每一个 Linux 发行都包含Linux内核,bash, gcc, tar, XFree86, …

你能说说 TeX 的效果比Word之类的程序好在哪里吗?

你比较一下一个很有经验的 Word 用户和一个 LaTeX 初学者打出的文档就可以发现:

  • 远远看去,LaTeX 文档格式更加均称,黑白程度均匀,而 Word 文档是黑一块的白一块,字符密度不均匀。
  • 仔细看看,你就知道原因了。 Word 文档里上下两行经常有这种情况,上一行的单词间距很宽,而下面一行却很窄。这在排版学上是非常不好的。相临行的单词间据应该尽量相同。
  • 数学公式。输入的时候就不说了哈,你知道 Word 输入公式有多麻烦。现在看看效果:Word 的公式,该近的不近,该远的不远。很多标点符号都不好看,大一点的括号怎么看也不舒服,你仔细看看那些逗号,省略号吧,非常难看。如果公式插入到段落中,整个段落的行距会有灾难性的效果。而 TeX 的数学公式却是无可挑剔的,而且输入起来很方便,你可以根本不看屏幕,不用鼠标就输入很复杂的公式。

Word 的距离是用户看出来的,然后用鼠标什么的左调右调,可就是怎么也对不齐。TeX 的距离是算出来的,是根据最优的算法,具有数学的美感。TeX 对长度的精确程度可以达到 63 埃!(1埃=10-10米)

TeX 输入数学公式的方式跟 Word 有什么区别?

上面这个公式是一位很熟悉 Word 的数学系的朋友耐着性子仔仔细细帮我用 MS Equation 3.0 输入了,然后转成 PDF 后的效果,他说:“还好,凑合能认出来是什么。”你看别人论文的时候,看到这样的公式,你是什么感觉?

再看看 TeX 输入的同样的公式:

比较一下,真是天壤之别。

TeX 输入的数学公式都是文本。你可以直接用键盘敲入。比如这个漂亮的公式是这样打出来的:

1
$$\sum_{p\rm\;prime}f(p) = \int_{t>1}f(t)d\pi(t).$$

\sum 就是那个求和符号, “_”后面括起来的就是下标,\rm 使后面的 “prime” 用正体显示, \; 是一个空格。\int 就是积分(integrate)符号, \pi 就是那个圆周率符号。很难吗?麻烦吗?好吧,试试用 Word 的公式编辑器怎样打出这个公式,再比较一下效果。

其实有很多符号你在 Word 里就不容易找到了。比如:

用 TeX 就这样输入:

1
2
3
4
$$2\uparrow\uparrow k
\mathrel{\mathop=^{\rm def}}
2^{2^{\cdot^{\cdot^{\cdot^2}}}}
\vbox{\hbox{$\Big\}\scriptstyle k$}\kern0pt}.$$

虽然比一般的公式复杂一点,但是你发现里面的简单的对应关系没有?\uparrow 就是向上的箭头,\mathrel可以构造那个组合的等号,\cdot 就是那些点,我们不断提升上标,最后那个后花括号稍微复杂一些。

上面的公式定义了一种比“天文数字”还吓人的数字。这几乎是很多人一辈子都遇不到的复杂公式了,可是你在一下午就可以学到不止这种程度。对,一下午你就可以学会输入世界上最复杂的公式。比如像下面这个……我也不知道这是什么就打进去了。谁知道这是什么告诉我一声。

TeX 有 Word 那样强大的宏吗?

你认为 Word 的宏很强大了?其实 TeX 的宏强大很多。TeX 本身就是一种宏语言,TeX 的宏才是真正意义上的宏,TeX 的宏是世界上最强大的宏之一。宏(macro)这个单词意味着强大,用TeX的宏你可以定义具有参数的变化的结构,TeX 能够用宏来扩展自己的语法,比如 TeX 其实没有循环语句,但是它可以用宏来实现一个loop循环结构。

TeX 的宏可以写出强大的“宏包”。我们常说的 LaTeX 其实就是一个宏包,这个宏包功能如此之大,我们把它叫做一个 “format”,它几乎完全改变和扩展了 TeX 的能力。

TeX 能像 Word 那样“套用格式”吗?

所谓的“套用格式”在 LaTeX 里叫做使用文档类。这是一种把样式和结构分开的做法。LaTeX 是最早支持这种思想的系统之一。

现在许多的大学 Harvard, UC, Oxford, UIUC… 都有自己用 LaTeX 定义的毕业论文格式。每一个世界性的学术组织 SIAM, ACM, IEEE, AMS, … 都有自己文档格式要求的 LaTeX 风格文件, 其中 AMS(美国数学会)还有专门的 amsTeX, 有专门的字体。作者们有了这些风格文件,可以一瞬间把已经写好的论文转化成投稿需要的格式。真的是一瞬间,你试试在你的文件开头把

1
\documentclass{article}

改成

1
\documentclass[twocolomn]{IEEEtran}

运行 LaTeX,马上就得到一篇可以投到 IEEE transactions,并且满足他们所有的格式要求的文章。
最早的 Word 根本没有这种功能,只是一个简单的可以变化字体的 WYSIWYG, 但是后来人们发现一旦用 Word 写了一些东西,而想把所有的小节标题都换一种字体时,就会需要修改几十,几百,上千个地方,于是 Word 加入了“套用格式”的功能,实现了一定的样式与结构的分离。

后来用户们的要求继续提高,Word 又加入了“宏”,VBScript,…… 但是其实这些功能 TeX 从诞生那一天开始就已经有了,并且具有天生的一致性。TeX 影响到了后来的各种格式系统,包括 HTML4/CSS, … Word 的那些东西也是从 LaTeX 借鉴过来的。

既然有这么好,为什么现在用的人很少呢?

TeX 在中国的普及率确实非常低。如果你周围的人都不知道 TeX,你就可以告诉他们TeX是最好的排版系统。在你的身边是不是有很多人正在用盗版的 Microsoft Word? 没有人否认,Microsoft 的排版工具显然是不如 Quark 的专业排版工具,可是 Quark 的程序遇到 TeX 处理的那种文档,也是无能为力的。

这是用途的不同,而不是质量的问题。TeX 面向的是对美观程度要求很高的用户,TeX 编辑的是有逻辑性结构的文档,需要分章节,有插图编号,…… 所以你不会在一个玩具公司里看到人用 LaTeX。TeX 的用户一般集中在学校和科研机构里。比如,欧洲原子能研究中心(CERN)几百人,全部都是 (La)TeX 用户,而且有专人把设计文档样式作为爱好。这样的气氛很好,大家可以轻轻松松得到样式统一的文档。而且多人合写论文,书籍是非常方便的。

你不应该用贬低 Word 的方式来抬高 TeX。

我知道,TeX 的支持者和 Word 的支持者看到上面的比较可能都会骂我。TeX 的支持者会说:“有没有搞错!你居然把 TeX 跟 Word 比,简直是贬低我们的 TeX。” Word 的支持者当然会更加气愤。

TeX 的效果是最好的,这是不庸质疑的。之所以用 Word 来做个比较,只是因为我身边大部分人用 Word,我找不到更好的程序来和 TeX 比较。我只是用 Word 作为字处理程序和非学术排版程序的一个例子。

其实我没有贬低 Word, 如果你是一个疲于谋生的传销员,要打印一份年度报告,我建议你还是用 Word.

你有可能喜欢用 Word 写论文,但是 Word 和其他字处理程序和非学术性排版程序,明显不适合用来写论文这样复杂的文档,特别不适合用来书写数学性的论文,这一点是无数人的经验教训。Lotus WordPro, Adobe PageMaker 和 QuarkXpress 的排版效果比 Word 好得多,但是它们处理数学公式照样是非常难看的。

因为 Word 这样的程序面向的用户本来就不是理工科大学生,科学家,工程师。它的作者自己也不是数学家,所以没能为数学公式提供很好的处理。如果使用 Word 来编辑含有大量数学公式的论文,造成读者的思路混乱,是作者的失误,是作者强 Word 所难。效果不好不是 Word 的错,Word 并没有宣扬“我编辑论文效果好”,Adobe PageMaker 和 QuarkXpress 甚至根本没有考虑让你用来编辑论文,因为它们的设计者知道,他们的程序不可能有 TeX 的功能。

字处理程序都一无是处了吗?

当然不是,要不然它们哪里来的市场?

理论上来讲,TeX 的功能包含了字处理程序的所有功能。但是 TeX 是为创造最复杂的文档而存在的。如果你的任务不是很复杂而且你已经有字处理程序,它还是能完成一般的任务,比如打印一个贴在墙上的通知,做一个非数学性的幻灯片,写小说,写营业报告,……

TeX 从来没有想把所有字处理程序置于死地,那显然是不可能的。不过一般用过 TeX 的人都会非常喜欢它,以至于他们到后来写什么都可以用 TeX,甚至把它作为一种娱乐方式 :)

我听说 TeX 很难学?

你可能经常听说“LaTeX 很难学”这样的传闻。但是小马,你怎么能听松鼠的话呢?只有用你自己的脚试试才知道这条河有多深!你第一次用TeX之后就知道它有多简单。通常你用的 TeX 叫做 LaTeX,我可以在半个小时之内教会一个人用 LaTeX 写出一篇象样的文档。包括章节,脚注,目录,表格,插图,索引,参考书目…… 如果你能体会到它有多简单,请告诉你的朋友们:“LaTeX 不用学,只要用就行了。”

一般人认为 Word 很容易用。Word 虽然看似很好上手,什么都不用学就可以用了。但是一旦你的文档需要有章节,目录,图表,索引,数学公式……你就需要开始学习它的“高级功能”。当然 Word 是能做出这些东西的。

但是后来,你发现你用Word达到同样的功能需要付出几十倍于TeX的学习时间。Word 不断的在变,不断的在增加 TeX 早就有的功能。而这些功能的用法之间没有统一性,Word 常常需要几个外部程序的合作才能完成某项工作。大部分科学家不能忍受这种麻烦,所以很少有人写论文用 Word.

想一想你从开始用 Word 花了多少时间才弄明白怎么自动生成目录?你的大部分时间全部花在了搞明白“这段字的大小该是多大才能跟第二段的一样大呢?”,“这两行怎么老是对不齐”之类的问题上面了。

实际上用 LaTeX,你能体会到它的那些简单的命令之间有完美的统一性,可以触类旁通。你几乎不用脑子就可以写出漂亮的文档,当然内容不可以不用脑子写啊!剩下的脑子都用来想你的内容吧。

一个澳大利亚国立大学的朋友告诉我:“我们学校几乎没有人不会用 LaTeX, 因为这个东西用起来实在太简单了。不过我们光是会用,它怎么工作的我们完全不明白。” 而且这位朋友是国际贸易专业的,不懂多少电脑,一天到晚就知道玩滑板 :)

听说 LaTeX 插图的时候很麻烦?

谁说的?LaTeX 插图就这么简单:

1
2
3
4
5
\begin{figure}
\includegraphics{tex.eps}
\caption{This is me, \TeX!}
\label{tex}
\end{figure}

这样插入图片后,图片会被自动放在合适美观的地方,自动被加上编号,你可以用

1
请看图\ref{tex}

来引用这个图片。到时候如果图片被编号1,那么你的句子就变成“请看图1”。而且你可以用

1
\listoffigures

得到所有图片的列表,包括编号,注释,页码,插到你的目录里去。如果你的文档使用 hyperref 宏包,还可以在 PDF 文件里生成可以点击的目录。多方便!

LaTeX 在排版程序代码时有什么好处吗?

你只要用几句话设置好 listings 宏包:

1
2
3
4
5
6
7
8
9
10
11
\usepackage{listings}
\lstloadlanguages{C, csh, make}
\lstset{language=C,tabsize=4, keepspaces=true,
breakindent=22pt,
numbers=left,stepnumber=1,numberstyle=\tiny,
basicstyle=\footnotesize,
showspaces=false,
flexiblecolumns=true,
breaklines=true, breakautoindent=true,breakindent=4em,
escapeinside={/*@}{@*/}
}

就可以把你成千上万行的代码都排成下面这个效果。

而且你可以在代码里插入标记,可以在文章里引用这个标记,比如你可以在代码某处插入一个注释。

1
2
3
4
5
/*@\label{code:restart}@*/
int restart_card(.......)>
{
.....
}

这样的注释在排版时会被 LaTeX 去掉。注释的方式是在 \lstset 里定义的,就是上面那个 “escapeinside={/@}{@/}”.

你以后就可以说:“在第\ref{code:restart}行,我们重新启动。”排版时,\ref{code:restart}会被变成正确的行号。以后即使程序改动,行号也会完全正确!

别人的论文投稿时都是 PDF, PS,我用TeX,出版社接受吗?

你有一个很重要的问题没有搞清楚。PDF 和 PS 是 hardcopy 格式, 是 Adobe 公司创造的试图“与纸比美”的文件交换格式,它们是与纸张效果完全一样的。它们是了不起的发明,但是你不能直接编辑出漂亮的 PDF 和 PS 文件,它们都是用其它程序生成的。

虽然在这个年代,TeX 写的文档最后打印的时候大多转换成 PS, PDF,但是 TeX 生成的 dvi 文件不依赖任何 hardcopy 格式。在没有 PS, PDF 的年代,TeX 还是具有高质量的输出。PS 和 PDF 使得 TeX 如虎添翼,TeX 生成的 PDF 比其它程序生成的都要漂亮。你看看这些样例都是PS, PDF, 甚至 DJVU 格式。如果你想把 Word 转成 PDF,你需要Adobe Acrobat完全版,价格是 $249. 你能接受吗?

出版社基本上都可以接受任何 PDF, PS 文件。即使是不能处理 LaTeX 的小出版社,你也可以把你的文件转成 PDF 给他们,其实你甚至可以把 LaTeX 转换成 HTML(latex2html), Word 文档(tex2doc), … 出版社有时要求必须用 LaTeX 的源文件,以便把你的文章插入论文集。所以你用 LaTeX 写文档不会有任何问题,反而有时是必须的。

看看这些大出版机构,每一个都把 LaTeX 的名字放在最前面,有些甚至只接受 (La)TeX.

  • AMS
  • SIAM
  • Elsevier
  • Kluwer Academic Publishers
  • Cambridge University Press
  • Springer
  • Reviews of Modern Physics
  • IEEE
  • 有人说 XML, MathML 要取代 TeX,你信吗?

    XML, MathML, 甚至 ChemML, 它们在本质上是跟 TeX 完全不同的东西。TeX 是排版系统,而 XML 是用来表达数据的方式。

这些标记语言要变成漂亮的可以印在纸上的文档,还得靠 TeX 这样的后端支持。所以 XML 和 TeX 的关系不是对立的,而是朋友关系。

很多人,比如PRAGMA公司正在从事有关XML与TeX的结合的研究。

TeX 能处理汉字吗?

当然能。TeX 是跟语言无关的,也就是说,它可以处理任何人类语言。在 TeX 的眼里没有语言,只有不同大小的“盒子”,这些盒子里装的可以是汉字,也可以是英语,法语,阿拉伯语,西伯来语…… 在 LaTeX 下,你可以用 CJK 宏包方便的编辑汉字文档,经过CJK宏包,汉字就变成跟其它语言一样的东西了—盒子。

虽然如此,但是我听说LaTeX处理汉字不符合中国人的习惯

LaTeX 处理汉字主要依靠的是 CJK 宏包,CJK 的主要任务是实现汉字编码的映射,而不管中文格式的问题,它是由德国学者 Werner Lemberg 设计的。中文排版确实有很多方面跟英语不一样,比如很多人抱怨为什么每一节后面的那一段都不缩进,因为 article 格式是按照英文排版方式。

但是你可以修改这一切,让你的文档都符合你自己设定的同一个样式。这是相当容易的。你也可以拷贝别人的样式定义,这就不用你自己操心样式了。有些出版社还会提供它要求的格式的 LaTeX 格式给你。

TeX 除了编辑论文还能做什么?

TeX 是一个非常多才多艺的程序。它不但可以编辑论文,书籍,幻灯片,学术杂志,还可以编辑乐谱,化学分子图,电路图,国际象棋,中国象棋,甚至围棋棋谱,……事实上只有少量文档不适合用 TeX 编辑。你可以到这里看看样品

TeX 的一个宏包 MusiXTeX 可以做出世界上最漂亮的乐谱。你可以在MusiXTeX的网页找到很多乐谱。

什么东西不适合用 TeX 编辑?

通常不适合直接用 TeX 编辑没有逻辑结构的东西,比如报纸,广告等…… 那些一贯是 Macintosh,Adobe 和 Quark 的天下。这里所谓的“逻辑结构”是说要分很多章节,有插图,交叉引用,参考数目,……

但是可以设计一些 TeX 前端程序来处理这些东西,在漂亮的报纸,杂志背后,说不定还是有 TeX 的功劳。PRAGMA公司就是致力于这种工作的,他们用 TeX 作为后端,甚至可以制造用于儿童教学的图书。

除非你已经在你的论文里用过 TeX, 而且非常喜欢它,否则你可能不想用它来编辑一封写给你妈妈的信。

另外,小说家肯定不需要用 TeX,因为小说全部都是简单的段落,最多分几个章节,没有什么交叉引用,参考书目,而且我猜小说家在写作的时候看到 \begin{enumerate}… \end{enumerate} 肯定会很头疼 :)

我是初学者,你推荐使用什么发行的 TeX? 我应该用 LaTeX 吗?

我认为最好的发行是 TeXLive CD,它不但包含了所有操作系统需要的程序,而且有许许多多宏包,如果你不是特别特殊的用户,有了它你可以完成你的任何任务。而且它直接拷贝到硬盘上就可以用了,甚至可以从光盘运行。

TeX 的中文支持需要中文字体。如果你不喜欢了解太多的细节,可以到 http://www.ctex.org 下载他们配置好立即可用中文的 CTeX 套装。

如果你硬盘很小的话可以安装 CTeX 套装基本版。请看这里

你应该首先学会使用 LaTeX 的基本功能。看lshort这本书自学,大概也就是 90 分钟的时间吧。以后如果你感兴趣就可以看看 The TeXbook, 里面有很多底层的细节。请参考这些资料