我出过两本书——《FreeSWITCH 权威指南》和《Kamailio 实战》,也写过很多 FreeSWITCH 相关的电子书。有读者问我是怎么排版的,不揣鄙陋,愿与大家分享。
我最初写博客都是使用的是 Markdown1,后来写书也使用 Markdown 做简单排版。但一到出版社编辑那儿,就必须用 Office 了。也跟出版社聊过,是否可以用 Latex 排版,但出版社的答复是养一个 Latex 排版师太贵了,因此,大多数情况下,作者们还是需要使用 Word/WPS 排版。
对于那些写小说或故事的作者,或许用 Word 排版还是不错的,但是,对于像我这样的技术人员,由于书中有很多代码和图表,用 Word 排版就比较累,尤其是技术人员好多都在用 Mac,与 Windows 版的 Word 兼容性还比较差,写起来就更痛苦了。
使用 Markdown 格式写作,比 Word 要轻松多了,同时,使用一些辅助工具也能做到比较好的排版。如果万一有一天写出来的书能够正式出版,也希望 Word 是最后一步,把痛苦留到最后。
Word 有一个功能确实不大好替代,那就是『修订』功能,使用它可以让作者和编辑很方便地交互修改文件。但文件传来传去也很烦。不知道一些在线的协作工具如石墨文档等,是否适合这种协作。(2022 更新:最近发现有的出版社已经在用 WPS 在线版了)
当然,其实作者不应该关注排版,而是在保证内容正确的前提下,把章节、强调、引用、代码之类的都标注出来即可,出版社是有专人进行排版的。而做这些标注,Markdown 就够了。而且 Markdown 文件可以很方便地放到 Git 仓库中。我们不期望出版社所有的编辑也能熟悉 Git,但如果真有哪天编辑们也喜欢 Git 了,那社会就真的进步了。
不过,话又说回来,Git 主要是做代码管理的,Git 的管理粒度也是基于行的。但在写作时,通常有大段的文字不换行。这样,即使一段(一行)中只修改一个字,或一个标点符号,就会出现一个大的 diff。从这一点来说,不如 Office 的修订功能好用。
关于排版,本书主要讲一下相关的模板,以及一些排版原则:
本书是可以『自举』的,也就是说你可以通过本书的源代码生成本书的 PDF,参见:https://github.com/seven1240/latex (注意:PDF 版不会实时更新,可能会比较旧)。你也可以访问本书生成的 HTML:http://www.freeswitch.org.cn/books/typesetting/ 。
最后,本书写作的目的并不是教你成为一个排版专家,相反,希望通过分享我的排版模板,让广大技术人员专注于用自己喜欢的工具写好自己的作品,忘记排版 ;)。
杜金房/2019/烟台 更新于 2023 年 2 月 1 日