无法

仅代表个人意见,不用当真。

零基础Gitbook自制电子书经验分享

想说,只要开始,就能到达。不要怕麻烦,这是开始前你得给自己做的心理建设!
  • 废话

之前因为纪念骑行川藏十周年,想要把骑记整理成电子书。因为我在那篇序言里提到没有制作电子书的基础,还不知道如何开始。有好心的朋友就私下给我推荐网上的教程,但那个时候,我还在忙于处理文字,离进行到实质制作阶段还有一定距离,敬谢之后收藏起来,准备到时研究。

没想到,终于处理完文章,要开始着手的时候,收藏的教程一个都不见了。我记得我都放入收藏夹的,打开浏览器却没有。想要再问别人说啊你以前推荐给我的教程能不能麻烦再发一遍,又觉得不好意思,没准人家也要重新去找半天,而且显得就很不礼貌,像是别人送你的礼物,随手丢掉了一样。于是,自力更生,艰苦创业,自己找吧。

在浩如烟海的网络教程里打滚了半天,最后锁定在一篇知乎文章里,《自己动手制作电子书的最佳方式(支持PDF、ePub、mobi等格式)》,这篇文章专注于一种方法,看上去很像是在手把手教,很适合我这种毫无基础,只会照猫画虎的人。

说干就干,按图索骥,虽然最后差点功亏一馈,经过不戒的帮忙才形成初稿,但总归问题解决了,我的电子书最后也顺利成形,为朋友们献了礼,又学到了新手艺,这是很让人开心的一件事。

老早打算,完成后写篇教程把制作过程和大家分享。因为matters的朋友们,也许有制作电子书需求的人不在少数,毕竟大家都埋头写了那么多字。很多人经历过其它网站的停运,辛苦写成的文字蚂蚁搬家移往另一处。万一不幸新的住所也不牢靠,就很让人气馁。网络总归是别人的地盘,生死由人,也许做成电子书存在本地,或者去中心保存在一些朋友那里更可靠呢。单纯当做备份也好,翻起来方便。尤其对于墙内的朋友,如果想把自己在墙外写的文章推荐给墙内的朋友,没有比做成电子书更好的方法了简直。

当然,有自信的话,还可以拿去换钱,就更不在话下。

好了,废话结束,进入正题。本篇主要参考上面提到的知乎文章,加上本人经验补充。本来想着就不要一步步copy了,但是又担心源文章有朝一日被隐藏或者删除,我这篇变成看不懂的残篇,所以还是采用引用+补充的方式。

想说,只要开始,就能到达。不要怕麻烦,这是开始前你得给自己做的心理建设!

  • 正题

  第一步:安装markdown编辑软件

Markdown我也是小白,不过只要不是非常复杂的排版,简单使用的话上手非常容易,不用担心。

至于软件,市面上有很多,这里有一篇知乎的介绍文章,供大家参考。我自己用的Typora,界面非常简洁,我很喜欢,不过要收费,大概100RMB。选择多了,最终用哪个,就看缘分了。官方有出在线编辑器,我个人觉得零基础的新手用这个在线的很好,因为它有示例,双屏界面,一边输入一边输出,一目了然。

  第二步:用markdown编辑文章

