rtf跟tocrtf和word有什么区别不一样

Docbook开发手记
版本:v2.4
本文先简介了什么是Docbook,然后详细介绍了如何搭建中文的Docbook开发环境,再详细记
录了Docbook开发过程中所遇到的各种注意事项和遇到的问题及解决办法,同时给出很多常
见的Docbook中各种元素的示例代码,另外也记录了一些值得参考的Docbook相关的资料。
[提 本文提供多种格式供:
HTML HTMLs PDF CHM TXT RTF WEBHELP
下载(7zip压缩包) HTML HTMLs PDF CHM TXT RTF WEBHELP
HTML版本的在线地址为:
/files/doc/docbook/docbook_dev_note/release/html/
docbook_dev_note.html
有任何意见,建议,提交bug等,都欢迎去讨论组发帖讨论:
/bbs/categories/docbook_dev_note/
┌─────────────────────────────────────────────────────────────────────────────┐
│修订历史
├────────────────────────────┬────────────────────────────────────┬───────────┤
│修订 2.4
├────────────────────────────┴────────────────────────────────────┴───────────┤
│ 1. 完善了代码示例部分
│ 2. 更新整理了appendix附录部分,把最新的所有的book都整理进来了
│ 3. 添加了filename,screenco等示例代码
│ 4. 更新了所有的xml:id
│ 5. 添加示例代码:figure内包含2张mediaobject图片
│ 6. 添加示例代码:内嵌元素中的keycap
│ 7. 修正了个别的笔误,修改了部分细节内容,添加了引用reference
│ 8. 添加整理了:Docbook相关的资源和工具下载
│ 9. 添加了:Docbook相关的知识和概念
│10. 添加示例:programlisting和screen
│11. 添加示例:filename是后缀名
├────────────────────────────┬────────────────────────────────────┬───────────┤
│修订 1.1
├────────────────────────────┴────────────────────────────────────┴───────────┤
│ 1. 完成此文的框架
│ 2. 各个章节都已添加了一些基本的内容,关于参考资料的部分,已添加大部分内容
│ 3. 收集了一些常见问题及解决办法
│ 4. 分割成多个文件
│ 5. 添加了关于实体定义部分的介绍
│ 6. 添加了调试fo部分的内容
│ 7. 添加了如何搭建docbook环境
│ 8. 添加了什么是Docbook
│ 9. 添加了代码示例部分
└─────────────────────────────────────────────────────────────────────────────┘
版权 (C) 2013 Crifan,
本文章遵从:署名-非商业性使用 2.5 中国大陆(CC BY-NC 2.5)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Docbook介绍
1. 什么是Docbook
1.1. Docbook出现的背景
1.2. Docbook是什么
1.2.1. 截图说明Docbook的:一种(xml)格式输入,多种(html,htmls,
chm,pdf,txt,rtf等等)格式输出
1.2.1.1. Docbook的一种输入:xml源码(文件)
1.2.1.2. Docbook的多种输出:HTML,HTMLs,PDF,CHM,RTF,TXT,
WEBHELP等格式
2. 我为何选择Docbook
1. Windows下的Docbook的环境搭建
1.1. 搭建Docbook之前需要知道的最基本的事情
1.1.1. 我们的目标
1.1.2. 关于格式转换方面的知识
1.2. 纯Windows环境下的Docbook开发环境的搭建
1.2.1. 建立好文件夹
1.2.2. 下载windos版本的xsltproc
1.2.3. 下载docbook-xsl-ns-1.77.1
1.2.4. 下载fop-1.0并添加fop配置文件
1.2.4.1. 下载fop-1.0
1.2.4.2. 配置FOP的环境变量FOP_HOME
1.2.4.3. 添加fop配置文件fop.xconf
1.2.5. 准备docbook的源码:xml文件
1.2.6. 从xml生成html
1.2.6.1. 为生成html准备配置文件
1.2.6.2. 将xml转换为html
1.2.7. 从xml生成pdf
1.2.7.1. 为生成pdf准备配置文件
1.2.7.2. 将xml转换为fo
1.2.7.3. 将fo转换为pdf
1.3. Windows环境下的,基于Cygwin的Docbook开发环境的搭建
1.3.1. 安装Cygwin
1.3.2. 下载cygwin下使用fop-1.0
2. Docbook开发过程中的注意事项和心得
2.1. Docbook 4和Docbook 5的区别
2.2. 关于实体定义
2.3. qanda系列的用法
2.4. FOP相关注意事项
2.4.1. FOP的字体设置
2.5. Docbook开发过程中的一些有用的提示
2.5.1. Docbook最佳实践
2.5.1.1. Docbook中id的命名规则
2.6. Docbook开发过程中如何调试错误
2.6.1. 举例说明如何实现方便地调试Docbook生成pdf过程中所出现的错误
2.7. Docbook开发过程中的一些感悟
2.7.1. Docbook更关注内容
2.7.2. Docbook与盖楼
2.8. Docbook环境进化过程简单记录
3. Docbook开发过程中的常见问题及解答
3.1. ValidationException: Property ID xxx previously used
3.2. ValidationException: xxx is not a valid child of xxx
3.3. ValidationException: xxx is missing child elements
3.4. docbook5中指定表格table中列column的宽度
3.5. 除了章(Chapter)有编号之外,其他不同层级的小节(section)都是没有
编号的,想要给各小节添加索引编号
3.6. 已经include了xsl配置文件了,但是自己添加的参数配置,不起效果
3.7. xsltproc出错:Element xxx in namespace xxx encountered in book,
but no template matches
3.8. pdf中没有出现/显示revhistory所对应的历史版本
3.9. 生成pdf的时候出错:严重: Image not found. URI: xxx.png. (See
position xxx)
3.10. 想要给book中的标题下面添加一个版本号
3.11. 输出的pdf中的revhistory历史版本的内容中的表格无边框,想要添加边框
3.12. 如何去掉docbook中输出的pdf中,除了带链接的文字之外的那个链接地址
3.13. 给docbook生成的pdf中的带链接的文字,添加下划线和设置字体颜色为蓝色
3.14. 如何给docbook的pdf添加bookmark书签的功能
3.15. Docbook的pdf,去除正文对于标题的缩进indent
3.16. 生成的pdf中emphasis无效果,想要实现给pdf中emphasis的文字加粗或斜
3.17. 如何给(docbook中的)xsl中定义实体Entity
3.18. 给docbook的pdf中的等式(equation)设置背景色
3.19. 如何将默认的输出单个的HTML页面,改为输入多个HTML页面?
3.20. 如何给docbook中的表格(table)的第一行(firstrow或thead)添加背景
3.21. 如何用docbook生成chm(微软帮助文件)?
3.22. docbook生成的chm的左边目录等内容都是乱码
3.23. 如何将qanda的标题添加到TOC目录中去?
3.24. 如何将docbook转换为(和word兼容的)RTF文档?
3.25. 如何用Docbook生成Webhelp?
3.26. 用fop生成pdf过程中出现警告:warning: Font "Symbol,normal,700" not
found. Substituting with "Symbol,normal,400"
3.27. Docbook中使用fop过程中出错:严重: Couldn’t find hyphenation
pattern zh_cn
3.28. cygwin/linux下的fop运行出错:Exception in thread "main"
java.lang.NoClassDefFoundError: org/apache/xmlgraphics/image/loader
/ImageContext
3.29. Docbook中用xsltproc生成HTML过程中出错:runtime error xxx/
chunker.xsl line 226 element document, invalid value for
indent,xsltRunStylesheet : run failed
3.30. docbook的xsltproc生成的HTML中Charset的值是空的,不是所设置的UTF-8
3.31. 如何给Docbook中添加abbrev缩略词一项,且放置在目录之后,正文之前?
3.32. 给Docbook的HTML的等式(equation),程序源码(programlisting)等添
3.33. PDF中和HTML中的图片显示,始终不能统一,要么HTML中是放大的,要么
PDF中不能完全显示,所以希望PDF和HTML中的图片显示可以用同一套代码来
3.34. 想要设置HTML和PDF中的图片的标题都是居中对齐
3.35. 生成PDF中,程序代码programlisting中单行代码太长,超出页面宽度,无
3.36. Docbook生成的pdf中,当表格在quote中时,表格头部却在底端显示,而且
如果内容是多行的,还会显示出多行
3.37. Docbook中的callout图片在programlisting中不显示
3.38. An fo:block is wider than the available room in
inline-progression-dimension
3.39. TransformerException: The column-number or number of cells in the
row overflows the number of fo:table-columns specified for the
3.40. 如何通过xref(在别处)引用某个段落(para)?
3.41. WARNING: Content overflows the viewport of the fo:region-body on
page 9 in block-progression direction by 99828 millipoints. (See
position 2:5700)
3.42. PDF中callout不能点击跳转(而HTML中却可以)
3.43. callout图片在programlisting的源码中不显示
3.44. 如何在(只使用co而没有使用areaspec的)源码中多个位置,指向同一个
co(callout)?
3.45. 新的docbook-xsl-ns-1.77.0生成的html中的revhistory中单元格无边框
3.46. WARNING: Glyph "?" (0x21b5, carriagereturn) not available in font
"MicrosoftYaHei".
3.47. 如何实现给table中(多个)特定位置添加相应的注释?
4. Docbook参考资料
4.1. Docbook相关的资源和工具下载
4.2. 关于对于Docbook的介绍和解释方面的资料
4.3. 关于对于Docbook的开发过程中可以参考和查阅的资料
5. 未解决的问题
5.1. 支持各种语言的代码的语法高亮
5.2. 中文hypernate断字
5.3. 给callout的co重新编号
6. Docbook各种元素用法举例
6.1. chapter, section, sect1-sect5
6.3. 图片figure
6.4. 表格,表格嵌套,表格单元格合并
6.5. 注释callout
6.6. 链接,引用
6.8. list列表系列
6.9. 简单列表simplelist,literallayout
6.10. xinclude文件,xinclude文件中的其中一部分的内容
6.11. filename:文件,文件夹,后缀名,
6.12. admonitions:note,caution,warning,tip和important
6.12.1. note
6.12.2. caution
6.12.3. warning
6.12.4. tip
6.12.5. important
6.13. 一些inline元素:keycap,guibutton,keycombo
6.13.1. keycap
6.14. programlisting代码和screen屏幕输出
6.14.1. programlisting代码
6.14.1.1. 带CDATA的programinglist示例
6.14.1.2. 不带CDATA的programinglist示例
6.14.2. screen屏幕输出
6.14.2.1. 带CDATA的屏幕输出screen
6.14.2.2. 不带CDATA的屏幕输出screen
7. Docbook相关的知识和概念
7.1. 输出类型:html和打印输出print out
7.2. docbook中的条件编译:profiling
7.3. 关于docbook中的图片方面的内容
7.4. docbook的一些变体
7.4.1. 简化版的docbook
7.4.2. docbook(制作)幻灯片
7.4.3. docbook(制作)网站
A. 已通过Docbook发布的资料
A.1. 基础知识相关
A.2. 嵌入式相关
A.3. 上层软件相关
1. 截图举例:Docbook的XML源码
2. 截图举例:Docbook的可以生成多种格式
3. 截图举例:Docbook的XML源码生成的HTML
4. 截图举例:Docbook的XML源码生成的HTMLs
5. 截图举例:Docbook的XML源码生成的PDF
6. 截图举例:Docbook的XML源码生成的CHM
7. 截图举例:Docbook的XML源码生成的TXT
8. 截图举例:Docbook的XML源码生成的RTF
9. 截图举例:Docbook的XML源码生成的WEBHELP
3.1. coref在HTML中的效果
2.1. Docbook中id命名规则
3.1. co用法示例
3.2. coref用法示例
6.1. chapter,section,sect1-sect5
6.2. 普通的段落:para
6.3. 带标题的正式的段落:formalpara
6.4. 带标题的图片:figure
6.5. figure内包含2张mediaobject图片
6.6. 不带标题的非正式的图片:informalfigure
6.7. 行内图片:inlinemediaobject
6.8. 表格:table
6.9. 带嵌套(embedded)表格:informaltable
6.10. programlisting的callout:programlistingco
6.11. screen的callout:screenco
6.12. 没有callout的co实现在任意位置使用co然后在别处使用coref去引用
6.13. 带xlink域名的link
6.14. xref引用
6.15. 等式equation
6.16. itemizedlist
6.17. 带emphasis的itemizedlist
6.18. 带指定编号类型的orderedlist
6.19. 简单列表simplelist
6.20. 简单列举literallayout
6.21. xinclude主文件中使用xinclude
6.22. 被xinclude包含的子文件:preface.xml
6.23. 被xinclude包含的子文件:ch01_build_env.xml
6.24. filename是文件,文件夹的例子
6.25. 示例:filename是后缀名
6.26. note举例
6.27. caution举例
6.28. tip举例
6.29. keycap举例
6.30. 举例:带CDATA的programinglist
6.31. 举例:不带CDATA的programinglist
6.32. 举例:带CDATA的screen
6.33. 举例:不带CDATA的screen
7.1. 添加role参数实现条件编译
Docbook介绍
1. 什么是Docbook
1.1. Docbook出现的背景
1.2. Docbook是什么
1.2.1. 截图说明Docbook的:一种(xml)格式输入,多种(html,htmls,chm,
pdf,txt,rtf等等)格式输出
1.2.1.1. Docbook的一种输入:xml源码(文件)
1.2.1.2. Docbook的多种输出:HTML,HTMLs,PDF,CHM,RTF,TXT,
WEBHELP等格式
2. 我为何选择Docbook
1. 什么是Docbook
1.1. Docbook出现的背景
想要了解Docbook是啥之前,需要知道一下其出现的大概背景,这样才能更好的理解为何会
有docbook,以及其到底是啥。
随着计算机发展,有很多专业的书籍,技术文章等,需要发布。
这句话需要解释一下:
o 专业的书籍,技术文章
此处所说的书籍book和文章article,主要指的是和计算机相关的
当然后面也会提到,docbook的应用,不仅仅局限于发布计算机相关的书籍和文章。
即,其他专业,方向的书籍和文章等,也都可以通过docbook发布。
此处的发布,主要包括两种,一种是在线Online的,一种是离线的Offline的。
在线的,多指的是文章通过HTML等网页形式,可以在线浏览。
离线的,也可以是将HTML网页下载下来留作本地阅读,更多的时候指的是,发布为PDF
,CHM等格式,方便本地打开对应的文件,阅读该书籍或文章。
而对于各种书籍和文章的发布,由于没有统一的系统支持,导致想要发布多种格式,多人
同时编辑同一份文档等情况的时候,之前的直接编辑生成相应文档的方法,就显得力不从
所以才会有Docbook这种东西出现。其统一规划了(尤其是计算机类的)书籍所需要的“单
词”,以及规定了“单词”之间的关系,
作为文档发布者,按照其规定,写好相应的源码
之后,有其他第三方(多数是开源的,免费的)工具,实现格式的定义,再转换为多种格
而在写源码期间,由于是直接写的xml或sgml等文件,属于文本类的文件,所以可以很方便
的实现版本的控制,由此实现了Docbok的优点
1.2. Docbook是什么
根据Docook官网的解释,Docbook是一种schema。
schema,中文一般翻译为模式,但是如此解释,还是很抽象,很难理解。
[提 关于Schema
o 关于DTD和XML Schema之间的区别,可以参看w3cschool的解释:DTD vs XML
o 关于RELAX NG,可以参看wiki中的举例说明:RELAX NG - XML syntax
此处,可以简单的将Docbook理解为,类似于某种语言,比如英语。
英语,包括了对应的单词,词汇,以及对应的语法,规定了单词和词汇之间的关系,如何
使用它们才是正确的。
对应的Docbook,也规定了一堆基本的单词和相应的语法。
1. Docbook中的单词 == 元素(Element)
Docbook中的单词,被称为元素(elment),比如最常见的book,chapter,section等
2. Docbook的中语法 == 用其他语言(Relax NG/SGML/XML DTDs/W3C XML Schema)来解
Docbook中各个元素之间的关系,是Docbook规定好的。
此所谓的规定,就是用某种方法,解释出来,并且要解释的清楚易懂。
而直接用文字去描述的话,比如book下面可以嵌套多个chapter,chapter下面可以有
多个section等,
首先真容易把Docbook的人累死,因为单纯用文字描述清楚如此复杂的关系,真的需要
太多文字的解释。
其次,用纯文字描述,语义上不是足够明确。
而计算机领域内,有对应的,专门用于描述,类似于Docbook中的各个“单词”之间的关
系的语言。
而Docbook就是采用他们,来解释清楚,Docbook中有哪些元素,以及这些元素之间的
关系又是啥样的。
目前已经实现了的,包括Relax NG,SGML,XML DTDs,W3C XML Schema
通过如此描述,可以简介而精确的描述出Docbook的内容,即有哪些元素和元素之间的
[提 到底这些描述语言,比如DTD,XML Schema等,都是啥样子的
示] 关于到底这些描述语言,都长的啥样子的,都是如何工作的,可以去看:DTD vs
XML Schema
看完后,就可以大概的了解到,这些描述语言,是怎么回事了。
而对于具体的更多的描述语言的细节,作为Docbook使用者来说,我们可以不必太关心
我们需要关心的是,docbook中有哪些元素,以及他们之间的关系。然后如何去正确的
使用它们。
所以,简单总结可以理解为:
Docbook是一种模式,其规定了包括哪些元素以及这些元素之间的关系。
而包含的元素以及元素之间的关系,是用对应的Schema Language去描述的。
目前已经Docbook实现了的Schema Language有:Relax NG,SGML,XML DTDs,W3C XML
Docbook(虽然不仅仅只支持这些,但是)更加适用于计算机(软件和硬件)相关的书籍和
Docbook的 下载页面 => Libxml => Igor Zlatkovic提供的Windows下二进制版本
的xsltproc中,去下载:
1. xsltproc主程序
libxslt-1.1.26.win32.zip
其中包含我们所需要的xsltproc可执行文件:xsltproc.exe
2. 运行xsltproc所需要的一些库
为了在windows下面运行xsltproc,还需要一些其所依赖的库:libxml2,iconv,zlib
下面依次贴出下载地址和简单的解释:
□ libxml2-2.7.8.win32.zip
C语言实现的XML解析器。
其支持N多规范或协议,比如XML,XML-NS,XPath,XPointer,XInclude,UTF-8/
UTF-16,XML Catalog,Canonical XML,Relax NG等。
□ iconv-1.9.2.win32.zip
字符编码转换。比如从UTF-8转换为GB18030,就可以用iconv。
□ zlib-1.2.5.win32.zip
压缩工具。
下载了这四个文件后,解压,然后都会得到一个包括bin,include,lib三个文件夹。
全部都合并到一起后,放到上述介绍的12中,即可。
把xsltproc的路径添加到PATH环境变量中.
为了可以在windows的命令行cmd中直接输入
xsltproc就可以执行,而不需要绝对路径,此处需要把xsltproc所在路径,我此处的的是
:E:\DevRoot\docbook\tools\xslt\bin,添加到windows的环境变量PATH中去。
[提 如何设置windows环境变量
示] 关于如何添加相应路径到windows的环境变量中,不熟悉的可以参考:
Windows的环境变量
[提 更新版本的xsltproc相关的二进制文件
示] 如果想要用更新版本的xsltproc,即相关的各个所依赖的二进制文件,想要下载更新
版本的话,
可以去参考:
【已解决】docbook中用xsltproc处理xsl文件时用xsl:import引用本地css,js等文件
时,必须加上file:///或file://的前缀才可以
中的"如何组合出来相对比较新的版本的xsltproc"即可。
1.2.3. 下载docbook-xsl-ns-1.77.1
为了将xml源码转换为html,fo等文件的话,需要相应的配置文件,以控制输入的效果和格
式,这就需要相应的配置文件。
此处的配置文件,就是xsl格式的stylesheet(样式表)。
docbook官方网站中,有对应的最新的办法的xsl样式表文件,是放在sourceforge上的:最
新的docbook-xsl-ns所在的页面
截止当前,最新版本的是1.77.1版本的docbook-xsl-ns,下载下来对应的
docbook-xsl-ns-1.77.1.tar.bz2后,解压,放到上面刚建立的10中
1.2.4. 下载fop-1.0并添加fop配置文件
[注 如果没有安装java,请先安装java
意] fop的运行,依赖于java运行环境。
如果你的windows中,还没有安装java,请先安装java运行环境(JRE=java runtime
environment)。
关于java的基本知识和如何安装,不了解的请参考:Java
java已经安装好前提下,另外记得确保JAVA_HOME环境变量已经正确设置好了。
比如,我的系统中的是:
JAVA_HOME=D:\Program Files\Java\jre7
1.2.4.1. 下载fop-1.0
从:fop主页 => Apache(TM) FOP Version 1.0 => fop下载页面 => FOP Distribution mirror中
,可以找到第一链接,是官网推荐给你的,然后进去后可以找到binaries文件夹,进去后
,下载到fop-1.0-bin.tar.gz,比如我这里得到的地址是:bjtu的fop-1.0-bin.tar.gz
下载解压后,放到上面建的11中即可。
1.2.4.2. 配置FOP的环境变量FOP_HOME
为了更好的让fop自动搜索对应的lib库,需要去设置fop的一个环境变量FOP_HOME。
此处即为,设置对应的环境变量为:
FOP_HOME=E:\DevRoot\docbook\tools\fop-1.0
1.2.4.3. 添加fop配置文件fop.xconf
将原先的11中的conf文件夹中的fop.xconf拷贝一份出来,放到9下
然后打开该文件,找到fop=>renderers中的fonts部分,然后添加对应的配置,变成:
file:///c:/windows/fonts/
即完成了对应的配置。
[提 关于FOP的字体配置
示] 关于fop的更多字体配置方面的内容,可以去参考官网的解释:Custom Fonts
1.2.5. 准备docbook的源码:xml文件
将如下内容:
Docbook5环境搭建演示
本文主要介绍了如何在纯Windows的环境下搭建Docbook 5开发环境
本文章遵从:署名-非商业性使用 2.5 中国大陆(CC BY-NC 2.5)
第一章的标题
关于更多的Docbook方面的内容,可以去参考:Docbook开发手记
第一章第一小节的标题
可以在这里输入第一章第一小节中的内容
第一章第二小节的标题
第一章第二小节标题
存为UTF-8编码的docbook5_demo.xml文件。
用于后期演示使用。
[提 如何建立UTF-8编码的文件
示] 可以参考Notepad++的多种编码支持,去用Notepad++建立相应的UTF-8编码的文件。
1.2.6. 从xml生成html
1.2.6.1. 为生成html准备配置文件
将如下内容:
Microsoft YaHei
Microsoft YaHei
Microsoft YaHei
Cambria Math
此处请自行将E:/DevRoot/docbook换为你自己当前的目录。
注意,此处的路径中是正斜杠'/',而不是反斜杠'\',否则会导致xsltproc无法识别
存为UTF-8格式的docbook_html.xsl
放到前面建的8中。
1.2.6.2. 将xml转换为html
将xml源码转换为html话,只需要用xsltrpoc一步操作就可以了:
打开windows的命令行cmd,切换到上面建的6下
然后运行如下命令:
xsltproc -o ../output/html/docbook5_demo.html E:\DevRoot\docbook\config\docbook_html.xsl docbook5_demo.xml
即可生成相应的docbook5_demo.html
截图效果如下:
[generated_]
1.2.7. 从xml生成pdf
1.2.7.1. 为生成pdf准备配置文件
将如下内容:
Microsoft YaHei
Microsoft YaHei
Microsoft YaHei
Cambria Math
存为UTF-8格式的docbook_fo.xsl
同理,不要忘了参考上面的1,把E:/DevRoot/docbook换为你自己当前的目录。
把docbook_fo.xsl放到前面建的8中。
1.2.7.2. 将xml转换为fo
同理,在6下
用下列命令去生成fo:
xsltproc -o ../output/fo/docbook5_demo.fo E:\DevRoot\docbook\config\docbook-xsl-ns-1.77.1\docbook_fo.xsl docbook5_demo.xml
相应的屏幕输出为:
E:\DevRoot\docbook\books\docbook5_demo\src>xsltproc -o ../output/fo/docbook5_demo.fo E:\DevRoot\docbook\config\docbook-xsl-ns-1.77.1\docbook_fo.xsl docbook5_demo.xml
Making portrait pages on USletter paper (8.5inx11in)
1.2.7.3. 将fo转换为pdf
再继续执行下面命令:
E:\DevRoot\docbook\tools\fop-1.0\fop.cmd -c E:\DevRoot\docbook\config\fop\fop.xconf -fo ../output/fo/docbook5_demo.fo -pdf ../output/pdf/docbook5_demo.pdf
相应的屏幕输出为:
E:\DevRoot\docbook\books\docbook5_demo\src>E:\DevRoot\docbook\tools\fop-1.0\fop.cmd -c E:\DevRoot\docbook\config\fop\fop.xconf -fo ../output/fo/docbook5_d
-pdf ../output/pdf/docbook5_demo.pdf
六月 07, :38 下午 org.apache.fop.apps.FopFactoryConfigurator configure
信息: Default page-height set to: 11in
六月 07, :38 下午 org.apache.fop.apps.FopFactoryConfigurator configure
信息: Default page-width set to: 8.26in
六月 07, :41 下午 org.apache.fop.hyphenation.Hyphenator getHyphenationTree
严重: Couldn't find hyphenation pattern zh_cn
如此,就可以正常生成对应的pdf文件了,截图效果如下:
[pdf_with_b]
[pdf_with_t]
[pdf_body_n]
1.3. Windows环境下的,基于Cygwin的Docbook开发环境的搭建
其实如果只是普通的用用docbook去写技术文档,那么上述的纯windows的docbook开发环境
xsltproc + fop + docbook-xsl-ns
已经够用了,即对于普通的docbook开发者的话,看到此处,已经足够了。
但是如果你也是像我一样,需要用到写更多的技术文档,需要用makefile等去管理各个
book的编译,去传递定制的参数给xsltproc
以及利用Linux下面的一些常用工具,去实现特定的需求的话,那么就要用到cygwin了。
1.3.1. 安装Cygwin
关于什么是Cygwin和如何安装Cygwin,请参考:Cygwin
需要注意的是,安装时候,记得要选择以下几个库/模块:
1. xsltproc
用于将xml转换为HTML和FO等格式
2. xsltproc所依赖的一些库
xsltproc运行的话,需要依赖一些库,所以也要选上这些库。
同时,后期的一些其他处理,比如编码转换等,也需要相关的像iconv等工具,所以要
安装上这些工具,方便后期使用。
□ libxml2
□ libxslt
3. [docbook-xsl]
如前面第 1.2.3 节 “下载docbook-xsl-ns-1.77.1”中的解释,为了生成各种格式的文
件,是需要对应的xsl配置文件的。
其实这部分配置文件,新版本的cygwin中,也有了,所以可以选择安装,也可以不安
□ 安装的话,就是选择对应的模块docbook-xsl
安装的理由是,cygwin自带的xsl,其实版本已经够新了,也基本足够用了。而且
总类也很多,包括docbook-xsl,docbook-xsl-ns等等。
□ 不安装的理由是,可以自己去按照前面的第 1.2.3 节 “下载
docbook-xsl-ns-1.77.1”一样去手动自己下载最新版本的,自己所需要的
docbook-xsl。
因为最新的版本,往往功能上更加全。
所以,是否安装此docbook-xsl的话,可以根据自己的需要决定。
个人更加倾向于后者,自己手动下载最新版本的。
安装完毕cygwin后,可以查看对应的这些工具的版本等信息:
CLi@PC-CLI-1 ~/develop/docbook/books/soft_dev_basic/src
$ which xsltproc.exe
/usr/bin/xsltproc.exe
CLi@PC-CLI-1 ~/develop/docbook/books/soft_dev_basic/src
$ xsltproc --version
Using libxml 20708, libxslt 10126 and libexslt 815
xsltproc was compiled against libxml 20708, libxslt 10126 and libexslt 815
libxslt 10126 was compiled against libxml 20708
libexslt 815 was compiled against libxml 20708
1.3.2. 下载cygwin下使用fop-1.0
按理来说,cygwin下,直接是可以正常使用1.0版本的fop的,但是后来遇到那个很多人都
遇到的NoClassDefFoundError的问题。
所以,要在cygwin下使用fop-1.0之前,去解决掉此问题:
将fop中(大概是189行)的:
LCP_TEMP=`cygpath --path --unix "$LOCALCLASSPATH"`
#LCP_TEMP=`cygpath --path --unix "$LOCALCLASSPATH"`
# for cygpath has bug, so use follow workaround
# edit by admin AT crifan DOT com
LCP_TEMP=`cygpath --path --$format "$LOCALCLASSPATH"`
LCP_TEMP=`cygpath --path --unix "$LCP_TEMP"`
详情参看:【终极解决】fop错误:Exception in thread "main"
java.lang.NoClassDefFoundError:org/apache/xmlgraphics/image/loader/ImageContext
的终极解决办法,即cygpath有bug,转换路径出错,导致部分路径被截断
第 2 章 Docbook开发过程中的注意事项和心得
2.1. Docbook 4和Docbook 5的区别
2.2. 关于实体定义
2.3. qanda系列的用法
2.4. FOP相关注意事项
2.4.1. FOP的字体设置
2.5. Docbook开发过程中的一些有用的提示
2.5.1. Docbook最佳实践
2.5.1.1. Docbook中id的命名规则
2.6. Docbook开发过程中如何调试错误
2.6.1. 举例说明如何实现方便地调试Docbook生成pdf过程中所出现的错误
2.7. Docbook开发过程中的一些感悟
2.7.1. Docbook更关注内容
2.7.2. Docbook与盖楼
2.8. Docbook环境进化过程简单记录
2.1. Docbook 4和Docbook 5的区别
其实对于普通的Docbook的使用者来说,其实不必关心如何从Docbook4转到Docbook5,但是
对于像我之前借鉴别人的docbook的xml去写docbook的源码的话,就需要关注一下了。
因为之前的很多Docbook的元素(Element),其实都是Docbook5之前的,所以现在是在用
Docbook5的框架,但是却使用了部分的之前的元素。因此,需要列出一些需要注意的事项
此处列出几个在使用时候需要注意事情:
1. 记得要给book,article等添加命名空间:
2. ulink被link取代了
关于交叉引用,link等方面的改变,去看Improved cross-referencing and linking
3. bookinfo,articleinfo等都被info取代了
关于更多的改变了名字的元素,去看Renamed elements
关于更多在docbook5中去除了的元素,去看Removed elements
4. 支持了用alt和annotation给元素添加注释
5. 新加了XSLT 2.0的支持
更多详细的内容,请参考:DocBook 5 differences
2.2. 关于实体定义
如果想要输入一些特殊字符的话,那么可以考虑使用实体(Entity)定义。
o 用&rA来表示双等号右箭头:=>
o 用™来表示trademark商标:(TM)
o 用&来表示单横线双向箭头:
而对这类特殊字符,之前是通关使用自己单独定义的crl.ent文件而实现的。其包含如下内
但是实际上,对于这些字符,官网已经有了标准的定义了。
然后在参考了http://docbook.org/docs/howto/#faq-authoring-general-entities,得知
如下地址中有全部的定义:
http://www.w3.org/2003/entities/2007/w3centities-f.ent
对应的,http://www.w3.org/2003/entities/2007/中,也有其他相关的ent文件。
其中,也可以看到那个很常见的,包含了全部定义的文件:http://www.w3.org/2003/
entities/2007/w3centities.ent
更多关于实体定义的解释,可以去看:XML Entity Declarations for Characters
而知道了有这么好的资源,就可以直接利用了,即,将上面的那个文件,改成:
添加对应的revhistory部分,可以根据自己的需要,放到合适的位置
text-align,space-before等相关的设置,可以参考其他部分的设置,照葫芦画瓢,
写出自己需要的配置。
然后将其另存为titlepage.templates_crl.xml,放在当前文件夹下。
再用如下命令去编译出相应的xsl文件:
xsltproc --output titlepage.templates_crls.xsl1 D:/tmp/tmp_dev_root/cgwin/home/CLi/develop/docbook/tools/docbook-xsl-ns-1.76.1/template/titlepage.xsl2 titlepage.templates_crl.xml3
输出xsl的文件名
xsl-ns自带的titlepage的template
上述的,经过自己修改之后的xml模板文件
这样,就可以生成相应的titlepage.templates_crls.xsl了,然后去把此xsl文件添加到自
己的配置中去:
用此配置编出来的pdf,就可以保护对应的revhistory部分的内容了。
详情参考【已解决】docbook中pdf中没有出现/显示revhistory所对应的历史版本
关于这个问题,多说几句:
revhistory问题,同样也是releaseinfo所遇到的,默认pdf中都没有包含。
在mailing list中看到别人在2005年的时候,就讨论到此问题,默认pdf中没有
releaseinfo:
missing from fo book titlepage template?
而相关的开发人员Michael Smith也回复说,以后会添加此功能,结果我现在2012年了,用
的fop 1.0 + docbook-xsl-ns-1.76.1,其中默认配置所输出的pdf中,也还是没把
releaseinfo添加进来的。
而同样的问题,也出现在revhistory,默认输出的pdf中,是没有的。而默认输出的HTML中
对此问题,即便是为了官网在解释如何定制化titlepage的教程中,把revhistory当做例子
来解释,但是如此常用的功能,也应该在pdf输出中,像HTML输出一样,把其加入进来,否
则对于多数使用者,在源码中写了revhistory和releaseinfo,结果输出的HTML中有,PDF
中却没有,肯定会造成现在所已经出现的问题,就是大家都以为这个问题是个bug,所以
google也能搜到一堆这类问题。
最新的结果是,新出的docbook-xsl-ns-1.77.0中,也还是没有把revhistory和
releaseinfo包含进来,真是无语。。。
生成pdf的时候出错:严重: Image not found. URI: xxx.png. (See position xxx)
原因:从问题本质上说,在图片存在的前提下,都是图片路径不正确。
但是对于为何图片路径不正确,至少有两种类型错误:
1. 本身图片路径设置有误
原因:对于图片本身所在的路径,没有正确指定对应的图片的地址,包括自己文章相
关的图片的地址,和docbook系统相关的callout/admon/navig等相关的
callout.graphics.path,admon.graphics.path,navig.graphics.path等路径。
解决办法:自行查找自己所设置的路径正确与否。
2. 运行环境不同,导致当前路径所相对应的图片路径有误,而找不到图片
之前由于某次改变了运行环境,换到了别的路径下,执行相应的命令去生成html和pdf
,结果出现找不到图片的错误。
原因:换了运行脚本的路径,导致之前所设置的图片的相对路径,变得无效了。
解决办法:确保运行的环境所处的路径,是自己所期望的。
详情参考【已解决】docbook最后生成pdf的时候出错:严重: Image not found. URI:
xxx.png. (See position xxx)
3.10. 想要给book中的标题下面添加一个版本号
没有找到专门的元素。暂时先借用releaseinfo来实现放此版本号等内容。
详情参考【已解决】给docbook中的book添加最新的版本号
3.11. 输出的pdf中的revhistory历史版本的内容中的表格无边框,想要添加边框
解决办法:添加如下配置:
0.5pt solid black
0.5pt solid black
详情参考【已解决】给docbook所输出的pdf中的revhistory历史版本的表格,添加边框
3.12. 如何去掉docbook中输出的pdf中,除了带链接的文字之外的那个链接地址
原因:PDF配置中,默认开启了ulink.show,所以会导致链接的地址,也同链接的文字同步
显示出来。
解决办法:设置ulink.show为0即可。
给xsltproc传递参数
–-stringparam ulink.show 0
或者添加如下配置:
详情参考【已解决】去掉docbook中输出的pdf中,除了带链接的文字之外的那个链接地址
3.13. 给docbook生成的pdf中的带链接的文字,添加下划线和设置字体颜色为蓝色
解决办法:添加如下配置:
详情参考【已解决】给docbook生成的pdf中的带链接的文字,添加下划线和设置字体颜色为
3.14. 如何给docbook的pdf添加bookmark书签的功能
解决办法:
添加如下配置:
详情参考【顺带实现】给docbook的pdf添加bookmark书签的功能
更多的关于fop1.extensions的解释,可以去看:Installing an XSL-FO processor和
fop1.extensions
3.15. Docbook的pdf,去除正文对于标题的缩进indent
解决办法:
添加如下配置:
详情参考【已解决】Docbook的pdf,去除正文对于标题的缩进indent
3.16. 生成的pdf中emphasis无效果,想要实现给pdf中emphasis的文字加粗或斜体
原因:由于当前使用的是中文字体,中文字体没有对应的粗体和斜体,所以无效果。
与此相对的是,很多英文字体,是有对应的粗体或斜体的,所以会有效果。
而其他word等文字处理软件中,中文字体也有粗体和斜体的效果,只是相应软件处理生成
出来的效果。
解决办法:此处想要给emphasis的文字的颜色设置为brown
主要就是修改inline.italicseq和inline.boldseq的部分,把相应的font-style="italic"
和font-weight="bold"都改为color="brown"即可。
即添加如下配置:
详情参考【已解决】docbook中生成的pdf的(中文字体的)emphasis无效果,没有加粗或
斜体等效果
3.17. 如何给(docbook中的)xsl中定义实体Entity
解决办法:参考如下中的xsl_ns_base_cygwin如何定义的,即可:
antiquewhite
Unexpected valign value:
, center used.
Unexpected valign value:
, center used.
详情参考【已解决】给docbook中的表格(table)的第一行(firstrow或thead)添加背景
3.21. 如何用docbook生成chm(微软帮助文件)?
解决办法:
总的逻辑是:使用htmlhelp.xsl生成相关的HTML文件和一个总的配置文件htmlhelp.hhp,
再用微软的工具hhc去将htmlhelp.hhp转换为对应的chm文件。
当然,使用htmlhelp.xsl的时候,别忘了加上自己的配置,我的配置如下:
对于HTML添加设置:
详情参考【已解决】如何设置Docbook中的图片的标题为中间对齐
3.35. 生成PDF中,程序代码programlisting中单行代码太长,超出页面宽度,无法显示
解决办法:添加设置
详情参考【已解决】Docbook生成PDF中,程序代码programlisting中单行代码太长,超出
页面宽度,无法显示
3.36. Docbook生成的pdf中,当表格在quote中时,表格头部却在底端显示,而且如果内容是多行
的,还会显示出多行
原因:是自己误用了quote所导致的。
解决办法:对于block类型的内容,如table等,应该使用blockquote而不是quote。
详情参考【已解决】Docbook生成的pdf中,当表格在quote中时,表格头部却在底端显示,
而且如果内容是多行的,还会显示出多行
3.37. Docbook中的callout图片在programlisting中不显示
原因:参考的代码是官方的,其用的是areaspec,但是xsltproc不支持areaspec,所以
programlisting中不显示callout图片
解决办法:使用co,放到代码中对应位置即可。可参考如下代码:
chip-&cmdfunc(mtd, NAND_CMD_READ0, 0x00, page);
要读取数据,肯定是要先发送对应的读页(read page)的命令
详情参考【已解决】Docbook中的callout图片在programlisting中不显示 -> xsltproc不
支持areaspec
3.38. An fo:block is wider than the available room in inline-progression-dimension
29, :07 org.apache.fop.events.LoggingEventListener processEvent
An fo:block
(See position 668:2859) is wider than the available room in inline-progression-dimension. Adjusting end-indent based on overconstrained geometry rules (XSL 1.1, ch. 5.3.4)
29, :07 org.apache.fop.events.LoggingEventListener processEvent
Line 1 of a paragraph overflows the available area by 4390 millipoints. (See position 668:2859)
org.apache.fop.layoutmgr.table.TableContentLayoutManager addAreas
tablePositions empty. Please send your FO file to fop-users@xmlgraphics.apache.org
出现类似fo:block is wider than the available room in
inline-progression-dimension的问题的话,从字面上就能看出,是block比inline宽,超
我之前遇到此问题,是在不熟悉quote的用法时,将属于block类型的table等内容,放到了
属于inline类型的quote中,导致上面的问题的。
详情请参考:【已解决】Docbook生成的pdf中,当表格在quote中时,表格头部却在底端显
示,而且如果内容是多行的,还会显示出多行
所以遇到此类问题的话,请自行去找找,是不是也误用了某些关键字,把属于block的东西
,放到了属于inline中去了。
解决办法:找到误用的关键字,换成适当的关键字
3.39. TransformerException: The column-number or number of cells in the row overflows
the number of fo:table-columns specified for the table
javax.xml.transform.TransformerException: org.apache.fop.fo.ValidationException: The column-number or number of cells in the row overflows the number of fo:table-columns specified for the table. (See position 12:37135)
从字面上就能看出,是说明某个列数或者是单元格数目,超过了表格所定义的
比如我此处不小心写成的:
USB 3.0的引脚定义
ShellShellShield
即在tgroup中定义了cols列数为4,结果不小心在tbody中的某行,错写了某个entry,
nameend为col5,超过了本身所定义的最多4列,因此才出现此错误。
解决办法:去对应表格中,仔细找找,肯定是有某处,不小心,写错了,导致列的书目或
者是单元格的数目,超过了table的tgroup中所定义了列数了。
3.40. 如何通过xref(在别处)引用某个段落(para)?
可以给para添加一个包裹层,比如用tip包裹起来para,然后给tip添加id属性,然后就可
以在别处引用此para了。
后来又知道了Docbook中还有个formalpara,即正式的段落,带标题的段落
如果想要实现段落引用,个人觉得使用formalpara效果会更好,这样,段落还可以带标题
比如我后来就遇到一个情况,希望引用别处的某段代码,其是在某个para里面的,之前的
做法是专门用tip给这段programlisting包裹起来,然后给tip添加id属性,然后在别处引
用此源码,现在就可以把tip换成formalpara,然后给formalpara添加id属性,这样就方便
别处引用此formalpara了
解决办法:使用formalpara,然后给formalpara添加id属性,即可在别处通过xref引用
3.41. WARNING: Content overflows the viewport of the fo:region-body on page 9 in
block-progression direction by 99828 millipoints. (See position 2:5700)
警告说是,有些的内容显示,溢出实际所定义的范围了
出现溢出的东西,有多种,有的是表格内的文字溢出单元格,有的是图片显示超过了当前
页面等等,而使得显示出来的效果,超过了其可视范围(viewpoint)
此溢出问题,有些是无关紧要的,在显示出来的效果上,也看不出有啥异常。
有些则是显示出来的效果,的确有重叠,覆盖等问题。所以,要根据实际情况而定。
解决办法:当显示效果没啥异常的话,可以忽略此警告。如果显示效果的确有问题了,则
需要去找到对应的代码的位置,进行微调,比如修改表格中单元格的宽度设置等,以避免
内容溢出而导致的内容显示异常问题。
3.42. PDF中callout不能点击跳转(而HTML中却可以)
原因是fo的xsl中co的配置,对于arearef没有正确添加对应的fo:basic-link的
internal-destination,导致了生成的pdf中,callout图片不带链接,无法点击。而对应
的HTML的xsl配置中,有对于arearef的处理,会生成对应的href,所以HTML中是callout是
可以点击的。
解决方法:给fo的xsl中添加如下配置即可:
Error: coref link is broken:
Error: coref doesn't point to a co:
详情参考:【全部解决】Docbook生成的PDF中callout不能点击跳转(而HTML中却可以)
示] 相关的支持callout和co的internal-link,以便可以互相点击实现跳转的功能的针对
docbook-xsl-ns-1.77.0版本的patch,我已经提交到docbook了:
add internal-link support for callout and co - ID: 3531945
不知道官网会不会采纳偶的patch,会不会添加到下一个版本中呢,呵呵,期待中...
后记:对于上述我写的代码,已经被Robert Stayton修改增强后,提交了。
此处已确认,截止,最新版本的docbook-ns是1.78.1,已经包含了此部分
的代码,从而:
不论在html或pdf中,点击callout,都可以互相跳转了。
3.43. callout图片在programlisting的源码中不显示
callout图片,虽然可以在callout注释中显示,但是却在programlisting的源码中不显示
其原因在于,xsltproc不支持areaspec,而官网对于programlistingco的例子中,却用的
是areaspec,结果就是按照例子写出来的代码,用xsltproc生成的结果,callout图片在源
码中不显示。
解决方法:不用arespec,改用co,放在programlisting的代码中具体的位置,即可。示例
代码如下:
例 3.1. co用法示例
chip-&cmdfunc(mtd, NAND_CMD_READ0, 0x00, page);
要读取数据,肯定是要先发送对应的读页(read page)的命令
详情参考:【已解决】Docbook中的callout图片在programlisting中不显示 -> xsltproc
不支持areaspec
3.44. 如何在(只使用co而没有使用areaspec的)源码中多个位置,指向同一个co(callout)?
之前已经实现了源码中的callout,详见:【已解决】Docbook中的callout图片在
programlisting中不显示
但是后来遇到的需求是,希望在源码中的多个位置,都设置同一个co
之前的临时性的办法是,使用linkends指向另一个co:
= s3c24xx_nand_suspend,
= s3c24xx_nand_resume,
很明显,效果很不好。
后来无意间发现有个coref,发现正是我想要的,对应的用法如下:
例 3.2. coref用法示例
= s3c24xx_nand_suspend,
= s3c24xx_nand_resume,
生成的HTML中的效果,如下:
图 3.1. coref在HTML中的效果
coref在HTML中的效果
解决办法:使用coref,设置linkend属性值为某共同的co的id,即可
3.45. 新的docbook-xsl-ns-1.77.0生成的html中的revhistory中单元格无边框
原因:新版的docbook-xsl-ns-1.77.0相对于旧版的docbook-xsl-ns-1.76.1,改变了
部分的设置,导致新的边框的属性的设置,只应用于整个表格,而单元格的边框没有设置
解决办法:添加如下配置:
RevHistory
1px solid black
revhistory
详情参考:【已解决】新的docbook-xsl-ns-1.77.0生成的html中的revhistory中单元格无
3.46. WARNING: Glyph "?" (0x21b5, carriagereturn) not available in font
"MicrosoftYaHei".
原因:某些个人的特殊字符,此处为Unicode值为0x21b5的特殊的回车键形状的字符:?,
对应的字体无法显示,所以报错。
解决办法:给该特殊字符添加role="xxx",其中xxx为别的某种类型的字体。比如,将原先
回车(&)后再输入:
回车(&)后再输入:
详情参考:【已解决】Docbook用fop生成pdf过程中出现警告:WARNING: Glyph "?"
(0x21b5, carriagereturn) not available in font "MicrosoftYaHei".
3.47. 如何实现给table中(多个)特定位置添加相应的注释?
有两种办法:
1. xreflabel + note/tip
通过使用xreflabel的方法,加入到table中特定位置。然后注释部分的内容放在table
之外的tip或note中。
缺点是,很不方便用户使用,不直观
参考代码:
...(两个单声道)...
双声道文件由两个独立的单声道所组成。大多数解码器把双声道输出成立体声,但是实际上,不是所有的双声道都是立体声的。
关于xreflabel,更详细的解释,请参考官网的Linking from other elements
2. co + calloutlist + callout
在table的对应位置使用co,然后在table之外的calloutlist和callout中添加对应的
注释内容。
优点是,可以支持自动编号,且可互相点击跳转。
参考代码:
...控制字符...
即在C语言中或其他地方如何表示。
详情参考:【已解决】找到更好的方法,给Docbook中的表格(table)添加注释(
note) -> 用co(和calloutlist,callout)
第 4 章 Docbook参考资料
4.1. Docbook相关的资源和工具下载
4.2. 关于对于Docbook的介绍和解释方面的资料
4.3. 关于对于Docbook的开发过程中可以参考和查阅的资料
4.1. Docbook相关的资源和工具下载
o docbook的样式表stylesheet
Docbook Sourceforge
想要下载Docbook的相关的stylesheet,即各种xsl配置文件的话,可以去此docbook官
网下载页面去下载
包括各种版本,及最新版本的的,docbook-xsl-ns
o 搭建windows下的docbook开发环境所需要的各种工具
之前最早的找到的是zlatkovic的下载页面:/pub/libxml/
后来发现其还有个64bit的子页面,包含更多的,更新版本的,编译好的,win32的,
二进制包,供下载:
/pub/libxml/64bit/
之后,又发现,其中部分的内容,xml官网也已经提供下载了:
http://xmlsoft.org/sources/win32/
4.2. 关于对于Docbook的介绍和解释方面的资料
1. Docbook的HelloWord
单个HTML页面的版本
多个HTML页面的版本
mindmap版本
特点:入门参考经典资料
算是在Docbook的中文方面,最早的,解释的最全的资料了。
2. Ubuntu Docbook Wiki
特点:中文,解释的很清晰易懂.
3. Docbook简介 by 熊伟
告] 此网站会被赛门铁克检测出病毒
特点:内容不多,但是解释的深入浅出
4. 开源世界旅行手册之 Docbook指南
特点:清晰明了。东西概括得很好,尤其是很多基本概念,解释的到位。
5. Docbook Beginning
特点:解释的简洁易懂
6. DocBook - Tutorial by Lars Vogel
特点:老外写的,基于Eclipse搭建的环境,内容很新,更新很及时。目前最近的更新
而且还有国人帮忙翻译了一下:DocBook与Eclipse - 教程
4.3. 关于对于Docbook的开发过程中可以参考和查阅的资料
1. DocBook XSL: The Complete Guide – Fourth Edition – by Bob Stayton
特点:最权威解释的。
关于docbook的最权威的,官网的教程。
有任何问题,上去找,一般都可以找到答案或参考。
2. DocBook XSL Stylesheets: Reference Documentation
特点:参数大全
关于各种输出格式,HTML,FO(PDF),manpage,website等等的参数方面,有哪些参
数,具体如何配置,都可以去这里找到。
3. Linux C编程一站式学习
特点:(除了本身教程写的好之外,)docbook的xml源码可下载供参考
关于C编程的概念和知识,解释的很透彻,值得一看。
除了教程写的很有价值,其还把docbook的xml源码也公开了,可下载做参考。
相应html也可打包下载。
所以很适合,最开始写docbook源码的时候,做为参考代码。
4. DocBook 5: The Definitive Guide by Norman Walsh
特点:Norman Walsh写的,最权威的关于docbook5的参考资料
放在后面介绍,并不代表不重要。只是因为是英文写的,不适合做入门资料。
适合当参考书,有需要的时候去找相关内容再细看。
5. DocBook 5 快速起步教程 by tanghw
特点:入门的参考教程
解释的很详细,适合入门者。东西解释的够全,很多知识点都值得参考参考。
只不过其搭建环境是Mac,不是很多人常用的Windows。
6. DocBook 文件寫作入門 by 老貢生
特点:部分内容可做参考
台湾人写的。解释的比较详细。等遇到相关知识,也许可以做参考。
7. Installing And Using An XML/SGML DocBook Editing Suite by Ashley J.S Mills
特点:很多例子,还是可以参考参考的。而且内容也很全面,从环境搭建到例子,全
部都有。还介绍了用各种工具,转换成各种不同的格式的用法。
8. DocBook – Tutorial by Lars Vogel
简单介绍了如何写docbook,其中有关于用Eclipse平台的方法。
9. 一张图片总结了Docbook生成各种格式的途经
这里一张图片,就总结了,关于Docbook的各种方法,生成各种格式的文件。
10. DOCBOOK编译环境参考手册 by 廖佳亮
中文的docbook的教程,写的还不错,有空可以参考参考。
11. Docbook Frequently Asked Questions
Docbook的FAQ
里面详细介绍了,各种常见问题。
个人觉得比较有帮助的有:
Docbook tools
其中记录了,关于Docbook相关的一些工具,比如xsltproc等相关的问题和解决办法
12. The Docbook Project
Docbook的主页
算是Docbook的入口了,想要找一切关于Docbook的东西,都可以先去那里看看,说不
定会有意外发现。
13. 关于Docbook中Table的一些资料
尤其是DocBook的表格CALS和HTML的表格的比较,很值得看看:
Comparison of CALS and HTML tables
其中,也有关于表格中列的宽度的介绍:
Column widths
14. 关于如何添加新的字体
之前别的教程中,最开始部分介绍的关于添加字体的内容,估计就是参考官网的这部
分的解释:
Chapter 13. Print customizations – Adding a font
15. 关于在生成对应的HTML或者pdf的时候,需要按照自己的需要,配置输出的效果
主要分两种方法,一种是写对应的xsl配置内容,放到自己的xsl文件中去。
另外一种就是使用相应的参数控制。
对应的这些参数有哪些,以及具体含义,在这里可以找到(注:此处是用的xsl是
docbook-xsl-ns-1.76.1):
DocBook XSL Stylesheets: Reference Documentation
(也可以下载其pdf版本,留着当做参考书)
对于HTML的参数都在这里:1. HTML Parameter Reference
对于(用fo生成的)PDF的参数控制,都在这里:2. FO Parameter Reference
关于如何使用这些参数,可以参考一些相关的帖子:
ulink.show:【已解决】去掉docbook中输出的pdf中,除了带链接的文字之外的那个
fop1.extensions:【已解决】Docbook的pdf,去除正文对于标题的缩进indent + 【
顺带实现】给docbook的pdf添加bookmark书签的功能
16. 想要给pdf添加书签bookmark,以及支持更多种图片的话。
那么可以在使用xsltproc的时候,添加对应的参数即可。
对于使用fop的话:
如果是用的0.20.5或更早的版本,参考这里:Processor Extensions –
fop.extensions添加这个参数:
--stringparam fop.extensions 1
如果是用的0.90及更新的版本,参考这里:Processor Extensions –
fop1.extensions添加这个参数:
--stringparam fop1.extensions 1
我现在所用的fop是1.0的,所以用的是fop1.extensions。
17. 参数配置,可以通过传递--stringparam给xsltproc,也可以通过xsl:param写入到自
己的xsl配置文件中
折腾其他参数的过程中,无意间看到:
使用FOP将中文DocBook xml转换成pdf的实现记录
中是将参数写成这样的:
而与此相对,我之前都是写到–stringparam中的,所以,将原先的命令:
xsltproc.exe --stringparam section.autolabel 1 --stringparam section.ponent.label 1 --stringparam bibliography.numbered 1 --stringparam ulink.show 1 --stringparam ulink.footnotes 1 --stringparam table.cell.border.color green --stringparam table.frame.border.thickness 2pt --stringparam fop1.extensions 1 --stringparam body.start.indent 0pt --xinclude -o ../output/fo/MPEG_VBR.fo /home/CLi/develop/docbook/config/docbook-xsl-ns-1.76.1/fo/docbook_crl.xsl MPEG_VBR.xml
xsltproc.exe --xinclude -o ../output/fo/MPEG_VBR.fo /home/CLi/develop/docbook/config/docbook-xsl-ns-1.76.1/fo/docbook_crl.xsl MPEG_VBR.xml
加上docbook_crl.xsl中的相关配置:
这样,每次就不用输入那么多的配置参数了。
而需要额外的参数配置,也就都可以写到xsl文件中了。
此时,也才理解,原来DocBook XSL Stylesheets: Reference Documentation
中的HTML和FO(PDF)的那么多参数,每个都有个语法解释,比如:
table.cell.border.color中的:
指的就是,将此配置,写入到xsl文件中。而之前一直都不知道,都傻傻地加入到
xsltproc的参数中去了。
18. 对于catalog相关的知识,这一章有详细介绍: Part I. Setting up the tools –
Chapter 5. XML catalogs
包括xsltproc中如何使用catalog的内容:
Using catalogs with xsltproc
19. 关于pdf实现一定输入效果,会涉及到xsl文件参数配置。
这里:Docbook Stylsheet Customisation
列出了常见的一些配置参数,包括:章节编号的深度控制,给tip和warning加图片,
给programlisting加背景色等。
20. 使用Docbook建网站
如果想要通过Docbook建立网站,可以参考此文:How to use the Docbook Website
21. 基于Ant的Docbook开发环境:ant4docbook
这里有专门的别人已经帮你搭建好的,基于ant的docbook的开发环境:ant4docbook
目前看到的已支持多种格式:html,pdf,epub,docx,rtf,
22. 用Ant编译Docbook
ant的官网中,也有介绍:Create DocBook XML based documentation with Ant
第 5 章 未解决的问题
5.1. 支持各种语言的代码的语法高亮
5.2. 中文hypernate断字
5.3. 给callout的co重新编号
此处记录Docbook中的一些还没有解决的问题
有人知道解决办法的话,希望可以联系并告知我,谢谢。
5.1. 支持各种语言的代码的语法高亮
折腾过程参见:【已放弃】给Docbook中代码programlisting实现高亮显示
5.2. 中文hypernate断字
折腾过程参见:【部分解决】docbook的programlisting中,单行的连续字符太长,超出
pdf边界和【已解决】Docbook生成PDF中,程序代码programlisting中单行代码太长,超出
页面宽度,无法显示
5.3. 给callout的co重新编号
【未解决】docbook中给callout的co重新编号
第 6 章 Docbook各种元素用法举例
6.1. chapter, section, sect1-sect5
6.3. 图片figure
6.4. 表格,表格嵌套,表格单元格合并
6.5. 注释callout
6.6. 链接,引用
6.8. list列表系列
6.9. 简单列表simplelist,literallayout
6.10. xinclude文件,xinclude文件中的其中一部分的内容
6.11. filename:文件,文件夹,后缀名,
6.12. admonitions:note,caution,warning,tip和important
6.12.1. note
6.12.2. caution
6.12.3. warning
6.12.4. tip
6.12.5. important
6.13. 一些inline元素:keycap,guibutton,keycombo
6.13.1. keycap
6.14. programlisting代码和screen屏幕输出
6.14.1. programlisting代码
6.14.1.1. 带CDATA的programinglist示例
6.14.1.2. 不带CDATA的programinglist示例
6.14.2. screen屏幕输出
6.14.2.1. 带CDATA的屏幕输出screen
6.14.2.2. 不带CDATA的屏幕输出screen
记录Docbook中,各种元素(element)的当前最新版本的示例用法
以下代码示例中,暂定均不含注解(callout),以方便借鉴者,直接拷贝代码,就可以参
此处,尽量添加实际的例子,以便快速掌握用法。
其中,贴出来的xml源码,部分可能被删减,以防内容太长或者是和此处CDATA等内容冲突
6.1. chapter, section, sect1-sect5
例 6.1. chapter,section,sect1-sect5
交叉编译器简介
相关旧帖:嵌入式开发之交叉编译器
交叉编译器的名字的命名规则
在折腾嵌入式开发,用到交叉编译器的时候,常常会看到这样的名字:
arm-xscale-linux-gnueabi-gcc
arm-liunx-gnu-gcc
其中,对应的交叉编译器的前缀为:
arm-xscale-linux-gnueabi-
arm-liunx-gnu-
而关于这些名字,我之前也是没注意,或者说很模糊,不是很清楚这些名字是从何而来的。
后来,经过折腾了crosstool-ng后,基本上明白了这些名字,是如何生成的。
其中,貌似此交叉编译器命名的规则,应该是通用的,至少记得是Buildroot中,好像也是这样命名的。
下面,就以crosstool-ng为例,参考我之前折腾crosstool-ng期间:
【整理】crosstool中如何设置xscale的Tuple’s vendor string(CT_TARGET_VENDOR)
所了解到的内容,来解释解释,这些名字的含义。
crosstool-ng中交叉编译前缀的命名规则
crosstool-ng中,交叉编译器的(前缀)的名字的命名规则是:
arch-vendor-kernel-system
对应分别是:
交叉编译器名字中的system部分
system,直译为,系统
其实主要表示的,交叉编译器所选择的库函数和目标系统
最常见的一些值有,gnu,gnueabi,uclibcgnueabi等等。
其中,此处有几方面的值,表示了几方面的含义:
system中的uclibc
uclibc,是c库中的一种
crosstool-ng中,目前支持三种:glibc,eglibc,uclibc
关于三种的关系,详见:
【整理】uclibc,eglibc,glibc之间的区别和联系
crosstool-ng中system为uclibc的情况
crosstool-ng中,和system中uclibc对应的值,应该就是"C-library"中的"C library"的值设置为"uClibc"了。
C library (uClibc)
对应的配置参数是:CT_LIBC_uClibc
对应的help的解释是:
例 6.2. 普通的段落:para
在折腾嵌入式开发,用到交叉编译器的时候,常常会看到这样的名字:
【整理】crosstool中如何设置xscale的Tuple’s vendor string(CT_TARGET_VENDOR)
例 6.3. 带标题的正式的段落:formalpara
段落的标题
段落的内容
6.3. 图片figure
例 6.4. 带标题的图片:figure
图片的标题
例 6.5. figure内包含2张mediaobject图片
HID Usage page summary
例 6.6. 不带标题的非正式的图片:informalfigure
在同一行内显示图片,之前docbook 4使用inlinegraphic
而根据Inline graphics,而现在docbook 5已废弃使用inlinegraphic ,改用
inlinemediaobject。
例 6.7. 行内图片:inlinemediaobject
右击cmd的左上角的图标
,会出现对应的菜单:
6.4. 表格,表格嵌套,表格单元格合并
例 6.8. 表格:table
USB Class表
Base ClassDescriptor UsageDescription
00hDevice Use class information in the Interface Descriptors
01hInterfaceAudio
02hBothCommunications and CDC Control
03hInterfaceHID (Human Interface Device)
05hInterfacePhysical
06hInterfaceImage
07hInterfacePrinter
08hInterfaceMass Storage
09hDeviceHub
0AhInterfaceCDC-Data
0BhInterfaceSmart Card
0DhInterfaceContent Security
0EhInterfaceVideo
0FhInterfacePersonal Healthcare
DChBothDiagnostic Device
E0hInterfaceWireless Controller
EFhBothMiscellaneous
FEhInterfaceApplication Specific
FFhBothVendor Specific
例 6.9. 带嵌套(embedded)表格:informaltable
6.5. 注释callout
例 6.10. programlisting的callout:programlistingco
static struct platform_driver s3c2410_nand_driver = {
= s3c2410_nand_probe,
= s3c2410_nand_remove,
= s3c24xx_nand_suspend,
= s3c24xx_nand_resume,
= "s3c2410-nand",
= THIS_MODULE,
probe就是系统“探测”,就是前面解释的整个过程,这个过程中的多数步骤,都是和你自己的Nand Flash相关的,尤其是那些硬件初始化部分,是你必须要自己实现的。
remove,就是和probe对应的,“反初始化”相关的动作。主要是释放系统相关资源和关闭硬件的时钟等常见操作了。
suspend和resume,对于很多没用到电源管理的情况下,至少对于我们刚开始写基本的驱动的时候,可以不用关心,放个空函数即可。
对应的screenco,就是把programlistingco和programlisting换为screenco和screen即可
screenco举例如下:
例 6.11. screen的callout:screenco
crosstool-ng-1.18.0
crosstool-ng-1.18.0_build
crosstool-ng-1.18.0.tar.bz2
crosstool-ng的源码包:,解压后的文件夹
包含了crosstool-ng的相关源码
专门为后期使用crosstool-ng去建立交叉编译器,的编译(build),而专门建立的文件夹
对应的,后续的ct-ng menuconfig,ct-ng build等命令,都是在此文件夹下执行的。
为crosstool-ng中,后续需要下载各种软件的源码包,而准备的,
crosstool-ng中,在开始执行build之后,会去下载对应的源码包,都会存放到这个文件夹下
这个文件夹,是,用crosstool-ng所生成的交叉编译器,所在的路径。
对应的配置中,会有,类似于:
(${HOME}/develop/crosstool-ng/x-tools/${CT_TARGET}) Prefix directory
的配置,用来指定生成的交叉编译器,存放在何处。
此时,就是去设置为此处对应的路径即可。
很明显,这个就是之前我在折腾crosstool-ng-1.18.0时,去下载的源码包了。
对应的上面的,就是此源码包解压后的路径。
对应的table中添加callout,就是在table的任意位置使用co,然后再table之外使用
calloutlist+callout即可。
下面这个例子,是自己摸索出来的,通过在任意位置使用co,然后别处直接可以使用coref
引用该co,且不一定需要对应的callout和calloutlist:
例 6.12. 没有callout的co实现在任意位置使用co然后在别处使用coref去引用
Evacuation procedures are implemented whenever the fire alarms have been activated.
The following rules and policies are binding for every employee who works at the premises of M&M Software (Suzhou) GmbH
1-20单词的含义
序号英文单词中文含义说明注释
evacuation疏散,撤离指失火了,要逃离的情况
premises经营场所此处是公司地址,场所的意思
不过目前此种用法,有个小bug,那就是生成的HTML中鼠标虽可点击,但是无法跳转,不过
生成的PDF中是正常的支持鼠标点击co和coref互相跳转的。
6.6. 链接,引用
链接,使用link代替旧的ulink:
注意,是在顶层的chapter,sect1等中,定义对应xlink的域名的
例 6.13. 带xlink域名的link
crifan的Python库:crifanLib.py
之前在折腾BlogsToWordPress:将百度空间,网易163,新浪sina,QQ空间,人人网,CSDN,搜狐Sohu等博客搬家到WordPress 的过程中,先后遇到很多个问题,然后基本上也都自己解决了。对应的也写了相应的代码和函数。
引用,很简单,就是用xref而已:
例 6.14. xref引用
上述gif动画演示,只支持HTML在浏览器中的显示。其他格式输出中,比如PDF中,不支持此gif动画。所以下面再用文字解释一下大概流程:...
用文字简述就是:
用文字解释如何在Windows的cmd中运行Python脚本BlogsToWordpress.py
例 6.15. 等式equation
CBR播放时间(CBR Duration)
CBR Duration
= File Size(Byte) × 8 bit/Byte ÷ (Bitrate(K bit/s)× 1000 bit/Kbit )
CBR播放时间
= 文件大小(字节)× 8比特/字节 ÷(比特率 千比特/秒 ×1000 比特/千比特)
6.8. list列表系列
例 6.16. itemizedlist
例 6.17. 带emphasis的itemizedlist
例 6.18. 带指定编号类型的orderedlist
总的帧数:VBR中的总的帧的数目。
帧的采样个数:对于MP3(MPEG1,Layer III)来说,是固定的1152个采样。
帧的采样率:通过解析第一帧,即可得知帧采样率索引,查表,即可得此采样率。
6.9. 简单列表simplelist,literallayout
例 6.19. 简单列表simplelist
MP3文件的内容组织结构
第二帧,格式如下:
[ID3......]ID3 V2的头,大多数最新的MP3,都有这个头
[APE 头]用于APE格式的头,现在也用于MPEG
[TAG ......] 128字节的ID3 V1信息,如果没有前面的ID3 V2,多数都有这个ID3 V1的头
例 6.20. 简单列举literallayout
Nand Flash第3个ID的含义
DescriptionI/O7I/O6I/O5 I/O4I/O3 I/O2I/O1 I/O0
Internal Chip Number1
6.10. xinclude文件,xinclude文件中的其中一部分的内容
在主文件docbook_dev_note.xml中:
例 6.21. xinclude主文件中使用xinclude
Docbook开发手记
然后被包含的文件中,是正常的xml文件。
比如preface.xml:
例 6.22. 被xinclude包含的子文件:preface.xml
Docbook介绍
什么是Docbook
比如ch01_build_env.xml:
例 6.23. 被xinclude包含的子文件:ch01_build_env.xml
Windows下的Docbook的环境搭建
搭建Docbook之前需要知道的最基本的事情
6.11. filename:文件,文件夹,后缀名,
当去表示一个普通文件,文件夹,符号链接,分区,库文件,头文件,设备文件等等内容
时,可以用filename这个关键字。
关于filename的详细语法,可参考:docbook elelment: filename
例 6.24. filename是文件,文件夹的例子
此处,只是去修改对应的.build/src/linux-custom/scripts/unifdef.c,即可。
比如:我之前,除了,解压crosstool所得的文件夹crosstool-ng-1.18.0之外,去建立了一个对应的文件夹:crosstool-ng-1.18.0_build
同时,为了后续crosstool-ng下载对应的各个包,也建立了对应的src和x-tools两个文件夹。
例 6.25. 示例:filename是后缀名
提示:其中可以看到Notepad++自动帮你写好了.py后缀,那是因为你之前设置了Python语法高亮。
6.12. admonitions:note,caution,warning,tip和important
Docbook中有个一系列的术语叫做admonitions,包含了note,caution,warning,tip和
6.12.1. note
例 6.26. note举例
如果没有安装java,请先安装java
fop的运行,依赖于java运行环境。
如果你的windows中,还没有安装java,请先安装java运行环境(JRE=java runtime environment)。
关于java的基本知识和如何安装,不了解的请参考:Java
java已经安装好前提下,另外记得确保JAVA_HOME环境变量已经正确设置好了。
比如,我的系统中的是:
JAVA_HOME=D:\Program Files\Java\jre7
6.12.2. caution
例 6.27. caution举例
此处不要通过make时加LDFLAGS参数去添加-lintl和-lcurses
其实,上面贴出来的,修改makefile的办法,的确已经解决了此处的,缺少intl和缺少ncurses的库的两个问题了。
只是,后来,在另外一个Cygwin环境下去折腾同样的make编译crosstool-ng的时候:
【记录】Cygwin下配置编译和安装crosstool-ng
由于之前解决上面这个问题的时候:
【已解决】Cygwin 1.7.17下make编译crosstool-ng出错:zconf.tab.o:zconf.tab.c:(.text+0x162a): undefined reference to `_libintl_gettext'
用的解决办法是:
不去修改makefile,而直接给make加上LDFLAGS参数加上-lintl:
make LDFLAGS="-lintl"
当时也是可以解决此问题的。
6.12.3. warning
6.12.4. tip
例 6.28. tip举例
如何设置windows环境变量
关于如何添加相应路径到windows的环境变量中,不熟悉的可以参考:
Windows的环境变量
6.12.5. important
6.13. 一些inline元素:keycap,guibutton,keycombo
参考:Inline Docbook Elements
而看到,Docbook中有个一系列的术语叫做内嵌元素(inline elements),比如,keycap,
guibutton,keycombo
这些元素,可以通过css配置而达到3D显示的效果:
6.13.1. keycap
例 6.29. keycap举例
按PrtScn键可以截屏。
此处,就用上面的代码,加上合适的css去配置,在浏览器中打开编译输出的网页,就能看
到下面的这个PrtScn可以显示出3D的效果:
按PrtScn键可以截屏。
6.14. programlisting代码和screen屏幕输出
docbook中用于代码和屏幕输出等内容,对应的是programlisting和screen
[提 XML中的实体和CDATA
示] 对于docbook中写programlisting和screen等方面的东西
会涉及到CDATA方面的事情,其和XML的中的实体有关。
对于XML的实体不了解的,可以去参考:XML中的实体引用
6.14.1. programlisting代码
6.14.1.1. 带CDATA的programinglist示例
例 6.30. 举例:带CDATA的programinglist
for (setno = 0; setno scan_res = nand_scan_ident(&nmtd->mtd,(sets) ? sets->nr_chips : 1);
if (nmtd->scan_res == 0) {
s3c2410_nand_update_chip(info, nmtd);
nand_scan_tail(&nmtd->mtd);
s3c2410_nand_add_partition(info, nmtd, sets);
if (sets != NULL)
上述,就是由于programlisting的内容中出现了&,,才用括起来的。
6.14.1.2. 不带CDATA的programinglist示例
例 6.31. 举例:不带CDATA的programinglist
for (setno = 0; setno & nr_ setno++, nmtd++) {
pr_debug("initialising set %d (%p, info %p)\n", setno, nmtd, info);
s3c2410_nand_init_chip(info, nmtd, sets);
nmtd-&scan_res = nand_scan_ident(&nmtd-&mtd,(sets) ? sets-&nr_chips : 1);
if (nmtd-&scan_res == 0) {
s3c2410_nand_update_chip(info, nmtd);
nand_scan_tail(&nmtd-&mtd);
s3c2410_nand_add_partition(info, nmtd, sets);
if (sets != NULL)
上述,就是由于programlisting的内容中出现了:&,
所以才分别用:&,&,&,去替换的。
6.14.2. screen屏幕输出
screen适合用于表现:对于软件开发等过程中,屏幕输出信息之类的内容
6.14.2.1. 带CDATA的屏幕输出screen
例 6.32. 举例:带CDATA的screen
查看单个的某个示例配置的核心参数,用:
<![CDATA[ct-ng show-]]>
上述,就是由于screen的内容中出现了,才用括起来的。
6.14.2.2. 不带CDATA的屏幕输出screen
例 6.33. 举例:不带CDATA的screen
查看单个的某个示例配置的核心参数,用:
ct-ng show-&sample&
上述,就是由于screen的内容中出现了:
所以才分别用:&,&,去替换的。
第 7 章 Docbook相关的知识和概念
7.1. 输出类型:html和打印输出print out
7.2. docbook中的条件编译:profiling
7.3. 关于docbook中的图片方面的内容
7.4. docbook的一些变体
7.4.1. 简化版的docbook
7.4.2. docbook(制作)幻灯片
7.4.3. docbook(制作)网站
7.1. 输出类型:html和打印输出print out
在将docbook的xml源码,转换输出为其他格式的时候,最常见的两大类是:HTML和fo
然后基于html,有多种对应的可选的输出类型,比如单个html,多个html,htmlhelp(即
chm),webhelp等等。
而基于fo,则可以再转换为其他的格式,比如pdf,ps等等。
此处,在docbook中,html和fo,则分别对应着:html和print out打印输出,算是两种不
同的输出类型。
7.2. docbook中的条件编译:profiling
Docbook中有个类似于一般编程中的条件编译的东西,叫做:
即,你在xml源码中,加上一些参数,然后在输出生成HTML或FO的时候,会根据你所设置的
条件,去执行相应的动作。
例 7.1. 添加role参数实现条件编译
Nand Flash数据读取操作的时序图
然后编译的时候,就会根据你所输出的是HTML,就调用上面的那个fileref中scalefit="0"
的配置,而生成FO的时候,fileref的配置中的,就使用scalefit="1"了。
7.3. 关于docbook中的图片方面的内容
一般常见模式是,在xml源码同路径下,存在一个images文件夹,然后把自己文章相关的图
片放进去。
此类图片的地址,在xml中都是很简单的images/xxx.jpg之类的。
另一些图片,就是和docbook系统相关的了,其随着docbook的xsl文件一同发布的,在
docbook-xsl-ns-1.76.1\images中可以找到。
共分好几类,包括:
1. callout
1,2,。。。,30
caution,important,note,tip,warning
home,prev,next,up
基本上,每种类型,都有对应的矢量的svg图片,和普通的bitmap类型的gif/jpg/png图片
7.4. docbook的一些变体
7.4.1. 简化版的docbook
首先我们要知道的是,对于docbook本身,这个规范
其包含了很多元素,比如book,title,para,sect1,sect2,等等等等,
参考:Writing Documentation Using DocBook
一共有超过400个元素(还不包括元素的各种属性)
而后来,由于大家在实际使用中,发现貌似完整版的docbook,有点太复杂了。
而很多时候,比如只将docbook用于写个article,技术手册(white paper)等等情况时,只
需要用到其中部分的元素,就够用了。
所以,后来就又弄出一个docbook的简化版:Simplified DocBook
简化版的docbook,只包含了大约119个元素(还有其他相关的555多个实体,29个符号)
很明显,相对于400多个元素的,完整版的docbook,还是要简化不少。
注意,此处的简化版的docbook,并非官网标准,而是所谓的community project,即由
docbook社区发起的,逐渐丰富和制定出的一个标准。
简化版的docbook的主页:
Simplified DocBook DTD
相关页面:
Simplified DocBook Home
Simplified DocBook
7.4.2. docbook(制作)幻灯片
类似于上面的简化版的docbook,这个docbook slides,也是个社区标准,而非官方标准。
其中,最新版本的docbook-xsl-ns中,可以找到对应的样式表stylesheet,比如:
docbook-xsl-ns-1.78.1/slides
相关页面:
DocBook “Slides”
7.4.3. docbook(制作)网站
类似于上面的简化版的docbook,这个docbook websites,也是个社区标准,而非官方标准
其中,最新版本的docbook-xsl-ns中,可以找到对应的样式表stylesheet,比如:
docbook-xsl-ns-1.78.1/website
相关页面:
DocBook “Website”
附录 A. 已通过Docbook发布的资料
A.1. 基础知识相关
A.2. 嵌入式相关
A.3. 上层软件相关
A.1. 基础知识相关
1. 字符编码详解
2. 软件开发基础知识
3. 各种计算机语言简介和总结
4. JSON详解
5. 正则表达式学习心得
6. 计算机编程语言基础知识
7. 详解抓取网站,模拟登陆,抓取动态网页的原理和实现(Python,C#等)
A.2. 嵌入式相关
1. 【详解】如何编写Linux下Nand Flash驱动
2. Uboot中start.S源码的指令级的详尽解析
3. MPEG简介 + 如何计算CBR和VBR的MP3的播放时间
4. Linux MTD下获取Nand flash各个参数的过程的详细解析
5. 如何在Linux下写无线网卡的驱动
6. 【详解】嵌入式开发中固件的烧录方式
7. 在Linux运行期间升级Linux系统(Uboot+kernel+Rootfs)
8. GNU Binutils详解
9. 交叉编译详解
10. crosstool-ng详解
11. USB基础知识概论
12. 如何实现Linux下的U盘(USB Mass Storage)驱动
13. USB HID Learning Record
14. 详解ARM的AMBA设备中的DMA设备PL08X的Linux驱动
15. 硬件电路基础知识
16. ARM与MIPS的详细对比
17. 【详解】中断相关的知识
18. 现场总线Field Bus简析
19. Code 128 Symbology Introduction
20. GS1-128条形码和相关的AI及FNC1的详解
21. Plessey & MSI Symbology Introduction
22. UPC/UPC-A/UPC-E & EAN Barcode Symbology
A.3. 上层软件相关
1. Docbook开发手记
2. 建设网站详细教程
3. 网站搬家详解
4. 详解crifan的C#库:crifanLib.cs
5. C#学习心得
6. Python语言总结
7. python初级教程:入门详解
8. python中级教程:开发总结
9. Python专题教程:字符串和字符编码
10. Python专题教程:抓取网站,模拟登陆,抓取动态网页
1. crifan推荐软件
2. 【crifan推荐】轻量级文本编辑器,Notepad最佳替代品:Notepad++
3. 英语学习笔记
4. 买房详细教程
5. 电脑基础知识教程
6. 虚拟机教程
7. VirtualBox教程
8. VMWare教程
[1] 理解docbook
[2] XML中的实体引用
[3] DTD vs XML Schema
[4] xml的命名空间namespace
[5] XML Entity Declarations for Characters
[6] RELAX NG - XML syntax
[7] 一个简单的Docbook 5.0例子
[8] 在Windows上安装配置Apache FOP
[9] DocBook 5 differences
[10] Profiling
[11] Graphics
[12] Using XIncludes with DocBook 5
[13] Selecting part of a file
[14] qandaset
[15] docbook elelment: filename
[16] Cygwin
[17] Notepad++的多种编码支持
[18] 【已解决】给Docbook生成的静态HTML页面添加统计访问次数的代码
[19] 【记录】将docbook的xsl-ns从当前的docbook-xsl-ns-1.77.1升级到
docbook-xsl-ns-1.78.1
[20] 【整理】制作pdf文件后,保持原先word文档中的页内链接和超链接+常见pdf打印机
安装使用方法简介
[21] 【终极解决】fop错误:Exception in thread "main"
java.lang.NoClassDefFoundError:org/apache/xmlgraphics/image/loader/ImageContext
的终极解决办法,即cygpath有bug,转换路径出错,导致部分路径被截断

我要回帖

更多关于 妹妹有点不一样 的文章

 

随机推荐