jjgod / blog Random notes by Jjgod Jiang.

Archive for September 2006

XeTeX Chinese Preprocessor 0.2

两个功能 使用 Python 来对 XeTeX 文档进行处理,进行自动的中文与英文字体的切换。 消除两行连续的中文之间多余的空格。 如何获取 从下面的地址下载: http://xcp.googlecode.com/svn/trunk/xcp.py 可以到 http://code.google.com/p/xcp/ 查看相关信息和提交 Issues。 使用方法 现在这个版本应该可以处理任何包含中文的 XeTeX 文档了。使用方法很简单,在文档的导言区加上: \usepackage{fontspec} \setromanfont{Garamond Premier Pro} % 此处指定英文字体 \newfontinstance\zhfont{SimSun} % 此处指定中文字体 \newcommand{\zh}[1]{{\zhfont #1}} 然后调用: python xcp.py foo.tex > bar.tex 编译得到的 bar.tex 即可。 几点说明 默认接受 UTF-8 格式的文档,如果你使用了其他编码,可以修改 xcp.py 第 5 行的 encoding=’utf-8′ 为你使用的编码,在 http://docs.python.org/lib/standard-encodings.html 可以找到 Python 支持的所有编码。 默认在 \begin{document} 之后才开始处理,到 [...]

TeX 系统的构建 (2) – 恐怖的 web2c

自从第一部分贴出以来,受到了很多朋友的鼓励,令我感到非常高兴: 看来尽管我拙于表达,对于 TeX 系统的构建感兴趣的朋友还是不少的。不过有一点需要说明:撰写此文的主要目的并非是“构建一个最小的 TeX 系统”,只不过正巧 web2c 系统符合我们讲解的需要而已,我所希望证明的是,TeX 的构建看似复杂,其实也不过是有许多细小的“砖石”一块块搭成,并无什么神秘的地方,尽管大家的兴趣多数是在 TeX 的基础上撰写宏包,但其实参与到 TeX 系统的开发中去也并非那么困难。 web2c 只是用 YACC 写的一套简单的分析程序,由于无法作复杂的分析,所以类似 autotools 的那套“由 A 生成 B,B 生成 C,C 再生成 D”这样化学反应链一般的恐怖过程便被设计出来。 一开始,因为没法直接从 Pascal 代码中分析出其中的变量与函数,所以不得不在一些称为 .defines 的文件中专门说明这些,比如我们如果要用 web2c 转换 etex.p,就得把 common.defines, texmf .defines 和 etexdir/etex.defines 再加上 etex.p 四个文件连接起来送给 web2c 这个程序的标准输入。 然后编写 web2c 的人发现,就算这样还是不好直接通过 web2c 生成的方式搞定所有 C 程序里需要的定义,还是另外把一些内容写在 .h 头文件里,让生成的 .c 程序 [...]