Thursday, July 09, 2009

[TeX]关于Tex, Latex,以及**tex的一个小结

叫**TeX的东西太多了,我自己对它们的概念也很混淆.所以最近花了一些时间整理一下相关内容,作为笔记加深自己的理解.
名词解释:其实这里有一个很不错的TeX名词的分类解释:TeX Catalogue
  • TeX: 所有**tex的源头,万物的本源. 它由Knuth爷爷用他自己钟爱的一种和Pascal很像的叫WEB的语言所编写的.由于年代的缘故,它有这样那样的局限性. 比如那个时候Knuth爷爷是为了给自己的巨著TAOCP(被视为Computer Science的圣经)排版所用,因此只考虑了支持英文.所以其输入必须是ascii编码的文本文件,而不能包括多字节的语言比如中文.再比如TeX的输出结果为dvi文件. dvi是"device independent format"的缩写.它使用点阵字体而不是轮廓字体.而点阵字体只有在特定大小的时候才最好看.
    Knuth爷爷拒绝对TeX再做改动,所以人们就对TeX作了各种各样的扩展.
  • pdfTeX: 这是对Knuth的TeX的扩展,用于直接输出为pdf而不是dvi(TeX的输出).除此以外相对于TeX,它可以支持TrueType以及Type 1等轮廓字体.
  • XeTeX: 对TeX最大的改进体现在支持unicode以及OpenType等现代字体. 因此对中文的输入的天然支持的.它的工作过程分为两步:第一步生成extended dvi文件(xdv);第二步再将xdv文件转为pdf文件. xelatex是使用XeTeX引擎来编译latex源文件的工具.
  • luaTeX: 基于pdfTeX和Lua语言的TeX引擎. 同样也支持unicode.
  • Primitive Tex: TeX原始命令.大约有300多个. 有兴趣的可以看一下这里 Primitive Tex.由于它非常的底层,所以一般人不会直接用它,而是用在它基础上的各种宏语言.
  • plain TeX: Knuth自己创建的一种建立在Primitive TeX上的宏语言.大约有600多个命令.
  • 我们来看一下用plain TeX所写的Hello World:
    Hello, World
    \bye
  • ConTeX: TeX的另一种宏包.比如这是ConTeX 写的Hello World例子
    \starttext
    Hello, World
    \stoptext
    你可以在http://live.contextgarden.net/尝试在线编译ConTeX文件
  • LaTeX: TeX的最为著名的一种宏包. LaTeX也是大有来头,它是由Leslie Lamport最初弄出来的.对于一般使用者,它比Knuth自己的plain TeX更加直观方便.版面配置的工作被相当大程度的减轻了,使用者可以更加专注在内容上.因此大获流行,比如很多(还是大多?)学术期刊或者会议都会prefer你用LaTeX来排版提交文稿.
    既然是宏语言,就实际上可以被替换成TeX可以理解的命令.同时你也可以在LaTeX文档中使用Primitive TeX的命令.LaTeX宏的格式定义在latex.fmt这个文件当中.遗憾的是它是一个二进制文件,无法直接阅读. 但是幸运的是我们可以从latex.ltx这个文件中看到我们所熟知的各种环境,比如tabular eqnarray等等.实际上latex.fmt正是从latex.ltx编译而来.
    LaTeX定义的标准命令标准环境
    我们再来看一下用LaTeX写的Hello World程序.
    \documentclass{article}
    \begin{document}
    Hello, World
    \end{document}
  • LaTeX distribution:为了用LaTeX来排版,你需要一系列工具,包括(1)编辑器(比如我用过vi, WinEdt, editplus, textwrangler,gedit,现在主要用emacs)(2)dvi浏览器(或者pdf浏览器)(3)最重要的:一套LaTeX发行.一个LaTeX发行通常要包括如下的程序:
    • tex: 把TeX 文件编译成DVI文件
    • pdftex: 把TeX 文件编译成PDF文件
    • latex: 最常用, 把LaTeX文件编译成DVI文件
    • pdflatex: 把LaTeX编译成PDF文件
    • dvi2ps: 把DVI文件转成PostScript文件
    • dvipdf: 把DVI文件转成PDF文件
    • dvipdfm: dvipdf的改进版本
  • TeX live: LaTeX的一个跨平台的发行版, Win,Mac,Linux等主要平台上都有.
  • MiKTeX: LaTeX在Windows平台上的发行版.在中国大家使用非常广泛的CTeX套装里就使用的是MiKTeX.

No comments: