学习 DocBook

这是 Kardinal 所著《开源世界旅行手册》中的一部分──《学习 DocBook》。本部分从 XML 讲起,包含 DocBook 介绍、DocBook 环境搭建、创建 DocBook 文档、DocBook 编辑软件、发布 DocBook 文档等内容。新手阅读此部分,可以快速进入 DocBook 之门;而老手也可以从中找到实用的参考,并从作者的经验中获益。现 Kardinal 决定予以提前放出,以飨读者。

《学习 DocBook》目录如下:

XML简介 XML语法

  • 标记
  • 元素
  • 处理指令
  • 文件头部
  • 实体
DocBook介绍 搭建DocBook环境 创建DocBook文档 结构元素 文档信息 分子元素 块元素 行内元素 特殊字符 列表
  • Callout列表
表格
  • 跨行表格
  • 跨列表格
链接
  • 内部链接
  • 外部链接
  • 脚注
  • 参考
图形 文档工程 DocBook编辑软件 发布 使用CSS定制外观
  • 代码块的样式
  • 简单表格的样式
技巧
  • 关于表格
  • 交叉引用
  • calloutlist自动编号问题
  • 断行符
  • 内部链接

你可以从这里进入《学习 DocBook》的在线阅读页面。或者下载《学习 DocBook》的打包文件,以便离线阅读。其中,打包文件中也包含《学习 DocBook》的源文档,感兴趣的朋友可自行研究。

Read More:

