简介

1.1  tex2page 是什么?

tex2page 是一个可以把 plain TEX或者 [intro-Z-G-D-1.png]文档转换成 HTML 的工具。它是由 Dorai Sitaram开发的一个 Scheme 程序。它完全支持中文 和各个国家的语言。

如果你不知道什么是 TEX,可以参考 http://learn.tsinghua.edu.cn/homepage/015450/tex_frame.html.

你只需要知道一些 [intro-Z-G-D-1.png]的基本命令就可以开始使用 tex2page.

如果你对 [intro-Z-G-D-1.png]很熟悉,你就会发现,[intro-Z-G-D-1.png]里能使用的几乎所有基本结构 tex2page 都能支持。比如,表 格,数学公式。

表 1:  一个简单的表格
A B C
10 hello [intro-Z-G-2.png]
2^{10} \sqrt100 \sum_{0\leq j\leq m}\sum_{j\leq k
        \leq n} x_{jk}

[intro-Z-G-6.png]

注意,数学公式如果字体太小,转换出来效果不是很好。要改变 TEX生成的图片大小只需要定义一个 \imgpreamble. 具体请参 考第 15.3 节。

还有章节,目录,插图,脚注,定义命令,交叉引用,参考文献,索 引…… 你都可以在本文里看到。

1.2  为什么要用 tex2page?

你也许觉得 [intro-Z-G-D-1.png]输出成为 dvi, ps, pdf 效果那么好,我们为什 么要把 TEX文件转换成 HTML?

HTML 在屏幕浏览上比起 PS, PDF 有非常大的优点。HTML 网页一目 了然,一个网页可以很长,你拖动滚动条就可以看到上下文,不用翻 页。

而且网页里可以加入各种样式,你如果用了 CSS,你的网页可以 有非常好的动态效果,比如浮动的导航栏,动画,声音,超链接等等。 这些是 PS, PDF 不可比拟的优点。

如果你用 CSS,只需要修改 CSS 文件就可以改变整个文档的样式。 你不需要重新运行 tex2page,而只需要刷新一下浏览器就可以得到 另外一种风格的文档。

最后,可以保证你接受这一工具的优点是:你不需要特别学习什么。 你只需要按通常的 [intro-Z-G-D-1.png]的用法,就可以得到两个版本。何乐而不 为?看看这里就是 本文的 PDF 版本

1.3  tex2page 与 TEX 的不同点

tex2page 是用来把 TEX 文档转化成 HTML 的工具,所以它支持 HTML 的很多特性,比如外部 URL 链接,tag 定位, CSS 样式表等等。

由于 HTML 与 TEX 的不同点,tex2page 缺少 TEX 宏语言的某些 高级功能。但是这些功能是一般 [intro-Z-G-D-1.png]用户在日常文档处理中遇不到的,只有样式设计者才能遇到。 而且关于这一点,Dorai 和我已经共同努力使得普通人能用到的 TEX 底层命令都能正常工作。如果你有兴趣可以看看第 18 章。

如果你需要更加强大的语言支持,你可以在文档里使用嵌入的 Scheme. Scheme 语言比 TEX的宏语言还要方便强大的多。 如何使用嵌入的 Scheme,请参考第 13 章。

其实 tex2page 可以轻松支持下面这段有点难度的 TEX宏。

\def\x{\a}
\def\a{a\def\x{\b}}
\def\b{b\def\x{\c}}
\def\c{c\def\x{\a}}
\x\x\x\x\x

得到的输出是: abcab.

我自己定义了一个宏 \ic,它可以把命令以命令本身 的样子加入索引但是却按命令第一个字母排序。

\def\gobble#1{}
\def\ic#1{\expandafter\expandafter\expandafter%
\index\expandafter\expandafter\expandafter{%
\expandafter\gobble\string#1@\verb{#1}}}

比如 \ic{\section} 会展开成 \index{section@\p{\section}}。 这样你会在索引里 S 开头的字母那组看到 \section,而不 是在反斜杠开头那组。

当然你可以直接打 \index{section@\p{\section}},但是我定义了 这个宏就可以少按很多键盘。

你可能从来没用过 \expandafter, \csname, \endcsname 之类的高级 TEX命令吧。这些 tex2page 都支持!

1.4  tex2page 的成功案例

你可能不太相信这个小玩艺儿可以处理你的大作?其实已经有很多人 开始使用它。

其中成功的例子包括

Harold Abelson and Gerald Jay Sussman 的大作 Structure and Interpretation of Computer Programs

http://mitpress.mit.edu/sicp/full-text/book/book.html

MIT Press 的教科书 How to design programs

http://www.htdp.org/

还有 PLT 小组的几乎所有 manual

http://www.plt-scheme.org/

1.5  需要注意的问题

tex2page 的语法分析基本上不依赖于 TEX,不过它需要 TEX来处理数学公式 等东西。所以你的系统必须配置好 TEX.

另外 tex2page 不能理解所有的 TEX宏指令,所以如果你有一个很 奇特的 [intro-Z-G-D-1.png]宏包,里面提供了非常炫的功能,你别想让 HTML 也 具有这种功能。

所以你必须按照 [intro-Z-G-D-1.png]对于作者的要求,把文档格式于样式分开。 不要在文档里固定太多的样式。这样你的文档才具有灵活性。

tex2page 生成的 HTML 可以变得非常漂亮。因为它可以利用 CSS 和 Scheme 的强大力量。所以你不用担心它的能力。

这个手册的浮动导航栏,浮动章节号,和所有中文的“目录”,“第 x 章”的字样,本来 tex2page 是不支持的,但是作者看了 tex2page 的代码 2 个小时之后就解决了中文的问题。可见 Scheme 语言表达 能力之清晰!

现在 Dorai 采纳了 我的建议,这些功能已经加入 tex2page 正式版 本。包括一个 chinese.t2p 文件,只要插入它就可以把所有章节标 题,日期,数字全都用中文显示。只要在你的 TEX或者 t2p 文件里 加入:

\input chinese.t2p

就行了。