DG2.7. 工具集
我们记录了处理文档所需各种工具的三种安装方法的经验。第一种是在 Linux 上从 RPM 安装,第二种是从 FreeBSD port 安装,最后一种是从各工具的原始发行包进行通用安装。下面将分别介绍。
这些工具可能还有其他打包发行形式。请把软件包状态报告到 docs 邮件列表,我们会把相关信息收录在这里。
DG2.7.1. Linux RPM 安装
对 RedHat 兼容的 Linux 系统来说,最简单的安装方式是使用 Cygnus 的 Mark Galassi 开发的 RPM 集。也可以像后面一节描述的那样从源码安装。
安装 RPM
安装 Jade 及相关软件包的 RPM。
安装 Norm Walsh 的最新样式表。视 RPM 的新旧程度而定,最新样式表可能比 RPM 中包含的有显著改进。
更新你的
src/Makefile.custom,加入指向样式表的 HSTYLE 和 PSTYLE 定义。
DG2.7.2. FreeBSD 安装
FreeBSD 上有一整套文档工具的 ports。事实上,postgresql.org ——文档每天晚上都会自动更新的那台机器——就是一台 FreeBSD 机器。
安装 FreeBSD Ports
要在 FreeBSD 上构建文档,需要安装若干 ports。
% cd /usr/ports/devel/gmake && make install % cd /usr/ports/textproc/docproj && make install % cd /usr/ports/textproc/docbook && make install % cd /usr/ports/textproc/dsssl-docbook-modular && make install设置环境变量以访问 jade 工具集。
注意
在 postgresql.org 的 FreeBSD 机器上并不需要这一步,所以你可能不必这么做。
export SMGL_ROOT=/usr/local/share/sgml SGML_CATALOG_FILES=/usr/local/share/sgml/jade/catalog SGML_CATALOG_FILES=/usr/local/share/sgml/html/catalog:$SGML_CATALOG_FILES SGML_CATALOG_FILES=/usr/local/share/sgml/iso8879/catalog:$SGML_CATALOG_FILES SGML_CATALOG_FILES=/usr/local/share/sgml/transpec/catalog:$SGML_CATALOG_FILES SGML_CATALOG_FILES=/usr/local/share/sgml/docbook/catalog:$SGML_CATALOG_FILES export SGML_CATALOG_FILES(这是 sh/bash 语法;csh/tcsh 请作相应调整。)
make 需要一些特殊参数,或者把它们加入你的 Makefile.custom:
HSTYLE=/usr/local/share/sgml/docbook/dsssl/modular/html/ PSTYLE=/usr/local/share/sgml/docbook/dsssl/modular/print/当然,构建时你需要使用 gmake 而不是普通的“make”。
DG2.7.3. Debian 安装
Debian 有一整套文档工具的软件包。
安装 Debian 软件包
安装 jade、docbook 和 unzip:
apt-get install jade apt-get install docbook apt-get install docbook-stylesheets安装最新的样式表。
确认已安装 unzip,或安装该软件包:
apt-get install unzip
从 http://www.nwalsh.com/docbook/dsssl 抓取最新的样式表 zip 包,并解压到某个位置(可以是 /usr/share)。
编辑 src/Makefile.custom,加入适当的 HSTYLE 和 PSTYLE 定义:
HSTYLE= /usr/share/docbook/html PSTYLE= /usr/share/docbook/print
DG2.7.4. 手动安装工具
这里简要过一遍获取和安装软件的过程,你需要这些软件来用 Emacs 编辑 DocBook 源码,并用 Norman Walsh 的 DSSSL 样式表处理它,生成 HTML 和 RTF。
获取 SGML 和 DocBook 工具最简单的方法,可能是从 sgmltools 获取 sgmltools。sgmltools 需要 GNU 版本的 m4。要确认你有正确的 m4 版本可用,试试
gnum4 --version
如果你安装 GNU m4,用 gnum4 这个名字安装,sgmltools 就会找到它。安装之后,你将拥有 sgmltools、jade 和 Norm Walsh 的 DocBook 样式表。下面说明如何单独安装这些工具。
DG2.7.4.1. 先决条件
你需要:
一个可用的 GCC 2.7.2 安装
一个可用的 Emacs 19.19 或更高版本安装
一个 Unix 的 unzip 程序用来解包
你必须获取:
James Clark 的 Jade(撰写本文时,
jade1_1.zip中的 1.1 版是当前版本)Norman Walsh 的 Modular Stylesheets(最初生成这些文档时使用的是 1.19 版)
Lennart Staflin 的 PSGML(撰写本文时,
psgml-1.0.1.tar.gz中的 1.0.1 版可用)
重要 URL:
DG2.7.4.2. 安装 Jade
安装 Jade
阅读上面列出的 URL 处的安装说明。
把发行包解压到一个合适的位置。使用的命令大致是
unzip -aU jade1_1.zipJade 不是用 GNU autoconf 构建的,所以你需要自己编辑
Makefile。既然 James Clark 已经为此准备好了他的套件,一个好办法是在 Jade 发行包的主目录下建一个构建目录(也许以你的机器架构命名),把主目录中的Makefile文件复制进去,在那里编辑它,然后在那里运行make。不过,
Makefile确实需要编辑。主目录中有一个名为Makefile.jade的文件,构建 Jade(而不是构建 Jade 所基于的 SGML 解析器套件 SP)时,可以用make -f Makefile.jade来使用它。不过我们建议你不要那样做,因为需要修改的内容超出了Makefile.jade的范围,反正你也得编辑其中某一个。通读
Makefile,阅读 James 的说明并按需编辑。有若干变量需要设置。下面收集汇总了最重要的一些变量及其典型值:prefix = /usr/local XDEFINES = -DSGML_CATALOG_FILES_DEFAULT=\"/usr/local/share/sgml/catalog\" XLIBS = -lm RANLIB = ranlib srcdir = .. XLIBDIRS = grove spgrove style XPROGDIRS = jade注意其中指定了查找 SGML 支持文件默认 catalog 的位置 —— 你可能想把它改成更适合你自己安装的值。如果你的系统不需要上面这些数学库和
ranlib命令的设置,就让它们保持Makefile中的原样。输入
make构建 Jade 和各种 SP 工具。软件构建完成后,
make install会完成显而易见的那一步。
DG2.7.4.3. 安装 DocBook DTD 工具包
安装 DocBook DTD 工具包
你会想把构成 DocBook DTD 工具包的文件放在你构建 Jade 时让它查找的目录中;如果你遵循了上面的建议,那就是
/usr/local/share/sgml/。除了 DocBook 实际文件外,你还需要放好一个catalog文件,用于把文档类型规范和外部实体引用映射到该目录中的实际文件。你还需要 ISO 字符集映射,可能还有一或多个版本的 HTML。安装各种 DTD 和支持文件并建立
catalog文件的一种办法是,把它们全部收进上面提到的目录,用一个名为CATALOG的文件描述它们全部,然后创建文件catalog作为指向前者的 catalog 指针,给它这样一行内容:CATALOG /usr/local/share/sgml/CATALOGCATALOG文件随后应包含三类行。第一类是(可选的)SGML 声明,即:SGMLDECL docbook.dcl接下来,对 DTD 和实体文件的各项引用必须解析。对于 DocBook 文件,这些行看起来像这样:
PUBLIC "-//Davenport//DTD DocBook V3.0//EN" docbook.dtd PUBLIC "-//USA-DOD//DTD Table Model 951010//EN" cals-tbl.dtd PUBLIC "-//Davenport//ELEMENTS DocBook Information Pool V3.0//EN" dbpool.mod PUBLIC "-//Davenport//ELEMENTS DocBook Document Hierarchy V3.0//EN" dbhier.mod PUBLIC "-//Davenport//ENTITIES DocBook Additional General Entities V3.0//EN" dbgenent.mod当然,包含这些内容的文件随 DocBook 工具包一起提供。注意这些行每行的最后一项都是文件名,这里没有带路径。你当然可以把文件放在主 SGML 目录的子目录中,并修改
CATALOG文件中的引用。DocBook 还引用 ISO 字符集实体,所以你需要获取并安装它们(它们可从多个来源获得,通过上面列出的 URL 很容易找到),并为它们全部配上 catalog 条目,例如:PUBLIC "ISO 8879-1986//ENTITIES Added Latin 1//EN" ISO/ISOlat1注意这里的文件名包含目录名,表明我们把 ISO 实体文件放在了名为
ISO的子目录中。同样,你获取的实体包应附带正确的 catalog 条目。
DG2.7.4.4. 安装 Norman Walsh 的 DSSSL 样式表
安装 Norman Walsh 的 DSSSL 样式表
阅读上面列出的 URL 处的安装说明。
要安装 Norman 的样式表,只需把发行包解压到合适的位置。一个合适的位置是
/usr/local/share,这会把工具包放到/usr/local/share/docbook目录树下。命令大致是unzip -aU db119.zip测试安装的一种办法是构建 PostgreSQL 用户指南的 HTML 和 RTF 形式。
要构建 HTML 文件,进入 SGML 源目录
doc/src/sgml,执行jade -t sgml -d /usr/local/share/docbook/html/docbook.dsl -D ../graphics postgres.sgml
book1.htm是输出的顶层节点。。要生成可导入你喜欢的字处理系统并打印的 RTF 输出,输入:
jade -t rtf -d /usr/local/share/docbook/print/docbook.dsl -D ../graphics postgres.sgml
DG2.7.4.5. 安装 PSGML
安装 PSGML
阅读上面列出的 URL 处的安装说明。
解开发行文件,运行 configure、make 和 make install,把字节编译文件和 info 库放到位置。
然后把以下几行加入你的
/usr/local/share/emacs/site-lisp/site-start.el文件,让 Emacs 在需要时正确载入 PSGML:(setq load-path (cons "/usr/local/share/emacs/site-lisp/psgml" load-path)) (autoload 'sgml-mode "psgml" "Major mode to edit SGML files." t)如果你想在编辑 HTML 时也使用 PSGML,还要加上:
(setq auto-mode-alist (cons '("\\.s?html?\\'" . sgml-mode) auto-mode-alist))使用 PSGML 有一点需要注意:它的作者假定你的主 SGML DTD 目录是
/usr/local/lib/sgml。如果像本章示例中那样使用/usr/local/share/sgml,你就必须对此作出补偿。你可以设置
SGML_CATALOG_FILES环境变量。你可以定制你的 PSGML 安装(它的手册说明了方法)。
你甚至可以在编译和安装 PSGML 之前编辑源文件
psgml.el,把硬编码的路径改成你自己的默认值。
DG2.7.4.6. 安装 JadeTeX
如果你愿意,还可以安装 JadeTeX,用 TeX 作为 Jade 的格式化后端。注意它仍是相当粗糙的软件,生成的打印输出不如 RTF 后端的质量。不过它仍然工作得不错,尤其是对不使用表格的较简单文档而言;而且由于 JadeTeX 和样式表都在持续改进,它将来肯定会越来越好。
要安装和使用 JadeTeX,你需要可用的 TeX 和 LaTeX2e 安装,包括受支持的 tools 和 graphics 宏包、Babel、AMS 字体和 AMS-LaTeX、PSNFSS扩展及“35 种字体”配套包、用于生成 PostScript 的 dvips 程序、宏包 fancyhdr、hyperref、minitoc、url 和 ot2enc,当然还有 JadeTeX 本身。所有这些都可以在邻近的 CTAN 站点找到。
JadeTeX 在撰写本文时并没有附带多少安装指南,但有一个
makefile 展示了需要什么。它还包含一个 cooked 目录,你会在其中找到它所需的部分宏包 —— 但不是全部,也不完整,至少我们上次查看时是这样。
在构建 jadetex.fmt 格式文件之前,你可能需要编辑
jadetex.ltx 文件,把
Babel 的配置改为适合你所在地区的形式。要改的那一行看起来像
\RequirePackage[german,french,english]{babel}[1997/01/23]
显然,你应该只列出你确实需要、并且已为 Babel 配置好的语言。
JadeTeX 可用后,你就应该能为 PostgreSQL 手册生成并排版
TeX 输出,办法是(如上所述,在 doc/src/sgml
目录中)给出命令
jade -t tex -d /usr/local/share/docbook/print/docbook.dsl -D ../graphics postgres.sgml
jadetex postgres.tex
jadetex postgres.tex
dvips postgres.dvi
当然,这样做时,TeX 会在第二轮运行中停下来,并告诉你它的容量已被超出。就我们所知,这是 JadeTeX 生成交叉引用信息的方式造成的。当然,TeX 可以用更大的数据结构尺寸编译。具体细节因安装而异。