Docbook 很适合大型文档编写,几乎所有的 Linux 发行版都可以很容易的安装并使用,本文档使用的版本是 5.x。 http://www.docbook.org/tdg5/en/html/docbook.html
有很多工具可以将 docbook文档导出到其它格式,我使用的是 xslt 工具。
首先要确保下面的软件包已经正常安装,在 Fedora 15 中使用下面的命令安装:
$ sudo yum install docbook5-schemas docbook5-style-xsl libxslt
可以写一个 Makefile 文件,每次修改后,执行make
命令就可以,也可以直接使用下面的 xsltproc 命令进行 html 的导出。
xsltproc \ --stringparam html.stylesheet "style.css" \[1] --stringparam section.autolabel 1 \ --stringparam section.label.includes.component.label 1 \ --stringparam toc.max.depth 3 \ [2] --output output/single/index.html /usr/share/sgml/docbook/xsl-ns-stylesheets/html/docbook.xsl[3] linux-notes.xml
如果要导出为 pdf 格式,还需要安装下面的软件包:
$ sudo yum install fop
fop 运行需要 jre,不过几乎所有的linux 发行版都已经默认安装好了,上面命令在安装时会自动安装一些 fop 依赖的包。个人喜欢直接安装一个完整的 fop 发行包:
$ cd /opt $ sudo wget http://labs.renren.com/apache-mirror/xmlgraphics/fop/binaries/fop-1.0-bin.tar.gz
如果要用 fop 生成 中文 pdf 文档,需要先做一些配置。下面先加入中文字体的支持。因为我机器上默认安装的中文字体是 wqy-zenhei.ttc
,所以先生成一个它的 Metrics 文件。
$ cd /opt/fop-1.0 $ sudo java -cp build/fop.jar:lib/avalon-framework-4.2.0.jar:lib/commons-logging-1.0.4.jar:lib/commons-io-1.3.1.jar:lib/xmlgraphics-commons-1.4.jar \ org.apache.fop.fonts.apps.TTFReader -ttcname "WenQuanYi Zen Hei" \ /usr/share/fonts/wqy-zenhei/wqy-zenhei.ttc conf/wqy-zenhei.xml
修改 /opt/fop-1.0/conf/fop.xconf
文件,找到 <renderer mime=”application/pdf”>
代码段,在 <fonts>
内增加:
<font metrics-url="/opt/fop-1.0/conf/wqy-zenhei.xml" kerning="yes" embed-url="/usr/share/fonts/wqy-zenhei/wqy-zenhei.ttc"> <font-triplet name="WenQuanYi Zen Hei" style="normal" weight="normal"/> <font-triplet name="WenQuanYi Zen Hei" style="normal" weight="bold"/> <font-triplet name="WenQuanYi Zen Hei" style="italic" weight="normal"/> <font-triplet name="WenQuanYi Zen Hei" style="italic" weight="bold"/> </font> <directory recursive="true">/usr/share/fonts/</directory> <auto-detect/>
修改 Makefile 文件,或用下面命令来生成 fo 文件:
xsltproc \ --stringparam html.stylesheet "style.css" \ --stringparam section.autolabel 1 \ --stringparam section.label.includes.component.label 1 \ --stringparam toc.max.depth 3 \ --stringparam body.font.family "WenQuanYi Zen Hei" \ --stringparam monospace.font.family "WenQuanYi Zen Hei" \ --stringparam title.font.family "WenQuanYi Zen Hei" \ --stringparam body.font.master 11 \ --output output/pdf/linux-notes.fo /usr/share/sgml/docbook/xsl-ns-stylesheets/fo/docbook.xsl linux-notes.xml
生成 fo 文件以后,就可以用 fop 来生成 pdf 文件了。
$ /opt/fop-1.0/fop -c /opt/fop-1.0/conf/fop.xconf output/pdf/linux-notes.fo output/pdf/linux-notes.pdf
注意在使用 wqy-zenhei.ttc
字库文件生成 pdf 文档会在标题插入一些 #,这是字库的原因,换 Windows 下的 SimSun 字库就没有问题,参见:Apache FOP:Fonts:Missing Glyphs