有些人早已养成了使用markdown写文章的好习惯,这一步就可以不用看。至于文章存在其它地方,比如matters、方格子的同学,这一步,需要将文章copy下来。复制粘贴到markdown编辑器,按需求稍作修改就好。这些地方应该都支持markdown语言,反正我贴过来的文章,基本格式都在,包括图片。这里有几点需要注意:

  1. markdown文档里的图片,无论是内链还是外链,只要源址有变化或者删除,文档里的图就会显示错误。所以,有图片的文章,这一点需要注意。比如你是整理探路客的文章,而探路客已经宣告了要关张,那你肯定不能直接复制过来完事,你得把它下载下来存在本地,或者重新上传到一个不会消失的网站再复制。如果是存在本地,最好是在电子书的目录下新建一个图片文件夹,要发送md文档,就和图片文件夹一起打包发送。当然,如果在源址消失前你已经完成了电子书制作,那md文档里的图片可能会消失,但电子书里的永远不会啦,放心吧。
  2. 每篇需要在目录里体现的文章单独保存为一个md文档,文档的名字最好和文章的名称一致,这样将会为后面的目录配置节省一些时间。
  3. 墙内的朋友,不要从Blogger文章里直接复制图片过来,它的格式不同,会导制最后一步卡壳。这是血泪教训,切记切记!至于墙外的朋友这么做会不会有问题,我没有试过,还不得而知。不过可以放心的是,方格子和matters外链都是没有太大问题的。我本来是从matters复制文章去方格子建专辑进行最后的编辑修改,谁知由于拖延症,后来来不及了,而matters那几天网络不友好,我打不开自己的文章,只能转而从我的草稿箱,也就是Blogger里复制到md文档,造成了后来的悲剧。

md文档,也就是素材部分准备完成,就可以进入下一步制作过程了。

  第三步:安装 Node.js 和 npm 环境

这两位具体是啥干啥用的我都不知道,你也别问我,跟着做就是。

官网下载Node.js,有对应于 Windows和macOS操作系统的的安装程序。我自己是windows,这篇文章也只介绍基于windows系统的方法,macOS的朋友若有需求,可以参考知乎文章,文中都有介绍。

我的电脑是64位,选择windows对应的64-bit,下载,傻瓜安装。如果你是W11的操作系统,那最新版本应该是最优选择。但可惜我是W10,因此安装完V16.15版本,后面的步骤失败了。

经过google大神的答案,卸载最新版,安装历史版,问题得到解决。我装的v10.21.0版,下载地址在这里

安装完成后,在CMD窗口输入node -v,可以查看安装版本,比如酱紫:

标题里提到的nmp环境是和node一起默认安装的,不用去管它。只要node安装好了,它就好了。(当然,除非你觉得自己很聪明,没有傻瓜操作,自己选择了不安装nmp。) 

  第四步:通过 npm 安装 gitbook-cli

在CMD窗口输入安装命令:

npm install -g gitbook-cli

回车之后,系统会自动安装。(对于一个码盲来说,这还挺神奇的。以前只懂下载,用安装程序安装,谁知道还可以这样呢,感觉就像点石成金。)

安装完之后,再执行gitbook -V命令确认是否安装成功:(V是大写)
gitbook -V
CLI version: 2.3.2
GitBook version: 3.2.3    

  第五步:安装 calibre

这是一个电子书格式转化软件,官网下载安装程序,也是傻瓜安装。

装完了在CMD窗口输入如下命令,验证 ebook-convert 是否能正常使用:
ebook-convert --version
如果输入上面的命令后提示错误,说明你还需要将 calibre 的安装目录添加到系统的环境变量中。

这一步的安装是很顺利,我没有提示错误,所以没有后一步。如果你提示了错误,请善于google查找将安装目录添加到系统的环境变量中的具体做法。(这说的什么跟什么呀!)

   第六步:项目初始化

本地新建一个空的文件夹,作为我们的电子书项目。文件夹的名字随便起,但建议用英文命名。建好后在当前项目下,执行如下命令,进行初始化:
gitbook init
此时,项目下会自动生成如下两个文件:(非常重要,必不可少)
README.md:书籍的简介放在这个文件里。
SUMMARY.md:书籍的目录结构在这里配置。

这一步对于大多数人来讲可能过于简单,但却耗费了我大量时间,因为我不知道什么叫做“在当前项目下执行命令”。如果你知道,可以跳过,下面这段是给和我一样的小小白看的,因为当时我在这里卡了很久。

方法:从windows界面左下的搜索框里输入CMD调出命令提示符,进入新建项目的盘符,比如你把它建在D盘下,就输入“D:”回车。如果文件夹名字叫mybook,再输入“cd mybook”,OK,这就成功打入项目内部了。在这里执行 gitbook init,哇,你看吧,成了!

