2. 我为何选择Docbook

主要是之前写的不少帖子,都是用word编辑,然后转换为PDF后发布的,但是此法存在几个问题

  1. 转换后的PDF不完美

    此处说的不完美,不是表面看上去的效果不好,而是pdf本身内部所包含的内容,有点瑕疵。

    主要是,当你选择一些内容,然后拷贝出来,粘贴到别的地方,比如word中,你会发现,几乎每一行的内容,都是对应的两行,第二行是重复第一行的,而且拷贝出来的内容,格式也是很乱的。

    这让我很不爽,因为我要追求的是完美的效果,即你用Word 2007/2010导出的PDF,也应该是在内部的内容和格式上,都是和原先word一致的才对。

    所以,后来有机会知道了Docbook,才决定不用word了

  2. word的不爽
    • 稳定性

      word作为基本的文字编辑工具,总体上来说,还是挺不错的,至少对于多数人如此。

      而对于我,有时候会遇到单个word文件,包含内容太多,比如99页,而遇到过,在编辑过程中偶尔死掉,导致差点丢失了一些已经编辑的内容。

      需要说明的是,我对于使用word和其他工具,已经养成了够好的习惯了,因为是编辑了任何地方,都是顺便Ctrl+S去保存一下的。保证不会出现由于没有及时保存而丢失内容的情况。

      但是对于上述所说的word的偶尔死掉而导致文件内容丢失的可能性,却是无法排除的。

      所以,还是觉得不太靠谱。

    • 兼容性

      微软的东西,兼容性已经做得足够好了,包括Office系列工具中的word

      但是对于之前使用word所遇到的情况,比如2003,2007,和2010等的兼容程度,以及从长远来看,都无法排除,用之前某个版本的word写的东西,无法用新的版本正常打开,且完全兼容旧版本,完全保留之前的所有的内容和设置。

      所以,保险起见,还是换用Docbook等xml源码的形式,不用担心在未来任何时刻,都可以完整的打开原始文档,保留所有原始内容和设置。

    • 格式排版

      如果只是写写一般短内容的帖子和文章,word的格式,排版等功能,算是非常好用的了。

      但是如果是写的内容非常多,涉及到各个部分的格式调整,即使用了word的模板去统一格式,也显得很繁琐。

      因此,内容比较多的话,用word去写,而且还要统一风格和设置,就显得效率比较低了。此时,换用Docbook等,就是很好的选择了。

  3. 发布格式单一

    之前的做法,都是用word写好,然后再转换为PDF。而新的2007/2010的word,支持直接导出PDF,而且已经支持页内链接,标签等(详见之前的帖子:【整理】制作pdf文件后,保持原先word文档中的页内链接和超链接+常见pdf打印机安装使用方法简介),已经算是蛮方便的了,但是还是只能发布PDF一种格式。

    而发布PDF格式的文件,好处是利于下载阅读,而且无法更改原文内容,坏处是无法方便的拷贝粘贴所需要的内容,不利于内容的传播和分享。

    因此,希望支持更多的格式,尤其是在线的HTML页面。

    而后来自从知道了Docbook,才发现,终于找到了我所想要的,同样的原文内容(xml源码),可以支持多种格式发布,至少包括HTML和PDF,这样就方便发布文章,利于文章内容传播了。

然后就是遇到了Docbook,基本上完美解决了我之前的所有问题,相对有很多好处:

Docbok的优点. 

  1. 一种输入,多种输出

    这个优点,对于我来说,是最看重的。

    即,写任何帖子,文章,的时候,只需要写好对应的xml源码,然后用已经搭建好的环境,编译生成多种格式。

    我目前已经搭建好的环境,是在Windows下面的Cygwin,已经自己写好了Makefile,这样,每次写完xml源码,直接make,就可以生成多种版本了,目前已经实现的有:单个的HTML网页文件,多个的HTML网页文件,PDF,RTF(即word文档,用word可以直接打开和编辑的),TXT的纯文本文件,微软的帮助文件CHM

    这样,就方便了文章以多种格式发布,和统一设置各种风格(显示效果)了。

    此所谓,一种输入,多种输出。

  2. 可以实现版本控制

    关于版本控制这一点,前面说word的缺点的时候,其实都没提到。那是因为此处我对写的帖子的版本控制,需求还不是特别高。

    但是的确,对于更加专业的人员,多人协作写同一本书,这种时候,版本控制,就显得尤为重要了。

    Docbook是原始输入,就是xml源码,都属于普通的文本Plain Text,所以很方便使用SVN等版本控制工具,对齐实现版本控制。

    这样,任何时候的任何改动,都可以实现追溯和管理了。

当然,相对来说,Docbook,至少对于我来说,也有一些缺点:

Docbok的缺点. 

  1. 前期的入门有点难

    此处所说的Docbook入门,指的是两方面

    • 搞懂Docbook是啥,有点难

      之前是一直多Docbook是啥,没太搞懂。

      其实现在也不是完全清楚,因为想彻底搞清楚,得多花时间去搞懂很多概念,包括DTD,Schema等等。

      不过,想要达到基本了解,够用,其实也就行了。更复杂的东西,可以在折腾的过程中去多了解了解。

    • 真正完全把Docbook的环境搭建好,也不容易

      其实折腾完毕后,才知道,想要搭建最基本的Docbook环境,能生成HTML和PDF,对于Docbook 5,其实并不难。

      但是对于之前最开始接触的那个Docbook 4.5以及之前版本,其实还是蛮麻烦的。

      然后搭建了最基本的Docbook 5的环境,在继续定制自己的配置,是需要一点点学习,了解,才能搞定如何配置的。还是需要花些精力的。

      当前,搭建好了自己的Docbook开发环境后,以后写完帖子的发布工作,那就简单了,直接Make或者输入命令,实现转换即可。

  2. 缺少所见即所得(WYSIWYG)
    [提示]WYSIWYG

    WYSIWYG是What You See Is What You Get的缩写。

    意思很清楚,就是,你所看到的,就是你所得到的。

    我们常见的微软的很多工具,包括word,就属于WYSIWYG,因为你是在编辑word文档的时候,所看到的内容,即除了本身输入的文字之外,还有那些已经设置好了的字体,颜色,排版等,都是和你最终所得到的结果,即你再次打开或别人拿到你的word文件去打开,所看到的效果是一样的。所以称,所见即所得。

    Docbook本身的核心就在于,非所见即所得,内容和形式(显示)分开,即你所输入的文章的内容,都是在xml源码中,而具体对应的这些内容的显示效果,都是由相关的配置文件和参数,有工具转换后,才能看到具体显示效果的。即本身就不是所见即所得的。

    而此处之所以把WYSIWYG列为Docbook的缺点之一,就是因为我们很多人,习惯了微软的Word等所见即所得的环境,突然换成了内容与显示效果分开的Docbook的环境,还真的需要一段时间的适应。

    另外,至于我自己,有时候,也的确想要去控制某些内容的显示效果,而无法很方便的配置出来,的时候,也偶尔会觉得,Docbook(加上配置文件和转换工具)在(所得到的)显示效果方面,的确是没有word方便。

    举个例子,就比如我想要源码高亮显示,目前所能找到的资料,除了官网的解释,是除了需要开启相应高亮的参数配置之外,还要添加相应extension,然后还需要是Saxon等环境和工具才可以,对于我所用的xsltproc+fop,竟然还不支持,所以很悲催的暂时放弃了代码高亮的功能。详见:【已放弃】给Docbook中代码programlisting实现高亮显示

    不过总的来说,类似于这些显示效果的控制方面,即使有时候没法实现或者不方便实现,在可以保证内容完整的前提下,没了这些效果,基本也是可以接受的。