Board 版 (精华区)

发信人: TeX (把TeX进行到底), 信区: NewBoard
标  题: [范文] TeX 版-- TeX: Beauty and Fun (3)
发信站: 哈工大紫丁香 (Thu Mar 24 22:26:01 2005), 转信

  17. TeX 完全没有 bug 吗?

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


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

      TeX 确实已经很老了,它在 1982 年以后基本就没有变化过。但是你要相信 TeX 是一个 masterpiece。它几乎没有bug, 而且你可以在几乎任何计算机上使用它,从PC机到Cray巨型机。经过几十年的风霜,它仍然是 "state-of-the-art". TeX 是如此的稳定,几十年前的文档在现在输出效果不会有任何变化。虽然TeX程序和语言本身没有再变化,但是TeX是可以在不修改主程序的情况下扩展的。Knuth 在那个年代就想到了程序的扩展性,展现了卓越的远见。


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

      不是这样。Knuth 不但公开了全部代码,而且欢迎大家利用 TeX 改进成为更加好的排版程序。但是为了保障以前的文档不会失去支持,保证一个稳定的语言的存在,也许也是为了满足自己对完美的追求,Knuth 设计了一个测试,只有通过测试的程序才能使用 "TeX" 这三个字作为名字。所有对 TeX 有重大改进(或者退步)的程序都不能使用这个名字。

      现在确实有很多改进的 TeX, 比如 Omega, NTS, ... 他们的思想是和 TeX 类似的,用过 TeX 的人用起那些程序也很容易。


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

      TeX 面向的是对美观程度要求很高的用户,TeX 编辑的是有逻辑性结构的文档,需要分章节,有插图编号,…… 所以你不会看到有人用 TeX 记流水帐,一般的画报也不会用 TeX。

      TeX 用户的多少跟你所处的环境有关系。TeX 是最好的学术排版系统,它的用户基本上都是科学家和工程师,也就是最会偷懒的的那种人。用户的数目虽然少,但是很稳定。 TeX 的用户一般集中在大学和科研机构里。比如,欧洲原子能研究中心(CERN)几百人都是 (La)TeX 用户,而且有专人把设计文档样式作为爱好。这样的气氛很好,大家可以轻轻松松得到样式统一的文档。而且多人合写论文,书籍是非常方便的。


  21. 我听说 TeX 很难学?

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


  22. 怎么开始呢?

      跟写程序一样,拿到一个别人写好的文档来修改修改,是最快的入门方式。 我师姐就是这样一下午学会 LaTeX 的。如果想要深入一点,可以看看lshort这本书自学,大概也就是 90 分钟 的时间吧。以后如果你感兴趣就可以看看 The TeXbook, 里面有很多底层的细节。还可以参考这些资料。
  23. 听说 LaTeX 插图的时候很麻烦?

      LaTeX 插图就这么简单:

\begin{figure}
\includegraphics{tex.eps}
\caption{This is me, \TeX!}
\label{tex}
\end{figure}

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

请看图\ref{tex}

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

\listoffigures

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


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

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

\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={/*@}{@*/}
}

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

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

/*@\label{code:restart}@*/
int restart_card(.......)
{
        .....
}

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

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

      有的人看出来了,这里排版出来的程序使用的是非等宽字体。而通常程序编辑时应该使用等宽字体。如果你喜欢等宽字体,你可以很简单的换成 Courier 之类的字体。但是其实程序一旦印在纸上,就没有必要用等宽字体了,因为等宽字体只是用来方便你编辑,非等宽字体印出来要好看的多。


--

※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.119.32.120]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.945毫秒