D:\mybook>gitbook init
warn: no summary file in this book
info: create README.md
info: create SUMMARY.md
info: initialization is finished

这下再跑去文件夹下面,就能看到如下所示,新生成的介绍和目录文件。

README是介绍文件,大家应该不会陌生。用于介绍书本相关,可以当序言、编者按一类的文章进行编辑。SUMMARY是目录文件,需要根据我们的素材文件来编辑。

两个都是md文档,也就是,需要再次启用我们的markdown编辑器了。

  第七步:配置目录文件

用MD编辑器打开SUMMARY文档,按照下图所示的格式进行编辑。其中[]内将是电子书目录中显示的内容,原则上它可以随便改动,你爱改成啥改成啥,不影响电子书的生成。但是()里的内容,就得按照规矩来了。”./“是标准配置,不要动它,后面跟着的,是md素材的文件名,得和文档完全一致,不然,人家不能识别,也就不能从目录正确跳转去正文。

示例图片中,素材文档都直接存在mybook下边,如果你自己将它保存在比如”正文“这个文件夹下,那”正文“这个路径,就要代替”./“里的”.“。比如:* [Day1成都到平乐,只是热身](正文/Day1成都到平乐,只是热身.md)

最终生成的效果如下:

如果你的目录节点不是太多,就可以像我一样傻瓜操作,一个一个复制粘贴。而如果你的节点非常多,手动工作量太大的时候,可以采用另一种方法自动生成。这个办法又要装一些东西,我怕出问题,所以没有亲测,这里直接copy过来,大家可以自己试一下。

GitBook 自动生成目录的脚本:https://github.com/fushenghua/gitbook-plugin-summary
操作方法很简单,把上面这个链接中的项目下载下来,进入到这个项目的目录,执行 $ python gitbook-plugin-summary.py dirPath 即可自动生成电子书的目录,亲测有效。备注:这里的dirPath指的是你的电子书目录的绝对路径。
对了,在执行上面这个脚本之前,记得先安装 Python 环境。

   第八步:添加封面

在项目的根目录下准备好 cover.jpg (大封面)和 cover_small.jpg (小封面)这两种封面图片。注意,图片的文件名和后缀名必须严格按照这句话来。
GitBook 的官方文档建议: cover.jpg (大封面)的尺寸为 1800x2360 像素,cover_small.jpg(小封面)的尺寸为 200x262 像素。

当然,记得将封面图也加进目录噢。

   第九步:导出电子书

1)本地预览电子书:
gitbook serve
在项目文件夹执行上方命令后,工具会对项目里的 Markdown 格式的文件进行转换,默认转换为 html 格式,最后提示  
Serving book on http://localhost:4000
我们打开浏览器输入http://localhost:4000,预览一下电子书的效果。

到这一步,我都是很顺利的,预览的效果很好。但是,它是电脑网页浏览。当然,得导出电子书,用上阅读器,才能知道最终体验如何吗不是?

 2)制作并导出电子书。接下来就是见证奇迹的时刻。
生成 PDF 格式的电子书:(PDF 是最常见的文档格式)
gitbook pdf ./ ./mybook.pdf
生成 epub 格式的电子书:(epub 是最常见、最通用的电子书格式)
gitbook epub ./ ./mybook.epub
生成 mobi 格式的电子书:(mobi 格式可以在 kindle 中打开)
gitbook mobi ./ ./mybook.mobi

我就是卡在了这最后一步。最初从方格子copy进md的那几篇我试过,成功了的。我就以为后面也一定会成功,埋头做完,到最后一步,ERROR!

要么提示”read econnreset“,要么就是”connect etimeout“。Google也找不到完美匹配的答案,试用了所谓的”淘宝镜像“,没能解决问题。怀着一丝希望,截图给不戒看。要么说会者不难呢,他看一眼告诉我说是网络问题,有可能因为gitbook服务器在境外,上传速度不足造成的。让我把文件打包发给他,他用国外的服务器试试看。

Finally,国外的服务器果然管用,他帮我完成了最后的临门一脚,成功导出了epub版的电子书!