27 Comments

  1. 1 RAh-XePhON Commented @ 2008-10-17 18:42Reply to this comment

    用docbook有甚麼好處? 如果我直接寫HTML的話?

  2. 2 venhow Commented @ 2008-10-17 19:36Reply to this comment

    tks,what is docbook?

  3. 3 Rex Commented @ 2008-10-17 20:29Reply to this comment

    粗略的浏览了下介绍,应该是适合做文档的源文件,利用合适的转换器可以生成各类文档。适合科技文档

  4. 4 allbluedream Commented @ 2008-10-17 21:27Reply to this comment

    好东西支持一下

  5. 5 allbluedream Commented @ 2008-10-17 21:28Reply to this comment

    好东西支持一下 顺便看了一下reStructuredText,觉得那个更诱人啊。有可能做个比较?

  6. 6 changqe1984 Commented @ 2008-10-17 21:49Reply to this comment

    reStructuredText相比之下更适合写一般的文章 而DocBook更适合大论文和书籍 当然reStructuredText更适合人类书写 DocBook更适合电脑处理

  7. 7 syhan Commented @ 2008-10-17 22:44Reply to this comment

    docbook比TeX简单多了,更适合写些技术文档、软件说明书,论文还是TeX索王道

  8. 8 Noxide Commented @ 2008-10-18 0:38Reply to this comment

    reStructuredText看来简单多了

  9. 9 liufeng Commented @ 2008-10-18 1:43Reply to this comment

    不错,讲的挺清晰,很适合我这种菜鸟阅读:)

    我一直没掌握编写docbook文档的正确方式,总觉得一前一后的tag输入太累人,不如TeX来得方便……如果把docbook用作TeX的前端,输入起来还不如直接用TeX快。

  10. 10 allbluedream Commented @ 2008-10-18 11:50Reply to this comment

    谢谢changqe1984

    另外,说来惭愧,LaTeX的CJK从来没成功过,所以考虑还是要换一个更方便的写作工具。ReST确实比xml更适合人书写。出了emacs以外(当然也排除Vim),有什么方便写xml的工具吗?一前一后的tag确实比较费劲。

  11. 11 bigclean Commented @ 2008-10-18 12:21Reply to this comment

    个人觉得tex还是不错的,尤其是emacs+auctex,写文章非常的方便,我觉得docbook还是不错的,转换格式最多,troff也还不错。

  12. 12 Kardinal Commented @ 2008-10-18 15:56Reply to this comment

    @allbluedream:我用reStructuredText写过一个关于reStructuredText的文档,现在用Docbook写关于Docbook的文档:)reStructuredText写起来确实比较省事,结果就是,我现在得费劲的把以前的文档整理成Docbook…… 类似reStructuredText的有很多,Muse,txt2tags等,因为语法简洁,源文件比较有可读性,这是优点;缺点是语法太简洁导致功能不够强,而且扩展性比较差;简洁的语法往往对源文件的排版有一定的要求,一个自己都查觉不到的小小疏忽就可能产生莫明其妙的问题 方便的工具似乎还得是Emacs,我用的是docbook-xml-mode这个扩展,它比较简单,稍加改造就很顺手,配合大纲模式,写起来还是比较轻松的。 所谓方便的XML工具包括自动补全和语法检查的功能吧?Emacs有nxml-mode就是这样的扩展;其实对于XML来说,这种模式并不实用,因为常用的标签你可以轻松的掌握它的用法,语法检查在有些地方挺一根筋的;而自动补全效率又低。 对于多数人来说,写的时候最常见的是拼写错误,使用docbook-xml-mode自动插入代码片断,完全可以避免这个问题;再就是特殊字符造成的问题,发布的时候会有提示,使用Emacs可以方便的定位修改

    @bigclean: tex的强项应该是排版,对于结构的控制应该不如Docbook(我不会用,只是听一个老鸟说过)。像我现在写的这个文档,在里面大约占2-3%的篇幅,如果用tex,估计很难有效控制 而且tex的工具链很复杂,难以配置。Docbook也可以使用fop输出PDF(最新版的fop对中文支持据说很好),我在AUR上找到fop的PKGBUILD,依赖6-7个JAVA的包,其中还是4-5个还需要PKGBUILD,不知道会不会依赖更多,这样一个嘎吱作响的工具链让人望而生畏,于是我就知难而退了……我想tex的工具链应该更加猥琐

  13. 13 xiaket Commented @ 2008-10-18 21:40Reply to this comment

    写技术文档我还是喜欢viki...

  14. 14 bigclean Commented @ 2008-10-19 2:08Reply to this comment

    tex对于结构的控制还是很方便的(很结构化),如果是要自己定制版面的话,那会有点繁琐,但还是有大量的模板供参考,另外,tex的软件以及各种宏包的关系是有点复杂,有时侯会发生一些版本的冲突,但是个人觉得配置还是比较快的,自己用的是gentoo的portage里面的texlive,也可以用texlive2008的光盘安装。

  15. 15 雪梨 Commented @ 2008-10-19 14:55Reply to this comment

    reStructuredText 输出中文 PDF,一小段 Python 程序就足够了。

  16. 16 Kardinal Commented @ 2008-10-21 8:49Reply to this comment

    @bigclean:我一般用尖括号代替书名号,说的话WordPress给理解错了--!!我是说,如果有50篇《学习 DocBook》这样篇幅的文档,要求可以方便的选择发布哪些,组成书的时候控制目录的深度等选项,Tex能作到么? 况且Tex太占地方了,我的系统压缩一下才几百兆……俺得时常把系统压缩一下当模板,好装在别的机器上,装个Tex一张光盘就放不下了--!! @雪梨:老大,俺服了U,上回怎么分页就死活不肯说,这回又是一段没见过的脚本……有什么好东西拿出来看看再说,光说不练假把式……弄个教程哈:D reStructuredText 能支持CalloutList么,我全指着它了

  17. 17 allbluedream Commented @ 2008-10-21 10:38Reply to this comment

    @Kardinal: CalloutList这么重要么?说实话看了你的文档,也上网查了,还是不大明白它的用途。你就是因为这个原因把过去的ReST转成DocBook的?我感觉一般用footnote就OK了啊。

    这个是不是你要找的呢? http://docutils.sourceforge.net/docs/user/rst/quickref.html#hyperlink-targets 这里面有个call-out form

  18. 18 allbluedream Commented @ 2008-10-21 10:39Reply to this comment

    @Kardinal: http://docutils.sourceforge.net/docs/user/rst/quickref.html#hyperlink-targets

  19. 19 Kardinal Commented @ 2008-10-22 8:41Reply to this comment

    @allbluedream:哥们儿,这个页面我太眼熟了,以前我写过一个文档,这个页面我参考了很多…… http://forum.ubuntu.org.cn/viewtopic.php?f=68&t=20245

    footnote和calloutlist作用完成不一样的,举一个最明显的例子吧,假如我不是分页输出,而一个很长的单独的页面,页面顶部有几个地方需要注释,看解释却要到页面的底部,这样就很麻烦…… calloutlist 适合需要密集注释的地方,脚注一般用在稀疏注释的地方 calloutlist 每一部分包含的解释都重新编号,更容易的区分各个不同的概念。footnote是从头到尾编号的

    ReST的call-out其实和脚注差不多,只不过用的不是编号 而Calloutlist要求 标记和注释离的不能太远,以便于阅读

    …………这个得用了才知道,这样空口说很难说清楚的…… 文档里的很多的Calloutlist用ReST是不能够以这种清晰度解释出来的

    CalloutList很重要,但不是用DocBook的全部理由,还有其它很多的特点 比如语义清晰(ReST对于缩进有特殊要求,如果换用一个不同的编辑器,对缩进的处理可能就不同,就有可能产生混乱) 扩展能力强(ReST的行内元素就要少很多,它的语法特点决定了它弄不出更多的东西来表示标记,要是扩展成类似这种形式(假设) ..::userinput::,那它还不如Docbook方便了) ………… 还有一些特点,一下子真是说不出这么多,我会在Org-mode上弄一个条目,想起一条记一条^__^!!

  20. 20 allbluedream Commented @ 2008-10-22 11:15Reply to this comment

    @Kardinal 你真是耐心!看来必须自己试过才知道了,记笔记的话先从ReST开始,希望不用痛苦地转到DocBook啊。其他一些东西现在是写xhtml的,也许用DocBook更省事。

  21. 21 Kardinal Commented @ 2008-10-22 14:28Reply to this comment

    如果是写xhtml的话,真不如直接用Docbook得了,可以输出xhtml 记笔记用Org-mode,也可以输出为html什么的,不过我只用Org-mode整理一些想法,输出用不到,所以没试这个功能

    其实就写作工具链来说,写作和排版的工序已经很好的解决了;还有一环就是前期酝酿阶段,比如收集灵感什么的。你所说的记笔记应该属于这一阶段 Org-mode可以很好的整理混乱的思维,但却不能帮助产生灵感;往往你很随便的回个帖子却能文思泉涌……这好比有些人在宽敞明亮的书房可能什么也写不出来,在人声鼎沸的闹市、酒肆、咖啡馆却灵感如潮……可能灵感需要某种催化剂,得研究下这个问题^_^!!

  22. 22 netwjx Commented @ 2008-11-08 21:36Reply to this comment

    txt2tags比rest还要简单一些,是py的程序,有简单的GUI转换文档界面

  23. 23 Xhacker Commented @ 2008-11-23 16:52Reply to this comment

    请问,如何在programlisting插入HTML代码?如果直接插入,它显示得不太对。

  24. 24 hantsy Commented @ 2009-01-23 23:34Reply to this comment

    FOP中文输出别人费解,以前0.20的时候用过,中文不是很理想,一直没有再用。直到0.95发布之后,中文字体配置依然需要额外的配置。这次不知道什么原因,输出的中文全部是框框。

  25. 25 avenger Commented @ 2009-06-02 9:37Reply to this comment

    @toy 学习docbook 的链接要更新了

  26. 26 Toy Commented @ 2009-06-02 10:42Reply to this comment

    @avenger: thx, 已更新。

  27. 27 cooras Commented @ 2009-07-28 14:03Reply to this comment

    @Xhacker 用CDATA,或者将用entity代替