着手写本开源书了
感情一团糟, 只能让自己忙碌起来吧, 转移自己的视线。
我可以参考的东西:
1. 源码开放学ARM(LASO - Learn ARM with Source Open) http://www.lumit.org/
2. GotGit && GotGithub && 群英汇蒋鑫 http://www.worldhello.net/
3. ProGti http://progit.org/
4. 深入浅出:嵌入式底层软件开发
参考资料:
http://www.ituring.com.cn/article/828
http://www.ituring.com.cn/article/details/764
http://larrycai.github.com/2012/01/13/ebook-chinese-fonts.html
要做的工作:
1. 申请 www.akagi201.com 域名
2. 用 github pages 搭建自己的博客
3. 用博客宣传自己, 开网店, 接点私活(只做自己感兴趣的技术, 不是为了钱而奔波)
4. 最终发布网页版, PDF版, ePub版, mobi版
备注:
华章只认 WORD,最后编辑交稿还是基于 WORD 格式,出版社对开源书也没有把握。
O'reilly 允许作者同 Word 和 DocBook 两种格式交稿,其他出版社在排版工具上恐怕都没有跳出 Word 的框框。不过 DocBook
写起来太麻烦,不是所见即所得,还是 Markdown、reST 更好。asciidoc 也可能是一个方向。
喜欢 reST 是因为语法更丰富,足以应付撰写书稿。sphinx 包含对 reST 的扩展以及编译 reST
文稿到多种格式。到Word的转换可能是瘸腿,上一本书排版阶段用Word从HTML读入,手工套用样式转换。
@群英汇蒋鑫 写的#Github指南# http://t.cn/SfngKN, 就是用ReStructured Text写,sphinx生成的,这个可能比markdown好,docbook的缺点是xml。
这个我说过了http://t.cn/SfncH7 。我觉得可以和图灵合作,要考虑CSS什么的,如果下决心的话,要用docbook或者markdown等开源的写文章。http://t.cn/7qUnb 用markdown的。http://t.cn/hgVvBC 用docbook的。
我不太懂Indesign,就技术书出版的话,前两天在图灵的微博上聊过,我建议看看O'reilly的(Approved Formats) http://t.cn/Sf707T
用docbook可以很方便的转换出各种常见格式。markdown我也喜欢,也能方便转换。
信息已丢失了。不太可能转成好的Mobi和ePub,我记得ePub和mobi像是能比较好的互转。要从源开始转成各个格式。
开源书和开源技术-Markdown篇
背景
看到霍泰稳关于infoq的架构师电子书问题的微博和图灵社区的文章为什么写作自由书籍?,我就想通过一个用Markdown格式写的Pro Git开源书 的例子来介绍其中用到的技术。希望能借此机会推动国内电子书,特别是开源电子书的发展。
【声明】我并没有写书的经历,这里只是对电子书出版技术的入门介绍而已。
从Pro Git说起
如果你了解Git,或者想了解Git。那么你就应该知道Pro Git,它是Git的书中写得最好的一本(至少是之一),可是你是否知道它有网络中文版,而且能在iPad上极其漂亮得阅读。并且是免费的,不是盗版的免费!如果你想要最新的,你甚至可以自己生成它。哈哈,我就是这么干的。
这一切就归功于开源社区和它后面用到的技术。
开源书
这里我不用多讲,开源书就像其他的开源产品(如维基百科)一样,只要是开放的,社区就有人会贡献。Pro Git的作者Scott很慷慨得把书的内容全部共享在github/progit库中,使用得是CC BY-NC-SA 3.0。
Scott只负责英文版,其他许许多多语言的翻译都是社区贡献的,中国翻译相当有质量,你可以在线读Pro Git中文版。
开源技术生成电子书
这本书不仅仅开源了内容,使用的技术也是开源的。让我们看看他是怎么做的。
markdown原始文件
首先书的内容是用markdown格式写的。markdown格式的普及要归功于Github和StackOverflow。因为它们越来越流行,它们支持markdown格式也越来越流行。这里要赞一个的是,国内的图灵社区也支持markdown,用起来超级方便。
简单来说,markdown格式的文件看着像一般的文本文件,里面只是加了很少的格式标记,因此看文本文件也不影响理解,这种格式也有很多工具帮你去转化,而且很容自动化解决。并且这些技术大多数是开源或免费的。
你可以直接看一下【Pro Git】的“第一章 介绍” 的markdown原始文件,顺便看看github自动生成的简单“第一章 介绍” 的html。
产生电子书
epub/mobi格式
Ruby的rdiscount帮你从markdown转成html格式,然后有Calibre附带的命令ebook-convert
生成最终的.mobi
(Kindle) 和 .epub
(iPad)。
PDF格式
为了能达到出版的质量,Latex是一个常用的格式,PDF也能很容易的产生出来,有关Latex,自己看看参考链接学习吧。
pandoc能帮着从markdown转换出latex格式,然后TexLive软件中的xelatex
再转成PDF格式。
试验环境
你只需要一台Linux机器(虚拟机就可以了)和简单的Linux命令就可以试验了。有git和ruby的知识那就更方便了。
我用的试验环境是Ubuntu 11.04 (Natty)
下载Pro Git开源书
很简单,git clone
一下就可以了,下载它的源文件包我觉得还是烦了点。
$ git clone https://github.com/progit/progit.git
epub/mobi格式
做电子书相对简单一点,因为要求没有PDF的高,calibre就可以满足了。
如果装的Ubuntu是服务器版的(没有X-Windows),建议安装xvfb无头(headless)X服务器,因为不知道什么原因有几个命令需要。XMing还不行,因为需要X-Input
$ sudo apt-get install ruby rubygems # ruby 1.8.7 is used
$ sudo apt-get install calibre # calibre 0.7.44 for ubuntu 11.04
$ gem install rdiscount ruby-debug
$ xvfb-run ./makeebooks zh # 缺省.mobi格式
$ export FORMAT=epub
$ xvfb-run ./makeebooks zh # .epub格式
PDF格式
生成PDF是一个比较复杂的东西,pandoc用Ubuntu库里的,TexLive建议下载最新的TexLive包安装,并配置到搜索路径中。
$ sudo apt-get install pandoc
$ # 安装texlive 2011
因为是中文PDF,需要把字体嵌入在文件中,因此需要安装字体文件(如果不是Ubuntu中文版)
$ sudo apt-get install language-support-fonts-zh-hans
现在你就可以生成pdf文件了。
$ ./makepdfs zh
其他常用的格式
计算机类图书对格式要求不是很多,图文、章节、源代码基本就够了,就算有些复杂公式,也可用图来显示。这也从理论上说明,它不需要复杂的格式。现在对这类技术书出版我的理解主要有几种:
- Microsoft的Word格式,虽然国内出版界如日中天,缺省就认它(对技术没追求,鄙视)。简单好学,但是不擅长自动化,是开源的死敌。
- Latex格式(就是Donald E. Knuth(高德纳)发明的,这是很棒的东西,特别适合学术类的各种复杂的公式等,不过学习曲线很高,国内也只有几家学术期刊使用。
- docbook格式是最有名的(从SGML演化过来?),Orielly和Pragmatic出版社缺省就用它,它能 很方便的转化出出版要的各种样式。如Jenkins - the definition guide开源书就是采用docbook。但由于是XML格式,很多人不习惯,而且多人网上协作不是很方便。
- 通过蒋鑫的Got Github开源书,我也了解reStructureText也是和markdown差不多纯文本(plain text)的,也是蛮流行的。
如果有机会,我再介绍一下docbook和reStructureText的相关技术。
其他
本文也是我用git记录在github上的,你可以看到每次的变化。
如果对此文有兴趣,帮忙顶一下,别忘了 @larrycaiyu。
Latex的参考
- http://share.chinatex.org/
- http://manual.calibre-ebook.com/conversion.html
- linux">http://calibre-ebook.com/downloadlinux
- http://johnmacfarlane.net/pandoc/
- http://latex.yo2.cn/articles/latex-introduction0.html
- http://product.china-pub.com/54569
>docbook格式是最有名的(从SGML演化过来?),Orielly和Pragmatic出版社缺省就用它,它能 很方便的转化出出版要的各种样式。如Jenkins - the definition guide开源书就是采用docbook。但由于是XML格式,很多人不习惯,而且多人网上协作不是很方便。
DOCBOOK 只是一套规范格式,它可以用 SGML,XML 来写,XML的语法定义格式有DTD,XML Schema,Relax NG。我喜欢最常用的方式,使用 DTD 定义,XML来写,使用 XLST 和一些工具来输出其它格式。
从出版的角度,DOCBOOK 几乎是其它工具无法超越的。
不管是markdown, 还是textile 最初都是为输出 HTML为准备,正如 markdown 网站所说的那样,markdown 是 writing format, HTML 是它的最终 publishing format ,而且 markdown 相对较弱,主要针对以文为主文章,在文本表示方面远不如 DOCBOOK。DocBook 从一开始就考虑了多种格式的输出。而 markdown 只是定义们简化 HTML 编写过程,这样带来的问题,没有原生的输出其他格式,特别是 PDF,现在的方案都是通过中间格式转换。
SUN 和 Oreilly是 DOCBOOK 最初的推动力。目前 DOCBOOK 广泛用于开源社区文档组织,如大家熟悉的 Hibernate,Spring,JBoss 及 Redhat 其他商业产品(不过现在 JBoss 有部分移植到 Confluence Wiki上)的文档几乎都是用 Docbook。
非常可惜的, DOCBOOK 入门容易,但要自定义输出样式,需要对 DOCBOOK 规范和转换过程相当熟悉,这对国内的出版来说,似乎是难题,目前没有一家有自己的一套输出样式(我想 Oreilly和 Programtic 都有自己修改的一套样式,写完了DocBOOK 文件后,只要使用它们的样式输出来就是漂亮的文档了。)。
补充一点,基于markdown出书的话,考虑采用latex作为中间过程,这样就两者兼得:方便协作,又能达到书籍的质量
你试过docbook么?至少我在2008年前后的尝试给我的感觉是,用docbook格式写书,中文支持很成问题。
试过一点,要好的编辑器,而且还要考虑XML,有点烦。
当初选择使用Markdown而不是HTML,还是很有压力的。但是确实Markdown太好用了,所以值得冒风险。相信越来越多的人会喜欢上Markdown。
我现在的习惯做法是课堂笔记用LaTeX(因为经常涉及一些公式什么的), 其他格式比较简单的或者需要显示在网页上的就用reStructuredText写.