经过研究,他说可能是因为Blogger的外链,这也是我之前的怀疑。但这个怀疑最终也没得到证实,我只是尝试把所有文章里的图片全删了,纯文字试一下,也能成功。 说明,纯文字的素材很容易。图片呢,可能就会经历波折,也可能不经历,看你运气。而假如你身在墙外,也许再多图片也不是问题呢。

原计划,导出初稿,用手机看看效果,再修改素材,再导出。循环往复,直臻”完美“。但是经历以上波折,我不敢用这个方法了。不戒建议把图片下载到本地试试,上传gitbook服务器时也许能快。可是我的图片有点儿多,这样一来工作量变大,还不能保证成功。

最终,我选择了另外一个方式,不管素材了,而是直接在初稿上修改。这个做法让我多费了一番功夫,但它是保证成功的,所以最终结果是圆满的。

   第十步:用Sigil修改电子书

修改epub的软件叫Sigil,它本身也是制作epub电子书的软件。这里要感谢一下@许仙人,是她发了个教程,帮我打开了一扇新门。sigil是要基于HTML格式的文件,也就是如果你不是一开始就用它来写文章的话,就得把你的素材先变成html格式(直接从网页上保存下来的废码太多,要花大量时间处理),再用它来合成。这前一个步骤有一定难度,需要花时间认真研究。好在,我有初稿在手,可以跳过第一步,甚至第二步,直接修改。

修改过程是很直观的,左边代码界面,右边实时预览。简单修改的话一眼就可上手,复杂修改不怕麻烦的话用我的笨办法,也能成功。

实时预览这一点比gitbook的修改素材方便得多,改完了直接保存就是。需要注意的是,有些格式,因为用calibre转制的电子书定义了”块“,在sigil里面不能直接改,要先把块定义解除。我也看不懂sigil里的代码,不知道该删除或者修改哪些内容才能解除块定义。但好在我不肯服输,使劲想啊想啊,终于给我想出来了笨办法。那就是在sigil里新建网页文件,新建的网页有基本的格式,可以把epub里的内容复制进去。只复制正文部分,看不懂的格式不要。试试看,哈哈,成功了。然后再把这一个新建页里的内容全部复制进原来的epub文档,覆盖掉原文。笨吧?但是亲测有效!

到此,保存。发到手机或者支持epub的阅读器阅读吧。如果你想要其它格式,calibre可以转换,也许需要稍做调整。要求不太高的话,不修改也不影响阅读。

  • 最后的话

初次尝试,走了些弯路,用了些笨办法。如果你有一定基础,可能用其它办法会更快速有效。比如将发表在网上的文章变成md文档,也许对于程序员来讲,可以通过代码迅速抓取呢。(猜测的,经此一役,觉得程序员真是神仙一样的存在,也许没有他们办不到的事呢。XD)还比如在sigil里修改epub,如果你懂代码,也许就知道删除哪个东西,就可以解锁”块定义“,事半功倍。

另外,还有更笨但更能保证成功的方法,只需要用到sigil。那就是sigil里新建文档,把你发表在网页上的文章复制进去。当然,文章比较短,用这个方法会很快。如果文章很长,分段很多,格式也复杂,那这个办法就很慢了,因为你复制过来的文字格式就没了,包括分段,得手动添加代码重新排版。图片也没了,得重新添加。

总而言之,按我的这个”经验分享“一步步来,最后肯定能做成(这话好像有点儿熟悉,对了,知乎文章里也是这么说的,我就没成功……),但不保证效率。

子曾经曰过:师傅领进门,修行在个人。后来的修为,就看你自己的造化啦!


参考文章:《自己动手制作电子书的最佳方式(支持PDF、ePub、mobi等格式)》

喜歡我的文章嗎?
別忘了給點支持與讚賞,讓我知道創作的路上有你陪伴。

CC BY-NC-ND 2.0 版權聲明

自序

16

看不過癮?

一鍵登入,即可加入全球最優質中文創作社區